diff --git a/BuildParams b/BuildParams
index 348228784dda61673f3c8edc3ab03f2ff8ac887e..db16541aad0aba8d0c950f2ed39bf8bd6aee066d 100644
--- a/BuildParams
+++ b/BuildParams
@@ -72,25 +72,6 @@ viewer-pre-release.build_viewer_update_version_manager = true
 #viewer-pre-release.release-viewer.jira = DRTVWR-46
 
 
-# =======================================
-# brad
-# ========================================
-debug-halting.email = cg@lindenlab.com
-debug-halting.build_server = false
-debug-halting.build_server_tests = false
-debug-halting.build_Darwin = false
-debug-halting.build_Linux = false
-debug-halting.build_CYGWIN_Debug = false
-debug-halting.build_CYGWIN_RelWithDebInfo = false
-
-# ========================================
-# brad
-# ========================================
-
-brad-parabuild.email = brad@lindenlab.com
-brad-parabuild.build_server = false
-brad-parabuild.build_server_tests = false
-
 # ========================================
 # mesh-development
 # ========================================
@@ -132,53 +113,9 @@ viewer-mesh.email = shining@lists.lindenlab.com
 # CG
 # ========================================
 
-cg_viewer-development_lenny.collect_metrics = true
 cg_viewer-development_lenny.show_changes_since = 4b140ce7839d
 cg_viewer-development_lenny.email = cg@lindenlab.com
 
-# ========================================
-# gooey
-# ========================================
-
-#gooey.email = james@lindenlab.com
-gooey.build_Debug = false
-gooey.build_RelWithDebInfo = false
-gooey.build_server = false
-gooey.build_server_tests = false
-gooey.viewer_channel = "Second Life Alpha"
-gooey.login_channel = "Second Life Alpha"
-gooey.viewer_grid = agni
-gooey.build_viewer_update_version_manager = false
-
-# ========================================
-# Search Project
-# ========================================
-
-search_project-viewer.build_debug_release_separately = true
-search_project-viewer.viewer_channel = "Second Life Project Viewer - Search"
-search_project-viewer.login_channel = "Second Life Project Viewer - Search"
-
-# ========================================
-# palange
-# ========================================
-
-palange_viewer-2-0.email = palange@lindenlab.com
-palange_viewer-2-0.build_server = false
-palange_viewer-2-0.build_server_tests = false
-palange_viewer-2-0.build_CYGWIN_Debug = false
-
-# ========================================
-# media
-# ========================================
-
-media.email = skolb@lindenlab.com
-media.build_server = false
-media.build_server_tests = false
-media.viewer_channel = "Second Life Alpha"
-media.login_channel = "Second Life Alpha"
-media.viewer_grid = agni
-media.build_viewer_update_version_manager = false
-
 # ================
 # oz
 # ================
@@ -188,27 +125,23 @@ snowstorm_project-windlight.viewer_channel = "Second Life Project Windlight Regi
 snowstorm_project-windlight.login_channel  = "Second Life Project Windlight Region"
 
 oz_viewer-devreview.build_debug_release_separately = true
-
-viewer-devreview.build_debug_release_separately = true
-
-oz_viewer-poreview.build_debug_release_separately = true
+oz_viewer-devreview.codeticket_add_context = false
 
 oz_project-1.build_debug_release_separately = true
-
+oz_project-1.codeticket_add_context = false
 oz_project-2.build_debug_release_separately = true
+oz_project-2.codeticket_add_context = false
 oz_project-3.build_debug_release_separately = true
+oz_project-3.codeticket_add_context = false
+oz_project-4.build_debug_release_separately = true
+oz_project-4.codeticket_add_context = false
+
 oz_viewer-beta-review.build_debug_release_separately = true
+oz_viewer-beta-review.codeticket_add_context = false
+
 oz_viewer-poreview.build_debug_release_separately = true
 oz_viewer-poreview.codeticket_add_context = false
 
