sync with trunk + using last asmack version
authorNikita Kozlov <nikita@elyzion.net>
Tue, 05 Jun 2012 16:29:25 +0200
changeset 988 d7ddcccdff8a
parent 868 6c2c4bfa43d0 (current diff)
parent 987 55c27ccbd9f5 (diff)
child 1004 bcacb829dc28
sync with trunk + using last asmack version
AndroidManifest.xml
build.properties
build.xml
default.properties
doc/asmack-beem/README.txt
doc/asmack-beem/beem-build-process.patch
doc/asmack-beem/beem_patches/10-PubSubManager-non-final.patch
doc/asmack-beem/beem_patches/10-custom-sslcontext.patch
doc/asmack-beem/beem_patches/50-fix-chatmanager.patch
doc/asmack-beem/beem_patches/50-fix-sasl-incorrect-encoding.patch
doc/asmack-beem/beem_patches/50-improved-pubsub.patch
doc/asmack-beem/beem_patches/50-jingle-ext.patch
doc/asmack-beem/beem_patches/50-public-info-features.patch
doc/asmack-beem/beem_patches/50-remove-jingle_mediaimpl.patch
doc/asmack-beem/beem_patches/COPYING
doc/asmack-beem/beem_patches/README.txt
doc/asmack-beem/lib/jstun.jar
libs/asmack-android-10-beem.jar
libs/asmack-android-7-beem.jar
project.properties
res/drawable/background.png
res/layout/chat_msg_row_compact.xml
res/values-fr/strings.xml
res/values-nb/strings.xml
res/values/strings.xml
src/com/beem/project/beem/BeemService.java
src/com/beem/project/beem/jingle/JingleService.java
src/com/beem/project/beem/service/Contact.java
src/com/beem/project/beem/service/RosterAdapter.java
src/com/beem/project/beem/service/XmppConnectionAdapter.java
src/com/beem/project/beem/service/XmppFacade.java
src/com/beem/project/beem/service/aidl/IXmppFacade.aidl
src/com/beem/project/beem/ui/ContactList.java
--- a/.hgtags	Tue Jan 18 00:26:02 2011 +0100
+++ b/.hgtags	Tue Jun 05 16:29:25 2012 +0200
@@ -6,3 +6,10 @@
 1b88edb34d96acb5795b8d28e58b974f1bf2c1d6 0.1.4_rc
 887b6a1fd9662312bf1ec271f9735369ead04cad 0.1.4
 cf5db8d24b2a28ca501cc3e076abc55b38b41d90 0.1.4
+7b54215139deae5ba9307b7a165f24d65f926938 0.1.5_rc1
+8d19f91dd64c7f29f137b3236fb38c2cbcf98a36 0.1.5
+3b5e81bf741ae4fd47e239f889fb66ae6732dbd6 0.1.6_rc1
+18b31fdfb292b1405c5783f1d11be8cef9302087 0.1.6
+9f4ff6618111421f88eb38bf388ab0b1e3687317 0.1.7_rc1
+afff9e2452d91dba0e02672e6782fbbca6680fec 0.1.7_rc2
+5a6ab49303d3fe3e24661875a85158929bc22b5f 0.1.7
--- a/AndroidManifest.xml	Tue Jan 18 00:26:02 2011 +0100
+++ b/AndroidManifest.xml	Tue Jun 05 16:29:25 2012 +0200
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-	package="com.beem.project.beem" android:versionCode="5"
-	android:versionName="0.1.4">
+	package="com.beem.project.beem" android:versionCode="12"
+	android:versionName="0.1.7"	android:installLocation="auto">
 	<application android:label="@string/app_name"
 		android:icon="@drawable/beem_launcher_icon_silver" android:theme="@style/Theme.BEEM.Default"
-		android:debuggable="true" android:name=".BeemApplication">
+		android:name=".BeemApplication">
 		<activity android:name=".ui.Login" android:label="@string/app_name"
 			android:launchMode="standard">
 			<intent-filter>
@@ -16,65 +16,30 @@
 		<activity android:name=".ui.wizard.AccountConfigure" android:label="Account wizard" />
 		<activity android:name=".ui.LoginAnim" android:label="@string/login_login_progress"
 			android:launchMode="singleTop" android:screenOrientation="portrait" />
-		<activity android:name=".ui.Settings" android:label="@string/edit_settings_name">
-			<intent-filter android:label="Beem Connection">
-				<action
-					android:name="com.beem.project.beem.service.XmppConnectionAdapter.CONNECTION_CLOSED" />
-			</intent-filter>
-		</activity>
+		<activity android:name=".ui.Settings" android:label="@string/edit_settings_name" />
 		<activity android:name=".ui.Chat" android:label="@string/chat_name"
-			android:launchMode="singleTop">
-			<intent-filter android:label="Beem Connection">
-				<action
-					android:name="com.beem.project.beem.service.XmppConnectionAdapter.CONNECTION_CLOSED" />
-			</intent-filter>
-		</activity>
+		    android:launchMode="singleTop" />
 		<activity android:name=".ui.ChangeStatus" android:label="@string/ChangeStatusActTitle"
-		    android:launchMode="singleTask"
-		    android:windowSoftInputMode="stateHidden" >
-			<intent-filter android:label="Beem Connection">
-				<action
-					android:name="com.beem.project.beem.service.XmppConnectionAdapter.CONNECTION_CLOSED" />
-			</intent-filter>
-		</activity>
-		<activity android:name=".ui.AddContact" android:label="@string/AddCActTitle">
-			<intent-filter android:label="Beem Connection">
-				<action
-					android:name="com.beem.project.beem.service.XmppConnectionAdapter.CONNECTION_CLOSED" />
-			</intent-filter>
-		</activity>
-		<activity android:name=".ui.Subscription" android:label="@string/app_name">
-			<intent-filter android:label="Beem Connection">
-				<action
-					android:name="com.beem.project.beem.service.XmppConnectionAdapter.CONNECTION_CLOSED" />
-			</intent-filter>
-		</activity>
+		    android:launchMode="singleTop"
+		    android:windowSoftInputMode="stateHidden" />
+		<activity android:name=".ui.AddContact" android:label="@string/AddCActTitle" />
+		<activity android:name=".ui.Subscription" android:label="@string/app_name" />
 		<activity android:name=".ui.CreateAccount" android:label="@string/create_account_name" />
+
 		<activity android:name=".ui.ContactList" android:label="@string/contact_list_name"
-			android:launchMode="singleTask">
-			<intent-filter android:label="Beem Connection">
-				<action
-					android:name="com.beem.project.beem.service.XmppConnectionAdapter.CONNECTION_CLOSED" />
-			</intent-filter>
-		</activity>
-		<activity android:name=".ui.GroupList" android:label="GroupList">
-			<intent-filter android:label="Beem Connection">
-				<action
-					android:name="com.beem.project.beem.service.XmppConnectionAdapter.CONNECTION_CLOSED" />
-			</intent-filter>
-		</activity>
-		<activity android:name=".ui.PrivacyList" android:label="@string/privacy_list_name">
-			<intent-filter android:label="Beem Connection">
-				<action
-					android:name="com.beem.project.beem.service.XmppConnectionAdapter.CONNECTION_CLOSED" />
-			</intent-filter>
-		</activity>
+		    android:launchMode="singleTask" />
 		<activity android:name=".ui.Call" android:label="Call String en dur">
 			<intent-filter android:label="Beem Connection">
 				<action
 					android:name="com.beem.project.beem.service.XmppConnectionAdapter.CONNECTION_CLOSED" />
 			</intent-filter>
 		</activity>
+
+		<activity android:name=".ui.GroupList" android:label="GroupList" />
+		<activity android:name=".ui.PrivacyList" android:label="@string/privacy_list_name" />
+
+		<!-- MemorizingTrustManagerActivity -->
+		<activity android:name="de.duenndns.ssl.MemorizingActivity" />
 		<!--
 			Could be interesting if we would launch beem at startup <receiver
 			android:name=".tool.BeemBroadcastReceiver" android:enabled="true">
@@ -82,12 +47,14 @@
 			android:name="android.intent.action.BOOT_COMPLETED" />
 			</intent-filter> </receiver>
 		-->
+		<provider android:name=".providers.AvatarProvider"
+		    android:authorities="com.beem.project.beem.providers.avatarprovider"
+		    />
+
 		<service android:name="BeemService" android:enabled="true"
 			android:label="Beem Service" android:permission="com.beem.project.beem.BEEM_SERVICE">
 			<intent-filter>
 				<action android:name="com.beem.project.beem.BeemService"></action>
-				<action android:name="android.intent.action.SCREEN_OFF"></action>
-				<action android:name="android.intent.action.SCREEN_ON"></action>
 			</intent-filter>
 		</service>
 	</application>
@@ -99,7 +66,8 @@
 	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
 	<uses-permission android:name="com.beem.project.beem.BEEM_SERVICE"/>
-	<uses-sdk android:minSdkVersion="3" />
+	<uses-feature name="android.hardware.touchscreen" required="false" />
+	<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="10" />
 	<supports-screens android:largeScreens="true"
 		android:normalScreens="true" android:smallScreens="true" android:anyDensity="true" />
 </manifest>
--- a/CREDITS	Tue Jan 18 00:26:02 2011 +0100
+++ b/CREDITS	Tue Jun 05 16:29:25 2012 +0200
@@ -18,6 +18,9 @@
 Daniel Hofmann for german translations
 Andrea Selva for italian translations
 Erik Lindström for swedish translations
+Murilo Ferraz Franco for portuguese translations
+Alexei Emanov for russian translations
+Karol Ptasinski for Norwegian translations
 
 
 Thanks to all !
--- a/build.properties	Tue Jan 18 00:26:02 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-external-libs=libs
-javadoc-output=doc/javadoc
-
--- a/build.xml	Tue Jan 18 00:26:02 2011 +0100
+++ b/build.xml	Tue Jun 05 16:29:25 2012 +0200
@@ -1,82 +1,100 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project name="Beem">
+<project name="Beem" default="help">
 
     <!-- The local.properties file is created and updated by the 'android' tool.
-         It contain the path to the SDK. It should *NOT* be checked in in Version
-         Control Systems. -->
+         It contains the path to the SDK. It should *NOT* be checked into
+         Version Control Systems. -->
     <property file="local.properties" />
 
-    <!-- The build.properties file can be created by you and is never touched
-         by the 'android' tool. This is the place to change some of the default property values
-         used by the Ant rules.
+    <!-- The ant.properties file can be created by you. It is only edited by the
+         'android' tool to add properties to it.
+         This is the place to change some Ant specific build properties.
          Here are some properties you may want to change/update:
 
-         application.package
-             the name of your application package as defined in the manifest. Used by the
-             'uninstall' rule.
          source.dir
-             the name of the source directory. Default is 'src'.
+             The name of the source directory. Default is 'src'.
          out.dir
-             the name of the output directory. Default is 'bin'.
+             The name of the output directory. Default is 'bin'.
+
+         For other overridable properties, look at the beginning of the rules
+         files in the SDK, at tools/ant/build.xml
 
-         Properties related to the SDK location or the project target should be updated
-          using the 'android' tool with the 'update' action.
+         Properties related to the SDK location or the project target should
+         be updated using the 'android' tool with the 'update' action.
 
-         This file is an integral part of the build system for your application and
-         should be checked in in Version Control Systems.
+         This file is an integral part of the build system for your
+         application and should be checked into Version Control Systems.
 
          -->
-    <property file="build.properties" />
-
-    <!-- The default.properties file is created and updated by the 'android' tool, as well
-         as ADT.
-         This file is an integral part of the build system for your application and
-         should be checked in in Version Control Systems. -->
-    <property file="default.properties" />
+    <property file="ant.properties" />
 
-    <!-- Custom Android task to deal with the project target, and import the proper rules.
-         This requires ant 1.6.0 or above. -->
-    <path id="android.antlibs">
-        <pathelement path="${sdk.dir}/tools/lib/anttasks.jar" />
-        <pathelement path="${sdk.dir}/tools/lib/sdklib.jar" />
-        <pathelement path="${sdk.dir}/tools/lib/androidprefs.jar" />
-        <pathelement path="${sdk.dir}/tools/lib/apkbuilder.jar" />
-        <pathelement path="${sdk.dir}/tools/lib/jarutils.jar" />
-    </path>
+    <!-- The project.properties file is created and updated by the 'android'
+         tool, as well as ADT.
 
-    <taskdef name="setup"
-        classname="com.android.ant.SetupTask"
-        classpathref="android.antlibs" />
-
-    <!-- Execute the Android Setup task that will setup some properties specific to the target,
-         and import the build rules files.
-
-         The rules file is imported from
-            <SDK>/platforms/<target_platform>/templates/android_rules.xml
+         This contains project specific properties such as project target, and library
+         dependencies. Lower level build properties are stored in ant.properties
+         (or in .classpath for Eclipse projects).
 
-         To customize some build steps for your project:
-         - copy the content of the main node <project> from android_rules.xml
-         - paste it in this build.xml below the <setup /> task.
-         - disable the import by changing the setup task below to <setup import="false" />
-
-         This will ensure that the properties are setup correctly but that your customized
-         build steps are used.
-    -->
-    <setup />
+         This file is an integral part of the build system for your
+         application and should be checked into Version Control Systems. -->
+    <loadproperties srcFile="project.properties" />
 
     <property name="javadoc.output" value="doc/javadoc" />
-    <property name="external.libs.dir" value="libs" />
-	<property name="encoding" value="UTF-8" />
-    <target name="clean"
-	description="Delete old build and dist directories">
-	<delete verbose="false" dir="${out.dir}"/>
-	<delete verbose="false" dir="gen"/>
+
+    <!-- quick check on sdk.dir -->
+    <fail
+            message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through an env var"
+            unless="sdk.dir"
+    />
+
+
+<!-- extension targets. Uncomment the ones where you want to do custom work
+     in between standard targets -->
+<!--
+    <target name="-pre-build">
+    </target>
+    <target name="-pre-compile">
+    </target>
+
+    /* This is typically used for code obfuscation.
+       Compiled code location: ${out.classes.absolute.dir}
+       If this is not done in place, override ${out.dex.input.absolute.dir} */
+    <target name="-post-compile">
+    </target>
+-->
+
+    <target name="-pre-clean" >
+        <delete dir="${javadoc.output}" verbose="${verbose}" />
     </target>
 
-    <target name="all" depends="clean,debug,javadoc"/>
+    <!-- Import the actual build file.
+
+         To customize existing targets, there are two options:
+         - Customize only one target:
+             - copy/paste the target into this file, *before* the
+               <import> task.
+             - customize it to your needs.
+         - Customize the whole content of build.xml
+             - copy/paste the content of the rules files (minus the top node)
+               into this file, replacing the <import> task.
+             - customize to your needs.
 
-    <target name="javadoc">
-	<javadoc author="true" destdir="${javadoc.output}" doctitle="Beem javadoc" source="1.6" sourcepath="${source.dir}" use="true" version="false" bootclasspathref="android.target.classpath">
+         ***********************
+         ****** IMPORTANT ******
+         ***********************
+         In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
+         in order to avoid having your file be overridden by tools such as "android update project"
+    -->
+    <!-- version-tag: custom -->
+    <import file="${sdk.dir}/tools/ant/build.xml" />
+
+    <property name="external.libs.dir" value="libs" />
+    <target name="javadoc" depends="-setup, -build-setup, -code-gen">
+	<javadoc author="true" destdir="${javadoc.output}" doctitle="Beem javadoc" source="1.6" use="true" version="false" bootclasspathref="android.target.classpath">
+	    <sourcepath>
+	    	<pathelement location="${source.dir}" />
+	    	<pathelement location="${gen.absolute.dir}" />
+	    </sourcepath>
 	    <classpath>
 		<fileset dir="${external.libs.dir}" includes="*.jar" />
 	    </classpath>
--- a/default.properties	Tue Jan 18 00:26:02 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-# This file is automatically generated by Android Tools.
-# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
-# 
-# This file must be checked in Version Control Systems.
-# 
-# To customize properties used by the Ant build system use,
-# "build.properties", and override values to adapt the script to your
-# project structure.
-
-# Project target.
-target=android-7
Binary file doc/UmlGraph.jar has changed
--- a/doc/asmack-beem/README.txt	Tue Jan 18 00:26:02 2011 +0100
+++ b/doc/asmack-beem/README.txt	Tue Jun 05 16:29:25 2012 +0200
@@ -14,26 +14,13 @@
 -------
 
 First check out the last version of asmack
-> git clone git://github.com/rtreffer/asmack.git
-
-Then apply the beem-build-process.patch on the source.
-> cd asmack
-> patch -p1 < beem-build-process.patch
->
+> git://github.com/klnikita/asmack.git
 
-Add the beem flavour to the patch repository
-> cp -R beem_patches patch/beem
->
-
-The 50-fix_chatmanager.patch is only necessary to fix a little bug in smack. The
-patch has been proposed to the Smack developers. See
-http://www.igniterealtime.org/issues/browse/SMACK-269 for progress.
-
-Edit your local.properties file to contains the path of the android SDK. See
-local.properties.example
+In the asmack folder, edit your local.properties file to contains the path of the android SDK.
+See local.properties.example
 
 Build asmack
-> ./build.batch
+> ./build.batch -j -c
 >
 
 The build directory will contains the files :
--- a/doc/asmack-beem/beem-build-process.patch	Tue Jan 18 00:26:02 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-diff --git a/build.bash b/build.bash
-index ce793f9..26e4560 100755
---- a/build.bash
-+++ b/build.bash
-@@ -15,11 +15,11 @@ fetch() {
-   if ! [ -f "${2}/.svn/entries" ]; then
-     mkdir "${2}"
-     cd "${2}"
--    svn co --non-interactive --trust-server-cert "${1}" "."
-+    svn co --non-interactive --trust-server-cert "${1}" -r "${3}" "."
-   else
-     cd "${2}"
-     svn cleanup
--    svn up
-+    svn up -r "${3}"
-   fi
- )
- }
-@@ -37,11 +37,11 @@ gitfetch() {
- }
- 
- fetchall() {
--  gitfetch "git://github.com/rtreffer/smack.git" "smack"
--  fetch "http://svn.apache.org/repos/asf/qpid/trunk/qpid/java/management/common/src/main/" "qpid"
--  fetch "http://svn.apache.org/repos/asf/harmony/enhanced/java/trunk/classlib/modules/auth/src/main/java/common/" "harmony"
--  fetch "https://dnsjava.svn.sourceforge.net/svnroot/dnsjava/trunk" "dnsjava"
--  fetch "https://kenai.com/svn/jbosh~main/trunk/jbosh/src/main/java" "jbosh"
-+  fetch "http://svn.igniterealtime.org/svn/repos/smack/trunk" "smack" "11644"
-+  fetch "http://svn.apache.org/repos/asf/qpid/trunk/qpid/java/management/common/src/main/" "qpid" "HEAD"
-+  fetch "http://svn.apache.org/repos/asf/harmony/enhanced/java/trunk/classlib/modules/auth/src/main/java/common/" "harmony" "HEAD"
-+  fetch "https://dnsjava.svn.sourceforge.net/svnroot/dnsjava/trunk" "dnsjava" "HEAD"
-+  fetch "https://kenai.com/svn/jbosh~main/trunk/jbosh/src/main/java" "jbosh" "HEAD"
- }
- 
- copyfolder() {
-@@ -62,6 +62,7 @@ buildsrc() {
-   mkdir build/src
-   mkdir build/src/trunk
-   copyfolder "src/smack/source/" "build/src/trunk" "."
-+  copyfolder "src/smack/jingle/extension/source/" "build/src/trunk" "."
-   copyfolder "src/qpid/java" "build/src/trunk" "org/apache/qpid/management/common/sasl"
-   copyfolder "src/novell-openldap-jldap" "build/src/trunk" "."
-   copyfolder "src/dnsjava"  "build/src/trunk" "org"
-diff --git a/build.xml b/build.xml
-index 827f4c5..50054f1 100644
---- a/build.xml
-+++ b/build.xml
-@@ -57,7 +57,7 @@
-       target="1.5"
-       srcdir="build/src/trunk"
-       destdir="build/classes/trunk"
--      classpath="lib/xmlpull_1_1_3_4c.jar"
-+      classpath="lib/xmlpull_1_1_3_4c.jar:lib/jstun.jar"
-       bootclasspath="${sdk-location}/platforms/android-7/android.jar"
-       debug="true"
-       debuglevel="source,lines"
-@@ -85,7 +85,7 @@
-       target="1.5"
-       srcdir="build/src/trunk"
-       destdir="build/classes/trunk"
--      classpath="lib/xmlpull_1_1_3_4c.jar"
-+      classpath="lib/xmlpull_1_1_3_4c.jar:lib/jstun.jar"
-       bootclasspath="${sdk-location}/platforms/android-6/android.jar"
-       debug="true"
-       debuglevel="source,lines"
-@@ -113,7 +113,7 @@
-       target="1.5"
-       srcdir="build/src/trunk"
-       destdir="build/classes/trunk"
--      classpath="lib/xmlpull_1_1_3_4c.jar"
-+      classpath="lib/xmlpull_1_1_3_4c.jar:lib/jstun.jar"
-       bootclasspath="${sdk-location}/platforms/android-5/android.jar"
-       debug="true"
-       debuglevel="source,lines"
-@@ -141,7 +141,7 @@
-       target="1.5"
-       srcdir="build/src/trunk"
-       destdir="build/classes/trunk"
--      classpath="lib/xmlpull_1_1_3_4c.jar"
-+      classpath="lib/xmlpull_1_1_3_4c.jar:lib/jstun.jar"
-       bootclasspath="${sdk-location}/platforms/android-4/android.jar"
-       debug="true"
-       debuglevel="source,lines"
--- a/doc/asmack-beem/beem_patches/10-PubSubManager-non-final.patch	Tue Jan 18 00:26:02 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-Index: org/jivesoftware/smackx/pubsub/PubSubManager.java
-===================================================================
---- org/jivesoftware/smackx/pubsub/PubSubManager.java	(revision 11464)
-+++ org/jivesoftware/smackx/pubsub/PubSubManager.java	(working copy)
-@@ -41,7 +41,7 @@
-  * 
-  * @author Robin Collier
-  */
--final public class PubSubManager
-+public class PubSubManager
- {
- 	private XMPPConnection con;
- 	private String to;
--- a/doc/asmack-beem/beem_patches/50-fix-chatmanager.patch	Tue Jan 18 00:26:02 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-   Copyright (C) 2010 by Frederic-Charles Barthelery,
-                         Jean-Manuel Da Silva,
-                         Nikita Kozlov,
-                         Philippe Lago,
-                         Jean Baptiste Vergely,
-                         Vincent Veronis.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
---- ../../../src/smack/org/jivesoftware/smack/ChatManager.java	2010-02-23 19:27:26.000000000 +0100
-+++ org/jivesoftware/smack/ChatManager.java	2010-02-23 19:37:47.000000000 +0100
-@@ -111,7 +111,9 @@
-                     	chat = getUserChat(message.getFrom());
-                     }
-                 }
--
-+		if (chat == null) {
-+                	chat = getUserChat(StringUtils.parseBareAddress(message.getFrom()));
-+		}
-                 if(chat == null) {
-                     chat = createChat(message);
-                 }
--- a/doc/asmack-beem/beem_patches/50-fix-sasl-incorrect-encoding.patch	Tue Jan 18 00:26:02 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-   Copyright (C) 2010 by Frederic-Charles Barthelery,
-                         Jean-Manuel Da Silva,
-                         Nikita Kozlov,
-                         Philippe Lago,
-                         Jean Baptiste Vergely,
-                         Vincent Veronis.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
---- org/jivesoftware/smack/sasl/SASLMechanism.java~	2010-07-20 15:13:25.000000000 +0200
-+++ org/jivesoftware/smack/sasl/SASLMechanism.java	2010-07-20 15:15:41.000000000 +0200
-@@ -263,9 +263,6 @@
-             if (authenticationText != null) {
-                 stanza.append(authenticationText);
-             }
--            else {
--                stanza.append("=");
--            }
-             stanza.append("</response>");
-             return stanza.toString();
-         }
--- a/doc/asmack-beem/beem_patches/50-improved-pubsub.patch	Tue Jan 18 00:26:02 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
---- ../../../src/smack/org/jivesoftware/smackx/pubsub/provider/ItemProvider.java	(révision 11644)
-+++ org/jivesoftware/smackx/pubsub/provider/ItemProvider.java	(copie de travail)
-@@ -45,6 +45,8 @@
- 		}
- 		else
- 		{
-+		    while (tag != XmlPullParser.START_TAG)
-+			tag = parser.next();
- 			String payloadElemName = parser.getName();
- 			String payloadNS = parser.getNamespace();
- 			
---- ../../../src/org/jivesoftware/smackx/pubsub/Node.java	(révision 11644)
-+++ org/jivesoftware/smackx/pubsub/Node.java	(copie de travail)
-@@ -60,7 +60,7 @@
- 	 * 
- 	 *   For example, OpenFire requires the server to be prefixed by <b>pubsub</b>
- 	 */
--	void setTo(String toAddress)
-+	public void setTo(String toAddress)
- 	{
- 		to = toAddress;
- 	}
---- ../../../src/org/jivesoftware/smackx/pubsub/LeafNode.java	(révision 11644)
-+++ org/jivesoftware/smackx/pubsub/LeafNode.java	(copie de travail)
-@@ -34,7 +34,7 @@
-  */
- public class LeafNode extends Node
- {
--	LeafNode(Connection connection, String nodeName)
-+	public LeafNode(Connection connection, String nodeName)
- 	{
- 		super(connection, nodeName);
- 	}
---- ../../../src/org/jivesoftware/smackx/pubsub/PubSubManager.java	(révision 11644)
-+++ org/jivesoftware/smackx/pubsub/PubSubManager.java	(copie de travail)
-@@ -43,8 +43,8 @@
-  */
- final public class PubSubManager
- {
--	private Connection con;
--	private String to;
-+	protected Connection con;
-+	protected String to;
- 	private Map<String, Node> nodeMap = new ConcurrentHashMap<String, Node>();
- 	
- 	/**
--- a/doc/asmack-beem/beem_patches/50-jingle-ext.patch	Tue Jan 18 00:26:02 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,178 +0,0 @@
-Index: org/jivesoftware/smackx/packet/JingleContentInfo.java
-===================================================================
---- org/jivesoftware/smackx/packet/JingleContentInfo.java	(revision 11644)
-+++ org/jivesoftware/smackx/packet/JingleContentInfo.java	(working copy)
-@@ -96,7 +96,7 @@
-      */
-     public static class Audio extends JingleContentInfo {
- 
--        public static final String NAMESPACE = "urn:xmpp:tmp:jingle:apps:rtp";
-+        public static final String NAMESPACE = "urn:xmpp:jingle:apps:rtp:1";
- 
-         public Audio(final ContentInfo mi) {
-             super(mi);
-Index: org/jivesoftware/smackx/packet/JingleError.java
-===================================================================
---- org/jivesoftware/smackx/packet/JingleError.java	(revision 11644)
-+++ org/jivesoftware/smackx/packet/JingleError.java	(working copy)
-@@ -27,7 +27,7 @@
- 
- public class JingleError implements PacketExtension {
- 
--    public static String NAMESPACE = "urn:xmpp:tmp:jingle:errors";
-+    public static String NAMESPACE = "urn:xmpp:jingle:errors:1";
- 
-     public static final JingleError OUT_OF_ORDER = new JingleError("out-of-order");
- 
-Index: org/jivesoftware/smackx/packet/JingleTransport.java
-===================================================================
---- org/jivesoftware/smackx/packet/JingleTransport.java	(revision 11644)
-+++ org/jivesoftware/smackx/packet/JingleTransport.java	(working copy)
-@@ -270,7 +270,7 @@
-      * RTP-ICE profile
-      */
-     public static class Ice extends JingleTransport {
--        public static final String NAMESPACE = "urn:xmpp:tmp:jingle:transports:ice-udp";
-+        public static final String NAMESPACE = "urn:xmpp:jingle:transports:ice-udp:1";
- 
-         public Ice() {
-             super();
-@@ -352,7 +352,7 @@
-      * Raw UDP profile.
-      */
-     public static class RawUdp extends JingleTransport {
--        public static final String NAMESPACE = "http://www.xmpp.org/extensions/xep-0177.html#ns";
-+        public static final String NAMESPACE = "urn:xmpp:jingle:transports:raw-udp:1";
- 
-         public RawUdp() {
-             super();
-Index: org/jivesoftware/smackx/packet/JingleContentDescription.java
-===================================================================
---- org/jivesoftware/smackx/packet/JingleContentDescription.java	(revision 11644)
-+++ org/jivesoftware/smackx/packet/JingleContentDescription.java	(working copy)
-@@ -66,6 +66,13 @@
-     public abstract String getNamespace();
- 
-     /**
-+     * Return the media type.
-+     *
-+     * @return The media type
-+     */
-+    public abstract String getMediaType();
-+
-+    /**
-      * Adds a audio payload type to the packet.
-      *
-      * @param pt the audio payload type to add.
-@@ -153,7 +160,8 @@
-         synchronized (payloads) {
-             if (payloads.size() > 0) {
-                 buf.append("<").append(getElementName());
--                buf.append(" xmlns=\"").append(getNamespace()).append("\" >");
-+                buf.append(" xmlns=\"").append(getNamespace()).append("\"");
-+                buf.append(" media=\"").append(getMediaType()).append("\" >");
- 
-                 Iterator pt = payloads.listIterator();
-                 while (pt.hasNext()) {
-@@ -172,7 +180,8 @@
-      */
-     public static class Audio extends JingleContentDescription {
- 
--        public static final String NAMESPACE = "urn:xmpp:tmp:jingle:apps:rtp";
-+        public static final String NAMESPACE = "urn:xmpp:jingle:apps:rtp:1";
-+        public static final String MEDIA_TYPE = "audio";
- 
-         public Audio() {
-             super();
-@@ -189,6 +198,10 @@
-         public String getNamespace() {
-             return NAMESPACE;
-         }
-+
-+        public String getMediaType() {
-+            return MEDIA_TYPE;
-+        }
-     }
- 
-     /**
-Index: org/jivesoftware/smackx/packet/Jingle.java
-===================================================================
---- org/jivesoftware/smackx/packet/Jingle.java	(revision 11644)
-+++ org/jivesoftware/smackx/packet/Jingle.java	(working copy)
-@@ -44,7 +44,7 @@
- 
-     // static
- 
--    public static final String NAMESPACE = "urn:xmpp:tmp:jingle";
-+    public static final String NAMESPACE = "urn:xmpp:jingle:1";
- 
-     public static final String NODENAME = "jingle";
- 
-Index: org/jivesoftware/smackx/packet/JingleDescription.java
-===================================================================
---- org/jivesoftware/smackx/packet/JingleDescription.java	(revision 11644)
-+++ org/jivesoftware/smackx/packet/JingleDescription.java	(working copy)
-@@ -69,6 +69,13 @@
-     public abstract String getNamespace();
- 
-     /**
-+     * Return the media type.
-+     *
-+     * @return The media type
-+     */
-+    public abstract String getMediaType();
-+
-+    /**
-      * Adds a audio payload type to the packet.
-      *
-      * @param pt the audio payload type to add.
-@@ -160,7 +167,8 @@
-         synchronized (payloads) {
-             if (payloads.size() > 0) {
-                 buf.append("<").append(getElementName());
--                buf.append(" xmlns=\"").append(getNamespace()).append("\" >");
-+                buf.append(" xmlns=\"").append(getNamespace()).append("\"");
-+                buf.append(" media=\"").append(getMediaType()).append("\" >");
- 
-                 for (PayloadType payloadType : payloads) {
-                     if (payloadType != null) {
-@@ -179,7 +187,8 @@
-      */
-     public static class Audio extends JingleDescription {
- 
--        public static final String NAMESPACE = "urn:xmpp:tmp:jingle:apps:rtp";
-+        public static final String NAMESPACE = "urn:xmpp:jingle:apps:rtp:1";
-+        public static final String MEDIA_TYPE = "audio";
- 
-         public Audio() {
-             super();
-@@ -196,5 +205,9 @@
-         public String getNamespace() {
-             return NAMESPACE;
-         }
-+
-+        public String getMediaType() {
-+            return MEDIA_TYPE;
-+        }
-     }
- }
-Index: org/jivesoftware/smackx/jingle/JingleManager.java
-===================================================================
---- org/jivesoftware/smackx/jingle/JingleManager.java	(revision 11644)
-+++ org/jivesoftware/smackx/jingle/JingleManager.java	(working copy)
-@@ -255,7 +255,7 @@
-      */
-     public static void setJingleServiceEnabled() {
-         ProviderManager providerManager = ProviderManager.getInstance();
--        providerManager.addIQProvider("jingle", "urn:xmpp:tmp:jingle", new JingleProvider());
-+        providerManager.addIQProvider("jingle", "urn:xmpp:jingle:1", new JingleProvider());
- 
-         // Enable the Jingle support on every established connection
-         // The ServiceDiscoveryManager class should have been already
-@@ -598,4 +598,4 @@
-         }
-         return null;
-     }
--}
-\ No newline at end of file
-+}
--- a/doc/asmack-beem/beem_patches/50-public-info-features.patch	Tue Jan 18 00:26:02 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-   Copyright (C) 2010 by Frederic-Charles Barthelery,
-                         Jean-Manuel Da Silva,
-                         Nikita Kozlov,
-                         Philippe Lago,
-                         Jean Baptiste Vergely,
-                         Vincent Veronis.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
---- org/jivesoftware/smackx/packet/DiscoverInfo.java	2010-07-22 22:16:27.000000000 +0200
-+++ org/jivesoftware/smackx/packet/DiscoverInfo.java	2010-07-22 22:58:43.000000000 +0200
-@@ -62,7 +62,7 @@
-      *
-      * @return an Iterator on the discovered features of an XMPP entity
-      */
--    Iterator<Feature> getFeatures() {
-+    public Iterator<Feature> getFeatures() {
-         synchronized (features) {
-             return Collections.unmodifiableList(features).iterator();
-         }
-@@ -266,4 +266,4 @@
-             return buf.toString();
-         }
-     }
--}
-\ Pas de fin de ligne à la fin du fichier.
-+}
--- a/doc/asmack-beem/beem_patches/50-remove-jingle_mediaimpl.patch	Tue Jan 18 00:26:02 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4039 +0,0 @@
-Index: org/jivesoftware/smackx/jingle/mediaimpl/test/TestMediaSession.java
-===================================================================
---- org/jivesoftware/smackx/jingle/mediaimpl/test/TestMediaSession.java	(revision 11644)
-+++ org/jivesoftware/smackx/jingle/mediaimpl/test/TestMediaSession.java	(working copy)
-@@ -1,92 +0,0 @@
--/**
-- * $RCSfile: TestMediaSession.java,v $
-- * $Revision: 1.1 $
-- * $Date: 08/11/2006
-- * <p/>
-- * Copyright 2003-2006 Jive Software.
-- * <p/>
-- * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
-- * you may not use this file except in compliance with the License.
-- * You may obtain a copy of the License at
-- * <p/>
-- * http://www.apache.org/licenses/LICENSE-2.0
-- * <p/>
-- * Unless required by applicable law or agreed to in writing, software
-- * distributed under the License is distributed on an "AS IS" BASIS,
-- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- * See the License for the specific language governing permissions and
-- * limitations under the License.
-- */
--package org.jivesoftware.smackx.jingle.mediaimpl.test;
--
--import org.jivesoftware.smackx.jingle.JingleSession;
--import org.jivesoftware.smackx.jingle.media.JingleMediaSession;
--import org.jivesoftware.smackx.jingle.media.PayloadType;
--import org.jivesoftware.smackx.jingle.nat.TransportCandidate;
--
--/**
-- * This Class implements a complete JingleMediaSession for unit testing.
-- *
-- * @author Thiago Camargo
-- */
--public class TestMediaSession extends JingleMediaSession {
--
--     /**
--     * Creates a TestMediaSession with defined payload type, remote and local candidates
--     *
--     * @param payloadType Payload of the jmf
--     * @param remote      the remote information. The candidate that the jmf will be sent to.
--     * @param local       the local information. The candidate that will receive the jmf
--     * @param locator     media locator
--     */
--    public TestMediaSession(final PayloadType payloadType, final TransportCandidate remote, final TransportCandidate local,
--            final String locator, JingleSession jingleSession) {
--        super(payloadType, remote, local, "Test", jingleSession);
--        initialize();
--    }
--
--    /**
--     * Initialize the screen share channels.
--     */
--    public void initialize() {
--
--    }
--
--    /**
--     * Starts transmission and for NAT Traversal reasons start receiving also.
--     */
--    public void startTrasmit() {
--        
--    }
--
--    /**
--     * Set transmit activity. If the active is true, the instance should trasmit.
--     * If it is set to false, the instance should pause transmit.
--     *
--     * @param active active state
--     */
--    public void setTrasmit(boolean active) {
--        
--    }
--
--    /**
--     * For NAT Reasons this method does nothing. Use startTransmit() to start transmit and receive jmf
--     */
--    public void startReceive() {
--        // Do nothing
--    }
--
--    /**
--     * Stops transmission and for NAT Traversal reasons stop receiving also.
--     */
--    public void stopTrasmit() {
--       
--    }
--
--    /**
--     * For NAT Reasons this method does nothing. Use startTransmit() to start transmit and receive jmf
--     */
--    public void stopReceive() {
--       
--    }
--}
-Index: org/jivesoftware/smackx/jingle/mediaimpl/test/TestMediaManager.java
-===================================================================
---- org/jivesoftware/smackx/jingle/mediaimpl/test/TestMediaManager.java	(revision 11644)
-+++ org/jivesoftware/smackx/jingle/mediaimpl/test/TestMediaManager.java	(working copy)
-@@ -1,93 +0,0 @@
--/**
-- * $RCSfile: TestMediaManager.java,v $
-- * $Revision: 1.3 $
-- * $Date: 25/12/2006
-- * <p/>
-- * Copyright 2003-2006 Jive Software.
-- * <p/>
-- * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
-- * you may not use this file except in compliance with the License.
-- * You may obtain a copy of the License at
-- * <p/>
-- * http://www.apache.org/licenses/LICENSE-2.0
-- * <p/>
-- * Unless required by applicable law or agreed to in writing, software
-- * distributed under the License is distributed on an "AS IS" BASIS,
-- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- * See the License for the specific language governing permissions and
-- * limitations under the License.
-- */
--
--package org.jivesoftware.smackx.jingle.mediaimpl.test;
--
--import org.jivesoftware.smackx.jingle.media.JingleMediaManager;
--import org.jivesoftware.smackx.jingle.media.JingleMediaSession;
--import org.jivesoftware.smackx.jingle.media.PayloadType;
--import org.jivesoftware.smackx.jingle.nat.JingleTransportManager;
--import org.jivesoftware.smackx.jingle.nat.TransportCandidate;
--import org.jivesoftware.smackx.jingle.JingleSession;
--
--import java.util.*;
--
--/**
-- * Implements a MediaManager for test purposes.
-- *
-- * @author Thiago Camargo
-- */
--
--public class TestMediaManager extends JingleMediaManager {
--
--    public static final String MEDIA_NAME = "TestMedia";
--
--    private List<PayloadType> payloads = new ArrayList<PayloadType>();
--
--    private PayloadType preferredPayloadType = null;
--
--    public TestMediaManager(JingleTransportManager transportManager) {
--        super(transportManager);
--    }
--
--    /**
--    * Return all supported Payloads for this Manager.
--    *
--    * @return The Payload List
--    */
--    public List<PayloadType> getPayloads() {
--        return payloads;
--    }
--
--    public void setPayloads(List<PayloadType> payloads) {
--        this.payloads.addAll(payloads);
--    }
--
--    /**
--     * Returns a new JingleMediaSession
--     *
--     * @param payloadType payloadType
--     * @param remote      remote Candidate
--     * @param local       local Candidate
--     * @return JingleMediaSession JingleMediaSession
--     */
--    public JingleMediaSession createMediaSession(PayloadType payloadType, final TransportCandidate remote,
--            final TransportCandidate local, final JingleSession jingleSession) {
--        TestMediaSession session = null;
--
--        session = new TestMediaSession(payloadType, remote, local, "", jingleSession);
--
--        return session;
--    }
--
--    public PayloadType getPreferredPayloadType() {
--        if (preferredPayloadType != null)
--            return preferredPayloadType;
--        return super.getPreferredPayloadType();
--    }
--
--    public void setPreferredPayloadType(PayloadType preferredPayloadType) {
--        this.preferredPayloadType = preferredPayloadType;
--    }
--
--    public String getName() {
--        return MEDIA_NAME;
--    }
--}
-Index: org/jivesoftware/smackx/jingle/mediaimpl/JMFInit.java
-===================================================================
---- org/jivesoftware/smackx/jingle/mediaimpl/JMFInit.java	(revision 11644)
-+++ org/jivesoftware/smackx/jingle/mediaimpl/JMFInit.java	(working copy)
-@@ -1,282 +0,0 @@
--package org.jivesoftware.smackx.jingle.mediaimpl;
--
--import java.awt.Frame;
--import java.awt.TextArea;
--import java.awt.Toolkit;
--import java.util.Vector;
--
--import javax.media.Format;
--import javax.media.PlugInManager;
--import javax.media.Renderer;
--import javax.media.format.AudioFormat;
--
--import org.jivesoftware.smackx.jingle.SmackLogger;
--
--import com.sun.media.ExclusiveUse;
--import com.sun.media.util.Registry;
--
--public class JMFInit extends Frame implements Runnable {
--
--	private static final SmackLogger LOGGER = SmackLogger.getLogger(JMFInit.class);
--
--	private String tempDir = "/tmp";
--
--    private boolean done = false;
--
--    private String userHome;
--
--    private boolean visible = false;
--
--    public JMFInit(String[] args, boolean visible) {
--        super("Initializing JMF...");
--
--        this.visible = visible;
--
--        Registry.set("secure.allowCaptureFromApplets", true);
--        Registry.set("secure.allowSaveFileFromApplets", true);
--
--        updateTemp(args);
--
--        try {
--            Registry.commit();
--        }
--        catch (Exception e) {
--
--            message("Failed to commit to JMFRegistry!");
--        }
--
--        Thread detectThread = new Thread(this);
--        detectThread.run();
--
--        /*
--           * int slept = 0; while (!done && slept < 60 * 1000 * 2) { try {
--           * Thread.currentThread().sleep(500); } catch (InterruptedException ie) { }
--           * slept += 500; }
--           *
--           * if (!done) { console.error("Detection is taking too long!
--           * Aborting!"); message("Detection is taking too long! Aborting!"); }
--           *
--           * try { Thread.currentThread().sleep(2000); } catch
--           * (InterruptedException ie) { }
--           */
--    }
--
--    public void run() {
--        detectDirectAudio();
--        detectS8DirectAudio();
--        detectCaptureDevices();
--        done = true;
--    }
--
--    private void updateTemp(String[] args) {
--        if (args != null && args.length > 0) {
--            tempDir = args[0];
--
--            message("Setting cache directory to " + tempDir);
--            Registry r = new Registry();
--            try {
--                r.set("secure.cacheDir", tempDir);
--                r.commit();
--
--                message("Updated registry");
--            }
--            catch (Exception e) {
--                message("Couldn't update registry!");
--            }
--        }
--    }
--
--    private void detectCaptureDevices() {
--        // check if JavaSound capture is available
--        message("Looking for Audio capturer");
--        Class dsauto;
--        try {
--            dsauto = Class.forName("DirectSoundAuto");
--            dsauto.newInstance();
--            message("Finished detecting DirectSound capturer");
--        }
--        catch (ThreadDeath td) {
--            throw td;
--        }
--        catch (Throwable t) {
--            //Do nothing
--        }
--
--        Class jsauto;
--        try {
--            jsauto = Class.forName("JavaSoundAuto");
--            jsauto.newInstance();
--            message("Finished detecting javasound capturer");
--        }
--        catch (ThreadDeath td) {
--            throw td;
--        }
--        catch (Throwable t) {
--            message("JavaSound capturer detection failed!");
--        }
--
--        /*
--        // Check if VFWAuto or SunVideoAuto is available
--        message("Looking for video capture devices");
--        Class auto = null;
--        Class autoPlus = null;
--        try {
--            auto = Class.forName("VFWAuto");
--        }
--        catch (Exception e) {
--        }
--        if (auto == null) {
--            try {
--                auto = Class.forName("SunVideoAuto");
--            }
--            catch (Exception ee) {
--
--            }
--            try {
--                autoPlus = Class.forName("SunVideoPlusAuto");
--            }
--            catch (Exception ee) {
--
--            }
--        }
--        if (auto == null) {
--            try {
--                auto = Class.forName("V4LAuto");
--            }
--            catch (Exception ee) {
--
--            }
--        }
--        try {
--            Object instance = auto.newInstance();
--            if (autoPlus != null) {
--                Object instancePlus = autoPlus.newInstance();
--            }
--
--            message("Finished detecting video capture devices");
--        }
--        catch (ThreadDeath td) {
--            throw td;
--        }
--        catch (Throwable t) {
--
--            message("Capture device detection failed!");
--        }
--        */
--    }
--
--    private void detectDirectAudio() {
--        Class cls;
--        int plType = PlugInManager.RENDERER;
--        String dar = "com.sun.media.renderer.audio.DirectAudioRenderer";
--        try {
--            // Check if this is the Windows Performance Pack - hack
--            cls = Class.forName("VFWAuto");
--            // Check if DS capture is supported, otherwise fail DS renderer
--            // since NT doesn't have capture
--            cls = Class.forName("com.sun.media.protocol.dsound.DSound");
--            // Find the renderer class and instantiate it.
--            cls = Class.forName(dar);
--
--            Renderer rend = (Renderer) cls.newInstance();
--            try {
--                // Set the format and open the device
--                AudioFormat af = new AudioFormat(AudioFormat.LINEAR, 44100, 16,
--                        2);
--                rend.setInputFormat(af);
--                rend.open();
--                Format[] inputFormats = rend.getSupportedInputFormats();
--                // Register the device
--                PlugInManager.addPlugIn(dar, inputFormats, new Format[0],
--                        plType);
--                // Move it to the top of the list
--                Vector rendList = PlugInManager.getPlugInList(null, null,
--                        plType);
--                int listSize = rendList.size();
--                if (rendList.elementAt(listSize - 1).equals(dar)) {
--                    rendList.removeElementAt(listSize - 1);
--                    rendList.insertElementAt(dar, 0);
--                    PlugInManager.setPlugInList(rendList, plType);
--                    PlugInManager.commit();
--                    // Log.debug("registered");
--                }
--                rend.close();
--            }
--            catch (Throwable t) {
--                // Log.debug("Error " + t);
--            }
--        }
--        catch (Throwable tt) {
--            //Do nothing
--        }
--    }
--
--    private void detectS8DirectAudio() {
--        Class cls;
--        int plType = PlugInManager.RENDERER;
--        String dar = "com.sun.media.renderer.audio.DirectAudioRenderer";
--        try {
--            // Check if this is the solaris Performance Pack - hack
--            cls = Class.forName("SunVideoAuto");
--
--            // Find the renderer class and instantiate it.
--            cls = Class.forName(dar);
--
--            Renderer rend = (Renderer) cls.newInstance();
--
--            if (rend instanceof ExclusiveUse
--                    && !((ExclusiveUse) rend).isExclusive()) {
--                // sol8+, DAR supports mixing
--                Vector rendList = PlugInManager.getPlugInList(null, null,
--                        plType);
--                int listSize = rendList.size();
--                boolean found = false;
--                String rname = null;
--
--                for (int i = 0; i < listSize; i++) {
--                    rname = (String) (rendList.elementAt(i));
--                    if (rname.equals(dar)) { // DAR is in the registry
--                        found = true;
--                        rendList.removeElementAt(i);
--                        break;
--                    }
--                }
--
--                if (found) {
--                    rendList.insertElementAt(dar, 0);
--                    PlugInManager.setPlugInList(rendList, plType);
--                    PlugInManager.commit();
--                }
--            }
--        }
--        catch (Throwable tt) {
--            //Do nothing
--        }
--    }
--
--    private void message(String mesg) {
--        LOGGER.debug(mesg);
--    }
--
--    private void createGUI() {
--        TextArea textBox = new TextArea(5, 50);
--        add("Center", textBox);
--        textBox.setEditable(false);
--        addNotify();
--        pack();
--
--        int scrWidth = (int) Toolkit.getDefaultToolkit().getScreenSize()
--                .getWidth();
--        int scrHeight = (int) Toolkit.getDefaultToolkit().getScreenSize()
--                .getHeight();
--
--        setLocation((scrWidth - getWidth()) / 2, (scrHeight - getHeight()) / 2);
--
--        setVisible(visible);
--
--    }
--
--    public static void start(boolean visible) {
--        new JMFInit(null, visible);
--    }
--}
-Index: org/jivesoftware/smackx/jingle/mediaimpl/demo/Demo.java
-===================================================================
---- org/jivesoftware/smackx/jingle/mediaimpl/demo/Demo.java	(revision 11644)
-+++ org/jivesoftware/smackx/jingle/mediaimpl/demo/Demo.java	(working copy)
-@@ -1,174 +0,0 @@
--/**
-- * $RCSfile: Demo.java,v $
-- * $Revision: 1.3 $
-- * $Date: 28/12/2006
-- * <p/>
-- * Copyright 2003-2006 Jive Software.
-- * <p/>
-- * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
-- * you may not use this file except in compliance with the License.
-- * You may obtain a copy of the License at
-- * <p/>
-- * http://www.apache.org/licenses/LICENSE-2.0
-- * <p/>
-- * Unless required by applicable law or agreed to in writing, software
-- * distributed under the License is distributed on an "AS IS" BASIS,
-- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- * See the License for the specific language governing permissions and
-- * limitations under the License.
-- */
--package org.jivesoftware.smackx.jingle.mediaimpl.demo;
--
--import org.jivesoftware.smack.Connection;
--import org.jivesoftware.smack.XMPPConnection;
--import org.jivesoftware.smack.XMPPException;
--import org.jivesoftware.smackx.jingle.JingleManager;
--import org.jivesoftware.smackx.jingle.JingleSession;
--import org.jivesoftware.smackx.jingle.JingleSessionRequest;
--import org.jivesoftware.smackx.jingle.listeners.JingleSessionRequestListener;
--import org.jivesoftware.smackx.jingle.media.JingleMediaManager;
--import org.jivesoftware.smackx.jingle.mediaimpl.jspeex.SpeexMediaManager;
--import org.jivesoftware.smackx.jingle.mediaimpl.sshare.ScreenShareMediaManager;
--import org.jivesoftware.smackx.jingle.nat.ICETransportManager;
--import org.jivesoftware.smackx.jingle.nat.JingleTransportManager;
--
--import javax.swing.*;
--import java.awt.event.ActionEvent;
--import java.util.ArrayList;
--import java.util.List;
--
--/**
-- * Jingle Demo Application. It register in a XMPP Server and let users place calls using a full JID and auto-receive calls.
-- * Parameters: Server User Pass.
-- */
--public class Demo extends JFrame {
--
--    private JingleTransportManager transportManager = null;
--    private Connection xmppConnection = null;
--
--    private String server = null;
--    private String user = null;
--    private String pass = null;
--
--    private JingleManager jm = null;
--    private JingleSession incoming = null;
--    private JingleSession outgoing = null;
--
--    private JTextField jid;
--
--    public Demo(String server, String user, String pass) {
--
--        this.server = server;
--        this.user = user;
--        this.pass = pass;
--        
--        if (user.equals("jeffw")) {
--            jid = new JTextField("eowyn" + "@" + server + "/Smack");
--        } else {
--            jid = new JTextField("jeffw" + "@" + server + "/Smack");
--        }
--
--        xmppConnection = new XMPPConnection(server);
--        try {
--            xmppConnection.connect();
--            xmppConnection.login(user, pass);
--            initialize();
--        }
--        catch (XMPPException e) {
--            e.printStackTrace();
--        }
--    }
--
--    public void initialize() {
--        ICETransportManager icetm0 = new ICETransportManager(xmppConnection, "10.47.47.53", 3478);
--        List<JingleMediaManager> mediaManagers = new ArrayList<JingleMediaManager>();
--        //mediaManagers.add(new JmfMediaManager(icetm0));
--        mediaManagers.add(new SpeexMediaManager(icetm0));
--        mediaManagers.add(new ScreenShareMediaManager(icetm0));
--        jm = new JingleManager(xmppConnection, mediaManagers);
--        jm.addCreationListener(icetm0);
--
--        jm.addJingleSessionRequestListener(new JingleSessionRequestListener() {
--            public void sessionRequested(JingleSessionRequest request) {
--
--//                if (incoming != null)
--//                    return;
--
--                try {
--                    // Accept the call
--                    incoming = request.accept();
--
--                    // Start the call
--                    incoming.startIncoming();
--                }
--                catch (XMPPException e) {
--                    e.printStackTrace();
--                }
--
--            }
--        });
--        createGUI();
--    }
--
--    public void createGUI() {
--
--        JPanel jPanel = new JPanel();
--
--        jPanel.add(jid);
--
--        jPanel.add(new JButton(new AbstractAction("Call") {
--            public void actionPerformed(ActionEvent e) {
--                if (outgoing != null) return;
--                try {
--                    outgoing = jm.createOutgoingJingleSession(jid.getText());
--                    outgoing.startOutgoing();
--                }
--                catch (XMPPException e1) {
--                    e1.printStackTrace();
--                }
--            }
--        }));
--
--        jPanel.add(new JButton(new AbstractAction("Hangup") {
--            public void actionPerformed(ActionEvent e) {
--                if (outgoing != null)
--                    try {
--                        outgoing.terminate();
--                    }
--                    catch (XMPPException e1) {
--                        e1.printStackTrace();
--                    }
--                    finally {
--                        outgoing = null;
--                    }
--                if (incoming != null)
--                    try {
--                        incoming.terminate();
--                    }
--                    catch (XMPPException e1) {
--                        e1.printStackTrace();
--                    }
--                    finally {
--                        incoming = null;
--                    }
--            }
--        }));
--
--        this.add(jPanel);
--
--    }
--
--    public static void main(String args[]) {
--
--        Demo demo = null;
--
--        if (args.length > 2) {
--            demo = new Demo(args[0], args[1], args[2]);
--            demo.pack();
--            demo.setVisible(true);
--            demo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
--        }
--
--    }
--
--}
-Index: org/jivesoftware/smackx/jingle/mediaimpl/sshare/ScreenShareSession.java
-===================================================================
---- org/jivesoftware/smackx/jingle/mediaimpl/sshare/ScreenShareSession.java	(revision 11644)
-+++ org/jivesoftware/smackx/jingle/mediaimpl/sshare/ScreenShareSession.java	(working copy)
-@@ -1,206 +0,0 @@
--/**
-- * $RCSfile: ScreenShareSession.java,v $
-- * $Revision: 1.2 $
-- * $Date: 08/11/2006
-- * <p/>
-- * Copyright 2003-2006 Jive Software.
-- * <p/>
-- * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
-- * you may not use this file except in compliance with the License.
-- * You may obtain a copy of the License at
-- * <p/>
-- * http://www.apache.org/licenses/LICENSE-2.0
-- * <p/>
-- * Unless required by applicable law or agreed to in writing, software
-- * distributed under the License is distributed on an "AS IS" BASIS,
-- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- * See the License for the specific language governing permissions and
-- * limitations under the License.
-- */
--package org.jivesoftware.smackx.jingle.mediaimpl.sshare;
--
--import java.awt.Rectangle;
--import java.awt.event.WindowAdapter;
--import java.awt.event.WindowEvent;
--import java.io.IOException;
--import java.net.DatagramSocket;
--import java.net.InetAddress;
--import java.net.ServerSocket;
--import java.net.UnknownHostException;
--
--import javax.swing.JFrame;
--import javax.swing.JPanel;
--
--import org.jivesoftware.smackx.jingle.JingleSession;
--import org.jivesoftware.smackx.jingle.SmackLogger;
--import org.jivesoftware.smackx.jingle.media.JingleMediaSession;
--import org.jivesoftware.smackx.jingle.media.PayloadType;
--import org.jivesoftware.smackx.jingle.mediaimpl.sshare.api.ImageDecoder;
--import org.jivesoftware.smackx.jingle.mediaimpl.sshare.api.ImageEncoder;
--import org.jivesoftware.smackx.jingle.mediaimpl.sshare.api.ImageReceiver;
--import org.jivesoftware.smackx.jingle.mediaimpl.sshare.api.ImageTransmitter;
--import org.jivesoftware.smackx.jingle.nat.TransportCandidate;
--
--/**
-- * This Class implements a complete JingleMediaSession.
-- * It sould be used to transmit and receive captured images from the Display.
-- * This Class should be automaticly controlled by JingleSession.
-- * For better NAT Traversal support this implementation don't support only receive or only transmit.
-- * To receive you MUST transmit. So the only implemented and functionally methods are startTransmit() and stopTransmit()
-- *
-- * @author Thiago Camargo
-- */
--public class ScreenShareSession extends JingleMediaSession {
--
--	private static final SmackLogger LOGGER = SmackLogger.getLogger(ScreenShareSession.class);
--
--	private ImageTransmitter transmitter = null;
--    private ImageReceiver receiver = null;
--    private int width = 600;
--    private int height = 600;
--
--    /**
--     * Creates a org.jivesoftware.jingleaudio.jmf.AudioMediaSession with defined payload type, remote and local candidates
--     *
--     * @param payloadType Payload of the jmf
--     * @param remote      the remote information. The candidate that the jmf will be sent to.
--     * @param local       the local information. The candidate that will receive the jmf
--     * @param locator     media locator
--     */
--    public ScreenShareSession(final PayloadType payloadType, final TransportCandidate remote, final TransportCandidate local,
--            final String locator, JingleSession jingleSession) {
--        super(payloadType, remote, local, "Screen", jingleSession);
--        initialize();
--    }
--
--    /**
--     * Initialize the screen share channels.
--     */
--    public void initialize() {
--
--        JingleSession session = getJingleSession();
--        if ((session != null) && (session.getInitiator().equals(session.getConnection().getUser()))) {
--            // If the initiator of the jingle session is us then we transmit a screen share.
--            try {
--                InetAddress remote = InetAddress.getByName(getRemote().getIp());
--                transmitter = new ImageTransmitter(new DatagramSocket(getLocal().getPort()), remote, getRemote().getPort(),
--                        new Rectangle(0, 0, width, height));
--            } catch (Exception e) {
--                e.printStackTrace();
--            }
--
--        } else {
--            // Otherwise we receive a screen share.
--            JFrame window = new JFrame();
--            JPanel jp = new JPanel();
--            window.add(jp);
--
--            window.setLocation(0, 0);
--            window.setSize(600, 600);
--
--            window.addWindowListener(new WindowAdapter() {
--                public void windowClosed(WindowEvent e) {
--                    receiver.stop();
--                }
--            });
--
--            try {
--                receiver = new ImageReceiver(InetAddress.getByName("0.0.0.0"), getRemote().getPort(), getLocal().getPort(), width,
--                        height);
--                LOGGER.debug("Receiving on:" + receiver.getLocalPort());
--            } catch (UnknownHostException e) {
--                e.printStackTrace();
--            }
--
--            jp.add(receiver);
--            receiver.setVisible(true);
--            window.setAlwaysOnTop(true);
--            window.setVisible(true);
--        }
--    }
--
--    /**
--     * Starts transmission and for NAT Traversal reasons start receiving also.
--     */
--    public void startTrasmit() {
--        new Thread(transmitter).start();
--    }
--
--    /**
--     * Set transmit activity. If the active is true, the instance should trasmit.
--     * If it is set to false, the instance should pause transmit.
--     *
--     * @param active active state
--     */
--    public void setTrasmit(boolean active) {
--        transmitter.setTransmit(true);
--    }
--
--    /**
--     * For NAT Reasons this method does nothing. Use startTransmit() to start transmit and receive jmf
--     */
--    public void startReceive() {
--        // Do nothing
--    }
--
--    /**
--     * Stops transmission and for NAT Traversal reasons stop receiving also.
--     */
--    public void stopTrasmit() {
--        if (transmitter != null) {
--            transmitter.stop();
--        }
--    }
--
--    /**
--     * For NAT Reasons this method does nothing. Use startTransmit() to start transmit and receive jmf
--     */
--    public void stopReceive() {
--        if (receiver != null) {
--            receiver.stop();
--        }
--    }
--
--    /**
--     * Obtain a free port we can use.
--     *
--     * @return A free port number.
--     */
--    protected int getFreePort() {
--        ServerSocket ss;
--        int freePort = 0;
--
--        for (int i = 0; i < 10; i++) {
--            freePort = (int) (10000 + Math.round(Math.random() * 10000));
--            freePort = freePort % 2 == 0 ? freePort : freePort + 1;
--            try {
--                ss = new ServerSocket(freePort);
--                freePort = ss.getLocalPort();
--                ss.close();
--                return freePort;
--            } catch (IOException e) {
--                e.printStackTrace();
--            }
--        }
--        try {
--            ss = new ServerSocket(0);
--            freePort = ss.getLocalPort();
--            ss.close();
--        } catch (IOException e) {
--            e.printStackTrace();
--        }
--        return freePort;
--    }
--
--    public void setEncoder(ImageEncoder encoder) {
--        if (encoder != null) {
--            this.transmitter.setEncoder(encoder);
--        }
--    }
--
--    public void setDecoder(ImageDecoder decoder) {
--        if (decoder != null) {
--            this.receiver.setDecoder(decoder);
--        }
--    }
--}
-Index: org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/ImageTransmitter.java
-===================================================================
---- org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/ImageTransmitter.java	(revision 11644)
-+++ org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/ImageTransmitter.java	(working copy)
-@@ -1,204 +0,0 @@
--package org.jivesoftware.smackx.jingle.mediaimpl.sshare.api;
--
--import java.awt.AWTException;
--import java.awt.Rectangle;
--import java.awt.Robot;
--import java.awt.image.BufferedImage;
--import java.awt.image.PixelGrabber;
--import java.io.ByteArrayOutputStream;
--import java.io.IOException;
--import java.net.DatagramPacket;
--import java.net.DatagramSocket;
--import java.net.InetAddress;
--import java.util.Arrays;
--
--import org.jivesoftware.smackx.jingle.SmackLogger;
--
--/**
-- * UDP Image Receiver.
-- * It uses PNG Tiles into UDP packets.
-- *
-- * @author Thiago Rocha Camargo
-- */
--public class ImageTransmitter implements Runnable {
--
--	private static final SmackLogger LOGGER = SmackLogger.getLogger(ImageTransmitter.class);
--
--	private Robot robot;
--    private InetAddress localHost;
--    private InetAddress remoteHost;
--    private int localPort;
--    private int remotePort;
--    public static final int tileWidth = 25;
--    private boolean on = true;
--    private boolean transmit = false;
--    private DatagramSocket socket;
--    private Rectangle area;
--    private int tiles[][][];
--    private int maxI;
--    private int maxJ;
--    private ImageEncoder encoder;
--    public final static int KEYFRAME = 10;
--
--    public ImageTransmitter(DatagramSocket socket, InetAddress remoteHost, int remotePort, Rectangle area) {
--
--        try {
--            robot = new Robot();
--
--            maxI = (int) Math.ceil(area.getWidth() / tileWidth);
--            maxJ = (int) Math.ceil(area.getHeight() / tileWidth);
--
--            tiles = new int[maxI][maxJ][tileWidth * tileWidth];
--
--            this.area = area;
--            this.socket = socket;
--            localHost = socket.getLocalAddress();
--            localPort = socket.getLocalPort();
--            this.remoteHost = remoteHost;
--            this.remotePort = remotePort;
--            this.encoder = new DefaultEncoder();
--
--            transmit = true;
--
--        }
--        catch (AWTException e) {
--            e.printStackTrace();
--        }
--
--    }
--
--    public void start() {
--        byte buf[] = new byte[1024];
--        final DatagramPacket p = new DatagramPacket(buf, 1024);
--
--        int keyframe = 0;
--
--        while (on) {
--            if (transmit) {
--
--                BufferedImage capture = robot.createScreenCapture(area);
--
--                QuantizeFilter filter = new QuantizeFilter();
--                capture = filter.filter(capture, null);
--
--                long trace = System.currentTimeMillis();
--
--                if (++keyframe > KEYFRAME) {
--                    keyframe = 0;
--                }
--                LOGGER.debug("KEYFRAME:" + keyframe);
--
--                for (int i = 0; i < maxI; i++) {
--                    for (int j = 0; j < maxJ; j++) {
--
--                        final BufferedImage bufferedImage = capture.getSubimage(i * tileWidth, j * tileWidth, tileWidth, tileWidth);
--
--                        int pixels[] = new int[tileWidth * tileWidth];
--
--                        PixelGrabber pg = new PixelGrabber(bufferedImage, 0, 0, tileWidth, tileWidth, pixels, 0, tileWidth);
--
--                        try {
--                            if (pg.grabPixels()) {
--
--                                if (keyframe == KEYFRAME || !Arrays.equals(tiles[i][j], pixels)) {
--
--                                    ByteArrayOutputStream baos = encoder.encode(bufferedImage);
--
--                                    if (baos != null) {
--
--                                        try {
--
--                                            Thread.sleep(1);
--
--                                            baos.write(i);
--                                            baos.write(j);
--
--                                            byte[] bytesOut = baos.toByteArray();
--
--                                            if (bytesOut.length > 1000)
--                                                LOGGER.error("Bytes out > 1000. Equals " + bytesOut.length);
--
--                                            p.setData(bytesOut);
--                                            p.setAddress(remoteHost);
--                                            p.setPort(remotePort);
--
--                                            try {
--                                                socket.send(p);
--                                            }
--                                            catch (IOException e) {
--                                                e.printStackTrace();
--                                            }
--
--                                            tiles[i][j] = pixels;
--
--                                        }
--                                        catch (Exception e) {
--                                        }
--
--                                    }
--
--                                }
--
--                            }
--                        }
--                        catch (InterruptedException e) {
--                            e.printStackTrace();
--                        }
--                    }
--                }
--
--                trace = (System.currentTimeMillis() - trace);
--                LOGGER.debug("Loop Time:" + trace);
--
--                if (trace < 500) {
--                    try {
--                        Thread.sleep(500 - trace);
--                    }
--                    catch (InterruptedException e) {
--                        e.printStackTrace();
--                    }
--                }
--            }
--        }
--    }
--
--    public void run() {
--        start();
--    }
--
--    /**
--     * Set Transmit Enabled/Disabled
--     *
--     * @param transmit boolean Enabled/Disabled
--     */
--    public void setTransmit(boolean transmit) {
--        this.transmit = transmit;
--    }
--
--    /**
--     * Get the encoder used to encode Images Tiles
--     *
--     * @return encoder
--     */
--    public ImageEncoder getEncoder() {
--        return encoder;
--    }
--
--    /**
--     * Set the encoder used to encode Image Tiles
--     *
--     * @param encoder encoder
--     */
--    public void setEncoder(ImageEncoder encoder) {
--        this.encoder = encoder;
--    }
--
--    /**
--     * Stops Transmitter
--     */
--    public void stop() {
--        this.transmit = false;
--        this.on = false;
--        socket.close();
--    }
--}
-Index: org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/ImageEncoder.java
-===================================================================
---- org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/ImageEncoder.java	(revision 11644)
-+++ org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/ImageEncoder.java	(working copy)
-@@ -1,13 +0,0 @@
--package org.jivesoftware.smackx.jingle.mediaimpl.sshare.api;
--
--import java.awt.image.BufferedImage;
--import java.io.ByteArrayOutputStream;
--
--/**
-- * Image Encoder Interface use this interface if you want to change the default encoder
--  *
-- * @author Thiago Rocha Camargo
-- */
--public interface ImageEncoder {
--    public ByteArrayOutputStream encode(BufferedImage bufferedImage);
--}
-Index: org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/PixelUtils.java
-===================================================================
---- org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/PixelUtils.java	(revision 11644)
-+++ org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/PixelUtils.java	(working copy)
-@@ -1,223 +0,0 @@
--/*
--Copyright 2006 Jerry Huxtable
--
--Licensed under the Apache License, Version 2.0 (the "License");
--you may not use this file except in compliance with the License.
--You may obtain a copy of the License at
--
--   http://www.apache.org/licenses/LICENSE-2.0
--
--Unless required by applicable law or agreed to in writing, software
--distributed under the License is distributed on an "AS IS" BASIS,
--WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
--See the License for the specific language governing permissions and
--limitations under the License.
--*/
--
--package org.jivesoftware.smackx.jingle.mediaimpl.sshare.api;
--
--import java.awt.*;
--import java.util.Random;
--
--/**
-- * Some more useful math functions for image processing.
-- * These are becoming obsolete as we move to Java2D. Use MiscComposite instead.
-- */
--public class PixelUtils {
--
--	public final static int REPLACE = 0;
--	public final static int NORMAL = 1;
--	public final static int MIN = 2;
--	public final static int MAX = 3;
--	public final static int ADD = 4;
--	public final static int SUBTRACT = 5;
--	public final static int DIFFERENCE = 6;
--	public final static int MULTIPLY = 7;
--	public final static int HUE = 8;
--	public final static int SATURATION = 9;
--	public final static int VALUE = 10;
--	public final static int COLOR = 11;
--	public final static int SCREEN = 12;
--	public final static int AVERAGE = 13;
--	public final static int OVERLAY = 14;
--	public final static int CLEAR = 15;
--	public final static int EXCHANGE = 16;
--	public final static int DISSOLVE = 17;
--	public final static int DST_IN = 18;
--	public final static int ALPHA = 19;
--	public final static int ALPHA_TO_GRAY = 20;
--
--	private static Random randomGenerator = new Random();
--
--	/**
--	 * Clamp a value to the range 0..255
--	 */
--	public static int clamp(int c) {
--		if (c < 0)
--			return 0;
--		if (c > 255)
--			return 255;
--		return c;
--	}
--
--	public static int interpolate(int v1, int v2, float f) {
--		return clamp((int)(v1+f*(v2-v1)));
--	}
--	
--	public static int brightness(int rgb) {
--		int r = (rgb >> 16) & 0xff;
--		int g = (rgb >> 8) & 0xff;
--		int b = rgb & 0xff;
--		return (r+g+b)/3;
--	}
--	
--	public static boolean nearColors(int rgb1, int rgb2, int tolerance) {
--		int r1 = (rgb1 >> 16) & 0xff;
--		int g1 = (rgb1 >> 8) & 0xff;
--		int b1 = rgb1 & 0xff;
--		int r2 = (rgb2 >> 16) & 0xff;
--		int g2 = (rgb2 >> 8) & 0xff;
--		int b2 = rgb2 & 0xff;
--		return Math.abs(r1-r2) <= tolerance && Math.abs(g1-g2) <= tolerance && Math.abs(b1-b2) <= tolerance;
--	}
--	
--	private final static float hsb1[] = new float[3];//FIXME-not thread safe
--	private final static float hsb2[] = new float[3];//FIXME-not thread safe
--	
--	// Return rgb1 painted onto rgb2
--	public static int combinePixels(int rgb1, int rgb2, int op) {
--		return combinePixels(rgb1, rgb2, op, 0xff);
--	}
--	
--	public static int combinePixels(int rgb1, int rgb2, int op, int extraAlpha, int channelMask) {
--		return (rgb2 & ~channelMask) | combinePixels(rgb1 & channelMask, rgb2, op, extraAlpha);
--	}
--	
--	public static int combinePixels(int rgb1, int rgb2, int op, int extraAlpha) {
--		if (op == REPLACE)
--			return rgb1;
--		int a1 = (rgb1 >> 24) & 0xff;
--		int r1 = (rgb1 >> 16) & 0xff;
--		int g1 = (rgb1 >> 8) & 0xff;
--		int b1 = rgb1 & 0xff;
--		int a2 = (rgb2 >> 24) & 0xff;
--		int r2 = (rgb2 >> 16) & 0xff;
--		int g2 = (rgb2 >> 8) & 0xff;
--		int b2 = rgb2 & 0xff;
--
--		switch (op) {
--		case NORMAL:
--			break;
--		case MIN:
--			r1 = Math.min(r1, r2);
--			g1 = Math.min(g1, g2);
--			b1 = Math.min(b1, b2);
--			break;
--		case MAX:
--			r1 = Math.max(r1, r2);
--			g1 = Math.max(g1, g2);
--			b1 = Math.max(b1, b2);
--			break;
--		case ADD:
--			r1 = clamp(r1+r2);
--			g1 = clamp(g1+g2);
--			b1 = clamp(b1+b2);
--			break;
--		case SUBTRACT:
--			r1 = clamp(r2-r1);
--			g1 = clamp(g2-g1);
--			b1 = clamp(b2-b1);
--			break;
--		case DIFFERENCE:
--			r1 = clamp(Math.abs(r1-r2));
--			g1 = clamp(Math.abs(g1-g2));
--			b1 = clamp(Math.abs(b1-b2));
--			break;
--		case MULTIPLY:
--			r1 = clamp(r1*r2/255);
--			g1 = clamp(g1*g2/255);
--			b1 = clamp(b1*b2/255);
--			break;
--		case DISSOLVE:
--			if ((randomGenerator.nextInt() & 0xff) <= a1) {
--				r1 = r2;
--				g1 = g2;
--				b1 = b2;
--			}
--			break;
--		case AVERAGE:
--			r1 = (r1+r2)/2;
--			g1 = (g1+g2)/2;
--			b1 = (b1+b2)/2;
--			break;
--		case HUE:
--		case SATURATION:
--		case VALUE:
--		case COLOR:
--			Color.RGBtoHSB(r1, g1, b1, hsb1);
--			Color.RGBtoHSB(r2, g2, b2, hsb2);
--			switch (op) {
--			case HUE:
--				hsb2[0] = hsb1[0];
--				break;
--			case SATURATION:
--				hsb2[1] = hsb1[1];
--				break;
--			case VALUE:
--				hsb2[2] = hsb1[2];
--				break;
--			case COLOR:
--				hsb2[0] = hsb1[0];
--				hsb2[1] = hsb1[1];
--				break;
--			}
--			rgb1 = Color.HSBtoRGB(hsb2[0], hsb2[1], hsb2[2]);
--			r1 = (rgb1 >> 16) & 0xff;
--			g1 = (rgb1 >> 8) & 0xff;
--			b1 = rgb1 & 0xff;
--			break;
--		case SCREEN:
--			r1 = 255 - ((255 - r1) * (255 - r2)) / 255;
--			g1 = 255 - ((255 - g1) * (255 - g2)) / 255;
--			b1 = 255 - ((255 - b1) * (255 - b2)) / 255;
--			break;
--		case OVERLAY:
--			int m, s;
--			s = 255 - ((255 - r1) * (255 - r2)) / 255;
--			m = r1 * r2 / 255;
--			r1 = (s * r1 + m * (255 - r1)) / 255;
--			s = 255 - ((255 - g1) * (255 - g2)) / 255;
--			m = g1 * g2 / 255;
--			g1 = (s * g1 + m * (255 - g1)) / 255;
--			s = 255 - ((255 - b1) * (255 - b2)) / 255;
--			m = b1 * b2 / 255;
--			b1 = (s * b1 + m * (255 - b1)) / 255;
--			break;
--		case CLEAR:
--			r1 = g1 = b1 = 0xff;
--			break;
--		case DST_IN:
--			r1 = clamp((r2*a1)/255);
--			g1 = clamp((g2*a1)/255);
--			b1 = clamp((b2*a1)/255);
--			a1 = clamp((a2*a1)/255);
--			return (a1 << 24) | (r1 << 16) | (g1 << 8) | b1;
--		case ALPHA:
--			a1 = a1*a2/255;
--			return (a1 << 24) | (r2 << 16) | (g2 << 8) | b2;
--		case ALPHA_TO_GRAY:
--			int na = 255-a1;
--			return (a1 << 24) | (na << 16) | (na << 8) | na;
--		}
--		if (extraAlpha != 0xff || a1 != 0xff) {
--			a1 = a1*extraAlpha/255;
--			int a3 = (255-a1)*a2/255;
--			r1 = clamp((r1*a1+r2*a3)/255);
--			g1 = clamp((g1*a1+g2*a3)/255);
--			b1 = clamp((b1*a1+b2*a3)/255);
--			a1 = clamp(a1+a3);
--		}
--		return (a1 << 24) | (r1 << 16) | (g1 << 8) | b1;
--	}
--
--}
-Index: org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/Quantizer.java
-===================================================================
---- org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/Quantizer.java	(revision 11644)
-+++ org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/Quantizer.java	(working copy)
-@@ -1,53 +0,0 @@
--/*
--Copyright 2006 Jerry Huxtable
--
--Licensed under the Apache License, Version 2.0 (the "License");
--you may not use this file except in compliance with the License.
--You may obtain a copy of the License at
--
--   http://www.apache.org/licenses/LICENSE-2.0
--
--Unless required by applicable law or agreed to in writing, software
--distributed under the License is distributed on an "AS IS" BASIS,
--WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
--See the License for the specific language governing permissions and
--limitations under the License.
--*/
--
--package org.jivesoftware.smackx.jingle.mediaimpl.sshare.api;
--
--/**
-- * The interface for an image quantizer. The addColor method is called (repeatedly
-- * if necessary) with all the image pixels. A color table can then be returned by 
-- * calling the buildColorTable method.
-- */
--public interface Quantizer {
--	/**
--	 * Initialize the quantizer. This should be called before adding any pixels.
--	 * @param numColors the number of colors we're quantizing to.
--	 */
--	public void setup(int numColors);
--	
--	/**
--	 * Add pixels to the quantizer.
--	 * @param pixels the array of ARGB pixels
--	 * @param offset the offset into the array
--	 * @param count the count of pixels
--	 */
--	public void addPixels(int[] pixels, int offset, int count);
--	
--	/**
--	 * Build a color table from the added pixels.
--	 * @return an array of ARGB pixels representing a color table
--	 */
--	public int[] buildColorTable();
--	
--	/**
--	 * Using the previously-built color table, return the index into that table for a pixel.
--	 * This is guaranteed to return a valid index - returning the index of a color closer
--	 * to that requested if necessary. 
--	 * @param rgb the pixel to find
--	 * @return the pixel's index in the color table
--	 */
--	public int getIndexForColor(int rgb);
--}
-Index: org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/DefaultEncoder.java
-===================================================================
---- org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/DefaultEncoder.java	(revision 11644)
-+++ org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/DefaultEncoder.java	(working copy)
-@@ -1,24 +0,0 @@
--package org.jivesoftware.smackx.jingle.mediaimpl.sshare.api;
--
--import javax.imageio.ImageIO;
--import java.awt.image.BufferedImage;
--import java.io.ByteArrayOutputStream;
--import java.io.IOException;
--
--/**
-- * Implements a default PNG Encoder
-- */
--public class DefaultEncoder implements ImageEncoder{
--
--    public ByteArrayOutputStream encode(BufferedImage bufferedImage) {
--        ByteArrayOutputStream baos = new ByteArrayOutputStream();
--        try {
--            ImageIO.write(bufferedImage, "png", baos);
--        }
--        catch (IOException e) {
--            e.printStackTrace();
--            baos = null;
--        }
--        return baos;
--    }
--}
-Index: org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/QuantizeFilter.java
-===================================================================
---- org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/QuantizeFilter.java	(revision 11644)
-+++ org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/QuantizeFilter.java	(working copy)
-@@ -1,178 +0,0 @@
--/*
--Copyright 2006 Jerry Huxtable
--
--Licensed under the Apache License, Version 2.0 (the "License");
--you may not use this file except in compliance with the License.
--You may obtain a copy of the License at
--
--   http://www.apache.org/licenses/LICENSE-2.0
--
--Unless required by applicable law or agreed to in writing, software
--distributed under the License is distributed on an "AS IS" BASIS,
--WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
--See the License for the specific language governing permissions and
--limitations under the License.
--*/
--
--package org.jivesoftware.smackx.jingle.mediaimpl.sshare.api;
--
--import java.awt.*;
--
--/**
-- * A filter which quantizes an image to a set number of colors - useful for producing
-- * images which are to be encoded using an index color model. The filter can perform
-- * Floyd-Steinberg error-diffusion dithering if required. At present, the quantization
-- * is done using an octtree algorithm but I eventually hope to add more quantization
-- * methods such as median cut. Note: at present, the filter produces an image which
-- * uses the RGB color model (because the application it was written for required it).
-- * I hope to extend it to produce an IndexColorModel by request.
-- */
--public class QuantizeFilter extends WholeImageFilter {
--
--	/**
--	 * Floyd-Steinberg dithering matrix.
--	 */
--	protected final static int[] matrix = {
--	 	 0, 0, 0,
--	 	 0, 0, 7,
--	 	 3, 5, 1,
--	};
--	private int sum = 3+5+7+1;
--
--	private boolean dither;
--	private int numColors = 256;
--	private boolean serpentine = true;
--
--	/**
--	 * Set the number of colors to quantize to.
--	 * @param numColors the number of colors. The default is 256.
--	 */
--	public void setNumColors(int numColors) {
--		this.numColors = Math.min(Math.max(numColors, 8), 256);
--	}
--
--	/**
--	 * Get the number of colors to quantize to.
--	 * @return the number of colors.
--	 */
--	public int getNumColors() {
--		return numColors;
--	}
--
--	/**
--	 * Set whether to use dithering or not. If not, the image is posterized.
--	 * @param dither true to use dithering
--	 */
--	public void setDither(boolean dither) {
--		this.dither = dither;
--	}
--
--	/**
--	 * Return the dithering setting
--	 * @return the current setting
--	 */
--	public boolean getDither() {
--		return dither;
--	}
--
--	/**
--	 * Set whether to use a serpentine pattern for return or not. This can reduce 'avalanche' artifacts in the output.
--	 * @param serpentine true to use serpentine pattern
--	 */
--	public void setSerpentine(boolean serpentine) {
--		this.serpentine = serpentine;
--	}
--	
--	/**
--	 * Return the serpentine setting
--	 * @return the current setting
--	 */
--	public boolean getSerpentine() {
--		return serpentine;
--	}
--	
--	public void quantize(int[] inPixels, int[] outPixels, int width, int height, int numColors, boolean dither, boolean serpentine) {
--		int count = width*height;
--		Quantizer quantizer = new OctTreeQuantizer();
--		quantizer.setup(numColors);
--		quantizer.addPixels(inPixels, 0, count);
--		int[] table =  quantizer.buildColorTable();
--
--		if (!dither) {
--			for (int i = 0; i < count; i++)
--				outPixels[i] = table[quantizer.getIndexForColor(inPixels[i])];
--		} else {
--			int index = 0;
--			for (int y = 0; y < height; y++) {
--				boolean reverse = serpentine && (y & 1) == 1;
--				int direction;
--				if (reverse) {
--					index = y*width+width-1;
--					direction = -1;
--				} else {
--					index = y*width;
--					direction = 1;
--				}
--				for (int x = 0; x < width; x++) {
--					int rgb1 = inPixels[index];
--					int rgb2 = table[quantizer.getIndexForColor(rgb1)];
--
--					outPixels[index] = rgb2;
--
--					int r1 = (rgb1 >> 16) & 0xff;
--					int g1 = (rgb1 >> 8) & 0xff;
--					int b1 = rgb1 & 0xff;
--
--					int r2 = (rgb2 >> 16) & 0xff;
--					int g2 = (rgb2 >> 8) & 0xff;
--					int b2 = rgb2 & 0xff;
--
--					int er = r1-r2;
--					int eg = g1-g2;
--					int eb = b1-b2;
--
--					for (int i = -1; i <= 1; i++) {
--						int iy = i+y;
--						if (0 <= iy && iy < height) {
--							for (int j = -1; j <= 1; j++) {
--								int jx = j+x;
--								if (0 <= jx && jx < width) {
--									int w;
--									if (reverse)
--										w = matrix[(i+1)*3-j+1];
--									else
--										w = matrix[(i+1)*3+j+1];
--									if (w != 0) {
--										int k = reverse ? index - j : index + j;
--										rgb1 = inPixels[k];
--										r1 = (rgb1 >> 16) & 0xff;
--										g1 = (rgb1 >> 8) & 0xff;
--										b1 = rgb1 & 0xff;
--										r1 += er * w/sum;
--										g1 += eg * w/sum;
--										b1 += eb * w/sum;
--										inPixels[k] = (PixelUtils.clamp(r1) << 16) | (PixelUtils.clamp(g1) << 8) | PixelUtils.clamp(b1);
--									}
--								}
--							}
--						}
--					}
--					index += direction;
--				}
--			}
--		}
--	}
--
--	protected int[] filterPixels( int width, int height, int[] inPixels, Rectangle transformedSpace ) {
--		int[] outPixels = new int[width*height];
--		
--		quantize(inPixels, outPixels, width, height, numColors, dither, serpentine);
--
--		return outPixels;
--	}
--
--	public String toString() {
--		return "Colors/Quantize...";
--	}
--	
--}
-Index: org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/ImageReceiver.java
-===================================================================
---- org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/ImageReceiver.java	(revision 11644)
-+++ org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/ImageReceiver.java	(working copy)
-@@ -1,150 +0,0 @@
--package org.jivesoftware.smackx.jingle.mediaimpl.sshare.api;
--
--import java.awt.*;
--import java.awt.image.BufferedImage;
--import java.io.ByteArrayInputStream;
--import java.io.IOException;
--import java.net.DatagramPacket;
--import java.net.DatagramSocket;
--import java.net.InetAddress;
--import java.net.SocketException;
--
--/**
-- * UDP Image Receiver.
-- * It uses PNG Tiles into UDP packets.
-- *
-- * @author Thiago Rocha Camargo
-- */
--public class ImageReceiver extends Canvas {
--
--    private boolean on = true;
--    private DatagramSocket socket;
--    private BufferedImage tiles[][];
--    private static final int tileWidth = ImageTransmitter.tileWidth;
--    private InetAddress localHost;
--    private InetAddress remoteHost;
--    private int localPort;
--    private int remotePort;
--    private ImageDecoder decoder;
--
--    public ImageReceiver(final InetAddress remoteHost, final int remotePort, final int localPort, int width, int height) {
--        tiles = new BufferedImage[width][height];
--
--        try {
--
--            socket = new DatagramSocket(localPort);
--            localHost = socket.getLocalAddress();
--            this.remoteHost = remoteHost;
--            this.remotePort = remotePort;
--            this.localPort = localPort;
--            this.decoder = new DefaultDecoder();
--
--            new Thread(new Runnable() {
--                public void run() {
--                    byte buf[] = new byte[1024];
--                    DatagramPacket p = new DatagramPacket(buf, 1024);
--                    try {
--                        while (on) {
--                            socket.receive(p);
--
--                            int length = p.getLength();
--
--                            BufferedImage bufferedImage = decoder.decode(new ByteArrayInputStream(p.getData(), 0, length - 2));
--
--                            if (bufferedImage != null) {
--
--                                int x = p.getData()[length - 2];
--                                int y = p.getData()[length - 1];
--
--                                drawTile(x, y, bufferedImage);
--
--                            }
--
--                        }
--                    }
--                    catch (IOException e) {
--                        e.printStackTrace();
--                    }
--                }
--            }).start();
--
--            new Thread(new Runnable() {
--                public void run() {
--                    byte buf[] = new byte[1024];
--                    DatagramPacket p = new DatagramPacket(buf, 1024);
--                    try {
--                        while (on) {
--
--                            p.setAddress(remoteHost);
--                            p.setPort(remotePort);
--                            socket.send(p);
--
--                            try {
--                                Thread.sleep(1000);
--                            }
--                            catch (InterruptedException e) {
--                                e.printStackTrace();
--                            }
--
--                        }
--                    }
--                    catch (IOException e) {
--                        e.printStackTrace();
--                    }
--                }
--            }).start();
--
--        }
--        catch (SocketException e) {
--            e.printStackTrace();
--        }
--        this.setSize(width, height);
--    }
--
--    public InetAddress getLocalHost() {
--        return localHost;
--    }
--
--    public InetAddress getRemoteHost() {
--        return remoteHost;
--    }
--
--    public int getLocalPort() {
--        return localPort;
--    }
--
--    public int getRemotePort() {
--        return remotePort;
--    }
--
--    public DatagramSocket getDatagramSocket() {
--        return socket;
--    }
--
--    public void drawTile(int x, int y, BufferedImage bufferedImage) {
--        tiles[x][y] = bufferedImage;
--        //repaint(x * tileWidth, y * tileWidth, tileWidth, tileWidth);
--        this.getGraphics().drawImage(bufferedImage, tileWidth * x, tileWidth * y, this);
--    }
--
--    public void paint(Graphics g) {
--        for (int i = 0; i < tiles.length; i++) {
--            for (int j = 0; j < tiles[0].length; j++) {
--                g.drawImage(tiles[i][j], tileWidth * i, tileWidth * j, this);
--            }
--        }
--    }
--
--    public ImageDecoder getDecoder() {
--        return decoder;
--    }
--
--    public void setDecoder(ImageDecoder decoder) {
--        this.decoder = decoder;
--    }
--
--    public void stop(){
--        this.on=false;
--        socket.close();
--    }
--}
-Index: org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/WholeImageFilter.java
-===================================================================
---- org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/WholeImageFilter.java	(revision 11644)
-+++ org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/WholeImageFilter.java	(working copy)
-@@ -1,86 +0,0 @@
--/*
--Copyright 2006 Jerry Huxtable
--
--Licensed under the Apache License, Version 2.0 (the "License");
--you may not use this file except in compliance with the License.
--You may obtain a copy of the License at
--
--   http://www.apache.org/licenses/LICENSE-2.0
--
--Unless required by applicable law or agreed to in writing, software
--distributed under the License is distributed on an "AS IS" BASIS,
--WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
--See the License for the specific language governing permissions and
--limitations under the License.
--*/
--
--package org.jivesoftware.smackx.jingle.mediaimpl.sshare.api;
--
--import java.awt.*;
--import java.awt.image.BufferedImage;
--import java.awt.image.ColorModel;
--import java.awt.image.WritableRaster;
--
--/**
-- * A filter which acts as a superclass for filters which need to have the whole image in memory
-- * to do their stuff.
-- */
--public abstract class WholeImageFilter extends AbstractBufferedImageOp {
--
--	/**
--     * The output image bounds.
--     */
--    protected Rectangle transformedSpace;
--
--	/**
--     * The input image bounds.
--     */
--	protected Rectangle originalSpace;
--	
--	/**
--	 * Construct a WholeImageFilter.
--	 */
--	public WholeImageFilter() {
--	}
--
--    public BufferedImage filter( BufferedImage src, BufferedImage dst ) {
--        int width = src.getWidth();
--        int height = src.getHeight();
--		int type = src.getType();
--		WritableRaster srcRaster = src.getRaster();
--
--		originalSpace = new Rectangle(0, 0, width, height);
--		transformedSpace = new Rectangle(0, 0, width, height);
--		transformSpace(transformedSpace);
--
--        if ( dst == null ) {
--            ColorModel dstCM = src.getColorModel();
--			dst = new BufferedImage(dstCM, dstCM.createCompatibleWritableRaster(transformedSpace.width, transformedSpace.height), dstCM.isAlphaPremultiplied(), null);
--		}
--		WritableRaster dstRaster = dst.getRaster();
--
--		int[] inPixels = getRGB( src, 0, 0, width, height, null );
--		inPixels = filterPixels( width, height, inPixels, transformedSpace );
--		setRGB( dst, 0, 0, transformedSpace.width, transformedSpace.height, inPixels );
--
--        return dst;
--    }
--
--	/**
--     * Calculate output bounds for given input bounds.
--     * @param rect input and output rectangle
--     */
--	protected void transformSpace(Rectangle rect) {
--	}
--	
--	/**
--     * Actually filter the pixels.
--     * @param width the image width
--     * @param height the image height
--     * @param inPixels the image pixels
--     * @param transformedSpace the output bounds
--     * @return the output pixels
--     */
--	protected abstract int[] filterPixels( int width, int height, int[] inPixels, Rectangle transformedSpace );
--}
--
-Index: org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/AbstractBufferedImageOp.java
-===================================================================
---- org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/AbstractBufferedImageOp.java	(revision 11644)
-+++ org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/AbstractBufferedImageOp.java	(working copy)
-@@ -1,98 +0,0 @@
--/*
--Copyright 2006 Jerry Huxtable
--
--Licensed under the Apache License, Version 2.0 (the "License");
--you may not use this file except in compliance with the License.
--You may obtain a copy of the License at
--
--   http://www.apache.org/licenses/LICENSE-2.0
--
--Unless required by applicable law or agreed to in writing, software
--distributed under the License is distributed on an "AS IS" BASIS,
--WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
--See the License for the specific language governing permissions and
--limitations under the License.
--*/
--
--package org.jivesoftware.smackx.jingle.mediaimpl.sshare.api;
--
--import java.awt.*;
--import java.awt.geom.Point2D;
--import java.awt.geom.Rectangle2D;
--import java.awt.image.BufferedImage;
--import java.awt.image.BufferedImageOp;
--import java.awt.image.ColorModel;
--
--/**
-- * A convenience class which implements those methods of BufferedImageOp which are rarely changed.
-- */
--public abstract class AbstractBufferedImageOp implements BufferedImageOp, Cloneable {
--
--    public BufferedImage createCompatibleDestImage(BufferedImage src, ColorModel dstCM) {
--        if ( dstCM == null )
--            dstCM = src.getColorModel();
--        return new BufferedImage(dstCM, dstCM.createCompatibleWritableRaster(src.getWidth(), src.getHeight()), dstCM.isAlphaPremultiplied(), null);
--    }
--    
--    public Rectangle2D getBounds2D( BufferedImage src ) {
--        return new Rectangle(0, 0, src.getWidth(), src.getHeight());
--    }
--    
--    public Point2D getPoint2D( Point2D srcPt, Point2D dstPt ) {
--        if ( dstPt == null )
--            dstPt = new Point2D.Double();
--        dstPt.setLocation( srcPt.getX(), srcPt.getY() );
--        return dstPt;
--    }
--
--    public RenderingHints getRenderingHints() {
--        return null;
--    }
--
--	/**
--	 * A convenience method for getting ARGB pixels from an image. This tries to avoid the performance
--	 * penalty of BufferedImage.getRGB unmanaging the image.
--     * @param image   a BufferedImage object
--     * @param x       the left edge of the pixel block
--     * @param y       the right edge of the pixel block
--     * @param width   the width of the pixel arry
--     * @param height  the height of the pixel arry
--     * @param pixels  the array to hold the returned pixels. May be null.
--     * @return the pixels
--     * @see #setRGB
--     */
--	public int[] getRGB( BufferedImage image, int x, int y, int width, int height, int[] pixels ) {
--		int type = image.getType();
--		if ( type == BufferedImage.TYPE_INT_ARGB || type == BufferedImage.TYPE_INT_RGB )
--			return (int [])image.getRaster().getDataElements( x, y, width, height, pixels );
--		return image.getRGB( x, y, width, height, pixels, 0, width );
--    }
--
--	/**
--	 * A convenience method for setting ARGB pixels in an image. This tries to avoid the performance
--	 * penalty of BufferedImage.setRGB unmanaging the image.
--     * @param image   a BufferedImage object
--     * @param x       the left edge of the pixel block
--     * @param y       the right edge of the pixel block
--     * @param width   the width of the pixel arry
--     * @param height  the height of the pixel arry
--     * @param pixels  the array of pixels to set
--     * @see #getRGB
--	 */
--	public void setRGB( BufferedImage image, int x, int y, int width, int height, int[] pixels ) {
--		int type = image.getType();
--		if ( type == BufferedImage.TYPE_INT_ARGB || type == BufferedImage.TYPE_INT_RGB )
--			image.getRaster().setDataElements( x, y, width, height, pixels );
--		else
--			image.setRGB( x, y, width, height, pixels, 0, width );
--    }
--
--	public Object clone() {
--		try {
--			return super.clone();
--		}
--		catch ( CloneNotSupportedException e ) {
--			return null;
--		}
--	}
--}
-Index: org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/ImageDecoder.java
-===================================================================
---- org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/ImageDecoder.java	(revision 11644)
-+++ org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/ImageDecoder.java	(working copy)
-@@ -1,15 +0,0 @@
--package org.jivesoftware.smackx.jingle.mediaimpl.sshare.api;
--
--import java.awt.image.BufferedImage;
--import java.io.ByteArrayInputStream;
--import java.io.IOException;
--
--/**
-- * Image Decoder Interface use this interface if you want to change the default decoder
-- *
-- * @author Thiago Rocha Camargo
-- */
--public interface ImageDecoder {
--
--    public BufferedImage decode(ByteArrayInputStream stream) throws IOException;
--}
-Index: org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/OctTreeQuantizer.java
-===================================================================
---- org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/OctTreeQuantizer.java	(revision 11644)
-+++ org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/OctTreeQuantizer.java	(working copy)
-@@ -1,287 +0,0 @@
--/*
--Copyright 2006 Jerry Huxtable
--
--Licensed under the Apache License, Version 2.0 (the "License");
--you may not use this file except in compliance with the License.
--You may obtain a copy of the License at
--
--   http://www.apache.org/licenses/LICENSE-2.0
--
--Unless required by applicable law or agreed to in writing, software
--distributed under the License is distributed on an "AS IS" BASIS,
--WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
--See the License for the specific language governing permissions and
--limitations under the License.
--*/
--
--package org.jivesoftware.smackx.jingle.mediaimpl.sshare.api;
--
--import java.io.PrintStream;
--import java.util.Vector;
--
--import org.jivesoftware.smackx.jingle.SmackLogger;
--
--/**
-- * An image Quantizer based on the Octree algorithm. This is a very basic implementation
-- * at present and could be much improved by picking the nodes to reduce more carefully 
-- * (i.e. not completely at random) when I get the time.
-- */
--public class OctTreeQuantizer implements Quantizer {
--
--	private static final SmackLogger LOGGER = SmackLogger.getLogger(OctTreeQuantizer.class);
--
--	/**
--	 * The greatest depth the tree is allowed to reach
--	 */
--	final static int MAX_LEVEL = 5;
--
--	/**
--	 * An Octtree node.
--	 */
--	class OctTreeNode {
--		int children;
--		int level;
--		OctTreeNode parent;
--		OctTreeNode leaf[] = new OctTreeNode[8];
--		boolean isLeaf;
--		int count;
--		int	totalRed;
--		int	totalGreen;
--		int	totalBlue;
--		int index;
--		
--		/**
--		 * A debugging method which prints the tree out.
--		 */
--		public void list(PrintStream s, int level) {
--			String indentStr = "";
--			for (int i = 0; i < level; i++)
--				indentStr += " ";
--			if (count == 0)
--				LOGGER.debug(indentStr + index + ": count=" + count);
--			else
--				LOGGER.debug(indentStr + index + ": count=" + count + " red=" + (totalRed/count) + " green=" + (totalGreen / count) + " blue=" + (totalBlue / count));
--			for (int i = 0; i < 8; i++)
--				if (leaf[i] != null)
--					leaf[i].list(s, level+2);
--		}
--	}
--
--	private int nodes = 0;
--	private OctTreeNode root;
--	private int reduceColors;
--	private int maximumColors;
--	private int colors = 0;
--	private Vector[] colorList;
--	
--	public OctTreeQuantizer() {
--		setup(256);
--		colorList = new Vector[MAX_LEVEL+1];
--		for (int i = 0; i < MAX_LEVEL+1; i++)
--			colorList[i] = new Vector();
--		root = new OctTreeNode();
--	}
--
--	/**
--	 * Initialize the quantizer. This should be called before adding any pixels.
--	 * @param numColors the number of colors we're quantizing to.
--	 */
--	public void setup(int numColors) {
--		maximumColors = numColors;
--		reduceColors = Math.max(512, numColors * 2);
--	}
--	
--	/**
--	 * Add pixels to the quantizer.
--	 * @param pixels the array of ARGB pixels
--	 * @param offset the offset into the array
--	 * @param count the count of pixels
--	 */
--	public void addPixels(int[] pixels, int offset, int count) {
--		for (int i = 0; i < count; i++) {
--			insertColor(pixels[i+offset]);
--			if (colors > reduceColors)
--				reduceTree(reduceColors);
--		}
--	}	
--
--    /**
--     * Get the color table index for a color.
--     * @param rgb the color
--     * @return the index
--     */
--	public int getIndexForColor(int rgb) {
--		int red = (rgb >> 16) & 0xff;
--		int green = (rgb >> 8) & 0xff;
--		int blue = rgb & 0xff;
--
--		OctTreeNode node = root;
--
--		for (int level = 0; level <= MAX_LEVEL; level++) {
--			OctTreeNode child;
--			int bit = 0x80 >> level;
--
--			int index = 0;
--			if ((red & bit) != 0)
--				index += 4;
--			if ((green & bit) != 0)
--				index += 2;
--			if ((blue & bit) != 0)
--				index += 1;
--
--			child = node.leaf[index];
--
--			if (child == null)
--				return node.index;
--			else if (child.isLeaf)
--				return child.index;
--			else
--				node = child;
--		}
--		LOGGER.debug("getIndexForColor failed");
--		return 0;
--	}
--
--	private void insertColor(int rgb) {
--		int red = (rgb >> 16) & 0xff;
--		int green = (rgb >> 8) & 0xff;
--		int blue = rgb & 0xff;
--
--		OctTreeNode node = root;
--
--//		LOGGER.debug("insertColor="+Integer.toHexString(rgb));
--		for (int level = 0; level <= MAX_LEVEL; level++) {
--			OctTreeNode child;
--			int bit = 0x80 >> level;
--
--			int index = 0;
--			if ((red & bit) != 0)
--				index += 4;
--			if ((green & bit) != 0)
--				index += 2;
--			if ((blue & bit) != 0)
--				index += 1;
--
--			child = node.leaf[index];
--
--			if (child == null) {
--				node.children++;
--
--				child = new OctTreeNode();
--				child.parent = node;
--				node.leaf[index] = child;
--				node.isLeaf = false;
--				nodes++;
--				colorList[level].addElement(child);
--
--				if (level == MAX_LEVEL) {
--					child.isLeaf = true;
--					child.count = 1;
--					child.totalRed = red;
--					child.totalGreen = green;
--					child.totalBlue = blue;
--					child.level = level;
--					colors++;
--					return;
--				}
--
--				node = child;
--			} else if (child.isLeaf) {
--				child.count++;
--				child.totalRed += red;
--				child.totalGreen += green;
--				child.totalBlue += blue;
--				return;
--			} else
--				node = child;
--		}
--		LOGGER.debug("insertColor failed");
--	}
--
--	private void reduceTree(int numColors) {
--		for (int level = MAX_LEVEL-1; level >= 0; level--) {
--			Vector v = colorList[level];
--			if (v != null && v.size() > 0) {
--				for (int j = 0; j < v.size(); j++) {
--					OctTreeNode node = (OctTreeNode)v.elementAt(j);
--					if (node.children > 0) {
--						for (int i = 0; i < 8; i++) {
--							OctTreeNode child = node.leaf[i];
--							if (child != null) {
--								if (!child.isLeaf)
--									LOGGER.debug("not a leaf!");
--								node.count += child.count;
--								node.totalRed += child.totalRed;
--								node.totalGreen += child.totalGreen;
--								node.totalBlue += child.totalBlue;
--								node.leaf[i] = null;
--								node.children--;
--								colors--;
--								nodes--;
--								colorList[level+1].removeElement(child);
--							}
--						}
--						node.isLeaf = true;
--						colors++;
--						if (colors <= numColors)
--							return;
--					}
--				}
--			}
--		}
--
--		LOGGER.debug("Unable to reduce the OctTree");
--	}
--
--    /**
--     * Build the color table.
--     * @return the color table
--     */
--	public int[] buildColorTable() {
--		int[] table = new int[colors];
--		buildColorTable(root, table, 0);
--		return table;
--	}
--	
--	/**
--	 * A quick way to use the quantizer. Just create a table the right size and pass in the pixels.
--     * @param inPixels the input colors
--     * @param table the output color table
--     */
--	public void buildColorTable(int[] inPixels, int[] table) {
--		int count = inPixels.length;
--		maximumColors = table.length;
--		for (int i = 0; i < count; i++) {
--			insertColor(inPixels[i]);
--			if (colors > reduceColors)
--				reduceTree(reduceColors);
--		}
--		if (colors > maximumColors)
--			reduceTree(maximumColors);
--		buildColorTable(root, table, 0);
--	}
--
--	private int buildColorTable(OctTreeNode node, int[] table, int index) {
--		if (colors > maximumColors)
--			reduceTree(maximumColors);
--
--		if (node.isLeaf) {
--			int count = node.count;
--			table[index] = 0xff000000 |
--				((node.totalRed/count) << 16) |
--				((node.totalGreen/count) << 8) |
--				node.totalBlue/count;
--			node.index = index++;
--		} else {
--			for (int i = 0; i < 8; i++) {
--				if (node.leaf[i] != null) {
--					node.index = index;
--					index = buildColorTable(node.leaf[i], table, index);
--				}
--			}
--		}
--		return index;
--	}
--	
--}
--
-Index: org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/DefaultDecoder.java
-===================================================================
---- org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/DefaultDecoder.java	(revision 11644)
-+++ org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/DefaultDecoder.java	(working copy)
-@@ -1,16 +0,0 @@
--package org.jivesoftware.smackx.jingle.mediaimpl.sshare.api;
--
--import javax.imageio.ImageIO;
--import java.awt.image.BufferedImage;
--import java.io.ByteArrayInputStream;
--import java.io.IOException;
--
--/**
-- * Implements a default PNG decoder.
-- */
--public class DefaultDecoder implements ImageDecoder {
--
--    public BufferedImage decode(ByteArrayInputStream stream) throws IOException {
--        return ImageIO.read(stream);
--    }
--}
-Index: org/jivesoftware/smackx/jingle/mediaimpl/sshare/ScreenShareMediaManager.java
-===================================================================
---- org/jivesoftware/smackx/jingle/mediaimpl/sshare/ScreenShareMediaManager.java	(revision 11644)
-+++ org/jivesoftware/smackx/jingle/mediaimpl/sshare/ScreenShareMediaManager.java	(working copy)
-@@ -1,115 +0,0 @@
--/**
-- * $RCSfile: ScreenShareMediaManager.java,v $
-- * $Revision: 1.3 $
-- * $Date: 25/12/2006
-- * <p/>
-- * Copyright 2003-2006 Jive Software.
-- * <p/>
-- * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
-- * you may not use this file except in compliance with the License.
-- * You may obtain a copy of the License at
-- * <p/>
-- * http://www.apache.org/licenses/LICENSE-2.0
-- * <p/>
-- * Unless required by applicable law or agreed to in writing, software
-- * distributed under the License is distributed on an "AS IS" BASIS,
-- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- * See the License for the specific language governing permissions and
-- * limitations under the License.
-- */
--
--package org.jivesoftware.smackx.jingle.mediaimpl.sshare;
--
--import org.jivesoftware.smackx.jingle.JingleSession;
--import org.jivesoftware.smackx.jingle.media.JingleMediaManager;
--import org.jivesoftware.smackx.jingle.media.JingleMediaSession;
--import org.jivesoftware.smackx.jingle.media.PayloadType;
--import org.jivesoftware.smackx.jingle.mediaimpl.sshare.api.ImageDecoder;
--import org.jivesoftware.smackx.jingle.mediaimpl.sshare.api.ImageEncoder;
--import org.jivesoftware.smackx.jingle.nat.JingleTransportManager;
--import org.jivesoftware.smackx.jingle.nat.TransportCandidate;
--
--import java.util.ArrayList;
--import java.util.List;
--
--/**
-- * Implements a JingleMediaManager for ScreenSharing.
-- * It currently uses an Audio payload Type. Which needs to be fixed in the next version.
-- *
-- * @author Thiago Camargo
-- */
--
--public class ScreenShareMediaManager extends JingleMediaManager {
--
--    public static final String MEDIA_NAME = "ScreenShare";
--
--    private List<PayloadType> payloads = new ArrayList<PayloadType>();
--
--    private ImageDecoder decoder = null;
--    private ImageEncoder encoder = null;
--
--    public ScreenShareMediaManager(JingleTransportManager transportManager) {
--        super(transportManager);
--        setupPayloads();
--    }
--
--    /**
--     * Setup API supported Payloads
--     */
--    private void setupPayloads() {
--        payloads.add(new PayloadType.Audio(30, "sshare"));
--    }
--
--    /**
--     * Return all supported Payloads for this Manager.
--     *
--     * @return The Payload List
--     */
--    public List<PayloadType> getPayloads() {
--        return payloads;
--    }
--
--    /**
--     * Returns a new JingleMediaSession
--     *
--     * @param payloadType payloadType
--     * @param remote      remote Candidate
--     * @param local       local Candidate
--     * @return JingleMediaSession JingleMediaSession
--     */
--    public JingleMediaSession createMediaSession(PayloadType payloadType, final TransportCandidate remote, final TransportCandidate local, final JingleSession jingleSession) {
--        ScreenShareSession session = null;
--        session = new ScreenShareSession(payloadType, remote, local, "Screen", jingleSession);
--        if (encoder != null) {
--            session.setEncoder(encoder);
--        }
--        if (decoder != null) {
--            session.setDecoder(decoder);
--        }
--        return session;
--    }
--
--    public PayloadType getPreferredPayloadType() {
--        return super.getPreferredPayloadType();
--    }
--
--    public ImageDecoder getDecoder() {
--        return decoder;
--    }
--
--    public void setDecoder(ImageDecoder decoder) {
--        this.decoder = decoder;
--    }
--
--    public ImageEncoder getEncoder() {
--        return encoder;
--    }
--
--    public void setEncoder(ImageEncoder encoder) {
--        this.encoder = encoder;
--    }
--    
--    public  String getName() {
--        return MEDIA_NAME;
--    }
--}
-Index: org/jivesoftware/smackx/jingle/mediaimpl/multi/MultiMediaManager.java
-===================================================================
---- org/jivesoftware/smackx/jingle/mediaimpl/multi/MultiMediaManager.java	(revision 11644)
-+++ org/jivesoftware/smackx/jingle/mediaimpl/multi/MultiMediaManager.java	(working copy)
-@@ -1,106 +0,0 @@
--/**
-- * $RCSfile: MultiMediaManager.java,v $
-- * $Revision: 1.3 $
-- * $Date: 25/12/2006
-- * <p/>
-- * Copyright 2003-2006 Jive Software.
-- * <p/>
-- * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
-- * you may not use this file except in compliance with the License.
-- * You may obtain a copy of the License at
-- * <p/>
-- * http://www.apache.org/licenses/LICENSE-2.0
-- * <p/>
-- * Unless required by applicable law or agreed to in writing, software
-- * distributed under the License is distributed on an "AS IS" BASIS,
-- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- * See the License for the specific language governing permissions and
-- * limitations under the License.
-- */
--
--package org.jivesoftware.smackx.jingle.mediaimpl.multi;
--
--import org.jivesoftware.smackx.jingle.JingleSession;
--import org.jivesoftware.smackx.jingle.media.JingleMediaManager;
--import org.jivesoftware.smackx.jingle.media.JingleMediaSession;
--import org.jivesoftware.smackx.jingle.media.PayloadType;
--import org.jivesoftware.smackx.jingle.nat.JingleTransportManager;
--import org.jivesoftware.smackx.jingle.nat.TransportCandidate;
--
--import java.util.ArrayList;
--import java.util.List;
--
--/**
-- * Implements a MultiMediaManager using other JingleMediaManager implementations.
-- * It supports every Codecs that JingleMediaManagers added has.
-- *
-- * @author Thiago Camargo
-- */
--
--public class MultiMediaManager extends JingleMediaManager {
--
--    public static final String MEDIA_NAME = "Multi";
--
--    private List<JingleMediaManager> managers = new ArrayList<JingleMediaManager>();
--
--    private PayloadType preferredPayloadType = null;
--
--    public MultiMediaManager(JingleTransportManager transportManager) {
--        super(transportManager);
--    }
--
--    public void addMediaManager(JingleMediaManager manager) {
--        managers.add(manager);
--    }
--
--    public void removeMediaManager(JingleMediaManager manager) {
--        managers.remove(manager);
--    }
--
--    /**
--     * Return all supported Payloads for this Manager.
--     *
--     * @return The Payload List
--     */
--    public List<PayloadType> getPayloads() {
--        List<PayloadType> list = new ArrayList<PayloadType>();
--        if (preferredPayloadType != null) list.add(preferredPayloadType);
--        for (JingleMediaManager manager : managers) {
--            for (PayloadType payloadType : manager.getPayloads()) {
--                if (!list.contains(payloadType) && !payloadType.equals(preferredPayloadType))
--                    list.add(payloadType);
--            }
--        }
--        return list;
--    }
--
--    /**
--     * Returns a new JingleMediaSession
--     *
--     * @param payloadType payloadType
--     * @param remote      remote Candidate
--     * @param local       local Candidate
--     * @return JingleMediaSession JingleMediaSession
--     */
--    public JingleMediaSession createMediaSession(PayloadType payloadType, final TransportCandidate remote, final TransportCandidate local, final JingleSession jingleSession) {
--        for (JingleMediaManager manager : managers) {
--            if (manager.getPayloads().contains(payloadType)) {
--                return manager.createMediaSession(payloadType, remote, local, jingleSession);
--            }
--        }
--        return null;
--    }
--
--    public PayloadType getPreferredPayloadType() {
--        if (preferredPayloadType != null) return preferredPayloadType;
--        return super.getPreferredPayloadType();
--    }
--
--    public void setPreferredPayloadType(PayloadType preferredPayloadType) {
--        this.preferredPayloadType = preferredPayloadType;
--    }
--    
--    public  String getName() {
--        return MEDIA_NAME;
--    }
--}
-Index: org/jivesoftware/smackx/jingle/mediaimpl/jmf/AudioMediaSession.java
-===================================================================
---- org/jivesoftware/smackx/jingle/mediaimpl/jmf/AudioMediaSession.java	(revision 11644)
-+++ org/jivesoftware/smackx/jingle/mediaimpl/jmf/AudioMediaSession.java	(working copy)
-@@ -1,165 +0,0 @@
--/**
-- * $RCSfile: AudioMediaSession.java,v $
-- * $Revision: 1.1 $
-- * $Date: 08/11/2006
-- * <p/>
-- * Copyright 2003-2006 Jive Software.
-- * <p/>
-- * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
-- * you may not use this file except in compliance with the License.
-- * You may obtain a copy of the License at
-- * <p/>
-- * http://www.apache.org/licenses/LICENSE-2.0
-- * <p/>
-- * Unless required by applicable law or agreed to in writing, software
-- * distributed under the License is distributed on an "AS IS" BASIS,
-- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- * See the License for the specific language governing permissions and
-- * limitations under the License.
-- */
--
--package org.jivesoftware.smackx.jingle.mediaimpl.jmf;
--
--import java.io.IOException;
--import java.net.ServerSocket;
--
--import javax.media.MediaLocator;
--
--import org.jivesoftware.smackx.jingle.JingleSession;
--import org.jivesoftware.smackx.jingle.SmackLogger;
--import org.jivesoftware.smackx.jingle.media.JingleMediaSession;
--import org.jivesoftware.smackx.jingle.media.PayloadType;
--import org.jivesoftware.smackx.jingle.nat.TransportCandidate;
--
--/**
-- * This Class implements a complete JingleMediaSession.
-- * It sould be used to transmit and receive audio captured from the Mic.
-- * This Class should be automaticly controlled by JingleSession.
-- * But you could also use in any VOIP application.
-- * For better NAT Traversal support this implementation don't support only receive or only transmit.
-- * To receive you MUST transmit. So the only implemented and functionally methods are startTransmit() and stopTransmit()
-- *
-- * @author Thiago Camargo
-- */
--public class AudioMediaSession extends JingleMediaSession {
--
--	private static final SmackLogger LOGGER = SmackLogger.getLogger(AudioMediaSession.class);
--
--	private AudioChannel audioChannel;
--
--    /**
--     * Creates a org.jivesoftware.jingleaudio.jmf.AudioMediaSession with defined payload type, remote and local candidates
--     *
--     * @param payloadType Payload of the jmf
--     * @param remote      the remote information. The candidate that the jmf will be sent to.
--     * @param local       the local information. The candidate that will receive the jmf
--     * @param locator     media locator
--     */
--    public AudioMediaSession(final PayloadType payloadType, final TransportCandidate remote,
--            final TransportCandidate local, String locator, JingleSession jingleSession) {
--        super(payloadType, remote, local, locator==null?"dsound://":locator,jingleSession);
--        initialize();
--    }
--
--    /**
--     * Initialize the Audio Channel to make it able to send and receive audio
--     */
--    public void initialize() {
--
--        String ip;
--        String localIp;
--        int localPort;
--        int remotePort;
--
--        if (this.getLocal().getSymmetric() != null) {
--            ip = this.getLocal().getIp();
--            localIp = this.getLocal().getLocalIp();
--            localPort = getFreePort();
--            remotePort = this.getLocal().getSymmetric().getPort();
--
--            LOGGER.debug(this.getLocal().getConnection() + " " + ip + ": " + localPort + "->" + remotePort);
--
--        }
--        else {
--            ip = this.getRemote().getIp();
--            localIp = this.getLocal().getLocalIp();
--            localPort = this.getLocal().getPort();
--            remotePort = this.getRemote().getPort();
--        }
--
--        audioChannel = new AudioChannel(new MediaLocator(this.getMediaLocator()), localIp, ip, localPort, remotePort, AudioFormatUtils.getAudioFormat(this.getPayloadType()),this);
--    }
--
--    /**
--     * Starts transmission and for NAT Traversal reasons start receiving also.
--     */
--    public void startTrasmit() {
--        audioChannel.start();
--    }
--
--    /**
--     * Set transmit activity. If the active is true, the instance should trasmit.
--     * If it is set to false, the instance should pause transmit.
--     *
--     * @param active active state
--     */
--    public void setTrasmit(boolean active) {
--        audioChannel.setTrasmit(active);
--    }
--
--    /**
--     * For NAT Reasons this method does nothing. Use startTransmit() to start transmit and receive jmf
--     */
--    public void startReceive() {
--        // Do nothing
--    }
--
--    /**
--     * Stops transmission and for NAT Traversal reasons stop receiving also.
--     */
--    public void stopTrasmit() {
--        if (audioChannel != null)
--            audioChannel.stop();
--    }
--
--    /**
--     * For NAT Reasons this method does nothing. Use startTransmit() to start transmit and receive jmf
--     */
--    public void stopReceive() {
--        // Do nothing
--    }
--
--    /**
--     * Obtain a free port we can use.
--     *
--     * @return A free port number.
--     */
--    protected int getFreePort() {
--        ServerSocket ss;
--        int freePort = 0;
--
--        for (int i = 0; i < 10; i++) {
--            freePort = (int) (10000 + Math.round(Math.random() * 10000));
--            freePort = freePort % 2 == 0 ? freePort : freePort + 1;
--            try {
--                ss = new ServerSocket(freePort);
--                freePort = ss.getLocalPort();
--                ss.close();
--                return freePort;
--            }
--            catch (IOException e) {
--                e.printStackTrace();
--            }
--        }
--        try {
--            ss = new ServerSocket(0);
--            freePort = ss.getLocalPort();
--            ss.close();
--        }
--        catch (IOException e) {
--            e.printStackTrace();
--        }
--        return freePort;
--    }
--
--}
-Index: org/jivesoftware/smackx/jingle/mediaimpl/jmf/AudioReceiver.java
-===================================================================
---- org/jivesoftware/smackx/jingle/mediaimpl/jmf/AudioReceiver.java	(revision 11644)
-+++ org/jivesoftware/smackx/jingle/mediaimpl/jmf/AudioReceiver.java	(working copy)
-@@ -1,171 +0,0 @@
--/**
-- * $RCSfile: AudioReceiver.java,v $
-- * $Revision: 1.1 $
-- * $Date: 08/11/2006
-- * <p/>
-- * Copyright 2003-2006 Jive Software.
-- * <p/>
-- * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
-- * you may not use this file except in compliance with the License.
-- * You may obtain a copy of the License at
-- * <p/>
-- * http://www.apache.org/licenses/LICENSE-2.0
-- * <p/>
-- * Unless required by applicable law or agreed to in writing, software
-- * distributed under the License is distributed on an "AS IS" BASIS,
-- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- * See the License for the specific language governing permissions and
-- * limitations under the License.
-- */
--
--package org.jivesoftware.smackx.jingle.mediaimpl.jmf;
--
--import javax.media.ControllerErrorEvent;
--import javax.media.ControllerEvent;
--import javax.media.ControllerListener;
--import javax.media.Player;
--import javax.media.RealizeCompleteEvent;
--import javax.media.protocol.DataSource;
--import javax.media.rtp.Participant;
--import javax.media.rtp.RTPControl;
--import javax.media.rtp.ReceiveStream;
--import javax.media.rtp.ReceiveStreamListener;
--import javax.media.rtp.SessionListener;
--import javax.media.rtp.event.ByeEvent;
--import javax.media.rtp.event.NewParticipantEvent;
--import javax.media.rtp.event.NewReceiveStreamEvent;
--import javax.media.rtp.event.ReceiveStreamEvent;
--import javax.media.rtp.event.RemotePayloadChangeEvent;
--import javax.media.rtp.event.SessionEvent;
--import javax.media.rtp.event.StreamMappedEvent;
--
--import org.jivesoftware.smackx.jingle.SmackLogger;
--import org.jivesoftware.smackx.jingle.media.JingleMediaSession;
--
--/**
-- * This class implements receive methods and listeners to be used in AudioChannel
-- *
-- * @author Thiago Camargo
-- */
--public class AudioReceiver implements ReceiveStreamListener, SessionListener,
--        ControllerListener {
--
--	private static final SmackLogger LOGGER = SmackLogger.getLogger(AudioReceiver.class);
--
--	boolean dataReceived = false;
--
--    Object dataSync;
--    JingleMediaSession jingleMediaSession;
--
--    public AudioReceiver(final Object dataSync, final JingleMediaSession jingleMediaSession) {
--        this.dataSync = dataSync;
--        this.jingleMediaSession = jingleMediaSession;
--    }
--
--    /**
--     * JingleSessionListener.
--     */
--    public synchronized void update(SessionEvent evt) {
--        if (evt instanceof NewParticipantEvent) {
--            Participant p = ((NewParticipantEvent) evt).getParticipant();
--            LOGGER.error("  - A new participant had just joined: " + p.getCNAME());
--        }
--    }
--
--    /**
--     * ReceiveStreamListener
--     */
--    public synchronized void update(ReceiveStreamEvent evt) {
--
--        Participant participant = evt.getParticipant();    // could be null.
--        ReceiveStream stream = evt.getReceiveStream();  // could be null.
--
--        if (evt instanceof RemotePayloadChangeEvent) {
--            LOGGER.error("  - Received an RTP PayloadChangeEvent.");
--            LOGGER.error("Sorry, cannot handle payload change.");
--
--        }
--        else if (evt instanceof NewReceiveStreamEvent) {
--
--            try {
--                stream = evt.getReceiveStream();
--                DataSource ds = stream.getDataSource();
--
--                // Find out the formats.
--                RTPControl ctl = (RTPControl) ds.getControl("javax.jmf.rtp.RTPControl");
--                if (ctl != null) {
--                    LOGGER.error("  - Recevied new RTP stream: " + ctl.getFormat());
--                }
--                else
--                    LOGGER.error("  - Recevied new RTP stream");
--
--                if (participant == null)
--                    LOGGER.error("      The sender of this stream had yet to be identified.");
--                else {
--                    LOGGER.error("      The stream comes from: " + participant.getCNAME());
--                }
--
--                // create a player by passing datasource to the Media Manager
--                Player p = javax.media.Manager.createPlayer(ds);
--                if (p == null)
--                    return;
--
--                p.addControllerListener(this);
--                p.realize();
--                jingleMediaSession.mediaReceived(participant != null ? participant.getCNAME() : "");
--
--                // Notify intialize() that a new stream had arrived.
--                synchronized (dataSync) {
--                    dataReceived = true;
--                    dataSync.notifyAll();
--                }
--
--            }
--            catch (Exception e) {
--                LOGGER.error("NewReceiveStreamEvent exception " + e.getMessage());
--                return;
--            }
--
--        }
--        else if (evt instanceof StreamMappedEvent) {
--
--            if (stream != null && stream.getDataSource() != null) {
--                DataSource ds = stream.getDataSource();
--                // Find out the formats.
--                RTPControl ctl = (RTPControl) ds.getControl("javax.jmf.rtp.RTPControl");
--                LOGGER.error("  - The previously unidentified stream ");
--                if (ctl != null)
--                    LOGGER.error("      " + ctl.getFormat());
--                LOGGER.error("      had now been identified as sent by: " + participant.getCNAME());
--            }
--        }
--        else if (evt instanceof ByeEvent) {
--
--            LOGGER.error("  - Got \"bye\" from: " + participant.getCNAME());
--
--        }
--
--    }
--
--    /**
--     * ControllerListener for the Players.
--     */
--    public synchronized void controllerUpdate(ControllerEvent ce) {
--
--        Player p = (Player) ce.getSourceController();
--
--        if (p == null)
--            return;
--
--        // Get this when the internal players are realized.
--        if (ce instanceof RealizeCompleteEvent) {
--            p.start();
--        }
--
--        if (ce instanceof ControllerErrorEvent) {
--            p.removeControllerListener(this);
--            LOGGER.error("Receiver internal error: " + ce);
--        }
--
--    }
--}
-Index: org/jivesoftware/smackx/jingle/mediaimpl/jmf/JmfMediaManager.java
-===================================================================
---- org/jivesoftware/smackx/jingle/mediaimpl/jmf/JmfMediaManager.java	(revision 11644)
-+++ org/jivesoftware/smackx/jingle/mediaimpl/jmf/JmfMediaManager.java	(working copy)
-@@ -1,170 +0,0 @@
--/**
-- * $RCSfile: JmfMediaManager.java,v $
-- * $Revision: 1.3 $
-- * $Date: 08/11/2006
-- * <p/>
-- * Copyright 2003-2006 Jive Software.
-- * <p/>
-- * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
-- * you may not use this file except in compliance with the License.
-- * You may obtain a copy of the License at
-- * <p/>
-- * http://www.apache.org/licenses/LICENSE-2.0
-- * <p/>
-- * Unless required by applicable law or agreed to in writing, software
-- * distributed under the License is distributed on an "AS IS" BASIS,
-- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- * See the License for the specific language governing permissions and
-- * limitations under the License.
-- */
--
--package org.jivesoftware.smackx.jingle.mediaimpl.jmf;
--
--import java.io.File;
--import java.io.IOException;
--import java.util.ArrayList;
--import java.util.List;
--
--import org.jivesoftware.smackx.jingle.JingleSession;
--import org.jivesoftware.smackx.jingle.SmackLogger;
--import org.jivesoftware.smackx.jingle.media.JingleMediaManager;
--import org.jivesoftware.smackx.jingle.media.JingleMediaSession;
--import org.jivesoftware.smackx.jingle.media.PayloadType;
--import org.jivesoftware.smackx.jingle.mediaimpl.JMFInit;
--import org.jivesoftware.smackx.jingle.nat.JingleTransportManager;
--import org.jivesoftware.smackx.jingle.nat.TransportCandidate;
--
--/**
-- * Implements a jingleMediaManager using JMF based API.
-- * It supports GSM and G723 codecs.
-- * <i>This API only currently works on windows and Mac.</i>
-- *
-- * @author Thiago Camargo
-- */
--public class JmfMediaManager extends JingleMediaManager {
--
--	private static final SmackLogger LOGGER = SmackLogger.getLogger(JmfMediaManager.class);
--
--	public static final String MEDIA_NAME = "JMF";
--
--    
--    private List<PayloadType> payloads = new ArrayList<PayloadType>();
--    private String mediaLocator = null;
--
--    /**
--     * Creates a Media Manager instance
--     */
--    public JmfMediaManager(JingleTransportManager transportManager) {
--        super(transportManager);
--        setupPayloads();
--    }
--
--    /**
--     * Creates a Media Manager instance
--     *
--     * @param mediaLocator Media Locator
--     */
--    public JmfMediaManager(String mediaLocator, JingleTransportManager transportManager) {
--        super(transportManager);
--        this.mediaLocator = mediaLocator;
--        setupPayloads();
--    }
--
--    /**
--     * Returns a new jingleMediaSession
--     *
--     * @param payloadType payloadType
--     * @param remote      remote Candidate
--     * @param local       local Candidate
--     * @return JingleMediaSession
--     */
--    public JingleMediaSession createMediaSession(final PayloadType payloadType, final TransportCandidate remote, final TransportCandidate local, final JingleSession jingleSession) {
--        return new AudioMediaSession(payloadType, remote, local, mediaLocator, jingleSession);
--    }
--
--    /**
--     * Setup API supported Payloads
--     */
--    private void setupPayloads() {
--        payloads.add(new PayloadType.Audio(3, "gsm"));
--        payloads.add(new PayloadType.Audio(4, "g723"));
--        payloads.add(new PayloadType.Audio(0, "PCMU", 16000));
--    }
--
--    /**
--     * Return all supported Payloads for this Manager
--     *
--     * @return The Payload List
--     */
--    public List<PayloadType> getPayloads() {
--        return payloads;
--    }
--
--    /**
--     * Return the media locator or null if not defined
--     *
--     * @return media locator
--     */
--    public String getMediaLocator() {
--        return mediaLocator;
--    }
--
--    /**
--     * Set the media locator
--     *
--     * @param mediaLocator media locator or null to use default
--     */
--    public void setMediaLocator(String mediaLocator) {
--        this.mediaLocator = mediaLocator;
--    }
--
--    /**
--     * Runs JMFInit the first time the application is started so that capture
--     * devices are properly detected and initialized by JMF.
--     */
--    public static void setupJMF() {
--        // .jmf is the place where we store the jmf.properties file used
--        // by JMF. if the directory does not exist or it does not contain
--        // a jmf.properties file. or if the jmf.properties file has 0 length
--        // then this is the first time we're running and should continue to
--        // with JMFInit
--        String homeDir = System.getProperty("user.home");
--        File jmfDir = new File(homeDir, ".jmf");
--        String classpath = System.getProperty("java.class.path");
--        classpath += System.getProperty("path.separator")
--                + jmfDir.getAbsolutePath();
--        System.setProperty("java.class.path", classpath);
--
--        if (!jmfDir.exists())
--            jmfDir.mkdir();
--
--        File jmfProperties = new File(jmfDir, "jmf.properties");
--
--        if (!jmfProperties.exists()) {
--            try {
--                jmfProperties.createNewFile();
--            }
--            catch (IOException ex) {
--                LOGGER.debug("Failed to create jmf.properties");
--                ex.printStackTrace();
--            }
--        }
--
--        // if we're running on linux checkout that libjmutil.so is where it
--        // should be and put it there.
--        runLinuxPreInstall();
--
--        //if (jmfProperties.length() == 0) {
--        new JMFInit(null, false);
--        //}
--
--    }
--
--    private static void runLinuxPreInstall() {
--        // @TODO Implement Linux Pre-Install
--    }
--    
--    public  String getName() {
--        return MEDIA_NAME;
--    }
--}
-Index: org/jivesoftware/smackx/jingle/mediaimpl/jmf/AudioChannel.java
-===================================================================
---- org/jivesoftware/smackx/jingle/mediaimpl/jmf/AudioChannel.java	(revision 11644)
-+++ org/jivesoftware/smackx/jingle/mediaimpl/jmf/AudioChannel.java	(working copy)
-@@ -1,553 +0,0 @@
--/**
-- * $RCSfile: AudioChannel.java,v $
-- * $Revision: 1.1 $
-- * $Date: 08/11/2006
-- * <p/>
-- * Copyright 2003-2006 Jive Software.
-- * <p/>
-- * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
-- * you may not use this file except in compliance with the License.
-- * You may obtain a copy of the License at
-- * <p/>
-- * http://www.apache.org/licenses/LICENSE-2.0
-- * <p/>
-- * Unless required by applicable law or agreed to in writing, software
-- * distributed under the License is distributed on an "AS IS" BASIS,
-- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- * See the License for the specific language governing permissions and
-- * limitations under the License.
-- */
--package org.jivesoftware.smackx.jingle.mediaimpl.jmf;
--
--import java.io.IOException;
--import java.net.InetAddress;
--import java.net.UnknownHostException;
--import java.util.ArrayList;
--import java.util.List;
--
--import javax.media.Codec;
--import javax.media.Controller;
--import javax.media.ControllerClosedEvent;
--import javax.media.ControllerEvent;
--import javax.media.ControllerListener;
--import javax.media.Format;
--import javax.media.MediaLocator;
--import javax.media.NoProcessorException;
--import javax.media.Processor;
--import javax.media.UnsupportedPlugInException;
--import javax.media.control.BufferControl;
--import javax.media.control.PacketSizeControl;
--import javax.media.control.TrackControl;
--import javax.media.format.AudioFormat;
--import javax.media.protocol.ContentDescriptor;
--import javax.media.protocol.DataSource;
--import javax.media.protocol.PushBufferDataSource;
--import javax.media.protocol.PushBufferStream;
--import javax.media.rtp.InvalidSessionAddressException;
--import javax.media.rtp.RTPManager;
--import javax.media.rtp.SendStream;
--import javax.media.rtp.SessionAddress;
--
--import org.jivesoftware.smackx.jingle.SmackLogger;
--import org.jivesoftware.smackx.jingle.media.JingleMediaSession;
--
--/**
-- * An Easy to use Audio Channel implemented using JMF.
-- * It sends and receives jmf for and from desired IPs and ports.
-- * Also has a rport Symetric behavior for better NAT Traversal.
-- * It send data from a defined port and receive data in the same port, making NAT binds easier.
-- * <p/>
-- * Send from portA to portB and receive from portB in portA.
-- * <p/>
-- * Sending
-- * portA ---> portB
-- * <p/>
-- * Receiving
-- * portB ---> portA
-- * <p/>
-- * <i>Transmit and Receive are interdependents. To receive you MUST trasmit. </i>
-- *
-- * @author Thiago Camargo
-- */
--public class AudioChannel {
--
--	private static final SmackLogger LOGGER = SmackLogger.getLogger(AudioChannel.class);
--	
--	private MediaLocator locator;
--    private String localIpAddress;
--    private String remoteIpAddress;
--    private int localPort;
--    private int portBase;
--    private Format format;
--
--    private Processor processor = null;
--    private RTPManager rtpMgrs[];
--    private DataSource dataOutput = null;
--    private AudioReceiver audioReceiver;
--
--    private List<SendStream> sendStreams = new ArrayList<SendStream>();
--
--    private JingleMediaSession jingleMediaSession;
--
--    private boolean started = false;
--
--    /**
--     * Creates an Audio Channel for a desired jmf locator. For instance: new MediaLocator("dsound://")
--     *
--     * @param locator         media locator
--     * @param localIpAddress  local IP address
--     * @param remoteIpAddress remote IP address
--     * @param localPort       local port number
--     * @param remotePort      remote port number
--     * @param format          audio format
--     */
--    public AudioChannel(MediaLocator locator,
--            String localIpAddress,
--            String remoteIpAddress,
--            int localPort,
--            int remotePort,
--            Format format, JingleMediaSession jingleMediaSession) {
--
--        this.locator = locator;
--        this.localIpAddress = localIpAddress;
--        this.remoteIpAddress = remoteIpAddress;
--        this.localPort = localPort;
--        this.portBase = remotePort;
--        this.format = format;
--        this.jingleMediaSession = jingleMediaSession;
--    }
--
--    /**
--     * Starts the transmission. Returns null if transmission started ok.
--     * Otherwise it returns a string with the reason why the setup failed.
--     * Starts receive also.
--     *
--     * @return result description
--     */
--    public synchronized String start() {
--        if (started) return null;
--
--        // Create a processor for the specified jmf locator
--        String result = createProcessor();
--        if (result != null) {
--            started = false;
--        }
--
--        // Create an RTP session to transmit the output of the
--        // processor to the specified IP address and port no.
--        result = createTransmitter();
--        if (result != null) {
--            processor.close();
--            processor = null;
--            started = false;
--        }
--        else {
--            started = true;
--        }
--
--        // Start the transmission
--        processor.start();
--
--        return null;
--    }
--
--    /**
--     * Stops the transmission if already started.
--     * Stops the receiver also.
--     */
--    public void stop() {
--        if (!started) return;
--        synchronized (this) {
--            try {
--                started = false;
--                if (processor != null) {
--                    processor.stop();
--                    processor = null;
--
--                    for (RTPManager rtpMgr : rtpMgrs) {
--                        rtpMgr.removeReceiveStreamListener(audioReceiver);
--                        rtpMgr.removeSessionListener(audioReceiver);
--                        rtpMgr.removeTargets("Session ended.");
--                        rtpMgr.dispose();
--                    }
--
--                    sendStreams.clear();
--
--                }
--            }
--            catch (Exception e) {
--                e.printStackTrace();
--            }
--        }
--    }
--
--    private String createProcessor() {
--        if (locator == null)
--            return "Locator is null";
--
--        DataSource ds;
--
--        try {
--            ds = javax.media.Manager.createDataSource(locator);
--        }
--        catch (Exception e) {
--            // Try JavaSound Locator as a last resort
--            try {
--                ds = javax.media.Manager.createDataSource(new MediaLocator("javasound://"));
--            }
--            catch (Exception ee) {
--                return "Couldn't create DataSource";
--            }
--        }
--
--        // Try to create a processor to handle the input jmf locator
--        try {
--            processor = javax.media.Manager.createProcessor(ds);
--        }
--        catch (NoProcessorException npe) {
--            npe.printStackTrace();
--            return "Couldn't create processor";
--        }
--        catch (IOException ioe) {
--            ioe.printStackTrace();
--            return "IOException creating processor";
--        }
--
--        // Wait for it to configure
--        boolean result = waitForState(processor, Processor.Configured);
--        if (!result){
--            return "Couldn't configure processor";
--        }
--        
--        // Get the tracks from the processor
--        TrackControl[] tracks = processor.getTrackControls();
--
--        // Do we have atleast one track?
--        if (tracks == null || tracks.length < 1){
--            return "Couldn't find tracks in processor";
--        }
--
--        // Set the output content descriptor to RAW_RTP
--        // This will limit the supported formats reported from
--        // Track.getSupportedFormats to only valid RTP formats.
--        ContentDescriptor cd = new ContentDescriptor(ContentDescriptor.RAW_RTP);
--        processor.setContentDescriptor(cd);
--
--        Format supported[];
--        Format chosen = null;
--        boolean atLeastOneTrack = false;
--
--        // Program the tracks.
--        for (int i = 0; i < tracks.length; i++) {
--            if (tracks[i].isEnabled()) {
--
--                supported = tracks[i].getSupportedFormats();
--
--                if (supported.length > 0) {
--                    for (Format format : supported) {
--                        if (format instanceof AudioFormat) {
--                            if (this.format.matches(format))
--                                chosen = format;
--                        }
--                    }
--                    if (chosen != null) {
--                        tracks[i].setFormat(chosen);
--                        LOGGER.error("Track " + i + " is set to transmit as:");
--                        LOGGER.error("  " + chosen);
--
--                        if (tracks[i].getFormat() instanceof AudioFormat) {
--                            int packetRate = 20;
--                            PacketSizeControl pktCtrl = (PacketSizeControl) processor.getControl(PacketSizeControl.class.getName());
--                            if (pktCtrl != null) {
--                                try {
--                                    pktCtrl.setPacketSize(getPacketSize(tracks[i].getFormat(), packetRate));
--                                }
--                                catch (IllegalArgumentException e) {
--                                    pktCtrl.setPacketSize(80);
--                                    // Do nothing
--                                }
--                            }
--
--                            if (tracks[i].getFormat().getEncoding().equals(AudioFormat.ULAW_RTP)) {
--                                Codec codec[] = new Codec[3];
--
--                                codec[0] = new com.ibm.media.codec.audio.rc.RCModule();
--                                codec[1] = new com.ibm.media.codec.audio.ulaw.JavaEncoder();
--                                codec[2] = new com.sun.media.codec.audio.ulaw.Packetizer();
--                                ((com.sun.media.codec.audio.ulaw.Packetizer) codec
--                                        [2]).setPacketSize(160);
--
--                                try {
--                                    tracks[i].setCodecChain(codec);
--                                }
--                                catch (UnsupportedPlugInException e) {
--                                    e.printStackTrace();
--                                }
--                            }
--
--                        }
--
--                        atLeastOneTrack = true;
--                    }
--                    else
--                        tracks[i].setEnabled(false);
--                }
--                else
--                    tracks[i].setEnabled(false);
--            }
--        }
--
--        if (!atLeastOneTrack)
--            return "Couldn't set any of the tracks to a valid RTP format";
--
--        result = waitForState(processor, Controller.Realized);
--        if (!result)
--            return "Couldn't realize processor";
--
--        // Get the output data source of the processor
--        dataOutput = processor.getDataOutput();
--
--        return null;
--    }
--
--    /**
--     * Get the best packet size for a given codec and a codec rate
--     *
--     * @param codecFormat
--     * @param milliseconds
--     * @return
--     * @throws IllegalArgumentException
--     */
--    private int getPacketSize(Format codecFormat, int milliseconds) throws IllegalArgumentException {
--        String encoding = codecFormat.getEncoding();
--        if (encoding.equalsIgnoreCase(AudioFormat.GSM) ||
--                encoding.equalsIgnoreCase(AudioFormat.GSM_RTP)) {
--            return milliseconds * 4; // 1 byte per millisec
--        }
--        else if (encoding.equalsIgnoreCase(AudioFormat.ULAW) ||
--                encoding.equalsIgnoreCase(AudioFormat.ULAW_RTP)) {
--            return milliseconds * 8;
--        }
--        else {
--            throw new IllegalArgumentException("Unknown codec type");
--        }
--    }
--
--    /**
--     * Use the RTPManager API to create sessions for each jmf
--     * track of the processor.
--     *
--     * @return description
--     */
--    private String createTransmitter() {
--
--        // Cheated.  Should have checked the type.
--        PushBufferDataSource pbds = (PushBufferDataSource) dataOutput;
--        PushBufferStream pbss[] = pbds.getStreams();
--
--        rtpMgrs = new RTPManager[pbss.length];
--        SessionAddress localAddr, destAddr;
--        InetAddress ipAddr;
--        SendStream sendStream;
--        audioReceiver = new AudioReceiver(this, jingleMediaSession);
--        int port;
--
--        for (int i = 0; i < pbss.length; i++) {
--            try {
--                rtpMgrs[i] = RTPManager.newInstance();
--
--                port = portBase + 2 * i;
--                ipAddr = InetAddress.getByName(remoteIpAddress);
--
--                localAddr = new SessionAddress(InetAddress.getByName(this.localIpAddress),
--                        localPort);
--
--                destAddr = new SessionAddress(ipAddr, port);
--
--                rtpMgrs[i].addReceiveStreamListener(audioReceiver);
--                rtpMgrs[i].addSessionListener(audioReceiver);
--
--                BufferControl bc = (BufferControl) rtpMgrs[i].getControl("javax.media.control.BufferControl");
--                if (bc != null) {
--                    int bl = 160;
--                    bc.setBufferLength(bl);
--                }
--
--                try {
--
--                    rtpMgrs[i].initialize(localAddr);
--
--                }
--                catch (InvalidSessionAddressException e) {
--                    // In case the local address is not allowed to read, we user another local address
--                    SessionAddress sessAddr = new SessionAddress();
--                    localAddr = new SessionAddress(sessAddr.getDataAddress(),
--                            localPort);
--                    rtpMgrs[i].initialize(localAddr);
--                }
--
--                rtpMgrs[i].addTarget(destAddr);
--
--                LOGGER.error("Created RTP session at " + localPort + " to: " + remoteIpAddress + " " + port);
--
--                sendStream = rtpMgrs[i].createSendStream(dataOutput, i);
--
--                sendStreams.add(sendStream);
--
--                sendStream.start();
--
--            }
--            catch (Exception e) {
--                e.printStackTrace();
--                return e.getMessage();
--            }
--        }
--
--        return null;
--    }
--
--    /**
--     * Set transmit activity. If the active is true, the instance should trasmit.
--     * If it is set to false, the instance should pause transmit.
--     *
--     * @param active active state
--     */
--    public void setTrasmit(boolean active) {
--        for (SendStream sendStream : sendStreams) {
--            try {
--                if (active) {
--                    sendStream.start();
--                    LOGGER.debug("START");
--                }
--                else {
--                    sendStream.stop();
--                    LOGGER.debug("STOP");
--                }
--            }
--            catch (IOException e) {
--                e.printStackTrace();
--            }
--
--        }
--    }
--
--    /**
--     * *************************************************************
--     * Convenience methods to handle processor's state changes.
--     * **************************************************************
--     */
--
--    private Integer stateLock = 0;
--    private boolean failed = false;
--
--    Integer getStateLock() {
--        return stateLock;
--    }
--
--    void setFailed() {
--        failed = true;
--    }
--
--    private synchronized boolean waitForState(Processor p, int state) {
--        p.addControllerListener(new StateListener());
--        failed = false;
--
--        // Call the required method on the processor
--        if (state == Processor.Configured) {
--            p.configure();
--        }
--        else if (state == Processor.Realized) {
--            p.realize();
--        }
--
--        // Wait until we get an event that confirms the
--        // success of the method, or a failure event.
--        // See StateListener inner class
--        while (p.getState() < state && !failed) {
--            synchronized (getStateLock()) {
--                try {
--                    getStateLock().wait();
--                }
--                catch (InterruptedException ie) {
--                    return false;
--                }
--            }
--        }
--
--        return !failed;
--    }
--
--    /**
--     * *************************************************************
--     * Inner Classes
--     * **************************************************************
--     */
--
--    class StateListener implements ControllerListener {
--
--        public void controllerUpdate(ControllerEvent ce) {
--
--            // If there was an error during configure or
--            // realize, the processor will be closed
--            if (ce instanceof ControllerClosedEvent)
--                setFailed();
--
--            // All controller events, send a notification
--            // to the waiting thread in waitForState method.
--            if (ce != null) {
--                synchronized (getStateLock()) {
--                    getStateLock().notifyAll();
--                }
--            }
--        }
--    }
--
--    public static void main(String args[]) {
--
--        InetAddress localhost;
--        try {
--            localhost = InetAddress.getLocalHost();
--
--            AudioChannel audioChannel0 = new AudioChannel(new MediaLocator("javasound://8000"), localhost.getHostAddress(), localhost.getHostAddress(), 7002, 7020, new AudioFormat(AudioFormat.GSM_RTP), null);
--            AudioChannel audioChannel1 = new AudioChannel(new MediaLocator("javasound://8000"), localhost.getHostAddress(), localhost.getHostAddress(), 7020, 7002, new AudioFormat(AudioFormat.GSM_RTP), null);
--
--            audioChannel0.start();
--            audioChannel1.start();
--
--            try {
--                Thread.sleep(5000);
--            }
--            catch (InterruptedException e) {
--                e.printStackTrace();
--            }
--
--            audioChannel0.setTrasmit(false);
--            audioChannel1.setTrasmit(false);
--
--            try {
--                Thread.sleep(5000);
--            }
--            catch (InterruptedException e) {
--                e.printStackTrace();
--            }
--
--            audioChannel0.setTrasmit(true);
--            audioChannel1.setTrasmit(true);
--
--            try {
--                Thread.sleep(5000);
--            }
--            catch (InterruptedException e) {
--                e.printStackTrace();
--            }
--
--            audioChannel0.stop();
--            audioChannel1.stop();
--
--        }
--        catch (UnknownHostException e) {
--            e.printStackTrace();
--        }
--
--    }
--}
-\ No newline at end of file
-Index: org/jivesoftware/smackx/jingle/mediaimpl/jmf/AudioFormatUtils.java
-===================================================================
---- org/jivesoftware/smackx/jingle/mediaimpl/jmf/AudioFormatUtils.java	(revision 11644)
-+++ org/jivesoftware/smackx/jingle/mediaimpl/jmf/AudioFormatUtils.java	(working copy)
-@@ -1,55 +0,0 @@
--/**
-- * $RCSfile: AudioFormatUtils.java,v $
-- * $Revision: 1.1 $
-- * $Date: 08/11/2006
-- * <p/>
-- * Copyright 2003-2006 Jive Software.
-- * <p/>
-- * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
-- * you may not use this file except in compliance with the License.
-- * You may obtain a copy of the License at
-- * <p/>
-- * http://www.apache.org/licenses/LICENSE-2.0
-- * <p/>
-- * Unless required by applicable law or agreed to in writing, software
-- * distributed under the License is distributed on an "AS IS" BASIS,
-- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- * See the License for the specific language governing permissions and
-- * limitations under the License.
-- */
--package org.jivesoftware.smackx.jingle.mediaimpl.jmf;
--
--import org.jivesoftware.smackx.jingle.media.PayloadType;
--
--import javax.media.format.AudioFormat;
--
--/**
-- * Audio Format Utils.
-- *
-- * @author Thiago Camargo
-- */
--public class AudioFormatUtils {
--
--    /**
--     * Return a JMF AudioFormat for a given Jingle Payload type.
--     * Return null if the payload is not supported by this jmf API.
--     *
--     * @param payloadtype payloadtype
--     * @return correspondent audioType
--     */
--    public static AudioFormat getAudioFormat(PayloadType payloadtype) {
--
--        switch (payloadtype.getId()) {
--            case 0:
--                return new AudioFormat(AudioFormat.ULAW_RTP);
--            case 3:
--                return new AudioFormat(AudioFormat.GSM_RTP);
--            case 4:
--                return new AudioFormat(AudioFormat.G723_RTP);
--            default:
--                return null;
--        }
--
--    }
--
--}
-Index: org/jivesoftware/smackx/jingle/mediaimpl/jspeex/SpeexMediaManager.java
-===================================================================
---- org/jivesoftware/smackx/jingle/mediaimpl/jspeex/SpeexMediaManager.java	(revision 11644)
-+++ org/jivesoftware/smackx/jingle/mediaimpl/jspeex/SpeexMediaManager.java	(working copy)
-@@ -1,134 +0,0 @@
--/**
-- * $RCSfile: SpeexMediaManager.java,v $
-- * $Revision: 1.3 $
-- * $Date: 25/12/2006
-- * <p/>
-- * Copyright 2003-2006 Jive Software.
-- * <p/>
-- * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
-- * you may not use this file except in compliance with the License.
-- * You may obtain a copy of the License at
-- * <p/>
-- * http://www.apache.org/licenses/LICENSE-2.0
-- * <p/>
-- * Unless required by applicable law or agreed to in writing, software
-- * distributed under the License is distributed on an "AS IS" BASIS,
-- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- * See the License for the specific language governing permissions and
-- * limitations under the License.
-- */
--package org.jivesoftware.smackx.jingle.mediaimpl.jspeex;
--
--import java.io.File;
--import java.io.IOException;
--import java.util.ArrayList;
--import java.util.List;
--
--import org.jivesoftware.smackx.jingle.JingleSession;
--import org.jivesoftware.smackx.jingle.SmackLogger;
--import org.jivesoftware.smackx.jingle.media.JingleMediaManager;
--import org.jivesoftware.smackx.jingle.media.JingleMediaSession;
--import org.jivesoftware.smackx.jingle.media.PayloadType;
--import org.jivesoftware.smackx.jingle.mediaimpl.JMFInit;
--import org.jivesoftware.smackx.jingle.nat.JingleTransportManager;
--import org.jivesoftware.smackx.jingle.nat.TransportCandidate;
--
--/**
-- * Implements a jingleMediaManager using JMF based API and JSpeex.
-- * It supports Speex codec.
-- * <i>This API only currently works on windows.</i>
-- *
-- * @author Thiago Camargo
-- */
--public class SpeexMediaManager extends JingleMediaManager {
--
--	private static final SmackLogger LOGGER = SmackLogger.getLogger(SpeexMediaManager.class);
--
--	public static final String MEDIA_NAME = "Speex";
--
--    private List<PayloadType> payloads = new ArrayList<PayloadType>();
--
--    public SpeexMediaManager(JingleTransportManager transportManager) {
--        super(transportManager);
--        setupPayloads();
--        setupJMF();
--    }
--
--    /**
--     * Returns a new jingleMediaSession
--     *
--     * @param payloadType payloadType
--     * @param remote      remote Candidate
--     * @param local       local Candidate
--     * @return JingleMediaSession
--     */
--    public JingleMediaSession createMediaSession(PayloadType payloadType, final TransportCandidate remote, final TransportCandidate local, final JingleSession jingleSession) {
--        return new AudioMediaSession(payloadType, remote, local, null,null);
--    }
--
--    /**
--     * Setup API supported Payloads
--     */
--    private void setupPayloads() {
--        payloads.add(new PayloadType.Audio(15, "speex"));
--    }
--
--    /**
--     * Return all supported Payloads for this Manager
--     *
--     * @return The Payload List
--     */
--    public List<PayloadType> getPayloads() {
--        return payloads;
--    }
--
--    /**
--     * Runs JMFInit the first time the application is started so that capture
--     * devices are properly detected and initialized by JMF.
--     */
--    public static void setupJMF() {
--        // .jmf is the place where we store the jmf.properties file used
--        // by JMF. if the directory does not exist or it does not contain
--        // a jmf.properties file. or if the jmf.properties file has 0 length
--        // then this is the first time we're running and should continue to
--        // with JMFInit
--        String homeDir = System.getProperty("user.home");
--        File jmfDir = new File(homeDir, ".jmf");
--        String classpath = System.getProperty("java.class.path");
--        classpath += System.getProperty("path.separator")
--                + jmfDir.getAbsolutePath();
--        System.setProperty("java.class.path", classpath);
--
--        if (!jmfDir.exists())
--            jmfDir.mkdir();
--
--        File jmfProperties = new File(jmfDir, "jmf.properties");
--
--        if (!jmfProperties.exists()) {
--            try {
--                jmfProperties.createNewFile();
--            }
--            catch (IOException ex) {
--                LOGGER.debug("Failed to create jmf.properties");
--                ex.printStackTrace();
--            }
--        }
--
--        // if we're running on linux checkout that libjmutil.so is where it
--        // should be and put it there.
--        runLinuxPreInstall();
--
--        if (jmfProperties.length() == 0) {
--            new JMFInit(null, false);
--        }
--
--    }
--
--    private static void runLinuxPreInstall() {
--        // @TODO Implement Linux Pre-Install
--    }
--    
--    public String getName() {
--        return MEDIA_NAME;
--    }
--}
-Index: org/jivesoftware/smackx/jingle/mediaimpl/jspeex/AudioMediaSession.java
-===================================================================
---- org/jivesoftware/smackx/jingle/mediaimpl/jspeex/AudioMediaSession.java	(revision 11644)
-+++ org/jivesoftware/smackx/jingle/mediaimpl/jspeex/AudioMediaSession.java	(working copy)
-@@ -1,245 +0,0 @@
--/**
-- * $RCSfile: AudioMediaSession.java,v $
-- * $Revision: 1.1 $
-- * $Date: 25/12/2006
-- * <p/>
-- * Copyright 2003-2006 Jive Software.
-- * <p/>
-- * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
-- * you may not use this file except in compliance with the License.
-- * You may obtain a copy of the License at
-- * <p/>
-- * http://www.apache.org/licenses/LICENSE-2.0
-- * <p/>
-- * Unless required by applicable law or agreed to in writing, software
-- * distributed under the License is distributed on an "AS IS" BASIS,
-- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- * See the License for the specific language governing permissions and
-- * limitations under the License.
-- */
--
--package org.jivesoftware.smackx.jingle.mediaimpl.jspeex;
--
--import java.io.IOException;
--import java.net.DatagramSocket;
--import java.net.InetAddress;
--import java.net.ServerSocket;
--import java.security.GeneralSecurityException;
--
--import javax.media.NoProcessorException;
--import javax.media.format.UnsupportedFormatException;
--import javax.media.rtp.rtcp.SenderReport;
--import javax.media.rtp.rtcp.SourceDescription;
--
--import mil.jfcom.cie.media.session.MediaSession;
--import mil.jfcom.cie.media.session.MediaSessionListener;
--import mil.jfcom.cie.media.session.StreamPlayer;
--import mil.jfcom.cie.media.srtp.packetizer.SpeexFormat;
--
--import org.jivesoftware.smackx.jingle.JingleSession;
--import org.jivesoftware.smackx.jingle.SmackLogger;
--import org.jivesoftware.smackx.jingle.media.JingleMediaSession;
--import org.jivesoftware.smackx.jingle.media.PayloadType;
--import org.jivesoftware.smackx.jingle.nat.TransportCandidate;
--
--/**
-- * This Class implements a complete JingleMediaSession.
-- * It sould be used to transmit and receive audio captured from the Mic.
-- * This Class should be automaticly controlled by JingleSession.
-- * But you could also use in any VOIP application.
-- * For better NAT Traversal support this implementation don't support only receive or only transmit.
-- * To receive you MUST transmit. So the only implemented and functionally methods are startTransmit() and stopTransmit()
-- *
-- * @author Thiago Camargo
-- */
--
--public class AudioMediaSession extends JingleMediaSession implements MediaSessionListener {
--
--	private static final SmackLogger LOGGER = SmackLogger.getLogger(AudioMediaSession.class);
--
--	private MediaSession mediaSession;
--
--    /**
--     * Create a Session using Speex Codec
--     *
--     * @param localhost    localHost
--     * @param localPort    localPort
--     * @param remoteHost   remoteHost
--     * @param remotePort   remotePort
--     * @param eventHandler eventHandler
--     * @param quality      quality
--     * @param secure       secure
--     * @param micOn        micOn
--     * @return MediaSession
--     * @throws NoProcessorException
--     * @throws UnsupportedFormatException
--     * @throws IOException
--     * @throws GeneralSecurityException
--     */
--    public static MediaSession createSession(String localhost, int localPort, String remoteHost, int remotePort, MediaSessionListener eventHandler, int quality, boolean secure, boolean micOn) throws NoProcessorException, UnsupportedFormatException, IOException, GeneralSecurityException {
--
--        SpeexFormat.setFramesPerPacket(1);
--        /**
--         * The master key. Hardcoded for now.
--         */
--        byte[] masterKey = new byte[]{(byte) 0xE1, (byte) 0xF9, 0x7A, 0x0D, 0x3E, 0x01, (byte) 0x8B, (byte) 0xE0, (byte) 0xD6, 0x4F, (byte) 0xA3, 0x2C, 0x06, (byte) 0xDE, 0x41, 0x39};
--
--        /**
--         * The master salt. Hardcoded for now.
--         */
--        byte[] masterSalt = new byte[]{0x0E, (byte) 0xC6, 0x75, (byte) 0xAD, 0x49, (byte) 0x8A, (byte) 0xFE, (byte) 0xEB, (byte) 0xB6, (byte) 0x96, 0x0B, 0x3A, (byte) 0xAB, (byte) 0xE6};
--
--        DatagramSocket[] localPorts = MediaSession.getLocalPorts(InetAddress.getByName(localhost), localPort);
--        MediaSession session = MediaSession.createInstance(remoteHost, remotePort, localPorts, quality, secure, masterKey, masterSalt);
--        session.setListener(eventHandler);
--
--        session.setSourceDescription(new SourceDescription[]{new SourceDescription(SourceDescription.SOURCE_DESC_NAME, "Superman", 1, false), new SourceDescription(SourceDescription.SOURCE_DESC_EMAIL, "cdcie.tester@je.jfcom.mil", 1, false), new SourceDescription(SourceDescription.SOURCE_DESC_LOC, InetAddress.getByName(localhost) + " Port " + session.getLocalDataPort(), 1, false), new SourceDescription(SourceDescription.SOURCE_DESC_TOOL, "JFCOM CDCIE Audio Chat", 1, false)});
--        return session;
--    }
--
--
--    /**
--     * Creates a org.jivesoftware.jingleaudio.jspeex.AudioMediaSession with defined payload type, remote and local candidates
--     *
--     * @param payloadType Payload of the jmf
--     * @param remote      the remote information. The candidate that the jmf will be sent to.
--     * @param local       the local information. The candidate that will receive the jmf
--     * @param locator     media locator
--     */
--    public AudioMediaSession(final PayloadType payloadType, final TransportCandidate remote,
--            final TransportCandidate local, String locator, JingleSession jingleSession) {
--        super(payloadType, remote, local, locator == null ? "dsound://" : locator, jingleSession);
--        initialize();
--    }
--
--    /**
--     * Initialize the Audio Channel to make it able to send and receive audio
--     */
--    public void initialize() {
--
--        String ip;
--        String localIp;
--        int localPort;
--        int remotePort;
--
--        if (this.getLocal().getSymmetric() != null) {
--            ip = this.getLocal().getIp();
--            localIp = this.getLocal().getLocalIp();
--            localPort = getFreePort();
--            remotePort = this.getLocal().getSymmetric().getPort();
--
--            LOGGER.debug(this.getLocal().getConnection() + " " + ip + ": " + localPort + "->" + remotePort);
--
--        }
--        else {
--            ip = this.getRemote().getIp();
--            localIp = this.getLocal().getLocalIp();
--            localPort = this.getLocal().getPort();
--            remotePort = this.getRemote().getPort();
--        }
--
--        try {
--            mediaSession = createSession(localIp, localPort, ip, remotePort, this, 2, false, true);
--        }
--        catch (NoProcessorException e) {
--            e.printStackTrace();
--        }
--        catch (UnsupportedFormatException e) {
--            e.printStackTrace();
--        }
--        catch (IOException e) {
--            e.printStackTrace();
--        }
--        catch (GeneralSecurityException e) {
--            e.printStackTrace();
--        }
--    }
--
--    /**
--     * Starts transmission and for NAT Traversal reasons start receiving also.
--     */
--    public void startTrasmit() {
--        try {
--            LOGGER.debug("start");
--            mediaSession.start(true);
--            this.mediaReceived("");
--        }
--        catch (IOException e) {
--            e.printStackTrace();
--        }
--    }
--
--    /**
--     * Set transmit activity. If the active is true, the instance should trasmit.
--     * If it is set to false, the instance should pause transmit.
--     *
--     * @param active active state
--     */
--    public void setTrasmit(boolean active) {
--        // Do nothing
--    }
--
--    /**
--     * For NAT Reasons this method does nothing. Use startTransmit() to start transmit and receive jmf
--     */
--    public void startReceive() {
--        // Do nothing
--    }
--
--    /**
--     * Stops transmission and for NAT Traversal reasons stop receiving also.
--     */
--    public void stopTrasmit() {
--        if (mediaSession != null)
--            mediaSession.close();
--    }
--
--    /**
--     * For NAT Reasons this method does nothing. Use startTransmit() to start transmit and receive jmf
--     */
--    public void stopReceive() {
--        // Do nothing
--    }
--
--    public void newStreamIdentified(StreamPlayer streamPlayer) {
--    }
--
--    public void senderReportReceived(SenderReport report) {
--    }
--
--    public void streamClosed(StreamPlayer stream, boolean timeout) {
--    }
--
--    /**
--     * Obtain a free port we can use.
--     *
--     * @return A free port number.
--     */
--    protected int getFreePort() {
--        ServerSocket ss;
--        int freePort = 0;
--
--        for (int i = 0; i < 10; i++) {
--            freePort = (int) (10000 + Math.round(Math.random() * 10000));
--            freePort = freePort % 2 == 0 ? freePort : freePort + 1;
--            try {
--                ss = new ServerSocket(freePort);
--                freePort = ss.getLocalPort();
--                ss.close();
--                return freePort;
--            }
--            catch (IOException e) {
--                e.printStackTrace();
--            }
--        }
--        try {
--            ss = new ServerSocket(0);
--            freePort = ss.getLocalPort();
--            ss.close();
--        }
--        catch (IOException e) {
--            e.printStackTrace();
--        }
--        return freePort;
--    }
--}
--- a/doc/asmack-beem/beem_patches/COPYING	Tue Jan 18 00:26:02 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--- a/doc/asmack-beem/beem_patches/README.txt	Tue Jan 18 00:26:02 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-This directory contains different patch to apply on asmack sources. These
-patches will allow us to build a custom flavour of asmack for Beem.  This
-directory must be copied in the patch directory of asmack in order to be used.
-Then build asmack the usual way.
-
-All the patches are released under the Apache License, Version 2.0
-You may obtain a copy of the License at
-http://www.apache.org.licenses/LICENCE-2.0
-
Binary file doc/asmack-beem/lib/jstun.jar has changed
Binary file libs/asmack-android-10-beem.jar has changed
Binary file libs/asmack-android-7-beem.jar has changed
Binary file libs/lcrypto-jdk16-146-20110415.jar has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/project.properties	Tue Jun 05 16:29:25 2012 +0200
@@ -0,0 +1,11 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system use,
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+
+# Project target.
+target=android-10
Binary file res/drawable/background.png has changed
Binary file res/drawable/logo_encryption.png has changed
--- a/res/layout/addcontact.xml	Tue Jan 18 00:26:02 2011 +0100
+++ b/res/layout/addcontact.xml	Tue Jun 05 16:29:25 2012 +0200
@@ -32,8 +32,7 @@
 		<View android:layout_width="fill_parent" android:layout_height="wrap_content"
 			android:layout_weight="1" android:layout_marginBottom="18dp" />
 		<Button android:id="@+id/addc_ok" android:layout_width="fill_parent"
-			android:layout_height="wrap_content" android:textStyle="bold"
-			android:text="@string/AddCOkButton" android:layout_gravity="bottom"
-			android:textSize="18sp" android:textColor="#333333" />
+			android:layout_height="wrap_content"
+			android:text="@string/AddCOkButton" android:layout_gravity="bottom" />
 	</LinearLayout>
 </ScrollView>
--- a/res/layout/changestatus.xml	Tue Jan 18 00:26:02 2011 +0100
+++ b/res/layout/changestatus.xml	Tue Jun 05 16:29:25 2012 +0200
@@ -5,8 +5,21 @@
 	<RelativeLayout android:orientation="vertical"
 		android:layout_width="fill_parent" android:layout_height="fill_parent"
 		android:padding="10dip">
+		<LinearLayout android:id="@+id/avatar_panel"
+		    android:orientation="vertical"
+		    android:gravity="center"
+		    android:layout_alignParentTop="true"
+		    android:layout_width="fill_parent" android:layout_height="fill_parent" >
+		    <TextView android:text="@string/my_avatar" style="@style/Label"
+			android:layout_width="wrap_content" android:layout_height="wrap_content" />
+
+		    <ImageButton android:id="@+id/avatarButton"
+			android:layout_width="120dip" android:layout_height="120dip"
+			android:scaleType="fitCenter" />
+		</LinearLayout>
 		<TextView android:id="@+id/ChangeStatusTypeLabel"
 			android:layout_width="fill_parent" android:layout_height="wrap_content"
+			android:layout_below="@id/avatar_panel"
 			android:text="@string/ChangeStatusType" style="@style/Label" />
 		<Spinner android:id="@+id/ChangeStatusSpinner"
 			android:layout_width="fill_parent" android:layout_height="wrap_content"
@@ -33,18 +46,14 @@
 			<Button android:id="@+id/ChangeStatusOk"
 				android:layout_width="fill_parent" android:layout_height="wrap_content"
 				android:layout_weight="1"
-				android:text="@string/UpdateButton" android:textStyle="bold"
-				android:textSize="18sp" android:textColor="#333333" />
+				android:text="@string/UpdateButton" />
 			<Button android:id="@+id/ChangeStatusClear"
 				android:layout_width="fill_parent" android:layout_height="wrap_content"
 				android:layout_weight="1"
-				android:text="@string/ClearButton"
-				android:textStyle="bold" android:textColor="#333333"
-				android:textSize="18sp" />
+				android:text="@string/ClearButton" />
 		</LinearLayout>
 		<Button android:id="@+id/OpenContactList" android:layout_width="fill_parent"
 			android:layout_height="wrap_content" android:text="@string/OpenContactList"
-			android:layout_below="@+id/ChangeStatusButtons" android:textStyle="bold" android:textColor="#333333"
-			android:textSize="18sp" />
+			android:layout_below="@+id/ChangeStatusButtons" />
 	</RelativeLayout>
 </ScrollView>
--- a/res/layout/chat.xml	Tue Jan 18 00:26:02 2011 +0100
+++ b/res/layout/chat.xml	Tue Jun 05 16:29:25 2012 +0200
@@ -28,6 +28,10 @@
 				android:layout_width="fill_parent" android:layout_height="wrap_content"
 				android:textStyle="italic" android:textSize="12sp"
 				android:focusable="true"/>
+			<TextView android:id="@+id/chat_contact_otr_state"
+				android:layout_width="fill_parent" android:layout_height="wrap_content"
+				android:textStyle="italic" android:textSize="12sp"
+				android:focusable="true"/>
 		</LinearLayout>
 	</LinearLayout>
 	<View android:layout_width="fill_parent" android:layout_height="2dp"
@@ -41,15 +45,16 @@
 		android:focusable="true"/>
 	<LinearLayout android:layout_width="fill_parent"
 		android:layout_height="wrap_content" android:orientation="horizontal"
+		android:gravity="center_vertical"
 		android:background="#222222" android:padding="8px">
 		<EditText android:id="@+id/chat_input" android:layout_width="0dip"
 			android:layout_height="fill_parent" android:layout_weight="1"
 			android:maxLines="5"
-			android:inputType="textShortMessage|textAutoCorrect|textMultiLine"
+			android:inputType="textShortMessage|textAutoCorrect|textMultiLine|textCapSentences"
 			android:imeOptions="actionSend" android:cursorVisible="true"
 			android:hint="@string/chat_input_default_value" />
 		<Button android:id="@+id/chat_send_message"
-			android:layout_width="wrap_content" android:layout_height="fill_parent"
+			android:layout_width="wrap_content" android:layout_height="wrap_content"
 			android:text="@string/chat_send_message" />
 	</LinearLayout>
 </LinearLayout>
--- a/res/layout/chat_compact.xml	Tue Jan 18 00:26:02 2011 +0100
+++ b/res/layout/chat_compact.xml	Tue Jun 05 16:29:25 2012 +0200
@@ -17,7 +17,7 @@
 		<EditText android:id="@+id/chat_input" android:layout_width="0dip"
 			android:layout_height="fill_parent" android:layout_weight="1"
 			android:maxLines="5"
-			android:inputType="textShortMessage|textAutoCorrect|textMultiLine"
+			android:inputType="textShortMessage|textAutoCorrect|textMultiLine|textCapSentences"
 			android:imeOptions="actionSend" android:cursorVisible="true"
 			android:hint="@string/chat_input_default_value" />
 		<Button android:id="@+id/chat_send_message"
--- a/res/layout/chat_msg_row_compact.xml	Tue Jan 18 00:26:02 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-	android:orientation="vertical" android:layout_width="fill_parent"
-	android:layout_height="wrap_content">
-	<TextView android:id="@+id/chatmessagedate"
-		android:layout_width="wrap_content" android:layout_height="wrap_content"
-		android:autoLink="none" android:layout_marginRight="4dp" />
-	<TextView android:id="@+id/chatmessagename"
-		android:layout_width="wrap_content" android:layout_height="wrap_content"
-		android:textSize="14sp" android:textColor="#FFFFFF" android:textStyle="bold"
-		android:layout_toRightOf="@id/chatmessagedate" android:layout_marginRight="4dp" />
-	<TextView android:id="@+id/chatmessagetext"
-		android:layout_width="wrap_content" android:layout_height="wrap_content"
-		android:layout_toRightOf="@id/chatmessagename" android:autoLink="all" />
-</RelativeLayout>
-
--- a/res/layout/create_account.xml	Tue Jan 18 00:26:02 2011 +0100
+++ b/res/layout/create_account.xml	Tue Jun 05 16:29:25 2012 +0200
@@ -12,6 +12,7 @@
 			android:inputType="textEmailAddress" android:imeOptions="actionNext"
 			android:layout_width="fill_parent" android:layout_height="wrap_content"
 			android:singleLine="true"
+			android:hint="beem@beem-project.com "
 			android:contentDescription="@string/create_account_username"/>
 		<TextView android:id="@+id/create_account_label_password"
 			android:layout_width="fill_parent" android:layout_height="wrap_content"
@@ -33,13 +34,11 @@
 			android:layout_weight="1" android:layout_marginBottom="18dp" />
 		<Button android:id="@+id/create_account_button"
 			android:layout_width="fill_parent" android:layout_height="wrap_content"
-			android:text="@string/button_create_account" android:textStyle="bold"
-			android:textColor="#333333" android:textSize="18sp"
+			android:text="@string/button_create_account"
 			android:layout_gravity="bottom" />
 		<Button android:id="@+id/create_account_login_button"
 			android:layout_width="fill_parent" android:layout_height="wrap_content"
-			android:text="@string/button_create_login_account" android:textStyle="bold"
-			android:textColor="#333333" android:textSize="18sp"
+			android:text="@string/button_create_login_account"
 			android:layout_gravity="bottom" />
 	</LinearLayout>
 </ScrollView>
--- a/res/layout/preferences.xml	Tue Jan 18 00:26:02 2011 +0100
+++ b/res/layout/preferences.xml	Tue Jun 05 16:29:25 2012 +0200
@@ -8,28 +8,39 @@
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
 	android:shouldDisableView="true" android:selectable="true">
 	<PreferenceCategory android:title="@string/general_preferences">
-		<CheckBoxPreference android:id="@+id/settings_key_history"
-			android:title="@string/history" android:defaultValue="false"
-			android:key="settings_key_history" />
 		<PreferenceScreen android:key="contact_list"
 			android:title="@string/contact_list_preferences" android:summary="@string/contact_list_preferences_sum">
 			<CheckBoxPreference android:title="@string/CLP_hidden_contact"
 				android:defaultValue="false" android:summary="@string/CLP_hidden_contact_sum"
-				android:key="settings_key_hidden_contact" />
+				android:key="show_offline_contacts" />
 			<CheckBoxPreference android:title="@string/CLP_hide_groups"
 				android:defaultValue="false" android:summary="@string/CLP_hide_groups_sum"
-				android:key="settings_key_hide_groups" />
+				android:key="hide_groups" />
 			<CheckBoxPreference android:title="@string/away_chk_title"
 				android:defaultValue="true" android:summary="@string/away_chk_sum"
-				android:key="settings_away_chk" />
-			<EditTextPreference android:dependency="settings_away_chk"
+				android:key="use_auto_away" />
+			<EditTextPreference android:dependency="use_auto_away"
 				android:singleLine="true" android:summary="@string/away_message_sum"
-				android:title="@string/away_message_title" android:key="settings_away_message"
+				android:title="@string/away_message_title" android:key="auto_away_msg"
 				android:hint="@string/away_message_hint" />
-			<CheckBoxPreference android:title="@string/settings_chat_compact"
-				android:defaultValue="false" android:summary="@string/settings_chat_compact_sum"
-				android:key="settings_chat_compact_key" />
 		</PreferenceScreen>
+		<PreferenceScreen android:key="chat"
+			android:title="@string/chat_preferences" android:summary="@string/chat_preferences_sum">
+			<PreferenceCategory android:title="@string/history_preferences">
+				<CheckBoxPreference android:id="@+id/chat_history"
+					android:title="@string/history" android:summary="@string/history_sum"
+					 android:defaultValue="false" android:key="settings_key_history" />
+				<EditTextPreference android:dependency="settings_key_history"
+					android:singleLine="true" android:title="@string/chat_history_path"
+					android:summary="@string/chat_history_path_sum" android:key="settings_chat_history_path"
+					android:hint="/Android/data/com.beem.project.beem/chat/" />
+			</PreferenceCategory>
+			<PreferenceCategory android:title="@string/chat_layout_option">
+				<CheckBoxPreference android:title="@string/settings_chat_compact"
+					android:defaultValue="false" android:summary="@string/settings_chat_compact_sum"
+					android:key="use_compact_chat_ui" />
+			</PreferenceCategory>
+			</PreferenceScreen>
 		<PreferenceScreen android:title="@string/notification_preferences">
 			<CheckBoxPreference android:title="@string/notification_enable_vibrate_title"
 				android:defaultValue="false" android:summary="@string/notification_enable_vibrate_sum"
@@ -49,10 +60,10 @@
 			android:title="@string/settings_account_password" android:key="account_password" />
 	</PreferenceCategory>
 	<PreferenceCategory android:title="@string/user_preferences_advanced">
-		<EditTextPreference android:key="settings_key_resource"
+		<EditTextPreference android:key="connection_resource"
 			android:title="@string/SettingsResourceTitle" android:summary="@string/SettingsResourceSummary"
 			android:defaultValue="Beem" />
-		<EditTextPreference android:key="settings_key_priority"
+		<EditTextPreference android:key="connection_priority"
 			android:title="@string/SettingsPriorityTitle" android:summary="@string/SettingsPrioritySummary"
 			android:numeric="signed" android:defaultValue="0" />
 	</PreferenceCategory>
--- a/res/menu/chat.xml	Tue Jan 18 00:26:02 2011 +0100
+++ b/res/menu/chat.xml	Tue Jun 05 16:29:25 2012 +0200
@@ -7,4 +7,15 @@
 	</group>
 	<item android:id="@+id/chat_menu_close_chat" android:visible="true"
 		android:title="@string/chat_menu_close_chat" android:icon="@drawable/ic_menu_end_conversation" />
+	<item android:id="@+id/chat_menu_otr_submenu" android:visible="true"
+		android:title="@string/chat_menu_otr_submenu" android:icon="@drawable/logo_encryption">
+		<menu>
+			<item android:id="@+id/chat_menu_start_otr_session"
+				android:visible="true" android:title="@string/chat_menu_start_otr_session" />
+			<item android:id="@+id/chat_menu_stop_otr_session"
+				android:visible="true" android:title="@string/chat_menu_stop_otr_session" />
+			<item android:id="@+id/chat_menu_otr_verify_key" android:visible="true"
+				android:title="@string/chat_menu_otr_verify_key" />
+		</menu>
+	</item>
 </menu>
--- a/res/values-de/strings.xml	Tue Jan 18 00:26:02 2011 +0100
+++ b/res/values-de/strings.xml	Tue Jun 05 16:29:25 2012 +0200
@@ -1,298 +1,353 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-	<!-- Generic terms -->
-	<string name="app_name">Beem</string>
-	<string name="OkButton">Ok</string>
-	<string name="ClearButton">Löschen</string>
-	<string name="CancelButton">Abbrechen</string>
-	<string name="AcceptButton">Authorisieren</string>
-	<string name="RefuseButton">Ablehnen</string>
-	<string name="Password">Passwort</string>
-
-	<!--  Beem class -->
-	<string name="BeemJabberID">Jabber ID</string>
+<!-- Generic terms -->
+<string name="app_name">Beem</string>
+<string name="OkButton">Ok</string>
+<string name="ClearButton">Löschen</string>
+<string name="CancelButton">Abbrechen</string>
+<string name="AcceptButton">Authorisieren</string>
+<string name="RefuseButton">Ablehnen</string>
+<string name="JabberID">Jabber ID</string>
+<string name="Password">Passwort</string>
+<string name="Continue">Fortfahren</string>
 
-	<!--  BeemApplication class -->
-	<string name="BeemApplicationConnect">Verbinden...</string>
-
-	<!--  BeemService class -->
-	<string name="BeemServiceDescription">Benutze Beem Service</string>
-	<string name="BeemServiceCreated">Beem Service erstellt</string>
-	<string name="BeemServiceDestroyed">Beem Service verworfen</string>
-
-	<!--  ContactDialog class -->
-	<string name="CDChat">Chatten</string>
-	<string name="CDCall">Anrufen</string>
-	<string name="CDInfos">Kontakt bearbeiten</string>
+<!--  AccountConfigure class -->
+<string name="AccountConfigureManualConfiguration">Manuelle Konfiguration</string>
 
-	<!-- AddContact class -->
-	<string name="AddCActTitle">Beem - Kontakt hinzufügen</string>
+<!--  Beem class -->
+<string name="BeemJabberID">Jabber ID</string>
 
-	<string name="AddCLogin">Benutzername</string>
-	<string name="AddCAlias">Alias</string>
-	<string name="AddCGroup">Gruppe</string>
-	<string name="AddCOkButton">Hinzufügen</string>
-	<string name="AddCContactAdded">Kontakt hinzugefügt</string>
-	<string name="AddCContactAddedError">Fehler, Benutzer nicht hinzugefügt</string>
-	<string name="AddCContactAddedLoginError">Fehler bei der Anmeldung</string>
-	<string name="AddCBadForm">Mangelhafte Form</string>
-	<string name="AddCContactAlready">Kontakt existiert bereits</string>
+<!--  BeemApplication class -->
+<string name="BeemApplicationConnect">Verbinden...</string>
 
-	<!--  ChangeStatus class -->
-	<string name="ChangeStatusActTitle">Beem - Meinen Status ändern</string>
-	<string name="ChangeStatusType">Mein Status</string>
-	<string name="ChangeStatusMessage">Meine persönliche Nachricht</string>
-	<string name="OpenContactList">Kontaktliste öffnen</string>
+<!--  BeemService class -->
+<string name="BeemServiceDescription">Benutze Beem Service</string>
+<string name="BeemServiceCreated">Beem Service erstellt</string>
+<string name="BeemServiceDestroyed">Beem Service verworfen</string>
 
-	<string name="MenuAddContact">Kontakt hinzufügen</string>
-	<string name="MenuAccountAbout">Beem Project</string>
-	<string name="MenuAccountCreate">Konto erstellen</string>
-	<string name="MenuConnection">Konto bearbeiten</string>
-	<string name="ChangeStatusOk">Aktualisiere Status</string>
-	<string name="ChangeStatusNoChange">Nichts zu ändern</string>
+<!--  ContactDialog class -->
+<string name="CDChat">Chatten</string>
+<string name="CDCall">Anrufen</string>
+<string name="CDInfos">Kontakt bearbeiten</string>
 
-	<!-- Settings class -->
-	<string name="SettingsText">Benutzername bearbeiten</string>
-	<string name="SettingsPassword">Passwort bearbeiten</string>
-	<string name="SettingsProxy">Proxy</string>
-	<string name="SettingsProxyProxy">Benutze einen Proxyserver</string>
-	<string name="SettingsProxySummary">Anmeldung über einen Proxyserver</string>
-	<string name="SettingsProxyType">Protokoll</string>
-	<string name="SettingsProxyTypeSummary">Art des Proxyservers wählen</string>
-	<string name="SettingsProxyServer">Adresse des Proxyservers bearbeiten</string>
-	<string name="SettingsProxyPort">Port des Proxyservers bearbeiten</string>
-	<string name="SettingsProxyUser">Optional, erlaubt das Authentifizieren mit dem Proxyserver</string>
-	<string name="SettingsProxyPassword">Optional, erlaubt das Authentifizieren mit dem Proxyserver</string>
-	<string name="SettingsAdvanced">Erweitert</string>
-	<string name="SettingsAdvancedOptions">Spezifische Server Optionen</string>
-	<string name="SettingsAdvancedRecoDelay">Bearbeite die Verzögerung bei der Wiederverbindung</string>
-	<string name="SettingsAdvancedSpecOpt">Aktivieren, um einen spezifischen Server für die Verbindung zu benutzen</string>
-	<string name="SettingsAdvancedAddOpt">Adresse des Servers bearbeiten</string>
-	<string name="SettingsAdvancedPortOpt">Port des Servers bearbeiten</string>
-	<string name="SettingsResourceTitle">Ressource</string>
-	<string name="SettingsPriorityTitle">Priorität</string>
-	<string name="SettingsResourceSummary">XMPP Ressource des Clients einstellen</string>
-	<string name="SettingsPrioritySummary">Priorität des Clients einstellen</string>
-	<string name="contact_list_preferences">Kontaktliste</string>
-	<string name="contact_list_preferences_sum">Anzeigeoptionen der Kontaktliste</string>
-	<string name="CLP_hide_groups">Gruppen verstecken</string>
-	<string name="CLP_hide_groups_sum">Aktivieren, um Gruppen zu verstecken</string>
-	<string name="CLP_hidden_contact">Kontakte verstecken</string>
-	<string name="CLP_hidden_contact_sum">Aktivieren, um Kontakte zu verstecken, die offline sind</string>
-	<string name="settings_account_username">Benutzername</string>
-	<string name="login_username_info_default">beem@beem-project.com</string>
-	<string name="settings_account_password">Passwort</string>
-	<string name="settings_account_server">Server</string>
-	<string name="settings_account_port">Port</string>
-	<string name="settings_advanced_service_behaviour">Verhalten des Dienstes</string>
-	<string name="settings_advanced_sum">Erweiterte Einstellungen für fortgeschrittene Benutzer</string>
-	<string name="settings_xmpp_server">Adresse</string>
-	<string name="comments_xmpp_server">example.com</string>
-	<string name="settings_xmpp_port">Port</string>
-	<string name="settings_xmpp_use_tls">Verwende SSL/TLS</string>
-	<string name="settings_reco_delay">Verzögerung bei der Wiederverbindung</string>
-	<string name="comments_xmpp_port">Standard: 5222</string>
-	<string name="settings_proxy_sum">Einstellungen für das Benutzen eines Proxyservers</string>
-	<string name="settings_proxy_use">Benutze einen Proxyserver</string>
-	<string name="settings_proxy_type_prompt">Art des Proxyservers wählen</string>
-	<string name="settings_proxy_server">Server</string>
-	<string name="settings_proxy_port">Port</string>
-	<string name="comments_proxy_port">Standard: 1080</string>
-	<string name="settings_proxy_username">Benutzername</string>
-	<string name="settings_proxy_password">Passwort</string>
-	<string name="away_chk_title">Aktiviere automatische Abwesenheit</string>
-	<string name="away_chk_sum">Status auf Abwesend wenn Bildschirm ausgeschaltet ist</string>
-	<string name="away_message_title">Abwesenheitsnachricht</string>
-	<string name="away_message_sum">Angezeigte Abwesenheitsnachricht</string>
-	<string name="away_message_hint">Ich bin abwesend, mein Telefonbildschirm ist ausgeschaltet</string>
-	<string name="notification_preferences">Benachrichtigungseinstellungen</string>
-	<string name="notification_enable_vibrate_title">Vibrieren</string>
-	<string name="notification_enable_vibrate_sum">Vibriere bei eingehenden Nachrichten</string>
-	<string name="notification_snd_title">Nachrichtensignalton</string>
-	<string name="notification_snd_sum">Lege den Signalton für eingehende Nachrichten fest</string>
+<!-- AddContact class -->
+<string name="AddCActTitle">Beem - Kontakt hinzufügen</string>
+
+<string name="AddCLogin">Benutzername</string>
+<string name="AddCAlias">Alias</string>
+<string name="AddCGroup">Gruppe</string>
+<string name="AddCOkButton">Hinzufügen</string>
+<string name="AddCContactAdded">Kontakt hinzugefügt</string>
+<string name="AddCContactAddedError">Fehler, Benutzer nicht hinzugefügt</string>
+<string name="AddCContactAddedLoginError">Fehler bei der Anmeldung</string>
+<string name="AddCBadForm">Mangelhafte Form</string>
+<string name="AddCContactAlready">Kontakt existiert bereits</string>
+
+<!--  ChangeStatus class -->
+<string name="ChangeStatusActTitle">Beem - Meinen Status ändern</string>
+<string name="ChangeStatusType">Mein Status</string>
+<string name="ChangeStatusMessage">Meine persönliche Nachricht</string>
+<string name="OpenContactList">Kontaktliste öffnen</string>
+
+<string name="MenuAddContact">Kontakt hinzufügen</string>
+<string name="MenuAccountAbout">Beem Project</string>
+<string name="MenuAccountCreate">Konto erstellen</string>
+<string name="MenuConnection">Konto bearbeiten</string>
+<string name="ChangeStatusOk">Aktualisiere Status</string>
+<string name="ChangeStatusNoChange">Nichts zu ändern</string>
+<string name="my_avatar">Mein Avatar</string>
+<string name="select_avatar">Wähle Avatar</string>
+<string name="take_photo">Foto machen</string>
+<string name="pick_photo">Bild auswählen</string>
+<string name="delete_avatar">Kein Avatar</string>
+<string name="photoPickerNotFoundText">Fotoauswahl nicht gefunden</string>
 
 
-	<!-- Subscription class -->
-	<string name="SubscriptAccept">Zustimmung angenommen</string>
-	<string name="SubscriptError">Zustimmungsfehler</string>
-	<string name="SubscriptRefused">Zustimmung abgelehnt</string>
-	<string name="SubscriptText">%s will dich zu seiner/ihrer Kontaktliste hinzufügen. Willst du ihn/sie authorisieren ?</string>
-	<string name="SubscriptTitle">Kontakt authorisieren ?</string>
-
-	<!--  BeemChatManager -->
-	<string name="BeemChatManagerNewMessage">Du hast eine neue Nachricht</string>
-
-	<!--  BeemBroadcastReceiver class -->
-	<string name="BeemBroadcastReceiverDisconnect">BEEM: Die Verbindung wurde getrennt</string>
-
-	<!--  XmppConnectionAdapter class -->
-	<string name="AcceptContactRequest">%s hat dich gerade zu seiner/ihrer Kontaktliste hinzugefügt.</string>
-	<string name="AcceptContactRequestFrom">Authorisiere %s dich zu kontaktieren.</string>
-
-	<!-- Activities -->
-	<string name="login_tag">Beem - Anmeldung</string>
-	<string name="edit_settings_name">Beem - Einstellungen</string>
-	<string name="edit_settings_tag">Beem - Einstellungen bearbeiten</string>
-	<string name="create_account_name">Beem - Konto erstellen</string>
-	<string name="create_account_tag">Beem - Konto erstellen</string>
-	<string name="contact_list_name">Beem - Kontakte</string>
-	<string name="contact_list_tag">Beem - Kontaktliste</string>
-	<string name="user_info_name">Beem - Benutzerinformation</string>
+<!-- Settings class -->
+<string name="SettingsText">Benutzername bearbeiten</string>
+<string name="SettingsPassword">Passwort bearbeiten</string>
+<string name="SettingsProxy">Proxy</string>
+<string name="SettingsProxyProxy">Benutze einen Proxyserver</string>
+<string name="SettingsProxySummary">Anmeldung über einen Proxyserver</string>
+<string name="SettingsProxyType">Protokoll</string>
+<string name="SettingsProxyTypeSummary">Art des Proxyservers wählen</string>
+<string name="SettingsProxyServer">Adresse des Proxyservers bearbeiten</string>
+<string name="SettingsProxyPort">Port des Proxyservers bearbeiten</string>
+<string name="SettingsProxyUser">Optional, erlaubt das Authentifizieren mit dem Proxyserver</string>
+<string name="SettingsProxyPassword">Optional, erlaubt das Authentifizieren mit dem Proxyserver</string>
+<string name="SettingsAdvanced">Erweitert</string>
+<string name="SettingsAdvancedOptions">Spezifische Server Optionen</string>
+<string name="SettingsAdvancedRecoDelay">Bearbeite die Verzögerung bei der Wiederverbindung</string>
+<string name="SettingsAdvancedSpecOpt">Aktivieren, um einen spezifischen Server für die Verbindung zu benutzen</string>
+<string name="SettingsAdvancedAddOpt">Adresse des Servers bearbeiten</string>
+<string name="SettingsAdvancedPortOpt">Port des Servers bearbeiten</string>
+<string name="SettingsResourceTitle">Ressource</string>
+<string name="SettingsPriorityTitle">Priorität</string>
+<string name="SettingsResourceSummary">XMPP Ressource des Clients einstellen</string>
+<string name="SettingsPrioritySummary">Priorität des Clients einstellen</string>
+<string name="contact_list_preferences">Kontaktliste</string>
+<string name="contact_list_preferences_sum">A set of display options for your buddy list
+</string>
+<string name="CLP_hide_groups">Gruppen ausblenden</string>
+<string name="CLP_hide_groups_sum">Aktivieren, um Gruppen auszublenden</string>
+<string name="CLP_hidden_contact">Kontakte ausblenden</string>
+<string name="CLP_hidden_contact_sum">Check this option to hide unconnected buddies
+</string>
+<string name="settings_account_username">Benutzername (JID)</string>
+<string name="login_username_info_default">beem@beem-project.com</string>
+<string name="settings_account_password">Passwort</string>
+<string name="settings_account_server">Server</string>
+<string name="settings_account_port">Port</string>
+<string name="settings_advanced_service_behaviour">Verhalten des Dienstes</string>
+<string name="settings_advanced_sum">Erweiterte Einstellungen für fortgeschrittene Benutzer</string>
+<string name="settings_xmpp_server">Adresse</string>
+<string name="comments_xmpp_server">example.com</string>
+<string name="settings_xmpp_port">Port</string>
+<string name="settings_xmpp_use_tls">Verwende SSL/TLS</string>
+<string name="settings_reco_delay">Verzögerung bei der Wiederverbindung</string>
+<string name="comments_xmpp_port">Standard: 5222</string>
+<string name="settings_proxy_sum">Einstellungen für das Benutzen eines Proxyservers</string>
+<string name="settings_proxy_use">Benutze einen Proxyserver</string>
+<string name="settings_proxy_type_prompt">Art des Proxyservers wählen</string>
+<string name="settings_proxy_server">Server</string>
+<string name="settings_proxy_port">Port</string>
+<string name="comments_proxy_port">Standard: 1080</string>
+<string name="settings_proxy_username">Benutzername</string>
+<string name="settings_proxy_password">Passwort</string>
+<string name="away_chk_title">Aktiviere automatische Abwesenheit</string>
+<string name="away_chk_sum">Status auf Abwesend wenn Bildschirm aus</string>
+<string name="away_message_title">Abwesenheitsnachricht</string>
+<string name="away_message_sum">Angezeigte Abwesenheitsnachricht</string>
+<string name="away_message_hint">Ich bin abwesend, mein Telefonbildschirm ist aus</string>
+<string name="notification_preferences">Benachrichtigungseinstellungen</string>
+<string name="notification_enable_vibrate_title">Aktiviere Vibration</string>
+<string name="notification_enable_vibrate_sum">Aktiviere Vibration für eingehende Nachrichten</string>
+<string name="notification_snd_title">Nachrichtensignalton</string>
+<string name="notification_snd_sum">Lege den Signalton für eingehende Nachrichten fest</string>
+<string name="settings_chat_compact">Kompakter Chat</string>
+<string name="settings_chat_compact_sum">Benutze kompakte Chatfenster</string>
+<string name="history">Chronik</string>
+<string name="history_sum">Aktivieren, um Unterhaltungen auf die Speicherkarte zu speichern</string>
+<string name="history_mount">Die Speicherkarte muss eingehängt und beschreibbar sein, um die Chronik zu aktivieren</string>
+<string name="history_on_off">Aktiviere Nachrichtenchronik</string>
+<string name="chat_preferences">Chat</string>
+<string name="chat_preferences_sum">Chronik, Layout Größe ...</string>
+<string name="chat_history_path">Chronik Pfad</string>
+<string name="chat_history_path_sum">Unterhaltungen werden in einem Ordner auf der Speicherkarte gespeichert</string>
+<string name="settings_smack_debug">Aktiviere XMPP Debug Modus</string>
+<string name="settings_full_jid_login">Benutze meine vollständige JID als Benutzername</string>
+<string name="settings_full_jid_login_sum">Wird von einigen Servern, z.b. Google Talk, vorausgesetzt</string>
 
-	<!-- Buttons -->
-	<string name="button_create_account">Dieses Konto erstellen</string>
-	<string name="button_create_login_account">Dieses Konto erstellen und benutzen</string>
+<!-- Subscription class -->
+<string name="SubscriptAccept">Zustimmung angenommen</string>
+<string name="SubscriptError">Zustimmungsfehler</string>
+<string name="SubscriptRefused">Zustimmung abgelehnt</string>
+<string name="SubscriptText">%s will dich zu seiner/ihrer Kontaktliste hinzufügen. Willst du ihn/sie authorisieren?</string>
+<string name="SubscriptTitle">Kontakt authorisieren?</string>
+
+<!--  BeemChatManager -->
+<string name="BeemChatManagerNewMessage">Du hast eine neue Nachricht</string>
+
+<!--  BeemBroadcastReceiver class -->
+<string name="BeemBroadcastReceiverDisconnect">BEEM: Die Verbindung wurde getrennt</string>
+
+<!--  XmppConnectionAdapter class -->
+<string name="AcceptContactRequest">%s hat dich gerade zu seiner/ihrer Kontaktliste hinzugefügt.</string>
+<string name="AcceptContactRequestFrom">Authorisiere %s dich zu kontaktieren.</string>
+
+<!-- Activities -->
+<string name="login_tag">Beem - Anmeldung</string>
+<string name="edit_settings_name">Beem - Einstellungen</string>
+<string name="edit_settings_tag">Beem - Einstellungen bearbeiten</string>
+<string name="create_account_name">Beem - Konto erstellen</string>
+<string name="create_account_tag">Beem - Konto erstellen</string>
+<string name="contact_list_name">Beem - Kontakte</string>
+<string name="contact_list_tag">Beem - Kontaktliste</string>
+<string name="user_info_name">Beem - Benutzerinformation</string>
+
+<!-- Buttons -->
+<string name="button_create_account">Dieses Konto erstellen</string>
+<string name="button_create_login_account">Dieses Konto erstellen und benutzen</string>
 
-	<!-- LogAs Activity -->
-	<string name="login_username">Benutzername</string>
-	<string name="login_password">Passwort</string>
-	<string name="login_error_dialog_title">Anmeldung - Fehler</string>
-	<string name="login_close_dialog_button">Schließen</string>
-	<string name="login_menu_create_account">Konto erstellen</string>
-	<string name="login_menu_settings">Einstellungen</string>
-	<string name="login_menu_about">Über</string>
-	<string name="login_about_title">Beem %s - Über</string>
-	<string name="login_about_msg">Beem ist ein EPITECH Innovative Project. Besuche uns auf	http://www.beem-project.com !</string>
-	<string name="login_about_button">Schließen</string>
-	<string name="login_settings_button">Einstellungen</string>
-	<string name="login_login_button">Anmelden</string>
-	<string name="login_login_progress">Verbinden. Bitte warten...</string>
-	<string name="login_error_msg">Leider trat ein Fehler auf.\n\nFehler Detail:\n%s</string>
-	<string name="login_menu_login">Anmelden</string>
-	<string name="login_no_connectivity">Keine Internetverbindung gefunden</string>
-	<string name="login_start_msg">Konfiguration der Einstellungen im Menü</string>
+<!-- LogAs Activity -->
+<string name="login_username">Benutzername</string>
+<string name="login_password">Passwort</string>
+<string name="login_error_dialog_title">Anmeldung - Fehler</string>
+<string name="login_close_dialog_button">Schließen</string>
+<string name="login_menu_create_account">Konto erstellen</string>
+<string name="login_menu_settings">Einstellungen</string>
+<string name="login_menu_about">Über</string>
+<string name="login_about_title">Beem %s - Über</string>
+<string name="login_about_msg">
+Beem is an EPITECH Innovative Project. Visit us at
+http://www.beem-project.com !
+</string>
+<string name="login_about_button">Schließen</string>
+<string name="login_settings_button">Einstellungen</string>
+<string name="login_login_button">Anmelden</string>
+<string name="login_login_progress">Verbinden. Bitte warten...</string>
+<string name="login_error_msg">Unfortunately, an error occured.\n\nError
+detail:\n%s</string>
+<string name="login_menu_login">Anmelden</string>
+<string name="login_no_connectivity">Keine Internetverbindung gefunden</string>
+<string name="login_start_msg">Konfiguration der Einstellungen im Menü</string>
 
-	<!-- LoginAnim activity -->
-	<string name="loganim_connecting">Verbinden ...</string>
-	<string name="loganim_authenticating">Authentifizieren ...</string>
-	<string name="loganim_login_success">Erfolgreich angemeldet</string>
-	<string name="loganim_login_failed">Anmeldung gescheitert</string>
+<!-- LoginAnim activity -->
+<string name="loganim_connecting">Verbinden...</string>
+<string name="loganim_authenticating">Authentifizieren...</string>
+<string name="loganim_login_success">Erfolgreich angemeldet</string>
+<string name="loganim_login_failed">Anmeldung gescheitert</string>
 
-	<!-- EditSettings Activity -->
-	<string name="settings_menu_create_account">Konto erstellen</string>
-	<string name="settings_menu_privacy_lists">Meine Privatsphärenliste verwalten</string>
-	<string name="settings_saved_ok">Die Einstellungen wurden erfolgreich gespeichert.</string>
+<!-- EditSettings Activity -->
+<string name="settings_menu_create_account">Konto erstellen</string>
+<string name="settings_menu_privacy_lists">Meine Privatsphärenliste verwalten</string>
+<string name="settings_saved_ok">Die Einstellungen wurden erfolgreich gespeichert.</string>
 
 
 
-	<!-- EditSettings Activity Categories -->
-	<string name="general_preferences">Allgemeine Einstellungen</string>
-	<string name="user_preferences">Benutzereinstellungen (notwendig)</string>
-	<string name="user_preferences_advanced">Zusätzliche Benutzereinstellungen (optional)</string>
-	<string name="network_preferences">Netzwerk Einstellungen</string>
-	<string name="proxy_proxy_settings">Proxy Einstellungen</string>
-	<string name="proxy_user_settings">Proxy Einstellungen</string>
+<!-- EditSettings Activity Categories -->
+<string name="general_preferences">Allgemeine Einstellungen</string>
+<string name="user_preferences">Benutzereinstellungen (notwendig)</string>
+<string name="user_preferences_advanced">Zusätzliche Benutzereinstellungen (optional)</string>
+<string name="network_preferences">Netzwerk Einstellungen</string>
+<string name="proxy_proxy_settings">Proxy Einstellungen</string>
+<string name="proxy_user_settings">Proxy Einstellungen</string>
+<string name="history_preferences">Chronik</string>
+<string name="chat_layout_option">Chat Ansicht</string>
 
-	<!-- EditSettings Activity Tabs -->
-	<string name="settings_tab_tag_account">edit_settings_tab_account</string>
-	<string name="settings_tab_label_account">Konto</string>
-	<string name="settings_tab_tag_xmpp">edit_settings_tab_xmpp</string>
-	<string name="settings_tab_label_xmpp">XMPP</string>
-	<string name="settings_tab_tag_proxy">edit_settings_tab_proxy</string>
-	<string name="settings_tab_label_proxy">Proxy</string>
+
+<!-- EditSettings Activity Tabs -->
+<string name="settings_tab_tag_account">edit_settings_tab_account</string>
+<string name="settings_tab_label_account">Konto</string>
+<string name="settings_tab_tag_xmpp">edit_settings_tab_xmpp</string>
+<string name="settings_tab_label_xmpp">XMPP</string>
+<string name="settings_tab_tag_proxy">edit_settings_tab_proxy</string>
+<string name="settings_tab_label_proxy">Proxy</string>
 
 
-	<!-- wizard activities -->
-	<string name="account_wizard_text1"><b>Willkommen bei BEEM.</b>\n\nDu hast noch kein XMPPP (Jabber) Konto konfiguriert.\nWähle eine der folgenden Optionen :</string>
-	<string name="account_wizard_configure_text"><b>Bitte gib die Daten deines bestehenden Kontos ein</b></string>
-	<string name="account_wizard_configure_account">Ich habe bereits ein Konto, das ich benutzen möchte</string>
-	<string name="account_wizard_create_account">Ich möchte ein neues Konto registrieren</string>
+<!-- wizard activities -->
+<string name="account_wizard_text1"><b>Willkommen bei BEEM.</b>nnDu hast noch kein XMPP (Jabber) Konto konfiguriert. Wähle eine der folgenden Optionen:</string>
+<string name="account_wizard_configure_text"><b>Bitte trage die Zugangsdaten für dein vorhandenes Konto ein</b></string>
+<string name="account_wizard_configure_account">Ich habe bereits ein Konto, das ich benutzen will</string>
+<string name="account_wizard_create_account">Ich möchte ein neues Konto registrieren</string>
 
-	<!-- Create an account Activity -->
-	<string name="create_account_instr_dialog_title">Konto erstellen - Anweisungen</string>
-	<string name="create_account_err_dialog_title">Konto erstellen - Fehler</string>
-	<string name="create_account_err_dialog_settings_button">Einstellungen ändern</string>
-	<string name="create_account_close_dialog_button">Schließen</string>
-	<string name="create_account_successfull_after">Das Konto %s wurde erfolgreich erstellt</string>
-	<string name="create_account_err_username">Mangelhafte Jabber ID</string>
-	<string name="create_account_err_passwords">Passwörter stimmen nicht überein.</string>
-	<string name="create_account_username">Benutzername</string>
-	<string name="create_account_password">Passwort</string>
-	<string name="create_account_confirm_password">Passwort bestätigen</string>
+<!-- Create an account Activity -->
+<string name="create_account_instr_dialog_title">Konto erstellen - Anweisungen</string>
+<string name="create_account_err_dialog_title">Konto erstellen - Fehler</string>
+<string name="create_account_err_dialog_settings_button">Einstellungen ändern</string>
+<string name="create_account_close_dialog_button">Schließen</string>
+<string name="create_account_successfull_after">Das Konto %s wurde erfolgreich erstellt</string>
+<string name="create_account_err_username">Mangelhafte Jabber ID</string>
+<string name="create_account_err_passwords">Passwörter stimmen nicht überein.</string>
+<string name="create_account_username">Benutzername</string>
+<string name="create_account_password">Passwort</string>
+<string name="create_account_confirm_password">Passwort bestätigen</string>
 
-	<!-- ContactList Activity  -->
-	<string name="contact_list_menu_add_contact">Kontakt hinzufügen</string>
-	<string name="contact_list_menu_status">Status ändern</string>
-	<string name="contact_list_menu_settings">Einstellungen</string>
-	<string name="contact_list_menu_disconnect">Verbindung trennen</string>
-	<string name="contact_list_all_contact">Alle Kontakte</string>
-	<string name="contact_list_no_group">Keine Gruppe</string>
+<!-- ContactList Activity  -->
+<string name="contact_list_menu_add_contact">Kontakt hinzufügen</string>
+<string name="contact_list_menu_status">Status ändern</string>
+<string name="contact_list_menu_settings">Einstellungen</string>
+<string name="contact_list_menu_disconnect">Verbindung trennen</string>
+<string name="contact_list_all_contact">Alle Kontakte</string>
+<string name="contact_list_no_group">Keine Gruppe</string>
 
-	<!-- UserInfo dialog -->
-	<string name="userinfo_label_alias">Alias</string>
-	<string name="userinfo_label_chg_group">Gruppen verwalten</string>
-	<string name="userinfo_label_re_subscription">Einladung erneut senden</string>
-	<string name="userinfo_label_block">Blockieren</string>
-	<string name="userinfo_label_delete">Löschen</string>
-	<string name="userinfo_resend">Zustimmung erneut senden</string>
-	<string name="userinfo_sure2delete">Bist du sicher, dass du diesen Kontakt löschen willst ?</string>
-	<string name="userinfo_yes">Ja</string>
-	<string name="userinfo_no">Nein</string>
-	<string name="userinfo_sureresend">Bist du sicher, dass du die Einladung erneut senden willst ?</string>
+<!-- UserInfo dialog -->
+<string name="userinfo_label_alias">Alias</string>
+<string name="userinfo_label_chg_group">Gruppen verwalten</string>
+<string name="userinfo_label_re_subscription">Einladung erneut senden</string>
+<string name="userinfo_label_block">Sperren</string>
+<string name="userinfo_label_delete">Löschen</string>
+<string name="userinfo_resend">Zustimmung erneut senden</string>
+<string name="userinfo_sure2delete">Are you sure you want to delete this contact?
+</string>
+<string name="userinfo_yes">Ja</string>
+<string name="userinfo_no">Nein</string>
+<string name="userinfo_sureresend">Bist du sicher, dass du die Einladung erneut senden willst?</string>
 
-	<string name="chat_name">Beem - Chat</string>
-	<string name="chat_input_default_value">Nachricht eingeben</string>
-	<string name="chat_self">Ich</string>
-	<string name="chat_error">Fehler</string>
-	<string name="chat_send_message">Senden</string>
-	<string name="chat_menu_contacts_list">Kontaktliste</string>
-	<string name="chat_menu_change_chat">Chat wechseln</string>
-	<string name="chat_dialog_change_chat_title">Offene Chats</string>
-	<string name="chat_menu_close_chat">Diesen Chat schließen</string>
-	<string name="chat_no_more_chats">Keine weiteren aktiven Chats</string>
-	<string name="chat_state_composing">schreibt gerade</string>
-	<string name="chat_state_gone">hat die Unterhaltung verlassen</string>
-	<string name="chat_state_active">verfolgt die Unterhaltung</string>
-	<string name="chat_state_inactive">macht etwas anderes</string>
+<string name="chat_name">Beem - Chat</string>
+<string name="chat_input_default_value">Nachricht eingeben</string>
+<string name="chat_self">Ich</string>
+<string name="chat_error">Fehler</string>
+<string name="chat_send_message">Senden</string>
+<string name="chat_menu_contacts_list">Kontaktliste</string>
+<string name="chat_menu_change_chat">Chat wechseln</string>
+<string name="chat_menu_start_otr_session">OTR Sitzung starten</string>
+<string name="chat_menu_stop_otr_session">OTR Sitzung beenden</string>
+<string name="chat_menu_otr_verify_key">OTR Schlüssel authentifizieren</string>
+<string name="chat_menu_otr_submenu">OTR Optionen</string>
+<string name="chat_dialog_change_chat_title">Offene Chats</string>
+<string name="chat_menu_close_chat">Diesen Chat schließen</string>
+<string name="chat_no_more_chats">Keine weiteren aktiven Chats</string>
+<string name="chat_state_composing">schreibt gerade</string>
+<string name="chat_state_gone">hat die Unterhaltung verlassen</string>
+<string name="chat_state_active">verfolgt die Unterhaltung</string>
+<string name="chat_state_inactive">macht etwas anderes</string>
+<string name="chat_otrstate_plaintext">KLARTEXT</string>
+<string name="chat_otrstate_encrypted">VERSCHLÜSSELT</string>
+<string name="chat_otrstate_finished">BEENDET</string>
+<string name="chat_otrstate_authenticated">AUTHENTIFIZIERT</string>
+<string name="chat_otr_verify_key" formatted="false">
+Authenticating a buddy helps ensure that the person you are talking to is who they claim to be.\n\n
+To verify the fingerprint, contact your buddy via some <i>other</i> authenticated channel, such as the telephone or GPG-signed email.  Each of you should tell your fingerprint to the other.\n\n
+If everything matches up, you should indicate in the above dialog that you <b>have</b> verified the fingerprint.\n\n
+Local fingerprint %s\n\nRemote fingerprint %s\n\nVerify fingerprint ?</string>
 
-	<string name="contact_status_msg_available">Online</string>
-	<string name="contact_status_msg_available_chat">Bereit zum Chatten</string>
-	<string name="contact_status_msg_dnd">Beschäftigt</string>
-	<string name="contact_status_msg_away">Abwesend</string>
-	<string name="contact_status_msg_xa">N/A</string>
-	<string name="contact_status_msg_offline">Offline</string>
+<string name="contact_status_msg_available">Online</string>
+<string name="contact_status_msg_available_chat">Bereit zum Chatten</string>
+<string name="contact_status_msg_dnd">Beschäftigt</string>
+<string name="contact_status_msg_away">Abwesend</string>
+<string name="contact_status_msg_xa">N/A</string>
+<string name="contact_status_msg_offline">Offline</string>
 
-	<string name="privacy_list_name">Beem - Meine Privatsphärenliste verwalten</string>
-	<string name="privacy_list_no_data">Keine Privatsphärenliste vorhanden.</string>
-	<string name="privacy_list_menu_create">Privatsphärenliste erstellen</string>
-	<string name="privacy_list_create_dialog_title">Privatsphärenliste erstellen</string>
-	<string name="privacy_list_create_dialog_list_name_label">Titel</string>
-	<string name="privacy_list_create_dialog_create_button">Erstellen</string>
-	<string name="privacy_list_select_dialog_buddies">Kontakte</string>
-	<string name="privacy_list_select_dialog_groups">Gruppen</string>
-	<string name="privacy_list_select_dialog_delete">Löschen</string>
-	<string name="privacy_list_delete_dialog_msg">Bist du sicher, dass du die Privatsphärenliste mit dem Titel \'%s\' löschen willst ?</string>
-	<string name="privacy_list_delete_dialog_yes">Ja</string>
-	<string name="privacy_list_delete_dialog_no">Nein</string>
+<string name="privacy_list_name">Beem - Meine Privatsphärenliste verwalten</string>
+<string name="privacy_list_no_data">Keine Privatsphärenliste vorhanden.</string>
+<string name="privacy_list_menu_create">Privatsphärenliste erstellen</string>
+<string name="privacy_list_create_dialog_title">Privatsphärenliste erstellen</string>
+<string name="privacy_list_create_dialog_list_name_label">Titel</string>
+<string name="privacy_list_create_dialog_create_button">Erstellen</string>
+<string name="privacy_list_select_dialog_buddies">Kontakte</string>
+<string name="privacy_list_select_dialog_groups">Gruppen</string>
+<string name="privacy_list_select_dialog_delete">Löschen</string>
+<string name="privacy_list_delete_dialog_msg">Bist du sicher, dass du die Privatsphärenliste mit dem Titel \'%s\' löschen willst?</string>
+<string name="privacy_list_delete_dialog_yes">Ja</string>
+<string name="privacy_list_delete_dialog_no">Nein</string>
 
-	<string name="UpdateButton">Aktualisierung</string>
+<string name="UpdateButton">Aktualisieren</string>
 
-	<!-- Error messages -->
+<!-- MemorizingTrustManager library -->
+<string name="mtm_accept_cert">Unbekanntes Zertifikat akzeptieren?</string>
+<string name="mtm_decision_always">Immer</string>
+<string name="mtm_decision_once">Einmalig</string>
+<string name="mtm_decision_abort">Abbrechen</string>
 
-	<string name="error_login_authentication">Ein Fehler ist während der Authentifizierung aufgetreten: mangelhafter Benutzer oder Passwort.</string>
+<string name="mtm_notification">Zertifikatprüfung</string>
+
+<!-- Error messages -->
 
-	<string name="interna_server_error">Remoteserver Fehler</string>
-	<string name="bad_request">Mangelhafte Anfrage</string>
-	<string name="forbidden">Verboten</string>
-	<string name="item_not_found">Eintrag nicht gefunden</string>
-	<string name="conflict">Konflikt</string>
-	<string name="feature_not_implemented">Feature nicht vorhanden</string>
-	<string name="gone">verloren</string>
-	<string name="jid_malformed">JID mangelhaft</string>
-	<string name="no_acceptable">nicht akzeptabel</string>
-	<string name="not_allowed">nicht erlaubt</string>
-	<string name="not_authorized">nicht authorisiert</string>
-	<string name="payment_required">Bezahlung erforderlich</string>
-	<string name="recipient_unavailable">Empfänger unerreichbar</string>
-	<string name="redirect">weiterleiten</string>
-	<string name="registration_required">Anmeldung wird benötigt</string>
-	<string name="remote_server_not_found">Remoteserver nicht gefunden</string>
-	<string name="remote_server_timeout">Keine Antwort vom Server</string>
-	<string name="remote_server_error">Remoteserver Fehler</string>
-	<string name="resource_constraint">Ressourceneinschränkung</string>
-	<string name="service_unavailable">Dienst unerreichbar</string>
-	<string name="subscription_required">Zustimmung wird benötigt</string>
-	<string name="undefined_condition">Undefinierte Bedingung</string>
-	<string name="unexpected_condition">Unerwartete Bedingung</string>
-	<string name="request_timeout">Zeitüberschreitung bei der Anfrage</string>
+<string name="error_login_authentication">Ein Fehler ist während der Authentifizierung aufgetreten: mangelhafter Benutzername oder Passwort.</string>
+
+<string name="interna_server_error">Remoteserver Fehler</string>
+<string name="bad_request">Mangelhafte Anfrage</string>
+<string name="forbidden">Verboten</string>
+<string name="item_not_found">Eintrag nicht gefunden</string>
+<string name="conflict">Konflikt</string>
+<string name="feature_not_implemented">Feature nicht vorhanden</string>
+<string name="gone">verloren</string>
+<string name="jid_malformed">JID mangelhaft</string>
+<string name="no_acceptable">nicht akzeptabel</string>
+<string name="not_allowed">nicht erlaubt</string>
+<string name="not_authorized">nicht authorisiert</string>
+<string name="payment_required">Bezahlung erforderlich</string>
+<string name="recipient_unavailable">Empfänger unerreichbar</string>
+<string name="redirect">weiterleiten</string>
+<string name="registration_required">Anmeldung wird benötigt</string>
+<string name="remote_server_not_found">Remoteserver nicht gefunden</string>
+<string name="remote_server_timeout">Keine Antwort vom Server</string>
+<string name="remote_server_error">Remoteserver Fehler</string>
+<string name="resource_constraint">Ressourcen Einschränkung</string>
+<string name="service_unavailable">Dienst unerreichbar</string>
+<string name="subscription_required">Zustimmung wird benötigt</string>
+<string name="undefined_condition">Undefinierte Bedingung</string>
+<string name="unexpected_condition">Unerwartete Bedingung</string>
+<string name="request_timeout">Zeitüberschreitung bei der Anfrage</string>
 </resources>
--- a/res/values-fr/strings.xml	Tue Jan 18 00:26:02 2011 +0100
+++ b/res/values-fr/strings.xml	Tue Jun 05 16:29:25 2012 +0200
@@ -39,7 +39,7 @@
 	<string name="AddCOkButton">Ajouter</string>
 	<string name="AddCContactAdded">Contact ajouté</string>
 	<string name="AddCContactAddedError">Erreur Contact non ajouté</string>
-	<string name="AddCContactAddedLoginError">Error Nom d\'utilisateur</string>
+	<string name="AddCContactAddedLoginError">Mauvais nom d\'utilisateur</string>
 	<string name="AddCBadForm">Mauvais formulaire</string>
 	<string name="AddCContactAlready">Contact déjà ajouté</string>
 
@@ -56,6 +56,12 @@
 	<string name="MenuConnection">Modifier un compte</string>
 	<string name="ChangeStatusOk">Mise à jour du statut</string>
 	<string name="ChangeStatusNoChange">Rien à changer</string>
+	<string name="my_avatar">Mon avatar</string>
+	<string name="select_avatar">Choisissez votre avatar</string>
+	<string name="take_photo">Prendre une photo</string>
+	<string name="pick_photo">Choisir une image</string>
+	<string name="delete_avatar">Pas d\'avatar</string>
+	<string name="photoPickerNotFoundText">Sélecteur d\'image non disponible</string>
 
 	<!-- Settings class -->
 	<string name="SettingsText">Saisissez votre identifiant de connexion</string>
@@ -120,8 +126,13 @@
 	<string name="settings_chat_compact">Chat compact</string>
 	<string name="settings_chat_compact_sum">Activer la fenetre Chat compact</string>
 	<string name="history">Historique</string>
+	<string name="history_sum">Cochez cette option pour enregistrer les discussions sur la SDCard</string>
 	<string name="history_mount">Il vous faut avoir une SDcard utilisable en écriture pour activer l\'historique</string>
 	<string name="history_on_off">Activer la l\'historique des messages</string>
+	<string name="chat_preferences">Chat</string>
+	<string name="chat_preferences_sum">Historique, taille de la fenêtre ...</string>
+	<string name="chat_history_path">Répertoire d\'historique</string>
+	<string name="chat_history_path_sum">Les conversations sont enregistrées dans un dossier sur la SDCard</string>
 	<string name="settings_smack_debug">Activer le debugger XMPP</string>
 	<string name="settings_full_jid_login">Utiliser le JID entier en tant que login</string>
 	<string name="settings_full_jid_login_sum">Nécessaire pour certains serveurs (Google Talk)</string>
@@ -218,6 +229,9 @@
 	<string name="settings_tab_label_xmpp">XMPP</string>
 	<string name="settings_tab_tag_proxy">edit_settings_tab_proxy</string>
 	<string name="settings_tab_label_proxy">Proxy</string>
+	<string name="history_preferences">Historique</string>
+	<string name="chat_layout_option">Fenêtre de chat</string>
+	
 
 	<!-- wizard activities -->
 	<string name="account_wizard_text1"><b>Bienvenue sur BEEM.</b>\n\nVous n\'avez pas encore configuré de compte XMPP (Jabber).\nChoisissez une des options suivantes :</string>
@@ -300,6 +314,14 @@
 	<string name="privacy_list_delete_dialog_no">Non</string>
 
 	<string name="UpdateButton">Mettre à jour</string>
+
+	<!-- MemorizingTrustManager library -->
+	<string name="mtm_accept_cert">Accepter un certificat de sécurité invalide ?</string>
+	<string name="mtm_decision_always">Toujours</string>
+	<string name="mtm_decision_once">Une fois</string>
+	<string name="mtm_decision_abort">Annuler</string>
+
+	<string name="mtm_notification">Certificate Verification</string>
 	
 	<!-- Error messages -->
 	<string name="error_login_authentication">Erreur lors de l\'authenfitication, mauvais login ou password</string>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/res/values-nb/strings.xml	Tue Jun 05 16:29:25 2012 +0200
@@ -0,0 +1,353 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+<!-- Generic terms -->
+<string name="app_name">Beem</string>
+<string name="OkButton">Ok</string>
+<string name="ClearButton">Löschen</string>
+<string name="CancelButton">Abbrechen</string>
+<string name="AcceptButton">Authorisieren</string>
+<string name="RefuseButton">Ablehnen</string>
+<string name="JabberID">Jabber ID</string>
+<string name="Password">Passwort</string>
+<string name="Continue">Fortfahren</string>
+
+<!--  AccountConfigure class -->
+<string name="AccountConfigureManualConfiguration">Manuelle Konfiguration</string>
+
+<!--  Beem class -->
+<string name="BeemJabberID">Jabber ID</string>
+
+<!--  BeemApplication class -->
+<string name="BeemApplicationConnect">Verbinden...</string>
+
+<!--  BeemService class -->
+<string name="BeemServiceDescription">Benutze Beem Service</string>
+<string name="BeemServiceCreated">Beem Service erstellt</string>
+<string name="BeemServiceDestroyed">Beem Service verworfen</string>
+
+<!--  ContactDialog class -->
+<string name="CDChat">Chatten</string>
+<string name="CDCall">Anrufen</string>
+<string name="CDInfos">Kontakt bearbeiten</string>
+
+<!-- AddContact class -->
+<string name="AddCActTitle">Beem - Kontakt hinzufügen</string>
+
+<string name="AddCLogin">Benutzername</string>
+<string name="AddCAlias">Alias</string>
+<string name="AddCGroup">Gruppe</string>
+<string name="AddCOkButton">Hinzufügen</string>
+<string name="AddCContactAdded">Kontakt hinzugefügt</string>
+<string name="AddCContactAddedError">Fehler, Benutzer nicht hinzugefügt</string>
+<string name="AddCContactAddedLoginError">Fehler bei der Anmeldung</string>
+<string name="AddCBadForm">Mangelhafte Form</string>
+<string name="AddCContactAlready">Kontakt existiert bereits</string>
+
+<!--  ChangeStatus class -->
+<string name="ChangeStatusActTitle">Beem - Meinen Status ändern</string>
+<string name="ChangeStatusType">Mein Status</string>
+<string name="ChangeStatusMessage">Meine persönliche Nachricht</string>
+<string name="OpenContactList">Kontaktliste öffnen</string>
+
+<string name="MenuAddContact">Kontakt hinzufügen</string>
+<string name="MenuAccountAbout">Beem Project</string>
+<string name="MenuAccountCreate">Konto erstellen</string>
+<string name="MenuConnection">Konto bearbeiten</string>
+<string name="ChangeStatusOk">Aktualisiere Status</string>
+<string name="ChangeStatusNoChange">Nichts zu ändern</string>
+<string name="my_avatar">Mein Avatar</string>
+<string name="select_avatar">Wähle Avatar</string>
+<string name="take_photo">Foto machen</string>
+<string name="pick_photo">Bild auswählen</string>
+<string name="delete_avatar">Kein Avatar</string>
+<string name="photoPickerNotFoundText">Fotoauswahl nicht gefunden</string>
+
+
+<!-- Settings class -->
+<string name="SettingsText">Benutzername bearbeiten</string>
+<string name="SettingsPassword">Passwort bearbeiten</string>
+<string name="SettingsProxy">Proxy</string>
+<string name="SettingsProxyProxy">Benutze einen Proxyserver</string>
+<string name="SettingsProxySummary">Anmeldung über einen Proxyserver</string>
+<string name="SettingsProxyType">Protokoll</string>
+<string name="SettingsProxyTypeSummary">Art des Proxyservers wählen</string>
+<string name="SettingsProxyServer">Adresse des Proxyservers bearbeiten</string>
+<string name="SettingsProxyPort">Port des Proxyservers bearbeiten</string>
+<string name="SettingsProxyUser">Optional, erlaubt das Authentifizieren mit dem Proxyserver</string>
+<string name="SettingsProxyPassword">Optional, erlaubt das Authentifizieren mit dem Proxyserver</string>
+<string name="SettingsAdvanced">Erweitert</string>
+<string name="SettingsAdvancedOptions">Spezifische Server Optionen</string>
+<string name="SettingsAdvancedRecoDelay">Bearbeite die Verzögerung bei der Wiederverbindung</string>
+<string name="SettingsAdvancedSpecOpt">Aktivieren, um einen spezifischen Server für die Verbindung zu benutzen</string>
+<string name="SettingsAdvancedAddOpt">Adresse des Servers bearbeiten</string>
+<string name="SettingsAdvancedPortOpt">Port des Servers bearbeiten</string>
+<string name="SettingsResourceTitle">Ressource</string>
+<string name="SettingsPriorityTitle">Priorität</string>
+<string name="SettingsResourceSummary">XMPP Ressource des Clients einstellen</string>
+<string name="SettingsPrioritySummary">Priorität des Clients einstellen</string>
+<string name="contact_list_preferences">Kontaktliste</string>
+<string name="contact_list_preferences_sum">A set of display options for your buddy list
+</string>
+<string name="CLP_hide_groups">Gruppen ausblenden</string>
+<string name="CLP_hide_groups_sum">Aktivieren, um Gruppen auszublenden</string>
+<string name="CLP_hidden_contact">Kontakte ausblenden</string>
+<string name="CLP_hidden_contact_sum">Check this option to hide unconnected buddies
+</string>
+<string name="settings_account_username">Benutzername (JID)</string>
+<string name="login_username_info_default">beem@beem-project.com</string>
+<string name="settings_account_password">Passwort</string>
+<string name="settings_account_server">Server</string>
+<string name="settings_account_port">Port</string>
+<string name="settings_advanced_service_behaviour">Verhalten des Dienstes</string>
+<string name="settings_advanced_sum">Erweiterte Einstellungen für fortgeschrittene Benutzer</string>
+<string name="settings_xmpp_server">Adresse</string>
+<string name="comments_xmpp_server">example.com</string>
+<string name="settings_xmpp_port">Port</string>
+<string name="settings_xmpp_use_tls">Verwende SSL/TLS</string>
+<string name="settings_reco_delay">Verzögerung bei der Wiederverbindung</string>
+<string name="comments_xmpp_port">Standard: 5222</string>
+<string name="settings_proxy_sum">Einstellungen für das Benutzen eines Proxyservers</string>
+<string name="settings_proxy_use">Benutze einen Proxyserver</string>
+<string name="settings_proxy_type_prompt">Art des Proxyservers wählen</string>
+<string name="settings_proxy_server">Server</string>
+<string name="settings_proxy_port">Port</string>
+<string name="comments_proxy_port">Standard: 1080</string>
+<string name="settings_proxy_username">Benutzername</string>
+<string name="settings_proxy_password">Passwort</string>
+<string name="away_chk_title">Aktiviere automatische Abwesenheit</string>
+<string name="away_chk_sum">Status auf Abwesend wenn Bildschirm aus</string>
+<string name="away_message_title">Abwesenheitsnachricht</string>
+<string name="away_message_sum">Angezeigte Abwesenheitsnachricht</string>
+<string name="away_message_hint">Ich bin abwesend, mein Telefonbildschirm ist aus</string>
+<string name="notification_preferences">Benachrichtigungseinstellungen</string>
+<string name="notification_enable_vibrate_title">Aktiviere Vibration</string>
+<string name="notification_enable_vibrate_sum">Aktiviere Vibration für eingehende Nachrichten</string>
+<string name="notification_snd_title">Nachrichtensignalton</string>
+<string name="notification_snd_sum">Lege den Signalton für eingehende Nachrichten fest</string>
+<string name="settings_chat_compact">Kompakter Chat</string>
+<string name="settings_chat_compact_sum">Benutze kompakte Chatfenster</string>
+<string name="history">Chronik</string>
+<string name="history_sum">Aktivieren, um Unterhaltungen auf die Speicherkarte zu speichern</string>
+<string name="history_mount">Die Speicherkarte muss eingehängt und beschreibbar sein, um die Chronik zu aktivieren</string>
+<string name="history_on_off">Aktiviere Nachrichtenchronik</string>
+<string name="chat_preferences">Chat</string>
+<string name="chat_preferences_sum">Chronik, Layout Größe ...</string>
+<string name="chat_history_path">Chronik Pfad</string>
+<string name="chat_history_path_sum">Unterhaltungen werden in einem Ordner auf der Speicherkarte gespeichert</string>
+<string name="settings_smack_debug">Aktiviere XMPP Debug Modus</string>
+<string name="settings_full_jid_login">Benutze meine vollständige JID als Benutzername</string>
+<string name="settings_full_jid_login_sum">Wird von einigen Servern, z.b. Google Talk, vorausgesetzt</string>
+
+<!-- Subscription class -->
+<string name="SubscriptAccept">Zustimmung angenommen</string>
+<string name="SubscriptError">Zustimmungsfehler</string>
+<string name="SubscriptRefused">Zustimmung abgelehnt</string>
+<string name="SubscriptText">%s will dich zu seiner/ihrer Kontaktliste hinzufügen. Willst du ihn/sie authorisieren?</string>
+<string name="SubscriptTitle">Kontakt authorisieren?</string>
+
+<!--  BeemChatManager -->
+<string name="BeemChatManagerNewMessage">Du hast eine neue Nachricht</string>
+
+<!--  BeemBroadcastReceiver class -->
+<string name="BeemBroadcastReceiverDisconnect">BEEM: Die Verbindung wurde getrennt</string>
+
+<!--  XmppConnectionAdapter class -->
+<string name="AcceptContactRequest">%s hat dich gerade zu seiner/ihrer Kontaktliste hinzugefügt.</string>
+<string name="AcceptContactRequestFrom">Authorisiere %s dich zu kontaktieren.</string>
+
+<!-- Activities -->
+<string name="login_tag">Beem - Anmeldung</string>
+<string name="edit_settings_name">Beem - Einstellungen</string>
+<string name="edit_settings_tag">Beem - Einstellungen bearbeiten</string>
+<string name="create_account_name">Beem - Konto erstellen</string>
+<string name="create_account_tag">Beem - Konto erstellen</string>
+<string name="contact_list_name">Beem - Kontakte</string>
+<string name="contact_list_tag">Beem - Kontaktliste</string>
+<string name="user_info_name">Beem - Benutzerinformation</string>
+
+<!-- Buttons -->
+<string name="button_create_account">Dieses Konto erstellen</string>
+<string name="button_create_login_account">Dieses Konto erstellen und benutzen</string>
+
+<!-- LogAs Activity -->
+<string name="login_username">Benutzername</string>
+<string name="login_password">Passwort</string>
+<string name="login_error_dialog_title">Anmeldung - Fehler</string>
+<string name="login_close_dialog_button">Schließen</string>
+<string name="login_menu_create_account">Konto erstellen</string>
+<string name="login_menu_settings">Einstellungen</string>
+<string name="login_menu_about">Über</string>
+<string name="login_about_title">Beem %s - Über</string>
+<string name="login_about_msg">
+Beem is an EPITECH Innovative Project. Visit us at
+http://www.beem-project.com !
+</string>
+<string name="login_about_button">Schließen</string>
+<string name="login_settings_button">Einstellungen</string>
+<string name="login_login_button">Anmelden</string>
+<string name="login_login_progress">Verbinden. Bitte warten...</string>
+<string name="login_error_msg">Unfortunately, an error occured.\n\nError
+detail:\n%s</string>
+<string name="login_menu_login">Anmelden</string>
+<string name="login_no_connectivity">Keine Internetverbindung gefunden</string>
+<string name="login_start_msg">Konfiguration der Einstellungen im Menü</string>
+
+<!-- LoginAnim activity -->
+<string name="loganim_connecting">Verbinden...</string>
+<string name="loganim_authenticating">Authentifizieren...</string>
+<string name="loganim_login_success">Erfolgreich angemeldet</string>
+<string name="loganim_login_failed">Anmeldung gescheitert</string>
+
+<!-- EditSettings Activity -->
+<string name="settings_menu_create_account">Konto erstellen</string>
+<string name="settings_menu_privacy_lists">Meine Privatsphärenliste verwalten</string>
+<string name="settings_saved_ok">Die Einstellungen wurden erfolgreich gespeichert.</string>
+
+
+
+<!-- EditSettings Activity Categories -->
+<string name="general_preferences">Allgemeine Einstellungen</string>
+<string name="user_preferences">Benutzereinstellungen (notwendig)</string>
+<string name="user_preferences_advanced">Zusätzliche Benutzereinstellungen (optional)</string>
+<string name="network_preferences">Netzwerk Einstellungen</string>
+<string name="proxy_proxy_settings">Proxy Einstellungen</string>
+<string name="proxy_user_settings">Proxy Einstellungen</string>
+<string name="history_preferences">Chronik</string>
+<string name="chat_layout_option">Chat Ansicht</string>
+
+
+<!-- EditSettings Activity Tabs -->
+<string name="settings_tab_tag_account">edit_settings_tab_account</string>
+<string name="settings_tab_label_account">Konto</string>
+<string name="settings_tab_tag_xmpp">edit_settings_tab_xmpp</string>
+<string name="settings_tab_label_xmpp">XMPP</string>
+<string name="settings_tab_tag_proxy">edit_settings_tab_proxy</string>
+<string name="settings_tab_label_proxy">Proxy</string>
+
+
+<!-- wizard activities -->
+<string name="account_wizard_text1"><b>Willkommen bei BEEM.</b>nnDu hast noch kein XMPP (Jabber) Konto konfiguriert. Wähle eine der folgenden Optionen:</string>
+<string name="account_wizard_configure_text"><b>Bitte trage die Zugangsdaten für dein vorhandenes Konto ein</b></string>
+<string name="account_wizard_configure_account">Ich habe bereits ein Konto, das ich benutzen will</string>
+<string name="account_wizard_create_account">Ich möchte ein neues Konto registrieren</string>
+
+<!-- Create an account Activity -->
+<string name="create_account_instr_dialog_title">Konto erstellen - Anweisungen</string>
+<string name="create_account_err_dialog_title">Konto erstellen - Fehler</string>
+<string name="create_account_err_dialog_settings_button">Einstellungen ändern</string>
+<string name="create_account_close_dialog_button">Schließen</string>
+<string name="create_account_successfull_after">Das Konto %s wurde erfolgreich erstellt</string>
+<string name="create_account_err_username">Mangelhafte Jabber ID</string>
+<string name="create_account_err_passwords">Passwörter stimmen nicht überein.</string>
+<string name="create_account_username">Benutzername</string>
+<string name="create_account_password">Passwort</string>
+<string name="create_account_confirm_password">Passwort bestätigen</string>
+
+<!-- ContactList Activity  -->
+<string name="contact_list_menu_add_contact">Kontakt hinzufügen</string>
+<string name="contact_list_menu_status">Status ändern</string>
+<string name="contact_list_menu_settings">Einstellungen</string>
+<string name="contact_list_menu_disconnect">Verbindung trennen</string>
+<string name="contact_list_all_contact">Alle Kontakte</string>
+<string name="contact_list_no_group">Keine Gruppe</string>
+
+<!-- UserInfo dialog -->
+<string name="userinfo_label_alias">Alias</string>
+<string name="userinfo_label_chg_group">Gruppen verwalten</string>
+<string name="userinfo_label_re_subscription">Einladung erneut senden</string>
+<string name="userinfo_label_block">Sperren</string>
+<string name="userinfo_label_delete">Löschen</string>
+<string name="userinfo_resend">Zustimmung erneut senden</string>
+<string name="userinfo_sure2delete">Are you sure you want to delete this contact?
+</string>
+<string name="userinfo_yes">Ja</string>
+<string name="userinfo_no">Nein</string>
+<string name="userinfo_sureresend">Bist du sicher, dass du die Einladung erneut senden willst?</string>
+
+<string name="chat_name">Beem - Chat</string>
+<string name="chat_input_default_value">Nachricht eingeben</string>
+<string name="chat_self">Ich</string>
+<string name="chat_error">Fehler</string>
+<string name="chat_send_message">Senden</string>
+<string name="chat_menu_contacts_list">Kontaktliste</string>
+<string name="chat_menu_change_chat">Chat wechseln</string>
+<string name="chat_menu_start_otr_session">OTR Sitzung starten</string>
+<string name="chat_menu_stop_otr_session">OTR Sitzung beenden</string>
+<string name="chat_menu_otr_verify_key">OTR Schlüssel authentifizieren</string>
+<string name="chat_menu_otr_submenu">OTR Optionen</string>
+<string name="chat_dialog_change_chat_title">Offene Chats</string>
+<string name="chat_menu_close_chat">Diesen Chat schließen</string>
+<string name="chat_no_more_chats">Keine weiteren aktiven Chats</string>
+<string name="chat_state_composing">schreibt gerade</string>
+<string name="chat_state_gone">hat die Unterhaltung verlassen</string>
+<string name="chat_state_active">verfolgt die Unterhaltung</string>
+<string name="chat_state_inactive">macht etwas anderes</string>
+<string name="chat_otrstate_plaintext">KLARTEXT</string>
+<string name="chat_otrstate_encrypted">VERSCHLÜSSELT</string>
+<string name="chat_otrstate_finished">BEENDET</string>
+<string name="chat_otrstate_authenticated">AUTHENTIFIZIERT</string>
+<string name="chat_otr_verify_key" formatted="false">
+Authenticating a buddy helps ensure that the person you are talking to is who they claim to be.\n\n
+To verify the fingerprint, contact your buddy via some <i>other</i> authenticated channel, such as the telephone or GPG-signed email.  Each of you should tell your fingerprint to the other.\n\n
+If everything matches up, you should indicate in the above dialog that you <b>have</b> verified the fingerprint.\n\n
+Local fingerprint %s\n\nRemote fingerprint %s\n\nVerify fingerprint ?</string>
+
+<string name="contact_status_msg_available">Online</string>
+<string name="contact_status_msg_available_chat">Bereit zum Chatten</string>
+<string name="contact_status_msg_dnd">Beschäftigt</string>
+<string name="contact_status_msg_away">Abwesend</string>
+<string name="contact_status_msg_xa">N/A</string>
+<string name="contact_status_msg_offline">Offline</string>
+
+<string name="privacy_list_name">Beem - Meine Privatsphärenliste verwalten</string>
+<string name="privacy_list_no_data">Keine Privatsphärenliste vorhanden.</string>
+<string name="privacy_list_menu_create">Privatsphärenliste erstellen</string>
+<string name="privacy_list_create_dialog_title">Privatsphärenliste erstellen</string>
+<string name="privacy_list_create_dialog_list_name_label">Titel</string>
+<string name="privacy_list_create_dialog_create_button">Erstellen</string>
+<string name="privacy_list_select_dialog_buddies">Kontakte</string>
+<string name="privacy_list_select_dialog_groups">Gruppen</string>
+<string name="privacy_list_select_dialog_delete">Löschen</string>
+<string name="privacy_list_delete_dialog_msg">Bist du sicher, dass du die Privatsphärenliste mit dem Titel \'%s\' löschen willst?</string>
+<string name="privacy_list_delete_dialog_yes">Ja</string>
+<string name="privacy_list_delete_dialog_no">Nein</string>
+
+<string name="UpdateButton">Aktualisieren</string>
+
+<!-- MemorizingTrustManager library -->
+<string name="mtm_accept_cert">Unbekanntes Zertifikat akzeptieren?</string>
+<string name="mtm_decision_always">Immer</string>
+<string name="mtm_decision_once">Einmalig</string>
+<string name="mtm_decision_abort">Abbrechen</string>
+
+<string name="mtm_notification">Zertifikatprüfung</string>
+
+<!-- Error messages -->
+
+<string name="error_login_authentication">Ein Fehler ist während der Authentifizierung aufgetreten: mangelhafter Benutzername oder Passwort.</string>
+
+<string name="interna_server_error">Remoteserver Fehler</string>
+<string name="bad_request">Mangelhafte Anfrage</string>
+<string name="forbidden">Verboten</string>
+<string name="item_not_found">Eintrag nicht gefunden</string>
+<string name="conflict">Konflikt</string>
+<string name="feature_not_implemented">Feature nicht vorhanden</string>
+<string name="gone">verloren</string>
+<string name="jid_malformed">JID mangelhaft</string>
+<string name="no_acceptable">nicht akzeptabel</string>
+<string name="not_allowed">nicht erlaubt</string>
+<string name="not_authorized">nicht authorisiert</string>
+<string name="payment_required">Bezahlung erforderlich</string>
+<string name="recipient_unavailable">Empfänger unerreichbar</string>
+<string name="redirect">weiterleiten</string>
+<string name="registration_required">Anmeldung wird benötigt</string>
+<string name="remote_server_not_found">Remoteserver nicht gefunden</string>
+<string name="remote_server_timeout">Keine Antwort vom Server</string>
+<string name="remote_server_error">Remoteserver Fehler</string>
+<string name="resource_constraint">Ressourcen Einschränkung</string>
+<string name="service_unavailable">Dienst unerreichbar</string>
+<string name="subscription_required">Zustimmung wird benötigt</string>
+<string name="undefined_condition">Undefinierte Bedingung</string>
+<string name="unexpected_condition">Unerwartete Bedingung</string>
+<string name="request_timeout">Zeitüberschreitung bei der Anfrage</string>
+</resources>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/res/values-pt-rBR/strings.xml	Tue Jun 05 16:29:25 2012 +0200
@@ -0,0 +1,332 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+	<!-- Generic terms -->
+	<string name="app_name">Beem</string>
+	<string name="OkButton">Ok</string>
+	<string name="ClearButton">Limpar</string>
+	<string name="CancelButton">Cancelar</string>
+	<string name="AcceptButton">Autorizar</string>
+	<string name="RefuseButton">Negar</string>
+	<string name="JabberID">Jabber ID</string>
+	<string name="Password">Senha</string>
+	<string name="Continue">Continuar</string>
+
+	<!--  AccountConfigure class -->
+	<string name="AccountConfigureManualConfiguration">Configuração Manual</string>
+
+	<!--  Beem class -->
+	<string name="BeemJabberID">Jabber ID</string>
+
+	<!--  BeemApplication class -->
+	<string name="BeemApplicationConnect">Conectando...</string>
+
+	<!--  BeemService class -->
+	<string name="BeemServiceDescription">Utilizar Serviço Beem</string>
+	<string name="BeemServiceCreated">Serviço Beem Criado</string>
+	<string name="BeemServiceDestroyed">Serviço Beem Destruído</string>
+
+	<!--  ContactDialog class -->
+	<string name="CDChat">Conversa</string>
+	<string name="CDCall">Chamada</string>
+	<string name="CDInfos">Gerenciar Usuário</string>
+
+	<!-- AddContact class -->
+	<string name="AddCActTitle">Beem - Adicionar usuário</string>
+
+	<string name="AddCLogin">Login</string>
+	<string name="AddCAlias">Apelido</string>
+	<string name="AddCGroup">Grupo</string>
+	<string name="AddCOkButton">Adicionar</string>
+	<string name="AddCContactAdded">Contato Adicionado</string>
+	<string name="AddCContactAddedError">Erro: Contato não adicionado</string>
+	<string name="AddCContactAddedLoginError">Erro de login</string>
+	<string name="AddCBadForm">Jabber ID mal formado</string>
+	<string name="AddCContactAlready">Contato já existe</string>
+
+	<!--  ChangeStatus class -->
+	<string name="ChangeStatusActTitle">Beem - Alterar meu status</string>
+	<string name="ChangeStatusType">Meu status</string>
+	<string name="ChangeStatusMessage">Minha mensagem pessoal</string>
+	<string name="OpenContactList">Abrir lista de contatos</string>
+	
+	<string name="MenuAddContact">Adicionar contato</string>
+	<string name="MenuAccountAbout">Projeto Beem</string>
+	<string name="MenuAccountCreate">Criar conta</string>
+	<string name="MenuConnection">Editar conta</string>
+	<string name="ChangeStatusOk">Atualizando status</string>
+	<string name="ChangeStatusNoChange">Nada a alterar</string>
+	<string name="my_avatar">Meu avatar</string>
+	<string name="select_avatar">Escolha o seu avatar</string>
+	<string name="take_photo">Tirar uma foto</string>
+	<string name="pick_photo">Selecionar imagem</string>
+	<string name="delete_avatar">Sem avatar</string>
+	<string name="photoPickerNotFoundText">Selecionador de fotos não encontrado</string>
+
+
+	<!-- Settings class -->
+	<string name="SettingsText">Editar seu login</string>
+	<string name="SettingsPassword">Editar sua senha</string>
+	<string name="SettingsProxy">Proxy</string>
+	<string name="SettingsProxyProxy">Usar um servidor de proxy</string>
+	<string name="SettingsProxySummary">Efetuar login através de um proxy</string>
+	<string name="SettingsProxyType">Protocolo</string>
+	<string name="SettingsProxyTypeSummary">Selecione um tipo de proxy</string>
+	<string name="SettingsProxyServer">Editar endereço do proxy</string>
+	<string name="SettingsProxyPort">Editar porta do proxy</string>
+	<string name="SettingsProxyUser">Opcional, permite autenticar no servidor de proxy</string>
+	<string name="SettingsProxyPassword">Optional, permite autenticar no servidor de proxy</string>
+	<string name="SettingsAdvanced">Avançado</string>
+	<string name="SettingsAdvancedOptions">Opções de servidor</string>
+	<string name="SettingsAdvancedRecoDelay">Modificar atraso de conexão</string>
+	<string name="SettingsAdvancedSpecOpt">Marque essa caixa se você quer utilizar um servidor específico para a sua conexão</string>
+	<string name="SettingsAdvancedAddOpt">Editar o endereço do servidor</string>
+	<string name="SettingsAdvancedPortOpt">Editar a porta do servidor</string>
+	<string name="SettingsResourceTitle">Recurso</string>
+	<string name="SettingsPriorityTitle">Prioridade</string>
+	<string name="SettingsResourceSummary">Configurar o recurso XMPP do seu cliente</string>
+	<string name="SettingsPrioritySummary">Configurar a prioridade do seu cliente</string>
+	<string name="contact_list_preferences">Lista de contatos</string>
+	<string name="contact_list_preferences_sum">Um conjunto de opções de visualização para a sua lista de contatos
+	</string>
+	<string name="CLP_hide_groups">Ocultar grupos</string>	
+	<string name="CLP_hide_groups_sum">Marque essa opção para ocultar grupos</string>
+	<string name="CLP_hidden_contact">Ocultar contatos</string>
+	<string name="CLP_hidden_contact_sum">Marque essa opção para ocultar contatos desconectados
+	</string>
+	<string name="settings_account_username">Login (JID)</string>
+	<string name="login_username_info_default">beem@beem-project.com</string>
+	<string name="settings_account_password">Senha</string>
+	<string name="settings_account_server">Servidor</string>
+	<string name="settings_account_port">Porta</string>
+	<string name="settings_advanced_service_behaviour">Comportamento do serviço</string>
+	<string name="settings_advanced_sum">Um conjunto de opções para usuários avançados</string>
+	<string name="settings_xmpp_server">Endereço</string>
+	<string name="comments_xmpp_server">exemplo.com</string>
+	<string name="settings_xmpp_port">Porta</string>
+	<string name="settings_xmpp_use_tls">Requer SSL/TLS</string>
+	<string name="settings_reco_delay">Atraso de desconexão</string>
+	<string name="comments_xmpp_port">Padrão: 5222</string>
+	<string name="settings_proxy_sum">Configurações de uso de proxy</string>
+	<string name="settings_proxy_use">Conectar usando um proxy</string>
+	<string name="settings_proxy_type_prompt">Escolha o tipo de proxy</string>
+	<string name="settings_proxy_server">Servidor</string>
+	<string name="settings_proxy_port">Porta</string>
+	<string name="comments_proxy_port">Padrão: 1080</string>
+	<string name="settings_proxy_username">Login</string>
+	<string name="settings_proxy_password">Senha</string>
+	<string name="away_chk_title">Habilitar ausência automática</string>
+	<string name="away_chk_sum">Muda o statos para ausente quando a tela é desligada</string>
+	<string name="away_message_title">Mensagem de ausência</string>
+	<string name="away_message_sum">A mensagem de ausência que será exibida</string>
+	<string name="away_message_hint">Estou ausente, a tela do meu celular está desligada</string>
+	<string name="notification_preferences">Configurações de notificação</string>
+	<string name="notification_enable_vibrate_title">Vibrar</string>
+	<string name="notification_enable_vibrate_sum">Habilita a vibração quando receber mensagens</string>
+	<string name="notification_snd_title">Toque de mensagem</string>
+	<string name="notification_snd_sum">Configura o toque de recebimento de mensagens</string>
+	<string name="settings_chat_compact">Conversa compacta</string>
+	<string name="settings_chat_compact_sum">Habilita o modo compacto da janela de chat</string>
+	<string name="history">Histórico</string>
+	<string name="history_sum">Marque se você deseja gravar o histórico de conversas no seu cartão SD</string>
+	<string name="history_mount">Você precisa ter um cartão SD montado e com permissão de escrita para habilitar o histórico</string>
+	<string name="history_on_off">Habilita histórico de mensagens</string>
+	<string name="chat_preferences">Conversa</string>
+	<string name="chat_preferences_sum">Histórico, Tamanho do layout ...</string>
+	<string name="chat_history_path">Caminho do histórico</string>
+	<string name="chat_history_path_sum">Conversas serão gravadas em uma pasta no cartão SD</string>
+	<string name="settings_smack_debug">Habilitar debug XMPP</string>
+	<string name="settings_full_jid_login">Utilizar meu JID completo como login</string>
+	<string name="settings_full_jid_login_sum">Necessário para alguns servidores, como o Google Talk</string>
+
+	<!-- Subscription class -->
+	<string name="SubscriptAccept">Subscrição aceita</string>
+	<string name="SubscriptError">Erro de subscrição</string>
+	<string name="SubscriptRefused">Subscrição recusada</string>
+	<string name="SubscriptText">%s quer te adicionar como contato. Você autoriza?</string>
+	<string name="SubscriptTitle">Autorizar contato?</string>
+
+	<!--  BeemChatManager -->
+	<string name="BeemChatManagerNewMessage">Você tem uma nova mensagem</string>
+
+	<!--  BeemBroadcastReceiver class -->
+	<string name="BeemBroadcastReceiverDisconnect">BEEM: Você foi desconectado</string>
+
+	<!--  XmppConnectionAdapter class -->
+	<string name="AcceptContactRequest">%s te adicionou na lista de contatos.</string>
+	<string name="AcceptContactRequestFrom">Autorizar %s para contactar você.</string>
+
+	<!-- Activities -->
+	<string name="login_tag">Beem - Atividade de login</string>
+	<string name="edit_settings_name">Beem - Configurações</string>
+	<string name="edit_settings_tag">Beem - Atividade de configurações</string>
+	<string name="create_account_name">Beem - Criar uma conta</string>
+	<string name="create_account_tag">Beem - Atividade de criar conta</string>
+	<string name="contact_list_name">Beem - Lista de contatos</string>
+	<string name="contact_list_tag">Beem - Atividade de lista de contatos</string>
+	<string name="user_info_name">Beem - Informações de usuário</string>
+
+	<!-- Buttons -->
+	<string name="button_create_account">Criar conta</string>
+	<string name="button_create_login_account">Criar e utilizar conta</string>
+
+	<!-- LogAs Activity -->
+	<string name="login_username">Login</string>
+	<string name="login_password">Senha</string>
+	<string name="login_error_dialog_title">Login - Erro</string>
+	<string name="login_close_dialog_button">Fechar</string>
+	<string name="login_menu_create_account">Criar conta</string>
+	<string name="login_menu_settings">Configurações</string>
+	<string name="login_menu_about">Sobre</string>
+	<string name="login_about_title">Beem %s - Sobre</string>
+	<string name="login_about_msg">
+		Beem é um projeto da EPITECH Innovative Project. Visite
+		http://www.beem-project.com !
+	</string>
+	<string name="login_about_button">Fechar</string>
+	<string name="login_settings_button">Configurações</string>
+	<string name="login_login_button">Entrar</string>
+	<string name="login_login_progress">Conectando. Aguarde...</string>
+	<string name="login_error_msg">Infelizmente, ocorreu um erro.\n\nDetalhes
+		do erro:\n%s</string>
+	<string name="login_menu_login">Login</string>
+	<string name="login_no_connectivity">Conexão de internet não encontrada</string>
+	<string name="login_start_msg">Configurações incorretas</string>
+
+	<!-- LoginAnim activity -->
+	<string name="loganim_connecting">Conectando ...</string>
+	<string name="loganim_authenticating">Autenticando ...</string>
+	<string name="loganim_login_success">Entrou com sucesso</string>
+	<string name="loganim_login_failed">Falha no login</string>
+
+	<!-- EditSettings Activity -->
+	<string name="settings_menu_create_account">Criar conta</string>
+	<string name="settings_menu_privacy_lists">Gerenciar minha lista de privacidade</string>
+	<string name="settings_saved_ok">As configurações foram salvas com sucesso.</string>
+
+
+
+	<!-- EditSettings Activity Categories -->
+	<string name="general_preferences">Preferências gerais</string>
+	<string name="user_preferences">Configurações de usuário (requerido)</string>
+	<string name="user_preferences_advanced">Configurações avançadas de usuário (opcional)</string>
+	<string name="network_preferences">Opções de rede</string>
+	<string name="proxy_proxy_settings">Configurações de proxy</string>
+	<string name="proxy_user_settings">Configurações de proxy</string>
+	<string name="history_preferences">Histórico</string>
+	<string name="chat_layout_option">Layout da conversa</string>
+	
+
+	<!-- EditSettings Activity Tabs -->
+	<string name="settings_tab_tag_account">edit_settings_tab_account</string>
+	<string name="settings_tab_label_account">Conta</string>
+	<string name="settings_tab_tag_xmpp">edit_settings_tab_xmpp</string>
+	<string name="settings_tab_label_xmpp">XMPP</string>
+	<string name="settings_tab_tag_proxy">edit_settings_tab_proxy</string>
+	<string name="settings_tab_label_proxy">Proxy</string>
+
+
+	<!-- wizard activities -->
+	<string name="account_wizard_text1"><b>Bem vindo ao BEEM.</b>\n\nVocê ainda não configurou uma conta XMPP (Jabber).\nEscolha uma das opções :</string>
+	<string name="account_wizard_configure_text"><b>Por favor, preencha os dados da sua conta</b></string>
+	<string name="account_wizard_configure_account">Eu já tenho uma conta</string>
+	<string name="account_wizard_create_account">Quero criar uma conta</string>
+
+	<!-- Create an account Activity -->
+	<string name="create_account_instr_dialog_title">Criar conta - Instruções</string>
+	<string name="create_account_err_dialog_title">Criar conta - Erro</string>
+	<string name="create_account_err_dialog_settings_button">Alterar configurações</string>
+	<string name="create_account_close_dialog_button">Fechar</string>
+	<string name="create_account_successfull_after">conta %s foi criada com sucesso</string>
+	<string name="create_account_err_username">JabberID mal formado</string>
+	<string name="create_account_err_passwords">Senha não confere.</string>
+	<string name="create_account_username">Login</string>
+	<string name="create_account_password">Senha</string>
+	<string name="create_account_confirm_password">Confirmar senha</string>
+
+	<!-- ContactList Activity  -->
+	<string name="contact_list_menu_add_contact">Adicionar contato</string>
+	<string name="contact_list_menu_status">Alterar status</string>
+	<string name="contact_list_menu_settings">Configurações</string>
+	<string name="contact_list_menu_disconnect">Desconectar</string>
+	<string name="contact_list_all_contact">Todos os contatos</string>
+	<string name="contact_list_no_group">Sem grupo</string>
+
+	<!-- UserInfo dialog -->
+	<string name="userinfo_label_alias">Apelido</string>
+	<string name="userinfo_label_chg_group">Gerenciar grupos</string>
+	<string name="userinfo_label_re_subscription">Reenviar convite</string>
+	<string name="userinfo_label_block">BLoquear</string>
+	<string name="userinfo_label_delete">Apagar</string>
+	<string name="userinfo_resend">Reenviar subscrição</string>
+	<string name="userinfo_sure2delete">Tem certeza que deseja apagar esse contato?
+	</string>
+	<string name="userinfo_yes">Sim</string>
+	<string name="userinfo_no">Não</string>
+	<string name="userinfo_sureresend">Tem certeza que deseja reenviar o convite?</string>
+
+	<string name="chat_name">Beem - Conversa</string>
+	<string name="chat_input_default_value">Digite sua mensagem</string>
+	<string name="chat_self">Eu</string>
+	<string name="chat_error">Erro</string>
+	<string name="chat_send_message">Enviar</string>
+	<string name="chat_menu_contacts_list">Lista de contatos</string>
+	<string name="chat_menu_change_chat">Trocar janela de conversa</string>
+	<string name="chat_dialog_change_chat_title">Conversas abertas</string>
+	<string name="chat_menu_close_chat">Fechar essa conversa</string>
+	<string name="chat_no_more_chats">Sem outras conversas ativas</string>
+	<string name="chat_state_composing">está escrevendo uma mensagem</string>
+	<string name="chat_state_gone">deixou a conversa</string>
+	<string name="chat_state_active">presta atenção à conversa</string>
+	<string name="chat_state_inactive">está fazendo outra coisa</string>
+
+	<string name="contact_status_msg_available">Disponível</string>
+	<string name="contact_status_msg_available_chat">Disponível para conversar</string>
+	<string name="contact_status_msg_dnd">Ocupado</string>
+	<string name="contact_status_msg_away">Ausente</string>
+	<string name="contact_status_msg_xa">Indisponível</string>
+	<string name="contact_status_msg_offline">Desconectado</string>
+
+	<string name="privacy_list_name">Beem - Gerenciar minha lista de privacidade</string>
+	<string name="privacy_list_no_data">Não há nenhuma lista de privacidade registrada.</string>
+	<string name="privacy_list_menu_create">Criar lista de privacidade</string>
+	<string name="privacy_list_create_dialog_title">Criar lista de privacidade</string>
+	<string name="privacy_list_create_dialog_list_name_label">Título</string>
+	<string name="privacy_list_create_dialog_create_button">Criar</string>
+	<string name="privacy_list_select_dialog_buddies">Contatos</string>
+	<string name="privacy_list_select_dialog_groups">Grupos</string>
+	<string name="privacy_list_select_dialog_delete">Apagar</string>
+	<string name="privacy_list_delete_dialog_msg">Você realmente deseja apagar a lista de privacidade chamada \'%s\'?</string>
+	<string name="privacy_list_delete_dialog_yes">Sim</string>
+	<string name="privacy_list_delete_dialog_no">Não</string>
+
+	<string name="UpdateButton">Atualizar</string>
+	
+	<!-- Error messages -->
+	
+	<string name="error_login_authentication">Erro durante autenticação: login ou senha incorretos.</string>
+	
+	<string name="interna_server_error">Erro interno do servidor</string>
+	<string name="bad_request">bad-request</string>
+	<string name="forbidden">forbidden</string>
+	<string name="item_not_found">item-not-found</string>
+	<string name="conflict">conflict</string>
+	<string name="feature_not_implemented">feature-not-implemented</string>
+	<string name="gone">gone</string>
+	<string name="jid_malformed">jid-malformed</string>
+	<string name="no_acceptable">no-acceptable</string>
+	<string name="not_allowed">not-allowed</string>
+	<string name="not_authorized">not-authorized</string>
+	<string name="payment_required">payment-required</string>
+	<string name="recipient_unavailable">recipient-unavailable</string>
+	<string name="redirect">redirect</string>
+	<string name="registration_required">registration-required</string>
+	<string name="remote_server_not_found">Servidor remoto não encotrado</string>
+	<string name="remote_server_timeout">Sem resposta do servidor</string>
+	<string name="remote_server_error">Erro do servidor remoto</string>
+	<string name="resource_constraint">resource-constraint</string>
+	<string name="service_unavailable">service-unavailable</string>
+	<string name="subscription_required">subscription-required</string>
+	<string name="undefined_condition">undefined-condition</string>
+	<string name="unexpected_condition">unexpected-condition</string>
+	<string name="request_timeout">request-timeout</string>
+</resources>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/res/values-pt/strings.xml	Tue Jun 05 16:29:25 2012 +0200
@@ -0,0 +1,332 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+	<!-- Generic terms -->
+	<string name="app_name">Beem</string>
+	<string name="OkButton">Ok</string>
+	<string name="ClearButton">Limpar</string>
+	<string name="CancelButton">Cancelar</string>
+	<string name="AcceptButton">Autorizar</string>
+	<string name="RefuseButton">Negar</string>
+	<string name="JabberID">Jabber ID</string>
+	<string name="Password">Senha</string>
+	<string name="Continue">Continuar</string>
+
+	<!--  AccountConfigure class -->
+	<string name="AccountConfigureManualConfiguration">Configuração Manual</string>
+
+	<!--  Beem class -->
+	<string name="BeemJabberID">Jabber ID</string>
+
+	<!--  BeemApplication class -->
+	<string name="BeemApplicationConnect">Conectando...</string>
+
+	<!--  BeemService class -->
+	<string name="BeemServiceDescription">Utilizar Serviço Beem</string>
+	<string name="BeemServiceCreated">Serviço Beem Criado</string>
+	<string name="BeemServiceDestroyed">Serviço Beem Destruído</string>
+
+	<!--  ContactDialog class -->
+	<string name="CDChat">Conversa</string>
+	<string name="CDCall">Chamada</string>
+	<string name="CDInfos">Gerenciar Usuário</string>
+
+	<!-- AddContact class -->
+	<string name="AddCActTitle">Beem - Adicionar usuário</string>
+
+	<string name="AddCLogin">Login</string>
+	<string name="AddCAlias">Apelido</string>
+	<string name="AddCGroup">Grupo</string>
+	<string name="AddCOkButton">Adicionar</string>
+	<string name="AddCContactAdded">Contato Adicionado</string>
+	<string name="AddCContactAddedError">Erro: Contato não adicionado</string>
+	<string name="AddCContactAddedLoginError">Erro de login</string>
+	<string name="AddCBadForm">Jabber ID mal formado</string>
+	<string name="AddCContactAlready">Contato já existe</string>
+
+	<!--  ChangeStatus class -->
+	<string name="ChangeStatusActTitle">Beem - Alterar meu status</string>
+	<string name="ChangeStatusType">Meu status</string>
+	<string name="ChangeStatusMessage">Minha mensagem pessoal</string>
+	<string name="OpenContactList">Abrir lista de contatos</string>
+	
+	<string name="MenuAddContact">Adicionar contato</string>
+	<string name="MenuAccountAbout">Projeto Beem</string>
+	<string name="MenuAccountCreate">Criar conta</string>
+	<string name="MenuConnection">Editar conta</string>
+	<string name="ChangeStatusOk">Atualizando status</string>
+	<string name="ChangeStatusNoChange">Nada a alterar</string>
+	<string name="my_avatar">Meu avatar</string>
+	<string name="select_avatar">Escolha o seu avatar</string>
+	<string name="take_photo">Tirar uma foto</string>
+	<string name="pick_photo">Selecionar imagem</string>
+	<string name="delete_avatar">Sem avatar</string>
+	<string name="photoPickerNotFoundText">Selecionador de fotos não encontrado</string>
+
+
+	<!-- Settings class -->
+	<string name="SettingsText">Editar seu login</string>
+	<string name="SettingsPassword">Editar sua senha</string>
+	<string name="SettingsProxy">Proxy</string>
+	<string name="SettingsProxyProxy">Usar um servidor de proxy</string>
+	<string name="SettingsProxySummary">Efetuar login através de um proxy</string>
+	<string name="SettingsProxyType">Protocolo</string>
+	<string name="SettingsProxyTypeSummary">Selecione um tipo de proxy</string>
+	<string name="SettingsProxyServer">Editar endereço do proxy</string>
+	<string name="SettingsProxyPort">Editar porta do proxy</string>
+	<string name="SettingsProxyUser">Opcional, permite autenticar no servidor de proxy</string>
+	<string name="SettingsProxyPassword">Optional, permite autenticar no servidor de proxy</string>
+	<string name="SettingsAdvanced">Avançado</string>
+	<string name="SettingsAdvancedOptions">Opções de servidor</string>
+	<string name="SettingsAdvancedRecoDelay">Modificar atraso de conexão</string>
+	<string name="SettingsAdvancedSpecOpt">Marque essa caixa se você quer utilizar um servidor específico para a sua conexão</string>
+	<string name="SettingsAdvancedAddOpt">Editar o endereço do servidor</string>
+	<string name="SettingsAdvancedPortOpt">Editar a porta do servidor</string>
+	<string name="SettingsResourceTitle">Recurso</string>
+	<string name="SettingsPriorityTitle">Prioridade</string>
+	<string name="SettingsResourceSummary">Configurar o recurso XMPP do seu cliente</string>
+	<string name="SettingsPrioritySummary">Configurar a prioridade do seu cliente</string>
+	<string name="contact_list_preferences">Lista de contatos</string>
+	<string name="contact_list_preferences_sum">Um conjunto de opções de visualização para a sua lista de contatos
+	</string>
+	<string name="CLP_hide_groups">Ocultar grupos</string>	
+	<string name="CLP_hide_groups_sum">Marque essa opção para ocultar grupos</string>
+	<string name="CLP_hidden_contact">Ocultar contatos</string>
+	<string name="CLP_hidden_contact_sum">Marque essa opção para ocultar contatos desconectados
+	</string>
+	<string name="settings_account_username">Login (JID)</string>
+	<string name="login_username_info_default">beem@beem-project.com</string>
+	<string name="settings_account_password">Senha</string>
+	<string name="settings_account_server">Servidor</string>
+	<string name="settings_account_port">Porta</string>
+	<string name="settings_advanced_service_behaviour">Comportamento do serviço</string>
+	<string name="settings_advanced_sum">Um conjunto de opções para usuários avançados</string>
+	<string name="settings_xmpp_server">Endereço</string>
+	<string name="comments_xmpp_server">exemplo.com</string>
+	<string name="settings_xmpp_port">Porta</string>
+	<string name="settings_xmpp_use_tls">Requer SSL/TLS</string>
+	<string name="settings_reco_delay">Atraso de desconexão</string>
+	<string name="comments_xmpp_port">Padrão: 5222</string>
+	<string name="settings_proxy_sum">Configurações de uso de proxy</string>
+	<string name="settings_proxy_use">Conectar usando um proxy</string>
+	<string name="settings_proxy_type_prompt">Escolha o tipo de proxy</string>
+	<string name="settings_proxy_server">Servidor</string>
+	<string name="settings_proxy_port">Porta</string>
+	<string name="comments_proxy_port">Padrão: 1080</string>
+	<string name="settings_proxy_username">Login</string>
+	<string name="settings_proxy_password">Senha</string>
+	<string name="away_chk_title">Habilitar ausência automática</string>
+	<string name="away_chk_sum">Muda o statos para ausente quando a tela é desligada</string>
+	<string name="away_message_title">Mensagem de ausência</string>
+	<string name="away_message_sum">A mensagem de ausência que será exibida</string>
+	<string name="away_message_hint">Estou ausente, a tela do meu celular está desligada</string>
+	<string name="notification_preferences">Configurações de notificação</string>
+	<string name="notification_enable_vibrate_title">Vibrar</string>
+	<string name="notification_enable_vibrate_sum">Habilita a vibração quando receber mensagens</string>
+	<string name="notification_snd_title">Toque de mensagem</string>
+	<string name="notification_snd_sum">Configura o toque de recebimento de mensagens</string>
+	<string name="settings_chat_compact">Conversa compacta</string>
+	<string name="settings_chat_compact_sum">Habilita o modo compacto da janela de chat</string>
+	<string name="history">Histórico</string>
+	<string name="history_sum">Marque se você deseja gravar o histórico de conversas no seu cartão SD</string>
+	<string name="history_mount">Você precisa ter um cartão SD montado e com permissão de escrita para habilitar o histórico</string>
+	<string name="history_on_off">Habilita histórico de mensagens</string>
+	<string name="chat_preferences">Conversa</string>
+	<string name="chat_preferences_sum">Histórico, Tamanho do layout ...</string>
+	<string name="chat_history_path">Caminho do histórico</string>
+	<string name="chat_history_path_sum">Conversas serão gravadas em uma pasta no cartão SD</string>
+	<string name="settings_smack_debug">Habilitar debug XMPP</string>
+	<string name="settings_full_jid_login">Utilizar meu JID completo como login</string>
+	<string name="settings_full_jid_login_sum">Necessário para alguns servidores, como o Google Talk</string>
+
+	<!-- Subscription class -->
+	<string name="SubscriptAccept">Subscrição aceita</string>
+	<string name="SubscriptError">Erro de subscrição</string>
+	<string name="SubscriptRefused">Subscrição recusada</string>
+	<string name="SubscriptText">%s quer te adicionar como contato. Você autoriza?</string>
+	<string name="SubscriptTitle">Autorizar contato?</string>
+
+	<!--  BeemChatManager -->
+	<string name="BeemChatManagerNewMessage">Você tem uma nova mensagem</string>
+
+	<!--  BeemBroadcastReceiver class -->
+	<string name="BeemBroadcastReceiverDisconnect">BEEM: Você foi desconectado</string>
+
+	<!--  XmppConnectionAdapter class -->
+	<string name="AcceptContactRequest">%s te adicionou na lista de contatos.</string>
+	<string name="AcceptContactRequestFrom">Autorizar %s para contactar você.</string>
+
+	<!-- Activities -->
+	<string name="login_tag">Beem - Atividade de login</string>
+	<string name="edit_settings_name">Beem - Configurações</string>
+	<string name="edit_settings_tag">Beem - Atividade de configurações</string>
+	<string name="create_account_name">Beem - Criar uma conta</string>
+	<string name="create_account_tag">Beem - Atividade de criar conta</string>
+	<string name="contact_list_name">Beem - Lista de contatos</string>
+	<string name="contact_list_tag">Beem - Atividade de lista de contatos</string>
+	<string name="user_info_name">Beem - Informações de usuário</string>
+
+	<!-- Buttons -->
+	<string name="button_create_account">Criar conta</string>
+	<string name="button_create_login_account">Criar e utilizar conta</string>
+
+	<!-- LogAs Activity -->
+	<string name="login_username">Login</string>
+	<string name="login_password">Senha</string>
+	<string name="login_error_dialog_title">Login - Erro</string>
+	<string name="login_close_dialog_button">Fechar</string>
+	<string name="login_menu_create_account">Criar conta</string>
+	<string name="login_menu_settings">Configurações</string>
+	<string name="login_menu_about">Sobre</string>
+	<string name="login_about_title">Beem %s - Sobre</string>
+	<string name="login_about_msg">
+		Beem é um projeto da EPITECH Innovative Project. Visite
+		http://www.beem-project.com !
+	</string>
+	<string name="login_about_button">Fechar</string>
+	<string name="login_settings_button">Configurações</string>
+	<string name="login_login_button">Entrar</string>
+	<string name="login_login_progress">Conectando. Aguarde...</string>
+	<string name="login_error_msg">Infelizmente, ocorreu um erro.\n\nDetalhes
+		do erro:\n%s</string>
+	<string name="login_menu_login">Login</string>
+	<string name="login_no_connectivity">Conexão de internet não encontrada</string>
+	<string name="login_start_msg">Configurações incorretas</string>
+
+	<!-- LoginAnim activity -->
+	<string name="loganim_connecting">Conectando ...</string>
+	<string name="loganim_authenticating">Autenticando ...</string>
+	<string name="loganim_login_success">Entrou com sucesso</string>
+	<string name="loganim_login_failed">Falha no login</string>
+
+	<!-- EditSettings Activity -->
+	<string name="settings_menu_create_account">Criar conta</string>
+	<string name="settings_menu_privacy_lists">Gerenciar minha lista de privacidade</string>
+	<string name="settings_saved_ok">As configurações foram salvas com sucesso.</string>
+
+
+
+	<!-- EditSettings Activity Categories -->
+	<string name="general_preferences">Preferências gerais</string>
+	<string name="user_preferences">Configurações de usuário (requerido)</string>
+	<string name="user_preferences_advanced">Configurações avançadas de usuário (opcional)</string>
+	<string name="network_preferences">Opções de rede</string>
+	<string name="proxy_proxy_settings">Configurações de proxy</string>
+	<string name="proxy_user_settings">Configurações de proxy</string>
+	<string name="history_preferences">Histórico</string>
+	<string name="chat_layout_option">Layout da conversa</string>
+	
+
+	<!-- EditSettings Activity Tabs -->
+	<string name="settings_tab_tag_account">edit_settings_tab_account</string>
+	<string name="settings_tab_label_account">Conta</string>
+	<string name="settings_tab_tag_xmpp">edit_settings_tab_xmpp</string>
+	<string name="settings_tab_label_xmpp">XMPP</string>
+	<string name="settings_tab_tag_proxy">edit_settings_tab_proxy</string>
+	<string name="settings_tab_label_proxy">Proxy</string>
+
+
+	<!-- wizard activities -->
+	<string name="account_wizard_text1"><b>Bem vindo ao BEEM.</b>\n\nVocê ainda não configurou uma conta XMPP (Jabber).\nEscolha uma das opções :</string>
+	<string name="account_wizard_configure_text"><b>Por favor, preencha os dados da sua conta</b></string>
+	<string name="account_wizard_configure_account">Eu já tenho uma conta</string>
+	<string name="account_wizard_create_account">Quero criar uma conta</string>
+
+	<!-- Create an account Activity -->
+	<string name="create_account_instr_dialog_title">Criar conta - Instruções</string>
+	<string name="create_account_err_dialog_title">Criar conta - Erro</string>
+	<string name="create_account_err_dialog_settings_button">Alterar configurações</string>
+	<string name="create_account_close_dialog_button">Fechar</string>
+	<string name="create_account_successfull_after">conta %s foi criada com sucesso</string>
+	<string name="create_account_err_username">JabberID mal formado</string>
+	<string name="create_account_err_passwords">Senha não confere.</string>
+	<string name="create_account_username">Login</string>
+	<string name="create_account_password">Senha</string>
+	<string name="create_account_confirm_password">Confirmar senha</string>
+
+	<!-- ContactList Activity  -->
+	<string name="contact_list_menu_add_contact">Adicionar contato</string>
+	<string name="contact_list_menu_status">Alterar status</string>
+	<string name="contact_list_menu_settings">Configurações</string>
+	<string name="contact_list_menu_disconnect">Desconectar</string>
+	<string name="contact_list_all_contact">Todos os contatos</string>
+	<string name="contact_list_no_group">Sem grupo</string>
+
+	<!-- UserInfo dialog -->
+	<string name="userinfo_label_alias">Apelido</string>
+	<string name="userinfo_label_chg_group">Gerenciar grupos</string>
+	<string name="userinfo_label_re_subscription">Reenviar convite</string>
+	<string name="userinfo_label_block">BLoquear</string>
+	<string name="userinfo_label_delete">Apagar</string>
+	<string name="userinfo_resend">Reenviar subscrição</string>
+	<string name="userinfo_sure2delete">Tem certeza que deseja apagar esse contato?
+	</string>
+	<string name="userinfo_yes">Sim</string>
+	<string name="userinfo_no">Não</string>
+	<string name="userinfo_sureresend">Tem certeza que deseja reenviar o convite?</string>
+
+	<string name="chat_name">Beem - Conversa</string>
+	<string name="chat_input_default_value">Digite sua mensagem</string>
+	<string name="chat_self">Eu</string>
+	<string name="chat_error">Erro</string>
+	<string name="chat_send_message">Enviar</string>
+	<string name="chat_menu_contacts_list">Lista de contatos</string>
+	<string name="chat_menu_change_chat">Trocar janela de conversa</string>
+	<string name="chat_dialog_change_chat_title">Conversas abertas</string>
+	<string name="chat_menu_close_chat">Fechar essa conversa</string>
+	<string name="chat_no_more_chats">Sem outras conversas ativas</string>
+	<string name="chat_state_composing">está escrevendo uma mensagem</string>
+	<string name="chat_state_gone">deixou a conversa</string>
+	<string name="chat_state_active">presta atenção à conversa</string>
+	<string name="chat_state_inactive">está fazendo outra coisa</string>
+
+	<string name="contact_status_msg_available">Disponível</string>
+	<string name="contact_status_msg_available_chat">Disponível para conversar</string>
+	<string name="contact_status_msg_dnd">Ocupado</string>
+	<string name="contact_status_msg_away">Ausente</string>
+	<string name="contact_status_msg_xa">Indisponível</string>
+	<string name="contact_status_msg_offline">Desconectado</string>
+
+	<string name="privacy_list_name">Beem - Gerenciar minha lista de privacidade</string>
+	<string name="privacy_list_no_data">Não há nenhuma lista de privacidade registrada.</string>
+	<string name="privacy_list_menu_create">Criar lista de privacidade</string>
+	<string name="privacy_list_create_dialog_title">Criar lista de privacidade</string>
+	<string name="privacy_list_create_dialog_list_name_label">Título</string>
+	<string name="privacy_list_create_dialog_create_button">Criar</string>
+	<string name="privacy_list_select_dialog_buddies">Contatos</string>
+	<string name="privacy_list_select_dialog_groups">Grupos</string>
+	<string name="privacy_list_select_dialog_delete">Apagar</string>
+	<string name="privacy_list_delete_dialog_msg">Você realmente deseja apagar a lista de privacidade chamada \'%s\'?</string>
+	<string name="privacy_list_delete_dialog_yes">Sim</string>
+	<string name="privacy_list_delete_dialog_no">Não</string>
+
+	<string name="UpdateButton">Atualizar</string>
+	
+	<!-- Error messages -->
+	
+	<string name="error_login_authentication">Erro durante autenticação: login ou senha incorretos.</string>
+	
+	<string name="interna_server_error">Erro interno do servidor</string>
+	<string name="bad_request">bad-request</string>
+	<string name="forbidden">forbidden</string>
+	<string name="item_not_found">item-not-found</string>
+	<string name="conflict">conflict</string>
+	<string name="feature_not_implemented">feature-not-implemented</string>
+	<string name="gone">gone</string>
+	<string name="jid_malformed">jid-malformed</string>
+	<string name="no_acceptable">no-acceptable</string>
+	<string name="not_allowed">not-allowed</string>
+	<string name="not_authorized">not-authorized</string>
+	<string name="payment_required">payment-required</string>
+	<string name="recipient_unavailable">recipient-unavailable</string>
+	<string name="redirect">redirect</string>
+	<string name="registration_required">registration-required</string>
+	<string name="remote_server_not_found">Servidor remoto não encotrado</string>
+	<string name="remote_server_timeout">Sem resposta do servidor</string>
+	<string name="remote_server_error">Erro do servidor remoto</string>
+	<string name="resource_constraint">resource-constraint</string>
+	<string name="service_unavailable">service-unavailable</string>
+	<string name="subscription_required">subscription-required</string>
+	<string name="undefined_condition">undefined-condition</string>
+	<string name="unexpected_condition">unexpected-condition</string>
+	<string name="request_timeout">request-timeout</string>
+</resources>
--- a/res/values-ru/strings.xml	Tue Jan 18 00:26:02 2011 +0100
+++ b/res/values-ru/strings.xml	Tue Jun 05 16:29:25 2012 +0200
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <resources>
 <!-- Generic terms -->
 <string name="app_name">Beem</string>
@@ -7,17 +7,23 @@
 <string name="CancelButton">Отмена</string>
 <string name="AcceptButton">Разрешить</string>
 <string name="RefuseButton">Отказать</string>
-<string name="JabberID">JID</string>
+<string name="JabberID">Jabber ID</string>
 <string name="Password">Пароль</string>
+<string name="Continue">Продолжить</string>
+
+<!--  AccountConfigure class -->
+<string name="AccountConfigureManualConfiguration">Ручная конфигурация</string>
 
 <!--  Beem class -->
-<string name="BeemJabberID">JID</string>
+<string name="BeemJabberID">Jabber ID</string>
 
 <!--  BeemApplication class -->
-<string name="BeemApplicationConnect">Соединяемся...</string>
+<string name="BeemApplicationConnect">Соединение...</string>
 
 <!--  BeemService class -->
 <string name="BeemServiceDescription">Использовать сервис Beem</string>
+<string name="BeemServiceCreated">Сервис Beem создан</string>
+<string name="BeemServiceDestroyed">Сервис Beem уничтожен</string>
 
 <!--  ContactDialog class -->
 <string name="CDChat">Написать</string>
@@ -32,8 +38,9 @@
 <string name="AddCGroup">Группа</string>
 <string name="AddCOkButton">Добавить</string>
 <string name="AddCContactAdded">Контакт добавлен</string>
-<string name="AddCContactAddedError">При добавлении контакта возникла ошибка</string>
-<string name="AddCContactAddedLoginError">При выполнении входа возникла ошибка</string>
+<string name="AddCContactAddedError">Ошибка добавления контакта</string>
+<string name="AddCContactAddedLoginError">Ошибка входа</string>
+<string name="AddCBadForm"/>
 <string name="AddCContactAlready">Контакт уже добавлен</string>
 
 <!--  ChangeStatus class -->
@@ -46,40 +53,57 @@
 <string name="MenuAccountAbout">О проекте Beem</string>
 <string name="MenuAccountCreate">Создать аккаунт</string>
 <string name="MenuConnection">Изменить аккаунт</string>
-<string name="ChangeStatusOk">Обновляем статус...</string>
-<string name="ChangeStatusNoChange">Ничего не поменялось</string>
+<string name="ChangeStatusOk">Обновление статуса...</string>
+<string name="ChangeStatusNoChange">Ничего не изменилось</string>
+<string name="my_avatar">Мой аватар</string>
+<string name="select_avatar">Выберите свой аватар</string>
+<string name="take_photo">Снять фото</string>
+<string name="pick_photo">Выбрать фото</string>
+<string name="delete_avatar">Нет аватара</string>
+<string name="photoPickerNotFoundText">Нельзя выбрать фото</string>
 
-<!-- Settings class -->
+	<!-- Settings class -->
 <string name="SettingsText">Имя пользователя</string>
 <string name="SettingsPassword">Пароль</string>
 <string name="SettingsProxy">Прокси</string>
 <string name="SettingsProxyProxy">Использовать прокси</string>
+<string name="SettingsProxySummary">Соединяться через прокси</string>
 <string name="SettingsProxyType">Протокол</string>
 <string name="SettingsProxyTypeSummary">Выберите тип прокси</string>
 <string name="SettingsProxyServer">Сервер</string>
 <string name="SettingsProxyPort">Порт</string>
+<string name="SettingsProxyUser">Имя пользователя прокси (необязательно)</string>
+<string name="SettingsProxyPassword">Пароль пользователя прокси (необязательно)</string>
 <string name="SettingsAdvanced">Дополнительно</string>
 <string name="SettingsAdvancedOptions">Дополнительные настройки сервера</string>
 <string name="SettingsAdvancedRecoDelay">Изменить задержку повторного соединения</string>
+<string name="SettingsAdvancedSpecOpt">Отметьте для того, чтобы указать сервер вручную</string>
 <string name="SettingsAdvancedAddOpt">Сервер</string>
 <string name="SettingsAdvancedPortOpt">Порт</string>
-<string name="SettingsResourceTitle">Ресурс</string>
+<string name="SettingsResourceTitle">Метка</string>
 <string name="SettingsPriorityTitle">Приоритет</string>
+<string name="SettingsResourceSummary">Установить метку данного клиента</string>
+<string name="SettingsPrioritySummary">Установить приоритет данного клиента</string>
 <string name="contact_list_preferences">Список контактов</string>
-<string name="contact_list_preferences_sum">A set of display options for your buddy list
-</string>
+<string name="contact_list_preferences_sum">Опции отображения контактов</string>
 <string name="CLP_hide_groups">Скрывать группы</string>
+<string name="CLP_hide_groups_sum">Отметьте для того, чтобы спрятать группы</string>
 <string name="CLP_hidden_contact">Скрывать оффлайн-контакты</string>
-<string name="CLP_hidden_contact_sum">Check this option to hide unconnected buddies
-</string>
-<string name="settings_account_username">Имя польозвателя</string>
+<string name="CLP_hidden_contact_sum">Отметьте, чтобы спрятать контакты, которые не в сети</string>
+<string name="settings_account_username">Имя пользователя</string>
+<string name="login_username_info_default"/>
 <string name="settings_account_password">Пароль</string>
 <string name="settings_account_server">Сервер</string>
 <string name="settings_account_port">Порт</string>
+<string name="settings_advanced_service_behaviour"/>
+<string name="settings_advanced_sum">Расширенные настройки</string>
 <string name="settings_xmpp_server">Сервер</string>
+<string name="comments_xmpp_server"/>
 <string name="settings_xmpp_port">Порт</string>
 <string name="settings_xmpp_use_tls">Требовать SSL/TLS</string>
+<string name="settings_reco_delay"/>
 <string name="comments_xmpp_port">По умолчанию 5222</string>
+<string name="settings_proxy_sum"/>
 <string name="settings_proxy_use">Соединяться через прокси</string>
 <string name="settings_proxy_type_prompt">Выберите тип проси</string>
 <string name="settings_proxy_server">Сервер</string>
@@ -87,28 +111,60 @@
 <string name="comments_proxy_port">По умолчанию 1080</string>
 <string name="settings_proxy_username">Имя пользователя</string>
 <string name="settings_proxy_password">Пароль</string>
+<string name="away_chk_title">Включать автоматически \"Отошел\"</string>
+<string name="away_chk_sum">Устанавливать статус \"Отошел\" при отключении экрана</string>
+<string name="away_message_title">Сообщение об отсутствии</string>
+<string name="away_message_sum">Напишите сообщение об отсутствии</string>
+<string name="away_message_hint">Я отошел, экран телефона выключен</string>
 <string name="notification_preferences">Настройка оповещений</string>
 <string name="notification_enable_vibrate_title">Вибрация</string>
-<string name="notification_enable_vibrate_sum">Активировать вибрировать на входящие сообщения</string>
+<string name="notification_enable_vibrate_sum">Вибрировать при новых сообщениях</string>
 <string name="notification_snd_title">Сигнал сообщений</string>
+<string name="notification_snd_sum">Установить сигнал для пришедшего сообщения</string>
+<string name="settings_chat_compact">Компактный диалог</string>
+<string name="settings_chat_compact_sum">Сделать окно диалога компактным</string>
+<string name="history">История</string>
+<string name="history_sum">Пометьте для сохранения разговоров на SD карте</string>
+<string name="history_mount">Для сохранения истории необходима установленная SD карта с разрешённой записью</string>
+<string name="history_on_off">Разрешить сохранение истории</string>
+<string name="chat_preferences">Диалог</string>
+<string name="chat_preferences_sum">История, размер  диалога...</string>
+<string name="chat_history_path">Путь к истории</string>
+<string name="chat_history_path_sum">Путь к сохраняемым диалогам на SD карте</string>
+<string name="settings_smack_debug">Разрешить отладку XMPP</string>
+<string name="settings_full_jid_login">Использовать мой полный JID как имя пользователя</string>
+<string name="settings_full_jid_login_sum">Необходимо для некоторых серверов, например для Google Talk</string>
 
-
-<!-- Subscription class -->
+	<!-- Subscription class -->
+<string name="SubscriptAccept">Контакт авторизован</string>
+<string name="SubscriptError">Ошибка авторизации</string>
+<string name="SubscriptRefused">Авторизация отклонена</string>
+<string name="SubscriptText">%s желает добавить вас в свой контакт-лист. Авторизовать его(-е)?</string>
+<string name="SubscriptTitle">Авторизовать пользователя?</string>
 
 <!--  BeemChatManager -->
 <string name="BeemChatManagerNewMessage">Пришло новое сообщение</string>
 
 <!--  BeemBroadcastReceiver class -->
+<string name="BeemBroadcastReceiverDisconnect">Beem: Соединение разорвано</string>
 
 <!--  XmppConnectionAdapter class -->
+<string name="AcceptContactRequest">%s добавил(а) вас в свой контакт-лист.</string>
+<string name="AcceptContactRequestFrom">Авторизовать %s.</string>
 
 <!-- Activities -->
+<string name="login_tag"/>
 <string name="edit_settings_name">Настройки</string>
+<string name="edit_settings_tag"/>
 <string name="create_account_name">Создать аккаунт</string>
+<string name="create_account_tag"/>
 <string name="contact_list_name">Контакты</string>
+<string name="contact_list_tag"/>
 <string name="user_info_name">Информация о пользователе</string>
 
 <!-- Buttons -->
+<string name="button_create_account">Создать аккаунт</string>
+<string name="button_create_login_account">Создать аккаунт и подключиться</string>
 
 <!-- LogAs Activity -->
 <string name="login_username">Имя пользователя</string>
@@ -118,59 +174,71 @@
 <string name="login_menu_create_account">Создать аккаунт</string>
 <string name="login_menu_settings">Настройки</string>
 <string name="login_menu_about">О программе</string>
-<string name="login_about_msg">
-Beem is an EPITECH Innovative Project. Visit us at
-http://www.beem-project.com !
-</string>
+<string name="login_about_title">Beem %s - О программе</string>
+<string name="login_about_msg"/>
 <string name="login_about_button">Закрыть</string>
 <string name="login_settings_button">Настройки</string>
 <string name="login_login_button">Войти</string>
-<string name="login_login_progress">Соединяемся, подождите немного...</string>
-<string name="login_error_msg">Unfortunately, an error occured.\n\nError
-detail:\n%s</string>
+<string name="login_login_progress">Соединение. Пожалуйста, подождите...</string>
+<string name="login_error_msg">К сожалению, произошла ошибка.\n\nПодробности:\n%s</string>
 <string name="login_menu_login">Войти</string>
+<string name="login_no_connectivity">Интернет соединение не найдено</string>
+<string name="login_start_msg">Настройки в меню</string>
 
 <!-- LoginAnim activity -->
-<string name="loganim_connecting">Соединение ...</string>
-<string name="loganim_authenticating">Аутентификация ...</string>
-<string name="loganim_login_success">Логин успешной</string>
-<string name="loganim_login_failed">Не удалось войти в сеть</string>
+<string name="loganim_connecting">Соединение...</string>
+<string name="loganim_authenticating">Аутентификация...</string>
+<string name="loganim_login_success">Вход выполнен</string>
+<string name="loganim_login_failed">Не удалось войти</string>
 
 <!-- EditSettings Activity -->
 <string name="settings_menu_create_account">Создать аккаунт</string>
 <string name="settings_menu_privacy_lists">Настроить списки приватности</string>
-
-
+<string name="settings_saved_ok">Настройки успешно сохранены</string>
 
 <!-- EditSettings Activity Categories -->
+<string name="general_preferences">Общие настройки</string>
+<string name="user_preferences">Настройки пользователя (обязательные)</string>
+<string name="user_preferences_advanced">Расширенные настройки пользователя (дополнительные)</string>
 <string name="network_preferences">Настройки сети</string>
 <string name="proxy_proxy_settings">Настройки прокси</string>
 <string name="proxy_user_settings">Настройки прокси</string>
+<string name="history_preferences">История</string>
+<string name="chat_layout_option">Вид диалога</string>
 
-<!-- EditSettings Activity Tabs -->
+	<!-- EditSettings Activity Tabs -->
+<string name="settings_tab_tag_account"/>
 <string name="settings_tab_label_account">Аккаунт</string>
+<string name="settings_tab_tag_xmpp"/>
 <string name="settings_tab_label_xmpp">XMPP</string>
+<string name="settings_tab_tag_proxy"/>
 <string name="settings_tab_label_proxy">Прокси</string>
 
-
 <!-- wizard activities -->
+<string name="account_wizard_text1"><b>Добро пожаловать в Beem.</b>\n\nВы ещё не настроили аккаунт XMPP (Jabber).\nВыберите один из следующих вариантов :</string>
+<string name="account_wizard_configure_text"/>
 <string name="account_wizard_configure_account">Использовать существующий аккаунт</string>
 <string name="account_wizard_create_account">Создать новый аккаунт</string>
 
 <!-- Create an account Activity -->
-<string name="create_account_err_dialog_settings_button">Изменить настройки</string>
+<string name="create_account_instr_dialog_title">Создание учётной записи - Инструкция</string>
+<string name="create_account_err_dialog_title">Создание учётной записи - Ошибка</string>
+<string name="create_account_err_dialog_settings_button">Изменить мои настройки</string>
 <string name="create_account_close_dialog_button">Закрыть</string>
 <string name="create_account_successfull_after">Аккаунт %s успешно создан</string>
 <string name="create_account_err_username">Неправильный JID</string>
 <string name="create_account_err_passwords">Пароли не совпадают</string>
 <string name="create_account_username">Имя пользователя</string>
 <string name="create_account_password">Пароль</string>
-<string name="create_account_confirm_password">Ещё раз</string>
+<string name="create_account_confirm_password">Повторите пароль</string>
 
 <!-- ContactList Activity  -->
 <string name="contact_list_menu_add_contact">Добавить контакт</string>
+<string name="contact_list_menu_status">Сменить статус</string>
 <string name="contact_list_menu_settings">Настройки</string>
+<string name="contact_list_menu_disconnect">Отключиться</string>
 <string name="contact_list_all_contact">Все контакты</string>
+<string name="contact_list_no_group">Без группы</string>
 
 <!-- UserInfo dialog -->
 <string name="userinfo_label_alias">Псевдоним</string>
@@ -178,26 +246,31 @@
 <string name="userinfo_label_re_subscription">Выслать приглашение ещё раз</string>
 <string name="userinfo_label_block">Заблокировать</string>
 <string name="userinfo_label_delete">Удалить</string>
-<string name="userinfo_sure2delete">Are you sure you want to delete this contact ?
-</string>
+<string name="userinfo_resend"/>
+<string name="userinfo_sure2delete">Вы уверены, что хотите удалить этот контакт?</string>
 <string name="userinfo_yes">Да</string>
 <string name="userinfo_no">Нет</string>
+<string name="userinfo_sureresend">Вы уверены, что хотите повторно послать приглашение?</string>
 
 <string name="chat_name">Чат</string>
+<string name="chat_input_default_value">Введите сообщение тут</string>
 <string name="chat_self">Я</string>
 <string name="chat_error">Ошибка</string>
 <string name="chat_send_message">Отправить</string>
 <string name="chat_menu_contacts_list">Список контактов</string>
-<string name="chat_dialog_change_chat_title">Открытые чаты</string>
-<string name="chat_menu_close_chat">Закрыть этот чат</string>
-<string name="chat_state_composing">набирает текст</string>
-<string name="chat_state_gone">покинул чат</string>
+<string name="chat_menu_change_chat">Другая беседа</string>
+<string name="chat_dialog_change_chat_title">Открытые беседы</string>
+<string name="chat_menu_close_chat">Закрыть эту беседу</string>
+<string name="chat_no_more_chats">Нет активных бесед</string>
+<string name="chat_state_composing">пишет</string>
+<string name="chat_state_gone">закрыл(а) окно беседы</string>
 <string name="chat_state_active">вникает в текст</string>
 <string name="chat_state_inactive">занимается чем-то другим</string>
 
 <string name="contact_status_msg_available">Онлайн</string>
+<string name="contact_status_msg_available_chat">Доступен для разговора</string>
 <string name="contact_status_msg_dnd">Занят</string>
-<string name="contact_status_msg_away">Отошёл</string>
+<string name="contact_status_msg_away">Отошел</string>
 <string name="contact_status_msg_xa">Недоступен</string>
 <string name="contact_status_msg_offline">Оффлайн</string>
 
@@ -210,6 +283,7 @@
 <string name="privacy_list_select_dialog_buddies">Контакты</string>
 <string name="privacy_list_select_dialog_groups">Группы</string>
 <string name="privacy_list_select_dialog_delete">Удалить</string>
+<string name="privacy_list_delete_dialog_msg">Вы правда хотите удалить список приватности \'%s\' ?</string>
 <string name="privacy_list_delete_dialog_yes">Да</string>
 <string name="privacy_list_delete_dialog_no">Нет</string>
 
@@ -220,7 +294,27 @@
 <string name="error_login_authentication">Ошибка: неверно указан логин или пароль</string>
 
 <string name="interna_server_error">Ошибка сервера</string>
+<string name="bad_request">Ошибочный запрос</string>
+<string name="forbidden"/>
+<string name="item_not_found"/>
+<string name="conflict"/>
+<string name="feature_not_implemented">Возможность нереализована</string>
+<string name="gone"/>
+<string name="jid_malformed">Неверный JID</string>
+<string name="no_acceptable"/>
+<string name="not_allowed"/>
+<string name="not_authorized"/>
+<string name="payment_required"/>
+<string name="recipient_unavailable"/>
+<string name="redirect"/>
+<string name="registration_required"/>
 <string name="remote_server_not_found">Сервер не найден</string>
 <string name="remote_server_timeout">Сервер не отвечает</string>
 <string name="remote_server_error">Ошибка сервера</string>
-</resources>
+<string name="resource_constraint"/>
+<string name="service_unavailable"/>
+<string name="subscription_required"/>
+<string name="undefined_condition"/>
+<string name="unexpected_condition"/>
+<string name="request_timeout"/>
+</resources>
\ No newline at end of file
--- a/res/values-sv/strings.xml	Tue Jan 18 00:26:02 2011 +0100
+++ b/res/values-sv/strings.xml	Tue Jun 05 16:29:25 2012 +0200
@@ -55,6 +55,13 @@
 <string name="MenuConnection">Ändra konto</string>
 <string name="ChangeStatusOk">Uppdaterar status</string>
 <string name="ChangeStatusNoChange">Inget att ändra</string>
+<string name="my_avatar">Min avatar</string>
+<string name="select_avatar">Välj avatar</string>
+<string name="take_photo">Ta ett foto</string>
+<string name="pick_photo">Välj en bild</string>
+<string name="delete_avatar">Ingen avatar</string>
+<string name="photoPickerNotFoundText">Hittar ingen fotoväljare</string>
+
 
 <!-- Settings class -->
 <string name="SettingsText">Ändra ditt användarnamn</string>
@@ -86,13 +93,13 @@
 <string name="CLP_hidden_contact">Dölj kontakter</string>
 <string name="CLP_hidden_contact_sum">Check this option to hide unconnected buddies
 </string>
-<string name="settings_account_username">Användarnamn</string>
+<string name="settings_account_username">Användarnamn (JID)</string>
 <string name="login_username_info_default">beem@beem-project.com</string>
 <string name="settings_account_password">Lösenord</string>
 <string name="settings_account_server">Server</string>
 <string name="settings_account_port">Port</string>
 <string name="settings_advanced_service_behaviour">Tjänstebeskrivning</string>
-<string name="settings_advanced_sum">Ett antal inställningar för avancerade användare</string>
+<string name="settings_advanced_sum">Inställningar för avancerade användare</string>
 <string name="settings_xmpp_server">Adress</string>
 <string name="comments_xmpp_server">example.com</string>
 <string name="settings_xmpp_port">Port</string>
@@ -117,7 +124,19 @@
 <string name="notification_enable_vibrate_sum">Aktivera vibration vid inkommande meddelande</string>
 <string name="notification_snd_title">Meddelandesignal</string>
 <string name="notification_snd_sum">Ange signal för inkommande meddelanden</string>
-
+<string name="settings_chat_compact">Kompakt chatt</string>
+<string name="settings_chat_compact_sum">Gör chattfönstret kompakt</string>
+<string name="history">Historik</string>
+<string name="history_sum">Markera för att spara chattar på SD-kort</string>
+<string name="history_mount">Ett monterat och skrivbart SD-kort krävs för att aktivera historik</string>
+<string name="history_on_off">Aktivera historik</string>
+<string name="chat_preferences">Chatt</string>
+<string name="chat_preferences_sum">Historik, utseende mm.</string>
+<string name="chat_history_path">Sökväg till historik</string>
+<string name="chat_history_path_sum">Konversationer sparas i en mapp på SD-kortet</string>
+<string name="settings_smack_debug">Aktivera XMPP-felsökning</string>
+<string name="settings_full_jid_login">Använd fullständigt JID som användarnamn</string>
+<string name="settings_full_jid_login_sum">Krävs på vissa servrar som Google Talk</string>
 
 <!-- Subscription class -->
 <string name="SubscriptAccept">Prenumeration godkänd</string>
@@ -193,6 +212,9 @@
 <string name="network_preferences">Nätverksinställningar</string>
 <string name="proxy_proxy_settings">Proxyinställningar</string>
 <string name="proxy_user_settings">Proxyinställningar</string>
+<string name="history_preferences">Historik</string>
+<string name="chat_layout_option">Utseende</string>
+
 
 <!-- EditSettings Activity Tabs -->
 <string name="settings_tab_tag_account">edit_settings_tab_account</string>
@@ -216,7 +238,7 @@
 <string name="create_account_close_dialog_button">Stäng</string>
 <string name="create_account_successfull_after">kontot %s har skapats</string>
 <string name="create_account_err_username">Felaktigt Jabber-ID</string>
-<string name="create_account_err_passwords">Lösenorden är inte lika</string>
+<string name="create_account_err_passwords">Lösenorden är inte lika.</string>
 <string name="create_account_username">Användarnamn</string>
 <string name="create_account_password">Lösenord</string>
 <string name="create_account_confirm_password">Bekräfta lösenordet</string>
@@ -232,15 +254,15 @@
 <!-- UserInfo dialog -->
 <string name="userinfo_label_alias">Alias</string>
 <string name="userinfo_label_chg_group">Hantera grupper</string>
-<string name="userinfo_label_re_subscription">Skicka inbjudan igen</string>
+<string name="userinfo_label_re_subscription">Skicka förfrågan igen</string>
 <string name="userinfo_label_block">Spärra</string>
 <string name="userinfo_label_delete">Ta bort</string>
 <string name="userinfo_resend">Skicka prenumeration igen</string>
-<string name="userinfo_sure2delete">Are you sure you want to delete this contact ?
+<string name="userinfo_sure2delete">Are you sure you want to delete this contact?
 </string>
 <string name="userinfo_yes">Ja</string>
 <string name="userinfo_no">Nej</string>
-<string name="userinfo_sureresend">Är du säker på att du vill skicka prenumerationen igen?</string>
+<string name="userinfo_sureresend">Är du säker på att du vill skicka förfrågan igen?</string>
 
 <string name="chat_name">Beem - Chatt</string>
 <string name="chat_input_default_value">Skriv meddelande</string>
@@ -281,7 +303,7 @@
 
 <!-- Error messages -->
 
-<string name="error_login_authentication">Fel vid inloggning, fel ID eller lösenord</string>
+<string name="error_login_authentication">Fel vid inloggning, fel ID eller lösenord.</string>
 
 <string name="interna_server_error">Serverfel</string>
 <string name="bad_request">felaktig begäran</string>
@@ -306,5 +328,5 @@
 <string name="subscription_required">prenumeration krävs</string>
 <string name="undefined_condition">odefinierat tillstånd</string>
 <string name="unexpected_condition">oväntat tillstånd</string>
-<string name="request_timeout">Timeoutbegäran</string>
+<string name="request_timeout">timeout för begäran</string>
 </resources>
--- a/res/values-zh-rCN/strings.xml	Tue Jan 18 00:26:02 2011 +0100
+++ b/res/values-zh-rCN/strings.xml	Tue Jun 05 16:29:25 2012 +0200
@@ -1,306 +1,317 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-	<!-- Generic terms -->
-	<string name="app_name">Beem</string>
-	<string name="OkButton">确定</string>
-	<string name="ClearButton">清除</string>
-	<string name="CancelButton">取消</string>
-	<string name="AcceptButton">认证</string>
-	<string name="RefuseButton">拒绝</string>
-	<string name="JabberID">Jabber账号 </string>
-	<string name="Password">密码</string>
-
-	<!--  Beem class -->
-	<string name="BeemJabberID">Jabber账号 </string>
-
-	<!--  BeemApplication class -->
-	<string name="BeemApplicationConnect">连接中...</string>
-
-	<!--  BeemService class -->
-	<string name="BeemServiceDescription">使用Beem服务</string>
-	<string name="BeemServiceCreated">Beem服务已创建</string>
-	<string name="BeemServiceDestroyed">Beem服务已取消</string>
-
-	<!--  ContactDialog class -->
-	<string name="CDChat">聊天</string>
-	<string name="CDCall">呼叫</string>
-	<string name="CDInfos">用户管理</string>
-
-	<!-- AddContact class -->
-	<string name="AddCActTitle">Beem - 添加连接</string>
-
-	<string name="AddCLogin">用户名</string>
-	<string name="AddCAlias">别名</string>
-	<string name="AddCGroup">组</string>
-	<string name="AddCOkButton">添加</string>
-	<string name="AddCContactAdded">联系人已成功添加</string>
-	<string name="AddCContactAddedError">联系人添加错误</string>
-	<string name="AddCContactAddedLoginError">登录错误</string>
-	<string name="AddCBadForm">格式错误</string>
-	<string name="AddCContactAlready">联系人已存在</string>
-
-	<!--  ChangeStatus class -->
-	<string name="ChangeStatusActTitle">Beem - 改变我的状态</string>
-	<string name="ChangeStatusType">我的状态</string>
-	<string name="ChangeStatusMessage">我的个人消息</string>
-	<string name="OpenContactList">打开联系人列表</string>
-	
-	<string name="MenuAddContact">添加心联系人</string>
-	<string name="MenuAccountAbout">Beem项目</string>
-	<string name="MenuAccountCreate">创建账号</string>
-	<string name="MenuConnection">编辑账号</string>
-	<string name="ChangeStatusOk">更新状态</string>
-	<string name="ChangeStatusNoChange">没有东西需要改变</string>
-
-	<!-- Settings class -->
-	<string name="SettingsText">修改用户名</string>
-	<string name="SettingsPassword">修改密码</string>
-	<string name="SettingsProxy">代理</string>
-	<string name="SettingsProxyProxy">使用代理服务器</string>
-	<string name="SettingsProxySummary">通过代理服务器登录</string>
-	<string name="SettingsProxyType">协议</string>
-	<string name="SettingsProxyTypeSummary">选择代理类型</string>
-	<string name="SettingsProxyServer">修改代理服务器地址</string>
-	<string name="SettingsProxyPort">修改地理服务器端口</string>
-	<string name="SettingsProxyUser">可选,允许在代理服务器上注册</string>
-	<string name="SettingsProxyPassword">可选,允许在代理服务器上注册</string>
-	<string name="SettingsAdvanced">高级</string>
-	<string name="SettingsAdvancedOptions">特定服务器选项</string>
-	<string name="SettingsAdvancedRecoDelay">修改重连延时</string>
-	<string name="SettingsAdvancedSpecOpt">勾选此选项以连接到特定的服务器.</string>
-	<string name="SettingsAdvancedAddOpt">编辑服务器地址</string>
-	<string name="SettingsAdvancedPortOpt">编辑服务器端口</string>
-	<string name="SettingsResourceTitle">资源</string>
-	<string name="SettingsPriorityTitle">优先级</string>
-	<string name="SettingsResourceSummary">设定客户端XMPP资源</string>
-	<string name="SettingsPrioritySummary">设定客户端优先级</string>
-	<string name="contact_list_preferences">好友列表</string>
-	<string name="contact_list_preferences_sum">好友列表显示选项
-	</string>
-	<string name="CLP_hide_groups">隐藏组</string>	
-	<string name="CLP_hide_groups_sum">勾选此选项隐藏组</string>
-	<string name="CLP_hidden_contact">隐藏好友</string>
-	<string name="CLP_hidden_contact_sum">勾选此选项隐藏未登录好友
-	</string>
-	<string name="settings_account_username">用户名</string>
-	<string name="login_username_info_default">beem@beem-project.com</string>
-	<string name="settings_account_password">密码</string>
-	<string name="settings_account_server">服务器</string>
-	<string name="settings_account_port">端口</string>
-	<string name="settings_advanced_service_behaviour">服务器行为</string>
-	<string name="settings_advanced_sum">高级用户设置</string>
-	<string name="settings_xmpp_server">地址</string>
-	<string name="comments_xmpp_server">example.com</string>
-	<string name="settings_xmpp_port">端口</string>
-	<string name="settings_xmpp_use_tls">使用SSL/TLS</string>
-	<string name="settings_reco_delay">重连延时</string>
-	<string name="comments_xmpp_port">默认端口:5222</string>
-	<string name="settings_proxy_sum">代理设置</string>
-	<string name="settings_proxy_use">使用代理连接</string>
-	<string name="settings_proxy_type_prompt">选择代理类型</string>
-	<string name="settings_proxy_server">服务器</string>
-	<string name="settings_proxy_port">端口</string>
-	<string name="comments_proxy_port">默认端口:1080</string>
-	<string name="settings_proxy_username">用户名</string>
-	<string name="settings_proxy_password">密码</string>
-	<string name="away_chk_title">启用自动离开</string>
-	<string name="away_chk_sum">当屏幕关闭是将状态改为离开</string>
-	<string name="away_message_title">离开留言</string>
-	<string name="away_message_sum">将会显示的离开留言</string>
-	<string name="away_message_hint">我现在不在,我的手机屏幕关闭了</string>
-	<string name="notification_preferences">通知设置</string>
-	<string name="notification_enable_vibrate_title">开启震动</string>
-	<string name="notification_enable_vibrate_sum">开启来信时的震动提示</string>
-	<string name="notification_snd_title">消息提示音</string>
-	<string name="notification_snd_sum">设定消息提示音</string>
-
-	
-	<!-- Subscription class -->
-	<string name="SubscriptAccept">订阅已经接受</string>
-	<string name="SubscriptError">订阅错误</string>
-	<string name="SubscriptRefused">订阅被拒绝</string>
-	<string name="SubscriptText">%s 想要添加你到他/她的好友列表.批准他/她的请求吗?</string>
-	<string name="SubscriptTitle">批准好友请求?</string>
-
-	<!--  BeemChatManager -->
-	<string name="BeemChatManagerNewMessage">你有一个新消息</string>
-
-	<!--  BeemBroadcastReceiver class -->
-	<string name="BeemBroadcastReceiverDisconnect">BEEM:你的连接已断开</string>
-
-	<!--  XmppConnectionAdapter class -->
-	<string name="AcceptContactRequest">%s刚将你添加到他/她的好友列表.</string>
-	<string name="AcceptContactRequestFrom">批准%s联系你</string>
-
-	<!-- Activities -->
-	<string name="login_tag">Beem - 登录中</string>
-	<string name="edit_settings_name">Beem - 设置</string>
-	<string name="edit_settings_tag">Beem - 编制设置</string>
-	<string name="create_account_name">Beem - 创建新账号 </string>
-	<string name="create_account_tag">Beem - 创建新账号中</string>
-	<string name="contact_list_name">Beem - 联系人</string>
-	<string name="contact_list_tag">Beem - 联系人列表</string>
-	<string name="user_info_name">Beem - 用户信息</string>
-
-	<!-- Buttons -->
-	<string name="button_create_account">创建这个账户</string>
-	<string name="button_create_login_account">创建并使用这个账户</string>
-
-	<!-- LogAs Activity -->
-	<string name="login_username">用户名</string>
-	<string name="login_password">密码</string>
-	<string name="login_error_dialog_title">登录 - 错误</string>
-	<string name="login_close_dialog_button">关闭</string>
-	<string name="login_menu_create_account">创建一个账号</string>
-	<string name="login_menu_settings">设置</string>
-	<string name="login_menu_about">关于</string>
-	<string name="login_about_title">Beem %s - 关于</string>
-	<string name="login_about_msg">
-		Beem是一个欧洲理工学院的创新项目.访问我们的网站
-		http://www.beem-project.com !
-	</string>
-	<string name="login_about_button">关闭</string>
-	<string name="login_settings_button">设置</string>
-	<string name="login_login_button">登录</string>
-	<string name="login_login_progress">连接中,请等待...</string>
-	<string name="login_error_msg">很遗憾,发生一个错误.\n\nE错误
-		详情:\n%s</string>
-	<string name="login_menu_login">登陆</string>
-	<string name="login_no_connectivity">没有可用连接</string>
-	<string name="login_start_msg">菜单设置配置</string>
-
-	<!-- LoginAnim activity -->
-	<string name="loganim_connecting">正在连接 ...</string>
-	<string name="loganim_authenticating">正在验证 ...</string>
-	<string name="loganim_login_success">登陆成功</string>
-	<string name="loganim_login_failed">登陆失败</string>
-
-	<!-- EditSettings Activity -->
-	<string name="settings_menu_create_account">创建一个账号</string>
-	<string name="settings_menu_privacy_lists">管理隐私列表</string>
-	<string name="settings_saved_ok">设置已成功保存</string>
-
-
-
-	<!-- EditSettings Activity Categories -->
-	<string name="general_preferences">通用选项</string>
-	<string name="user_preferences">用户设置 (必须)</string>
-	<string name="user_preferences_advanced">高级用户设置(可选)</string>
-	<string name="network_preferences">网络选项</string>
-	<string name="proxy_proxy_settings">代理选项</string>
-	<string name="proxy_user_settings">代理选项</string>
-
-	<!-- EditSettings Activity Tabs -->
-	<string name="settings_tab_tag_account">edit_settings_tab_account</string>
-	<string name="settings_tab_label_account">帐户</string>
-	<string name="settings_tab_tag_xmpp">edit_settings_tab_xmpp</string>
-	<string name="settings_tab_label_xmpp">XMPP</string>
-	<string name="settings_tab_tag_proxy">edit_settings_tab_proxy</string>
-	<string name="settings_tab_label_proxy">代理</string>
-
-
-	<!-- wizard activities -->
-	<string name="account_wizard_text1"><b>欢迎使用BEEM.</b>\n\n您还没有设定XMPP (Jabber)账户.请选择下面的选项。\n请选择下面的选项:</string>
-	<string name="account_wizard_configure_text"><b>请输入您已有账号的信息</b></string>
-	<string name="account_wizard_configure_account">我想使用我已有的账号</string>
-	<string name="account_wizard_create_account">我想创建一个新账号</string>
-
-	<!-- Create an account Activity -->
-	<string name="create_account_instr_dialog_title">创建新账号 - 向导</string>
-	<string name="create_account_err_dialog_title">创建新账号 - 错误</string>
-	<string name="create_account_err_dialog_settings_button">修改设置</string>
-	<string name="create_account_close_dialog_button">关闭</string>
-	<string name="create_account_successfull_after">账号%s已成功创建</string>
-	<string name="create_account_err_username">错误的Jabber ID</string>
-	<string name="create_account_err_passwords">密码不匹配。</string>
-	<string name="create_account_username">用户名</string>
-	<string name="create_account_password">密码</string>
-	<string name="create_account_confirm_password">确认密码</string>
-
-	<!-- ContactList Activity  -->
-	<string name="contact_list_menu_add_contact">添加联系人</string>
-	<string name="contact_list_menu_status">更改状态</string>
-	<string name="contact_list_menu_settings">设置</string>
-	<string name="contact_list_menu_disconnect">断开连接</string>
-	<string name="contact_list_all_contact">所有联系人</string>
-	<string name="contact_list_no_group">没有组</string>
-
-	<!-- UserInfo dialog -->
-	<string name="userinfo_label_alias">别名</string>
-	<string name="userinfo_label_chg_group">管理组</string>
-	<string name="userinfo_label_re_subscription">重新发送邀请</string>
-	<string name="userinfo_label_block">阻止</string>
-	<string name="userinfo_label_delete">删除</string>
-	<string name="userinfo_resend">重新发送订阅</string>
-	<string name="userinfo_sure2delete">确定删除该联系人?
-	</string>
-	<string name="userinfo_yes">是</string>
-	<string name="userinfo_no">否</string>
-	<string name="userinfo_sureresend">确定要重新发送邀请吗?</string>
-
-	<string name="chat_name">Beem - 聊天</string>
-	<string name="chat_input_default_value">输入信息</string>
-	<string name="chat_self">我</string>
-	<string name="chat_error">错误</string>
-	<string name="chat_send_message">发送</string>
-	<string name="chat_menu_contacts_list">联系人列表</string>
-	<string name="chat_menu_change_chat">切换聊天窗口</string>
-	<string name="chat_dialog_change_chat_title">打开聊天窗口</string>
-	<string name="chat_menu_close_chat">关闭聊天窗口</string>
-	<string name="chat_no_more_chats">没有活动的聊天窗口</string>
-	<string name="chat_state_composing">正在输入信息</string>
-	<string name="chat_state_gone">已经离开了会话</string>
-	<string name="chat_state_active">关注会话</string>
-	<string name="chat_state_inactive">正在做其他事情</string>
-
-	<string name="contact_status_msg_available">我有空</string>
-	<string name="contact_status_msg_available_chat">我有空聊天</string>
-	<string name="contact_status_msg_dnd">请勿打扰</string>
-	<string name="contact_status_msg_away">离开</string>
-	<string name="contact_status_msg_xa">没有空</string>
-	<string name="contact_status_msg_offline">连接已断开</string>
-
-	<string name="privacy_list_name">Beem - 管理我的隐私列表</string>
-	<string name="privacy_list_no_data">没有隐私列表</string>
-	<string name="privacy_list_menu_create">创建隐私列表</string>
-	<string name="privacy_list_create_dialog_title">创建隐私列表</string>
-	<string name="privacy_list_create_dialog_list_name_label">标题</string>
-	<string name="privacy_list_create_dialog_create_button">创建</string>
-	<string name="privacy_list_select_dialog_buddies">好友</string>
-	<string name="privacy_list_select_dialog_groups">组</string>
-	<string name="privacy_list_select_dialog_delete">删除</string>
-	<string name="privacy_list_delete_dialog_msg">确定要删除 \'%s\'隐私列表吗 ?</string>
-	<string name="privacy_list_delete_dialog_yes">是</string>
-	<string name="privacy_list_delete_dialog_no">否</string>
-
-	<string name="UpdateButton">更新</string>
-	
-	<!-- Error messages -->
-	
-	<string name="error_login_authentication">验证时发生错误,用户名或者密码错误.</string>
-	
-	<string name="interna_server_error">远程服务器错误</string>
-	<string name="bad_request">bad-request</string>
-	<string name="forbidden">被拒绝</string>
-	<string name="item_not_found">item-not-found</string>
-	<string name="conflict">冲突</string>
-	<string name="feature_not_implemented">feature-not-implemented</string>
-	<string name="gone">离开</string>
-	<string name="jid_malformed">jid-malformed</string>
-	<string name="no_acceptable">no-acceptable</string>
-	<string name="not_allowed">not-allowed</string>
-	<string name="not_authorized">not-authorized</string>
-	<string name="payment_required">payment-required</string>
-	<string name="recipient_unavailable">recipient-unavailable</string>
-	<string name="redirect">redirect</string>
-	<string name="registration_required">registration-required</string>
-	<string name="remote_server_not_found">未发现远程服务器</string>
-	<string name="remote_server_timeout">远程服务器未响应</string>
-	<string name="remote_server_error">远程服务器错误</string>
-	<string name="resource_constraint">resource-constraint</string>
-	<string name="service_unavailable">service-unavailable</string>
-	<string name="subscription_required">subscription-required</string>
-	<string name="undefined_condition">undefined-condition</string>
-	<string name="unexpected_condition">unexpected-condition</string>
-	<string name="request_timeout">request-timeout</string>
-</resources>
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+<!-- Generic terms -->
+<string name="app_name">Beem</string>
+<string name="OkButton">确定</string>
+<string name="ClearButton">清除</string>
+<string name="CancelButton">取消</string>
+<string name="AcceptButton">认证</string>
+<string name="RefuseButton">拒绝</string>
+<string name="JabberID">Jabber账号 </string>
+<string name="Password">密码</string>
+<string name="Continue">继续</string>
+
+<!--  AccountConfigure class -->
+<string name="AccountConfigureManualConfiguration">手动设置</string>
+
+<!--  Beem class -->
+<string name="BeemJabberID">Jabber账号 </string>
+
+<!--  BeemApplication class -->
+<string name="BeemApplicationConnect">连接中...</string>
+
+<!--  BeemService class -->
+<string name="BeemServiceDescription">使用Beem服务</string>
+<string name="BeemServiceCreated">Beem服务已创建</string>
+<string name="BeemServiceDestroyed">Beem服务已取消</string>
+
+<!--  ContactDialog class -->
+<string name="CDChat">聊天</string>
+<string name="CDCall">呼叫</string>
+<string name="CDInfos">用户管理</string>
+
+<!-- AddContact class -->
+<string name="AddCActTitle">Beem - 添加连接</string>
+
+<string name="AddCLogin">用户名</string>
+<string name="AddCAlias">别名</string>
+<string name="AddCGroup">组</string>
+<string name="AddCOkButton">添加</string>
+<string name="AddCContactAdded">联系人已成功添加</string>
+<string name="AddCContactAddedError">联系人添加错误</string>
+<string name="AddCContactAddedLoginError">登录错误</string>
+<string name="AddCBadForm">格式错误</string>
+<string name="AddCContactAlready">联系人已存在</string>
+
+<!--  ChangeStatus class -->
+<string name="ChangeStatusActTitle">Beem - 改变我的状态</string>
+<string name="ChangeStatusType">我的状态</string>
+<string name="ChangeStatusMessage">我的个人消息</string>
+<string name="OpenContactList">打开联系人列表</string>
+
+<string name="MenuAddContact">添加心联系人</string>
+<string name="MenuAccountAbout">Beem项目</string>
+<string name="MenuAccountCreate">创建账号</string>
+<string name="MenuConnection">编辑账号</string>
+<string name="ChangeStatusOk">更新状态</string>
+<string name="ChangeStatusNoChange">没有东西需要改变</string>
+
+<!-- Settings class -->
+<string name="SettingsText">修改用户名</string>
+<string name="SettingsPassword">修改密码</string>
+<string name="SettingsProxy">代理</string>
+<string name="SettingsProxyProxy">使用代理服务器</string>
+<string name="SettingsProxySummary">通过代理服务器登录</string>
+<string name="SettingsProxyType">协议</string>
+<string name="SettingsProxyTypeSummary">选择代理类型</string>
+<string name="SettingsProxyServer">修改代理服务器地址</string>
+<string name="SettingsProxyPort">修改地理服务器端口</string>
+<string name="SettingsProxyUser">可选,允许在代理服务器上注册</string>
+<string name="SettingsProxyPassword">可选,允许在代理服务器上注册</string>
+<string name="SettingsAdvanced">高级</string>
+<string name="SettingsAdvancedOptions">特定服务器选项</string>
+<string name="SettingsAdvancedRecoDelay">修改重连延时</string>
+<string name="SettingsAdvancedSpecOpt">勾选此选项以连接到特定的服务器.</string>
+<string name="SettingsAdvancedAddOpt">编辑服务器地址</string>
+<string name="SettingsAdvancedPortOpt">编辑服务器端口</string>
+<string name="SettingsResourceTitle">资源</string>
+<string name="SettingsPriorityTitle">优先级</string>
+<string name="SettingsResourceSummary">设定客户端XMPP资源</string>
+<string name="SettingsPrioritySummary">设定客户端优先级</string>
+<string name="contact_list_preferences">好友列表</string>
+<string name="contact_list_preferences_sum">A set of display options for your buddy list
+</string>
+<string name="CLP_hide_groups">隐藏组</string>
+<string name="CLP_hide_groups_sum">勾选此选项隐藏组</string>
+<string name="CLP_hidden_contact">隐藏好友</string>
+<string name="CLP_hidden_contact_sum">Check this option to hide unconnected buddies
+</string>
+<string name="settings_account_username">用户名</string>
+<string name="login_username_info_default">beem@beem-project.com</string>
+<string name="settings_account_password">密码</string>
+<string name="settings_account_server">服务器</string>
+<string name="settings_account_port">端口</string>
+<string name="settings_advanced_service_behaviour">服务器行为</string>
+<string name="settings_advanced_sum">高级用户设置</string>
+<string name="settings_xmpp_server">地址</string>
+<string name="comments_xmpp_server">example.com</string>
+<string name="settings_xmpp_port">端口</string>
+<string name="settings_xmpp_use_tls">使用SSL/TLS</string>
+<string name="settings_reco_delay">重连延时</string>
+<string name="comments_xmpp_port">默认端口:5222</string>
+<string name="settings_proxy_sum">代理设置</string>
+<string name="settings_proxy_use">使用代理连接</string>
+<string name="settings_proxy_type_prompt">选择代理类型</string>
+<string name="settings_proxy_server">服务器</string>
+<string name="settings_proxy_port">端口</string>
+<string name="comments_proxy_port">默认端口:1080</string>
+<string name="settings_proxy_username">用户名</string>
+<string name="settings_proxy_password">密码</string>
+<string name="away_chk_title">启用自动离开</string>
+<string name="away_chk_sum">当屏幕关闭是将状态改为离开</string>
+<string name="away_message_title">离开留言</string>
+<string name="away_message_sum">将会显示的离开留言</string>
+<string name="away_message_hint">我现在不在,我的手机屏幕关闭了</string>
+<string name="notification_preferences">通知设置</string>
+<string name="notification_enable_vibrate_title">允许振动</string>
+<string name="notification_enable_vibrate_sum">有消息来时振动</string>
+<string name="notification_snd_title">消息提示音</string>
+<string name="notification_snd_sum">设定消息提示音</string>
+<string name="settings_chat_compact">聊天协议</string>
+<string name="settings_chat_compact_sum">设定聊天协议</string>
+<string name="history">历史记录</string>
+<string name="history_mount">你需要有已插入设备并可以写入的SD存储来允许历史记录</string>
+<string name="history_on_off">允许历史记录</string>
+<string name="settings_smack_debug">允许XMPPP调试</string>
+<string name="settings_full_jid_login">使用我完整的Jid作为用户名</string>
+<string name="settings_full_jid_login_sum">某些例如Google Talk这样的服务器需要</string>
+
+<!-- Subscription class -->
+<string name="SubscriptAccept">订阅已经接受</string>
+<string name="SubscriptError">订阅错误</string>
+<string name="SubscriptRefused">订阅被拒绝</string>
+<string name="SubscriptText">%s 想要添加你到他/她的好友列表.批准他/她的请求吗?</string>
+<string name="SubscriptTitle">批准好友请求?</string>
+
+<!--  BeemChatManager -->
+<string name="BeemChatManagerNewMessage">你有一个新消息</string>
+
+<!--  BeemBroadcastReceiver class -->
+<string name="BeemBroadcastReceiverDisconnect">BEEM:你的连接已断开</string>
+
+<!--  XmppConnectionAdapter class -->
+<string name="AcceptContactRequest">%s刚将你添加到他/她的好友列表.</string>
+<string name="AcceptContactRequestFrom">批准%s联系你</string>
+
+<!-- Activities -->
+<string name="login_tag">Beem - 登录中</string>
+<string name="edit_settings_name">Beem - 设置</string>
+<string name="edit_settings_tag">Beem - 编制设置</string>
+<string name="create_account_name">Beem - 创建新账号 </string>
+<string name="create_account_tag">Beem - 创建新账号中</string>
+<string name="contact_list_name">Beem - 联系人</string>
+<string name="contact_list_tag">Beem - 联系人列表</string>
+<string name="user_info_name">Beem - 用户信息</string>
+
+<!-- Buttons -->
+<string name="button_create_account">创建这个账户</string>
+<string name="button_create_login_account">创建并使用这个账户</string>
+
+<!-- LogAs Activity -->
+<string name="login_username">用户名</string>
+<string name="login_password">密码</string>
+<string name="login_error_dialog_title">登录 - 错误</string>
+<string name="login_close_dialog_button">关闭</string>
+<string name="login_menu_create_account">创建一个账号</string>
+<string name="login_menu_settings">设置</string>
+<string name="login_menu_about">关于</string>
+<string name="login_about_title">Beem %s - 关于</string>
+<string name="login_about_msg">
+Beem is an EPITECH Innovative Project. Visit us at
+http://www.beem-project.com !
+</string>
+<string name="login_about_button">关闭</string>
+<string name="login_settings_button">设置</string>
+<string name="login_login_button">登录</string>
+<string name="login_login_progress">连接中,请等待...</string>
+<string name="login_error_msg">Unfortunately, an error occured.\n\nError
+detail:\n%s</string>
+<string name="login_menu_login">登陆</string>
+<string name="login_no_connectivity">没有可用连接</string>
+<string name="login_start_msg">菜单设置配置</string>
+
+<!-- LoginAnim activity -->
+<string name="loganim_connecting">连接中...</string>
+<string name="loganim_authenticating">验证中...</string>
+<string name="loganim_login_success">登录成功</string>
+<string name="loganim_login_failed">登录失败</string>
+
+<!-- EditSettings Activity -->
+<string name="settings_menu_create_account">创建一个账号</string>
+<string name="settings_menu_privacy_lists">管理隐私列表</string>
+<string name="settings_saved_ok">设置已成功保存</string>
+
+
+
+<!-- EditSettings Activity Categories -->
+<string name="general_preferences">通用选项</string>
+<string name="user_preferences">用户设置 (必须)</string>
+<string name="user_preferences_advanced">高级用户设置(可选)</string>
+<string name="network_preferences">网络选项</string>
+<string name="proxy_proxy_settings">代理选项</string>
+<string name="proxy_user_settings">代理选项</string>
+
+<!-- EditSettings Activity Tabs -->
+<string name="settings_tab_tag_account">编辑账户设定</string>
+<string name="settings_tab_label_account">帐户</string>
+<string name="settings_tab_tag_xmpp">编辑XMPP设置</string>
+<string name="settings_tab_label_xmpp">XMPP</string>
+<string name="settings_tab_tag_proxy">编辑代理设置</string>
+<string name="settings_tab_label_proxy">代理</string>
+
+
+<!-- wizard activities -->
+<string name="account_wizard_text1"><b>欢迎使用BEEM.</b>\n\n您还没有设定XMPP (Jabber)账户.请选择下面的选项。\n请选择下面的选项:</string>
+<string name="account_wizard_configure_text"><b>请输入您已有账号的信息</b></string>
+<string name="account_wizard_configure_account">我想使用我已有的账号</string>
+<string name="account_wizard_create_account">我想创建一个新账号</string>
+
+<!-- Create an account Activity -->
+<string name="create_account_instr_dialog_title">创建新账号 - 向导</string>
+<string name="create_account_err_dialog_title">创建新账号 - 错误</string>
+<string name="create_account_err_dialog_settings_button">修改设置</string>
+<string name="create_account_close_dialog_button">关闭</string>
+<string name="create_account_successfull_after">账号%s已成功创建</string>
+<string name="create_account_err_username">错误的Jabber ID</string>
+<string name="create_account_err_passwords">密码不匹配。</string>
+<string name="create_account_username">用户名</string>
+<string name="create_account_password">密码</string>
+<string name="create_account_confirm_password">确认密码</string>
+
+<!-- ContactList Activity  -->
+<string name="contact_list_menu_add_contact">添加联系人</string>
+<string name="contact_list_menu_status">改变状态</string>
+<string name="contact_list_menu_settings">设置</string>
+<string name="contact_list_menu_disconnect">断开连接</string>
+<string name="contact_list_all_contact">所有联系人</string>
+<string name="contact_list_no_group">没有组</string>
+
+<!-- UserInfo dialog -->
+<string name="userinfo_label_alias">别名</string>
+<string name="userinfo_label_chg_group">管理组</string>
+<string name="userinfo_label_re_subscription">重新发送邀请</string>
+<string name="userinfo_label_block">阻止</string>
+<string name="userinfo_label_delete">删除</string>
+<string name="userinfo_resend">重新发送订阅</string>
+<string name="userinfo_sure2delete">Are you sure you want to delete this contact ?
+</string>
+<string name="userinfo_yes">是</string>
+<string name="userinfo_no">否</string>
+<string name="userinfo_sureresend">确定要重新发送邀请吗?</string>
+
+<string name="chat_name">Beem - 聊天</string>
+<string name="chat_input_default_value">输入信息</string>
+<string name="chat_self">我</string>
+<string name="chat_error">错误</string>
+<string name="chat_send_message">发送</string>
+<string name="chat_menu_contacts_list">联系人列表</string>
+<string name="chat_menu_change_chat">切换聊天窗口</string>
+<string name="chat_dialog_change_chat_title">打开聊天窗口</string>
+<string name="chat_menu_close_chat">关闭聊天窗口</string>
+<string name="chat_no_more_chats">没有活动的聊天窗口</string>
+<string name="chat_state_composing">正在输入信息</string>
+<string name="chat_state_gone">已经离开了会话</string>
+<string name="chat_state_active">关注会话</string>
+<string name="chat_state_inactive">正在做其他事情</string>
+
+<string name="contact_status_msg_available">我有空</string>
+<string name="contact_status_msg_available_chat">我有空聊天</string>
+<string name="contact_status_msg_dnd">请勿打扰</string>
+<string name="contact_status_msg_away">离开</string>
+<string name="contact_status_msg_xa">没有空</string>
+<string name="contact_status_msg_offline">连接已断开</string>
+
+<string name="privacy_list_name">Beem - 管理我的隐私列表</string>
+<string name="privacy_list_no_data">没有隐私列表</string>
+<string name="privacy_list_menu_create">创建隐私列表</string>
+<string name="privacy_list_create_dialog_title">创建隐私列表</string>
+<string name="privacy_list_create_dialog_list_name_label">标题</string>
+<string name="privacy_list_create_dialog_create_button">创建</string>
+<string name="privacy_list_select_dialog_buddies">好友</string>
+<string name="privacy_list_select_dialog_groups">组</string>
+<string name="privacy_list_select_dialog_delete">删除</string>
+<string name="privacy_list_delete_dialog_msg">确定要删除 \'%s\'隐私列表吗 ?</string>
+<string name="privacy_list_delete_dialog_yes">是</string>
+<string name="privacy_list_delete_dialog_no">否</string>
+
+<string name="UpdateButton">更新</string>
+
+<!-- Error messages -->
+
+<string name="error_login_authentication">验证时发生错误,用户名或者密码错误.</string>
+
+<string name="interna_server_error">远程服务器错误</string>
+<string name="bad_request">错误的请求</string>
+<string name="forbidden">被拒绝</string>
+<string name="item_not_found">项目未找到</string>
+<string name="conflict">冲突</string>
+<string name="feature_not_implemented">功能未实现</string>
+<string name="gone">离开</string>
+<string name="jid_malformed">Jid畸形</string>
+<string name="no_acceptable">无法接受</string>
+<string name="not_allowed">未被允许</string>
+<string name="not_authorized">未验证</string>
+<string name="payment_required">需要付费</string>
+<string name="recipient_unavailable">接收方无响应</string>
+<string name="redirect">重定向</string>
+<string name="registration_required">需要注册</string>
+<string name="remote_server_not_found">未发现远程服务器</string>
+<string name="remote_server_timeout">远程服务器未响应</string>
+<string name="remote_server_error">远程服务器错误</string>
+<string name="resource_constraint">资源限制</string>
+<string name="service_unavailable">暂时无法提供服务</string>
+<string name="subscription_required">需要订阅</string>
+<string name="undefined_condition">未定义的情况</string>
+<string name="unexpected_condition">例外情况</string>
+<string name="request_timeout">请求超时</string>
+</resources>
--- a/res/values-zh-rTW/strings.xml	Tue Jan 18 00:26:02 2011 +0100
+++ b/res/values-zh-rTW/strings.xml	Tue Jun 05 16:29:25 2012 +0200
@@ -1,306 +1,317 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-	<!-- Generic terms -->
-	<string name="app_name">Beem</string>
-	<string name="OkButton">確定</string>
-	<string name="ClearButton">清除</string>
-	<string name="CancelButton">取消</string>
-	<string name="AcceptButton">認證</string>
-	<string name="RefuseButton">拒絕</string>
-	<string name="JabberID">Jabber賬號 </string>
-	<string name="Password">密碼</string>
-
-	<!--  Beem class -->
-	<string name="BeemJabberID">Jabber賬號 </string>
-
-	<!--  BeemApplication class -->
-	<string name="BeemApplicationConnect">連接中...</string>
-
-	<!--  BeemService class -->
-	<string name="BeemServiceDescription">使用Beem服務</string>
-	<string name="BeemServiceCreated">Beem服務已建立</string>
-	<string name="BeemServiceDestroyed">Beem服務已取消</string>
-
-	<!--  ContactDialog class -->
-	<string name="CDChat">聊天</string>
-	<string name="CDCall">呼叫</string>
-	<string name="CDInfos">使用者管理</string>
-
-	<!-- AddContact class -->
-	<string name="AddCActTitle">Beem - 新增連接</string>
-
-	<string name="AddCLogin">使用者名</string>
-	<string name="AddCAlias">別名</string>
-	<string name="AddCGroup">組</string>
-	<string name="AddCOkButton">新增</string>
-	<string name="AddCContactAdded">聯繫人已成功新增</string>
-	<string name="AddCContactAddedError">聯繫人新增錯誤</string>
-	<string name="AddCContactAddedLoginError">登入錯誤</string>
-	<string name="AddCBadForm">格式錯誤</string>
-	<string name="AddCContactAlready">聯繫人已存在</string>
-
-	<!--  ChangeStatus class -->
-	<string name="ChangeStatusActTitle">Beem - 改變我的狀態</string>
-	<string name="ChangeStatusType">我的狀態</string>
-	<string name="ChangeStatusMessage">我的個人訊息</string>
-	<string name="OpenContactList">開啟聯繫人清單</string>
-	
-	<string name="MenuAddContact">新增心聯繫人</string>
-	<string name="MenuAccountAbout">Beem項目</string>
-	<string name="MenuAccountCreate">建立賬號</string>
-	<string name="MenuConnection">編輯賬號</string>
-	<string name="ChangeStatusOk">更新狀態</string>
-	<string name="ChangeStatusNoChange">沒有東西需要改變</string>
-
-	<!-- Settings class -->
-	<string name="SettingsText">修改使用者名</string>
-	<string name="SettingsPassword">修改密碼</string>
-	<string name="SettingsProxy">代理</string>
-	<string name="SettingsProxyProxy">使用代理伺服器</string>
-	<string name="SettingsProxySummary">通過代理伺服器登入</string>
-	<string name="SettingsProxyType">協議</string>
-	<string name="SettingsProxyTypeSummary">選取代理類型</string>
-	<string name="SettingsProxyServer">修改代理伺服器位址</string>
-	<string name="SettingsProxyPort">修改地理伺服器通訊埠</string>
-	<string name="SettingsProxyUser">可選,允許在代理伺服器上註冊</string>
-	<string name="SettingsProxyPassword">可選,允許在代理伺服器上註冊</string>
-	<string name="SettingsAdvanced">進階</string>
-	<string name="SettingsAdvancedOptions">特定伺服器選項</string>
-	<string name="SettingsAdvancedRecoDelay">修改重連延時</string>
-	<string name="SettingsAdvancedSpecOpt">勾選此選項以連接到特定的伺服器.</string>
-	<string name="SettingsAdvancedAddOpt">編輯伺服器位址</string>
-	<string name="SettingsAdvancedPortOpt">編輯伺服器通訊埠</string>
-	<string name="SettingsResourceTitle">資源</string>
-	<string name="SettingsPriorityTitle">優先級</string>
-	<string name="SettingsResourceSummary">設定用戶端XMPP資源</string>
-	<string name="SettingsPrioritySummary">設定用戶端優先級</string>
-	<string name="contact_list_preferences">好友清單</string>
-	<string name="contact_list_preferences_sum">好友清單顯示選項
-	</string>
-	<string name="CLP_hide_groups">隱藏組</string>	
-	<string name="CLP_hide_groups_sum">勾選此選項隱藏組</string>
-	<string name="CLP_hidden_contact">隱藏好友</string>
-	<string name="CLP_hidden_contact_sum">勾選此選項隱藏未登入好友
-	</string>
-	<string name="settings_account_username">使用者名</string>
-	<string name="login_username_info_default">beem@beem-project.com</string>
-	<string name="settings_account_password">密碼</string>
-	<string name="settings_account_server">伺服器</string>
-	<string name="settings_account_port">通訊埠</string>
-	<string name="settings_advanced_service_behaviour">伺服器行為</string>
-	<string name="settings_advanced_sum">進階使用者設定</string>
-	<string name="settings_xmpp_server">位址</string>
-	<string name="comments_xmpp_server">example.com</string>
-	<string name="settings_xmpp_port">通訊埠</string>
-	<string name="settings_xmpp_use_tls">使用SSL/TLS</string>
-	<string name="settings_reco_delay">重連延時</string>
-	<string name="comments_xmpp_port">預設通訊埠:5222</string>
-	<string name="settings_proxy_sum">代理設定</string>
-	<string name="settings_proxy_use">使用代理連接</string>
-	<string name="settings_proxy_type_prompt">選取代理類型</string>
-	<string name="settings_proxy_server">伺服器</string>
-	<string name="settings_proxy_port">通訊埠</string>
-	<string name="comments_proxy_port">預設通訊埠:1080</string>
-	<string name="settings_proxy_username">使用者名</string>
-	<string name="settings_proxy_password">密碼</string>
-	<string name="away_chk_title">啟用自動離開</string>
-	<string name="away_chk_sum">當屏幕關閉是將狀態改為離開</string>
-	<string name="away_message_title">離開留言</string>
-	<string name="away_message_sum">將會顯示的離開留言</string>
-	<string name="away_message_hint">我現在不在,我的手機屏幕關閉了</string>
-	<string name="notification_preferences">通知設定</string>
-	<string name="notification_enable_vibrate_title">開啟震動</string>
-	<string name="notification_enable_vibrate_sum">開啟來信時的震動提示</string>
-	<string name="notification_snd_title">訊息提示音</string>
-	<string name="notification_snd_sum">設定訊息提示音</string>
-
-	
-	<!-- Subscription class -->
-	<string name="SubscriptAccept">訂閱已經接受</string>
-	<string name="SubscriptError">訂閱錯誤</string>
-	<string name="SubscriptRefused">訂閱被拒絕</string>
-	<string name="SubscriptText">%s 想要新增你到他/她的好友清單.批准他/她的要求嗎?</string>
-	<string name="SubscriptTitle">批准好友要求?</string>
-
-	<!--  BeemChatManager -->
-	<string name="BeemChatManagerNewMessage">你有一個新訊息</string>
-
-	<!--  BeemBroadcastReceiver class -->
-	<string name="BeemBroadcastReceiverDisconnect">BEEM:你的連接已中斷</string>
-
-	<!--  XmppConnectionAdapter class -->
-	<string name="AcceptContactRequest">%s剛將你新增到他/她的好友清單.</string>
-	<string name="AcceptContactRequestFrom">批准%s聯繫你</string>
-
-	<!-- Activities -->
-	<string name="login_tag">Beem - 登入中</string>
-	<string name="edit_settings_name">Beem - 設定</string>
-	<string name="edit_settings_tag">Beem - 編製設定</string>
-	<string name="create_account_name">Beem - 建立新賬號 </string>
-	<string name="create_account_tag">Beem - 建立新賬號中</string>
-	<string name="contact_list_name">Beem - 聯繫人</string>
-	<string name="contact_list_tag">Beem - 聯繫人清單</string>
-	<string name="user_info_name">Beem - 使用者訊息</string>
-
-	<!-- Buttons -->
-	<string name="button_create_account">建立這個賬戶</string>
-	<string name="button_create_login_account">建立並使用這個賬戶</string>
-
-	<!-- LogAs Activity -->
-	<string name="login_username">使用者名</string>
-	<string name="login_password">密碼</string>
-	<string name="login_error_dialog_title">登入 - 錯誤</string>
-	<string name="login_close_dialog_button">關閉</string>
-	<string name="login_menu_create_account">建立一個賬號</string>
-	<string name="login_menu_settings">設定</string>
-	<string name="login_menu_about">關於</string>
-	<string name="login_about_title">Beem %s - 關於</string>
-	<string name="login_about_msg">
-		Beem是一個歐洲理工學院的創新項目.存取我們的網站
-		http://www.beem-project.com !
-	</string>
-	<string name="login_about_button">關閉</string>
-	<string name="login_settings_button">設定</string>
-	<string name="login_login_button">登入</string>
-	<string name="login_login_progress">連接中,請等待...</string>
-	<string name="login_error_msg">很遺憾,發生一個錯誤.\n\nE錯誤
-		詳情:\n%s</string>
-	<string name="login_menu_login">登陸</string>
-	<string name="login_no_connectivity">沒有可用連接</string>
-	<string name="login_start_msg">選單設定設定</string>
-
-	<!-- LoginAnim activity -->
-	<string name="loganim_connecting">正在連接 ...</string>
-	<string name="loganim_authenticating">正在驗證 ...</string>
-	<string name="loganim_login_success">登陸成功</string>
-	<string name="loganim_login_failed">登陸失敗</string>
-
-	<!-- EditSettings Activity -->
-	<string name="settings_menu_create_account">建立一個賬號</string>
-	<string name="settings_menu_privacy_lists">管理隱私清單</string>
-	<string name="settings_saved_ok">設定已成功儲存</string>
-
-
-
-	<!-- EditSettings Activity Categories -->
-	<string name="general_preferences">通用選項</string>
-	<string name="user_preferences">使用者設定 (必須)</string>
-	<string name="user_preferences_advanced">進階使用者設定(可選)</string>
-	<string name="network_preferences">網路選項</string>
-	<string name="proxy_proxy_settings">代理選項</string>
-	<string name="proxy_user_settings">代理選項</string>
-
-	<!-- EditSettings Activity Tabs -->
-	<string name="settings_tab_tag_account">edit_settings_tab_account</string>
-	<string name="settings_tab_label_account">帳戶</string>
-	<string name="settings_tab_tag_xmpp">edit_settings_tab_xmpp</string>
-	<string name="settings_tab_label_xmpp">XMPP</string>
-	<string name="settings_tab_tag_proxy">edit_settings_tab_proxy</string>
-	<string name="settings_tab_label_proxy">代理</string>
-
-
-	<!-- wizard activities -->
-	<string name="account_wizard_text1"><b>歡迎使用BEEM.</b>\n\n您還沒有設定XMPP (Jabber)賬戶.請選取下面的選項。\n請選取下面的選項:</string>
-	<string name="account_wizard_configure_text"><b>請輸入您已有賬號的訊息</b></string>
-	<string name="account_wizard_configure_account">我想使用我已有的賬號</string>
-	<string name="account_wizard_create_account">我想建立一個新賬號</string>
-
-	<!-- Create an account Activity -->
-	<string name="create_account_instr_dialog_title">建立新賬號 - 嚮導</string>
-	<string name="create_account_err_dialog_title">建立新賬號 - 錯誤</string>
-	<string name="create_account_err_dialog_settings_button">修改設定</string>
-	<string name="create_account_close_dialog_button">關閉</string>
-	<string name="create_account_successfull_after">賬號%s已成功建立</string>
-	<string name="create_account_err_username">錯誤的Jabber ID</string>
-	<string name="create_account_err_passwords">密碼不符合。</string>
-	<string name="create_account_username">使用者名</string>
-	<string name="create_account_password">密碼</string>
-	<string name="create_account_confirm_password">確認密碼</string>
-
-	<!-- ContactList Activity  -->
-	<string name="contact_list_menu_add_contact">新增聯繫人</string>
-	<string name="contact_list_menu_status">變更狀態</string>
-	<string name="contact_list_menu_settings">設定</string>
-	<string name="contact_list_menu_disconnect">中斷連接</string>
-	<string name="contact_list_all_contact">所有聯繫人</string>
-	<string name="contact_list_no_group">沒有組</string>
-
-	<!-- UserInfo dialog -->
-	<string name="userinfo_label_alias">別名</string>
-	<string name="userinfo_label_chg_group">管理組</string>
-	<string name="userinfo_label_re_subscription">重新傳送邀請</string>
-	<string name="userinfo_label_block">阻止</string>
-	<string name="userinfo_label_delete">刪除</string>
-	<string name="userinfo_resend">重新傳送訂閱</string>
-	<string name="userinfo_sure2delete">確定刪除該聯繫人?
-	</string>
-	<string name="userinfo_yes">是</string>
-	<string name="userinfo_no">否</string>
-	<string name="userinfo_sureresend">確定要重新傳送邀請嗎?</string>
-
-	<string name="chat_name">Beem - 聊天</string>
-	<string name="chat_input_default_value">輸入訊息</string>
-	<string name="chat_self">我</string>
-	<string name="chat_error">錯誤</string>
-	<string name="chat_send_message">傳送</string>
-	<string name="chat_menu_contacts_list">聯繫人清單</string>
-	<string name="chat_menu_change_chat">切換聊天視窗</string>
-	<string name="chat_dialog_change_chat_title">開啟聊天視窗</string>
-	<string name="chat_menu_close_chat">關閉聊天視窗</string>
-	<string name="chat_no_more_chats">沒有活動的聊天視窗</string>
-	<string name="chat_state_composing">正在輸入訊息</string>
-	<string name="chat_state_gone">已經離開了會話</string>
-	<string name="chat_state_active">關注會話</string>
-	<string name="chat_state_inactive">正在做其他事情</string>
-
-	<string name="contact_status_msg_available">我有空</string>
-	<string name="contact_status_msg_available_chat">我有空聊天</string>
-	<string name="contact_status_msg_dnd">請勿打擾</string>
-	<string name="contact_status_msg_away">離開</string>
-	<string name="contact_status_msg_xa">沒有空</string>
-	<string name="contact_status_msg_offline">連接已中斷</string>
-
-	<string name="privacy_list_name">Beem - 管理我的隱私清單</string>
-	<string name="privacy_list_no_data">沒有隱私清單</string>
-	<string name="privacy_list_menu_create">建立隱私清單</string>
-	<string name="privacy_list_create_dialog_title">建立隱私清單</string>
-	<string name="privacy_list_create_dialog_list_name_label">標題</string>
-	<string name="privacy_list_create_dialog_create_button">建立</string>
-	<string name="privacy_list_select_dialog_buddies">好友</string>
-	<string name="privacy_list_select_dialog_groups">組</string>
-	<string name="privacy_list_select_dialog_delete">刪除</string>
-	<string name="privacy_list_delete_dialog_msg">確定要刪除 \'%s\'隱私清單嗎 ?</string>
-	<string name="privacy_list_delete_dialog_yes">是</string>
-	<string name="privacy_list_delete_dialog_no">否</string>
-
-	<string name="UpdateButton">更新</string>
-	
-	<!-- Error messages -->
-	
-	<string name="error_login_authentication">驗證時發生錯誤,使用者名或者密碼錯誤.</string>
-	
-	<string name="interna_server_error">遠端伺服器錯誤</string>
-	<string name="bad_request">bad-request</string>
-	<string name="forbidden">被拒絕</string>
-	<string name="item_not_found">item-not-found</string>
-	<string name="conflict">衝突</string>
-	<string