diff --git a/doc/contributions.txt b/doc/contributions.txt
index 8606ad8c6cfd2a597df00b9f7d0abe8a8b924bf1..cf2cb8493154ccf2f4ead709f5d33f725d40b96d 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -303,6 +303,8 @@ SpacedOut Frye
 	VWR-123
 	VWR-130
 	VWR-1823
+Sporked Friis
+	VWR-4903
 Stevex Janus
 	VWR-1182
 Still Defiant
diff --git a/indra/llmessage/message_prehash.cpp b/indra/llmessage/message_prehash.cpp
index 0b614d8d902b1d1b6b2122254d6446db1513f626..5190c9373131502fac3c1912a08899a7c566e91f 100644
--- a/indra/llmessage/message_prehash.cpp
+++ b/indra/llmessage/message_prehash.cpp
@@ -2708,3 +2708,4 @@ void init_prehash_data()
 	_PREHASH_RegionDenyAgeUnverified = gMessageStringTable.getString("RegionDenyAgeUnverified");
 	_PREHASH_AgeVerificationBlock = gMessageStringTable.getString("AgeVerificationBlock");
 }
+
diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp
index 8132396cb519245d2cf563a0bf377364725db21c..2bcc89b59fcfb3e89072b7f9d3edf65ff06db3d3 100644
--- a/indra/llui/llbutton.cpp
+++ b/indra/llui/llbutton.cpp
@@ -1038,7 +1038,7 @@ void clicked_help(void* data)
 		return;
 	}
 	
-	LLUI::sHtmlHelp->show(self->getHelpURL(), "");
+	LLUI::sHtmlHelp->show(self->getHelpURL());
 }
 
 // static
diff --git a/indra/llwindow/llkeyboard.cpp b/indra/llwindow/llkeyboard.cpp
index 23f3dc76c535daa7c77bff1e67f7594747a71613..83abcce3c11cb143379e2fc70a4a70e0a2498a0d 100644
--- a/indra/llwindow/llkeyboard.cpp
+++ b/indra/llwindow/llkeyboard.cpp
@@ -96,6 +96,7 @@ LLKeyboard::LLKeyboard() : mCallbacks(NULL), mNumpadDistinct(ND_NUMLOCK_OFF)
 	addKeyName(KEY_SUBTRACT, "Subtract" );
 	addKeyName(KEY_MULTIPLY, "Multiply" );
 	addKeyName(KEY_DIVIDE, "Divide" );
+	addKeyName(KEY_PAD_DIVIDE, "PAD_DIVIDE" );
 	addKeyName(KEY_PAD_LEFT, "PAD_LEFT" );
 	addKeyName(KEY_PAD_RIGHT, "PAD_RIGHT" );
 	addKeyName(KEY_PAD_DOWN, "PAD_DOWN" );
diff --git a/indra/llwindow/llkeyboardmacosx.cpp b/indra/llwindow/llkeyboardmacosx.cpp
index 74b64b4826bf3a17de6542cee269c41bfda1c944..b415ba43c7cf4864e19927025b731147626be95b 100644
--- a/indra/llwindow/llkeyboardmacosx.cpp
+++ b/indra/llwindow/llkeyboardmacosx.cpp
@@ -83,7 +83,7 @@ LLKeyboardMacOSX::LLKeyboardMacOSX()
 	mTranslateKeyMap[0x29] = ';';
 	mTranslateKeyMap[0x2a] = '\\';
 	mTranslateKeyMap[0x2b] = ',';
-	mTranslateKeyMap[0x2c] = '/';
+	mTranslateKeyMap[0x2c] = KEY_DIVIDE;
 	mTranslateKeyMap[0x2d] = 'N';
 	mTranslateKeyMap[0x2e] = 'M';
 	mTranslateKeyMap[0x2f] = '.';
@@ -100,7 +100,7 @@ LLKeyboardMacOSX::LLKeyboardMacOSX()
 	mTranslateKeyMap[0x41] = '.';	// keypad
 	mTranslateKeyMap[0x43] = '*';	// keypad
 	mTranslateKeyMap[0x45] = '+';	// keypad
-	mTranslateKeyMap[0x4b] = '/';	// keypad
+	mTranslateKeyMap[0x4b] = KEY_PAD_DIVIDE;	// keypad
 	mTranslateKeyMap[0x4c] = KEY_RETURN;	// keypad enter
 	mTranslateKeyMap[0x4e] = '-';	// keypad
 	mTranslateKeyMap[0x51] = '=';	// keypad
diff --git a/indra/llwindow/llkeyboardsdl.cpp b/indra/llwindow/llkeyboardsdl.cpp
index d8325060784c0250bdbe1d780f43733cc6a5526b..d29d917def22aa1bda91b13108e828f8e3ecbecd 100644
--- a/indra/llwindow/llkeyboardsdl.cpp
+++ b/indra/llwindow/llkeyboardsdl.cpp
@@ -103,7 +103,7 @@ LLKeyboardSDL::LLKeyboardSDL()
 	mTranslateKeyMap[SDLK_KP_PLUS] = KEY_ADD;
 	mTranslateKeyMap[SDLK_KP_MINUS] = KEY_SUBTRACT;
 	mTranslateKeyMap[SDLK_KP_MULTIPLY] = KEY_MULTIPLY;
-	mTranslateKeyMap[SDLK_KP_DIVIDE] = KEY_DIVIDE;
+	mTranslateKeyMap[SDLK_KP_DIVIDE] = KEY_PAD_DIVIDE;
 	mTranslateKeyMap[SDLK_F1] = KEY_F1;
 	mTranslateKeyMap[SDLK_F2] = KEY_F2;
 	mTranslateKeyMap[SDLK_F3] = KEY_F3;
@@ -121,7 +121,7 @@ LLKeyboardSDL::LLKeyboardSDL()
 	mTranslateKeyMap[SDLK_MINUS]  = '-';
 	mTranslateKeyMap[SDLK_PERIOD] = '.';
 	mTranslateKeyMap[SDLK_BACKQUOTE] = '`';
-	mTranslateKeyMap[SDLK_SLASH] = '/';
+	mTranslateKeyMap[SDLK_SLASH] = KEY_DIVIDE;
 	mTranslateKeyMap[SDLK_SEMICOLON] = ';';
 	mTranslateKeyMap[SDLK_LEFTBRACKET] = '[';
 	mTranslateKeyMap[SDLK_BACKSLASH] = '\\';
diff --git a/indra/llwindow/llkeyboardwin32.cpp b/indra/llwindow/llkeyboardwin32.cpp
index a5e7f3b3fe94119793da8f37210b4641b42e3142..e8aaa658cacd594b2e0199574141d4313518591f 100644
--- a/indra/llwindow/llkeyboardwin32.cpp
+++ b/indra/llwindow/llkeyboardwin32.cpp
@@ -77,7 +77,7 @@ LLKeyboardWin32::LLKeyboardWin32()
 	mTranslateKeyMap[VK_OEM_COMMA]  = ',';
 	mTranslateKeyMap[VK_OEM_MINUS]  = '-';
 	mTranslateKeyMap[VK_OEM_PERIOD] = '.';
-	mTranslateKeyMap[VK_OEM_2] = '/';
+	mTranslateKeyMap[VK_OEM_2] = KEY_PAD_DIVIDE;
 	mTranslateKeyMap[VK_OEM_3] = '`';
 	mTranslateKeyMap[VK_OEM_4] = '[';
 	mTranslateKeyMap[VK_OEM_5] = '\\';
@@ -137,7 +137,11 @@ LLKeyboardWin32::LLKeyboardWin32()
 	mTranslateNumpadMap[0x67] = KEY_PAD_HOME;	// keypad 7
 	mTranslateNumpadMap[0x68] = KEY_PAD_UP;		// keypad 8
 	mTranslateNumpadMap[0x69] = KEY_PAD_PGUP;	// keypad 9
+	mTranslateNumpadMap[0x6A] = KEY_PAD_MULTIPLY;	// keypad *
+	mTranslateNumpadMap[0x6B] = KEY_PAD_ADD;	// keypad +
+	mTranslateNumpadMap[0x6D] = KEY_PAD_SUBTRACT;	// keypad -
 	mTranslateNumpadMap[0x6E] = KEY_PAD_DEL;	// keypad .