-# ========================================
-# enus
-# ========================================
-
-viewer-tut-teamcity.email = enus@lindenlab.com
-viewer-tut-teamcity.build_server = false
-viewer-tut-teamcity.build_server_tests = false
-
 # =================================================================
 # asset delivery 2010 projects
 # =================================================================
@@ -226,23 +159,4 @@ viewer-asset-delivery-metrics.email = monty@lindenlab.com
 viewer-asset-delivery-metrics.build_server = false
 viewer-asset-delivery-metrics.build_server_tests = false
 
-#==============================================================================
-# autobuild viewers
-#==============================================================================
-viewer-autobuild2010.build_debug_release_separately = true
-viewer-autobuild2010.viewer_channel = "Project Viewer - VS2010"
-viewer-autobuild2010.login_channel = "Project Viewer - VS2010"
-viewer-autobuild2010.viewer_grid = agni
-viewer-autobuild2010.build_link_parallel = false
-
-#======================================== 
-# VS2010 
-#======================================== 
-viewer-vs2010.viewer_channel = "Project Viewer - VS2010"
-viewer-vs2010.login_channel = "Project Viewer - VS2010"
-viewer-vs2010.viewer_grid = agni
-viewer-vs2010.build_debug_release_separately = true
-viewer-vs2010.build_viewer_update_version_manager = false
-viewer-vs2010.build_link_parallel = false
-
 # eof
diff --git a/indra/llvfs/CMakeLists.txt b/indra/llvfs/CMakeLists.txt
index b6d1ce61e5ff5d15aeec971205a78611796f91d7..2c581cf8d6e55e74dbc0d81df3ef64d842397398 100644
--- a/indra/llvfs/CMakeLists.txt
+++ b/indra/llvfs/CMakeLists.txt
@@ -62,11 +62,15 @@ list(APPEND llvfs_SOURCE_FILES ${llvfs_HEADER_FILES})
 
 add_library (llvfs ${llvfs_SOURCE_FILES})
 
-target_link_libraries(llvfs
+set(vfs_BOOST_LIBRARIES
     ${BOOST_FILESYSTEM_LIBRARY}
     ${BOOST_SYSTEM_LIBRARY}
     )
 
+target_link_libraries(llvfs
+    ${vfs_BOOST_LIBRARIES}
+    )
+
 if (DARWIN)
   include(CMakeFindFrameworks)
   find_library(CARBON_LIBRARY Carbon)
@@ -76,15 +80,21 @@ endif (DARWIN)
 
 # Add tests
 if (LL_TESTS)
-	include(LLAddBuildTest)
-	# UNIT TESTS
-	SET(llvfs_TEST_SOURCE_FILES
-	  # none so far
-	  )
-	LL_ADD_PROJECT_UNIT_TESTS(llvfs "${llvfs_TEST_SOURCE_FILES}")
-
-	# INTEGRATION TESTS
-	set(test_libs llmath llcommon llvfs ${LLCOMMON_LIBRARIES} ${WINDOWS_LIBRARIES})
-	# TODO: Some of these need refactoring to be proper Unit tests rather than Integration tests.
-	LL_ADD_INTEGRATION_TEST(lldir "" "${test_libs}")
+    include(LLAddBuildTest)
+    # UNIT TESTS
+    SET(llvfs_TEST_SOURCE_FILES
+	lldiriterator.cpp
+	)
+
+    set_source_files_properties(lldiriterator.cpp
+	PROPERTIES
+	LL_TEST_ADDITIONAL_LIBRARIES "${vfs_BOOST_LIBRARIES}"
+	)
+    LL_ADD_PROJECT_UNIT_TESTS(llvfs "${llvfs_TEST_SOURCE_FILES}")
+
+    # INTEGRATION TESTS
+    set(test_libs llmath llcommon llvfs ${LLCOMMON_LIBRARIES} ${WINDOWS_LIBRARIES})
+
+    # TODO: Some of these need refactoring to be proper Unit tests rather than Integration tests.
+    LL_ADD_INTEGRATION_TEST(lldir "" "${test_libs}")
 endif (LL_TESTS)
diff --git a/indra/llvfs/lldiriterator.cpp b/indra/llvfs/lldiriterator.cpp
index 041436ed92f24ade177358ca0db1aca687d15cf4..25550321f0218f93a931e5d2448c4ceb057a9481 100644
--- a/indra/llvfs/lldiriterator.cpp
+++ b/indra/llvfs/lldiriterator.cpp
@@ -121,6 +121,14 @@ bool LLDirIterator::Impl::next(std::string &fname)
 	return found;
 }
 
+/**
+Converts the incoming glob into a regex. This involves
+converting incoming glob expressions to regex equivilents and
+at the same time, escaping any regex meaningful characters which
+do not have glob meaning, i.e.
+            .()+|^$ 
+in the input.
+*/
 std::string glob_to_regex(const std::string& glob)
 {
 	std::string regex;
@@ -135,9 +143,6 @@ std::string glob_to_regex(const std::string& glob)
 
 		switch (c)
 		{
-			case '.':
-				regex+="\\.";
-				break;
 			case '*':
 				if (glob.begin() == i)
 				{
@@ -170,8 +175,16 @@ std::string glob_to_regex(const std::string& glob)
 			case '!':
 				regex+= square_brace_open ? '^' : c;
 				break;
+			case '.': // This collection have different regex meaning
+			case '^': // and so need escaping.
+			case '(': 
+			case ')':
+			case '+':
+			case '|':
+			case '$':
+				regex += '\\'; 
 			default:
-				regex+=c;
+				regex += c;
 				break;
 		}
 
diff --git a/indra/llvfs/tests/lldiriterator_test.cpp b/indra/llvfs/tests/lldiriterator_test.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..505d86faa7d45ed61b873e1b7e5f6bf362693b82
--- /dev/null
+++ b/indra/llvfs/tests/lldiriterator_test.cpp
@@ -0,0 +1,65 @@
+/**
+ * @file lldiriterator_test.cpp
+ * @date 2011-06
+ * @brief LLDirIterator test cases.
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.,
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+#include "lltut.h"
+#include "../lldiriterator.h"
+
+
+namespace tut
+{
+    
+    struct LLDirIteratorFixture
+    {
+        LLDirIteratorFixture()
+        {
+        }
+    };
+    typedef test_group<LLDirIteratorFixture> LLDirIteratorTest_factory;
+    typedef LLDirIteratorTest_factory::object LLDirIteratorTest_t;
+    LLDirIteratorTest_factory tf("LLDirIterator");
+
+    /*
+    CHOP-662 was originally introduced to deal with crashes deleting files from
+    a directory (VWR-25500). However, this introduced a crash looking for 
+    old chat logs as the glob_to_regex function in lldiriterator wasn't escaping lots of regexp characters
+    */
+    void test_chop_662(void)
+    {
+        //  Check a selection of bad group names from the crash reports 
+        LLDirIterator iter(".","+bad-group-name]+??-??.*");
+        LLDirIterator iter1(".","))--@---bad-group-name2((??-??.*\\.txt");
+        LLDirIterator iter2(".","__^v--x)Cuide d sua vida(x--v^__??-??.*"); 
+    }
+
+    template<> template<>
+	void LLDirIteratorTest_t::test<1>()
+    {
+       test_chop_662();
+    }
+
+}
diff --git a/indra/newview/lllogchat.cpp b/indra/newview/lllogchat.cpp
index efc4e2383881d2fb5aa57828a7707b7d6d3b4d35..ebb5912ace1647770722937e1abb23a0718af1f7 100644
--- a/indra/newview/lllogchat.cpp
+++ b/indra/newview/lllogchat.cpp
@@ -230,7 +230,7 @@ std::string LLLogChat::makeLogFileName(std::string filename)
 
 std::string LLLogChat::cleanFileName(std::string filename)
 {
-	std::string invalidChars = "\"\'\\/?*:.<>|";
+    std::string invalidChars = "\"\'\\/?*:.<>|[]{}~"; // Cannot match glob or illegal filename chars
 	std::string::size_type position = filename.find_first_of(invalidChars);
 	while (position != filename.npos)
 	{
diff --git a/indra/newview/llpreviewnotecard.cpp b/indra/newview/llpreviewnotecard.cpp
index 9f3ee6ac5d21fbcd977800aa4158da9ead916597..4974dde282c24044446503e184dbe3fc36ccd76b 100644
--- a/indra/newview/llpreviewnotecard.cpp
+++ b/indra/newview/llpreviewnotecard.cpp
@@ -401,15 +401,14 @@ struct LLSaveNotecardInfo
 
 bool LLPreviewNotecard::saveIfNeeded(LLInventoryItem* copyitem)
 {
-	if(!gAssetStorage)
+	LLViewerTextEditor* editor = getChild<LLViewerTextEditor>("Notecard Editor");
+
+	if(!editor)
 	{
-		llwarns << "Not connected to an asset storage system." << llendl;
+		llwarns << "Cannot get handle to the notecard editor." << llendl;
 		return false;
 	}
 
-	
-	LLViewerTextEditor* editor = getChild<LLViewerTextEditor>("Notecard Editor");
-
 	if(!editor->isPristine())
 	{
 		// We need to update the asset information
@@ -436,8 +435,15 @@ bool LLPreviewNotecard::saveIfNeeded(LLInventoryItem* copyitem)
 		// save it out to database
 		if (item)
 		{			
-			std::string agent_url = gAgent.getRegion()->getCapability("UpdateNotecardAgentInventory");
-			std::string task_url = gAgent.getRegion()->getCapability("UpdateNotecardTaskInventory");
+			const LLViewerRegion* region = gAgent.getRegion();
+			if (!region)
+			{
+				llwarns << "Not connected to a region, cannot save notecard." << llendl;
+				return false;
+			}
+			std::string agent_url = region->getCapability("UpdateNotecardAgentInventory");
+			std::string task_url = region->getCapability("UpdateNotecardTaskInventory");
+
 			if (mObjectUUID.isNull() && !agent_url.empty())
 			{
 				// Saving into agent inventory
@@ -472,6 +478,11 @@ bool LLPreviewNotecard::saveIfNeeded(LLInventoryItem* copyitem)
 												(void*)info,
 												FALSE);
 			}
+			else // !gAssetStorage
+			{
+				llwarns << "Not connected to an asset storage system." << llendl;
+				return false;
+			}
 		}
 	}
 	return true;
diff --git a/indra/newview/skins/default/xui/de/floater_snapshot.xml b/indra/newview/skins/default/xui/de/floater_snapshot.xml
index c014b8e040d32db2da95869d923b8f6e4dbac2f4..ae68c71a80c7ef9041345a7ac276af0e7de8e9d3 100644
--- a/indra/newview/skins/default/xui/de/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/de/floater_snapshot.xml
@@ -4,7 +4,7 @@
 		unbekannt
 	</floater.string>
 	<radio_group label="Fototyp" name="snapshot_type_radio">
-		<radio_item label="Email" name="postcard"/>
+		<radio_item label="E-Mail" name="postcard"/>
 		<radio_item label="Mein Inventar ([AMOUNT] L$)" name="texture"/>
 		<radio_item label="Auf meinem Computer speichern" name="local"/>
 	</radio_group>
diff --git a/indra/newview/skins/default/xui/de/floater_tools.xml b/indra/newview/skins/default/xui/de/floater_tools.xml
index 258e67a1386a4188a56edd1d7dbe7ca55ccd04c3..338b6093436983cc6816fdadb64d18ecc4af2aa4 100644
--- a/indra/newview/skins/default/xui/de/floater_tools.xml
+++ b/indra/newview/skins/default/xui/de/floater_tools.xml
@@ -64,9 +64,9 @@
 		<radio_item label="Fläche auswählen" name="radio select face"/>
 	</radio_group>
 	<check_box label="Verknüpfte Teile bearbeiten" name="checkbox edit linked parts"/>
-	<button label="Link" name="link_btn"/>
-	<button label="Verknüpfung auflösen" name="unlink_btn"/>
-	<text name="RenderingCost" tool_tip="Zeigt die errechneten Wiedergabekosten für dieses Objekt">
+	<button label="Link" name="link_btn" width="30"/>
+	<button label="Verknüpfung auflösen" name="unlink_btn" width="126"/>
+	<text name="RenderingCost" tool_tip="Zeigt die errechneten Wiedergabekosten für dieses Objekt" left_pad="0">
 		þ: [COUNT]
 	</text>
 	<check_box label="" name="checkbox uniform"/>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml
index b874074c792b70c25334f2cd8dd98c0ddc4e5af6..9175ea0bae9fb89f5a8f99580506ef178cdeea47 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml
@@ -60,7 +60,7 @@
 			m
 		</text>
 		<slider label="Max. Partikelzahl:" name="MaxParticleCount"/>
-		<slider label="Max. Anzahl an voll dargestellten Avataren:" name="MaxNumberAvatarDrawn"/>
+		<slider label="Max. Anzahl an voll dargestellten Avataren:" label_width="230" name="MaxNumberAvatarDrawn" width="315"/>
 		<slider label="Post-Processing-Qualität:" name="RenderPostProcess"/>
 		<text name="MeshDetailText">
 			Darstellungsgrad:
diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml
index 7441b2cd9caabe8f020483b1789a6ce0b273b235..8b8f70b940b2f69cd289ddc0f0ff10530c8849ee 100644
--- a/indra/newview/skins/default/xui/en/floater_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_tools.xml
@@ -279,7 +279,7 @@
      layout="topleft"
      left_pad="2"
      name="unlink_btn"
-     width="50">
+     width="105">
 	  <button.commit_callback
 	     function="BuildTool.UnlinkObjects"/>
     </button>
diff --git a/indra/newview/skins/default/xui/en/panel_cof_wearables.xml b/indra/newview/skins/default/xui/en/panel_cof_wearables.xml
index bbeb592e962b75fa04372bd4a4e8b6db389504b1..9e70706603cafe8f459d1a71445cf03b80097d33 100644
--- a/indra/newview/skins/default/xui/en/panel_cof_wearables.xml
+++ b/indra/newview/skins/default/xui/en/panel_cof_wearables.xml
@@ -52,7 +52,7 @@
              multi_select="true"
              name="list_attachments"
              top="0"
-             width="311">
+             width="311"/>
         </accordion_tab>
         <accordion_tab
          layout="topleft"
diff --git a/indra/newview/skins/default/xui/es/panel_navigation_bar.xml b/indra/newview/skins/default/xui/es/panel_navigation_bar.xml
index e8e95c3bac3f98a18bbafc80ae913772759d1d24..293c9ef1d9491fc8b21ff5dc62bc6db7dd281f86 100644
--- a/indra/newview/skins/default/xui/es/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/es/panel_navigation_bar.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="navigation_bar">
 	<panel name="navigation_panel">
-		<pull_button name="back_btn" tool_tip="Volver a lo localización anterior"/>
+		<pull_button name="back_btn" tool_tip="Volver a la localización anterior"/>
 		<pull_button name="forward_btn" tool_tip="Ir una localización adelante"/>
 		<button name="home_btn" tool_tip="Teleportar a mi Base"/>
 		<location_input label="Localización" name="location_combo"/>
diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml
index 3731b6b57c54dd235c56665a67b268c99f0c20da..b759eed738e47fa215ff9fc8c01289a9c4bc9728 100644
--- a/indra/newview/skins/default/xui/es/strings.xml
+++ b/indra/newview/skins/default/xui/es/strings.xml
@@ -3628,6 +3628,9 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
 	<string name="LocationCtrlComboBtnTooltip">
 		Historial de mis localizaciones
 	</string>
+	<string name="LocationCtrlForSaleTooltip">
+		Comprar este terreno
+	</string>
 	<string name="LocationCtrlAdultIconTooltip">
 		Región Adulta
 	</string>