+	mTranslateNumpadMap[0x6F] = KEY_PAD_DIVIDE;	// keypad /
 
 	for (iter = mTranslateNumpadMap.begin(); iter != mTranslateNumpadMap.end(); iter++)
 	{
diff --git a/indra/newview/app_settings/keys.ini b/indra/newview/app_settings/keys.ini
index 3a1e9ead36d4e23df80ca567fca17e4aa45123ad..b79e5bf508a81990b1f8d56da1ee7eab7df17a4c 100644
--- a/indra/newview/app_settings/keys.ini
+++ b/indra/newview/app_settings/keys.ini
@@ -40,6 +40,7 @@ FIRST_PERSON	PAD_PGDN	NONE		push_down
 FIRST_PERSON	PAD_HOME	NONE		toggle_fly
 FIRST_PERSON	PAD_CENTER	NONE		stop_moving
 FIRST_PERSON	PAD_ENTER	NONE		start_chat
+FIRST_PERSON	PAD_DIVIDE	NONE		start_gesture
 
 FIRST_PERSON	A		SHIFT		slide_left
 FIRST_PERSON	D		SHIFT		slide_right
@@ -51,6 +52,7 @@ FIRST_PERSON	F		SHIFT		toggle_fly
 
 FIRST_PERSON	SPACE	NONE		stop_moving
 FIRST_PERSON	ENTER	NONE		start_chat
+FIRST_PERSON	DIVIDE	NONE		start_gesture
 
 FIRST_PERSON	LEFT	SHIFT		slide_left
 FIRST_PERSON	RIGHT	SHIFT		slide_right
@@ -67,6 +69,7 @@ FIRST_PERSON	PAD_PGUP	SHIFT		jump
 FIRST_PERSON	PAD_PGDN	SHIFT		push_down
 FIRST_PERSON	PAD_HOME	SHIFT		toggle_fly
 FIRST_PERSON	PAD_ENTER	SHIFT		start_chat
+FIRST_PERSON	PAD_DIVIDE	SHIFT		start_gesture
 
 THIRD_PERSON	A		NONE		turn_left
 THIRD_PERSON	D		NONE		turn_right
@@ -86,6 +89,7 @@ THIRD_PERSON	F		SHIFT		toggle_fly
 
 THIRD_PERSON	SPACE	NONE		stop_moving
 THIRD_PERSON	ENTER	NONE		start_chat
+THIRD_PERSON	DIVIDE	NONE		start_gesture
 
 THIRD_PERSON	LEFT	NONE		turn_left
 THIRD_PERSON	LEFT	SHIFT		slide_left
@@ -120,6 +124,8 @@ THIRD_PERSON	PAD_CENTER	NONE		stop_moving
 THIRD_PERSON	PAD_CENTER	SHIFT		stop_moving
 THIRD_PERSON	PAD_ENTER	NONE		start_chat
 THIRD_PERSON	PAD_ENTER	SHIFT		start_chat
+THIRD_PERSON	PAD_DIVIDE	NONE		start_gesture
+THIRD_PERSON	PAD_DIVIDE	SHIFT		start_gesture
 
 # Camera controls in third person on Alt
 THIRD_PERSON	LEFT	ALT			spin_around_cw
@@ -143,6 +149,7 @@ THIRD_PERSON	PAD_DOWN	ALT			move_backward
 THIRD_PERSON	PAD_PGUP	ALT			spin_over
 THIRD_PERSON	PAD_PGDN	ALT			spin_under
 THIRD_PERSON	PAD_ENTER	ALT			start_chat
+THIRD_PERSON	PAD_DIVIDE	ALT			start_gesture
 
 # mimic alt zoom behavior with keyboard only
 THIRD_PERSON	A		CTL_ALT			spin_around_cw
@@ -166,6 +173,7 @@ THIRD_PERSON	PAD_DOWN	CTL_ALT			spin_under
 THIRD_PERSON	PAD_PGUP	CTL_ALT			spin_over
 THIRD_PERSON	PAD_PGDN	CTL_ALT			spin_under
 THIRD_PERSON	PAD_ENTER	CTL_ALT			start_chat
+THIRD_PERSON	PAD_DIVIDE	CTL_ALT			start_gesture
 
 # Therefore pan on Alt-Shift
 THIRD_PERSON	A		CTL_ALT_SHIFT	pan_left
@@ -183,6 +191,7 @@ THIRD_PERSON	PAD_RIGHT	CTL_ALT_SHIFT	pan_right
 THIRD_PERSON	PAD_UP		CTL_ALT_SHIFT	pan_up
 THIRD_PERSON	PAD_DOWN	CTL_ALT_SHIFT	pan_down
 THIRD_PERSON	PAD_ENTER	CTL_ALT_SHIFT	start_chat
+THIRD_PERSON	PAD_DIVIDE	CTL_ALT_SHIFT	start_gesture
 
 # Basic editing camera control
 EDIT			A		NONE		spin_around_cw
@@ -192,7 +201,9 @@ EDIT			S		NONE		move_backward
 EDIT			E		NONE		spin_over
 EDIT			C		NONE		spin_under
 EDIT			ENTER	NONE		start_chat
+EDIT			DIVIDE	NONE		start_gesture
 EDIT			PAD_ENTER	NONE	start_chat
+EDIT			PAD_DIVIDE	NONE	start_gesture
 
 EDIT			LEFT	NONE		spin_around_cw
 EDIT			RIGHT	NONE		spin_around_ccw
@@ -234,6 +245,7 @@ EDIT			PAD_DOWN	ALT			push_backward
 EDIT			PAD_PGUP	ALT			jump
 EDIT			PAD_PGDN	ALT			push_down
 EDIT			PAD_ENTER	ALT			start_chat
+EDIT			PAD_DIVIDE	ALT			start_gesture
 
 SITTING			A	ALT			spin_around_cw
 SITTING			D	ALT			spin_around_ccw
@@ -286,6 +298,7 @@ SITTING			PAD_PGUP	NONE		spin_over_sitting
 SITTING			PAD_PGDN	NONE		spin_under_sitting
 SITTING			PAD_CENTER	NONE		stop_moving
 SITTING			PAD_ENTER	NONE		start_chat
+SITTING			PAD_DIVIDE	NONE		start_gesture
 
 # these are for passing controls when sitting on vehicles
 SITTING			A		SHIFT		slide_left
@@ -296,6 +309,7 @@ SITTING			RIGHT	SHIFT		slide_right
 SITTING			PAD_LEFT	SHIFT		slide_left
 SITTING			PAD_RIGHT	SHIFT		slide_right
 SITTING			PAD_ENTER	SHIFT		start_chat
+SITTING			PAD_DIVIDE	SHIFT		start_gesture
 
 # pan on Alt-Shift
 SITTING			A		CTL_ALT_SHIFT	pan_left
@@ -313,8 +327,10 @@ SITTING			PAD_RIGHT	CTL_ALT_SHIFT	pan_right
 SITTING			PAD_UP		CTL_ALT_SHIFT	pan_up
 SITTING			PAD_DOWN	CTL_ALT_SHIFT	pan_down
 SITTING			PAD_ENTER	CTL_ALT_SHIFT	start_chat
+SITTING			PAD_DIVIDE	CTL_ALT_SHIFT	start_gesture
 
 SITTING			ENTER	NONE		start_chat
+SITTING			DIVIDE	NONE		start_gesture
 
 # Avatar editing camera controls
 EDIT_AVATAR		A		NONE		edit_avatar_spin_cw
@@ -330,6 +346,7 @@ EDIT_AVATAR		DOWN	NONE		edit_avatar_move_backward
 EDIT_AVATAR		PGUP	NONE		edit_avatar_spin_over
 EDIT_AVATAR		PGDN	NONE		edit_avatar_spin_under
 EDIT_AVATAR		ENTER	NONE		start_chat
+EDIT_AVATAR		DIVIDE	NONE		start_gesture
 EDIT_AVATAR		PAD_LEFT	NONE	edit_avatar_spin_cw
 EDIT_AVATAR		PAD_RIGHT	NONE	edit_avatar_spin_ccw
 EDIT_AVATAR		PAD_UP		NONE	edit_avatar_move_forward
@@ -337,3 +354,4 @@ EDIT_AVATAR		PAD_DOWN	NONE	edit_avatar_move_backward
 EDIT_AVATAR		PAD_PGUP	NONE	edit_avatar_spin_over
 EDIT_AVATAR		PAD_PGDN	NONE	edit_avatar_spin_under
 EDIT_AVATAR		PAD_ENTER	NONE	start_chat
+EDIT_AVATAR		PAD_DIVIDE	NONE	start_gesture
diff --git a/indra/newview/installers/windows/installer_template.nsi b/indra/newview/installers/windows/installer_template.nsi
index fa94a09a50a37781a22d0c7b2fb549c58073911c..420f0811ffffd37ec6ebc6365ce0dfe48ba177e2 100644
--- a/indra/newview/installers/windows/installer_template.nsi
+++ b/indra/newview/installers/windows/installer_template.nsi
@@ -61,14 +61,6 @@ ShowInstDetails nevershow				; no details, no "show" button
 SetOverwrite on							; stomp files by default
 AutoCloseWindow true					; after all files install, close window
 
-!ifdef UPDATE
-LicenseText $(LicenseDescUpdate) $(LicenseDescNext)
-!else
-LicenseText $(LicenseDescSetup) $(LicenseDescNext)
-!endif
-
-LicenseData "releasenotes.txt"
-
 InstallDir "$PROGRAMFILES\${INSTNAME}"
 InstallDirRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\${INSTNAME}" ""
 !ifdef UPDATE
diff --git a/indra/newview/installers/windows/lang_de.nsi b/indra/newview/installers/windows/lang_de.nsi
index abb0c637824bea69b93a4f696a01d0af10cc7711..c41012861fbeca26dedea9e65fcc8d201536ee66 100644
--- a/indra/newview/installers/windows/lang_de.nsi
+++ b/indra/newview/installers/windows/lang_de.nsi
@@ -1,57 +1,57 @@
-; First is default
-LoadLanguageFile "${NSISDIR}\Contrib\Language files\German.nlf"
-
-; subtitle on license text caption (setup new version or update current one
-LangString LicenseSubTitleUpdate ${LANG_GERMAN} " Update"
-LangString LicenseSubTitleSetup ${LANG_GERMAN} " Setup"
-
-; description on license page
-LangString LicenseDescUpdate ${LANG_GERMAN} "Dieses Paket wird das bereits installierte Second Life mit Version ${VERSION_LONG}. ersetzen."
-LangString LicenseDescSetup ${LANG_GERMAN} "Dieses Paket wird Second Life auf Ihrem Computer installieren."
-LangString LicenseDescNext ${LANG_GERMAN} "Weiter"
-
-; installation directory text
-LangString DirectoryChooseTitle ${LANG_GERMAN} "Installations-Ordner"
-LangString DirectoryChooseUpdate ${LANG_GERMAN} "Wählen Sie den Second Life Ordner für dieses Update:"
-LangString DirectoryChooseSetup ${LANG_GERMAN} "Pfad in dem Second Life installieren werden soll:"
-
-; CheckStartupParams message box
-LangString CheckStartupParamsMB ${LANG_GERMAN} "Konnte Programm '$INSTPROG' nicht finden. Stilles Update fehlgeschlagen."
-
-; installation success dialog
-LangString InstSuccesssQuestion ${LANG_GERMAN} "Second Life starten?"
-
-; remove old NSIS version
-LangString RemoveOldNSISVersion ${LANG_GERMAN} "Überprüfe alte Version ..."
-
-; check windows version
-LangString CheckWindowsVersionDP ${LANG_GERMAN} "Überprüfung der Windows Version ..."
-LangString CheckWindowsVersionMB ${LANG_GERMAN} 'Second Life unterstützt nur Windows XP, Windows 2000 und Mac OS X.$\n$\nDer Versuch es auf Windows $R0 zu installieren, könnte zu unvorhersehbaren Abstürzen und Datenverlust führen.$\n$\nTrotzdem installieren?'
-
-; checkifadministrator function (install)
-LangString CheckAdministratorInstDP ${LANG_GERMAN} "Überprüfung der Installations-Berechtigungen ..."
-LangString CheckAdministratorInstMB ${LANG_GERMAN} 'Sie besitzen ungenügende Berechtigungen.$\nSie müssen ein "administrator" sein, um Second Life installieren zu können.'
-
-; checkifadministrator function (uninstall)
-LangString CheckAdministratorUnInstDP ${LANG_GERMAN} "Überprüfung der Entfernungs-Berechtigungen ..."
-LangString CheckAdministratorUnInstMB ${LANG_GERMAN} 'Sie besitzen ungenügende Berechtigungen.$\nSie müssen ein "administrator" sein, um Second Life entfernen zu können..'
-
-; checkifalreadycurrent
-LangString CheckIfCurrentMB ${LANG_GERMAN} "Anscheinend ist Second Life ${VERSION_LONG} bereits installiert.$\n$\nWürden Sie es gerne erneut installieren?"
-
-; closesecondlife function (install)
-LangString CloseSecondLifeInstDP ${LANG_GERMAN} "Warten auf die Beendigung von Second Life ..."
-LangString CloseSecondLifeInstMB ${LANG_GERMAN} "Second Life kann nicht installiert oder ersetzt werden, wenn es bereits läuft.$\n$\nBeenden Sie, was Sie gerade tun und klicken Sie OK, um Second Life zu beenden.$\nKlicken Sie CANCEL, um die Installation abzubrechen."
-
-; closesecondlife function (uninstall)
-LangString CloseSecondLifeUnInstDP ${LANG_GERMAN} "Warten auf die Beendigung von Second Life ..."
-LangString CloseSecondLifeUnInstMB ${LANG_GERMAN} "Second Life kann nicht entfernt werden, wenn es bereits läuft.$\n$\nBeenden Sie, was Sie gerade tun und klicken Sie OK, um Second Life zu beenden.$\nKlicken Sie CANCEL, um abzubrechen."
-
-; removecachefiles
-LangString RemoveCacheFilesDP ${LANG_GERMAN} "Löschung aller Cache Dateien in Dokumente und Einstellungen."
-
-; delete program files
-LangString DeleteProgramFilesMB ${LANG_GERMAN} "Es existieren weiterhin Dateien in Ihrem SecondLife Programm Ordner.$\n$\nDies sind möglicherweise Dateien, die sie modifiziert oder bewegt haben:$\n$INSTDIR$\n$\nMöchten Sie diese ebenfalls löschen?"
-
-; uninstall text
-LangString UninstallTextMsg ${LANG_GERMAN} "Dies wird Second Life ${VERSION_LONG} von Ihrem System entfernen."
+; First is default
+LoadLanguageFile "${NSISDIR}\Contrib\Language files\German.nlf"
+
+; subtitle on license text caption (setup new version or update current one
+LangString LicenseSubTitleUpdate ${LANG_GERMAN} " Update"
+LangString LicenseSubTitleSetup ${LANG_GERMAN} " Setup"
+
+; description on license page
+LangString LicenseDescUpdate ${LANG_GERMAN} "Dieses Paket wird das bereits installierte Second Life mit Version ${VERSION_LONG}. ersetzen."
+LangString LicenseDescSetup ${LANG_GERMAN} "Dieses Paket wird Second Life auf Ihrem Computer installieren."
+LangString LicenseDescNext ${LANG_GERMAN} "Weiter"
+
+; installation directory text
+LangString DirectoryChooseTitle ${LANG_GERMAN} "Installations-Ordner"
+LangString DirectoryChooseUpdate ${LANG_GERMAN} "Wählen Sie den Second Life Ordner für dieses Update:"
+LangString DirectoryChooseSetup ${LANG_GERMAN} "Pfad in dem Second Life installieren werden soll:"
+
+; CheckStartupParams message box
+LangString CheckStartupParamsMB ${LANG_GERMAN} "Konnte Programm '$INSTPROG' nicht finden. Stilles Update fehlgeschlagen."
+
+; installation success dialog
+LangString InstSuccesssQuestion ${LANG_GERMAN} "Second Life starten?"
+
+; remove old NSIS version
+LangString RemoveOldNSISVersion ${LANG_GERMAN} "Überprüfe alte Version ..."
+
+; check windows version
+LangString CheckWindowsVersionDP ${LANG_GERMAN} "Überprüfung der Windows Version ..."
+LangString CheckWindowsVersionMB ${LANG_GERMAN} 'Second Life unterstützt nur Windows XP, Windows 2000 und Mac OS X.$\n$\nDer Versuch es auf Windows $R0 zu installieren, könnte zu unvorhersehbaren Abstürzen und Datenverlust führen.$\n$\nTrotzdem installieren?'
+
+; checkifadministrator function (install)
+LangString CheckAdministratorInstDP ${LANG_GERMAN} "Überprüfung der Installations-Berechtigungen ..."
+LangString CheckAdministratorInstMB ${LANG_GERMAN} 'Sie besitzen ungenügende Berechtigungen.$\nSie müssen ein "administrator" sein, um Second Life installieren zu können.'
+
+; checkifadministrator function (uninstall)
+LangString CheckAdministratorUnInstDP ${LANG_GERMAN} "Überprüfung der Entfernungs-Berechtigungen ..."
+LangString CheckAdministratorUnInstMB ${LANG_GERMAN} 'Sie besitzen ungenügende Berechtigungen.$\nSie müssen ein "administrator" sein, um Second Life entfernen zu können..'
+
+; checkifalreadycurrent
+LangString CheckIfCurrentMB ${LANG_GERMAN} "Anscheinend ist Second Life ${VERSION_LONG} bereits installiert.$\n$\nWürden Sie es gerne erneut installieren?"
+
+; closesecondlife function (install)
+LangString CloseSecondLifeInstDP ${LANG_GERMAN} "Warten auf die Beendigung von Second Life ..."
+LangString CloseSecondLifeInstMB ${LANG_GERMAN} "Second Life kann nicht installiert oder ersetzt werden, wenn es bereits läuft.$\n$\nBeenden Sie, was Sie gerade tun und klicken Sie OK, um Second Life zu beenden.$\nKlicken Sie CANCEL, um die Installation abzubrechen."
+
+; closesecondlife function (uninstall)
+LangString CloseSecondLifeUnInstDP ${LANG_GERMAN} "Warten auf die Beendigung von Second Life ..."
+LangString CloseSecondLifeUnInstMB ${LANG_GERMAN} "Second Life kann nicht entfernt werden, wenn es bereits läuft.$\n$\nBeenden Sie, was Sie gerade tun und klicken Sie OK, um Second Life zu beenden.$\nKlicken Sie CANCEL, um abzubrechen."
+
+; removecachefiles
+LangString RemoveCacheFilesDP ${LANG_GERMAN} "Löschung aller Cache Dateien in Dokumente und Einstellungen."
+
+; delete program files
+LangString DeleteProgramFilesMB ${LANG_GERMAN} "Es existieren weiterhin Dateien in Ihrem SecondLife Programm Ordner.$\n$\nDies sind möglicherweise Dateien, die sie modifiziert oder bewegt haben:$\n$INSTDIR$\n$\nMöchten Sie diese ebenfalls löschen?"
+
+; uninstall text
+LangString UninstallTextMsg ${LANG_GERMAN} "Dies wird Second Life ${VERSION_LONG} von Ihrem System entfernen."
diff --git a/indra/newview/installers/windows/lang_en-us.nsi b/indra/newview/installers/windows/lang_en-us.nsi
index c26af12a9c26f6e97912f9d2c74c64e1c84faa84..218f1c60fc64e393f23e88818eda07d63a9c6b51 100644
--- a/indra/newview/installers/windows/lang_en-us.nsi
+++ b/indra/newview/installers/windows/lang_en-us.nsi
@@ -1,57 +1,52 @@
-; First is default
-LoadLanguageFile "${NSISDIR}\Contrib\Language files\English.nlf"
-
-; subtitle on license text caption
-LangString LicenseSubTitleUpdate ${LANG_ENGLISH} " Update"
-LangString LicenseSubTitleSetup ${LANG_ENGLISH} " Setup"
-
-; description on license page
-LangString LicenseDescUpdate ${LANG_ENGLISH} "This package will update Second Life to version ${VERSION_LONG}.(XXX)"
-LangString LicenseDescSetup ${LANG_ENGLISH} "This package will install Second Life on your computer." 
-LangString LicenseDescNext ${LANG_ENGLISH} "Next" 
-
-; installation directory text
-LangString DirectoryChooseTitle ${LANG_ENGLISH} "Installation Directory" 
-LangString DirectoryChooseUpdate ${LANG_ENGLISH} "Select the Second Life directory to update:"
-LangString DirectoryChooseSetup ${LANG_ENGLISH} "Select the directory to install Second Life in:"
-
-; CheckStartupParams message box
-LangString CheckStartupParamsMB ${LANG_ENGLISH} "Could not find the program '$INSTPROG'. Silent update failed."
-
-; installation success dialog
-LangString InstSuccesssQuestion ${LANG_ENGLISH} "Start Second Life now?"
-
-; remove old NSIS version
-LangString RemoveOldNSISVersion ${LANG_ENGLISH} "Checking for old version..."
-
-; check windows version
-LangString CheckWindowsVersionDP ${LANG_ENGLISH} "Checking Windows version..."
-LangString CheckWindowsVersionMB ${LANG_ENGLISH} 'Second Life only supports Windows XP, Windows 2000, and Mac OS X.$\n$\nAttempting to install on Windows $R0 can result in crashes and data loss.$\n$\nInstall anyway?'
-
-; checkifadministrator function (install)
-LangString CheckAdministratorInstDP ${LANG_ENGLISH} "Checking for permission to install..."
-LangString CheckAdministratorInstMB ${LANG_ENGLISH} 'You appear to be using a "limited" account.$\nYou must be an "administrator" to install Second Life.'
-
-; checkifadministrator function (uninstall)
-LangString CheckAdministratorUnInstDP ${LANG_ENGLISH} "Checking for permission to uninstall..."
-LangString CheckAdministratorUnInstMB ${LANG_ENGLISH} 'You appear to be using a "limited" account.$\nYou must be an "administrator" to uninstall Second Life.'
-
-; checkifalreadycurrent
-LangString CheckIfCurrentMB ${LANG_ENGLISH} "It appears that Second Life ${VERSION_LONG} is already installed.$\n$\nWould you like to install it again?"
-
-; closesecondlife function (install)
-LangString CloseSecondLifeInstDP ${LANG_ENGLISH} "Waiting for Second Life to shut down..."
-LangString CloseSecondLifeInstMB ${LANG_ENGLISH} "Second Life can't be installed while it is already running.$\n$\nFinish what you're doing then select OK to close Second Life and continue.$\nSelect CANCEL to cancel installation."
-
-; closesecondlife function (uninstall)
-LangString CloseSecondLifeUnInstDP ${LANG_ENGLISH} "Waiting for Second Life to shut down..."
-LangString CloseSecondLifeUnInstMB ${LANG_ENGLISH} "Second Life can't be uninstalled while it is already running.$\n$\nFinish what you're doing then select OK to close Second Life and continue.$\nSelect CANCEL to cancel."
-
-; removecachefiles
-LangString RemoveCacheFilesDP ${LANG_ENGLISH} "Deleting cache files in Documents and Settings folder"
-
-; delete program files
-LangString DeleteProgramFilesMB ${LANG_ENGLISH} "There are still files in your SecondLife program directory.$\n$\nThese are possibly files you created or moved to:$\n$INSTDIR$\n$\nDo you want to remove them?"
-
-; uninstall text
-LangString UninstallTextMsg ${LANG_ENGLISH} "This will uninstall Second Life ${VERSION_LONG} from your system."
+; First is default
+LoadLanguageFile "${NSISDIR}\Contrib\Language files\English.nlf"
+
+; subtitle on license text caption
+LangString LicenseSubTitleUpdate ${LANG_ENGLISH} " Update"
+LangString LicenseSubTitleSetup ${LANG_ENGLISH} " Setup"
+
+; installation directory text
+LangString DirectoryChooseTitle ${LANG_ENGLISH} "Installation Directory" 
+LangString DirectoryChooseUpdate ${LANG_ENGLISH} "Select the Second Life directory to update to version ${VERSION_LONG}.(XXX):"
+LangString DirectoryChooseSetup ${LANG_ENGLISH} "Select the directory to install Second Life in:"
+
+; CheckStartupParams message box
+LangString CheckStartupParamsMB ${LANG_ENGLISH} "Could not find the program '$INSTPROG'. Silent update failed."
+
+; installation success dialog
+LangString InstSuccesssQuestion ${LANG_ENGLISH} "Start Second Life now?"
+
+; remove old NSIS version
+LangString RemoveOldNSISVersion ${LANG_ENGLISH} "Checking for old version..."
+
+; check windows version
+LangString CheckWindowsVersionDP ${LANG_ENGLISH} "Checking Windows version..."
+LangString CheckWindowsVersionMB ${LANG_ENGLISH} 'Second Life only supports Windows XP, Windows 2000, and Mac OS X.$\n$\nAttempting to install on Windows $R0 can result in crashes and data loss.$\n$\nInstall anyway?'
+
+; checkifadministrator function (install)
+LangString CheckAdministratorInstDP ${LANG_ENGLISH} "Checking for permission to install..."
+LangString CheckAdministratorInstMB ${LANG_ENGLISH} 'You appear to be using a "limited" account.$\nYou must be an "administrator" to install Second Life.'
+
+; checkifadministrator function (uninstall)
+LangString CheckAdministratorUnInstDP ${LANG_ENGLISH} "Checking for permission to uninstall..."
+LangString CheckAdministratorUnInstMB ${LANG_ENGLISH} 'You appear to be using a "limited" account.$\nYou must be an "administrator" to uninstall Second Life.'
+
+; checkifalreadycurrent
+LangString CheckIfCurrentMB ${LANG_ENGLISH} "It appears that Second Life ${VERSION_LONG} is already installed.$\n$\nWould you like to install it again?"
+
+; closesecondlife function (install)
+LangString CloseSecondLifeInstDP ${LANG_ENGLISH} "Waiting for Second Life to shut down..."
+LangString CloseSecondLifeInstMB ${LANG_ENGLISH} "Second Life can't be installed while it is already running.$\n$\nFinish what you're doing then select OK to close Second Life and continue.$\nSelect CANCEL to cancel installation."
+
+; closesecondlife function (uninstall)
+LangString CloseSecondLifeUnInstDP ${LANG_ENGLISH} "Waiting for Second Life to shut down..."
+LangString CloseSecondLifeUnInstMB ${LANG_ENGLISH} "Second Life can't be uninstalled while it is already running.$\n$\nFinish what you're doing then select OK to close Second Life and continue.$\nSelect CANCEL to cancel."
+
+; removecachefiles
+LangString RemoveCacheFilesDP ${LANG_ENGLISH} "Deleting cache files in Documents and Settings folder"
+
+; delete program files
+LangString DeleteProgramFilesMB ${LANG_ENGLISH} "There are still files in your SecondLife program directory.$\n$\nThese are possibly files you created or moved to:$\n$INSTDIR$\n$\nDo you want to remove them?"
+
+; uninstall text
+LangString UninstallTextMsg ${LANG_ENGLISH} "This will uninstall Second Life ${VERSION_LONG} from your system."
diff --git a/indra/newview/installers/windows/lang_ja.nsi b/indra/newview/installers/windows/lang_ja.nsi
index 43cb492780322bce081852468ade45f00cc5fd4d..5e0496ee6fe2735dd75bc732ec3cfbff123ef24b 100644
--- a/indra/newview/installers/windows/lang_ja.nsi
+++ b/indra/newview/installers/windows/lang_ja.nsi
@@ -1,57 +1,57 @@
-; First is default
-LoadLanguageFile "${NSISDIR}\Contrib\Language files\Japanese.nlf"
-
-; subtitle on license text caption
-LangString LicenseSubTitleUpdate ${LANG_JAPANESE} " ƒAƒbƒvƒf[ƒg" 
-LangString LicenseSubTitleSetup ${LANG_JAPANESE} " ƒZƒbƒgƒAƒbƒv" 
-
-; description on license page
-LangString LicenseDescUpdate ${LANG_JAPANESE} "‚±‚̃pƒbƒP[ƒW‚̓ZƒJƒ“ƒhƒ‰ƒCƒt‚ðƒo[ƒWƒ‡ƒ“${VERSION_LONG}.‚ɃAƒbƒvƒf[ƒg‚µ‚Ü‚·B" 
-LangString LicenseDescSetup ${LANG_JAPANESE} "‚±‚̃pƒbƒP[ƒW‚Í‚ ‚È‚½‚̃Rƒ“ƒsƒ…[ƒ^‚ɃZƒJƒ“ƒhƒ‰ƒCƒt‚ðƒCƒ“ƒXƒg[ƒ‹‚µ‚Ü‚·B" 
-LangString LicenseDescNext ${LANG_JAPANESE} "ŽŸ" 
-
-; installation directory text
-LangString DirectoryChooseTitle ${LANG_JAPANESE} "ƒCƒ“ƒXƒg[ƒ‹EƒfƒBƒŒƒNƒgƒŠ" 
-LangString DirectoryChooseUpdate ${LANG_JAPANESE} "ƒAƒbƒvƒf[ƒg‚·‚éƒZƒJƒ“ƒhƒ‰ƒCƒt‚̃fƒBƒŒƒNƒgƒŠ‚ð‘I‘ð‚µ‚Ä‚­‚¾‚³‚¢B:" 
-LangString DirectoryChooseSetup ${LANG_JAPANESE} "ƒZƒJƒ“ƒhƒ‰ƒCƒt‚ðƒCƒ“ƒXƒg[ƒ‹‚·‚éƒfƒBƒŒƒNƒgƒŠ‚ð‘I‘ð‚µ‚Ä‚­‚¾‚³‚¢B: " 
-
-; CheckStartupParams message box
-LangString CheckStartupParamsMB ${LANG_JAPANESE} "ƒvƒƒOƒ‰ƒ€–¼'$INSTPROG'‚ªŒ©‚‚©‚è‚Ü‚¹‚ñBƒTƒCƒŒƒ“ƒgEƒAƒbƒvƒf[ƒg‚ÉŽ¸”s‚µ‚Ü‚µ‚½B" 
-
-; installation success dialog
-LangString InstSuccesssQuestion ${LANG_JAPANESE} "’¼‚¿‚ɃZƒJƒ“ƒhƒ‰ƒCƒt‚ðŠJŽn‚µ‚Ü‚·‚©H " 
-
-; remove old NSIS version
-LangString RemoveOldNSISVersion ${LANG_JAPANESE} "ŒÃ‚¢ƒo[ƒWƒ‡ƒ“î•ñ‚ðƒ`ƒFƒbƒN’†‚Å‚·c" 
-
-; check windows version
-LangString CheckWindowsVersionDP ${LANG_JAPANESE} "ƒEƒBƒ“ƒhƒEƒY‚̃o[ƒWƒ‡ƒ“î•ñ‚ðƒ`ƒFƒbƒN’†‚Å‚·..." 
-LangString CheckWindowsVersionMB ${LANG_JAPANESE} "ƒZƒJƒ“ƒhƒ‰ƒCƒt‚ÍWindows XPAWindows 2000AMac OS X‚Ì‚Ý‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·BWindows $R0‚ðƒCƒ“ƒXƒg[ƒ‹‚·‚鎖‚́Aƒf[ƒ^‚̏ÁŽ¸‚âƒNƒ‰ƒbƒVƒ…‚ÌŒ´ˆö‚É‚È‚é‰Â”\«‚ª‚ ‚è‚Ü‚·BƒCƒ“ƒXƒg[ƒ‹‚𑱂¯‚Ü‚·‚©H" 
-
-; checkifadministrator function (install)
-LangString CheckAdministratorInstDP ${LANG_JAPANESE} "ƒCƒ“ƒXƒg[ƒ‹‚Ì‚½‚ß‚ÌŒ ŒÀ‚ðƒ`ƒFƒbƒN’†‚Å‚·..." 
-LangString CheckAdministratorInstMB ${LANG_JAPANESE} "ƒZƒJƒ“ƒhƒ‰ƒCƒt‚ðƒCƒ“ƒXƒg[ƒ‹‚·‚é‚É‚ÍŠÇ—ŽÒŒ ŒÀ‚ª•K—v‚Å‚·B"
-
-; checkifadministrator function (uninstall)
-LangString CheckAdministratorUnInstDP ${LANG_JAPANESE} "ƒAƒ“ƒCƒ“ƒXƒg[ƒ‹‚Ì‚½‚ß‚ÌŒ ŒÀ‚ðƒ`ƒFƒbƒN’†‚Å‚·..." 
-LangString CheckAdministratorUnInstMB ${LANG_JAPANESE} "ƒZƒJƒ“ƒhƒ‰ƒCƒt‚ðƒAƒ“ƒCƒ“ƒXƒg[ƒ‹‚·‚é‚É‚ÍŠÇ—ŽÒŒ ŒÀ‚ª•K—v‚Å‚·B" 
-
-; checkifalreadycurrent
-LangString CheckIfCurrentMB ${LANG_JAPANESE} "ƒZƒJƒ“ƒhƒ‰ƒCƒt${VERSION_LONG} ‚̓Cƒ“ƒXƒg[ƒ‹Ï‚Ý‚Å‚·BÄ“xƒCƒ“ƒXƒg[ƒ‹‚µ‚Ü‚·‚©H " 
-
-; closesecondlife function (install)
-LangString CloseSecondLifeInstDP ${LANG_JAPANESE} "ƒZƒJƒ“ƒhƒ‰ƒCƒt‚ðI—¹’†‚Å‚·..." 
-LangString CloseSecondLifeInstMB ${LANG_JAPANESE} "ƒZƒJƒ“ƒhƒ‰ƒCƒt‚Ì‹N“®’†‚ɃCƒ“ƒXƒg[ƒ‹‚͏o—ˆ‚Ü‚¹‚ñB’¼‚¿‚ɃZƒJƒ“ƒhƒ‰ƒCƒt‚ðI—¹‚µ‚ăCƒ“ƒXƒg[ƒ‹‚ðŠJŽn‚·‚éê‡‚ÍOKƒ{ƒ^ƒ“‚ð‰Ÿ‚µ‚Ä‚­‚¾‚³‚¢BCANCEL‚ð‰Ÿ‚·‚Æ’†Ž~‚µ‚Ü‚·B"
-
-; closesecondlife function (uninstall)
-LangString CloseSecondLifeUnInstDP ${LANG_JAPANESE} "ƒZƒJƒ“ƒhƒ‰ƒCƒt‚ðI—¹’†‚Å‚·..." 
-LangString CloseSecondLifeUnInstMB ${LANG_JAPANESE} "ƒZƒJƒ“ƒhƒ‰ƒCƒt‚Ì‹N“®’†‚ɃAƒ“ƒCƒ“ƒXƒg[ƒ‹‚͏o—ˆ‚Ü‚¹‚ñB’¼‚¿‚ɃZƒJƒ“ƒhƒ‰ƒCƒt‚ðI—¹‚µ‚ăAƒ“ƒCƒ“ƒXƒg[ƒ‹‚ðŠJŽn‚·‚éê‡‚ÍOKƒ{ƒ^ƒ“‚ð‰Ÿ‚µ‚Ä‚­‚¾‚³‚¢BCANCEL‚ð‰Ÿ‚·‚Æ’†Ž~‚µ‚Ü‚·B" 
-
-; removecachefiles
-LangString RemoveCacheFilesDP ${LANG_JAPANESE} " Documents and Settings ƒtƒHƒ‹ƒ_‚̃LƒƒƒbƒVƒ…ƒtƒ@ƒCƒ‹‚ðƒfƒŠ[ƒg’†‚Å‚·B" 
-
-; delete program files
-LangString DeleteProgramFilesMB ${LANG_JAPANESE} "ƒZƒJƒ“ƒhƒ‰ƒCƒt‚̃fƒBƒŒƒNƒgƒŠ‚ɂ́A‚Ü‚¾ƒtƒ@ƒCƒ‹‚ªŽc‚³‚ê‚Ä‚¢‚Ü‚·B$\n$INSTDIR$\n‚É‚ ‚È‚½‚ªì¬A‚Ü‚½‚͈ړ®‚³‚¹‚½ƒtƒ@ƒCƒ‹‚ª‚ ‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B‘S‚č폜‚µ‚Ü‚·‚©H " 
-
-; uninstall text
-LangString UninstallTextMsg ${LANG_JAPANESE} "ƒZƒJƒ“ƒhƒ‰ƒCƒt${VERSION_LONG}‚ðƒAƒ“ƒCƒ“ƒXƒg[ƒ‹‚µ‚Ü‚·B"
+; First is default
+LoadLanguageFile "${NSISDIR}\Contrib\Language files\Japanese.nlf"
+
+; subtitle on license text caption
+LangString LicenseSubTitleUpdate ${LANG_JAPANESE} " ƒAƒbƒvƒf[ƒg" 
+LangString LicenseSubTitleSetup ${LANG_JAPANESE} " ƒZƒbƒgƒAƒbƒv" 
+
+; description on license page
+LangString LicenseDescUpdate ${LANG_JAPANESE} "‚±‚̃pƒbƒP[ƒW‚̓ZƒJƒ“ƒhƒ‰ƒCƒt‚ðƒo[ƒWƒ‡ƒ“${VERSION_LONG}.‚ɃAƒbƒvƒf[ƒg‚µ‚Ü‚·B" 
+LangString LicenseDescSetup ${LANG_JAPANESE} "‚±‚̃pƒbƒP[ƒW‚Í‚ ‚È‚½‚̃Rƒ“ƒsƒ…[ƒ^‚ɃZƒJƒ“ƒhƒ‰ƒCƒt‚ðƒCƒ“ƒXƒg[ƒ‹‚µ‚Ü‚·B" 
+LangString LicenseDescNext ${LANG_JAPANESE} "ŽŸ" 
+
+; installation directory text
+LangString DirectoryChooseTitle ${LANG_JAPANESE} "ƒCƒ“ƒXƒg[ƒ‹EƒfƒBƒŒƒNƒgƒŠ" 
+LangString DirectoryChooseUpdate ${LANG_JAPANESE} "ƒAƒbƒvƒf[ƒg‚·‚éƒZƒJƒ“ƒhƒ‰ƒCƒt‚̃fƒBƒŒƒNƒgƒŠ‚ð‘I‘ð‚µ‚Ä‚­‚¾‚³‚¢B:" 
+LangString DirectoryChooseSetup ${LANG_JAPANESE} "ƒZƒJƒ“ƒhƒ‰ƒCƒt‚ðƒCƒ“ƒXƒg[ƒ‹‚·‚éƒfƒBƒŒƒNƒgƒŠ‚ð‘I‘ð‚µ‚Ä‚­‚¾‚³‚¢B: " 
+
+; CheckStartupParams message box
+LangString CheckStartupParamsMB ${LANG_JAPANESE} "ƒvƒƒOƒ‰ƒ€–¼'$INSTPROG'‚ªŒ©‚‚©‚è‚Ü‚¹‚ñBƒTƒCƒŒƒ“ƒgEƒAƒbƒvƒf[ƒg‚ÉŽ¸”s‚µ‚Ü‚µ‚½B" 
+
+; installation success dialog
+LangString InstSuccesssQuestion ${LANG_JAPANESE} "’¼‚¿‚ɃZƒJƒ“ƒhƒ‰ƒCƒt‚ðŠJŽn‚µ‚Ü‚·‚©H " 
+
+; remove old NSIS version
+LangString RemoveOldNSISVersion ${LANG_JAPANESE} "ŒÃ‚¢ƒo[ƒWƒ‡ƒ“î•ñ‚ðƒ`ƒFƒbƒN’†‚Å‚·c" 
+
+; check windows version
+LangString CheckWindowsVersionDP ${LANG_JAPANESE} "ƒEƒBƒ“ƒhƒEƒY‚̃o[ƒWƒ‡ƒ“î•ñ‚ðƒ`ƒFƒbƒN’†‚Å‚·..." 
+LangString CheckWindowsVersionMB ${LANG_JAPANESE} "ƒZƒJƒ“ƒhƒ‰ƒCƒt‚ÍWindows XPAWindows 2000AMac OS X‚Ì‚Ý‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·BWindows $R0‚ðƒCƒ“ƒXƒg[ƒ‹‚·‚鎖‚́Aƒf[ƒ^‚̏ÁŽ¸‚âƒNƒ‰ƒbƒVƒ…‚ÌŒ´ˆö‚É‚È‚é‰Â”\«‚ª‚ ‚è‚Ü‚·BƒCƒ“ƒXƒg[ƒ‹‚𑱂¯‚Ü‚·‚©H" 
+
+; checkifadministrator function (install)
+LangString CheckAdministratorInstDP ${LANG_JAPANESE} "ƒCƒ“ƒXƒg[ƒ‹‚Ì‚½‚ß‚ÌŒ ŒÀ‚ðƒ`ƒFƒbƒN’†‚Å‚·..." 
+LangString CheckAdministratorInstMB ${LANG_JAPANESE} "ƒZƒJƒ“ƒhƒ‰ƒCƒt‚ðƒCƒ“ƒXƒg[ƒ‹‚·‚é‚É‚ÍŠÇ—ŽÒŒ ŒÀ‚ª•K—v‚Å‚·B"
+
+; checkifadministrator function (uninstall)
+LangString CheckAdministratorUnInstDP ${LANG_JAPANESE} "ƒAƒ“ƒCƒ“ƒXƒg[ƒ‹‚Ì‚½‚ß‚ÌŒ ŒÀ‚ðƒ`ƒFƒbƒN’†‚Å‚·..." 
+LangString CheckAdministratorUnInstMB ${LANG_JAPANESE} "ƒZƒJƒ“ƒhƒ‰ƒCƒt‚ðƒAƒ“ƒCƒ“ƒXƒg[ƒ‹‚·‚é‚É‚ÍŠÇ—ŽÒŒ ŒÀ‚ª•K—v‚Å‚·B" 
+
+; checkifalreadycurrent
+LangString CheckIfCurrentMB ${LANG_JAPANESE} "ƒZƒJƒ“ƒhƒ‰ƒCƒt${VERSION_LONG} ‚̓Cƒ“ƒXƒg[ƒ‹Ï‚Ý‚Å‚·BÄ“xƒCƒ“ƒXƒg[ƒ‹‚µ‚Ü‚·‚©H " 
+
+; closesecondlife function (install)
+LangString CloseSecondLifeInstDP ${LANG_JAPANESE} "ƒZƒJƒ“ƒhƒ‰ƒCƒt‚ðI—¹’†‚Å‚·..." 
+LangString CloseSecondLifeInstMB ${LANG_JAPANESE} "ƒZƒJƒ“ƒhƒ‰ƒCƒt‚Ì‹N“®’†‚ɃCƒ“ƒXƒg[ƒ‹‚͏o—ˆ‚Ü‚¹‚ñB’¼‚¿‚ɃZƒJƒ“ƒhƒ‰ƒCƒt‚ðI—¹‚µ‚ăCƒ“ƒXƒg[ƒ‹‚ðŠJŽn‚·‚éê‡‚ÍOKƒ{ƒ^ƒ“‚ð‰Ÿ‚µ‚Ä‚­‚¾‚³‚¢BCANCEL‚ð‰Ÿ‚·‚Æ’†Ž~‚µ‚Ü‚·B"
+
+; closesecondlife function (uninstall)
+LangString CloseSecondLifeUnInstDP ${LANG_JAPANESE} "ƒZƒJƒ“ƒhƒ‰ƒCƒt‚ðI—¹’†‚Å‚·..." 
+LangString CloseSecondLifeUnInstMB ${LANG_JAPANESE} "ƒZƒJƒ“ƒhƒ‰ƒCƒt‚Ì‹N“®’†‚ɃAƒ“ƒCƒ“ƒXƒg[ƒ‹‚͏o—ˆ‚Ü‚¹‚ñB’¼‚¿‚ɃZƒJƒ“ƒhƒ‰ƒCƒt‚ðI—¹‚µ‚ăAƒ“ƒCƒ“ƒXƒg[ƒ‹‚ðŠJŽn‚·‚éê‡‚ÍOKƒ{ƒ^ƒ“‚ð‰Ÿ‚µ‚Ä‚­‚¾‚³‚¢BCANCEL‚ð‰Ÿ‚·‚Æ’†Ž~‚µ‚Ü‚·B" 
+
+; removecachefiles
+LangString RemoveCacheFilesDP ${LANG_JAPANESE} " Documents and Settings ƒtƒHƒ‹ƒ_‚̃LƒƒƒbƒVƒ…ƒtƒ@ƒCƒ‹‚ðƒfƒŠ[ƒg’†‚Å‚·B" 
+
+; delete program files
+LangString DeleteProgramFilesMB ${LANG_JAPANESE} "ƒZƒJƒ“ƒhƒ‰ƒCƒt‚̃fƒBƒŒƒNƒgƒŠ‚ɂ́A‚Ü‚¾ƒtƒ@ƒCƒ‹‚ªŽc‚³‚ê‚Ä‚¢‚Ü‚·B$\n$INSTDIR$\n‚É‚ ‚È‚½‚ªì¬A‚Ü‚½‚͈ړ®‚³‚¹‚½ƒtƒ@ƒCƒ‹‚ª‚ ‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B‘S‚č폜‚µ‚Ü‚·‚©H " 
+
+; uninstall text
+LangString UninstallTextMsg ${LANG_JAPANESE} "ƒZƒJƒ“ƒhƒ‰ƒCƒt${VERSION_LONG}‚ðƒAƒ“ƒCƒ“ƒXƒg[ƒ‹‚µ‚Ü‚·B"
diff --git a/indra/newview/installers/windows/lang_ko.nsi b/indra/newview/installers/windows/lang_ko.nsi
index 4e6b5ec0cdf714d47cd4dc75e96bc3e80aaab7b6..b570315f03e135c810a8cfd5c68d400c4cccd2e3 100644
--- a/indra/newview/installers/windows/lang_ko.nsi
+++ b/indra/newview/installers/windows/lang_ko.nsi
@@ -1,57 +1,57 @@
-; First is default
-LoadLanguageFile "${NSISDIR}\Contrib\Language files\Korean.nlf"
-
-; subtitle on license text caption
-LangString LicenseSubTitleUpdate ${LANG_KOREAN} "¾÷µ¥ÀÌÆ®"
-LangString LicenseSubTitleSetup ${LANG_KOREAN} " ¼³Ä¡Çϱâ"
-
-; description on license page
-LangString LicenseDescUpdate ${LANG_KOREAN} "ÀÌ ÆÑÅ°Áö´Â ¼¼ÄÁµå¶óÀÌÇÁ¸¦ ¹öÀü${VERSION_LONG}.À¸·Î ¾÷µ¥ÀÌÆ® ÇÕ´Ï´Ù. "
-LangString LicenseDescSetup ${LANG_KOREAN} "ÀÌ ÆÑÅ°Áö´Â ¼¼ÄÁµå¶óÀÌÇÁ¸¦ ÄÄÇ»ÅÍ¿¡ ¼³Ä¡ÇÕ´Ï´Ù."
-LangString LicenseDescNext ${LANG_KOREAN} "´ÙÀ½"
-
-; installation directory text
-LangString DirectoryChooseTitle ${LANG_KOREAN} "¼³Ä¡ µð·ºÅ丮"
-LangString DirectoryChooseUpdate ${LANG_KOREAN} "¼¼ÄÁµå¶óÀÌÇÁ¸¦ ¾÷µ¥ÀÌÆ®ÇÒ µð·ºÅ丮¸¦ ¼±ÅÃÇϼ¼¿ä. "
-LangString DirectoryChooseSetup ${LANG_KOREAN} "¼¼ÄÁµå¶óÀÌÇÁ¸¦ ¼³Ä¡ÇÒ µð·ºÅ丮¸¦ ¼±ÅÃÇϼ¼¿ä:"
-
-; CheckStartupParams message box
-LangString CheckStartupParamsMB ${LANG_KOREAN} " ¡®$INSTPROG¡¯ ÇÁ·Î±×·¥À» ãÁö ¸øÇß½À´Ï´Ù. ÀÚµ¿ ¾÷µ¥ÀÌÆ®¿¡ ½ÇÆÐÇß½À´Ï´Ù."
-
-; installation success dialog
-LangString InstSuccesssQuestion ${LANG_KOREAN} "¼¼ÄÁµå¶óÀÌÇÁ¸¦ ½ÃÀÛÇÏ°Ú½À´Ï±î?"
-
-; remove old NSIS version
-LangString RemoveOldNSISVersion ${LANG_KOREAN} "ÀÌÀü ¹öÀüÀ» ã°í ÀÖ½À´Ï´Ù¡¦ "
-
-; check windows version
-LangString CheckWindowsVersionDP ${LANG_KOREAN} "À©µµ¿ì ¹öÀüÀ» È®ÀÎÇÏ°í ÀÖ½À´Ï´Ù."
-LangString CheckWindowsVersionMB ${LANG_KOREAN} "¼¼ÄÁµå¶óÀÌÇÁ´Â À©µµ¿ì XP, À©µµ¿ì 2000, ±×¸®°í ¸Æ OS X¸¦ Áö¿øÇÕ´Ï´Ù. À©µµ¿ì $R0¿¡ ¼³Ä¡¸¦ ½ÃµµÇÏ¸é ¿ÀÀÛµ¿°ú µ¥ÀÌÅÍ ºÐ½ÇÀÌ ÀϾ ¼ö ÀÖ½À´Ï´Ù. °è¼Ó ¼³Ä¡ÇÏ°Ú½À´Ï±î? "
-
-; checkifadministrator function (install)
-LangString CheckAdministratorInstDP ${LANG_KOREAN} "¼³Ä¡ ±ÇÇÑÀ» È®ÀÎ ÁßÀÔ´Ï´Ù... "
-LangString CheckAdministratorInstMB ${LANG_KOREAN} "ÇöÀç ¡®¼Õ´Ô¡¯°èÁ¤À» »ç¿ë ÁßÀÔ´Ï´Ù. ¼¼ÄÁµå¶óÀÌÇÁ¸¦ ¼³Ä¡Çϱâ À§Çؼ± ¡®¿î¿µÀÚ¡± °èÁ¤À» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù."
-
-; checkifadministrator function (uninstall)
-LangString CheckAdministratorUnInstDP ${LANG_KOREAN} "Á¦°Å ±ÇÇÑÀ» È®ÀÎ ÁßÀÔ´Ï´Ù. "
-LangString CheckAdministratorUnInstMB ${LANG_KOREAN} " ÇöÀç ¡®¼Õ´Ô¡¯°èÁ¤À» »ç¿ë ÁßÀÔ´Ï´Ù. ¼¼ÄÁµå¶óÀÌÇÁ¸¦ Á¦°ÅÇϱâ À§Çؼ± ¡®¿î¿µÀÚ¡± °èÁ¤À» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. "
-
-; checkifalreadycurrent
-LangString CheckIfCurrentMB ${LANG_KOREAN} "¼¼ÄÁµå¶óÀÌÇÁ ¹öÀü ${VERSION_LONG}ÀÌ ÀÌ¹Ì ¼³Ä¡µÇ¾î ÀÖ½À´Ï´Ù. ´Ù½Ã ¼³Ä¡ÇϽðڽÀ´Ï±î? "
-
-; closesecondlife function (install)
-LangString CloseSecondLifeInstDP ${LANG_KOREAN} "¼¼ÄÁµå¶óÀÌÇÁ¸¦ Á¾·áÇÒ ¶§ ±îÁö ´ë±â Áß¡¦ "
-LangString CloseSecondLifeInstMB ${LANG_KOREAN} "¼¼ÄÁµå¶óÀÌÇÁ°¡ ÀÌ¹Ì ÀÛµ¿ ÁßÀÏ °æ¿ì ¼³Ä¡¸¦ °è¼Ó ÇÒ ¼ö ¾ø½À´Ï´Ù. ÇöÀç ÀÛ¾÷À» ¸ØÃß°í ¡®È®ÀΡ¯À» ´­·¯ ¼¼ÄÁµå¶óÀÌÇÁ¸¦ Á¾·áÇÑ ´ÙÀ½ ÁøÇàÇϱ⠹ٶø´Ï´Ù. ¼³Ä¡¸¦ Ãë¼ÒÇÏ·Á¸é ¡®Ãë¼Ò¡¯¸¦ ´©¸£¼¼¿ä." 
-
-; closesecondlife function (uninstall)
-LangString CloseSecondLifeUnInstDP ${LANG_KOREAN} "¼¼ÄÁµå¶óÀÌÇÁ¸¦ Á¾·áÇÒ ¶§ ±îÁö ´ë±â Áß¡¦¡±"
-LangString CloseSecondLifeUnInstMB ${LANG_KOREAN} " ¼¼ÄÁµå¶óÀÌÇÁ°¡ ÀÌ¹Ì ÀÛµ¿ ÁßÀÏ °æ¿ì Á¦°Å¸¦ °è¼Ó ÇÒ ¼ö ¾ø½À´Ï´Ù. ÇöÀç ÀÛ¾÷À» ¸ØÃß°í ¡®È®ÀΡ¯À» ´­·¯ ¼¼ÄÁµå¶óÀÌÇÁ¸¦ Á¾·áÇÑ ´ÙÀ½ ÁøÇàÇϱ⠹ٶø´Ï´Ù. ¼³Ä¡¸¦ ÃëÇÏ·Á¸é ¡®Ãë¼Ò¡¯¸¦ ´©¸£¼¼¿ä. "
-
-; removecachefiles
-LangString RemoveCacheFilesDP ${LANG_KOREAN} " Documents and Settings Æú´õ ³»ÀÇ Ä³½Ã ÆÄÀϵéÀ» Áö¿ó´Ï´Ù."
-
-; delete program files
-LangString DeleteProgramFilesMB ${LANG_KOREAN} "¼¼ÄÁµå¶óÀÌÇÁ ÇÁ·Î±×·¥ µð·ºÅ丮¿¡ ¾ÆÁ÷ ÆÄÀϵéÀÌ ³²¾Æ ÀÖ½À´Ï´Ù. ÀÌ ÆÄÀϵéÀº »ç¿ëÀÚ°¡ ¸¸µç °ÍµéÀ̰ųª$\n$INSTDIR$\n$\n·Î À̵¿ÇÑ ÆÄÀϵéÀÏ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ÆÄÀϵéÀ» Á¦°ÅÇÏ°Ú½À´Ï±î?" 
-
-; uninstall text
-LangString UninstallTextMsg ${LANG_KOREAN} "¼¼ÄÁµå¶óÀÌÇÁ${VERSION_LONG}À» ½Ã½ºÅÛ¿¡¼­ Á¦°ÅÇÕ´Ï´Ù."
+; First is default
+LoadLanguageFile "${NSISDIR}\Contrib\Language files\Korean.nlf"
+
+; subtitle on license text caption
+LangString LicenseSubTitleUpdate ${LANG_KOREAN} "¾÷µ¥ÀÌÆ®"
+LangString LicenseSubTitleSetup ${LANG_KOREAN} " ¼³Ä¡Çϱâ"
+
+; description on license page
+LangString LicenseDescUpdate ${LANG_KOREAN} "ÀÌ ÆÑÅ°Áö´Â ¼¼ÄÁµå¶óÀÌÇÁ¸¦ ¹öÀü${VERSION_LONG}.À¸·Î ¾÷µ¥ÀÌÆ® ÇÕ´Ï´Ù. "
+LangString LicenseDescSetup ${LANG_KOREAN} "ÀÌ ÆÑÅ°Áö´Â ¼¼ÄÁµå¶óÀÌÇÁ¸¦ ÄÄÇ»ÅÍ¿¡ ¼³Ä¡ÇÕ´Ï´Ù."
+LangString LicenseDescNext ${LANG_KOREAN} "´ÙÀ½"
+
+; installation directory text
+LangString DirectoryChooseTitle ${LANG_KOREAN} "¼³Ä¡ µð·ºÅ丮"
+LangString DirectoryChooseUpdate ${LANG_KOREAN} "¼¼ÄÁµå¶óÀÌÇÁ¸¦ ¾÷µ¥ÀÌÆ®ÇÒ µð·ºÅ丮¸¦ ¼±ÅÃÇϼ¼¿ä. "
+LangString DirectoryChooseSetup ${LANG_KOREAN} "¼¼ÄÁµå¶óÀÌÇÁ¸¦ ¼³Ä¡ÇÒ µð·ºÅ丮¸¦ ¼±ÅÃÇϼ¼¿ä:"
+
+; CheckStartupParams message box
+LangString CheckStartupParamsMB ${LANG_KOREAN} " ¡®$INSTPROG¡¯ ÇÁ·Î±×·¥À» ãÁö ¸øÇß½À´Ï´Ù. ÀÚµ¿ ¾÷µ¥ÀÌÆ®¿¡ ½ÇÆÐÇß½À´Ï´Ù."
+
+; installation success dialog
+LangString InstSuccesssQuestion ${LANG_KOREAN} "¼¼ÄÁµå¶óÀÌÇÁ¸¦ ½ÃÀÛÇÏ°Ú½À´Ï±î?"
+
+; remove old NSIS version
+LangString RemoveOldNSISVersion ${LANG_KOREAN} "ÀÌÀü ¹öÀüÀ» ã°í ÀÖ½À´Ï´Ù¡¦ "
+
+; check windows version
+LangString CheckWindowsVersionDP ${LANG_KOREAN} "À©µµ¿ì ¹öÀüÀ» È®ÀÎÇÏ°í ÀÖ½À´Ï´Ù."
+LangString CheckWindowsVersionMB ${LANG_KOREAN} "¼¼ÄÁµå¶óÀÌÇÁ´Â À©µµ¿ì XP, À©µµ¿ì 2000, ±×¸®°í ¸Æ OS X¸¦ Áö¿øÇÕ´Ï´Ù. À©µµ¿ì $R0¿¡ ¼³Ä¡¸¦ ½ÃµµÇÏ¸é ¿ÀÀÛµ¿°ú µ¥ÀÌÅÍ ºÐ½ÇÀÌ ÀϾ ¼ö ÀÖ½À´Ï´Ù. °è¼Ó ¼³Ä¡ÇÏ°Ú½À´Ï±î? "
+
+; checkifadministrator function (install)
+LangString CheckAdministratorInstDP ${LANG_KOREAN} "¼³Ä¡ ±ÇÇÑÀ» È®ÀÎ ÁßÀÔ´Ï´Ù... "
+LangString CheckAdministratorInstMB ${LANG_KOREAN} "ÇöÀç ¡®¼Õ´Ô¡¯°èÁ¤À» »ç¿ë ÁßÀÔ´Ï´Ù. ¼¼ÄÁµå¶óÀÌÇÁ¸¦ ¼³Ä¡Çϱâ À§Çؼ± ¡®¿î¿µÀÚ¡± °èÁ¤À» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù."
+
+; checkifadministrator function (uninstall)
+LangString CheckAdministratorUnInstDP ${LANG_KOREAN} "Á¦°Å ±ÇÇÑÀ» È®ÀÎ ÁßÀÔ´Ï´Ù. "
+LangString CheckAdministratorUnInstMB ${LANG_KOREAN} " ÇöÀç ¡®¼Õ´Ô¡¯°èÁ¤À» »ç¿ë ÁßÀÔ´Ï´Ù. ¼¼ÄÁµå¶óÀÌÇÁ¸¦ Á¦°ÅÇϱâ À§Çؼ± ¡®¿î¿µÀÚ¡± °èÁ¤À» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. "
+
+; checkifalreadycurrent
+LangString CheckIfCurrentMB ${LANG_KOREAN} "¼¼ÄÁµå¶óÀÌÇÁ ¹öÀü ${VERSION_LONG}ÀÌ ÀÌ¹Ì ¼³Ä¡µÇ¾î ÀÖ½À´Ï´Ù. ´Ù½Ã ¼³Ä¡ÇϽðڽÀ´Ï±î? "
+
+; closesecondlife function (install)
+LangString CloseSecondLifeInstDP ${LANG_KOREAN} "¼¼ÄÁµå¶óÀÌÇÁ¸¦ Á¾·áÇÒ ¶§ ±îÁö ´ë±â Áß¡¦ "
+LangString CloseSecondLifeInstMB ${LANG_KOREAN} "¼¼ÄÁµå¶óÀÌÇÁ°¡ ÀÌ¹Ì ÀÛµ¿ ÁßÀÏ °æ¿ì ¼³Ä¡¸¦ °è¼Ó ÇÒ ¼ö ¾ø½À´Ï´Ù. ÇöÀç ÀÛ¾÷À» ¸ØÃß°í ¡®È®ÀΡ¯À» ´­·¯ ¼¼ÄÁµå¶óÀÌÇÁ¸¦ Á¾·áÇÑ ´ÙÀ½ ÁøÇàÇϱ⠹ٶø´Ï´Ù. ¼³Ä¡¸¦ Ãë¼ÒÇÏ·Á¸é ¡®Ãë¼Ò¡¯¸¦ ´©¸£¼¼¿ä." 
+
+; closesecondlife function (uninstall)
+LangString CloseSecondLifeUnInstDP ${LANG_KOREAN} "¼¼ÄÁµå¶óÀÌÇÁ¸¦ Á¾·áÇÒ ¶§ ±îÁö ´ë±â Áß¡¦¡±"
+LangString CloseSecondLifeUnInstMB ${LANG_KOREAN} " ¼¼ÄÁµå¶óÀÌÇÁ°¡ ÀÌ¹Ì ÀÛµ¿ ÁßÀÏ °æ¿ì Á¦°Å¸¦ °è¼Ó ÇÒ ¼ö ¾ø½À´Ï´Ù. ÇöÀç ÀÛ¾÷À» ¸ØÃß°í ¡®È®ÀΡ¯À» ´­·¯ ¼¼ÄÁµå¶óÀÌÇÁ¸¦ Á¾·áÇÑ ´ÙÀ½ ÁøÇàÇϱ⠹ٶø´Ï´Ù. ¼³Ä¡¸¦ ÃëÇÏ·Á¸é ¡®Ãë¼Ò¡¯¸¦ ´©¸£¼¼¿ä. "
+
+; removecachefiles
+LangString RemoveCacheFilesDP ${LANG_KOREAN} " Documents and Settings Æú´õ ³»ÀÇ Ä³½Ã ÆÄÀϵéÀ» Áö¿ó´Ï´Ù."
+
+; delete program files
+LangString DeleteProgramFilesMB ${LANG_KOREAN} "¼¼ÄÁµå¶óÀÌÇÁ ÇÁ·Î±×·¥ µð·ºÅ丮¿¡ ¾ÆÁ÷ ÆÄÀϵéÀÌ ³²¾Æ ÀÖ½À´Ï´Ù. ÀÌ ÆÄÀϵéÀº »ç¿ëÀÚ°¡ ¸¸µç °ÍµéÀ̰ųª$\n$INSTDIR$\n$\n·Î À̵¿ÇÑ ÆÄÀϵéÀÏ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ÆÄÀϵéÀ» Á¦°ÅÇÏ°Ú½À´Ï±î?" 
+
+; uninstall text
+LangString UninstallTextMsg ${LANG_KOREAN} "¼¼ÄÁµå¶óÀÌÇÁ${VERSION_LONG}À» ½Ã½ºÅÛ¿¡¼­ Á¦°ÅÇÕ´Ï´Ù."
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 803c8325c20336c0138f4e9e0b3fab4bbbc4a201..8c7af9ebf78df1e83fd342cb4ff093ef4060468d 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -108,6 +108,7 @@
 #include "lldebugview.h"
 #include "llconsole.h"
 #include "llcontainerview.h"
+#include "llfloaterstats.h"
 #include "llhoverview.h"
 
 #include "llsdserialize.h"
@@ -210,13 +211,6 @@ extern OSStatus DisplayReleaseNotes(void);
 #endif // LL_DARWIN
 
 
-#include "moviemaker.h"
-extern BOOL gbCapturing;
-
-#if !LL_SOLARIS
-	extern MovieMaker gMovieMaker;
-#endif
-
 extern BOOL gRandomizeFramerate;
 extern BOOL gPeriodicSlowFrame;
 
@@ -1425,12 +1419,6 @@ bool LLAppViewer::mainLoop()
 
 					LLFloaterSnapshot::update(); // take snapshots
 					
-#if !LL_SOLARIS
-					if (gbCapturing)
-					{
-						gMovieMaker.Snap();
-					}
-#endif
 #if LL_WINDOWS && LL_LCD_COMPILE
 					// update LCD Screen
 					gLcdScreen->UpdateDisplay();
@@ -2440,7 +2428,7 @@ void LLAppViewer::cleanupSavedSettings()
 		if (gDebugView)
 		{
 			gSavedSettings.setBOOL("ShowDebugConsole", gDebugView->mDebugConsolep->getVisible());
-			gSavedSettings.setBOOL("ShowDebugStats", gDebugView->mStatViewp->getVisible());
+			gSavedSettings.setBOOL("ShowDebugStats", gDebugView->mFloaterStatsp->getVisible());
 		}
 	}
 
diff --git a/indra/newview/llchatbar.cpp b/indra/newview/llchatbar.cpp
index 2ea9bf6e5edb0ecf98f32a89f30e404ca73dc9ec..239d974bc3391c569ac3d8c85fd19f61cadee034 100644
--- a/indra/newview/llchatbar.cpp
+++ b/indra/newview/llchatbar.cpp
@@ -429,10 +429,8 @@ void LLChatBar::sendChat( EChatType type )
 //-----------------------------------------------------------------------
 
 // static 
-void LLChatBar::startChat(void* userdata)
+void LLChatBar::startChat(const char* line)
 {
-	const char* line = (const char*)userdata;
-
 	gChatBar->setVisible(TRUE);
 	gChatBar->setKeyboardFocus(TRUE);
 	gSavedSettings.setBOOL("ChatVisible", TRUE);
diff --git a/indra/newview/llchatbar.h b/indra/newview/llchatbar.h
index f198574dcd1d32c675853d6c58303ba4af261986..f677218dc10be3937e201674d52a820ac0d19086 100644
--- a/indra/newview/llchatbar.h
+++ b/indra/newview/llchatbar.h
@@ -90,7 +90,7 @@ public:
 
 	static void onCommitGesture(LLUICtrl* ctrl, void* data);
 
-	static void startChat(void*);
+	static void startChat(const char* line);
 	static void stopChat();
 
 protected:
diff --git a/indra/newview/llcurrencyuimanager.cpp b/indra/newview/llcurrencyuimanager.cpp
index eeb970e38ba61c3f9af663ba1b5427fc8b4c96b8..61ff316a2fe3c1370a220475ed9d93e4f7068ba9 100644
--- a/indra/newview/llcurrencyuimanager.cpp
+++ b/indra/newview/llcurrencyuimanager.cpp
@@ -332,6 +332,7 @@ void LLCurrencyUIManager::Impl::currencyKey(S32 value)
 		// get reset and the cursor will change...
 		
 		mPanel.childHide("currency_est");
+		mPanel.childSetVisible("getting_data",TRUE);
 	}
 	
 	mCurrencyChanged = true;
@@ -392,6 +393,13 @@ void LLCurrencyUIManager::Impl::updateUI()
 
 	mPanel.childSetTextArg("currency_est", "[USD]", llformat("%#.2f", mSiteCurrencyEstimatedCost / 100.0));
 	mPanel.childSetVisible("currency_est", mSiteCurrencyEstimated && mUserCurrencyBuy > 0);
+
+	if (mPanel.childIsEnabled("buy_btn")
+		||mPanel.childIsVisible("currency_est")
+		|| mPanel.childIsVisible("error_web"))
+	{
+		mPanel.childSetVisible("getting_data",FALSE);
+	}
 }
 
 
diff --git a/indra/newview/lldebugview.cpp b/indra/newview/lldebugview.cpp
index 0921941fdd460280cd1d2c73eb52bd95e6e4abb5..3fb7da7baadb1dd27071ed50cd170da75f46c84d 100644
--- a/indra/newview/lldebugview.cpp
+++ b/indra/newview/lldebugview.cpp
@@ -43,6 +43,7 @@
 #include "imageids.h"
 #include "llvelocitybar.h"
 #include "llviewerwindow.h"
+#include "llfloaterstats.h"
 
 //
 // Globals
@@ -100,16 +101,16 @@ LLDebugView::LLDebugView(const std::string& name, const LLRect &rect)
 	// Debug statistics
 	//
 	r.set(rect.getWidth() - 250,
-		  rect.getHeight(),
+		  rect.getHeight() - 50,
 		  rect.getWidth(),
-		  rect.getHeight() - 400);
-	mStatViewp = new LLContainerView("statistics", r);
-	mStatViewp->setLabel("Statistics");
-	mStatViewp->setFollowsTop();
-	mStatViewp->setFollowsRight();
+		  rect.getHeight() - 450);
+	mFloaterStatsp = new LLFloaterStats(r);
+
+	mFloaterStatsp->setFollowsTop();
+	mFloaterStatsp->setFollowsRight();
 	// Default to off
-	mStatViewp->setVisible(FALSE);
-	addChild(mStatViewp);
+	mFloaterStatsp->setVisible(FALSE);
+	addChild(mFloaterStatsp);
 
 	const S32 VELOCITY_LEFT = 10; // 370;
 	const S32 VELOCITY_WIDTH = 500;
diff --git a/indra/newview/lldebugview.h b/indra/newview/lldebugview.h
index 075e8d7c39e7d3825c23960d2512f9482e792b7c..36d367e40decc0265a34d51a91d87ee0ba5d0425 100644
--- a/indra/newview/lldebugview.h
+++ b/indra/newview/lldebugview.h
@@ -46,7 +46,7 @@ class LLFastTimerView;
 class LLMemoryView;
 class LLConsole;
 class LLTextureView;
-class LLContainerView;
+class LLFloaterStats;
 
 class LLDebugView : public LLView
 {
@@ -61,7 +61,7 @@ public:
 	LLFastTimerView* mFastTimerView;
 	LLMemoryView*	 mMemoryView;
 	LLConsole*		 mDebugConsolep;
-	LLContainerView* mStatViewp;
+	LLFloaterStats*  mFloaterStatsp;
 };
 
 extern LLDebugView* gDebugView;
diff --git a/indra/newview/llfloaterbuycurrency.cpp b/indra/newview/llfloaterbuycurrency.cpp
index 8866ad7ed15b1405e0bdc038d3565460e6ed6f54..fb6cb40401545ba40808ce464a664cfd594706f9 100644
--- a/indra/newview/llfloaterbuycurrency.cpp
+++ b/indra/newview/llfloaterbuycurrency.cpp
@@ -229,6 +229,10 @@ void LLFloaterBuyCurrencyUI::updateUI()
 		}
 
 		childSetVisible("error_web", !mManager.errorURI().empty());
+		if (!mManager.errorURI().empty())
+		{
+			childHide("getting_data");
+		}
 	}
 	else
 	{
@@ -308,6 +312,11 @@ void LLFloaterBuyCurrencyUI::updateUI()
 	}
 	
 	childSetEnabled("buy_btn", mManager.canBuy());
+
+	if (!mManager.canBuy() && !childIsVisible("error_web"))
+	{
+		childShow("getting_data");
+	}
 }
 
 // static
diff --git a/indra/newview/llfloaterchat.cpp b/indra/newview/llfloaterchat.cpp
index 851d81f34927a6a71b1ddd4e558c0134283a40d2..3f510fc5002f75465043c23c172ed288740fc6ad 100644
--- a/indra/newview/llfloaterchat.cpp
+++ b/indra/newview/llfloaterchat.cpp
@@ -434,12 +434,25 @@ void LLFloaterChat::loadHistory()
 }
 
 //static
-void LLFloaterChat::chatFromLogFile(LLString line, void* userdata)
+void LLFloaterChat::chatFromLogFile(LLLogChat::ELogLineType type , LLString line, void* userdata)
 {
-	LLChat chat;
-				
-	chat.mText = line;
-	addChatHistory(chat,  FALSE);
+	switch (type)
+	{
+	case LLLogChat::LOG_EMPTY:
+	case LLLogChat::LOG_END:
+		// *TODO: nice message from XML file here
+		break;
+	case LLLogChat::LOG_LINE:
+		{
+			LLChat chat;					
+			chat.mText = line;
+			addChatHistory(chat,  FALSE);
+		}
+		break;
+	default:
+		// nothing
+		break;
+	}
 }
 
 //static
diff --git a/indra/newview/llfloaterchat.h b/indra/newview/llfloaterchat.h
index c8ce7c0b55a5d10680cb1d1fb52963e33058fa46..987fa2b4c52e61c1b8adb58c6b7bcb697f063d6c 100644
--- a/indra/newview/llfloaterchat.h
+++ b/indra/newview/llfloaterchat.h
@@ -38,7 +38,7 @@
 #define LL_LLFLOATERCHAT_H
 
 #include "llfloater.h"
-
+#include "lllogchat.h"
 class LLButton;
 class LLChat;
 class LLComboBox;
@@ -48,6 +48,7 @@ class LLMessageSystem;
 class LLUUID;
 class LLCheckBoxCtrl;
 class LLPanelActiveSpeakers;
+class LLLogChat;
 
 class LLFloaterChat
 	:	public LLFloater, public LLUISingleton<LLFloaterChat, LLFloaterChat>
@@ -74,7 +75,7 @@ public:
 	static void onClickMute(void *data);
 	static void onClickToggleShowMute(LLUICtrl* caller, void *data);
 	static void onClickToggleActiveSpeakers(void* userdata);
-	static void chatFromLogFile(LLString line, void* userdata);
+	static void chatFromLogFile(LLLogChat::ELogLineType type,LLString line, void* userdata);
 	static void loadHistory();
 	static void* createSpeakersPanel(void* data);
 	static void* createChatPanel(void* data);
diff --git a/indra/newview/llfloatergesture.cpp b/indra/newview/llfloatergesture.cpp
index 44d158d2e351ef9567ae7b049e66243f23a1e04e..171c7da0f9ec6ee2d09919621d281404bbba6831 100644
--- a/indra/newview/llfloatergesture.cpp
+++ b/indra/newview/llfloatergesture.cpp
@@ -99,7 +99,7 @@ LLFloaterGesture::~LLFloaterGesture()
 
 	// Custom saving rectangle, since load must be done
 	// after postBuild.
-	gSavedSettings.setRect("FloaterGestureRect", getRect());
+	gSavedSettings.setRect("FloaterGestureRect2", getRect());
 }
 
 // virtual
@@ -147,7 +147,7 @@ void LLFloaterGesture::show()
 	gUICtrlFactory->buildFloater(self, "floater_gesture.xml");
 
 	// Fix up rectangle
-	LLRect rect = gSavedSettings.getRect("FloaterGestureRect");
+	LLRect rect = gSavedSettings.getRect("FloaterGestureRect2");
 	self->reshape(rect.getWidth(), rect.getHeight());
 	self->setRect(rect);
 
@@ -156,7 +156,12 @@ void LLFloaterGesture::show()
 	self->childSetFocus("gesture_list");
 
 	LLCtrlListInterface *list = self->childGetListInterface("gesture_list");
-	if (list) list->selectFirstItem();
+	if (list)
+	{
+		const BOOL ascending = TRUE;
+		list->sortByColumn("name", ascending);
+		list->selectFirstItem();
+	}
 	
 	self->mSelectedID = LLUUID::null;
 
diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp
index 8879be2e51aedf48fea42181505786ac9dd496a9..6c65ace89afd5d853941a105ed9b7d0a9090997f 100644
--- a/indra/newview/llfloatertools.cpp
+++ b/indra/newview/llfloatertools.cpp
@@ -759,6 +759,9 @@ void LLFloaterTools::onOpen()
 {
 	mParcelSelection = gParcelMgr->getFloatingParcelSelection();
 	mObjectSelection = gSelectMgr->getEditSelection();
+	
+	gMenuBarView->setItemVisible("Tools", TRUE);
+	gMenuBarView->arrange();
 }
 
 // virtual
@@ -788,6 +791,9 @@ void LLFloaterTools::onClose(bool app_quitting)
 	// we were already in basic toolset, using build tools
 	// so manually reset tool to default (pie menu tool)
 	gToolMgr->getCurrentToolset()->selectFirstTool();
+
+	gMenuBarView->setItemVisible("Tools", FALSE);
+	gMenuBarView->arrange();
 }
 
 void LLFloaterTools::showMore(BOOL show_more)
diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp
index 1344b6ef22f5ca4eac5f24afdfa4828ab525ec60..ebc6dc232222ce83325cbece2483354cf4ffe032 100644
--- a/indra/newview/llfloaterworldmap.cpp
+++ b/indra/newview/llfloaterworldmap.cpp
@@ -128,14 +128,14 @@ public:
 	virtual void changed(U32 mask);
 };
 
-void LLMapFriendObserver::changed(U32 mask)
-{
-	// if there's a change we're interested in.
-	if((mask & (LLFriendObserver::ADD | LLFriendObserver::REMOVE | LLFriendObserver::ONLINE | LLFriendObserver::POWERS)) != 0)
-	{
-		gFloaterWorldMap->friendsChanged();
-	}
-}
+//void LLMapFriendObserver::changed(U32 mask)
+//{
+//	// if there's a change we're interested in.
+//	if((mask & (LLFriendObserver::ADD | LLFriendObserver::REMOVE | LLFriendObserver::ONLINE | LLFriendObserver::POWERS)) != 0)
+//	{
+//		gFloaterWorldMap->friendsChanged();
+//	}
+//}
 
 //---------------------------------------------------------------------------
 // Statics
@@ -202,15 +202,15 @@ BOOL LLFloaterWorldMap::postBuild()
 
 	onCommitBackground((void*)this, false);
 
-	childSetCommitCallback("friend combo", onAvatarComboCommit, this);
+	//childSetCommitCallback("friend combo", onAvatarComboCommit, this);
 
-	LLComboBox *avatar_combo = LLUICtrlFactory::getComboBoxByName(this, "friend combo");
-	if (avatar_combo)
-	{
-		avatar_combo->selectFirstItem();
-		avatar_combo->setPrearrangeCallback( onAvatarComboPrearrange );
-		avatar_combo->setTextEntryCallback( onComboTextEntry );
-	}
+	//LLComboBox *avatar_combo = LLUICtrlFactory::getComboBoxByName(this, "friend combo");
+	//if (avatar_combo)
+	//{
+	//	avatar_combo->selectFirstItem();
+	//	avatar_combo->setPrearrangeCallback( onAvatarComboPrearrange );
+	//	avatar_combo->setTextEntryCallback( onComboTextEntry );
+	//}
 
 	childSetAction("DoSearch", onLocationCommit, this);
 
@@ -323,7 +323,7 @@ void LLFloaterWorldMap::show(void*, BOOL center_on_target)
 		gFloaterWorldMap->childSetFocus("location", TRUE);
 		gFocusMgr.triggerFocusFlash();
 
-		gFloaterWorldMap->buildAvatarIDList();
+//		gFloaterWorldMap->buildAvatarIDList();
 		gFloaterWorldMap->buildLandmarkIDLists();
 
 		// If nothing is being tracked, set flag so the user position will be found
@@ -448,14 +448,14 @@ void LLFloaterWorldMap::draw()
 	updateLocation();
 	
 	LLTracker::ETrackingStatus tracking_status = LLTracker::getTrackingStatus(); 
-	if (LLTracker::TRACKING_AVATAR == tracking_status)
-	{
-		childSetColor("avatar_icon", gTrackColor);
-	}
-	else
-	{
-		childSetColor("avatar_icon", gDisabledTrackColor);
-	}
+	//if (LLTracker::TRACKING_AVATAR == tracking_status)
+	//{
+	//	childSetColor("avatar_icon", gTrackColor);
+	//}
+	//else
+	//{
+	//	childSetColor("avatar_icon", gDisabledTrackColor);
+	//}
 
 	if (LLTracker::TRACKING_LANDMARK == tracking_status)
 	{
@@ -518,38 +518,27 @@ void LLFloaterWorldMap::draw()
 	LLFloater::draw();
 }
 
-
-//-------------------------------------------------------------------------
-// Internal utility functions
-//-------------------------------------------------------------------------
-
-
+//
+////-------------------------------------------------------------------------
+//// Internal utility functions
+////-------------------------------------------------------------------------
+//
+//
 void LLFloaterWorldMap::trackAvatar( const LLUUID& avatar_id, const LLString& name )
 {
-	LLCtrlSelectionInterface *iface = childGetSelectionInterface("friend combo");
-	if (!iface) return;
-
-	buildAvatarIDList();
-	if(iface->setCurrentByID(avatar_id) || gAgent.isGodlike())
+	// *HACK: Adjust Z values automatically for liaisons & gods so
+	// they swoop down when they click on the map. Requested
+	// convenience.
+	if(gAgent.isGodlike())
 	{
-		// *HACK: Adjust Z values automatically for liaisons & gods so
-		// they swoop down when they click on the map. Requested
-		// convenience.
-		if(gAgent.isGodlike())
-		{
-			childSetValue("spin z", LLSD(200.f));
-		}
-		// Don't re-request info if we already have it or we won't have it in time to teleport
-		if (mTrackedStatus != LLTracker::TRACKING_AVATAR || name != mTrackedAvatarName)
-		{
-			mTrackedStatus = LLTracker::TRACKING_AVATAR;
-			mTrackedAvatarName = name;
-			LLTracker::trackAvatar(avatar_id, name);
-		}
+		childSetValue("spin z", LLSD(200.f));
 	}
-	else
+	// Don't re-request info if we already have it or we won't have it in time to teleport
+	if (mTrackedStatus != LLTracker::TRACKING_AVATAR || name != mTrackedAvatarName)
 	{
-		LLTracker::stopTracking(NULL);
+		mTrackedStatus = LLTracker::TRACKING_AVATAR;
+		mTrackedAvatarName = name;
+		LLTracker::trackAvatar(avatar_id, name);
 	}
 	setDefaultBtn("Teleport");
 }
@@ -802,68 +791,68 @@ void LLFloaterWorldMap::inventoryChanged()
 	}
 }
 
-void LLFloaterWorldMap::observeFriends()
-{
-	if(!mFriendObserver)
-	{
-		mFriendObserver = new LLMapFriendObserver;
-		LLAvatarTracker::instance().addObserver(mFriendObserver);
-		friendsChanged();
-	}
-}
-
-void LLFloaterWorldMap::friendsChanged()
-{
-	LLAvatarTracker& t = LLAvatarTracker::instance();
-	const LLUUID& avatar_id = t.getAvatarID();
-	buildAvatarIDList();
-	if(avatar_id.notNull())
-	{
-		LLCtrlSelectionInterface *iface = childGetSelectionInterface("friend combo");
-		if(!iface || !iface->setCurrentByID(avatar_id) || 
-			!t.getBuddyInfo(avatar_id)->isRightGrantedFrom(LLRelationship::GRANT_MAP_LOCATION) || gAgent.isGodlike())
-		{
-			LLTracker::stopTracking(NULL);
-		}
-	}
-}
-
-// No longer really builds a list.  Instead, just updates mAvatarCombo.
-void LLFloaterWorldMap::buildAvatarIDList()
-{
-	LLCtrlListInterface *list = childGetListInterface("friend combo");
-	if (!list)
-	{
-		return;
-	}
-	
-    // Delete all but the "None" entry
-	S32 list_size = list->getItemCount();
-	if (list_size > 1)
-	{
-		list->selectItemRange(1, -1);
-		list->operateOnSelection(LLCtrlListInterface::OP_DELETE);
-	}
-
-	LLSD default_column;
-	default_column["name"] = "friend name";
-	default_column["label"] = "Friend Name";
-	default_column["width"] = 500;
-	list->addColumn(default_column);
-
-	// Get all of the calling cards for avatar that are currently online
-	LLCollectMappableBuddies collector;
-	LLAvatarTracker::instance().applyFunctor(collector);
-	
-	for (LLCollectMappableBuddies::buddy_map_t::iterator it = collector.mMappable.begin();
-		 it != collector.mMappable.end(); ++it)
-	{
-		list->addSimpleElement((*it).first, ADD_BOTTOM, (*it).second);
-	}
-
-	list->setCurrentByID( LLAvatarTracker::instance().getAvatarID() );
-	list->selectFirstItem();
-}
+//void LLFloaterWorldMap::observeFriends()
+//{
+//	if(!mFriendObserver)
+//	{
+//		mFriendObserver = new LLMapFriendObserver;
+//		LLAvatarTracker::instance().addObserver(mFriendObserver);
+//		friendsChanged();
+//	}
+//}
+
+//void LLFloaterWorldMap::friendsChanged()
+//{
+//	LLAvatarTracker& t = LLAvatarTracker::instance();
+//	const LLUUID& avatar_id = t.getAvatarID();
+//	buildAvatarIDList();
+//	if(avatar_id.notNull())
+//	{
+//		LLCtrlSelectionInterface *iface = childGetSelectionInterface("friend combo");
+//		if(!iface || !iface->setCurrentByID(avatar_id) || 
+//			!t.getBuddyInfo(avatar_id)->isRightGrantedFrom(LLRelationship::GRANT_MAP_LOCATION) || gAgent.isGodlike())
+//		{
+//			LLTracker::stopTracking(NULL);
+//		}
+//	}
+//}
+//
+//// No longer really builds a list.  Instead, just updates mAvatarCombo.
+//void LLFloaterWorldMap::buildAvatarIDList()
+//{
+//	LLCtrlListInterface *list = childGetListInterface("friend combo");
+//	if (!list) return;
+//
+//    // Delete all but the "None" entry
+//	S32 list_size = list->getItemCount();
+//	while (list_size > 1)
+//	{
+//		list->selectNthItem(1);
+//		list->operateOnSelection(LLCtrlListInterface::OP_DELETE);
+//		--list_size;
+//	}
+//
+//	LLSD default_column;
+//	default_column["name"] = "friend name";
+//	default_column["label"] = "Friend Name";
+//	default_column["width"] = 500;
+//	list->addColumn(default_column);
+//
+//	// Get all of the calling cards for avatar that are currently online
+//	LLCollectMappableBuddies collector;
+//	LLAvatarTracker::instance().applyFunctor(collector);
+//	LLCollectMappableBuddies::buddy_map_t::iterator it;
+//	LLCollectMappableBuddies::buddy_map_t::iterator end;
+//	it = collector.mMappable.begin();
+//	end = collector.mMappable.end();
+//	for( ; it != end; ++it)
+//	{
+//		list->addSimpleElement((*it).first, ADD_BOTTOM, (*it).second);
+//	}
+//
+//	list->setCurrentByID( LLAvatarTracker::instance().getAvatarID() );
+//	list->selectFirstItem();
+//}
 
 
 void LLFloaterWorldMap::buildLandmarkIDLists()
@@ -969,19 +958,19 @@ void LLFloaterWorldMap::clearLandmarkSelection(BOOL clear_ui)
 	}
 }
 
-
-void LLFloaterWorldMap::clearAvatarSelection(BOOL clear_ui)
-{
-	if (clear_ui || !childHasKeyboardFocus("friend combo"))
-	{
-		mTrackedStatus = LLTracker::TRACKING_NOTHING;
-		LLCtrlListInterface *list = childGetListInterface("friend combo");
-		if (list)
-		{
-			list->selectByValue( "None" );
-		}
-	}
-}
+//
+//void LLFloaterWorldMap::clearAvatarSelection(BOOL clear_ui)
+//{
+//	if (clear_ui || !childHasKeyboardFocus("friend combo"))
+//	{
+//		mTrackedStatus = LLTracker::TRACKING_NOTHING;
+//		LLCtrlListInterface *list = childGetListInterface("friend combo");
+//		if (list)
+//		{
+//			list->selectByValue( "None" );
+//		}
+//	}
+//}
 
 
 // Adjust the maximally zoomed out limit of the zoom slider so you
@@ -1147,61 +1136,61 @@ void LLFloaterWorldMap::onLandmarkComboCommit( LLUICtrl* ctrl, void* userdata )
 	// Reset to user postion if nothing is tracked
 	self->mSetToUserPosition = ( LLTracker::getTrackingStatus() == LLTracker::TRACKING_NOTHING );
 }
-
-// static 
-void LLFloaterWorldMap::onAvatarComboPrearrange( LLUICtrl* ctrl, void* userdata )
-{
-	LLFloaterWorldMap* self = gFloaterWorldMap;
-	if( !self || self->mIsClosing )
-	{
-		return;
-	}
-
-	LLCtrlListInterface *list = self->childGetListInterface("friend combo");
-	if (!list) return;
-
-	LLUUID current_choice;
-
-	if( LLAvatarTracker::instance().haveTrackingInfo() )
-	{
-		current_choice = LLAvatarTracker::instance().getAvatarID();
-	}
-
-	self->buildAvatarIDList();
-
-	if( !list->setCurrentByID( current_choice ) || current_choice.isNull() )
-	{
-		LLTracker::stopTracking(NULL);
-	}
-}
-
-
-// static 
-void LLFloaterWorldMap::onAvatarComboCommit( LLUICtrl* ctrl, void* userdata )
-{
-	LLFloaterWorldMap* self = gFloaterWorldMap;
-	if( !self || self->mIsClosing )
-	{
-		return;
-	}
-
-	LLCtrlListInterface *list = gFloaterWorldMap->childGetListInterface("friend combo");
-	if (!list) return;
-
-	const LLUUID& new_avatar_id = list->getCurrentID();
-	if (new_avatar_id.notNull())
-	{
-		LLString name;
-		LLComboBox* combo = LLUICtrlFactory::getComboBoxByName(gFloaterWorldMap, "friend combo");
-		if (combo) name = combo->getSimple();
-		self->trackAvatar(new_avatar_id, name);
-		onShowTargetBtn(self);
-	}
-	else
-	{	// Reset to user postion if nothing is tracked
-		self->mSetToUserPosition = ( LLTracker::getTrackingStatus() == LLTracker::TRACKING_NOTHING );
-	}
-}
+//
+//// static 
+//void LLFloaterWorldMap::onAvatarComboPrearrange( LLUICtrl* ctrl, void* userdata )
+//{
+//	LLFloaterWorldMap* self = gFloaterWorldMap;
+//	if( !self || self->mIsClosing )
+//	{
+//		return;
+//	}
+//
+//	LLCtrlListInterface *list = self->childGetListInterface("friend combo");
+//	if (!list) return;
+//
+//	LLUUID current_choice;
+//
+//	if( LLAvatarTracker::instance().haveTrackingInfo() )
+//	{
+//		current_choice = LLAvatarTracker::instance().getAvatarID();
+//	}
+//
+//	self->buildAvatarIDList();
+//
+//	if( !list->setCurrentByID( current_choice ) || current_choice.isNull() )
+//	{
+//		LLTracker::stopTracking(NULL);
+//	}
+//}
+//
+//
+//// static 
+//void LLFloaterWorldMap::onAvatarComboCommit( LLUICtrl* ctrl, void* userdata )
+//{
+//	LLFloaterWorldMap* self = gFloaterWorldMap;
+//	if( !self || self->mIsClosing )
+//	{
+//		return;
+//	}
+//
+//	LLCtrlListInterface *list = gFloaterWorldMap->childGetListInterface("friend combo");
+//	if (!list) return;
+//
+//	const LLUUID& new_avatar_id = list->getCurrentID();
+//	if (new_avatar_id.notNull())
+//	{
+//		LLString name;
+//		LLComboBox* combo = LLUICtrlFactory::getComboBoxByName(gFloaterWorldMap, "friend combo");
+//		if (combo) name = combo->getSimple();
+//		self->trackAvatar(new_avatar_id, name);
+//		onShowTargetBtn(self);
+//	}
+//	else
+//	{	// Reset to user postion if nothing is tracked
+//		self->mSetToUserPosition = ( LLTracker::getTrackingStatus() == LLTracker::TRACKING_NOTHING );
+//	}
+//}
 
 //static 
 void LLFloaterWorldMap::onLocationFocusChanged( LLFocusableElement* focus, void* userdata )
diff --git a/indra/newview/llfloaterworldmap.h b/indra/newview/llfloaterworldmap.h
index 3cf12a9eb711ec5174762374bcd866d1df10e508..78bc95c48f3bd99caf25cfa8e416847194bde38a 100644
--- a/indra/newview/llfloaterworldmap.h
+++ b/indra/newview/llfloaterworldmap.h
@@ -80,9 +80,9 @@ public:
 	void observeInventory(LLInventoryModel* inventory);
 	void inventoryChanged();
 
-	// Calls for dealing with changes in friendship
-	void observeFriends();
-	void friendsChanged();
+	//// Calls for dealing with changes in friendship
+	//void observeFriends();
+	//void friendsChanged();
 
 	// tracking methods
 	void			trackAvatar( const LLUUID& avatar_id, const LLString& name );
@@ -98,7 +98,7 @@ public:
 	F32			getDistanceToDestination(const LLVector3d& pos_global, F32 z_attenuation = 0.5f) const;
 
 	void			clearLocationSelection(BOOL clear_ui = FALSE);
-	void			clearAvatarSelection(BOOL clear_ui = FALSE);
+	//void			clearAvatarSelection(BOOL clear_ui = FALSE);
 	void			clearLandmarkSelection(BOOL clear_ui = FALSE);
 
 	// Adjust the maximally zoomed out limit of the zoom slider so you can
@@ -119,8 +119,8 @@ protected:
 	static void		onLandmarkComboPrearrange( LLUICtrl* ctrl, void* data );
 	static void		onLandmarkComboCommit( LLUICtrl* ctrl, void* data );
 
-	static void		onAvatarComboPrearrange( LLUICtrl* ctrl, void* data );
-	static void		onAvatarComboCommit( LLUICtrl* ctrl, void* data );
+	//static void		onAvatarComboPrearrange( LLUICtrl* ctrl, void* data );
+	//static void		onAvatarComboCommit( LLUICtrl* ctrl, void* data );
 
 	static void		onCommitBackground(void* data, bool from_click);
 
@@ -148,7 +148,7 @@ protected:
 	void			teleportToLandmark();
 	void			setLandmarkVisited();
 
-	void			buildAvatarIDList();
+	//void			buildAvatarIDList();
 	void			flyToAvatar();
 	void			teleportToAvatar();
 
diff --git a/indra/newview/llimpanel.cpp b/indra/newview/llimpanel.cpp
index 445095a12b6b4416b726ba5f0bde67ecf9394f59..f0a48b9df56851abca38f6fcc346f46076485968 100644
--- a/indra/newview/llimpanel.cpp
+++ b/indra/newview/llimpanel.cpp
@@ -2085,12 +2085,31 @@ void LLFloaterIMPanel::removeTypingIndicator(const LLIMInfo* im_info)
 }
 
 //static
-void LLFloaterIMPanel::chatFromLogFile(LLString line, void* userdata)
+void LLFloaterIMPanel::chatFromLogFile(LLLogChat::ELogLineType type, LLString line, void* userdata)
 {
 	LLFloaterIMPanel* self = (LLFloaterIMPanel*)userdata;
-	
+	LLUIString message = line;
+
+	switch (type)
+	{
+	case LLLogChat::LOG_EMPTY:
+		// add warning log enabled message
+		message = LLFloaterChat::getInstance()->getUIString("IM_logging_string");
+		break;
+	case LLLogChat::LOG_END:
+		// add log end message
+		message = LLFloaterChat::getInstance()->getUIString("IM_logging_string");
+		break;
+	case LLLogChat::LOG_LINE:
+		// just add normal lines from file
+		break;
+	default:
+		// nothing
+		break;
+	}
+
 	//self->addHistoryLine(line, LLColor4::grey, FALSE);
-	self->mHistoryEditor->appendColoredText(line, false, true, LLColor4::grey);
+	self->mHistoryEditor->appendColoredText(message, false, true, LLColor4::grey);
 }
 
 void LLFloaterIMPanel::showSessionStartError(
diff --git a/indra/newview/llimpanel.h b/indra/newview/llimpanel.h
index 50830dedd0b4e71e555c3b0bd97ec1da58e33d5d..7abfbbb937990b986e2525272de36d3db8564ddd 100644
--- a/indra/newview/llimpanel.h
+++ b/indra/newview/llimpanel.h
@@ -33,6 +33,7 @@
 #define LL_IMPANEL_H
 
 #include "llfloater.h"
+#include "lllogchat.h"
 #include "lluuid.h"
 #include "lldarray.h"
 #include "llinstantmessage.h"
@@ -256,7 +257,7 @@ public:
 
 	// Handle other participant in the session typing.
 	void processIMTyping(const LLIMInfo* im_info, BOOL typing);
-	static void chatFromLogFile(LLString line, void* userdata);
+	static void chatFromLogFile(LLLogChat::ELogLineType type, LLString line, void* userdata);
 
 	//show error statuses to the user
 	void showSessionStartError(const std::string& error_string);
diff --git a/indra/newview/lllogchat.cpp b/indra/newview/lllogchat.cpp
index d89ec791f1461767e0a78e3a95eb836e5cf65007..6aa209b7874bdc3cc4be78c90a16bcf8a9d10f48 100644
--- a/indra/newview/lllogchat.cpp
+++ b/indra/newview/lllogchat.cpp
@@ -33,7 +33,8 @@
 
 #include "lllogchat.h"
 #include "llappviewer.h"
-	
+#include "llfloaterchat.h"
+
 const S32 LOG_RECALL_SIZE = 2048;
 
 //static
@@ -88,7 +89,7 @@ void LLLogChat::saveHistory(LLString filename, LLString line)
 	}
 }
 
-void LLLogChat::loadHistory(LLString filename , void (*callback)(LLString,void*), void* userdata)
+void LLLogChat::loadHistory(LLString filename , void (*callback)(ELogLineType,LLString,void*), void* userdata)
 {
 	if(!filename.size())
 	{
@@ -98,6 +99,9 @@ void LLLogChat::loadHistory(LLString filename , void (*callback)(LLString,void*)
 	FILE* fptr = LLFile::fopen(makeLogFileName(filename).c_str(), "r");		/*Flawfinder: ignore*/
 	if (!fptr)
 	{
+		//LLUIString message = LLFloaterChat::getInstance()->getUIString("IM_logging_string");
+		//callback(LOG_EMPTY,"IM_logging_string",userdata);
+		callback(LOG_EMPTY,"",userdata);
 		return;			//No previous conversation with this name.
 	}
 	else
@@ -124,14 +128,14 @@ void LLLogChat::loadHistory(LLString filename , void (*callback)(LLString,void*)
 			
 			if (!firstline)
 			{
-				callback(buffer,userdata);
+				callback(LOG_LINE,buffer,userdata);
 			}
 			else
 			{
 				firstline = FALSE;
 			}
 		}
-		callback("-- End of Log ---",userdata);
+		callback(LOG_END,"",userdata);
 		
 		fclose(fptr);
 	}
diff --git a/indra/newview/lllogchat.h b/indra/newview/lllogchat.h
index d5fd7797e08da971012d41439476fcbdd53581b9..0fcee48dfc4038edb6b7e7a27c85ca10a0666f1b 100644
--- a/indra/newview/lllogchat.h
+++ b/indra/newview/lllogchat.h
@@ -36,10 +36,18 @@
 class LLLogChat
 {
 public:
+	// status values for callback function
+	enum ELogLineType {
+		LOG_EMPTY,
+		LOG_LINE,
+		LOG_END
+	};
 	static LLString timestamp(bool withdate = false);
 	static LLString makeLogFileName(LLString(filename));
 	static void saveHistory(LLString filename, LLString line);
-	static void loadHistory(LLString filename, void (*callback)(LLString,void*),void* userdata);
+	static void loadHistory(LLString filename, 
+		                    void (*callback)(ELogLineType,LLString,void*), 
+							void* userdata);
 };
 
 #endif
diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp
index a27295c7b5754de702f3f2e4c391b8fb3c24c42b..1e933706e174c9c1d6b4f28dfba00b5471e7f37e 100644
--- a/indra/newview/llpanellogin.cpp
+++ b/indra/newview/llpanellogin.cpp
@@ -934,6 +934,27 @@ void LLPanelLogin::loadLoginPage()
 	}
 	oStr << login_page;
 	
+	// Use the right delimeter depending on how LLURI parses the URL
+	LLURI login_page_uri = LLURI(login_page);
+	std::string first_query_delimiter = "&";
+	if (login_page_uri.queryMap().size() == 0)
+	{
+		first_query_delimiter = "?";
+	}
+
+	LLString language(gSavedSettings.getString("Language"));
+	if(language == "default")
+	{
+		language = gSavedSettings.getString("SystemLanguage");
+	}
+	oStr << first_query_delimiter<<"lang=" << language;
+	
+	if (gSavedSettings.getBOOL("FirstLoginThisInstall"))
+	{
+		oStr << "&firstlogin=TRUE";
+	}
+
+
 #if USE_VIEWER_AUTH
 	LLURLSimString::sInstance.parse();
 
@@ -989,15 +1010,7 @@ void LLPanelLogin::loadLoginPage()
 	char* curl_channel = curl_escape(gChannelName.c_str(), 0);
 	char* curl_version = curl_escape(version.c_str(), 0);
 
-	
-	// Use the right delimeter depending on how LLURI parses the URL
-	LLURI login_page_uri = LLURI(login_page);
-	std::string first_query_delimiter = "&";
-	if (login_page_uri.queryMap().size() == 0)
-	{
-		first_query_delimiter = "?";
-	}
-	oStr << first_query_delimiter << "firstname=" << firstname <<
+	oStr <<"firstname=" << firstname <<
 		"&lastname=" << lastname << "&location=" << location <<	"&region=" << curl_region <<
 		"&grid=" << gGridInfo[gGridChoice].mLabel << "&channel=" << curl_channel <<
 		"&version=" << curl_version;
@@ -1006,13 +1019,6 @@ void LLPanelLogin::loadLoginPage()
 	curl_free(curl_channel);
 	curl_free(curl_version);
 
-	LLString language(gSavedSettings.getString("Language"));
-	if(language == "default")
-	{
-		language = gSavedSettings.getString("SystemLanguage");
-	}
-
-	oStr << "&lang=" << language;
 
 	if (!gCmdLinePassword.empty())
 	{
diff --git a/indra/newview/llpanelobject.cpp b/indra/newview/llpanelobject.cpp
index 2ebbc075009644d39e38643fe830e8a5515e4e8f..f0acbf4b22784de4814c94220b5427cbdd1b33a0 100644
--- a/indra/newview/llpanelobject.cpp
+++ b/indra/newview/llpanelobject.cpp
@@ -1055,10 +1055,9 @@ void LLPanelObject::getState( )
 	mLabelRevolutions->setVisible( revolutions_visible );
 	mSpinRevolutions ->setVisible( revolutions_visible );
 
-	bool sculpt_type_visible = FALSE; // currently not visible - for LSL setting only
 	mCtrlSculptTexture->setVisible(sculpt_texture_visible);
-	mLabelSculptType->setVisible(sculpt_texture_visible && sculpt_type_visible);
-	mCtrlSculptType->setVisible(sculpt_texture_visible && sculpt_type_visible);
+	mLabelSculptType->setVisible(sculpt_texture_visible);
+	mCtrlSculptType->setVisible(sculpt_texture_visible);
 
 
 	// sculpt texture
diff --git a/indra/newview/llprogressview.cpp b/indra/newview/llprogressview.cpp
index 101f7ace5d4a56371c20caac0070ebc8dcda5bdf..28b09358ef96c62a88cbf8dad7e0891be76dddb6 100644
--- a/indra/newview/llprogressview.cpp
+++ b/indra/newview/llprogressview.cpp
@@ -51,6 +51,7 @@
 #include "llviewerimagelist.h"
 #include "llviewerwindow.h"
 #include "llappviewer.h"
+#include "llweb.h"
 
 LLProgressView* LLProgressView::sInstance = NULL;
 
@@ -66,7 +67,8 @@ const S32 ANIMATION_FRAMES = 1; //13;
 
 // XUI:translate
 LLProgressView::LLProgressView(const std::string& name, const LLRect &rect) 
-: LLPanel(name, rect, FALSE)
+: LLPanel(name, rect, FALSE),
+mMouseDownInActiveArea( false )
 {
 	mPercentDone = 0.f;
 	mDrawBackground = TRUE;
@@ -89,6 +91,8 @@ LLProgressView::LLProgressView(const std::string& name, const LLRect &rect)
 	mFadeTimer.stop();
 	setVisible(FALSE);
 
+	mOutlineRect.set( 0, 0, 0, 0 );
+
 	sInstance = this;
 }
 
@@ -110,12 +114,57 @@ LLString LLProgressView::getWidgetTag() const
 	return LL_PROGRESS_VIEW_TAG;
 }
 
+BOOL LLProgressView::handleMouseDown(S32 x, S32 y, MASK mask)
+{
+	if ( mOutlineRect.pointInRect( x, y ) )
+	{
+		mMouseDownInActiveArea = TRUE;
+	};
+
+	return TRUE;
+}
+
+BOOL LLProgressView::handleMouseUp(S32 x, S32 y, MASK mask)
+{
+	if ( mOutlineRect.pointInRect( x, y ) )
+	{
+		if ( mMouseDownInActiveArea )
+		{
+			if ( ! mMessage.empty() )
+			{
+				std::string url_to_open( "" );
+
+				size_t start_pos = mMessage.find( "http://" );
+				if ( start_pos != std::string::npos )
+				{
+					size_t end_pos = mMessage.find_first_of( " \n\r\t", start_pos );
+					if ( end_pos != std::string::npos )
+						url_to_open = mMessage.substr( start_pos, end_pos - start_pos );
+					else
+						url_to_open = mMessage.substr( start_pos );
+
+					LLWeb::loadURLExternal( url_to_open );
+				};
+			};
+		};
+	};
+
+	return TRUE;
+}
+
 BOOL LLProgressView::handleHover(S32 x, S32 y, MASK mask)
 {
 	if( childrenHandleHover( x, y, mask ) == NULL )
 	{
 		lldebugst(LLERR_USER_INPUT) << "hover handled by LLProgressView" << llendl;
-		gViewerWindow->setCursor(UI_CURSOR_WAIT);
+		if ( mOutlineRect.pointInRect( x, y ) )
+		{
+			gViewerWindow->setCursor(UI_CURSOR_ARROW);
+		}
+		else
+		{
+			gViewerWindow->setCursor(UI_CURSOR_WAIT);
+		}
 	}
 	return TRUE;
 }
@@ -231,6 +280,53 @@ void LLProgressView::draw()
 
 	LLString top_line = LLAppViewer::instance()->getSecondLifeTitle();
 
+	S32 bar_bottom = line_two_y - 30;
+	S32 bar_height = 18;
+	S32 bar_width = getRect().getWidth() * 2 / 3;
+	S32 bar_left = (getRect().getWidth() / 2) - (bar_width / 2);
+
+	// translucent outline box
+	S32 background_box_left = ( ( ( getRect().getWidth() / 2 ) - ( bar_width / 2 ) ) / 4 ) * 3;
+	S32 background_box_top = ( getRect().getHeight() / 2 ) + LINE_SPACING * 5;
+	S32 background_box_right = getRect().getWidth() - background_box_left;
+	S32 background_box_bottom = ( getRect().getHeight() / 2 ) - LINE_SPACING * 5;
+	S32 background_box_width = background_box_right - background_box_left + 1;
+	S32 background_box_height = background_box_top - background_box_bottom + 1;
+
+	gl_draw_scaled_image_with_border( background_box_left + 2, 
+									  background_box_bottom - 2, 
+									  16, 
+									  16,
+									  background_box_width, 
+									  background_box_height,
+									  shadow_imagep,
+									  gColors.getColor( "ColorDropShadow" ) );
+
+	gl_draw_scaled_image_with_border( background_box_left, 
+									  background_box_bottom, 
+									  16, 
+									  16,
+									  background_box_width, 
+									  background_box_height,
+									  bar_imagep,
+									  LLColor4( 0.0f, 0.0f, 0.0f, 0.5f ) );
+
+	gl_draw_scaled_image_with_border( background_box_left + 1,
+									  background_box_bottom + 1, 
+									  16,
+									  16,
+									  background_box_width - 2,
+									  background_box_height - 2,
+									  bar_imagep,
+									  LLColor4( 0.4f, 0.4f, 0.4f, 0.4f ) );
+
+	// we'll need this later for catching a click if it looks like it contains a link
+	if ( mMessage.find( "http://" ) != std::string::npos )
+		mOutlineRect.set( background_box_left, background_box_top, background_box_right, background_box_bottom );
+	else
+		mOutlineRect.set( 0, 0, 0, 0 );
+
+	// draw loading bar
 	font->renderUTF8(top_line, 0,
 		line_x, line_one_y,
 		LLColor4::white,
@@ -242,11 +338,6 @@ void LLProgressView::draw()
 		LLFontGL::HCENTER, LLFontGL::BASELINE,
 		LLFontGL::DROP_SHADOW);
 
-	S32 bar_bottom = line_two_y - 30;
-	S32 bar_height = 18;
-	S32 bar_width = getRect().getWidth() * 2 / 3;
-	S32 bar_left = (getRect().getWidth() / 2) - (bar_width / 2);
-
 	gl_draw_scaled_image_with_border(
 		bar_left + 2, 
 		bar_bottom - 2, 
diff --git a/indra/newview/llprogressview.h b/indra/newview/llprogressview.h
index b284e20c9e7b9e5cb3bb186ec82e35fb50c30202..8f242b865a4d41d3059f0d462f77e181c359056a 100644
--- a/indra/newview/llprogressview.h
+++ b/indra/newview/llprogressview.h
@@ -48,6 +48,9 @@ public:
 	virtual LLString getWidgetTag() const;
 
 	/*virtual*/ void draw();
+	/*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask);
+	/*virtual*/ BOOL handleMouseUp(S32 x, S32 y, MASK mask);
+
 	/*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask);
 	/*virtual*/ BOOL handleKeyHere(KEY key, MASK mask, BOOL called_from_parent);
 	/*virtual*/ void setVisible(BOOL visible);
@@ -70,8 +73,10 @@ protected:
 	LLButton*	mCancelBtn;
 	LLFrameTimer	mFadeTimer;
 	LLFrameTimer mProgressTimer;
-
+	LLRect mOutlineRect;
+	bool mMouseDownInActiveArea;
 	static LLProgressView* sInstance;
+
 };
 
 #endif // LL_LLPROGRESSVIEW_H
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 461730b947fbf1354f1d658e6e566b2c5b8eea34..c5bb21dad2fa39d15f384f944a625d48a88c8563 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -84,6 +84,7 @@
 #include "llcolorscheme.h"
 #include "llconsole.h"
 #include "llcontainerview.h"
+#include "llfloaterstats.h"
 #include "lldebugview.h"
 #include "lldrawable.h"
 #include "lleventnotifier.h"
@@ -1629,7 +1630,7 @@ BOOL idle_startup()
 			LLError::logToFixedBuffer(gDebugView->mDebugConsolep);
 			// set initial visibility of debug console
 			gDebugView->mDebugConsolep->setVisible(gSavedSettings.getBOOL("ShowDebugConsole"));
-			gDebugView->mStatViewp->setVisible(gSavedSettings.getBOOL("ShowDebugStats"));
+			gDebugView->mFloaterStatsp->setVisible(gSavedSettings.getBOOL("ShowDebugStats"));
 		}
 
 		//
@@ -2273,7 +2274,7 @@ BOOL idle_startup()
 		if(gFloaterWorldMap)
 		{
 			gFloaterWorldMap->observeInventory(&gInventory);
-			gFloaterWorldMap->observeFriends();
+			//gFloaterWorldMap->observeFriends();
 		}
 
 		gViewerWindow->showCursor();
@@ -3036,7 +3037,7 @@ void init_stat_view()
 
 	LLRect rect;
 	LLStatBar *stat_barp;
-	rect = gDebugView->mStatViewp->getRect();
+	rect = gDebugView->mFloaterStatsp->getRect();
 
 	//
 	// Viewer advanced stats
@@ -3047,7 +3048,7 @@ void init_stat_view()
 	// Viewer Basic
 	//
 	stat_viewp = new LLStatView("basic stat view", "Basic",	"OpenDebugStatBasic", rect);
-	gDebugView->mStatViewp->addChildAtEnd(stat_viewp);
+	gDebugView->mFloaterStatsp->addStatView(stat_viewp);
 
 	stat_barp = stat_viewp->addStat("FPS", &(gViewerStats->mFPSStat));
 	stat_barp->setUnitLabel(" fps");
@@ -3091,7 +3092,7 @@ void init_stat_view()
 
 
 	stat_viewp = new LLStatView("advanced stat view", "Advanced", "OpenDebugStatAdvanced", rect);
-	gDebugView->mStatViewp->addChildAtEnd(stat_viewp);
+	gDebugView->mFloaterStatsp->addStatView(stat_viewp);
 
 
 	LLStatView *render_statviewp;
@@ -3249,7 +3250,7 @@ void init_stat_view()
 
 	// Simulator stats
 	LLStatView *sim_statviewp = new LLStatView("sim stat view", "Simulator", "OpenDebugStatSim", rect);
-	gDebugView->mStatViewp->addChildAtEnd(sim_statviewp);
+	gDebugView->mFloaterStatsp->addStatView(sim_statviewp);
 
 	stat_barp = sim_statviewp->addStat("Time Dilation", &(gViewerStats->mSimTimeDilation));
 	stat_barp->mPrecision = 2;
@@ -3485,10 +3486,10 @@ void init_stat_view()
 	stat_barp->mDisplayBar = FALSE;
 	stat_barp->mDisplayMean = FALSE;
 
-	LLRect r = gDebugView->mStatViewp->getRect();
+	LLRect r = gDebugView->mFloaterStatsp->getRect();
 
 	// Reshape based on the parameters we set.
-	gDebugView->mStatViewp->reshape(r.getWidth(), r.getHeight());
+	gDebugView->mFloaterStatsp->reshape(r.getWidth(), r.getHeight());
 }
 
 void asset_callback_nothing(LLVFS*, const LLUUID&, LLAssetType::EType, void*, S32)
diff --git a/indra/newview/lltracker.cpp b/indra/newview/lltracker.cpp
index cc45b121ae13e49f0727c79d97a2bcd32515916f..6938c62d8453925fa60f7019a0cf6a75d9e8c7fd 100644
--- a/indra/newview/lltracker.cpp
+++ b/indra/newview/lltracker.cpp
@@ -607,7 +607,7 @@ void LLTracker::stopTrackingAvatar(BOOL clear_ui)
 	}
 
 	purgeBeaconText();
-	gFloaterWorldMap->clearAvatarSelection(clear_ui);
+	//gFloaterWorldMap->clearAvatarSelection(clear_ui);
 	mTrackingStatus = TRACKING_NOTHING;
 }
 
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index cf5d7b406eed305b2b8eb7902635e4ade17f011a..a75544d5287b13a46e157fe6781592bb6eaf61df 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -284,7 +284,8 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 	LLImageGL::updateStats(gFrameTimeSeconds);
 	
 	LLVOAvatar::sRenderName = gSavedSettings.getS32("RenderName");
-	LLVOAvatar::sRenderGroupTitles = gSavedSettings.getBOOL("RenderGroupTitleAll");
+	LLVOAvatar::sRenderGroupTitles = !gSavedSettings.getBOOL("RenderHideGroupTitleAll");
+	
 	gPipeline.mBackfaceCull = TRUE;
 	gFrameCount++;
 	if (gFocusMgr.getAppHasFocus())
diff --git a/indra/newview/llviewerkeyboard.cpp b/indra/newview/llviewerkeyboard.cpp
index a8f88ec036edba4d343e0e32d4ef0468e78d36e0..8a5a5e99c97a5535d5bd9d3a1e99e34bc358ef1e 100644
--- a/indra/newview/llviewerkeyboard.cpp
+++ b/indra/newview/llviewerkeyboard.cpp
@@ -477,6 +477,24 @@ void start_chat( EKeystate s )
 	gChatBar->startChat(NULL);
 }
 
+void start_gesture( EKeystate s )
+{
+	if (KEYSTATE_UP == s &&
+	    !gChatBar->inputEditorHasFocus())
+	{
+		if (gChatBar->getCurrentChat().empty())
+		{
+			// No existing chat in chat editor, insert '/'
+			gChatBar->startChat("/");
+		}
+		else
+		{
+			// Don't overwrite existing text in chat editor
+			gChatBar->startChat(NULL);
+		}
+	}
+}
+
 void bind_keyboard_functions()
 {
 	gViewerKeyboard.bindNamedFunction("jump", agent_jump);
@@ -518,6 +536,7 @@ void bind_keyboard_functions()
 	gViewerKeyboard.bindNamedFunction("edit_avatar_move_backward", edit_avatar_move_backward);
 	gViewerKeyboard.bindNamedFunction("stop_moving", stop_moving);
 	gViewerKeyboard.bindNamedFunction("start_chat", start_chat);
+	gViewerKeyboard.bindNamedFunction("start_gesture", start_gesture);
 }
 
 LLViewerKeyboard::LLViewerKeyboard()
diff --git a/indra/newview/llviewerkeyboard.h b/indra/newview/llviewerkeyboard.h
index 350d6d85a597f4cdaac46510e5d5f83c9f6afe0e..fd024d09021da88a1f5f90cd3050f091e721f0c5 100644
--- a/indra/newview/llviewerkeyboard.h
+++ b/indra/newview/llviewerkeyboard.h
@@ -55,10 +55,9 @@ typedef enum e_keyboard_mode
 } EKeyboardMode;
 
 
-void agent_push_forward( EKeystate s );
-void agent_turn_right( EKeystate s );
 void bind_keyboard_functions();
 
+
 class LLViewerKeyboard
 {
 public:
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 546c52a070c28626eba0664f3c30f18407d57b6d..1a4ee66cda3bf6c8c6f4abfa4cac21404c26ea58 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -120,6 +120,7 @@
 #include "llfloaterreporter.h"
 #include "llfloaterscriptdebug.h"
 #include "llfloaterenvsettings.h"
+#include "llfloaterstats.h"
 #include "llfloatertest.h"
 #include "llfloatertools.h"
 #include "llfloaterwater.h"
@@ -706,6 +707,9 @@ void init_menus()
 	gMenuBarView->setRect(LLRect(0, top, 0, top - MENU_BAR_HEIGHT));
 	gMenuBarView->setBackgroundColor( color );
 
+    gMenuBarView->setItemVisible("Tools", FALSE);
+	gMenuBarView->arrange();
+	
 	gMenuHolder->addChild(gMenuBarView);
 	
 	// menu holder appears on top of menu bar so you can see the menu title
@@ -2216,10 +2220,23 @@ class LLAvatarFreeze : public view_listener_t
 		if( avatar )
 		{
 			LLUUID* avatar_id = new LLUUID( avatar->getID() );
+			LLString fullname = avatar->getFullname();
 
-			gViewerWindow->alertXml("FreezeAvatar",
-				callback_freeze, (void*)avatar_id);
-			
+			if (!fullname.empty())
+			{
+				LLString::format_map_t args;
+				args["[AVATAR_NAME]"] = fullname;
+				gViewerWindow->alertXml("FreezeAvatarFullname",
+							args,
+							callback_freeze,
+							(void*)avatar_id);
+			}
+			else
+			{
+				gViewerWindow->alertXml("FreezeAvatar",
+							callback_freeze,
+							(void*)avatar_id);
+			}
 		}
 		return true;
 	}
@@ -2305,9 +2322,23 @@ class LLAvatarEject : public view_listener_t
 		if( avatar )
 		{
 			LLUUID* avatar_id = new LLUUID( avatar->getID() );
-			gViewerWindow->alertXml("EjectAvatar",
-					callback_eject, (void*)avatar_id);
-			
+			LLString fullname = avatar->getFullname();
+
+			if (!fullname.empty())
+			{
+				LLString::format_map_t args;
+				args["[AVATAR_NAME]"] = fullname;
+				gViewerWindow->alertXml("EjectAvatarFullname",
+							args,
+							callback_eject,
+							(void*)avatar_id);
+			}
+			else
+			{
+				gViewerWindow->alertXml("EjectAvatar",
+							callback_eject,
+							(void*)avatar_id);
+			}
 		}
 		return true;
 	}
@@ -3254,17 +3285,6 @@ void handle_show_newest_map(void*)
 // Help menu functions
 //-------------------------------------------------------------------
 
-class LLHelpMOTD : public view_listener_t
-{
-	bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
-	{
-		LLString::format_map_t args;
-		args["[MOTD]"] = gAgent.mMOTD;
-		gViewerWindow->alertXml("MOTD", args, NULL, NULL);
-		return true;
-	}
-};
-
 //
 // Major mode switching
 //
@@ -5312,7 +5332,7 @@ class LLShowFloater : public view_listener_t
 		}
 		else if (floater_name == "stat bar")
 		{
-			gDebugView->mStatViewp->setVisible(!gDebugView->mStatViewp->getVisible());
+			gDebugView->mFloaterStatsp->setVisible(!gDebugView->mFloaterStatsp->getVisible());
 		}
 		else if (floater_name == "my land")
 		{
@@ -5428,7 +5448,7 @@ class LLFloaterVisible : public view_listener_t
 		}
 		else if (floater_name == "stat bar")
 		{
-			new_value = gDebugView->mStatViewp->getVisible();
+			new_value = gDebugView->mFloaterStatsp->getVisible();
 		}
 		else if (floater_name == "active speakers")
 		{
@@ -7140,9 +7160,13 @@ void handle_load_from_xml(void*)
 
 void handle_slurl_test(void*)
 {
-	bool open_app_slurls = true;
-	bool open_links_externally = false;
-	LLFloaterHtml::getInstance()->show("http://secondlife.com/app/search/slurls.html", "SLURL Test", open_app_slurls, open_links_externally);
+	const bool open_links_externally = false;
+	const bool open_app_slurls = true;
+	LLFloaterHtml::getInstance()->show(
+		"http://secondlife.com/app/search/slurls.html",
+		"SLURL Test", 
+		open_links_externally, 
+		open_app_slurls);
 }
 
 void handle_rebake_textures(void*)
@@ -7502,15 +7526,6 @@ class LLWorldChat : public view_listener_t
 	}
 };
 
-class LLWorldStartGesture : public view_listener_t
-{
-	bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
-	{
-		handle_slash_key(NULL);
-		return true;
-	}
-};
-
 class LLToolsSelectTool : public view_listener_t
 {
 	bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
@@ -7724,7 +7739,6 @@ void initialize_menus()
 
 	// World menu
 	addMenu(new LLWorldChat(), "World.Chat");
-	addMenu(new LLWorldStartGesture(), "World.StartGesture");
 	addMenu(new LLWorldAlwaysRun(), "World.AlwaysRun");
 	addMenu(new LLWorldFly(), "World.Fly");
 	addMenu(new LLWorldCreateLandmark(), "World.CreateLandmark");
@@ -7777,7 +7791,6 @@ void initialize_menus()
 	addMenu(new LLToolsVisibleTakeObject(), "Tools.VisibleTakeObject");*/
 
 	// Help menu
-	addMenu(new LLHelpMOTD(), "Help.MOTD");
 	// most items use the ShowFloater method
 
 	// Self pie menu
diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp
index 8a7f7e047f37bef06a6db58e3ff79c6f79e8f03e..9248134188a1172c3cb62fc1cf61e310fcdad6b1 100644
--- a/indra/newview/llviewermenufile.cpp
+++ b/indra/newview/llviewermenufile.cpp
@@ -414,15 +414,6 @@ class LLFileTakeSnapshotToDisk : public view_listener_t
 	}
 };
 
-class LLFileSaveMovie : public view_listener_t
-{
-	bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
-	{
-		LLViewerWindow::saveMovieNumbered(NULL);
-		return true;
-	}
-};
-
 class LLFileSetWindowSize : public view_listener_t
 {
 	bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
@@ -1033,7 +1024,6 @@ void init_menu_file()
 	(new LLFileSaveTexture())->registerListener(gMenuHolder, "File.SaveTexture");
 	(new LLFileTakeSnapshot())->registerListener(gMenuHolder, "File.TakeSnapshot");
 	(new LLFileTakeSnapshotToDisk())->registerListener(gMenuHolder, "File.TakeSnapshotToDisk");
-	(new LLFileSaveMovie())->registerListener(gMenuHolder, "File.SaveMovie");
 	(new LLFileSetWindowSize())->registerListener(gMenuHolder, "File.SetWindowSize");
 	(new LLFileQuit())->registerListener(gMenuHolder, "File.Quit");
 
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 8aa2b8224a1b34914f3052867b6e0c47c4b247c6..16cbb3272f24eb0ac7913040c14cbcd8949ac390 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -81,6 +81,7 @@
 #include "llfloaterregioninfo.h"
 #include "llfloaterlandholdings.h"
 #include "llfloatermap.h"
+#include "llurldispatcher.h"
 #include "llfloatermute.h"
 #include "llfloaterpostcard.h"
 #include "llfloaterpreference.h"
@@ -5180,8 +5181,11 @@ void process_script_teleport_request(LLMessageSystem* msg, void**)
 	msg->getVector3("Data", "SimPosition", pos);
 	msg->getVector3("Data", "LookAt", look_at);
 
-	gFloaterWorldMap->trackURL(sim_name, (U32)pos.mV[VX], (U32)pos.mV[VY], (U32)pos.mV[VZ]);
-	LLFloaterWorldMap::show(NULL, TRUE);
+	// gFloaterWorldMap->trackURL(sim_name, (U32)pos.mV[VX], (U32)pos.mV[VY], (U32)pos.mV[VZ]);
+	// LLFloaterWorldMap::show(NULL, TRUE);
+
+	LLURLDispatcher::dispatch(LLURLDispatcher::buildSLURL(sim_name, (S32)pos.mV[VX], (S32)pos.mV[VY], (S32)pos.mV[VZ]), FALSE);
+	
 }
 
 void process_covenant_reply(LLMessageSystem* msg, void**)
diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp
index 08a73b343c1a18b822b5d893f2be7d1455e491a8..cc3532888742107ffdddf98dd330a89222487bd9 100644
--- a/indra/newview/llviewerparcelmgr.cpp
+++ b/indra/newview/llviewerparcelmgr.cpp
@@ -1724,15 +1724,7 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
 
 void optionally_start_music(const LLString& music_url)
 {
-	if (gSavedSettings.getWarning("FirstStreamingMusic"))
-	{
-		std::string* newstring = new std::string(music_url);
-		gViewerWindow->alertXml("ParcelCanPlayMusic",
-			callback_start_music,
-			(void*)newstring);
-
-	}
-	else if (gSavedSettings.getBOOL("AudioStreamingMusic"))
+	if (gSavedSettings.getBOOL("AudioStreamingMusic"))
 	{
 		// Make the user click the start button on the overlay bar. JC
 		//		llinfos << "Starting parcel music " << music_url << llendl;
@@ -1747,30 +1739,6 @@ void optionally_start_music(const LLString& music_url)
 }
 
 
-void callback_start_music(S32 option, void* data)
-{
-	std::string* music_url = (std::string*)data;
-
-	if (0 == option)
-	{
-		gSavedSettings.setBOOL("AudioStreamingMusic", TRUE);
-		llinfos << "Starting first parcel music " << music_url << llendl;
-		if ( gOverlayBar && gOverlayBar->musicPlaying())
-		{
-			gAudiop->startInternetStream(music_url->c_str());
-		}
-	}
-	else
-	{
-		gSavedSettings.setBOOL("AudioStreamingMusic", FALSE);
-	}
-
-	gSavedSettings.setWarning("FirstStreamingMusic", FALSE);
-
-	delete music_url;
-	music_url = NULL;
-}
-
 // static
 void LLViewerParcelMgr::processParcelAccessListReply(LLMessageSystem *msg, void **user)
 {
diff --git a/indra/newview/llviewertexteditor.cpp b/indra/newview/llviewertexteditor.cpp
index 2721a626c7d8c5bc6d4faa6b2e72959c2e39e8c2..8c8d1fff67f6fd4f5003e253ded8b17575318199 100644
--- a/indra/newview/llviewertexteditor.cpp
+++ b/indra/newview/llviewertexteditor.cpp
@@ -962,8 +962,6 @@ BOOL LLViewerTextEditor::handleMouseUp(S32 x, S32 y, MASK mask)
 
 BOOL LLViewerTextEditor::handleRightMouseDown(S32 x, S32 y, MASK mask)
 {
-
-
 	BOOL handled = childrenHandleRightMouseDown(x, y, mask) != NULL;
 
 	// *TODO: Add right click menus for SLURLs
diff --git a/indra/newview/llviewertexteditor.h b/indra/newview/llviewertexteditor.h
index 237c85ad53c859e2960cf948f4d522e4674deec1..019375b010187e8f88f77714f5cbda33cefba94b 100644
--- a/indra/newview/llviewertexteditor.h
+++ b/indra/newview/llviewertexteditor.h
@@ -126,14 +126,13 @@ private:
 	LLPointer<class LLEmbeddedNotecardOpener> mInventoryCallback;
 
 	// *TODO: Add right click menus for SLURLs
-	//LLHandle<LLView> mPopupMenuHandle;
+	//LLViewHandle mPopupMenuHandle;
 
 	//
 	// Inner classes
 	//
 
 	class LLTextCmdInsertEmbeddedItem;
-
 };
 
 #endif  // LL_VIEWERTEXTEDITOR_H
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 2ab11bf5076c3afbf2e1c4c284ef53d3aeedf632..9460111869951b72a3d844c55516e7c76f8bc91f 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -178,7 +178,6 @@
 #include "llvovolume.h"
 #include "llworld.h"
 #include "llworldmapview.h"
-#include "moviemaker.h"
 #include "pipeline.h"
 #include "llappviewer.h"
 #include "llurlsimstring.h"
@@ -242,11 +241,6 @@ BOOL			gPickTransparent = TRUE;
 
 BOOL			gDebugFastUIRender = FALSE;
 
-BOOL			gbCapturing = FALSE;
-#if !LL_SOLARIS
-MovieMaker		gMovieMaker;
-#endif
-
 // HUD display lines in lower right
 BOOL				gDisplayWindInfo = FALSE;
 BOOL				gDisplayCameraPos = FALSE;
@@ -1850,7 +1844,7 @@ void LLViewerWindow::adjustRectanglesForFirstUse(const LLRect& window)
 
 	adjust_rect_top_left("FloaterFindRect2", window);
 
-	adjust_rect_top_left("FloaterGestureRect", window);
+	adjust_rect_top_left("FloaterGestureRect2", window);
 
 	adjust_rect_top_right("FloaterMapRect", window);
 	
@@ -4193,108 +4187,6 @@ BOOL LLViewerWindow::saveImageNumbered(LLImageRaw *raw, const LLString& extensio
 	return success;
 }
 
-void LLViewerWindow::saveMovieNumbered(void*)
-{
-	if (!gbCapturing)
-	{
-		// Get a directory if this is the first time.
-		if (strlen(sSnapshotDir) == 0)		/* Flawfinder: ignore */
-		{
-			LLString proposed_name( sMovieBaseName );
-#if LL_DARWIN
-			proposed_name.append( ".mov" );
-#else
-			proposed_name.append( ".avi" );
-#endif
-
-			// pick a directory in which to save
-			LLFilePicker &picker = LLFilePicker::instance();
-			if (!picker.getSaveFile(LLFilePicker::FFSAVE_AVI, proposed_name.c_str()))
-			{
-				// Clicked cancel
-				return;
-			}
-
-			// Copy the directory + file name
-			char directory[LL_MAX_PATH];		/* Flawfinder: ignore */
-			strncpy(directory, picker.getFirstFile(), LL_MAX_PATH -1);		/* Flawfinder: ignore */
-			directory[LL_MAX_PATH -1] = '\0';
-
-			// Smash the file extension
-			S32 length = strlen(directory);		/* Flawfinder: ignore */
-			S32 index = length;
-
-			// Back up over ".bmp"
-			index -= 4;
-			if (index >= 0 && directory[index] == '.')
-			{
-				directory[index] = '\0';
-			}
-			else
-			{
-				index = length;
-			}
-
-			// Find trailing backslash
-			while (index >= 0 && directory[index] != gDirUtilp->getDirDelimiter()[0])
-			{
-				index--;
-			}
-
-			// If we found one, truncate the string there
-			if (index >= 0)
-			{
-				if (index + 1 <= length)
-				{
-					strncpy(LLViewerWindow::sMovieBaseName, directory + index + 1, LL_MAX_PATH -1);		/* Flawfinder: ignore */
-					LLViewerWindow::sMovieBaseName[LL_MAX_PATH -1] = '\0';
-				}
-
-				index++;
-				directory[index] = '\0';
-				strncpy(LLViewerWindow::sSnapshotDir, directory, LL_MAX_PATH -1);		/* Flawfinder: ignore */
-				LLViewerWindow::sSnapshotDir[LL_MAX_PATH -1] = '\0';
-			}
-		}
-
-		// Look for an unused file name
-		LLString filepath;
-		S32 i = 1;
-		S32 err = 0;
-
-		do
-		{
-			char extension[100];		/* Flawfinder: ignore */
-#if LL_DARWIN
-			snprintf( extension, sizeof(extension), "_%.3d.mov", i );		/* Flawfinder: ignore */
-#else
-			snprintf( extension, sizeof(extension), "_%.3d.avi", i );		/* Flawfinder: ignore */
-#endif
-			filepath.assign( sSnapshotDir );
-			filepath.append( sMovieBaseName );
-			filepath.append( extension );
-
-			struct stat stat_info;
-			err = gViewerWindow->mWindow->stat( filepath.c_str(), &stat_info );
-			i++;
-		}
-		while( -1 != err );  // search until the file is not found (i.e., stat() gives an error).
-		S32 x = gViewerWindow->getWindowWidth();
-		S32 y = gViewerWindow->getWindowHeight();
-
-		gbCapturing = TRUE;
-#if !LL_SOLARIS
-		gMovieMaker.StartCapture((char *)filepath.c_str(), x, y);
-#endif
-	}
-	else
-	{
-#if !LL_SOLARIS
-		gMovieMaker.EndCapture();
-#endif
-		gbCapturing = FALSE;
-	}
-}
 
 static S32 BORDERHEIGHT = 0;
 static S32 BORDERWIDTH = 0;
diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h
index f040ca62d31d11428847327367dd658da9faddcd..f62c25df91ffb6b025a623cadb9cb5296617dabb 100644
--- a/indra/newview/llviewerwindow.h
+++ b/indra/newview/llviewerwindow.h
@@ -208,9 +208,6 @@ public:
 
 	static void		loadUserImage(void **cb_data, const LLUUID &uuid);
 
-	// Save snapshot like Snapshot 1, 2, 3, etc.
-	static void		saveMovieNumbered(void*);
-
 	static void		movieSize(S32 new_width, S32 new_height);
 
 	typedef enum e_snapshot_type
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 99cf3a80460942e6d70b886827a508d44fa1a079..575f9c424cec1b01d7e27970a7d0998a2f571e0d 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -663,6 +663,7 @@ LLVOAvatar::LLVOAvatar(
 	mNameAway(FALSE),
 	mNameBusy(FALSE),
 	mNameMute(FALSE),
+	mRenderGroupTitles(sRenderGroupTitles),
 	mNameAppearance(FALSE),
 	mLastRegionHandle(0),
 	mRegionCrossingCount(0),
@@ -2792,6 +2793,12 @@ BOOL LLVOAvatar::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time)
 			mVisibleChat = visible_chat;
 			new_name = TRUE;
 		}
+		
+		if (sRenderGroupTitles != mRenderGroupTitles)
+		{
+			mRenderGroupTitles = sRenderGroupTitles;
+			new_name = TRUE;
+		}
 
 		// First Calculate Alpha
 		// If alpha > 0, create mNameText if necessary, otherwise delete it
@@ -2868,7 +2875,7 @@ BOOL LLVOAvatar::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time)
 		LLNameValue *title = getNVPair("Title");
 		LLNameValue* firstname = getNVPair("FirstName");
 		LLNameValue* lastname = getNVPair("LastName");
-		
+
 		if (mNameText.notNull() && firstname && lastname)
 		{
 			BOOL is_away = mSignaledAnimations.find(ANIM_AGENT_AWAY)  != mSignaledAnimations.end();
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 491d991369dc6d5fcdcada028544caea23012ccd..ae0656f3ea7e7cf201dbb380a46a33af110a7c0a 100644
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -909,6 +909,8 @@ protected:
 	BOOL	  mNameMute;
 	BOOL      mNameAppearance;
 	BOOL	  mVisibleChat;
+	BOOL      mRenderGroupTitles;
+
 
 	LLString  mDebugText;
 	U64		  mLastRegionHandle;