diff --git a/indra/llcharacter/llkeyframemotion.cpp b/indra/llcharacter/llkeyframemotion.cpp
index 7bc9e97eb16ac858b3df1268f089c45aae147694..ab48ff4a43721e4d2fef03e04926f3922fdc6544 100644
--- a/indra/llcharacter/llkeyframemotion.cpp
+++ b/indra/llcharacter/llkeyframemotion.cpp
@@ -1213,7 +1213,7 @@ BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp)
 
 	if (!dp.unpackS32(temp_priority, "base_priority"))
 	{
-		llwarns << "can't read priority" << llendl;
+		llwarns << "can't read animation base_priority" << llendl;
 		return FALSE;
 	}
 	mJointMotionList->mBasePriority = (LLJoint::JointPriority) temp_priority;
@@ -1223,6 +1223,11 @@ BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp)
 		mJointMotionList->mBasePriority = (LLJoint::JointPriority)((int)LLJoint::ADDITIVE_PRIORITY-1);
 		mJointMotionList->mMaxPriority = mJointMotionList->mBasePriority;
 	}
+	else if (mJointMotionList->mBasePriority < LLJoint::USE_MOTION_PRIORITY)
+	{
+		llwarns << "bad animation base_priority " << mJointMotionList->mBasePriority << llendl;
+		return FALSE;
+	}
 
 	//-------------------------------------------------------------------------
 	// get duration
@@ -1233,7 +1238,8 @@ BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp)
 		return FALSE;
 	}
 	
-	if (mJointMotionList->mDuration > MAX_ANIM_DURATION )
+	if (mJointMotionList->mDuration > MAX_ANIM_DURATION ||
+	    !llfinite(mJointMotionList->mDuration))
 	{
 		llwarns << "invalid animation duration" << llendl;
 		return FALSE;
@@ -1257,13 +1263,15 @@ BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp)
 	//-------------------------------------------------------------------------
 	// get loop
 	//-------------------------------------------------------------------------
-	if (!dp.unpackF32(mJointMotionList->mLoopInPoint, "loop_in_point"))
+	if (!dp.unpackF32(mJointMotionList->mLoopInPoint, "loop_in_point") ||
+	    !llfinite(mJointMotionList->mLoopInPoint))
 	{
 		llwarns << "can't read loop point" << llendl;
 		return FALSE;
 	}
 
-	if (!dp.unpackF32(mJointMotionList->mLoopOutPoint, "loop_out_point"))
+	if (!dp.unpackF32(mJointMotionList->mLoopOutPoint, "loop_out_point") ||
+	    !llfinite(mJointMotionList->mLoopOutPoint))
 	{
 		llwarns << "can't read loop point" << llendl;
 		return FALSE;
@@ -1278,13 +1286,15 @@ BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp)
 	//-------------------------------------------------------------------------
 	// get easeIn and easeOut
 	//-------------------------------------------------------------------------
-	if (!dp.unpackF32(mJointMotionList->mEaseInDuration, "ease_in_duration"))
+	if (!dp.unpackF32(mJointMotionList->mEaseInDuration, "ease_in_duration") ||
+	    !llfinite(mJointMotionList->mEaseInDuration))
 	{
 		llwarns << "can't read easeIn" << llendl;
 		return FALSE;
 	}
 
-	if (!dp.unpackF32(mJointMotionList->mEaseOutDuration, "ease_out_duration"))
+	if (!dp.unpackF32(mJointMotionList->mEaseOutDuration, "ease_out_duration") ||
+	    !llfinite(mJointMotionList->mEaseOutDuration))
 	{
 		llwarns << "can't read easeOut" << llendl;
 		return FALSE;
@@ -1374,7 +1384,7 @@ BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp)
 		
 		LLPointer<LLJointState> joint_state = new LLJointState;
 		mJointStates.push_back(joint_state);
-		joint_state->setJoint( joint );
+		joint_state->setJoint( joint ); // note: can accept NULL
 		joint_state->setUsage( 0 );
 
 		//---------------------------------------------------------------------
@@ -1386,10 +1396,16 @@ BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp)
 			llwarns << "can't read joint priority." << llendl;
 			return FALSE;
 		}
+
+		if (joint_priority < LLJoint::USE_MOTION_PRIORITY)
+		{
+			llwarns << "joint priority unknown - too low." << llendl;
+			return FALSE;
+		}
 		
 		joint_motion->mPriority = (LLJoint::JointPriority)joint_priority;
 		if (joint_priority != LLJoint::USE_MOTION_PRIORITY &&
-			joint_priority > mJointMotionList->mMaxPriority)
+		    joint_priority > mJointMotionList->mMaxPriority)
 		{
 			mJointMotionList->mMaxPriority = (LLJoint::JointPriority)joint_priority;
 		}
@@ -1399,7 +1415,7 @@ BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp)
 		//---------------------------------------------------------------------
 		// scan rotation curve header
 		//---------------------------------------------------------------------
-		if (!dp.unpackS32(joint_motion->mRotationCurve.mNumKeys, "num_rot_keys"))
+		if (!dp.unpackS32(joint_motion->mRotationCurve.mNumKeys, "num_rot_keys") || joint_motion->mRotationCurve.mNumKeys < 0)
 		{
 			llwarns << "can't read number of rotation keys" << llendl;
 			return FALSE;
@@ -1423,7 +1439,8 @@ BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp)
 
 			if (old_version)
 			{
-				if (!dp.unpackF32(time, "time"))
+				if (!dp.unpackF32(time, "time") ||
+				    !llfinite(time))
 				{
 					llwarns << "can't read rotation key (" << k << ")" << llendl;
 					return FALSE;
@@ -1456,7 +1473,7 @@ BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp)
 
 			if (old_version)
 			{
-				success = dp.unpackVector3(rot_angles, "rot_angles");
+				success = dp.unpackVector3(rot_angles, "rot_angles") && rot_angles.isFinite();
 
 				LLQuaternion::Order ro = StringToOrder("ZYX");
 				rot_key.mRotation = mayaQ(rot_angles.mV[VX], rot_angles.mV[VY], rot_angles.mV[VZ], ro);
@@ -1492,7 +1509,7 @@ BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp)
 		//---------------------------------------------------------------------
 		// scan position curve header
 		//---------------------------------------------------------------------
-		if (!dp.unpackS32(joint_motion->mPositionCurve.mNumKeys, "num_pos_keys"))
+		if (!dp.unpackS32(joint_motion->mPositionCurve.mNumKeys, "num_pos_keys") || joint_motion->mPositionCurve.mNumKeys < 0)
 		{
 			llwarns << "can't read number of position keys" << llendl;
 			return FALSE;
@@ -1516,7 +1533,8 @@ BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp)
 
 			if (old_version)
 			{
-				if (!dp.unpackF32(pos_key.mTime, "time"))
+				if (!dp.unpackF32(pos_key.mTime, "time") ||
+				    !llfinite(pos_key.mTime))
 				{
 					llwarns << "can't read position key (" << k << ")" << llendl;
 					return FALSE;
@@ -1585,9 +1603,9 @@ BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp)
 		return FALSE;
 	}
 
-	if (num_constraints > MAX_CONSTRAINTS)
+	if (num_constraints > MAX_CONSTRAINTS || num_constraints < 0)
 	{
-		llwarns << "Too many constraints... ignoring" << llendl;
+		llwarns << "Bad number of constraints... ignoring: " << num_constraints << llendl;
 	}
 	else
 	{
@@ -1632,7 +1650,7 @@ BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp)
 			constraintp->mConstraintType = (EConstraintType)byte;
 
 			const S32 BIN_DATA_LENGTH = 16;
-			U8 bin_data[BIN_DATA_LENGTH];
+			U8 bin_data[BIN_DATA_LENGTH+1];
 			if (!dp.unpackBinaryDataFixed(bin_data, BIN_DATA_LENGTH, "source_volume"))
 			{
 				llwarns << "can't read source volume name" << llendl;
@@ -1640,7 +1658,7 @@ BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp)
 				return FALSE;
 			}
 
-			bin_data[BIN_DATA_LENGTH-1] = 0; // Ensure null termination
+			bin_data[BIN_DATA_LENGTH] = 0; // Ensure null termination
 			str = (char*)bin_data;
 			constraintp->mSourceConstraintVolume = mCharacter->getCollisionVolumeID(str);
 
@@ -1665,7 +1683,7 @@ BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp)
 				return FALSE;
 			}
 
-			bin_data[BIN_DATA_LENGTH-1] = 0; // Ensure null termination
+			bin_data[BIN_DATA_LENGTH] = 0; // Ensure null termination
 			str = (char*)bin_data;
 			if (str == "GROUND")
 			{
@@ -1712,28 +1730,28 @@ BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp)
 	//			constraintp->mTargetConstraintDir *= constraintp->mSourceConstraintOffset.magVec();
 			}
 
-			if (!dp.unpackF32(constraintp->mEaseInStartTime, "ease_in_start"))
+			if (!dp.unpackF32(constraintp->mEaseInStartTime, "ease_in_start") || !llfinite(constraintp->mEaseInStartTime))
 			{
 				llwarns << "can't read constraint ease in start time" << llendl;
 				delete constraintp;
 				return FALSE;
 			}
 
-			if (!dp.unpackF32(constraintp->mEaseInStopTime, "ease_in_stop"))
+			if (!dp.unpackF32(constraintp->mEaseInStopTime, "ease_in_stop") || !llfinite(constraintp->mEaseInStopTime))
 			{
 				llwarns << "can't read constraint ease in stop time" << llendl;
 				delete constraintp;
 				return FALSE;
 			}
 
-			if (!dp.unpackF32(constraintp->mEaseOutStartTime, "ease_out_start"))
+			if (!dp.unpackF32(constraintp->mEaseOutStartTime, "ease_out_start") || !llfinite(constraintp->mEaseOutStartTime))
 			{
 				llwarns << "can't read constraint ease out start time" << llendl;
 				delete constraintp;
 				return FALSE;
 			}
 
-			if (!dp.unpackF32(constraintp->mEaseOutStopTime, "ease_out_stop"))
+			if (!dp.unpackF32(constraintp->mEaseOutStopTime, "ease_out_stop") || !llfinite(constraintp->mEaseOutStopTime))
 			{
 				llwarns << "can't read constraint ease out stop time" << llendl;
 				delete constraintp;
@@ -1742,7 +1760,7 @@ BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp)
 
 			mJointMotionList->mConstraints.push_front(constraintp);
 
-			constraintp->mJointStateIndices = new S32[constraintp->mChainLength + 1];
+			constraintp->mJointStateIndices = new S32[constraintp->mChainLength + 1]; // note: mChainLength is size-limited - comes from a byte
 			
 			LLJoint* joint = mCharacter->findCollisionVolume(constraintp->mSourceConstraintVolume);
 			// get joint to which this collision volume is attached
diff --git a/indra/llcommon/llapr.cpp b/indra/llcommon/llapr.cpp
index 7330b00bcfd44c3b2e272127eb5e2134313fcbaa..dca4cf7c3ffc4c39e4d4128baf20346358da0678 100644
--- a/indra/llcommon/llapr.cpp
+++ b/indra/llcommon/llapr.cpp
@@ -417,7 +417,11 @@ apr_pool_t* LLAPRFile::getAPRFilePool(apr_pool_t* pool)
 // File I/O
 S32 LLAPRFile::read(void *buf, S32 nbytes)
 {
-	llassert_always(mFile) ;
+	if(!mFile) 
+	{
+		llwarns << "apr mFile is removed by somebody else. Can not read." << llendl ;
+		return 0;
+	}
 	
 	apr_size_t sz = nbytes;
 	apr_status_t s = apr_file_read(mFile, buf, &sz);
@@ -435,7 +439,11 @@ S32 LLAPRFile::read(void *buf, S32 nbytes)
 
 S32 LLAPRFile::write(const void *buf, S32 nbytes)
 {
-	llassert_always(mFile) ;
+	if(!mFile) 
+	{
+		llwarns << "apr mFile is removed by somebody else. Can not write." << llendl ;
+		return 0;
+	}
 	
 	apr_size_t sz = nbytes;
 	apr_status_t s = apr_file_write(mFile, buf, &sz);
diff --git a/indra/llcommon/lldate.cpp b/indra/llcommon/lldate.cpp
index a7ef28b431fdcef779fe9ac4ad54aa0d27c0b3f7..04583cdd4a03bbd287898f8f66886d6669ca6232 100644
--- a/indra/llcommon/lldate.cpp
+++ b/indra/llcommon/lldate.cpp
@@ -121,7 +121,12 @@ std::string LLDate::toHTTPDateString (tm * gmt, std::string fmt)
 	// use strftime() as it appears to be faster than std::time_put
 	char buffer[128];
 	strftime(buffer, 128, fmt.c_str(), gmt);
-	return std::string(buffer);
+	std::string res(buffer);
+#if LL_WINDOWS
+	// Convert from locale-dependant charset to UTF-8 (EXT-8524).
+	res = ll_convert_string_to_utf8_string(res);
+#endif
+	return res;
 }
 
 void LLDate::toStream(std::ostream& s) const
diff --git a/indra/llcommon/llstring.cpp b/indra/llcommon/llstring.cpp
index 2693c0e22b96ffcc20c1eeefab370d4a98083af3..faf7aa51f1ed2d0e81b4f450d511a33aede1290d 100644
--- a/indra/llcommon/llstring.cpp
+++ b/indra/llcommon/llstring.cpp
@@ -758,6 +758,7 @@ void LLStringOps::setupDatetimeInfo (bool daylight)
 	datetimeToCodes["month"]	= "%B";		// August
 	datetimeToCodes["mthnum"]	= "%m";		// 08
 	datetimeToCodes["day"]		= "%d";		// 31
+	datetimeToCodes["sday"]		= "%-d";	// 9
 	datetimeToCodes["hour24"]	= "%H";		// 14
 	datetimeToCodes["hour"]		= "%H";		// 14
 	datetimeToCodes["hour12"]	= "%I";		// 02
@@ -1127,6 +1128,11 @@ bool LLStringUtil::formatDatetime(std::string& replacement, std::string token,
 		replacement = LLStringOps::sDayFormat;
 		LLStringUtil::format(replacement, args);
 	}
+	else if (code == "%-d")
+	{
+		struct tm * gmt = gmtime (&loc_seconds);
+		replacement = llformat ("%d", gmt->tm_mday); // day of the month without leading zero
+	}
 	else if( !LLStringOps::sAM.empty() && !LLStringOps::sPM.empty() && code == "%p" )
 	{
 		struct tm * gmt = gmtime (&loc_seconds);
diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h
index 6e341b83a1e86537ba58822a4f308ba947332a3a..c430a60ff0ad7c2d7f43030e02313bee723bd9cc 100644
--- a/indra/llcommon/llversionviewer.h
+++ b/indra/llcommon/llversionviewer.h
@@ -35,7 +35,7 @@
 
 const S32 LL_VERSION_MAJOR = 2;
 const S32 LL_VERSION_MINOR = 1;
-const S32 LL_VERSION_PATCH = 0;
+const S32 LL_VERSION_PATCH = 1;
 const S32 LL_VERSION_BUILD = 0;
 
 const char * const LL_CHANNEL = "Second Life Developer";
diff --git a/indra/llimage/llimage.cpp b/indra/llimage/llimage.cpp
index 0fc5ca1ad6e79575c157b9f7e59db634423a0f21..1566389e30e452d649fdd1d2ed28edd9bc59b0e0 100644
--- a/indra/llimage/llimage.cpp
+++ b/indra/llimage/llimage.cpp
@@ -1553,6 +1553,7 @@ void LLImageFormatted::appendData(U8 *data, S32 size)
 			S32 newsize = cursize + size;
 			reallocateData(newsize);
 			memcpy(getData() + cursize, data, size);
+			delete[] data;
 		}
 	}
 }
diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index 12007f7b52c67b51a0e830ac1056823cc27ecaa3..46a7215707a418998492ca8169bba716087b8f7e 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -58,6 +58,7 @@
 #include "llbutton.h"
 #include "llfontgl.h"
 #include "llresmgr.h"
+#include "lltrans.h"
 #include "llui.h"
 
 #include "llstl.h"
@@ -2272,8 +2273,9 @@ void LLMenuGL::createSpilloverBranch()
 		// technically, you can't tear off spillover menus, but we're passing the handle
 		// along just to be safe
 		LLMenuGL::Params p;
+		std::string label = LLTrans::getString("More");
 		p.name("More");
-		p.label("More"); // *TODO: Translate
+		p.label(label);
 		p.bg_color(mBackgroundColor);
 		p.bg_visible(true);
 		p.can_tear_off(false);
@@ -2282,7 +2284,7 @@ void LLMenuGL::createSpilloverBranch()
 
 		LLMenuItemBranchGL::Params branch_params;
 		branch_params.name = "More";
-		branch_params.label = "More"; // *TODO: Translate
+		branch_params.label = label;
 		branch_params.branch = mSpilloverMenu;
 		branch_params.font.style = "italic";
 
diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp
index 9ab2cfef4bef171c63cf4a04efd53702bcd71f43..d356f061f93ce12a6adad2588232f8f205125e24 100644
--- a/indra/llui/llscrolllistctrl.cpp
+++ b/indra/llui/llscrolllistctrl.cpp
@@ -135,6 +135,7 @@ LLScrollListCtrl::Params::Params()
 	search_column("search_column", 0),
 	sort_column("sort_column", -1),
 	sort_ascending("sort_ascending", true),
+	mouse_wheel_opaque("mouse_wheel_opaque", false),
 	commit_on_keyboard_movement("commit_on_keyboard_movement", true),
 	heading_height("heading_height"),
 	page_lines("page_lines", 0),
@@ -163,6 +164,7 @@ LLScrollListCtrl::LLScrollListCtrl(const LLScrollListCtrl::Params& p)
 :	LLUICtrl(p),
 	mLineHeight(0),
 	mScrollLines(0),
+	mMouseWheelOpaque(p.mouse_wheel_opaque),
 	mPageLines(p.page_lines),
 	mMaxSelectable(0),
 	mAllowKeyboardMovement(TRUE),
@@ -1520,6 +1522,12 @@ BOOL LLScrollListCtrl::handleScrollWheel(S32 x, S32 y, S32 clicks)
 	BOOL handled = FALSE;
 	// Pretend the mouse is over the scrollbar
 	handled = mScrollbar->handleScrollWheel( 0, 0, clicks );
+
+	if (mMouseWheelOpaque)
+	{
+		return TRUE;
+	}
+
 	return handled;
 }
 
diff --git a/indra/llui/llscrolllistctrl.h b/indra/llui/llscrolllistctrl.h
index 1f0ef585dba171b3f0097272f4b98ea934cc380e..19cb7e2bfe3bc7a8105d699914e3fea7caac0d36 100644
--- a/indra/llui/llscrolllistctrl.h
+++ b/indra/llui/llscrolllistctrl.h
@@ -102,7 +102,8 @@ class LLScrollListCtrl : public LLUICtrl, public LLEditMenuHandler,
 	{
 		// behavioral flags
 		Optional<bool>	multi_select,
-						commit_on_keyboard_movement;
+						commit_on_keyboard_movement,
+						mouse_wheel_opaque;
 
 		// display flags
 		Optional<bool>	has_border,
@@ -449,6 +450,7 @@ class LLScrollListCtrl : public LLUICtrl, public LLEditMenuHandler,
 	BOOL			mCommitOnSelectionChange;
 	BOOL			mSelectionChanged;
 	BOOL			mNeedsScroll;
+	BOOL			mMouseWheelOpaque;
 	BOOL			mCanSelect;
 	const BOOL		mDisplayColumnHeaders;
 	BOOL			mColumnsDirty;
diff --git a/indra/llui/lluictrl.cpp b/indra/llui/lluictrl.cpp
index ff330f863a871e0ef431637d265e9db1dd1046d5..c91e225fd29876da3354ffb512e693093b81ec34 100644
--- a/indra/llui/lluictrl.cpp
+++ b/indra/llui/lluictrl.cpp
@@ -101,6 +101,7 @@ LLUICtrl::LLUICtrl(const LLUICtrl::Params& p, const LLViewModelPtr& viewmodel)
 :	LLView(p),
 	mTentative(FALSE),
 	mIsChrome(FALSE),
+	mTabStop(FALSE),
     mViewModel(viewmodel),
 	mControlVariable(NULL),
 	mEnabledControlVariable(NULL),
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index bbf3f4fc75aa9ea77fd3a99922ceb148efe78ad3..3326319e2d50005b8d5fbaa8edd1a354ef79ffe7 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -5373,17 +5373,6 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
-    <key>MultipleAttachments</key>
-    <map>
-      <key>Comment</key>
-      <string>Allow multiple objects to be attached to a single attachment point.</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
    <key>MuteAmbient</key>
     <map>
       <key>Comment</key>
@@ -6436,6 +6425,17 @@
         <key>Value</key>
             <real>1.0</real>
         </map>
+    <key>MediaBrowserWindowLimit</key>
+    <map>
+      <key>Comment</key>
+      <string>Maximum number of media brower windows that can be open at once (0 for no limit)</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>S32</string>
+      <key>Value</key>
+      <integer>5</integer>
+    </map>
   <key>MediaRollOffRate</key>
   <map>
     <key>Comment</key>
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index 6ee5a8b279e6f56e40ab65e6eea9a6d2d5f12a33..337878cf96d96750fff32466532bcea28e6e4e35 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -388,7 +388,9 @@ void LLAgentWearables::saveWearable(const LLWearableType::EType type, const U32
 									const std::string new_name)
 {
 	LLWearable* old_wearable = getWearable(type, index);
-	if (old_wearable && (old_wearable->isDirty() || old_wearable->isOldVersion()))
+	if(!old_wearable) return;
+	bool name_changed = !new_name.empty() && (new_name != old_wearable->getName());
+	if (name_changed || old_wearable->isDirty() || old_wearable->isOldVersion())
 	{
 		LLUUID old_item_id = old_wearable->getItemID();
 		LLWearable* new_wearable = LLWearableList::instance().createCopy(old_wearable);
@@ -404,12 +406,10 @@ void LLAgentWearables::saveWearable(const LLWearableType::EType type, const U32
 		if (item)
 		{
 			std::string item_name = item->getName();
-			bool name_changed = false;
-			if (!new_name.empty() && (new_name != item->getName()))
+			if (name_changed)
 			{
 				llinfos << "saveWearable changing name from "  << item->getName() << " to " << new_name << llendl;
 				item_name = new_name;
-				name_changed = true;
 			}
 			// Update existing inventory item
 			LLPointer<LLViewerInventoryItem> template_item =
@@ -1885,10 +1885,7 @@ void LLAgentWearables::userAttachMultipleAttachments(LLInventoryModel::item_arra
 		msg->nextBlockFast(_PREHASH_ObjectData );
 		msg->addUUIDFast(_PREHASH_ItemID, item->getLinkedUUID());
 		msg->addUUIDFast(_PREHASH_OwnerID, item->getPermissions().getOwner());
-		if (gSavedSettings.getBOOL("MultipleAttachments"))
-			msg->addU8Fast(_PREHASH_AttachmentPt, 0 | ATTACHMENT_ADD );
-		else
-			msg->addU8Fast(_PREHASH_AttachmentPt, 0 );	// Wear at the previous or default attachment point
+		msg->addU8Fast(_PREHASH_AttachmentPt, 0 );	// Wear at the previous or default attachment point
 		pack_permissions_slam(msg, item->getFlags(), item->getPermissions());
 		msg->addStringFast(_PREHASH_Name, item->getName());
 		msg->addStringFast(_PREHASH_Description, item->getDescription());
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 63315ce2aec20caaf2ad24c45b91bbdae9164d3c..cecb2ee6ad6ee747568aafcf19fa22a76e1b887d 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -1012,7 +1012,7 @@ bool LLAppearanceMgr::wearItemOnAvatar(const LLUUID& item_id_to_wear, bool do_up
 		addCOFItemLink(item_to_wear, do_update, cb);
 		break;
 	case LLAssetType::AT_OBJECT:
-		rez_attachment(item_to_wear, NULL);
+		rez_attachment(item_to_wear, NULL, replace);
 		break;
 	default: return false;;
 	}
@@ -1275,6 +1275,11 @@ bool LLAppearanceMgr::getCanRemoveFromCOF(const LLUUID& outfit_cat_id)
 // static
 bool LLAppearanceMgr::getCanAddToCOF(const LLUUID& outfit_cat_id)
 {
+	if (gAgentWearables.isCOFChangeInProgress())
+	{
+		return false;
+	}
+
 	LLInventoryModel::cat_array_t cats;
 	LLInventoryModel::item_array_t items;
 	LLFindWearablesEx not_worn(/*is_worn=*/ false, /*include_body_parts=*/ false);
@@ -1286,6 +1291,32 @@ bool LLAppearanceMgr::getCanAddToCOF(const LLUUID& outfit_cat_id)
 	return items.size() > 0;
 }
 
+bool LLAppearanceMgr::getCanReplaceCOF(const LLUUID& outfit_cat_id)
+{
+	// Don't allow wearing anything while we're changing appearance.
+	if (gAgentWearables.isCOFChangeInProgress())
+	{
+		return false;
+	}
+
+	// Check whether it's the base outfit.
+	if (outfit_cat_id.isNull() || outfit_cat_id == getBaseOutfitUUID())
+	{
+		return false;
+	}
+
+	// Check whether the outfit contains any non-worn wearables.
+	LLInventoryModel::cat_array_t cats;
+	LLInventoryModel::item_array_t items;
+	LLFindWearablesEx not_worn(/*is_worn=*/ false, /*include_body_parts=*/ true);
+	gInventory.collectDescendentsIf(outfit_cat_id,
+		cats,
+		items,
+		LLInventoryModel::EXCLUDE_TRASH,
+		not_worn);
+	return items.size() > 0;
+}
+
 void LLAppearanceMgr::purgeBaseOutfitLink(const LLUUID& category)
 {
 	LLInventoryModel::cat_array_t cats;
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index 9f554dbdef3d1d8b1276bbba46708a0be046f117..eb495bd2746360a5edeea209dace5886a5cdd024 100644
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -84,6 +84,9 @@ class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
 	// Determine whether we can add anything (but body parts) from the outfit contents to COF.
 	static bool getCanAddToCOF(const LLUUID& outfit_cat_id);
 
+	// Determine whether we can replace current outfit with the given one.
+	bool getCanReplaceCOF(const LLUUID& outfit_cat_id);
+
 	// Copy all items in a category.
 	void shallowCopyCategoryContents(const LLUUID& src_id, const LLUUID& dst_id,
 									 LLPointer<LLInventoryCallback> cb);
diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp
index 6648bd7e57492f72ff205b30f9067089d12a5ecd..29ead762d75111ff2b1c3411970e070ec71882cc 100644
--- a/indra/newview/llcofwearables.cpp
+++ b/indra/newview/llcofwearables.cpp
@@ -163,7 +163,7 @@ class CofClothingContextMenu : public CofContextMenu
 	}
 
 protected:
-	static void replaceWearable()
+	static void replaceWearable(const LLUUID& item_id)
 	{
 		// *TODO: Most probable that accessing to LLPanelOutfitEdit instance should be:
 		// LLSideTray::getInstance()->getSidepanelAppearance()->getPanelOutfitEdit()
@@ -175,7 +175,7 @@ class CofClothingContextMenu : public CofContextMenu
 								"panel_outfit_edit"));
 		if (panel_outfit_edit != NULL)
 		{
-			panel_outfit_edit->showAddWearablesPanel(true);
+			panel_outfit_edit->onReplaceMenuItemClicked(item_id);
 		}
 	}
 
@@ -187,7 +187,7 @@ class CofClothingContextMenu : public CofContextMenu
 		functor_t take_off = boost::bind(&LLAppearanceMgr::removeItemFromAvatar, LLAppearanceMgr::getInstance(), _1);
 
 		registrar.add("Clothing.TakeOff", boost::bind(handleMultiple, take_off, mUUIDs));
-		registrar.add("Clothing.Replace", boost::bind(replaceWearable));
+		registrar.add("Clothing.Replace", boost::bind(replaceWearable, selected_id));
 		registrar.add("Clothing.Edit", boost::bind(LLAgentWearables::editWearable, selected_id));
 		registrar.add("Clothing.Create", boost::bind(&CofClothingContextMenu::createNew, this, selected_id));
 
@@ -244,7 +244,7 @@ class CofBodyPartContextMenu : public CofContextMenu
 		// *HACK* need to pass pointer to LLPanelOutfitEdit instead of LLSideTray::getInstance()->getPanel().
 		// LLSideTray::getInstance()->getPanel() is rather slow variant
 		LLPanelOutfitEdit* panel_oe = dynamic_cast<LLPanelOutfitEdit*>(LLSideTray::getInstance()->getPanel("panel_outfit_edit"));
-		registrar.add("BodyPart.Replace", boost::bind(&LLPanelOutfitEdit::onReplaceBodyPartMenuItemClicked, panel_oe, selected_id));
+		registrar.add("BodyPart.Replace", boost::bind(&LLPanelOutfitEdit::onReplaceMenuItemClicked, panel_oe, selected_id));
 		registrar.add("BodyPart.Edit", boost::bind(LLAgentWearables::editWearable, selected_id));
 		registrar.add("BodyPart.Create", boost::bind(&CofBodyPartContextMenu::createNew, this, selected_id));
 
@@ -396,7 +396,11 @@ void LLCOFWearables::refresh()
 		return;
 	}
 
-	if (mCOFVersion == catp->getVersion()) return;
+	// BAP - this check has to be removed because an item name change does not
+	// change cat version - ie, checking version is not a complete way
+	// of finding out whether anything has changed in this category.
+	//if (mCOFVersion == catp->getVersion()) return;
+
 	mCOFVersion = catp->getVersion();
 
 	typedef std::vector<LLSD> values_vector_t;
diff --git a/indra/newview/llfloatermediabrowser.cpp b/indra/newview/llfloatermediabrowser.cpp
index 268a0e0b93c416ea310395ceab7e02bf38b80258..90147ff6505dec609a79527cd903da218ea8fed0 100644
--- a/indra/newview/llfloatermediabrowser.cpp
+++ b/indra/newview/llfloatermediabrowser.cpp
@@ -76,8 +76,32 @@ void LLFloaterMediaBrowser::create(const std::string &url, const std::string& ta
 		tag = id.asString();
 	}
 	
-	// TODO: Figure out whether we need to close an existing instance and/or warn the user about the number of instances they have open
+	S32 browser_window_limit = gSavedSettings.getS32("MediaBrowserWindowLimit");
 	
+	if(LLFloaterReg::findInstance("media_browser", tag) != NULL)
+	{
+		// There's already a media browser for this tag, so we won't be opening a new window.
+	}
+	else if(browser_window_limit != 0)
+	{
+		// showInstance will open a new window.  Figure out how many media browsers are already open, 
+		// and close the least recently opened one if this will put us over the limit.
+		
+		LLFloaterReg::const_instance_list_t &instances = LLFloaterReg::getFloaterList("media_browser");
+		lldebugs << "total instance count is " << instances.size() << llendl;
+		
+		for(LLFloaterReg::const_instance_list_t::const_iterator iter = instances.begin(); iter != instances.end(); iter++)
+		{
+			lldebugs << "    " << (*iter)->getKey() << llendl;
+		}
+		
+		if(instances.size() >= (size_t)browser_window_limit)
+		{
+			// Destroy the least recently opened instance
+			(*instances.begin())->closeFloater();
+		}
+	}
+
 	LLFloaterMediaBrowser *browser = dynamic_cast<LLFloaterMediaBrowser*> (LLFloaterReg::showInstance("media_browser", tag));
 	llassert(browser);
 	if(browser)
diff --git a/indra/newview/llfloatermediabrowser.h b/indra/newview/llfloatermediabrowser.h
index 1645ed46132c09164b26c3201ad35360c1a453b2..4255d814c014bd8018b3ae891267b49be09f3078 100644
--- a/indra/newview/llfloatermediabrowser.h
+++ b/indra/newview/llfloatermediabrowser.h
@@ -45,6 +45,7 @@ class LLFloaterMediaBrowser :
 	public LLViewerMediaObserver
 {
 public:
+    LOG_CLASS(LLFloaterMediaBrowser);
 	LLFloaterMediaBrowser(const LLSD& key);
 
 	static void create(const std::string &url, const std::string& target);
diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp
index d3d52e20f783cfd39992dccdad625acabf55352f..49d80a02491011d42f532e2966e6234c07357a16 100644
--- a/indra/newview/llfolderview.cpp
+++ b/indra/newview/llfolderview.cpp
@@ -184,7 +184,6 @@ LLFolderView::LLFolderView(const Params& p)
 	mSourceID(p.task_id),
 	mRenameItem( NULL ),
 	mNeedsScroll( FALSE ),
-	mEnableScroll( true ),
 	mUseLabelSuffix(p.use_label_suffix),
 	mPinningSelectedItem(FALSE),
 	mNeedsAutoSelect( FALSE ),
@@ -562,7 +561,9 @@ void LLFolderView::addToSelectionList(LLFolderViewItem* item)
 
 void LLFolderView::removeFromSelectionList(LLFolderViewItem* item)
 {
-	if (mSelectedItems.size())
+	// If items are filtered while background fetch is in progress
+	// scrollbar resets to the first filtered item. See EXT-3981.
+	if (!LLInventoryModelBackgroundFetch::instance().backgroundFetchActive() && mSelectedItems.size())
 	{
 		mSelectedItems.back()->setIsCurSelection(FALSE);
 	}
@@ -1980,7 +1981,7 @@ void LLFolderView::deleteAllChildren()
 
 void LLFolderView::scrollToShowSelection()
 {
-	if (mEnableScroll && mSelectedItems.size())
+	if (mSelectedItems.size())
 	{
 		mNeedsScroll = TRUE;
 	}
diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h
index f1d39a41ae079b91b17003e14bc2efc0fd0a050f..a7763e8eeb469a255bb5ba41e5e8f89ad90673a7 100644
--- a/indra/newview/llfolderview.h
+++ b/indra/newview/llfolderview.h
@@ -274,7 +274,6 @@ class LLFolderView : public LLFolderViewFolder, public LLEditMenuHandler
 	void dumpSelectionInformation();
 
 	virtual S32	notify(const LLSD& info) ;
-	void setEnableScroll(bool enable_scroll) { mEnableScroll = enable_scroll; }
 	
 	bool useLabelSuffix() { return mUseLabelSuffix; }
 private:
@@ -309,7 +308,6 @@ class LLFolderView : public LLFolderViewFolder, public LLEditMenuHandler
 	LLLineEditor*					mRenamer;
 
 	BOOL							mNeedsScroll;
-	bool							mEnableScroll;
 	BOOL							mPinningSelectedItem;
 	LLRect							mScrollConstraintRect;
 	BOOL							mNeedsAutoSelect;
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 38f3521b2dae7b29e497f50258b4ff3882edceab..7e710ce8e1d6571bf9433a78b5e450ddc4bfd05f 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -3936,7 +3936,7 @@ void LLObjectBridge::performAction(LLInventoryModel* model, std::string action)
 		item = (LLViewerInventoryItem*)gInventory.getItem(object_id);
 		if(item && gInventory.isObjectDescendentOf(object_id, gInventory.getRootFolderID()))
 		{
-			rez_attachment(item, NULL);
+			rez_attachment(item, NULL, true); // Replace if "Wear"ing.
 		}
 		else if(item && item->isFinished())
 		{
@@ -3952,6 +3952,10 @@ void LLObjectBridge::performAction(LLInventoryModel* model, std::string action)
 		}
 		gFocusMgr.setKeyboardFocus(NULL);
 	}
+	else if ("wear_add" == action)
+	{
+		LLAppearanceMgr::instance().wearItemOnAvatar(mUUID, true, false); // Don't replace if adding.
+	}
 	else if (isRemoveAction(action))
 	{
 		LLInventoryItem* item = gInventory.getItem(mUUID);
@@ -3998,7 +4002,7 @@ std::string LLObjectBridge::getLabelSuffix() const
 	}
 }
 
-void rez_attachment(LLViewerInventoryItem* item, LLViewerJointAttachment* attachment)
+void rez_attachment(LLViewerInventoryItem* item, LLViewerJointAttachment* attachment, bool replace)
 {
 	LLSD payload;
 	payload["item_id"] = item->getLinkedUUID(); // Wear the base object in case this is a link.
@@ -4017,9 +4021,14 @@ void rez_attachment(LLViewerInventoryItem* item, LLViewerJointAttachment* attach
 		}
 	}
 
+	if (!replace)
+	{
+		attach_pt |= ATTACHMENT_ADD;
+	}
+
 	payload["attachment_point"] = attach_pt;
 
-	if (!gSavedSettings.getBOOL("MultipleAttachments") &&
+	if (replace &&
 		(attachment && attachment->getNumObjects() > 0))
 	{
 		LLNotificationsUtil::add("ReplaceAttachment", LLSD(), payload, confirm_replace_attachment_rez);
@@ -4048,8 +4057,6 @@ bool confirm_replace_attachment_rez(const LLSD& notification, const LLSD& respon
 		if (itemp)
 		{
 			U8 attachment_pt = notification["payload"]["attachment_point"].asInteger();
-			if (gSavedSettings.getBOOL("MultipleAttachments"))
-				attachment_pt |= ATTACHMENT_ADD;
 
 			LLMessageSystem* msg = gMessageSystem;
 			msg->newMessageFast(_PREHASH_RezSingleAttachmentFromInv);
@@ -4106,6 +4113,7 @@ void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 			{
 				items.push_back(std::string("Wearable And Object Separator"));
 				items.push_back(std::string("Wearable And Object Wear"));
+				items.push_back(std::string("Wearable Add"));
 				items.push_back(std::string("Attach To"));
 				items.push_back(std::string("Attach To HUD"));
 				// commented out for DEV-32347
@@ -4114,6 +4122,7 @@ void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 				if (!gAgentAvatarp->canAttachMoreObjects())
 				{
 					disabled_items.push_back(std::string("Wearable And Object Wear"));
+					disabled_items.push_back(std::string("Wearable Add"));
 					disabled_items.push_back(std::string("Attach To"));
 					disabled_items.push_back(std::string("Attach To HUD"));
 				}
diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h
index 91055eb90603ecf1f445d30c473b19a69c9e3a35..00e8b0fb086a13541ab09477cd00b6f3749adc7f 100644
--- a/indra/newview/llinventorybridge.h
+++ b/indra/newview/llinventorybridge.h
@@ -594,7 +594,8 @@ class LLRecentInventoryBridgeBuilder : public LLInventoryFVBridgeBuilder
 };
 
 void rez_attachment(LLViewerInventoryItem* item, 
-					LLViewerJointAttachment* attachment);
+					LLViewerJointAttachment* attachment,
+					bool replace = false);
 
 // Move items from an in-world object's "Contents" folder to a specified
 // folder in agent inventory.
diff --git a/indra/newview/llinventorylistitem.cpp b/indra/newview/llinventorylistitem.cpp
index ea57d36c063e99435b2bb656a3180db77e8c71d0..b1f5b3be2fd988a29f3cd6f71845f413ff84b2e0 100644
--- a/indra/newview/llinventorylistitem.cpp
+++ b/indra/newview/llinventorylistitem.cpp
@@ -96,9 +96,12 @@ void LLPanelInventoryListItemBase::draw()
 
 	if (mSeparatorVisible && mSeparatorImage)
 	{
-		// stretch along bottom of listitem, using image height
+		// place under bottom of listitem, using image height
+		// item_pad in list using the item should be >= image height
+		// to avoid cropping of top of the next item.
 		LLRect separator_rect = getLocalRect();
-		separator_rect.mTop = mSeparatorImage->getHeight();
+		separator_rect.mTop = separator_rect.mBottom;
+		separator_rect.mBottom -= mSeparatorImage->getHeight();
 		mSeparatorImage->draw(separator_rect);
 	}
 	
diff --git a/indra/newview/llinventoryobserver.cpp b/indra/newview/llinventoryobserver.cpp
index 5416f0103385c61e0f4a2cb84049e3d37e980284..54b8f3a8a4e00f446325f67086d730a558d2d475 100644
--- a/indra/newview/llinventoryobserver.cpp
+++ b/indra/newview/llinventoryobserver.cpp
@@ -708,7 +708,7 @@ void LLInventoryCategoriesObserver::changed(U32 mask)
 		
 		const S32 current_num_known_descendents = cats->count() + items->count();
 
-		LLCategoryData cat_data = (*iter).second;
+		LLCategoryData& cat_data = (*iter).second;
 
 		bool cat_changed = false;
 
@@ -722,11 +722,17 @@ void LLInventoryCategoriesObserver::changed(U32 mask)
 		}
 
 		// If any item names have changed, update the name hash 
-		LLMD5 item_name_hash = gInventory.hashDirectDescendentNames(cat_id);
-		if (cat_data.mItemNameHash != item_name_hash)
+		// Only need to check if (a) name hash has not previously been
+		// computed, or (b) a name has changed.
+		if (!cat_data.mIsNameHashInitialized || (mask & LLInventoryObserver::LABEL))
 		{
-			cat_data.mItemNameHash = item_name_hash;
-			cat_changed = true;
+			LLMD5 item_name_hash = gInventory.hashDirectDescendentNames(cat_id);
+			if (cat_data.mItemNameHash != item_name_hash)
+			{
+				cat_data.mIsNameHashInitialized = true;
+				cat_data.mItemNameHash = item_name_hash;
+				cat_changed = true;
+			}
 		}
 
 		// If anything has changed above, fire the callback.
@@ -773,7 +779,8 @@ bool LLInventoryCategoriesObserver::addCategory(const LLUUID& cat_id, callback_t
 
 	if (can_be_added)
 	{
-		mCategoryMap.insert(category_map_value_t(cat_id, LLCategoryData(cb, version, current_num_known_descendents)));
+		mCategoryMap.insert(category_map_value_t(
+								cat_id,LLCategoryData(cat_id, cb, version, current_num_known_descendents)));
 	}
 
 	return can_be_added;
@@ -783,3 +790,15 @@ void LLInventoryCategoriesObserver::removeCategory(const LLUUID& cat_id)
 {
 	mCategoryMap.erase(cat_id);
 }
+
+LLInventoryCategoriesObserver::LLCategoryData::LLCategoryData(
+	const LLUUID& cat_id, callback_t cb, S32 version, S32 num_descendents)
+	
+	: mCatID(cat_id)
+	, mCallback(cb)
+	, mVersion(version)
+	, mDescendentsCount(num_descendents)
+	, mIsNameHashInitialized(false)
+{
+	mItemNameHash.finalize();
+}
diff --git a/indra/newview/llinventoryobserver.h b/indra/newview/llinventoryobserver.h
index ccd5fa5f4e905188ca3359d284ffe5ff5e474999..d535250970f20b076bdd39251e5295d6db4c07e8 100644
--- a/indra/newview/llinventoryobserver.h
+++ b/indra/newview/llinventoryobserver.h
@@ -295,18 +295,14 @@ class LLInventoryCategoriesObserver : public LLInventoryObserver
 protected:
 	struct LLCategoryData
 	{
-		LLCategoryData(callback_t cb, S32 version, S32 num_descendents)
-		: mCallback(cb)
-		, mVersion(version)
-		, mDescendentsCount(num_descendents)
-		{
-			mItemNameHash.finalize();
-		}
+		LLCategoryData(const LLUUID& cat_id, callback_t cb, S32 version, S32 num_descendents);
 
 		callback_t	mCallback;
 		S32			mVersion;
 		S32			mDescendentsCount;
 		LLMD5		mItemNameHash;
+		bool		mIsNameHashInitialized;
+		LLUUID		mCatID;
 	};
 
 	typedef	std::map<LLUUID, LLCategoryData>	category_map_t;
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index ac92f41624338c634e7ef4c38cfc7c887d2ebb61..770bc02b40d43eb6f3164c1184fc722c61456fd8 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -175,6 +175,9 @@ void LLInventoryPanel::initFromParams(const LLInventoryPanel::Params& params)
 		setSortOrder(gSavedSettings.getU32(DEFAULT_SORT_ORDER));
 	}
 	mFolderRoot->setSortOrder(getFilter()->getSortOrder());
+
+	// Initialize base class params.
+	LLPanel::initFromParams(params);
 }
 
 LLInventoryPanel::~LLInventoryPanel()
@@ -706,21 +709,6 @@ BOOL LLInventoryPanel::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
 	return handled;
 }
 
-// virtual
-void LLInventoryPanel::onMouseEnter(S32 x, S32 y, MASK mask)
-{
-	LLPanel::onMouseEnter(x, y, mask);
-	// don't auto-scroll a list when cursor is over Inventory. See EXT-3981.
-	mFolderRoot->setEnableScroll(false);
-}
-
-// virtual
-void LLInventoryPanel::onMouseLeave(S32 x, S32 y, MASK mask)
-{
-	LLPanel::onMouseLeave(x, y, mask);
-	mFolderRoot->setEnableScroll(true);
-}
-
 void LLInventoryPanel::onFocusLost()
 {
 	// inventory no longer handles cut/copy/paste/delete
diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h
index c9e317f816fb95f3d4a1318ba50adb917e757b3f..4db995b0c4b37ab442f42113814c4a5aafd12eb9 100644
--- a/indra/newview/llinventorypanel.h
+++ b/indra/newview/llinventorypanel.h
@@ -121,10 +121,6 @@ class LLInventoryPanel : public LLPanel
 								   void* cargo_data,
 								   EAcceptance* accept,
 								   std::string& tooltip_msg);
-
-	void onMouseEnter(S32 x, S32 y, MASK mask);
-	void onMouseLeave(S32 x, S32 y, MASK mask);
-
 	// LLUICtrl methods
 	 /*virtual*/ void onFocusLost();
 	 /*virtual*/ void onFocusReceived();
diff --git a/indra/newview/llmediadataclient.cpp b/indra/newview/llmediadataclient.cpp
index 1de9d1c9b0eeb9128e76b5ff4696188ebd15776d..075f0ba3ec7c0d68ec2faad8ee0ea1769df2e44e 100755
--- a/indra/newview/llmediadataclient.cpp
+++ b/indra/newview/llmediadataclient.cpp
@@ -263,15 +263,15 @@ void LLMediaDataClient::pushBack(request_ptr_t request)
 
 void LLMediaDataClient::trackRequest(request_ptr_t request)
 {
-	request_set_t::iterator iter = mUnQueuedRequests.lower_bound(request);
+	request_set_t::iterator iter = mUnQueuedRequests.find(request);
 	
-	if(*iter == request)
+	if(iter != mUnQueuedRequests.end())
 	{
 		LL_WARNS("LLMediaDataClient") << "Tracking already tracked request: " << *request << LL_ENDL;
 	}
 	else
 	{
-		mUnQueuedRequests.insert(iter, request);
+		mUnQueuedRequests.insert(request);
 	}
 }
 
@@ -279,7 +279,7 @@ void LLMediaDataClient::stopTrackingRequest(request_ptr_t request)
 {
 	request_set_t::iterator iter = mUnQueuedRequests.find(request);
 	
-	if(*iter == request)
+	if (iter != mUnQueuedRequests.end())
 	{
 		mUnQueuedRequests.erase(iter);
 	}
diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp
index 8147a973173b53a210621e181405644445336438..f921bca623261d89cc72638036c6751e0e1df18e 100644
--- a/indra/newview/lloutfitslist.cpp
+++ b/indra/newview/lloutfitslist.cpp
@@ -275,11 +275,10 @@ class LLOutfitContextMenu : public LLListContextMenu
 		}
 		else if ("wear_replace" == param)
 		{
-			return !gAgentWearables.isCOFChangeInProgress();
+			return LLAppearanceMgr::instance().getCanReplaceCOF(outfit_cat_id);
 		}
 		else if ("wear_add" == param)
 		{
-			if (gAgentWearables.isCOFChangeInProgress()) return false;
 			return LLAppearanceMgr::getCanAddToCOF(outfit_cat_id);
 		}
 		else if ("take_off" == param)
@@ -676,7 +675,7 @@ bool LLOutfitsList::isActionEnabled(const LLSD& userdata)
 		}
 
 		// outfit selected
-		return LLAppearanceMgr::getCanAddToCOF(mSelectedOutfitUUID);
+		return LLAppearanceMgr::instance().getCanReplaceCOF(mSelectedOutfitUUID);
 	}
 	if (command_name == "take_off")
 	{
@@ -689,11 +688,6 @@ bool LLOutfitsList::isActionEnabled(const LLSD& userdata)
 	if (command_name == "wear_add")
 	{
 		// *TODO: do we ever get here?
-		if (gAgentWearables.isCOFChangeInProgress())
-		{
-			return false;
-		}
-
 		return LLAppearanceMgr::getCanAddToCOF(mSelectedOutfitUUID);
 	}
 
diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp
index c7ac4af14c9b95ad1942672ec1be69a4a0c42e45..0464aa377ee6387d81272dc80af2a96da46fd4a9 100644
--- a/indra/newview/llpaneloutfitedit.cpp
+++ b/indra/newview/llpaneloutfitedit.cpp
@@ -773,11 +773,11 @@ void LLPanelOutfitEdit::onAddWearableClicked(void)
 	}
 }
 
-void LLPanelOutfitEdit::onReplaceBodyPartMenuItemClicked(LLUUID selected_item_id)
+void LLPanelOutfitEdit::onReplaceMenuItemClicked(LLUUID selected_item_id)
 {
 	LLViewerInventoryItem* item = gInventory.getLinkedItem(selected_item_id);
 
-	if (item && item->getType() == LLAssetType::AT_BODYPART)
+	if (item)
 	{
 		showFilteredWearablesListView(item->getWearableType());
 	}
@@ -1032,7 +1032,7 @@ void LLPanelOutfitEdit::filterWearablesBySelectedItem(void)
 			applyListViewFilter(LVIT_BODYPART);
 			break;
 		case LLAssetType::AT_CLOTHING:
-		default: 
+		default:
 			applyListViewFilter(LVIT_CLOTHING);
 			break;
 		}
@@ -1321,6 +1321,13 @@ void LLPanelOutfitEdit::getSelectedItemsUUID(uuid_vec_t& uuid_list)
 
 void LLPanelOutfitEdit::onCOFChanged()
 {
+	//the panel is only updated when is visible to a user
+
+	// BAP - this check has to be removed because otherwise item name
+	// changes made when the panel is not visible will not be
+	// propagated to the panel.
+	// if (!isInVisibleChain()) return;
+
 	update();
 }
 
@@ -1348,8 +1355,6 @@ void LLPanelOutfitEdit::saveListSelection()
 
 		if(!selected_ids.size()) return;
 
-		mWearableItemsList->resetSelection();
-
 		for (std::set<LLUUID>::const_iterator item_id = selected_ids.begin(); item_id != selected_ids.end(); ++item_id)
 		{
 			mWearableItemsList->selectItemByUUID(*item_id, true);
diff --git a/indra/newview/llpaneloutfitedit.h b/indra/newview/llpaneloutfitedit.h
index 0b6926b83ecda66004c34f041d8bd11dcca62990..871ed8d7ec4c7e377f57cb44245b634c59ac2a35 100644
--- a/indra/newview/llpaneloutfitedit.h
+++ b/indra/newview/llpaneloutfitedit.h
@@ -165,7 +165,7 @@ class LLPanelOutfitEdit : public LLPanel
 	void onRemoveFromOutfitClicked(void);
 	void onEditWearableClicked(void);
 	void onAddWearableClicked(void);
-	void onReplaceBodyPartMenuItemClicked(LLUUID selected_item_id);
+	void onReplaceMenuItemClicked(LLUUID selected_item_id);
 	void onShopButtonClicked();
 
 	void displayCurrentOutfit();
diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp
index 81e805974ffeba932069e85ba25e06dfb53e70e0..583b41aa573ae2602a450b234db26b2d2a1c0912 100644
--- a/indra/newview/llpanelprimmediacontrols.cpp
+++ b/indra/newview/llpanelprimmediacontrols.cpp
@@ -985,6 +985,13 @@ void LLPanelPrimMediaControls::onClickZoom()
 
 void LLPanelPrimMediaControls::nextZoomLevel()
 {
+	LLViewerObject* objectp = getTargetObject();
+	if(objectp && objectp->isHUDAttachment())
+	{
+		// Never allow zooming on HUD attachments.
+		return;
+	}
+	
 	int index = 0;
 	while (index < kNumZoomLevels)
 	{
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index 050b87bbe0f76e8f1590875db6d17204a2fe4224..21f8485e90b35e5469200bb68fac8c23a7746bf7 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -3615,7 +3615,7 @@ void LLSelectMgr::selectionSetObjectSaleInfo(const LLSaleInfo& sale_info)
 // Attachments
 //----------------------------------------------------------------------
 
-void LLSelectMgr::sendAttach(U8 attachment_point)
+void LLSelectMgr::sendAttach(U8 attachment_point, bool replace)
 {
 	LLViewerObject* attach_object = mSelectedObjects->getFirstRootObject();
 
@@ -3629,9 +3629,12 @@ void LLSelectMgr::sendAttach(U8 attachment_point)
 	if (0 == attachment_point ||
 		get_if_there(gAgentAvatarp->mAttachmentPoints, (S32)attachment_point, (LLViewerJointAttachment*)NULL))
 	{
-
-		if (gSavedSettings.getBOOL("MultipleAttachments"))
+		if (!replace || attachment_point != 0)
+		{
+			// If we know the attachment point then we got here by clicking an
+			// "Attach to..." context menu item, so we should add, not replace.
 			attachment_point |= ATTACHMENT_ADD;
+		}
 
 		sendListToRegions(
 			"ObjectAttach",
diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h
index 668c04cf159b28bba94a3818565fe269108672c3..4c64c77b8399e70e01a1f5450414c6dd72f19ca2 100644
--- a/indra/newview/llselectmgr.h
+++ b/indra/newview/llselectmgr.h
@@ -612,7 +612,7 @@ class LLSelectMgr : public LLEditMenuHandler, public LLSingleton<LLSelectMgr>
 	// verification only, if it doesn't match region info then sale is
 	// canceled
 	void sendBuy(const LLUUID& buyer_id, const LLUUID& category_id, const LLSaleInfo sale_info);
-	void sendAttach(U8 attachment_point);
+	void sendAttach(U8 attachment_point, bool replace);
 	void sendDetach();
 	void sendDropAttachment();
 	void sendLink();
diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp
index f4f8241b99d30c44357640af1df6a354b76664e3..1feb987682fb7609fcbba34bd3e9075122c031dc 100644
--- a/indra/newview/lltexlayer.cpp
+++ b/indra/newview/lltexlayer.cpp
@@ -542,8 +542,7 @@ void LLTexLayerSetBuffer::doUpload()
 					args["TIME"] = llformat("%d",(U32)mNeedsUploadTimer.getElapsedTimeF32());
 					args["BODYREGION"] = mTexLayerSet->getBodyRegionName();
 					args["RESOLUTION"] = lod_str;
-					args["ACTION"] = "uploaded";
-					LLNotificationsUtil::add("AvatarRezSelfBakeNotification",args);
+					LLNotificationsUtil::add("AvatarRezSelfBakedTextureUploadNotification",args);
 					llinfos << "Uploading [ name: " << mTexLayerSet->getBodyRegionName() << " res:" << lod_str << " time:" << (U32)mNeedsUploadTimer.getElapsedTimeF32() << " ]" << llendl;
 				}
 			}
@@ -593,8 +592,7 @@ void LLTexLayerSetBuffer::doUpdate()
 		args["TIME"] = llformat("%d",(U32)mNeedsUpdateTimer.getElapsedTimeF32());
 		args["BODYREGION"] = mTexLayerSet->getBodyRegionName();
 		args["RESOLUTION"] = lod_str;
-		args["ACTION"] = "locally updated";
-		LLNotificationsUtil::add("AvatarRezSelfBakeNotification",args);
+		LLNotificationsUtil::add("AvatarRezSelfBakedTextureUpdateNotification",args);
 		llinfos << "Locally updating [ name: " << mTexLayerSet->getBodyRegionName() << " res:" << lod_str << " time:" << (U32)mNeedsUpdateTimer.getElapsedTimeF32() << " ]" << llendl;
 	}
 }
diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp
index 403692951f225526cbe2afa5f68df624c0c35537..952f893015612694b4cd691a0dc06cd90fc2ed0c 100644
--- a/indra/newview/lltexturecache.cpp
+++ b/indra/newview/lltexturecache.cpp
@@ -998,7 +998,11 @@ LLAPRFile* LLTextureCache::openHeaderEntriesFile(bool readonly, S32 offset)
 
 void LLTextureCache::closeHeaderEntriesFile()
 {
-	llassert_always(mHeaderAPRFile != NULL);
+	if(!mHeaderAPRFile)
+	{
+		return ;
+	}
+
 	delete mHeaderAPRFile;
 	mHeaderAPRFile = NULL;
 }
@@ -1115,7 +1119,7 @@ S32 LLTextureCache::openAndReadEntry(const LLUUID& id, Entry& entry, bool create
 }
 
 //mHeaderMutex is locked before calling this.
-void LLTextureCache::writeEntryToHeaderImmediately(S32 idx, Entry& entry, bool write_header)
+void LLTextureCache::writeEntryToHeaderImmediately(S32& idx, Entry& entry, bool write_header)
 {	
 	LLAPRFile* aprfile ;
 	S32 bytes_written ;
@@ -1124,7 +1128,13 @@ void LLTextureCache::writeEntryToHeaderImmediately(S32 idx, Entry& entry, bool w
 	{
 		aprfile = openHeaderEntriesFile(false, 0);		
 		bytes_written = aprfile->write((U8*)&mHeaderEntriesInfo, sizeof(EntriesInfo)) ;
-		llassert_always(bytes_written == sizeof(EntriesInfo));
+		if(bytes_written != sizeof(EntriesInfo))
+		{
+			clearCorruptedCache() ; //clear the cache.
+			idx = -1 ;//mark the idx invalid.
+			return ;
+		}
+
 		mHeaderAPRFile->seek(APR_SET, offset);
 	}
 	else
@@ -1132,19 +1142,31 @@ void LLTextureCache::writeEntryToHeaderImmediately(S32 idx, Entry& entry, bool w
 		aprfile = openHeaderEntriesFile(false, offset);
 	}
 	bytes_written = aprfile->write((void*)&entry, (S32)sizeof(Entry));
-	llassert_always(bytes_written == sizeof(Entry));
+	if(bytes_written != sizeof(Entry))
+	{
+		clearCorruptedCache() ; //clear the cache.
+		idx = -1 ;//mark the idx invalid.
+
+		return ;
+	}
+
 	closeHeaderEntriesFile();
 	mUpdatedEntryMap.erase(idx) ;
 }
 
 //mHeaderMutex is locked before calling this.
-void LLTextureCache::readEntryFromHeaderImmediately(S32 idx, Entry& entry)
+void LLTextureCache::readEntryFromHeaderImmediately(S32& idx, Entry& entry)
 {
 	S32 offset = sizeof(EntriesInfo) + idx * sizeof(Entry);
 	LLAPRFile* aprfile = openHeaderEntriesFile(true, offset);
 	S32 bytes_read = aprfile->read((void*)&entry, (S32)sizeof(Entry));
-	llassert_always(bytes_read == sizeof(Entry));			
 	closeHeaderEntriesFile();
+
+	if(bytes_read != sizeof(Entry))
+	{
+		clearCorruptedCache() ; //clear the cache.
+		idx = -1 ;//mark the idx invalid.
+	}
 }
 
 //mHeaderMutex is locked before calling this.
@@ -1169,7 +1191,7 @@ void LLTextureCache::updateEntryTimeStamp(S32 idx, Entry& entry)
 }
 
 //update an existing entry, write to header file immediately.
-bool LLTextureCache::updateEntry(S32 idx, Entry& entry, S32 new_image_size, S32 new_data_size)
+bool LLTextureCache::updateEntry(S32& idx, Entry& entry, S32 new_image_size, S32 new_data_size)
 {
 	S32 new_body_size = llmax(0, new_data_size - TEXTURE_CACHE_ENTRY_SIZE) ;
 	
@@ -1240,6 +1262,10 @@ U32 LLTextureCache::openAndReadEntries(std::vector<Entry>& entries)
 	{
 		aprfile = openHeaderEntriesFile(false, 0);
 		updatedHeaderEntriesFile() ;
+		if(!aprfile)
+		{
+			return 0;
+		}
 		aprfile->seek(APR_SET, (S32)sizeof(EntriesInfo));
 	}
 	for (U32 idx=0; idx<num_entries; idx++)
@@ -1281,7 +1307,11 @@ void LLTextureCache::writeEntriesAndClose(const std::vector<Entry>& entries)
 		for (S32 idx=0; idx<num_entries; idx++)
 		{
 			S32 bytes_written = aprfile->write((void*)(&entries[idx]), (S32)sizeof(Entry));
-			llassert_always(bytes_written == sizeof(Entry));
+			if(bytes_written != sizeof(Entry))
+			{
+				clearCorruptedCache() ; //clear the cache.
+				return ;
+			}
 		}
 		closeHeaderEntriesFile();
 	}
@@ -1307,7 +1337,11 @@ void LLTextureCache::updatedHeaderEntriesFile()
 		//entriesInfo
 		mHeaderAPRFile->seek(APR_SET, 0);
 		S32 bytes_written = mHeaderAPRFile->write((U8*)&mHeaderEntriesInfo, sizeof(EntriesInfo)) ;
-		llassert_always(bytes_written == sizeof(EntriesInfo));
+		if(bytes_written != sizeof(EntriesInfo))
+		{
+			clearCorruptedCache() ; //clear the cache.
+			return ;
+		}
 		
 		//write each updated entry
 		S32 entry_size = (S32)sizeof(Entry) ;
@@ -1323,7 +1357,11 @@ void LLTextureCache::updatedHeaderEntriesFile()
 			}
 			
 			bytes_written = mHeaderAPRFile->write((void*)(&iter->second), entry_size);
-			llassert_always(bytes_written == entry_size);
+			if(bytes_written != entry_size)
+			{
+				clearCorruptedCache() ; //clear the cache.
+				return ;
+			}
 		}
 		mUpdatedEntryMap.clear() ;
 	}
@@ -1444,6 +1482,29 @@ void LLTextureCache::readHeaderCache()
 
 //////////////////////////////////////////////////////////////////////////////
 
+//the header mutex is locked before calling this.
+void LLTextureCache::clearCorruptedCache()
+{
+	llwarns << "the texture cache is corrupted, need to be cleared." << llendl ;
+
+	closeHeaderEntriesFile();//close possible file handler
+	purgeAllTextures(false) ; //clear the cache.
+	
+	if (!mReadOnly) //regenerate the directory tree if not exists.
+	{
+		LLFile::mkdir(mTexturesDirName);
+		
+		const char* subdirs = "0123456789abcdef";
+		for (S32 i=0; i<16; i++)
+		{
+			std::string dirname = mTexturesDirName + gDirUtilp->getDirDelimiter() + subdirs[i];
+			LLFile::mkdir(dirname);
+		}
+	}
+
+	return ;
+}
+
 void LLTextureCache::purgeAllTextures(bool purge_directories)
 {
 	if (!mReadOnly)
@@ -1472,11 +1533,14 @@ void LLTextureCache::purgeAllTextures(bool purge_directories)
 	mTexturesSizeTotal = 0;
 	mFreeList.clear();
 	mTexturesSizeTotal = 0;
+	mUpdatedEntryMap.clear();
 
 	// Info with 0 entries
 	mHeaderEntriesInfo.mVersion = sHeaderCacheVersion;
 	mHeaderEntriesInfo.mEntries = 0;
 	writeEntriesHeader();
+
+	llinfos << "The entire texture cache is cleared." << llendl ;
 }
 
 void LLTextureCache::purgeTextures(bool validate)
@@ -1644,7 +1708,8 @@ S32 LLTextureCache::setHeaderCacheEntry(const LLUUID& id, Entry& entry, S32 imag
 	{
 		updateEntry(idx, entry, imagesize, datasize);				
 	}
-	else // retry
+
+	if(idx < 0) // retry
 	{
 		readHeaderCache(); // We couldn't write an entry, so refresh the LRU
 	
diff --git a/indra/newview/lltexturecache.h b/indra/newview/lltexturecache.h
index 0fceee3011d1972d743d2209d1685751dad889f6..f80be0056b6c5753636162c2c737dcd154db7162 100644
--- a/indra/newview/lltexturecache.h
+++ b/indra/newview/lltexturecache.h
@@ -154,6 +154,7 @@ class LLTextureCache : public LLWorkerThread
 private:
 	void setDirNames(ELLPath location);
 	void readHeaderCache();
+	void clearCorruptedCache();
 	void purgeAllTextures(bool purge_directories);
 	void purgeTextures(bool validate);
 	LLAPRFile* openHeaderEntriesFile(bool readonly, S32 offset);
@@ -161,12 +162,12 @@ class LLTextureCache : public LLWorkerThread
 	void readEntriesHeader();
 	void writeEntriesHeader();
 	S32 openAndReadEntry(const LLUUID& id, Entry& entry, bool create);
-	bool updateEntry(S32 idx, Entry& entry, S32 new_image_size, S32 new_body_size);
+	bool updateEntry(S32& idx, Entry& entry, S32 new_image_size, S32 new_body_size);
 	void updateEntryTimeStamp(S32 idx, Entry& entry) ;
 	U32 openAndReadEntries(std::vector<Entry>& entries);
 	void writeEntriesAndClose(const std::vector<Entry>& entries);
-	void readEntryFromHeaderImmediately(S32 idx, Entry& entry) ;
-	void writeEntryToHeaderImmediately(S32 idx, Entry& entry, bool write_header = false) ;
+	void readEntryFromHeaderImmediately(S32& idx, Entry& entry) ;
+	void writeEntryToHeaderImmediately(S32& idx, Entry& entry, bool write_header = false) ;
 	void removeEntry(S32 idx, Entry& entry, std::string& filename);
 	void removeCachedTexture(const LLUUID& id) ;
 	S32 getHeaderCacheEntry(const LLUUID& id, Entry& entry);
diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index dddfed097d46daa5bce7ed8a7e608cdb38ffbfb5..65a40a5b3ad4295bc745ff1898e85555d3184173 100644
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -850,15 +850,14 @@ bool LLTextureFetchWorker::doWork(S32 param)
 	{
 		if(mCanUseHTTP)
 		{
-			const S32 HTTP_QUEUE_MAX_SIZE = 8;
 			// *TODO: Integrate this with llviewerthrottle
 			// Note: LLViewerThrottle uses dynamic throttling which makes sense for UDP,
 			// but probably not for Textures.
 			// Set the throttle to the entire bandwidth, assuming UDP packets will get priority
 			// when they are needed
 			F32 max_bandwidth = mFetcher->mMaxBandwidth;
-			if ((mFetcher->getHTTPQueueSize() >= HTTP_QUEUE_MAX_SIZE) ||
-				(mFetcher->getTextureBandwidth() > max_bandwidth))
+			if (mFetcher->isHTTPThrottled(mDesiredSize) ||
+				mFetcher->getTextureBandwidth() > max_bandwidth)
 			{
 				// Make normal priority and return (i.e. wait until there is room in the queue)
 				setPriority(LLWorkerThread::PRIORITY_NORMAL | mWorkPriority);
@@ -1250,7 +1249,7 @@ bool LLTextureFetchWorker::deleteOK()
 
 	if ((haveWork() &&
 		 // not ok to delete from these states
-		 ((mState >= SEND_HTTP_REQ && mState <= WAIT_HTTP_REQ) ||
+		 ((mState == WAIT_HTTP_REQ) ||
 		  (mState >= WRITE_TO_CACHE && mState <= WAIT_ON_WRITE))))
 	{
 		delete_ok = false;
@@ -1511,6 +1510,11 @@ LLTextureFetch::LLTextureFetch(LLTextureCache* cache, LLImageDecodeThread* image
 {
 	mMaxBandwidth = gSavedSettings.getF32("ThrottleBandwidthKBPS");
 	mTextureInfo.setUpLogging(gSavedSettings.getBOOL("LogTextureDownloadsToViewerLog"), gSavedSettings.getBOOL("LogTextureDownloadsToSimulator"), gSavedSettings.getU32("TextureLoggingThreshold"));
+	
+	for(S32 i = 0 ; i < TOTAL_TEXTURE_TYPES; i++)
+	{
+		mHTTPThrottleFlag[i] = FALSE ;
+	}
 }
 
 LLTextureFetch::~LLTextureFetch()
@@ -1658,6 +1662,65 @@ void LLTextureFetch::removeFromHTTPQueue(const LLUUID& id)
 	mHTTPTextureQueue.erase(id);
 }
 
+void LLTextureFetch::clearHTTPThrottleFlag()
+{
+	static const F32 WAIT_TIME = 0.3f ; //seconds.
+	static LLFrameTimer timer ;
+
+	if(timer.getElapsedTimeF32() < WAIT_TIME) //wait for WAIT_TIME
+	{
+		return ;
+	}
+	timer.reset() ;
+
+	LLMutexLock lock(&mNetworkQueueMutex);
+	for(S32 i = 0 ; i < TOTAL_TEXTURE_TYPES; i++)//reset the http throttle flags.
+	{
+		mHTTPThrottleFlag[i] = FALSE ;
+	}
+}
+
+//check if need to throttle this fetching request.
+//rule: if a request can not be inserted into the http queue due to a full queue,
+//      block all future insertions of requests with larger fetching size requirement.
+//because:
+//      later insertions are usually at lower priorities; and
+//      small textures need chance to be fetched.
+bool LLTextureFetch::isHTTPThrottled(S32 requested_size)
+{
+	static const S32 SMALL_TEXTURE_MAX_SIZE = 64 * 64 * 4 ;
+	static const S32 MEDIUM_TEXTURE_MAX_SIZE = 256 * 256 * 4 ;
+	static const U32 MAX_HTTP_QUEUE_SIZE = 8 ;
+
+	//determine the class of the texture: SMALL, MEDIUM, or LARGE.
+	S32 type = LARGE_TEXTURE ;
+	if(requested_size <= SMALL_TEXTURE_MAX_SIZE)
+	{
+		type = SMALL_TEXTURE ;
+	}
+	else if(requested_size <= MEDIUM_TEXTURE_MAX_SIZE)
+	{
+		type = MEDIUM_TEXTURE ;
+	}
+
+	LLMutexLock lock(&mNetworkQueueMutex);
+
+	if(mHTTPTextureQueue.size() >= MAX_HTTP_QUEUE_SIZE)//if the http queue is full.
+	{
+		if(!mHTTPThrottleFlag[type + 1])
+		{
+			for(S32 i = type + 1 ; i < TOTAL_TEXTURE_TYPES; i++) //block all requests with fetching size larger than this request.		
+			{
+				mHTTPThrottleFlag[i] = TRUE ;			
+			}
+		}
+		
+		return true ;
+	}
+
+	return mHTTPThrottleFlag[type] ; //true if this request can not be inserted to the http queue.
+}
+
 void LLTextureFetch::deleteRequest(const LLUUID& id, bool cancel)
 {
 	lockQueue() ;
@@ -1824,7 +1887,8 @@ S32 LLTextureFetch::update(U32 max_time_ms)
 			lldebugs << "processed: " << processed << " messages." << llendl;
 		}
 	}
-	
+	clearHTTPThrottleFlag();
+
 	return res;
 }
 
diff --git a/indra/newview/lltexturefetch.h b/indra/newview/lltexturefetch.h
index 634e590fe0f7e835510eec3f9ce76aeb19256bd2..c31c38b04a5e7c78cacb1f2bb47a2ad3c55a984f 100644
--- a/indra/newview/lltexturefetch.h
+++ b/indra/newview/lltexturefetch.h
@@ -95,7 +95,8 @@ class LLTextureFetch : public LLWorkerThread
 	void removeFromNetworkQueue(LLTextureFetchWorker* worker, bool cancel);
 	void addToHTTPQueue(const LLUUID& id);
 	void removeFromHTTPQueue(const LLUUID& id);
-	S32 getHTTPQueueSize() { return getNumHTTPRequests(); }
+	bool isHTTPThrottled(S32 requested_size);
+	void clearHTTPThrottleFlag();
 	void removeRequest(LLTextureFetchWorker* worker, bool cancel);
 	// Called from worker thread (during doWork)
 	void processCurlRequests();	
@@ -134,6 +135,16 @@ class LLTextureFetch : public LLWorkerThread
 	F32 mTextureBandwidth;
 	F32 mMaxBandwidth;
 	LLTextureInfo mTextureInfo;
+
+	enum
+	{
+		SMALL_TEXTURE = 0 , //size <= 64 * 64
+		MEDIUM_TEXTURE,     //size <= 256 * 256
+		LARGE_TEXTURE,      //size > 256 * 256
+		DUMMY,
+		TOTAL_TEXTURE_TYPES
+	};
+	BOOL mHTTPThrottleFlag[TOTAL_TEXTURE_TYPES];
 };
 
 #endif // LL_LLTEXTUREFETCH_H
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index f9e7191b213f1b965d6b1f741f4d473fa9604a15..cf1dd639e14f29131b680d87f1785b0d48d8201f 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -1270,7 +1270,6 @@ bool LLToolPie::handleMediaClick(const LLPickInfo& pick)
 
 	if (!parcel ||
 		objectp.isNull() ||
-		objectp->isHUDAttachment() ||
 		pick.mObjectFace < 0 || 
 		pick.mObjectFace >= objectp->getNumTEs()) 
 	{
diff --git a/indra/newview/llviewerattachmenu.cpp b/indra/newview/llviewerattachmenu.cpp
index f683bd8674d56e403110b99735fe02b4f9b3acda..5b3c4ea77326f45e686d54032043b5c64003ab5a 100644
--- a/indra/newview/llviewerattachmenu.cpp
+++ b/indra/newview/llviewerattachmenu.cpp
@@ -122,7 +122,7 @@ void LLViewerAttachMenu::attachObjects(const uuid_vec_t& items, const std::strin
 		LLViewerInventoryItem* item = (LLViewerInventoryItem*)gInventory.getLinkedItem(id);
 		if(item && gInventory.isObjectDescendentOf(id, gInventory.getRootFolderID()))
 		{
-			rez_attachment(item, attachmentp);
+			rez_attachment(item, attachmentp); // don't replace if called from an "Attach To..." menu
 		}
 		else if(item && item->isFinished())
 		{
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index 7a17bfeb46439fcc97cadadbf59a97a5a3846760..d89ee13b9548dbcfaa0af1ab51e279dbed326295 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -3072,20 +3072,25 @@ void LLViewerMediaImpl::calculateInterest()
 	
 	// Calculate distance from the avatar, for use in the proximity calculation.
 	mProximityDistance = 0.0f;
+	mProximityCamera = 0.0f;
 	if(!mObjectList.empty())
 	{
 		// Just use the first object in the list.  We could go through the list and find the closest object, but this should work well enough.
 		std::list< LLVOVolume* >::iterator iter = mObjectList.begin() ;
 		LLVOVolume* objp = *iter ;
 		llassert_always(objp != NULL) ;
+		
+		// The distance calculation is invalid for HUD attachments -- leave both mProximityDistance and mProximityCamera at 0 for them.
+		if(!objp->isHUDAttachment())
+		{
+			LLVector3d obj_global = objp->getPositionGlobal() ;
+			LLVector3d agent_global = gAgent.getPositionGlobal() ;
+			LLVector3d global_delta = agent_global - obj_global ;
+			mProximityDistance = global_delta.magVecSquared();  // use distance-squared because it's cheaper and sorts the same.
 
-		LLVector3d obj_global = objp->getPositionGlobal() ;
-		LLVector3d agent_global = gAgent.getPositionGlobal() ;
-		LLVector3d global_delta = agent_global - obj_global ;
-		mProximityDistance = global_delta.magVecSquared();  // use distance-squared because it's cheaper and sorts the same.
-
-		LLVector3d camera_delta = gAgentCamera.getCameraPositionGlobal() - obj_global;
-		mProximityCamera = camera_delta.magVec();
+			LLVector3d camera_delta = gAgentCamera.getCameraPositionGlobal() - obj_global;
+			mProximityCamera = camera_delta.magVec();
+		}
 	}
 	
 	if(mNeedsMuteCheck)
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index a83980dc23ee5a9f2550251ba3ca109719ae2d20..92195f0a4da4bce2c653cb3e27579631291abf03 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -5852,6 +5852,7 @@ void handle_buy_land()
 class LLObjectAttachToAvatar : public view_listener_t
 {
 public:
+	LLObjectAttachToAvatar(bool replace) : mReplace(replace) {}
 	static void setObjectSelection(LLObjectSelectionHandle selection) { sObjectSelection = selection; }
 
 private:
@@ -5865,22 +5866,38 @@ class LLObjectAttachToAvatar : public view_listener_t
 			LLViewerJointAttachment* attachment_point = NULL;
 			if (index > 0)
 				attachment_point = get_if_there(gAgentAvatarp->mAttachmentPoints, index, (LLViewerJointAttachment*)NULL);
-			confirm_replace_attachment(0, attachment_point);
+			confirmReplaceAttachment(0, attachment_point);
 		}
 		return true;
 	}
 
+	static void onNearAttachObject(BOOL success, void *user_data);
+	void confirmReplaceAttachment(S32 option, LLViewerJointAttachment* attachment_point);
+
+	struct CallbackData
+	{
+		CallbackData(LLViewerJointAttachment* point, bool replace) : mAttachmentPoint(point), mReplace(replace) {}
+
+		LLViewerJointAttachment*	mAttachmentPoint;
+		bool						mReplace;
+	};
+
 protected:
 	static LLObjectSelectionHandle sObjectSelection;
+	bool mReplace;
 };
 
 LLObjectSelectionHandle LLObjectAttachToAvatar::sObjectSelection;
 
-void near_attach_object(BOOL success, void *user_data)
+// static
+void LLObjectAttachToAvatar::onNearAttachObject(BOOL success, void *user_data)
 {
+	if (!user_data) return;
+	CallbackData* cb_data = static_cast<CallbackData*>(user_data);
+
 	if (success)
 	{
-		const LLViewerJointAttachment *attachment = (LLViewerJointAttachment *)user_data;
+		const LLViewerJointAttachment *attachment = cb_data->mAttachmentPoint;
 		
 		U8 attachment_id = 0;
 		if (attachment)
@@ -5900,12 +5917,15 @@ void near_attach_object(BOOL success, void *user_data)
 			// interpret 0 as "default location"
 			attachment_id = 0;
 		}
-		LLSelectMgr::getInstance()->sendAttach(attachment_id);
+		LLSelectMgr::getInstance()->sendAttach(attachment_id, cb_data->mReplace);
 	}		
 	LLObjectAttachToAvatar::setObjectSelection(NULL);
+
+	delete cb_data;
 }
 
-void confirm_replace_attachment(S32 option, void* user_data)
+// static
+void LLObjectAttachToAvatar::confirmReplaceAttachment(S32 option, LLViewerJointAttachment* attachment_point)
 {
 	if (option == 0/*YES*/)
 	{
@@ -5930,7 +5950,8 @@ void confirm_replace_attachment(S32 option, void* user_data)
 			delta = delta * 0.5f;
 			walkToSpot -= delta;
 
-			gAgent.startAutoPilotGlobal(gAgent.getPosGlobalFromAgent(walkToSpot), "Attach", NULL, near_attach_object, user_data, stop_distance);
+			CallbackData* user_data = new CallbackData(attachment_point, mReplace); // *TODO: leak if the callback isn't called?
+			gAgent.startAutoPilotGlobal(gAgent.getPosGlobalFromAgent(walkToSpot), "Attach", NULL, onNearAttachObject, user_data, stop_distance);
 			gAgentCamera.clearFocusObject();
 		}
 	}
@@ -8115,7 +8136,8 @@ void initialize_menus()
 	commit.add("Object.Touch", boost::bind(&handle_object_touch));
 	commit.add("Object.SitOrStand", boost::bind(&handle_object_sit_or_stand));
 	commit.add("Object.Delete", boost::bind(&handle_object_delete));
-	view_listener_t::addMenu(new LLObjectAttachToAvatar(), "Object.AttachToAvatar");
+	view_listener_t::addMenu(new LLObjectAttachToAvatar(true), "Object.AttachToAvatar");
+	view_listener_t::addMenu(new LLObjectAttachToAvatar(false), "Object.AttachAddToAvatar");
 	view_listener_t::addMenu(new LLObjectReturn(), "Object.Return");
 	view_listener_t::addMenu(new LLObjectReportAbuse(), "Object.ReportAbuse");
 	view_listener_t::addMenu(new LLObjectMute(), "Object.Mute");
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index 004d1382218869bc11c6b5f356a4e7627ebdf25e..82fef1d916ea4032600def3b459b25d5d11c66d8 100644
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -79,6 +79,8 @@
 // format changes. JC
 const U32 INDRA_OBJECT_CACHE_VERSION = 14;
 
+// Format string used to construct filename for the object cache
+static const char OBJECT_CACHE_FILENAME[] = "objects_%d_%d.slc";
 
 extern BOOL gNoRender;
 
@@ -323,13 +325,25 @@ LLViewerRegion::~LLViewerRegion()
 	delete mEventPoll;
 	LLHTTPSender::clearSender(mHost);
 	
-	saveCache();
+	saveObjectCache();
 
 	std::for_each(mObjectPartition.begin(), mObjectPartition.end(), DeletePointer());
 }
 
 
-void LLViewerRegion::loadCache()
+const std::string LLViewerRegion::getObjectCacheFilename(U64 mHandle) const
+{
+	std::string filename;
+	U32 region_x, region_y;
+
+	grid_from_region_handle(mHandle, &region_x, &region_y);
+	filename = gDirUtilp->getExpandedFilename(LL_PATH_CACHE,
+			   llformat(OBJECT_CACHE_FILENAME, region_x, region_y));
+
+	return filename;
+}
+
+void LLViewerRegion::loadObjectCache()
 {
 	if (mCacheLoaded)
 	{
@@ -341,9 +355,8 @@ void LLViewerRegion::loadCache()
 
 	LLVOCacheEntry *entry;
 
-	std::string filename;
-	filename = gDirUtilp->getExpandedFilename(LL_PATH_CACHE,"") + gDirUtilp->getDirDelimiter() +
-		llformat("objects_%d_%d.slc",U32(mHandle>>32)/REGION_WIDTH_UNITS, U32(mHandle)/REGION_WIDTH_UNITS );
+	std::string filename = getObjectCacheFilename(mHandle);
+	LL_DEBUGS("ObjectCache") << filename << LL_ENDL;
 
 	LLFILE* fp = LLFile::fopen(filename, "rb");		/* Flawfinder: ignore */
 	if (!fp)
@@ -414,7 +427,7 @@ void LLViewerRegion::loadCache()
 }
 
 
-void LLViewerRegion::saveCache()
+void LLViewerRegion::saveObjectCache()
 {
 	if (!mCacheLoaded)
 	{
@@ -427,9 +440,8 @@ void LLViewerRegion::saveCache()
 		return;
 	}
 
-	std::string filename;
-	filename = gDirUtilp->getExpandedFilename(LL_PATH_CACHE,"") + gDirUtilp->getDirDelimiter() +
-		llformat("objects_%d_%d.slc", U32(mHandle>>32)/REGION_WIDTH_UNITS, U32(mHandle)/REGION_WIDTH_UNITS );
+	std::string filename = getObjectCacheFilename(mHandle);
+	LL_DEBUGS("ObjectCache") << filename << LL_ENDL;
 
 	LLFILE* fp = LLFile::fopen(filename, "wb");		/* Flawfinder: ignore */
 	if (!fp)
@@ -1454,7 +1466,7 @@ void LLViewerRegion::unpackRegionHandshake()
 
 	// Now that we have the name, we can load the cache file
 	// off disk.
-	loadCache();
+	loadObjectCache();
 
 	// After loading cache, signal that simulator can start
 	// sending data.
diff --git a/indra/newview/llviewerregion.h b/indra/newview/llviewerregion.h
index a9e7ef771ccf7d502af0df22bfdece307e4b1915..8254cf1caddb2531274ffe2375037c0546720cf5 100644
--- a/indra/newview/llviewerregion.h
+++ b/indra/newview/llviewerregion.h
@@ -99,9 +99,8 @@ class LLViewerRegion: public LLCapabilityProvider // implements this interface
 	~LLViewerRegion();
 
 	// Call this after you have the region name and handle.
-	void loadCache();
-
-	void saveCache();
+	void loadObjectCache();
+	void saveObjectCache();
 
 	void sendMessage(); // Send the current message to this region's simulator
 	void sendReliableMessage(); // Send the current message to this region's simulator
@@ -330,6 +329,9 @@ class LLViewerRegion: public LLCapabilityProvider // implements this interface
 	LLDynamicArray<LLUUID> mMapAvatarIDs;
 
 private:
+	// determine the cache filename for the region from the region handle
+	const std::string getObjectCacheFilename(U64 mHandle) const;
+
 	// The surfaces and other layers
 	LLSurface*	mLandp;
 
@@ -404,7 +406,7 @@ class LLViewerRegion: public LLCapabilityProvider // implements this interface
 	// Cache ID is unique per-region, across renames, moving locations,
 	// etc.
 	LLUUID mCacheID;
-	
+
 	typedef std::map<std::string, std::string> CapabilityMap;
 	CapabilityMap mCapabilities;
 	
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 6e1a9c61e611012a145c7ba1a0b9e60194df350e..298ac28ca89ecc7500ff15d1b6b87ec89f483d7a 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -3133,14 +3133,16 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 				if (motionp->getName().empty())
 				{
 					output = llformat("%s - %d",
-									  motionp->getID().asString().c_str(),
-									  (U32)motionp->getPriority());
+							  gAgent.isGodlikeWithoutAdminMenuFakery() ?
+							  motionp->getID().asString().c_str() :
+							  LLUUID::null.asString().c_str(),
+							  (U32)motionp->getPriority());
 				}
 				else
 				{
 					output = llformat("%s - %d",
-									  motionp->getName().c_str(),
-									  (U32)motionp->getPriority());
+							  motionp->getName().c_str(),
+							  (U32)motionp->getPriority());
 				}
 				addDebugText(output);
 			}
diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp
index c9130b56b481eaa0495a04c337aad03a70dabc4e..194213f880e9cc711e4604ff717e7ae1709a44a1 100644
--- a/indra/newview/llwearableitemslist.cpp
+++ b/indra/newview/llwearableitemslist.cpp
@@ -863,12 +863,13 @@ void LLWearableItemsList::ContextMenu::updateItemsVisibility(LLContextMenu* menu
 	} // for
 
 	bool standalone = mParent ? mParent->isStandalone() : false;
+	bool wear_add_visible = mask & (MASK_CLOTHING|MASK_ATTACHMENT) && n_worn == 0 && can_be_worn && (n_already_worn != 0 || mask & MASK_ATTACHMENT);
 
 	// *TODO: eliminate multiple traversals over the menu items
 	setMenuItemVisible(menu, "wear_wear", 			n_already_worn == 0 && n_worn == 0 && can_be_worn);
 	setMenuItemEnabled(menu, "wear_wear", 			n_already_worn == 0 && n_worn == 0);
-	setMenuItemVisible(menu, "wear_add",			mask == MASK_CLOTHING && n_worn == 0 && n_already_worn != 0 && can_be_worn);
-	setMenuItemEnabled(menu, "wear_add",			n_items == 1 && canAddWearable(ids.front()) && n_already_worn != 0);
+	setMenuItemVisible(menu, "wear_add",			wear_add_visible);
+	setMenuItemEnabled(menu, "wear_add",			n_items == 1 && canAddWearable(ids.front()));
 	setMenuItemVisible(menu, "wear_replace",		n_worn == 0 && n_already_worn != 0 && can_be_worn);
 	//visible only when one item selected and this item is worn
 	setMenuItemVisible(menu, "edit",				!standalone && mask & (MASK_CLOTHING|MASK_BODYPART) && n_worn == n_items && n_worn == 1);
@@ -984,7 +985,18 @@ bool LLWearableItemsList::ContextMenu::canAddWearable(const LLUUID& item_id)
 	// TODO: investigate wearables may not be loaded at this point EXT-8231
 
 	LLViewerInventoryItem* item = gInventory.getItem(item_id);
-	if (!item || item->getType() != LLAssetType::AT_CLOTHING)
+	if (!item)
+	{
+		return false;
+	}
+
+	if (item->getType() == LLAssetType::AT_OBJECT)
+	{
+		// *TODO: is this the right check?
+		return isAgentAvatarValid() && gAgentAvatarp->canAttachMoreObjects();
+	}
+
+	if (item->getType() != LLAssetType::AT_CLOTHING)
 	{
 		return false;
 	}
diff --git a/indra/newview/skins/default/xui/da/language_settings.xml b/indra/newview/skins/default/xui/da/language_settings.xml
index fa8a788605495c567d21c1f9d095bbe57f79ddf3..3e46f69af1e40febcb2dae6c61f25bc996ad836c 100644
--- a/indra/newview/skins/default/xui/da/language_settings.xml
+++ b/indra/newview/skins/default/xui/da/language_settings.xml
@@ -17,6 +17,7 @@
 	datetimeToCodes["month"]	= "%B";		// August
 	datetimeToCodes["mthnum"]	= "%m";		// 08
 	datetimeToCodes["day"]		= "%d";		// 31
+	datetimeToCodes["sday"]		= "%-d";	// 9
 	datetimeToCodes["hour24"]	= "%H";		// 14
 	datetimeToCodes["hour"]		= "%H";		// 14
 	datetimeToCodes["hour12"]	= "%I";		// 02
diff --git a/indra/newview/skins/default/xui/de/floater_preview_gesture.xml b/indra/newview/skins/default/xui/de/floater_preview_gesture.xml
index 3a036fc441559bb6ca94405fc1f4e93295009cfe..c3c017ae973bd7252c2d080cb2e8f13e89266eb3 100644
--- a/indra/newview/skins/default/xui/de/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/de/floater_preview_gesture.xml
@@ -42,7 +42,12 @@
 	<text name="library_label">
 		Bibliothek:
 	</text>
-	<scroll_list name="library_list" width="166"/>
+	<scroll_list name="library_list" width="166">
+		<scroll_list.rows name="action_animation" value="Animation"/>
+		<scroll_list.rows name="action_sound" value="Sound"/>
+		<scroll_list.rows name="action_chat" value="Chat"/>
+		<scroll_list.rows name="action_wait" value="Warten"/>
+	</scroll_list>
 	<button label="Hinzufügen &gt;&gt;" left_pad="6" name="add_btn" width="94"/>
 	<text name="steps_label">
 		Schritte:
diff --git a/indra/newview/skins/default/xui/de/floater_world_map.xml b/indra/newview/skins/default/xui/de/floater_world_map.xml
index f54d8c332816e5669bfdf2f93c322535ec0ac19a..befa46651a0aa21bae9e040f43437514688b73ad 100644
--- a/indra/newview/skins/default/xui/de/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/de/floater_world_map.xml
@@ -22,12 +22,12 @@
 		<text name="land_sale_label">
 			Land-Verkauf
 		</text>
-		<text name="by_owner_label">
-			durch Besitzer
-		</text>
 		<text name="auction_label">
 			Land-Auktion
 		</text>
+		<text name="by_owner_label">
+			durch Besitzer
+		</text>
 		<button label="Nach Hause" label_selected="Nach Hause" name="Go Home" tool_tip="Nach Hause teleportieren"/>
 		<text name="Home_label">
 			Zuhause
@@ -39,7 +39,7 @@
 		<text name="pg_label">
 			Generell
 		</text>
-		<check_box label="Mature" name="events_mature_chk"/>
+		<check_box initial_value="true" label="Mature" name="events_mature_chk"/>
 		<text name="events_mature_label">
 			Moderat
 		</text>
@@ -67,6 +67,9 @@
 			<scroll_list.columns label="" name="icon"/>
 			<scroll_list.columns label="" name="sim_name"/>
 		</scroll_list>
+		<text name="events_label">
+			Standort:
+		</text>
 		<button label="Teleportieren" label_selected="Teleportieren" name="Teleport" tool_tip="Zu ausgewählter Position teleportieren"/>
 		<button font="SansSerifSmall" label="SLurl kopieren" name="copy_slurl" tool_tip="Kopiert die aktuelle Position als SLurl zur Verwendung im Web."/>
 		<button label="Auswahl anzeigen" label_selected="Ziel anzeigen" name="Show Destination" tool_tip="Karte auf ausgewählte Position zentrieren"/>
diff --git a/indra/newview/skins/default/xui/de/language_settings.xml b/indra/newview/skins/default/xui/de/language_settings.xml
index 3e357007fff470d8126717f6306cabd8cb9581d5..d54f548fe135494240f9ae206785a9059a77842c 100644
--- a/indra/newview/skins/default/xui/de/language_settings.xml
+++ b/indra/newview/skins/default/xui/de/language_settings.xml
@@ -17,6 +17,7 @@
 	datetimeToCodes["month"]	= "%B";		// August
 	datetimeToCodes["mthnum"]	= "%m";		// 08
 	datetimeToCodes["day"]		= "%d";		// 31
+	datetimeToCodes["sday"]		= "%-d";	// 9
 	datetimeToCodes["hour24"]	= "%H";		// 14
 	datetimeToCodes["hour"]		= "%H";		// 14
 	datetimeToCodes["hour12"]	= "%I";		// 02
diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml
index 45ae8a0c957e71b9a4a997b9e911973140c1652d..b9b6a8ed505f1d7be593fc5aad95bcff8669cd50 100644
--- a/indra/newview/skins/default/xui/de/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/de/menu_viewer.xml
@@ -94,6 +94,7 @@
 			<menu_item_call label="Skripts auf nicht ausführen einstellen" name="Set Scripts to Not Running"/>
 		</menu>
 		<menu label="Optionen" name="Options">
+			<menu_item_call label="Hochlade-Berechtigungen (Standard) festlegen" name="perm prefs"/>
 			<menu_item_check label="Erweiterte Berechtigungen anzeigen" name="DebugPermissions"/>
 			<menu_item_check label="Nur meine Objekte auswählen" name="Select Only My Objects"/>
 			<menu_item_check label="Nur bewegliche Objekte auswählen" name="Select Only Movable Objects"/>
@@ -111,7 +112,6 @@
 			<menu_item_call label="Sound ([COST] L$)..." name="Upload Sound"/>
 			<menu_item_call label="Animation ([COST] L$)..." name="Upload Animation"/>
 			<menu_item_call label="Mehrfach-Upload ([COST] L$ pro Datei)..." name="Bulk Upload"/>
-			<menu_item_call label="Hochlade-Berechtigungen (Standard) festlegen" name="perm prefs"/>
 		</menu>
 	</menu>
 	<menu label="Hilfe" name="Help">
diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml
index 24582e4be3b124bd6354a11c2da4c3ce53cbcc2c..e5baf0f98fd2d773b2dda906023a3312233f8497 100644
--- a/indra/newview/skins/default/xui/de/notifications.xml
+++ b/indra/newview/skins/default/xui/de/notifications.xml
@@ -366,7 +366,7 @@ Sind Sie sicher, dass Sie fortfahren wollen?
 		<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
 	</notification>
 	<notification name="DeleteOutfits">
-		Das ausgewählte Outfit löschen?
+		Das/Die ausgewählte(n) Outfit(s) löschen?
 		<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
 	</notification>
 	<notification name="PromptGoToEventsPage">
@@ -2765,7 +2765,7 @@ Avatar &apos;[NAME]&apos; hat als vollständig gerezzter Avatar die Welt verlass
 	</notification>
 	<notification name="AvatarRezSelfBakeNotification">
 		(Seit [EXISTENCE] Sekunden inworld )
-Die [RESOLUTION]-gebakene Textur für &apos;[BODYREGION]&apos; wurde in [TIME] Sekunden hochgeladen.
+Die [RESOLUTION]-gebakene Textur für &apos;[BODYREGION]&apos; wurde in [TIME] Sekunden [ACTION].
 	</notification>
 	<notification name="ConfirmLeaveCall">
 		Möchten Sie dieses Gespräch wirklich verlassen ?
@@ -2803,4 +2803,7 @@ Sollte das Problem fortbestehen, finden Sie weitere Hilfestellung unter [SUPPORT
 		Wenn Sie ein Stück Land besitzen, können Sie dies als Ihr Zuhause festlegen.
 Ansonsten können Sie auf der Karte nachsehen und dort Ort suchen, die als „Infohub“ gekennzeichnet sind.
 	</global>
+	<global name="You died and have been teleported to your home location">
+		Sie sind gestorben und wurden zu Ihrem Zuhause teleportiert.
+	</global>
 </notifications>
diff --git a/indra/newview/skins/default/xui/de/panel_group_notices.xml b/indra/newview/skins/default/xui/de/panel_group_notices.xml
index f45b5ea7af3d8f7d68c2c9aa4e0933dde3b1d972..8c1df04ed8eafd57ff8ecfc0f98c91e99d8538fc 100644
--- a/indra/newview/skins/default/xui/de/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_notices.xml
@@ -21,7 +21,7 @@ Maximal 200 pro Gruppe täglich
 	<text name="notice_list_none_found">
 		Nicht gefunden.
 	</text>
-	<button label="Neue Mitteilung erstellen" label_selected="Neue Mitteilung" name="create_new_notice" tool_tip="Neue Mitteilung erstellen"/>
+	<button label="Neue Mitteilung" label_selected="Neue Mitteilung" name="create_new_notice" tool_tip="Neue Mitteilung erstellen"/>
 	<button label="Aktualisieren" label_selected="Liste aktualisieren" name="refresh_notices" tool_tip="Mitteilungsliste aktualisieren"/>
 	<panel label="Neue Mitteilung" name="panel_create_new_notice">
 		<text name="lbl">
diff --git a/indra/newview/skins/default/xui/de/panel_group_roles.xml b/indra/newview/skins/default/xui/de/panel_group_roles.xml
index db5186e081886e90fe5de053d89c65074ec5b2d0..f297d32a91cb1b85870522c4b73e26a6a36f443a 100644
--- a/indra/newview/skins/default/xui/de/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_roles.xml
@@ -13,6 +13,9 @@
 Drücken Sie die Strg-Taste und klicken Sie auf Namen,
 um mehrere Mitglieder auszuwählen.
 			</panel.string>
+			<panel.string name="donation_area">
+				[AREA] m².
+			</panel.string>
 			<filter_editor label="Mitglieder filtern" name="filter_input"/>
 			<name_list name="member_list">
 				<name_list.columns label="Mitglied" name="name" relative_width="0.30"/>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml
index 44b2bd1f60de45c739971c4873a672b02ddfe4de..5c71b20fb02b79c2d67f1be649c48c3d3758674e 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml
@@ -11,8 +11,8 @@
 	<check_box label="Aktiviert" name="enable_media"/>
 	<slider label="Voice-Chat" name="Voice Volume"/>
 	<check_box label="Aktiviert" name="enable_voice_check"/>
-	<check_box label="Automatische Wiedergabe zulassen" name="media_auto_play_btn" tool_tip="Hier aktivieren, um Medien automatisch wiederzugeben."/>
-	<check_box label="Medien, die an andere Avatare angehängt sind, wiedergeben." name="media_show_on_others_btn" tool_tip="Diese Option deaktivieren, um Medien für andere Avataren, die sich in der Nähe befinden, auszublenden."/>
+	<check_box label="Automatische Wiedergabe zulassen" name="media_auto_play_btn" tool_tip="Hier aktivieren, um Medien automatisch wiederzugeben." value="true"/>
+	<check_box label="Medien, die an andere Avatare angehängt sind, wiedergeben." name="media_show_on_others_btn" tool_tip="Diese Option deaktivieren, um Medien für andere Avataren, die sich in der Nähe befinden, auszublenden." value="true"/>
 	<text name="voice_chat_settings">
 		Voice-Chat-Einstellungen
 	</text>
@@ -28,6 +28,12 @@
 		<panel.string name="default_text">
 			Standard
 		</panel.string>
+		<panel.string name="default system device">
+			Standardgerät
+		</panel.string>
+		<panel.string name="no device">
+			Kein Gerät
+		</panel.string>
 		<text name="Input">
 			Eingabe
 		</text>
diff --git a/indra/newview/skins/default/xui/de/panel_teleport_history.xml b/indra/newview/skins/default/xui/de/panel_teleport_history.xml
index 4efd83dffff178290f384ddb5d0b36b1b1f06b55..4d721f2af6b97cde6979e529c46cffaa66c75e1b 100644
--- a/indra/newview/skins/default/xui/de/panel_teleport_history.xml
+++ b/indra/newview/skins/default/xui/de/panel_teleport_history.xml
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="Teleport History">
 	<accordion name="history_accordion">
+		<no_matched_tabs_text name="no_matched_teleports_msg" value="Sie haben nicht das Richtige gefunden? Versuchen Sie es mit der [secondlife:///app/search/places/[SEARCH_TERM] Suche]."/>
+		<no_visible_tabs_text name="no_teleports_msg" value="Die Teleportliste ist leer. Versuchen Sie es mit der [secondlife:///app/search/all Suche]."/>
 		<accordion_tab name="today" title="Heute"/>
 		<accordion_tab name="yesterday" title="Gestern"/>
 		<accordion_tab name="2_days_ago" title="Vor 2 Tagen"/>
diff --git a/indra/newview/skins/default/xui/de/sidepanel_item_info.xml b/indra/newview/skins/default/xui/de/sidepanel_item_info.xml
index b9ca969ac5633dc31c84a3b24297b2550b1f9120..4ba187dbd621d8a90025a79f33d769ffacd96c97 100644
--- a/indra/newview/skins/default/xui/de/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/de/sidepanel_item_info.xml
@@ -23,8 +23,7 @@
 	</panel.string>
 	<text name="title" value="Objektprofil"/>
 	<text name="origin" value="(Inventar)"/>
-	<panel label=""
-           name="item_profile">
+	<panel label="" name="item_profile">
 		<text name="LabelItemNameTitle">
 			Name:
 		</text>
@@ -51,7 +50,7 @@
 			</text>
 			<check_box label="Bearbeiten" name="CheckOwnerModify"/>
 			<check_box label="Kopieren" name="CheckOwnerCopy"/>
-			<check_box label="Transferieren" name="CheckOwnerTransfer"/>
+			<check_box label="Ãœbertragen" name="CheckOwnerTransfer"/>
 			<text name="AnyoneLabel">
 				Jeder:
 			</text>
@@ -59,13 +58,13 @@
 			<text name="GroupLabel">
 				Gruppe:
 			</text>
-			<check_box label="Teilen" name="CheckShareWithGroup" tool_tip="Mit allen Mitgliedern der zugeordneten Gruppe, Ihre Berechtigungen dieses Objekt zu ändern teilen. Sie müssen Übereignen, um Rollenbeschränkungen zu aktivieren."/>
+			<check_box label="Teilen" name="CheckShareWithGroup" tool_tip="Mit allen Mitgliedern der zugeordneten Gruppe, Ihre Berechtigungen dieses Objekt zu ändern, teilen. Sie müssen Übereignen, um Rollenbeschränkungen zu aktivieren."/>
 			<text name="NextOwnerLabel">
 				Nächster Eigentümer:
 			</text>
 			<check_box label="Bearbeiten" name="CheckNextOwnerModify"/>
 			<check_box label="Kopieren" name="CheckNextOwnerCopy"/>
-			<check_box label="Transferieren" name="CheckNextOwnerTransfer" tool_tip="Nächster Eigentümer kann dieses Objekt weitergeben oder -verkaufen"/>
+			<check_box label="Übertragen" name="CheckNextOwnerTransfer" tool_tip="Nächster Eigentümer kann dieses Objekt weitergeben oder -verkaufen"/>
 		</panel>
 		<check_box label="Zum Verkauf" name="CheckPurchase"/>
 		<combo_box name="combobox sale copy">
diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml
index abe03e1adbc9ad6c64c8967a647a0617b0288a07..bf7d2ef3b3fcdc3f53bc5c2544adf69a95d16ab4 100644
--- a/indra/newview/skins/default/xui/de/strings.xml
+++ b/indra/newview/skins/default/xui/de/strings.xml
@@ -663,6 +663,9 @@
 	<string name="worldmap_offline">
 		Offline
 	</string>
+	<string name="worldmap_item_tooltip_format">
+		[PRICE] L$ für [AREA] m²
+	</string>
 	<string name="worldmap_results_none_found">
 		Nicht gefunden.
 	</string>
@@ -1061,6 +1064,7 @@
 	<string name="AnimFlagStop" value=" Animation stoppen:"/>
 	<string name="AnimFlagStart" value=" Animation starten:"/>
 	<string name="Wave" value=" Winken"/>
+	<string name="GestureActionNone" value="Keine"/>
 	<string name="HelloAvatar" value=" Hallo Avatar!"/>
 	<string name="ViewAllGestures" value="  Alle anzeigen &gt;&gt;"/>
 	<string name="GetMoreGestures" value="Mehr &gt;&gt;"/>
@@ -1143,12 +1147,12 @@
 	<string name="InvFolder Favorite">
 		Favoriten
 	</string>
-	<string name="InvFolder favorite">
-		Favoriten
-	</string>
 	<string name="InvFolder Current Outfit">
 		Aktuelles Outfit
 	</string>
+	<string name="InvFolder Initial Outfits">
+		Ursprüngliche Outfits
+	</string>
 	<string name="InvFolder My Outfits">
 		Meine Outfits
 	</string>
@@ -1468,6 +1472,7 @@
 	<string name="SummaryForTheWeek" value="Zusammenfassung für diese Woche, beginnend am "/>
 	<string name="NextStipendDay" value=". Der nächste Stipendium-Tag ist "/>
 	<string name="GroupIndividualShare" value="                      Gruppenanteil       Einzelanteil"/>
+	<string name="GroupColumn" value="Gruppe"/>
 	<string name="Balance">
 		Kontostand
 	</string>
@@ -1687,6 +1692,12 @@
 	<string name="BusyModeResponseDefault">
 		Der Einwohner/Die Einwohnerin ist „beschäftigt”, d.h. er/sie möchte im Moment nicht gestört werden.  Ihre Nachricht wird dem Einwohner/der Einwohnerin als IM angezeigt, und kann später beantwortet werden.
 	</string>
+	<string name="NoOutfits">
+		Sie haben noch keine Outfits. Versuchen Sie es mit der [secondlife:///app/search/all Suche].
+	</string>
+	<string name="NoOutfitsTabsMatched">
+		Sie haben nicht das Richtige gefunden? Versuchen Sie es mit der [secondlife:///app/search/all/[SEARCH_TERM] Suche].
+	</string>
 	<string name="MuteByName">
 		(Nach Namen)
 	</string>
@@ -3676,6 +3687,9 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
 	<string name="group_role_owners">
 		Eigentümer
 	</string>
+	<string name="group_member_status_online">
+		Online
+	</string>
 	<string name="uploading_abuse_report">
 		Bericht wird hochgeladen...
   
@@ -3729,9 +3743,15 @@ Missbrauchsbericht
 	<string name="Invalid Wearable">
 		Ungültiges Objekt
 	</string>
+	<string name="New Gesture">
+		Neue Geste
+	</string>
 	<string name="New Script">
 		Neues Skript
 	</string>
+	<string name="New Note">
+		Neue Notiz
+	</string>
 	<string name="New Folder">
 		Neuer Ordner
 	</string>
@@ -3789,6 +3809,15 @@ Missbrauchsbericht
 	<string name="Male - Wow">
 		Männlich - Wow
 	</string>
+	<string name="Female - Chuckle">
+		Weiblich - Kichern
+	</string>
+	<string name="Female - Cry">
+		Weiblich - Weinen
+	</string>
+	<string name="Female - Embarrassed">
+		Weiblich - Verlegen
+	</string>
 	<string name="Female - Excuse me">
 		Weiblich - Räuspern
 	</string>
@@ -3807,9 +3836,21 @@ Missbrauchsbericht
 	<string name="Female - Hey">
 		Weiblich - Hey
 	</string>
+	<string name="Female - Hey baby">
+		Weiblich - Hey Süße(r)
+	</string>
 	<string name="Female - Laugh">
 		Weiblich - Lachen
 	</string>
+	<string name="Female - Looking good">
+		Weiblich - Looking good
+	</string>
+	<string name="Female - Over here">
+		Weiblich - Over here
+	</string>
+	<string name="Female - Please">
+		Weiblich - Please
+	</string>
 	<string name="Female - Repulsed">
 		Weiblich - Angewidert
 	</string>
@@ -3859,4 +3900,46 @@ Missbrauchsbericht
 	<string name="dateTimePM">
 		Uhr
 	</string>
+	<string name="LocalEstimateUSD">
+		[AMOUNT] US$
+	</string>
+	<string name="Membership">
+		Mitgliedschaft
+	</string>
+	<string name="Roles">
+		Rollen
+	</string>
+	<string name="Group Identity">
+		Gruppenidentität
+	</string>
+	<string name="Parcel Management">
+		Parzellenverwaltung
+	</string>
+	<string name="Parcel Identity">
+		Parzellenidentität
+	</string>
+	<string name="Parcel Settings">
+		Parzelleneinstellungen
+	</string>
+	<string name="Parcel Powers">
+		Parzellenfähigkeiten
+	</string>
+	<string name="Parcel Access">
+		Parzellenzugang
+	</string>
+	<string name="Parcel Content">
+		Parzelleninhalt
+	</string>
+	<string name="Object Management">
+		Objektmanagement
+	</string>
+	<string name="Accounting">
+		Kontoführung
+	</string>
+	<string name="Notices">
+		Mitteilungen
+	</string>
+	<string name="Chat">
+		Chat
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/en/language_settings.xml b/indra/newview/skins/default/xui/en/language_settings.xml
index c523185034117f78269505161a2c8b15ff321155..c8a06fe401df7ebba74a72e56090cd040a7f8c8a 100644
--- a/indra/newview/skins/default/xui/en/language_settings.xml
+++ b/indra/newview/skins/default/xui/en/language_settings.xml
@@ -23,6 +23,7 @@
 	datetimeToCodes["month"]	= "%B";		// August
 	datetimeToCodes["mthnum"]	= "%m";		// 08
 	datetimeToCodes["day"]		= "%d";		// 31
+	datetimeToCodes["sday"]		= "%-d";	// 9
 	datetimeToCodes["hour24"]	= "%H";		// 14
 	datetimeToCodes["hour"]		= "%H";		// 14
 	datetimeToCodes["hour12"]	= "%I";		// 02
diff --git a/indra/newview/skins/default/xui/en/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_object_gear.xml
index 8ec768981969fb3345331221d7bc63b9d6943352..76f68c6d4bab1b8bcae779899d7df236bbefb0dd 100644
--- a/indra/newview/skins/default/xui/en/menu_inspect_object_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_inspect_object_gear.xml
@@ -88,6 +88,15 @@
     <menu_item_call.on_visible
      function="Object.EnableWear" />
   </menu_item_call>  
+  <menu_item_call
+   label="Add"
+   layout="topleft"
+   name="add">
+    <menu_item_call.on_click
+     function="Object.AttachAddToAvatar" />
+    <menu_item_call.on_visible
+     function="Object.EnableWear" />
+  </menu_item_call>
   <menu_item_call
    label="Report"
    layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_object.xml b/indra/newview/skins/default/xui/en/menu_object.xml
index b6cc222e968aee1aaa765a1044eb2dbb22e24042..31f70d99caafb7ae3612f4b702e5304ba90475f6 100644
--- a/indra/newview/skins/default/xui/en/menu_object.xml
+++ b/indra/newview/skins/default/xui/en/menu_object.xml
@@ -83,6 +83,15 @@
             <menu_item_call.on_enable
              function="Object.EnableWear" />
    </menu_item_call>
+   <menu_item_call
+      enabled="false"
+      label="Add"
+      name="Add">
+            <menu_item_call.on_click
+             function="Object.AttachAddToAvatar" />
+            <menu_item_call.on_enable
+             function="Object.EnableWear" />
+   </menu_item_call>
    <context_menu
          label="Attach  â–¶"
          name="Object Attach" />
diff --git a/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml
index c3adbb7904e10029cb31ac13110d55082adccdf9..5feac53c33680ff0f6eb67ebdc2cf65c09c0a6ac 100644
--- a/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml
+++ b/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml
@@ -13,7 +13,7 @@
      layout="topleft"
      name="wear_wear">
         <on_click
-         function="Wearable.Add" />
+         function="Wearable.Wear" />
     </menu_item_call>
     <menu_item_call
      label="Add"
@@ -59,7 +59,7 @@
          function="Wearable.Edit" />
     </menu_item_call>
     <menu_item_call
-     label="Object Profile"
+     label="Item Profile"
      layout="topleft"
      name="object_profile">
         <on_click
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 962e3ac58220d4274ee28823ad125cd7c5c98840..d7684e434e30d19dffa63281da4edf10236aecbd 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -6340,10 +6340,18 @@ Avatar '[NAME]' left as fully loaded.
 
   <notification
    icon="notifytip.tga"
-   name="AvatarRezSelfBakeNotification"
+   name="AvatarRezSelfBakedTextureUploadNotification"
    type="notifytip">
 ( [EXISTENCE] seconds alive )
-You [ACTION] a [RESOLUTION] baked texture for '[BODYREGION]' after [TIME] seconds.
+You uploaded a [RESOLUTION] baked texture for '[BODYREGION]' after [TIME] seconds.
+  </notification>
+
+  <notification
+   icon="notifytip.tga"
+   name="AvatarRezSelfBakedTextureUpdateNotification"
+   type="notifytip">
+( [EXISTENCE] seconds alive )
+You locally updated a [RESOLUTION] baked texture for '[BODYREGION]' after [TIME] seconds.
   </notification>
 
   <notification
diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml
index 185e458a85875fb83ea49ca40f8f2e823c47ee45..0499873fb071365dd126ca161374489917f1dc72 100644
--- a/indra/newview/skins/default/xui/en/panel_login.xml
+++ b/indra/newview/skins/default/xui/en/panel_login.xml
@@ -156,6 +156,7 @@ width="135"
   visible="false" />
 </layout_panel>
 <layout_panel
+tab_stop="false"
 follows="right|bottom"
 name="links"
 width="200"
diff --git a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
index 2c9d7e4b6a5ddc00fce2723ecc8213f51e919c30..082d51ed3ccdebf911034fe66eea8ce3af64c1c3 100644
--- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
@@ -97,6 +97,8 @@
 	     name="location_combo"
 	     top_delta="0"
 	     width="266">
+         <combo_list
+         mouse_wheel_opaque="true"/>
 	     <!-- *TODO: Delete.  Let the location_input use the correct art sizes.
 	        <location_input.add_landmark_button
 	         height="18"
diff --git a/indra/newview/skins/default/xui/en/widgets/scroll_list.xml b/indra/newview/skins/default/xui/en/widgets/scroll_list.xml
index 63166f32b7f3d9c1fb6ffcd099678fabe7ddd7ba..dd9367580792eeb4af5a65b2f8db675a58648133 100644
--- a/indra/newview/skins/default/xui/en/widgets/scroll_list.xml
+++ b/indra/newview/skins/default/xui/en/widgets/scroll_list.xml
@@ -12,6 +12,7 @@
              draw_stripes="true"
              scroll_bar_bg_visible="false"
              scroll_bar_bg_color="black"
+             mouse_wheel_opaque="false"
              background_visible="true"
              heading_height="23"
              draw_border="false"
diff --git a/indra/newview/skins/default/xui/es/floater_preview_gesture.xml b/indra/newview/skins/default/xui/es/floater_preview_gesture.xml
index cf1b3bbbbd745b655ec1b3c15e92ae6d03f5a832..c58eb227aaf385ff7efe537a4dd9a78a79583b3c 100644
--- a/indra/newview/skins/default/xui/es/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/es/floater_preview_gesture.xml
@@ -42,7 +42,12 @@
 	<text name="library_label">
 		Biblioteca:
 	</text>
-	<scroll_list name="library_list"/>
+	<scroll_list name="library_list">
+		<scroll_list.rows name="action_animation" value="Animaciones"/>
+		<scroll_list.rows name="action_sound" value="Sonido"/>
+		<scroll_list.rows name="action_chat" value="Chat"/>
+		<scroll_list.rows name="action_wait" value="Espera"/>
+	</scroll_list>
 	<button label="Añadir &gt;&gt;" name="add_btn"/>
 	<text name="steps_label">
 		Pasos:
diff --git a/indra/newview/skins/default/xui/es/floater_world_map.xml b/indra/newview/skins/default/xui/es/floater_world_map.xml
index 31353248160df883975a36cad722a1d69008c173..acc63e52a0971c9836df3701e02bd03267b457e5 100644
--- a/indra/newview/skins/default/xui/es/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/es/floater_world_map.xml
@@ -19,12 +19,12 @@
 		<text name="land_sale_label">
 			Venta de terreno
 		</text>
-		<text name="by_owner_label">
-			por el dueño
-		</text>
 		<text name="auction_label">
 			subasta
 		</text>
+		<text name="by_owner_label">
+			por el dueño
+		</text>
 		<button name="Go Home" tool_tip="Teleportar a mi Base"/>
 		<text name="Home_label">
 			Base
@@ -35,7 +35,7 @@
 		<text name="pg_label">
 			General
 		</text>
-		<check_box name="events_mature_chk"/>
+		<check_box initial_value="true" name="events_mature_chk"/>
 		<text name="events_mature_label">
 			Moderado
 		</text>
@@ -58,6 +58,9 @@
 		<search_editor label="Regiones alfabéticamente" name="location" tool_tip="Escribe el nombre de una región"/>
 		<button label="Encontrar" name="DoSearch" tool_tip="Buscar una región"/>
 		<button name="Clear" tool_tip="Limpia las marcas y actualiza el mapa"/>
+		<text name="events_label">
+			Lugar:
+		</text>
 		<button label="Teleportar" name="Teleport" tool_tip="Teleportar a la localización seleccionada"/>
 		<button label="Copiar la SLurl" name="copy_slurl" tool_tip="Copiar la SLurl de esta posición para usarla en una web."/>
 		<button label="Ver lo elegido" name="Show Destination" tool_tip="Centrar el mapa en la localización seleccionada"/>
diff --git a/indra/newview/skins/default/xui/es/language_settings.xml b/indra/newview/skins/default/xui/es/language_settings.xml
index 1ade4ba300e3d244793c64bd0c57c0489d11d026..f172994077b9843c9f5fecd4e0fda061abe06596 100644
--- a/indra/newview/skins/default/xui/es/language_settings.xml
+++ b/indra/newview/skins/default/xui/es/language_settings.xml
@@ -17,6 +17,7 @@
 	datetimeToCodes["month"]	= "%B";		// August
 	datetimeToCodes["mthnum"]	= "%m";		// 08
 	datetimeToCodes["day"]		= "%d";		// 31
+	datetimeToCodes["sday"]		= "%-d";	// 9
 	datetimeToCodes["hour24"]	= "%H";		// 14
 	datetimeToCodes["hour"]		= "%H";		// 14
 	datetimeToCodes["hour12"]	= "%I";		// 02
diff --git a/indra/newview/skins/default/xui/es/menu_viewer.xml b/indra/newview/skins/default/xui/es/menu_viewer.xml
index f6ad18cf3addfe8165d7571c1415603680fe034f..66c0bf93116ed1d9bfc035aaa5c748d857176f50 100644
--- a/indra/newview/skins/default/xui/es/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/es/menu_viewer.xml
@@ -94,6 +94,7 @@
 			<menu_item_call label="Configurar scripts como no ejecutándose" name="Set Scripts to Not Running"/>
 		</menu>
 		<menu label="Opciones" name="Options">
+			<menu_item_call label="Configurar los permisos por defecto de subida" name="perm prefs"/>
 			<menu_item_check label="Mostrar los permisos avanzados" name="DebugPermissions"/>
 			<menu_item_check label="Seleccionar sólo mis objetos" name="Select Only My Objects"/>
 			<menu_item_check label="Seleccionar sólo los objetos movibles" name="Select Only Movable Objects"/>
@@ -111,7 +112,6 @@
 			<menu_item_call label="Sonido ([COST] L$)..." name="Upload Sound"/>
 			<menu_item_call label="Animación ([COST] L$)..." name="Upload Animation"/>
 			<menu_item_call label="Masivo ([COST] L$ por archivo)..." name="Bulk Upload"/>
-			<menu_item_call label="Configurar los permisos por defecto de subida" name="perm prefs"/>
 		</menu>
 	</menu>
 	<menu label="Ayuda" name="Help">
diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml
index 88013df8f54eb70dcafb1b4898a4bbb55223af6a..e9eda790dd9dda9e1c8c645b6b9fd92f8359a917 100644
--- a/indra/newview/skins/default/xui/es/notifications.xml
+++ b/indra/newview/skins/default/xui/es/notifications.xml
@@ -2750,8 +2750,8 @@ Comprueba la configuración de la red y del servidor de seguridad.
 El avatar &apos;[NAME]&apos; ya estaba totalmente cargado al salir.
 	</notification>
 	<notification name="AvatarRezSelfBakeNotification">
-		( [EXISTENCE] segundos vivo)
-Has cargado una textura obtenida mediante bake de [RESOLUTION] para &apos;[BODYREGION]&apos; después de [TIME] segundos.
+		( [EXISTENCE] segundos con vida )
+Has [ACTION] una textura obtenida mediante bake de [RESOLUTION] para &apos;[BODYREGION]&apos; después de [TIME] segundos.
 	</notification>
 	<notification name="ConfirmLeaveCall">
 		¿Estás seguro de que deseas salir de esta multiconferencia?
@@ -2788,4 +2788,7 @@ Si los problemas persisten, por favor, acude a [SUPPORT_SITE].
 		Si posees un terreno, puedes hacerlo tu Base.
 También puedes buscar en el Mapa lugares marcados como &quot;Puntos de Información&quot;.
 	</global>
+	<global name="You died and have been teleported to your home location">
+		Has muerto y te has teleportado a tu Base.
+	</global>
 </notifications>
diff --git a/indra/newview/skins/default/xui/es/panel_group_notices.xml b/indra/newview/skins/default/xui/es/panel_group_notices.xml
index 7a3dbad59e96a04e1a16865cdac33d2960c7d0bd..1eaa69abffbf66ee316eda007875ba46c64298cc 100644
--- a/indra/newview/skins/default/xui/es/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/es/panel_group_notices.xml
@@ -18,7 +18,7 @@ El máximo es de 200 por día y grupo.
 	<text name="notice_list_none_found">
 		No se han encontrado
 	</text>
-	<button label="Crear un aviso nuevo" label_selected="Crear un aviso nuevo" name="create_new_notice" tool_tip="Crear un aviso nuevo"/>
+	<button label="Nuevo aviso" label_selected="Crear un aviso nuevo" name="create_new_notice" tool_tip="Crear un aviso nuevo"/>
 	<button label="Actualizar" label_selected="Actualizar la lista" name="refresh_notices" tool_tip="Actualizar la lista de avisos"/>
 	<panel label="Crear un aviso nuevo" name="panel_create_new_notice">
 		<text name="lbl">
diff --git a/indra/newview/skins/default/xui/es/panel_group_roles.xml b/indra/newview/skins/default/xui/es/panel_group_roles.xml
index 5ef81162bc16d20777cb4ce37f3844b11478657c..390b4e2e9d4fca6b2fa01c1fc7dd36f8413dd1ed 100644
--- a/indra/newview/skins/default/xui/es/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/es/panel_group_roles.xml
@@ -12,6 +12,9 @@
 				Puede añadir o quitar los roles asignados a los miembros.
 Seleccione varios nombres manteniendo pulsada la tecla Ctrl y pulsando en cada uno de ellos.
 			</panel.string>
+			<panel.string name="donation_area">
+				[AREA] m²
+			</panel.string>
 			<filter_editor label="Filtrar los miembros" name="filter_input"/>
 			<name_list name="member_list">
 				<name_list.columns label="Miembro" name="name"/>
@@ -74,21 +77,15 @@ incluyendo el de Todos y el de Propietarios.
 		<text name="static">
 			Nombre del rol
 		</text>
-		<line_editor name="role_name">
-			Empleados
-		</line_editor>
+		<line_editor name="role_name"/>
 		<text name="static3">
 			Etiqueta del rol
 		</text>
-		<line_editor name="role_title">
-			(esperando)
-		</line_editor>
+		<line_editor name="role_title"/>
 		<text name="static2">
 			Descripción
 		</text>
-		<text_editor name="role_description">
-			(esperando)
-		</text_editor>
+		<text_editor name="role_description"/>
 		<text name="static4">
 			Roles asignados
 		</text>
@@ -103,9 +100,6 @@ incluyendo el de Todos y el de Propietarios.
 		</scroll_list>
 	</panel>
 	<panel name="actions_footer">
-		<text name="static">
-			Descripción de la capacidad
-		</text>
 		<text_editor name="action_description">
 			Esta capacidad es la de &apos;Expulsar miembros de este grupo&apos;. Sólo un propietario puede expulsar a otro.
 		</text_editor>
diff --git a/indra/newview/skins/default/xui/es/panel_nearby_media.xml b/indra/newview/skins/default/xui/es/panel_nearby_media.xml
index f03338e4c7eef44c7f4639b8bf551f55ef184ca3..f65cae6e2065dc77bce148727ddc2e2b0b5a9457 100644
--- a/indra/newview/skins/default/xui/es/panel_nearby_media.xml
+++ b/indra/newview/skins/default/xui/es/panel_nearby_media.xml
@@ -48,16 +48,16 @@
 					<button name="stop_btn" tool_tip="Parar los media seleccionados"/>
 				</layout_panel>
 				<layout_panel name="play">
-					<button name="play_btn" tool_tip="Ejecutar los media"/>
+					<button name="play_btn" tool_tip="Ejecutar los media seleccionados"/>
 				</layout_panel>
 				<layout_panel name="pause">
-					<button name="pause_btn" tool_tip="Pausa los media seleccionados"/>
+					<button name="pause_btn" tool_tip="Pausar los media seleccionados"/>
 				</layout_panel>
 				<layout_panel name="volume_slider_ctrl">
 					<slider_bar initial_value="0.5" name="volume_slider" tool_tip="Volumen de los media seleccionados"/>
 				</layout_panel>
 				<layout_panel name="mute">
-					<button name="mute_btn" tool_tip="Silencia los media seleccionados"/>
+					<button name="mute_btn" tool_tip="Silenciar el audio de los media seleccionados"/>
 				</layout_panel>
 				<layout_panel name="zoom">
 					<button name="zoom_btn" tool_tip="Zoom en los media seleccionados"/>
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_sound.xml b/indra/newview/skins/default/xui/es/panel_preferences_sound.xml
index 2d3c76d21599eaa349553a713702949906ea712d..b0088ee1a2d3a2254f64bd087251ed25bc2596ae 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_sound.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Sonidos" name="Preference Media panel">
 	<slider label="Volumen general" name="System Volume"/>
-	<check_box label="Silenciar cuando minimice" name="mute_when_minimized"/>
+	<check_box initial_value="true" label="Silenciar cuando minimice" name="mute_when_minimized"/>
 	<slider label="Botones" name="UI Volume"/>
 	<slider label="Ambiental" name="Wind Volume"/>
 	<slider label="Efectos de sonido" name="SFX Volume"/>
@@ -11,8 +11,8 @@
 	<check_box label="Activada" name="enable_media"/>
 	<slider label="Chat de voz" name="Voice Volume"/>
 	<check_box label="Activado" name="enable_voice_check"/>
-	<check_box label="Permitir la ejecución automática de los media" name="media_auto_play_btn" tool_tip="Marcar esto para permitir la ejecución automática de los media"/>
-	<check_box label="Ejecutar para otros avatares los media anexados" name="media_show_on_others_btn" tool_tip="Al desmarcar esto se esconderán los media anexados a otros avatares cercanos"/>
+	<check_box label="Permitir la ejecución automática de los media" name="media_auto_play_btn" tool_tip="Marcar esto para permitir la ejecución automática de los media" value="true"/>
+	<check_box label="Ejecutar para otros avatares los media anexados" name="media_show_on_others_btn" tool_tip="Al desmarcar esto se esconderán los media anexados a otros avatares cercanos" value="true"/>
 	<text name="voice_chat_settings">
 		Configuración del chat de voz
 	</text>
@@ -28,6 +28,12 @@
 		<panel.string name="default_text">
 			Por defecto
 		</panel.string>
+		<panel.string name="default system device">
+			Dispositivo del sistema por defecto
+		</panel.string>
+		<panel.string name="no device">
+			Ningún dispositivo
+		</panel.string>
 		<text name="Input">
 			Entrada
 		</text>
diff --git a/indra/newview/skins/default/xui/es/panel_teleport_history.xml b/indra/newview/skins/default/xui/es/panel_teleport_history.xml
index a0ee30e8f62a87107471cd902f78aaece8056216..364451b26b42961df73562e660ca6b28c6687fda 100644
--- a/indra/newview/skins/default/xui/es/panel_teleport_history.xml
+++ b/indra/newview/skins/default/xui/es/panel_teleport_history.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="Teleport History">
 	<accordion name="history_accordion">
+		<no_matched_tabs_text name="no_matched_teleports_msg" value="¿No encuentras lo que buscas? Intenta con [secondlife:///app/search/places/[SEARCH_TERM] Buscar]."/>
+		<no_visible_tabs_text name="no_teleports_msg" value="El historial de teleportes está vacío. Intenta con [secondlife:///app/search/places/ Buscar]."/>
 		<accordion_tab name="today" title="Hoy"/>
 		<accordion_tab name="yesterday" title="Ayer"/>
 		<accordion_tab name="2_days_ago" title="Hace 2 días"/>
-		5
 		<accordion_tab name="3_days_ago" title="Hace 3 días"/>
 		<accordion_tab name="4_days_ago" title="Hace 4 días"/>
 		<accordion_tab name="5_days_ago" title="Hace 5 días"/>
diff --git a/indra/newview/skins/default/xui/es/sidepanel_item_info.xml b/indra/newview/skins/default/xui/es/sidepanel_item_info.xml
index d3b91e7a71382cd045a54a2fbc8913c320943462..0cea46afbade117bd13aa76a2dabfd346c1d8ab7 100644
--- a/indra/newview/skins/default/xui/es/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/es/sidepanel_item_info.xml
@@ -23,8 +23,7 @@
 	</panel.string>
 	<text name="title" value="Perfil del elemento"/>
 	<text name="origin" value="(Inventario)"/>
-	<panel label=""
-           name="item_profile">
+	<panel label="" name="item_profile">
 		<text name="LabelItemNameTitle">
 			Nombre:
 		</text>
@@ -48,22 +47,22 @@
 				Tú puedes:
 			</text>
 			<check_box label="Modificar" name="CheckOwnerModify"/>
-			<check_box label="Copiarlo" name="CheckOwnerCopy"/>
-			<check_box label="Transferirlo" name="CheckOwnerTransfer"/>
+			<check_box label="Copiar" name="CheckOwnerCopy"/>
+			<check_box label="Transferir" name="CheckOwnerTransfer"/>
 			<text name="AnyoneLabel">
 				Cualquiera:
 			</text>
-			<check_box label="Copiarlo" name="CheckEveryoneCopy"/>
+			<check_box label="Copiar" name="CheckEveryoneCopy"/>
 			<text name="GroupLabel">
 				Grupo:
 			</text>
-			<check_box label="Compartir" name="CheckShareWithGroup" tool_tip="Permite que todos los miembros del grupo compartan tus permisos de modificación en este objeto. Debes transferirlo para activar las restricciones según los roles."/>
+			<check_box label="Compartir" name="CheckShareWithGroup" tool_tip="Permite que todos los miembros del grupo compartan tus permisos de modificación de este objeto. Debes transferirlo para activar las restricciones según los roles."/>
 			<text name="NextOwnerLabel">
 				Próximo propietario:
 			</text>
-			<check_box label="Modificarlo" name="CheckNextOwnerModify"/>
-			<check_box label="Copiarlo" name="CheckNextOwnerCopy"/>
-			<check_box label="Transferirlo" name="CheckNextOwnerTransfer" tool_tip="El próximo propietario puede dar o revender este objeto"/>
+			<check_box label="Modificar" name="CheckNextOwnerModify"/>
+			<check_box label="Copiar" name="CheckNextOwnerCopy"/>
+			<check_box label="Transferir" name="CheckNextOwnerTransfer" tool_tip="El próximo propietario puede dar o revender este objeto"/>
 		</panel>
 		<check_box label="En venta" name="CheckPurchase"/>
 		<combo_box name="combobox sale copy">
diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml
index 392e289a75d34d4138b3f75f9bb3289d956e57b8..9f5f1f99e76b6d03e4a2ea6f1fa4243cba25d7db 100644
--- a/indra/newview/skins/default/xui/es/strings.xml
+++ b/indra/newview/skins/default/xui/es/strings.xml
@@ -645,6 +645,9 @@
 	<string name="worldmap_offline">
 		Sin conexión
 	</string>
+	<string name="worldmap_item_tooltip_format">
+		[PRICE] L$ por [AREA] m²
+	</string>
 	<string name="worldmap_results_none_found">
 		No se ha encontrado.
 	</string>
@@ -1034,6 +1037,7 @@
 	<string name="AnimFlagStop" value="Parar la animación:"/>
 	<string name="AnimFlagStart" value="Empezar la animación:"/>
 	<string name="Wave" value="Onda"/>
+	<string name="GestureActionNone" value="Ninguno"/>
 	<string name="HelloAvatar" value="¡Hola, avatar!"/>
 	<string name="ViewAllGestures" value="Ver todos &gt;&gt;"/>
 	<string name="GetMoreGestures" value="Obtener más &gt;&gt;"/>
@@ -1116,12 +1120,12 @@
 	<string name="InvFolder Favorite">
 		Favoritos
 	</string>
-	<string name="InvFolder favorite">
-		Favoritos
-	</string>
 	<string name="InvFolder Current Outfit">
 		Vestuario actual
 	</string>
+	<string name="InvFolder Initial Outfits">
+		Vestuario inicial
+	</string>
 	<string name="InvFolder My Outfits">
 		Mis vestuarios
 	</string>
@@ -1441,6 +1445,7 @@
 	<string name="SummaryForTheWeek" value="Resumen de esta semana, empezando el"/>
 	<string name="NextStipendDay" value="El próximo día de pago es el"/>
 	<string name="GroupIndividualShare" value="Grupo       Aportaciones individuales"/>
+	<string name="GroupColumn" value="Grupo"/>
 	<string name="Balance">
 		Saldo
 	</string>
@@ -1654,6 +1659,12 @@
 	<string name="BusyModeResponseDefault">
 		El Residente al que has enviado un mensaje ha solicitado que no se le moleste porque está en modo ocupado.    Podrá ver tu mensaje más adelante, ya que éste aparecerá en su panel de MI.
 	</string>
+	<string name="NoOutfits">
+		Todavía no tienes vestuario. Intenta con [secondlife:///app/search/all/ Buscar]
+	</string>
+	<string name="NoOutfitsTabsMatched">
+		¿No encuentras lo que buscas? Intenta con [secondlife:///app/search/all/[SEARCH_TERM] Buscar].
+	</string>
 	<string name="MuteByName">
 		(Por el nombre)
 	</string>
@@ -3574,6 +3585,9 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
 	<string name="group_role_owners">
 		Propietarios
 	</string>
+	<string name="group_member_status_online">
+		Conectado/a
+	</string>
 	<string name="uploading_abuse_report">
 		Subiendo...
   
@@ -3627,9 +3641,15 @@ Denuncia de infracción
 	<string name="Invalid Wearable">
 		No se puede poner
 	</string>
+	<string name="New Gesture">
+		Gesto nuevo
+	</string>
 	<string name="New Script">
 		Script nuevo
 	</string>
+	<string name="New Note">
+		Nota nueva
+	</string>
 	<string name="New Folder">
 		Carpeta nueva
 	</string>
@@ -3687,6 +3707,15 @@ Denuncia de infracción
 	<string name="Male - Wow">
 		Varón - Admiración
 	</string>
+	<string name="Female - Chuckle">
+		Mujer - Risa suave
+	</string>
+	<string name="Female - Cry">
+		Mujer - Llorar
+	</string>
+	<string name="Female - Embarrassed">
+		Mujer - Ruborizada
+	</string>
 	<string name="Female - Excuse me">
 		Mujer - Disculpa
 	</string>
@@ -3705,9 +3734,21 @@ Denuncia de infracción
 	<string name="Female - Hey">
 		Mujer - ¡Eh!
 	</string>
+	<string name="Female - Hey baby">
+		Mujer - ¡Eh, encanto!
+	</string>
 	<string name="Female - Laugh">
 		Mujer - Risa
 	</string>
+	<string name="Female - Looking good">
+		Mujer - Buen aspecto
+	</string>
+	<string name="Female - Over here">
+		Mujer - Por aquí
+	</string>
+	<string name="Female - Please">
+		Mujer - Por favor
+	</string>
 	<string name="Female - Repulsed">
 		Mujer - Rechazo
 	</string>
@@ -3757,4 +3798,46 @@ Denuncia de infracción
 	<string name="dateTimePM">
 		PM
 	</string>
+	<string name="LocalEstimateUSD">
+		[AMOUNT] dólares estadounidenses
+	</string>
+	<string name="Membership">
+		Membresía
+	</string>
+	<string name="Roles">
+		Roles
+	</string>
+	<string name="Group Identity">
+		Indentidad de grupo
+	</string>
+	<string name="Parcel Management">
+		Gestión de la parcela
+	</string>
+	<string name="Parcel Identity">
+		Identidad de la parcela
+	</string>
+	<string name="Parcel Settings">
+		Configuración de la parcela
+	</string>
+	<string name="Parcel Powers">
+		Poder de la parcela
+	</string>
+	<string name="Parcel Access">
+		Acceso a la parcela
+	</string>
+	<string name="Parcel Content">
+		Contenido de la parcela
+	</string>
+	<string name="Object Management">
+		Manejo de objetos
+	</string>
+	<string name="Accounting">
+		Contabilidad
+	</string>
+	<string name="Notices">
+		Avisos
+	</string>
+	<string name="Chat">
+		Chat
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml b/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml
index 4fa91b87ef68326156cae02fe669ac6a9686889d..82f5bac047134f0fab02c2fe803bb8733cab9e58 100644
--- a/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml
@@ -13,13 +13,13 @@
 		Attendre :
 	</floater.string>
 	<floater.string name="stop_txt">
-		Stop
+		Arrêter
 	</floater.string>
 	<floater.string name="preview_txt">
 		Prévisualiser
 	</floater.string>
 	<floater.string name="none_text">
-		-- Aucune --
+		- Aucun choix -
 	</floater.string>
 	<floater.string name="Title">
 		Geste : [NAME]
@@ -42,7 +42,12 @@
 	<text name="library_label">
 		Bibliothèque :
 	</text>
-	<scroll_list name="library_list"/>
+	<scroll_list name="library_list">
+		<scroll_list.rows name="action_animation" value="Animation"/>
+		<scroll_list.rows name="action_sound" value="Son"/>
+		<scroll_list.rows name="action_chat" value="Chat"/>
+		<scroll_list.rows name="action_wait" value="Attente"/>
+	</scroll_list>
 	<button label="Ajouter &gt;&gt;" name="add_btn"/>
 	<text name="steps_label">
 		Étapes :
diff --git a/indra/newview/skins/default/xui/fr/floater_world_map.xml b/indra/newview/skins/default/xui/fr/floater_world_map.xml
index 0047a3bb040f892bf5ec5a10f5b4dda2a4dbe5aa..f5dab91924c52eee0eb7192c07684d1488d48e74 100644
--- a/indra/newview/skins/default/xui/fr/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/fr/floater_world_map.xml
@@ -19,12 +19,12 @@
 		<text name="land_sale_label">
 			Vente de terrains
 		</text>
-		<text name="by_owner_label">
-			propriétaire
-		</text>
 		<text name="auction_label">
 			enchères
 		</text>
+		<text name="by_owner_label">
+			propriétaire
+		</text>
 		<button name="Go Home" tool_tip="Me téléporter jusqu’à mon domicile"/>
 		<text name="Home_label">
 			Domicile
@@ -58,6 +58,9 @@
 		<search_editor label="Régions par nom" name="location" tool_tip="Tapez le nom d&apos;une région"/>
 		<button label="Trouver" name="DoSearch" tool_tip="Rechercher une région"/>
 		<button name="Clear" tool_tip="Effacer les lignes de suivi et réinitialiser la carte"/>
+		<text name="events_label">
+			Endroit :
+		</text>
 		<button label="Téléporter" name="Teleport" tool_tip="Me téléporter à l&apos;emplacement sélectionné"/>
 		<button label="Copier la SLurl" name="copy_slurl" tool_tip="Copie l’emplacement actuel sous la forme d’une SLurl à utiliser sur le Web."/>
 		<button label="Afficher la sélection" name="Show Destination" tool_tip="Centrer la carte sur l&apos;emplacement sélectionné"/>
diff --git a/indra/newview/skins/default/xui/fr/language_settings.xml b/indra/newview/skins/default/xui/fr/language_settings.xml
index 117ae16ee84cafd8572c40dda57849deee2267a2..bd272e1f284b76a3ad20dfbcee5b7d4c332dd462 100644
--- a/indra/newview/skins/default/xui/fr/language_settings.xml
+++ b/indra/newview/skins/default/xui/fr/language_settings.xml
@@ -17,6 +17,7 @@
 	datetimeToCodes["month"]	= "%B";		// August
 	datetimeToCodes["mthnum"]	= "%m";		// 08
 	datetimeToCodes["day"]		= "%d";		// 31
+	datetimeToCodes["sday"]		= "%-d";	// 9
 	datetimeToCodes["hour24"]	= "%H";		// 14
 	datetimeToCodes["hour"]		= "%H";		// 14
 	datetimeToCodes["hour12"]	= "%I";		// 02
diff --git a/indra/newview/skins/default/xui/fr/menu_gesture_gear.xml b/indra/newview/skins/default/xui/fr/menu_gesture_gear.xml
index 4512d1bf7e0a9bc14bb8feb9f7550a9014e9522f..062dd0f00536dd5717ac5b506ad87c999f07af42 100644
--- a/indra/newview/skins/default/xui/fr/menu_gesture_gear.xml
+++ b/indra/newview/skins/default/xui/fr/menu_gesture_gear.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="menu_gesture_gear">
-	<menu_item_call label="Ajouter/Supprimer des Favoris" name="activate"/>
+	<menu_item_call label="Ajouter/Supprimer des favoris" name="activate"/>
 	<menu_item_call label="Copier" name="copy_gesture"/>
 	<menu_item_call label="Coller" name="paste"/>
 	<menu_item_call label="Copier l&apos;UUID" name="copy_uuid"/>
diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml
index 6338fa0cd0809d03c2e6d95a1b899fd4064ae17e..cd0e41e49646119ae9c5072d8697665a755f862d 100644
--- a/indra/newview/skins/default/xui/fr/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml
@@ -94,6 +94,7 @@
 			<menu_item_call label="Définir les scripts sur Pas d&apos;exécution" name="Set Scripts to Not Running"/>
 		</menu>
 		<menu label="Options" name="Options">
+			<menu_item_call label="Définir les droits de chargement par défaut" name="perm prefs"/>
 			<menu_item_check label="Afficher les droits avancés" name="DebugPermissions"/>
 			<menu_item_check label="Sélectionner mes objets uniquement" name="Select Only My Objects"/>
 			<menu_item_check label="Sélectionner les objets déplaçables uniquement" name="Select Only Movable Objects"/>
@@ -111,7 +112,6 @@
 			<menu_item_call label="Son ([COST] L$)..." name="Upload Sound"/>
 			<menu_item_call label="Animation ([COST] L$)..." name="Upload Animation"/>
 			<menu_item_call label="Lot ([COST] L$ par fichier)..." name="Bulk Upload"/>
-			<menu_item_call label="Définir les droits de chargement par défaut" name="perm prefs"/>
 		</menu>
 	</menu>
 	<menu label="Aide" name="Help">
diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml
index 5cb42a04354160464647b7bb4ab6c0fd6ab54708..6cfc2b5c6664fc001af6a4a3251378efee724bcc 100644
--- a/indra/newview/skins/default/xui/fr/notifications.xml
+++ b/indra/newview/skins/default/xui/fr/notifications.xml
@@ -358,7 +358,7 @@ Voulez-vous vraiment continuer ?
 		<usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
 	</notification>
 	<notification name="DeleteOutfits">
-		Supprimer la tenue sélectionnée ?
+		Supprimer la ou les tenues sélectionnées ?
 		<usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
 	</notification>
 	<notification name="PromptGoToEventsPage">
@@ -2746,7 +2746,7 @@ Départ de l&apos;avatar [NAME] entièrement chargé.
 	</notification>
 	<notification name="AvatarRezSelfBakeNotification">
 		([EXISTENCE] secondes d&apos;existence)
-Texture figée de [RESOLUTION] chargée pour [BODYREGION] au bout de [TIME] secondes.
+Vous avez [ACTION] une texture figée de [RESOLUTION] pour [BODYREGION] au bout de [TIME] secondes.
 	</notification>
 	<notification name="ConfirmLeaveCall">
 		Voulez-vous vraiment quitter cet appel ?
@@ -2784,4 +2784,7 @@ Si vous avez toujours des problèmes, veuillez consulter la page [SUPPORT_SITE].
 		Si vous possédez un terrain, vous pouvez le définir comme domicile.
 Sinon, consultez la carte et trouvez les &quot; infohubs &quot;.
 	</global>
+	<global name="You died and have been teleported to your home location">
+		Vous êtes mort et avez été téléporté à votre domicile.
+	</global>
 </notifications>
diff --git a/indra/newview/skins/default/xui/fr/panel_group_notices.xml b/indra/newview/skins/default/xui/fr/panel_group_notices.xml
index 5fc1397763696a8b73b945a94f0b6ce2d9b92fc9..bcf2cc8ec98259ff94fff7d99f4ce8c59fa35171 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_notices.xml
@@ -21,7 +21,7 @@ Vous pouvez désactiver la réception des notices dans l&apos;onglet Général.
 	<text name="notice_list_none_found">
 		Aucun résultat
 	</text>
-	<button label="Créer une notice" label_selected="Créer une notice" name="create_new_notice" tool_tip="Créer une notice"/>
+	<button label="Nouvelle notice" label_selected="Créer une notice" name="create_new_notice" tool_tip="Créer une notice"/>
 	<button label="Rafraîchir" label_selected="Rafraîchir la liste" name="refresh_notices" tool_tip="Actualiser la liste des notices"/>
 	<panel label="Créer une notice" name="panel_create_new_notice">
 		<text name="lbl">
diff --git a/indra/newview/skins/default/xui/fr/panel_group_roles.xml b/indra/newview/skins/default/xui/fr/panel_group_roles.xml
index e1eeaa8601f371a673a90b8e8bc2c4a25f1c2a14..0bd2e0bdab7064f3a405efa2da96aa94e3c85156 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_roles.xml
@@ -12,6 +12,9 @@
 				Vous pouvez ajouter ou supprimer les rôles assignés aux membres.
 Pour sélectionner plusieurs membres, cliquez sur leurs noms en maintenant la touche Ctrl enfoncée.
 			</panel.string>
+			<panel.string name="donation_area">
+				[AREA] m²
+			</panel.string>
 			<filter_editor label="Filtrer les membres" name="filter_input"/>
 			<name_list name="member_list">
 				<name_list.columns label="Membre" name="name"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_landmark_info.xml b/indra/newview/skins/default/xui/fr/panel_landmark_info.xml
index bd29bd676c8b317f611bcad1327be177babe38f7..60507f191d25501c5a04ce9a20cd8fc2c54c01d3 100644
--- a/indra/newview/skins/default/xui/fr/panel_landmark_info.xml
+++ b/indra/newview/skins/default/xui/fr/panel_landmark_info.xml
@@ -16,7 +16,7 @@
 		Les informations sur ce lieu ne sont pas disponibles car l&apos;accès y est restreint.  Veuillez vérifier vos droits avec le propriétaire de la parcelle.
 	</string>
 	<string name="acquired_date">
-		[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+		[weekday,datetime,local] [sday,datetime,local] [month,datetime,local] [year,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local]
 	</string>
 	<button name="back_btn" tool_tip="Précédent"/>
 	<text name="title" value="Profil du lieu"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml b/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml
index c9676c898b6660fdc1f24b9ed60cd46bef7109d0..b82d8bcd18b53127c9792491f2e771352c50d55e 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml
@@ -11,8 +11,8 @@
 	<check_box label="Activé" name="enable_media"/>
 	<slider label="Chat vocal" name="Voice Volume"/>
 	<check_box label="Activé" name="enable_voice_check"/>
-	<check_box label="Autoriser la lecture automatique du média" name="media_auto_play_btn" tool_tip="Cochez pour autoriser la lecture automatique du média"/>
-	<check_box label="Jouer le média aux autres avatars" name="media_show_on_others_btn" tool_tip="Décochez pour masquer le média aux autres avatars près de vous"/>
+	<check_box label="Autoriser la lecture automatique du média" name="media_auto_play_btn" tool_tip="Cochez pour autoriser la lecture automatique du média" value="true"/>
+	<check_box label="Jouer le média aux autres avatars" name="media_show_on_others_btn" tool_tip="Décochez pour masquer le média aux autres avatars près de vous" value="true"/>
 	<text name="voice_chat_settings">
 		Paramètres du chat vocal
 	</text>
@@ -28,6 +28,12 @@
 		<panel.string name="default_text">
 			Défaut
 		</panel.string>
+		<panel.string name="default system device">
+			Périphérique système par défaut
+		</panel.string>
+		<panel.string name="no device">
+			Aucun périphérique
+		</panel.string>
 		<text name="Input">
 			Entrée
 		</text>
diff --git a/indra/newview/skins/default/xui/fr/panel_status_bar.xml b/indra/newview/skins/default/xui/fr/panel_status_bar.xml
index 3c56fa68e7b939e6855f57d42abb7f755a7280a2..85429a18c736ca9b2c86645b36f5c2eed39572aa 100644
--- a/indra/newview/skins/default/xui/fr/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/fr/panel_status_bar.xml
@@ -16,7 +16,7 @@
 		[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
 	</panel.string>
 	<panel.string name="timeTooltip">
-		[weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
+		[weekday, datetime, slt] [sday, datetime, slt] [month, datetime, slt] [year, datetime, slt]
 	</panel.string>
 	<panel.string name="buycurrencylabel">
 		[AMT] L$
diff --git a/indra/newview/skins/default/xui/fr/panel_teleport_history.xml b/indra/newview/skins/default/xui/fr/panel_teleport_history.xml
index bfd7a869c52260f90445c9a3dbabc2d9760833c4..1586c201dafb265925b89e49d2acea798a2750be 100644
--- a/indra/newview/skins/default/xui/fr/panel_teleport_history.xml
+++ b/indra/newview/skins/default/xui/fr/panel_teleport_history.xml
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="Teleport History">
 	<accordion name="history_accordion">
+		<no_matched_tabs_text name="no_matched_teleports_msg" value="Vous n&apos;avez pas trouvé ce que vous cherchiez ? Essayez [secondlife:///app/search/places/Rechercher [SEARCH_TERM]]."/>
+		<no_visible_tabs_text name="no_teleports_msg" value="L&apos;historique des téléportations est vide. Essayez [secondlife:///app/search/places/ Rechercher]."/>
 		<accordion_tab name="today" title="Aujourd&apos;hui"/>
 		<accordion_tab name="yesterday" title="Hier"/>
 		<accordion_tab name="2_days_ago" title="Il y a 2 jours"/>
diff --git a/indra/newview/skins/default/xui/fr/sidepanel_item_info.xml b/indra/newview/skins/default/xui/fr/sidepanel_item_info.xml
index 0350ea5116bdae3570e053496d06489aa614e791..77c6f4877c2be72beaf505a4c5438ddc6805ccae 100644
--- a/indra/newview/skins/default/xui/fr/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/fr/sidepanel_item_info.xml
@@ -23,10 +23,9 @@
 	</panel.string>
 	<text name="title" value="Profil de l&apos;article"/>
 	<text name="origin" value="(inventaire)"/>
-	<panel label=""
-           name="item_profile">
+	<panel label="" name="item_profile">
 		<text name="LabelItemNameTitle">
-			Nom :
+			Nom :
 		</text>
 		<text name="LabelItemDescTitle">
 			Description :
@@ -37,12 +36,12 @@
 		<text name="LabelCreatorName"/>
 		<button label="Profil" name="BtnCreator"/>
 		<text name="LabelOwnerTitle">
-			Propriétaire :
+			Propriétaire :
 		</text>
 		<text name="LabelOwnerName"/>
 		<button label="Profil" name="BtnOwner"/>
 		<text name="LabelAcquiredTitle">
-			Acquis :
+			Acquis le :
 		</text>
 		<text name="LabelAcquiredDate"/>
 		<panel name="perms_inv">
@@ -53,26 +52,26 @@
 			<check_box label="Copier" name="CheckOwnerCopy"/>
 			<check_box label="Transférer" name="CheckOwnerTransfer"/>
 			<text name="AnyoneLabel">
-				N&apos;importe qui :
+				N&apos;importe qui :
 			</text>
 			<check_box label="Copier" name="CheckEveryoneCopy"/>
 			<text name="GroupLabel">
-				Groupe :
+				Groupe :
 			</text>
-			<check_box label="Partager" name="CheckShareWithGroup" tool_tip="Autorisez tous les membres du groupe choisi à utiliser et à partager vos droits pour cet objet. Pour activer les restrictions de rôles, vous devez d&apos;abord cliquer sur Transférer."/>
+			<check_box label="Partager" name="CheckShareWithGroup" tool_tip="Autoriser tous les membres du groupe choisi à partager vos droits de modification pour cet objet. Pour activer les restrictions de rôles, vous devez d&apos;abord cliquer sur Céder."/>
 			<text name="NextOwnerLabel">
-				Le prochain propriétaire :
+				Prochain propriétaire :
 			</text>
 			<check_box label="Modifier" name="CheckNextOwnerModify"/>
 			<check_box label="Copier" name="CheckNextOwnerCopy"/>
-			<check_box label="Transférer" name="CheckNextOwnerTransfer" tool_tip="Le prochain propriétaire peut donner ou revendre cet objet"/>
+			<check_box label="Transférer" name="CheckNextOwnerTransfer" tool_tip="Le prochain propriétaire peut donner ou revendre cet objet."/>
 		</panel>
 		<check_box label="À vendre" name="CheckPurchase"/>
 		<combo_box name="combobox sale copy">
 			<combo_box.item label="Copier" name="Copy"/>
 			<combo_box.item label="Original" name="Original"/>
 		</combo_box>
-		<spinner label="Prix : L$" name="Edit Cost"/>
+		<spinner label="Prix : L$" name="Edit Cost"/>
 	</panel>
 	<panel name="button_panel">
 		<button label="Annuler" name="cancel_btn"/>
diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
index 7aadaed209549121aabfec287e6e565d4f4cbe86..6cab902ab6c5a876096b7bc23771e0aa0b6820cf 100644
--- a/indra/newview/skins/default/xui/fr/strings.xml
+++ b/indra/newview/skins/default/xui/fr/strings.xml
@@ -541,7 +541,7 @@
 		Va te faire voir !
 	</string>
 	<string name="anim_express_kiss">
-		Baiser
+		Envoyer un baiser
 	</string>
 	<string name="anim_laugh_short">
 		Rire
@@ -663,6 +663,9 @@
 	<string name="worldmap_offline">
 		Hors ligne
 	</string>
+	<string name="worldmap_item_tooltip_format">
+		[AREA] m² [PRICE] L$
+	</string>
 	<string name="worldmap_results_none_found">
 		Aucun résultat.
 	</string>
@@ -1061,6 +1064,7 @@
 	<string name="AnimFlagStop" value=" Arrêter l&apos;animation :"/>
 	<string name="AnimFlagStart" value=" Démarrer l&apos;animation :"/>
 	<string name="Wave" value=" Faire signe"/>
+	<string name="GestureActionNone" value="Aucune"/>
 	<string name="HelloAvatar" value=" Bonjour, avatar !"/>
 	<string name="ViewAllGestures" value="  Tout afficher &gt;&gt;"/>
 	<string name="GetMoreGestures" value="Plus &gt;&gt;"/>
@@ -1143,12 +1147,12 @@
 	<string name="InvFolder Favorite">
 		Favoris
 	</string>
-	<string name="InvFolder favorite">
-		Favoris
-	</string>
 	<string name="InvFolder Current Outfit">
 		Tenue actuelle
 	</string>
+	<string name="InvFolder Initial Outfits">
+		Tenues initiales
+	</string>
 	<string name="InvFolder My Outfits">
 		Mes tenues
 	</string>
@@ -1468,6 +1472,7 @@
 	<string name="SummaryForTheWeek" value="Récapitulatif de la semaine, début le "/>
 	<string name="NextStipendDay" value="Prochaine prime le "/>
 	<string name="GroupIndividualShare" value="                      Groupe    Part individuelle"/>
+	<string name="GroupColumn" value="Groupe"/>
 	<string name="Balance">
 		Solde
 	</string>
@@ -1687,6 +1692,12 @@
 	<string name="BusyModeResponseDefault">
 		Le résident auquel vous avez envoyé un message est en mode Occupé, ce qui signifie qu&apos;il a demandé à ne pas être dérangé.  Votre message restera affiché dans son panneau IM afin qu&apos;il puisse le lire ultérieurement.
 	</string>
+	<string name="NoOutfits">
+		Aucune tenue n&apos;est actuellement en votre possession. Essayez [secondlife:///app/search/all Rechercher].
+	</string>
+	<string name="NoOutfitsTabsMatched">
+		Vous n&apos;avez pas trouvé ce que vous cherchiez ? Essayez [secondlife:///app/search/all/Rechercher [SEARCH_TERM]].
+	</string>
 	<string name="MuteByName">
 		(par nom)
 	</string>
@@ -3676,6 +3687,9 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
 	<string name="group_role_owners">
 		Propriétaires
 	</string>
+	<string name="group_member_status_online">
+		En ligne
+	</string>
 	<string name="uploading_abuse_report">
 		Chargement en cours... 
 
@@ -3729,9 +3743,15 @@ de l&apos;infraction signalée
 	<string name="Invalid Wearable">
 		Objet à porter non valide
 	</string>
+	<string name="New Gesture">
+		Nouveau geste
+	</string>
 	<string name="New Script">
 		Nouveau script
 	</string>
+	<string name="New Note">
+		Nouvelle note
+	</string>
 	<string name="New Folder">
 		Nouveau dossier
 	</string>
@@ -3789,6 +3809,15 @@ de l&apos;infraction signalée
 	<string name="Male - Wow">
 		Homme - Ouah !
 	</string>
+	<string name="Female - Chuckle">
+		Femme - Glousser
+	</string>
+	<string name="Female - Cry">
+		Femme - Pleurer
+	</string>
+	<string name="Female - Embarrassed">
+		Femme - Gêne
+	</string>
 	<string name="Female - Excuse me">
 		Femme - Demander pardon
 	</string>
@@ -3807,9 +3836,21 @@ de l&apos;infraction signalée
 	<string name="Female - Hey">
 		Femme - Hé !
 	</string>
+	<string name="Female - Hey baby">
+		Femme - Hey baby
+	</string>
 	<string name="Female - Laugh">
 		Femme - Rire
 	</string>
+	<string name="Female - Looking good">
+		Femme - Looking good
+	</string>
+	<string name="Female - Over here">
+		Femme - Over here
+	</string>
+	<string name="Female - Please">
+		Femme - Please
+	</string>
 	<string name="Female - Repulsed">
 		Femme - Dégoût
 	</string>
@@ -3859,5 +3900,46 @@ de l&apos;infraction signalée
 	<string name="dateTimePM">
 		PM
 	</string>
-	<string name="LocalEstimateUSD">[AMOUNT] US$</string> 
+	<string name="LocalEstimateUSD">
+		[AMOUNT] US$
+	</string>
+	<string name="Membership">
+		Inscription
+	</string>
+	<string name="Roles">
+		Rôles
+	</string>
+	<string name="Group Identity">
+		Identité du groupe
+	</string>
+	<string name="Parcel Management">
+		Gestion des parcelles
+	</string>
+	<string name="Parcel Identity">
+		Identité des parcelles
+	</string>
+	<string name="Parcel Settings">
+		Paramètres des parcelles
+	</string>
+	<string name="Parcel Powers">
+		Pouvoirs sur les parcelles
+	</string>
+	<string name="Parcel Access">
+		Accès aux parcelles
+	</string>
+	<string name="Parcel Content">
+		Contenu des parcelles
+	</string>
+	<string name="Object Management">
+		Gestion des objets
+	</string>
+	<string name="Accounting">
+		Comptabilité
+	</string>
+	<string name="Notices">
+		Notices
+	</string>
+	<string name="Chat">
+		Chat
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/it/floater_preview_gesture.xml b/indra/newview/skins/default/xui/it/floater_preview_gesture.xml
index cc9d42b3cb521a29e70484f94024996de54be261..9c4006b4e6db23c3c3100f6ca318463ff46f40b5 100644
--- a/indra/newview/skins/default/xui/it/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/it/floater_preview_gesture.xml
@@ -42,7 +42,12 @@
 	<text name="library_label">
 		Libreria:
 	</text>
-	<scroll_list name="library_list"/>
+	<scroll_list name="library_list">
+		<scroll_list.rows name="action_animation" value="Animazione"/>
+		<scroll_list.rows name="action_sound" value="Suono"/>
+		<scroll_list.rows name="action_chat" value="Chat"/>
+		<scroll_list.rows name="action_wait" value="Attendi"/>
+	</scroll_list>
 	<button label="Aggiungi &gt;&gt;" name="add_btn"/>
 	<text name="steps_label">
 		Fasi:
diff --git a/indra/newview/skins/default/xui/it/floater_world_map.xml b/indra/newview/skins/default/xui/it/floater_world_map.xml
index a6bd4ffbaf73fa0a2688c261e9bf90e6e302867d..8da17a4034b0add755825357f5cdc50df236c66b 100644
--- a/indra/newview/skins/default/xui/it/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/it/floater_world_map.xml
@@ -19,12 +19,12 @@
 		<text name="land_sale_label">
 			Vendita terreno
 		</text>
-		<text name="by_owner_label">
-			da parte del proprietario
-		</text>
 		<text name="auction_label">
 			asta di terreni
 		</text>
+		<text name="by_owner_label">
+			da parte del proprietario
+		</text>
 		<button name="Go Home" tool_tip="Teleport a casa"/>
 		<text name="Home_label">
 			Home
@@ -35,7 +35,7 @@
 		<text name="pg_label">
 			Generale
 		</text>
-		<check_box name="events_mature_chk"/>
+		<check_box initial_value="true" name="events_mature_chk"/>
 		<text name="events_mature_label">
 			Moderato
 		</text>
@@ -58,6 +58,9 @@
 		<search_editor label="Regioni secondo il nome" name="location" tool_tip="Digita il nome di una regione"/>
 		<button label="Trova" name="DoSearch" tool_tip="Cerca la regione"/>
 		<button name="Clear" tool_tip="Elimina le linee di monitoraggio e reimposta la mappa"/>
+		<text name="events_label">
+			Luogo:
+		</text>
 		<button label="Teleport" name="Teleport" tool_tip="Teleport al luogo selezionato"/>
 		<button label="Copia SLurl" name="copy_slurl" tool_tip="Copia la posizione attuale come un SLurl da usare nel Web."/>
 		<button label="Mostra la selezione" name="Show Destination" tool_tip="Centra la mappa sul luogo selezionato"/>
diff --git a/indra/newview/skins/default/xui/it/language_settings.xml b/indra/newview/skins/default/xui/it/language_settings.xml
index 82cf789a6b3604341a5bd10692f775fbab539902..312b8e21aa91bb088b5eaca6b64e287c672bd029 100644
--- a/indra/newview/skins/default/xui/it/language_settings.xml
+++ b/indra/newview/skins/default/xui/it/language_settings.xml
@@ -17,6 +17,7 @@
 	datetimeToCodes["month"]	= "%B";		// August
 	datetimeToCodes["mthnum"]	= "%m";		// 08
 	datetimeToCodes["day"]		= "%d";		// 31
+	datetimeToCodes["sday"]		= "%-d";	// 9
 	datetimeToCodes["hour24"]	= "%H";		// 14
 	datetimeToCodes["hour"]		= "%H";		// 14
 	datetimeToCodes["hour12"]	= "%I";		// 02
diff --git a/indra/newview/skins/default/xui/it/menu_viewer.xml b/indra/newview/skins/default/xui/it/menu_viewer.xml
index f0dd035b5d61d29fbb3bf93c839194be1d4f66d8..6290b79211d1c9877430a04965b62b0703584ce2 100644
--- a/indra/newview/skins/default/xui/it/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/it/menu_viewer.xml
@@ -94,6 +94,7 @@
 			<menu_item_call label="Imposta script come non in esecuzione" name="Set Scripts to Not Running"/>
 		</menu>
 		<menu label="Opzioni" name="Options">
+			<menu_item_call label="Definisci diritti di caricamento predefiniti" name="perm prefs"/>
 			<menu_item_check label="Mostra autorizzazioni avanzate" name="DebugPermissions"/>
 			<menu_item_check label="Seleziona solo i miei oggetti" name="Select Only My Objects"/>
 			<menu_item_check label="Seleziona solo gli oggetti spostabili" name="Select Only Movable Objects"/>
@@ -111,7 +112,6 @@
 			<menu_item_call label="Suono ([COST] L$)..." name="Upload Sound"/>
 			<menu_item_call label="Animazione ([COST] L$)..." name="Upload Animation"/>
 			<menu_item_call label="In blocco ([COST] L$ per file)..." name="Bulk Upload"/>
-			<menu_item_call label="Definisci diritti di caricamento predefiniti" name="perm prefs"/>
 		</menu>
 	</menu>
 	<menu label="Aiuto" name="Help">
diff --git a/indra/newview/skins/default/xui/it/notifications.xml b/indra/newview/skins/default/xui/it/notifications.xml
index 44b8211bdb541965f71f60d4171fc93cc85694ae..474bdca55f3ed1aad46109314d7485af2975af3c 100644
--- a/indra/newview/skins/default/xui/it/notifications.xml
+++ b/indra/newview/skins/default/xui/it/notifications.xml
@@ -2749,7 +2749,7 @@ Avatar &apos;[NAME]&apos; è partito completamente caricato.
 	</notification>
 	<notification name="AvatarRezSelfBakeNotification">
 		( in esistenza da [EXISTENCE] secondi )
-Hai caricato una texture [RESOLUTION] completata per &apos;[BODYREGION]&apos; dopo [TIME] secondi.
+Effettuata l&apos;azione: [ACTION] di una texture [RESOLUTION] completata per &apos;[BODYREGION]&apos; dopo [TIME] secondi.
 	</notification>
 	<notification name="ConfirmLeaveCall">
 		Sei sicuro di volere uscire dalla chiamata?
@@ -2787,4 +2787,7 @@ Se continui ad avere problemi, visita la pagina [SUPPORT_SITE].
 		Se sei proprietario di un appezzamento di terreno, puoi definirlo come la tua posizione iniziale.
 In alternativa, puoi guardare sulla mappa e trovare luoghi segnalati come &quot;Infohub&quot;.
 	</global>
+	<global name="You died and have been teleported to your home location">
+		Sei deceduto e sei stato teleportato a casa tua.
+	</global>
 </notifications>
diff --git a/indra/newview/skins/default/xui/it/panel_group_notices.xml b/indra/newview/skins/default/xui/it/panel_group_notices.xml
index 8dd945830e298fcd3592012da792e0b5a92a7526..2e2f0dc7b0349ccbe4dd7c2127f569829ae551b9 100644
--- a/indra/newview/skins/default/xui/it/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/it/panel_group_notices.xml
@@ -19,7 +19,7 @@ Massimo 200 per gruppo al giorno
 	<text name="notice_list_none_found">
 		Nessuno trovato
 	</text>
-	<button label="Crea un nuovo avviso" label_selected="Crea una nuova notice" name="create_new_notice" tool_tip="Crea un nuovo avviso"/>
+	<button label="Nuovo avviso" label_selected="Crea una nuova notice" name="create_new_notice" tool_tip="Crea un nuovo avviso"/>
 	<button label="Aggiorna" label_selected="Aggiorna l&apos;elenco" name="refresh_notices" tool_tip="Aggiorna la lista degli avvisi"/>
 	<panel label="Crea una nuova notice" name="panel_create_new_notice">
 		<text name="lbl">
diff --git a/indra/newview/skins/default/xui/it/panel_group_roles.xml b/indra/newview/skins/default/xui/it/panel_group_roles.xml
index 1769ef748d0ea6cedf616774e90629a2b8cebd23..478b35e628c43ed23867c95ba3a4973ac5dfa9fe 100644
--- a/indra/newview/skins/default/xui/it/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/it/panel_group_roles.xml
@@ -13,6 +13,9 @@
 Seleziona più membri tenendo premuto il tasto Ctrl e 
 cliccando sui loro nomi.
 			</panel.string>
+			<panel.string name="donation_area">
+				[AREA] m²
+			</panel.string>
 			<filter_editor label="Filtra Membri" name="filter_input"/>
 			<name_list name="member_list">
 				<name_list.columns label="Socio" name="name"/>
@@ -66,21 +69,15 @@ in questo gruppo. C&apos;è una vasta gamma di abilità.
 		<text name="static">
 			Nome del ruolo
 		</text>
-		<line_editor name="role_name">
-			Addetti
-		</line_editor>
+		<line_editor name="role_name"/>
 		<text name="static3">
 			Titolo del ruolo
 		</text>
-		<line_editor name="role_title">
-			(attendi)
-		</line_editor>
+		<line_editor name="role_title"/>
 		<text name="static2">
 			Descrizione
 		</text>
-		<text_editor name="role_description">
-			(attendi)
-		</text_editor>
+		<text_editor name="role_description"/>
 		<text name="static4">
 			Ruoli assegnati
 		</text>
@@ -91,9 +88,6 @@ in questo gruppo. C&apos;è una vasta gamma di abilità.
 		<scroll_list name="role_allowed_actions" tool_tip="Per i dettagli di ogni abilità consentita vedi la scheda abilità."/>
 	</panel>
 	<panel name="actions_footer">
-		<text name="static">
-			Descrizione abilità
-		</text>
 		<text_editor name="action_description">
 			Questa abilità è &apos;Espelli i membri dal gruppo&apos;. Solo un Capogruppo puo espellere un&apos;altro Capogruppo.
 		</text_editor>
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_sound.xml b/indra/newview/skins/default/xui/it/panel_preferences_sound.xml
index 9f8a13fedc6c26a2302fbb782e3a95eb4d8946d3..2ddb226020bd64f40da11d852950030b0c99f2f5 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_sound.xml
@@ -11,8 +11,8 @@
 	<check_box label="Abilitato" name="enable_media"/>
 	<slider label="Chat vocale" name="Voice Volume"/>
 	<check_box label="Abilitato" name="enable_voice_check"/>
-	<check_box label="Consenti riproduzione multimediale automatica" name="media_auto_play_btn" tool_tip="Seleziona qui per consentire la riproduzione multimediale automatica"/>
-	<check_box label="Riproduci media in uso da altri avatar" name="media_show_on_others_btn" tool_tip="Deseleziona qui per nascondere i media in uso dagli altri avatar nei dintorni"/>
+	<check_box label="Consenti riproduzione multimediale automatica" name="media_auto_play_btn" tool_tip="Seleziona qui per consentire la riproduzione multimediale automatica" value="true"/>
+	<check_box label="Riproduci media in uso da altri avatar" name="media_show_on_others_btn" tool_tip="Deseleziona qui per nascondere i media in uso dagli altri avatar nei dintorni" value="true"/>
 	<text name="voice_chat_settings">
 		Impostazioni Chat vocale
 	</text>
@@ -28,6 +28,12 @@
 		<panel.string name="default_text">
 			Predefinito
 		</panel.string>
+		<panel.string name="default system device">
+			Dispositivo di sistema predefinito
+		</panel.string>
+		<panel.string name="no device">
+			Nessun dispositivo
+		</panel.string>
 		<text name="Input">
 			Input
 		</text>
diff --git a/indra/newview/skins/default/xui/it/panel_teleport_history.xml b/indra/newview/skins/default/xui/it/panel_teleport_history.xml
index 85f8f87e6867f9c2a2a470a7d4a1ef717634b21e..f4fa59babee576fd7991d76fc39d0e814a9d4812 100644
--- a/indra/newview/skins/default/xui/it/panel_teleport_history.xml
+++ b/indra/newview/skins/default/xui/it/panel_teleport_history.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="Teleport History">
 	<accordion name="history_accordion">
+		<no_matched_tabs_text name="no_matched_teleports_msg" value="Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/places/[SEARCH_TERM] Cerca]."/>
+		<no_visible_tabs_text name="no_teleports_msg" value="La cronologia dei teleport è vuota. Prova [secondlife:///app/search/places/ Cerca]."/>
 		<accordion_tab name="today" title="Oggi"/>
 		<accordion_tab name="yesterday" title="Ieri"/>
 		<accordion_tab name="2_days_ago" title="2 giorni fa"/>
-		5
 		<accordion_tab name="3_days_ago" title="3 giorni fa"/>
 		<accordion_tab name="4_days_ago" title="4 giorni fa"/>
 		<accordion_tab name="5_days_ago" title="5 giorni fa"/>
diff --git a/indra/newview/skins/default/xui/it/sidepanel_item_info.xml b/indra/newview/skins/default/xui/it/sidepanel_item_info.xml
index 627aeb5cb574207638eb1f220da1d0a4da49475c..6f650ea55d068f8073f7fda4a5087781a14eec5b 100644
--- a/indra/newview/skins/default/xui/it/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/it/sidepanel_item_info.xml
@@ -23,8 +23,7 @@
 	</panel.string>
 	<text name="title" value="Profilo articolo"/>
 	<text name="origin" value="(Inventario)"/>
-	<panel label=""
-           name="item_profile">
+	<panel label="" name="item_profile">
 		<text name="LabelItemNameTitle">
 			Nome:
 		</text>
diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml
index 69c84be22c10ce54b04907993de52ebb2aac359d..fb479b4653a4e847bb6324126518a503ca86ce61 100644
--- a/indra/newview/skins/default/xui/it/strings.xml
+++ b/indra/newview/skins/default/xui/it/strings.xml
@@ -651,6 +651,9 @@
 	<string name="worldmap_offline">
 		Offline
 	</string>
+	<string name="worldmap_item_tooltip_format">
+		L$ [PRICE] - [AREA] m²
+	</string>
 	<string name="worldmap_results_none_found">
 		Nessun risultato.
 	</string>
@@ -1040,6 +1043,7 @@
 	<string name="AnimFlagStop" value="Ferma l&apos;animazione :"/>
 	<string name="AnimFlagStart" value="Inizia l&apos;animazione :"/>
 	<string name="Wave" value="Saluta con la mano"/>
+	<string name="GestureActionNone" value="Nessuna"/>
 	<string name="HelloAvatar" value="Ciao, avatar!"/>
 	<string name="ViewAllGestures" value="Visualizza tutto &gt;&gt;"/>
 	<string name="GetMoreGestures" value="Altre &gt;&gt;"/>
@@ -1122,12 +1126,12 @@
 	<string name="InvFolder Favorite">
 		Preferiti
 	</string>
-	<string name="InvFolder favorite">
-		Preferiti
-	</string>
 	<string name="InvFolder Current Outfit">
 		Abbigliamento attuale
 	</string>
+	<string name="InvFolder Initial Outfits">
+		Vestiario iniziale
+	</string>
 	<string name="InvFolder My Outfits">
 		Il mio vestiario
 	</string>
@@ -1447,6 +1451,7 @@
 	<string name="SummaryForTheWeek" value="Riassunto della settimana, partendo dal"/>
 	<string name="NextStipendDay" value="Il prossimo giorno di stipendio è"/>
 	<string name="GroupIndividualShare" value="Gruppo       Dividendi individuali"/>
+	<string name="GroupColumn" value="Gruppo"/>
 	<string name="Balance">
 		Saldo
 	</string>
@@ -1660,6 +1665,12 @@
 	<string name="BusyModeResponseDefault">
 		Il residente al quale hai inviato un messaggio è in modalità &apos;occupato&apos;, ovvero ha chiesto di non essere disturbato.  Il tuo messaggio comparirà nel suo pannello IM, dove potrà essere letto in un secondo momento.
 	</string>
+	<string name="NoOutfits">
+		Non hai ancora vestiario da indossare. Prova [secondlife:///app/search/all Cerca].
+	</string>
+	<string name="NoOutfitsTabsMatched">
+		Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/all/[SEARCH_TERM] Cerca].
+	</string>
 	<string name="MuteByName">
 		(In base al nome)
 	</string>
@@ -3580,6 +3591,9 @@ Se il messaggio persiste, contatta [SUPPORT_SITE].
 	<string name="group_role_owners">
 		Proprietari
 	</string>
+	<string name="group_member_status_online">
+		Online
+	</string>
 	<string name="uploading_abuse_report">
 		Caricamento in corso...
   
@@ -3633,9 +3647,15 @@ Segnala abuso
 	<string name="Invalid Wearable">
 		Capo da indossare non valido
 	</string>
+	<string name="New Gesture">
+		Nuova gesture
+	</string>
 	<string name="New Script">
 		Nuovo script
 	</string>
+	<string name="New Note">
+		Nuovo appunto
+	</string>
 	<string name="New Folder">
 		Nuova cartella
 	</string>
@@ -3693,6 +3713,15 @@ Segnala abuso
 	<string name="Male - Wow">
 		Maschio - Accipicchia
 	</string>
+	<string name="Female - Chuckle">
+		Femmina - Risatina
+	</string>
+	<string name="Female - Cry">
+		Femmina - Pianto
+	</string>
+	<string name="Female - Embarrassed">
+		Femmina - Imbarazzata
+	</string>
 	<string name="Female - Excuse me">
 		Femmina - Chiedere scusa
 	</string>
@@ -3711,9 +3740,21 @@ Segnala abuso
 	<string name="Female - Hey">
 		Femmina - Ehi
 	</string>
+	<string name="Female - Hey baby">
+		Femmina - Ehi tu
+	</string>
 	<string name="Female - Laugh">
 		Femmina - Ridere
 	</string>
+	<string name="Female - Looking good">
+		Femmina - Sei in forma
+	</string>
+	<string name="Female - Over here">
+		Femmina - Per di qua
+	</string>
+	<string name="Female - Please">
+		Femmina - Per cortesia
+	</string>
 	<string name="Female - Repulsed">
 		Femmina - Disgustata
 	</string>
@@ -3763,4 +3804,46 @@ Segnala abuso
 	<string name="dateTimePM">
 		pomeridiane
 	</string>
+	<string name="LocalEstimateUSD">
+		US$ [AMOUNT]
+	</string>
+	<string name="Membership">
+		Abbonamento
+	</string>
+	<string name="Roles">
+		Ruoli
+	</string>
+	<string name="Group Identity">
+		Identità gruppo
+	</string>
+	<string name="Parcel Management">
+		Gestione lotto
+	</string>
+	<string name="Parcel Identity">
+		Identità lotto
+	</string>
+	<string name="Parcel Settings">
+		Impostazioni lotto
+	</string>
+	<string name="Parcel Powers">
+		Poteri lotto
+	</string>
+	<string name="Parcel Access">
+		Accesso al lotto
+	</string>
+	<string name="Parcel Content">
+		Contenuto lotto
+	</string>
+	<string name="Object Management">
+		Gestione oggetti
+	</string>
+	<string name="Accounting">
+		Contabilità
+	</string>
+	<string name="Notices">
+		Avvisi
+	</string>
+	<string name="Chat">
+		Chat
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml b/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml
index 88e67862c8e6bca38d63fb0e31c39ae75f1a21fd..59ce36b022b8cc64cc4582f8c2a0b1bae6ba5e43 100644
--- a/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml
@@ -42,7 +42,12 @@
 	<text name="library_label">
 		ライブラリ:
 	</text>
-	<scroll_list name="library_list"/>
+	<scroll_list name="library_list">
+		<scroll_list.rows name="action_animation" value="アニメーション"/>
+		<scroll_list.rows name="action_sound" value="サウンド"/>
+		<scroll_list.rows name="action_chat" value="チャット"/>
+		<scroll_list.rows name="action_wait" value="å¾…æ©Ÿ"/>
+	</scroll_list>
 	<button label="追加>>" name="add_btn"/>
 	<text name="steps_label">
 		手順:
diff --git a/indra/newview/skins/default/xui/ja/floater_world_map.xml b/indra/newview/skins/default/xui/ja/floater_world_map.xml
index 62670251d6ef6c3959c097ca163b83ae24c5cd9c..cc07596adca089cd2f22d0aeb163c84967de84d0 100644
--- a/indra/newview/skins/default/xui/ja/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/ja/floater_world_map.xml
@@ -22,12 +22,12 @@
 		<text name="land_sale_label">
 			土地販売
 		</text>
-		<text name="by_owner_label">
-			所有者の販売
-		</text>
 		<text name="auction_label">
 			土地オークション
 		</text>
+		<text name="by_owner_label">
+			所有者の販売
+		</text>
 		<button label="ホームへ" label_selected="ホームへ" name="Go Home" tool_tip="「ホーム」にテレポートします"/>
 		<text name="Home_label">
 			ホーム
@@ -67,6 +67,9 @@
 			<scroll_list.columns label="" name="icon"/>
 			<scroll_list.columns label="" name="sim_name"/>
 		</scroll_list>
+		<text name="events_label">
+			場所:
+		</text>
 		<button label="テレポート" label_selected="テレポート" name="Teleport" tool_tip="選択した場所にテレポートします"/>
 		<button label="SLurl をコピー" name="copy_slurl" tool_tip="現在地の SLurl をコピーして Web で使用します"/>
 		<button label="選択を表示する" label_selected="目的地を表示" name="Show Destination" tool_tip="選択した場所を地図の中心に表示します"/>
diff --git a/indra/newview/skins/default/xui/ja/language_settings.xml b/indra/newview/skins/default/xui/ja/language_settings.xml
index 72382417d9cd79168192a8e2882c2fddf50ab2f4..a6023f9b56d8284f05cb100d24954783ea3d3bec 100644
--- a/indra/newview/skins/default/xui/ja/language_settings.xml
+++ b/indra/newview/skins/default/xui/ja/language_settings.xml
@@ -17,6 +17,7 @@
 	datetimeToCodes["month"]	= "%B";		// August
 	datetimeToCodes["mthnum"]	= "%m";		// 08
 	datetimeToCodes["day"]		= "%d";		// 31
+	datetimeToCodes["sday"]		= "%-d";	// 9
 	datetimeToCodes["hour24"]	= "%H";		// 14
 	datetimeToCodes["hour"]		= "%H";		// 14
 	datetimeToCodes["hour12"]	= "%I";		// 02
diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml
index 164341ad2fcf8dbf4bde476765c96f9768a756ec..f6476857d25a40471e242b1ce92cf67019111aa9 100644
--- a/indra/newview/skins/default/xui/ja/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml
@@ -94,6 +94,7 @@
 			<menu_item_call label="スクリプトを実行停止にする" name="Set Scripts to Not Running"/>
 		</menu>
 		<menu label="オプション" name="Options">
+			<menu_item_call label="デフォルトのアップロード権限を設定" name="perm prefs"/>
 			<menu_item_check label="権限の詳細を表示する" name="DebugPermissions"/>
 			<menu_item_check label="私のオブジェクトだけを選択する" name="Select Only My Objects"/>
 			<menu_item_check label="動的オブジェクトだけを選択する" name="Select Only Movable Objects"/>
@@ -111,7 +112,6 @@
 			<menu_item_call label="サウンド(L$[COST])..." name="Upload Sound"/>
 			<menu_item_call label="アニメーション(L$[COST])..." name="Upload Animation"/>
 			<menu_item_call label="一括 (ファイルにつきL$[COST])..." name="Bulk Upload"/>
-			<menu_item_call label="デフォルトのアップロード権限を設定" name="perm prefs"/>
 		</menu>
 	</menu>
 	<menu label="ヘルプ" name="Help">
diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml
index 8fceaa28176b29482cdc8a4b28512f9ff2b0526d..709797cb58e3f1de848f9fbbc1aaa5ada6c036ae 100644
--- a/indra/newview/skins/default/xui/ja/notifications.xml
+++ b/indra/newview/skins/default/xui/ja/notifications.xml
@@ -2800,8 +2800,8 @@ M キーを押して変更します。
 アバター「 NAME 」が完全に読み込まれました。
 	</notification>
 	<notification name="AvatarRezSelfBakeNotification">
-		(作成後[EXISTENCE]秒経過)
-&apos;[BODYREGION]&apos;の[RESOLUTION]のベークドテクスチャは[TIME]秒後にアップロードされました。
+		( 作成後[EXISTENCE]秒経過)
+&apos;[BODYREGION]&apos; の[RESOLUTION]のベークドテクスチャは[TIME]秒後に[ACTION]されました。
 	</notification>
 	<notification name="ConfirmLeaveCall">
 		このコールから抜けますか?
@@ -2839,4 +2839,7 @@ M キーを押して変更します。
 		自分の土地をお持ちの場合、「ホーム」に設定できます。
 お持ちでない場合は、地図で「インフォハブ」をお探しください。
 	</global>
+	<global name="You died and have been teleported to your home location">
+		死んでしまったので、ホームにテレポートされました。
+	</global>
 </notifications>
diff --git a/indra/newview/skins/default/xui/ja/panel_group_notices.xml b/indra/newview/skins/default/xui/ja/panel_group_notices.xml
index 0b508bd79d32a59faa992292f347f277954b2da6..96e038297554dc76f92afcdead0de681a228e983 100644
--- a/indra/newview/skins/default/xui/ja/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/ja/panel_group_notices.xml
@@ -21,7 +21,7 @@
 	<text name="notice_list_none_found">
 		見つかりませんでした
 	</text>
-	<button label="新しい通知を作成" label_selected="新しい通知を作成" name="create_new_notice" tool_tip="新しい通知を作成します"/>
+	<button label="新しい通知" label_selected="新しい通知を作成" name="create_new_notice" tool_tip="新しい通知を作成します"/>
 	<button label="更新" label_selected="リスト更新" name="refresh_notices" tool_tip="通知リストを更新します"/>
 	<panel label="新しい通知を作成" name="panel_create_new_notice">
 		<text name="lbl">
diff --git a/indra/newview/skins/default/xui/ja/panel_group_roles.xml b/indra/newview/skins/default/xui/ja/panel_group_roles.xml
index 8a629be910a3fb1f93fbd9c2a46b747948508138..be203b07615d1fff49db6b9bfdcbc276e5826bd4 100644
--- a/indra/newview/skins/default/xui/ja/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/ja/panel_group_roles.xml
@@ -13,6 +13,9 @@
 Ctrl キーを押しながらメンバー名をクリックすると
 複数の人を選択できます。
 			</panel.string>
+			<panel.string name="donation_area">
+				[AREA] 平方メートル
+			</panel.string>
 			<filter_editor label="メンバーを選別" name="filter_input"/>
 			<name_list name="member_list">
 				<name_list.columns label="メンバー" name="name"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml b/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml
index abbd29286b10ce49fa8c8007fcb4e181c577e31c..4f29ae7b44952f642bb071ce8c6ba3117e4f1766 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml
@@ -28,6 +28,12 @@
 		<panel.string name="default_text">
 			デフォルト
 		</panel.string>
+		<panel.string name="default system device">
+			デフォルトのシステム機器
+		</panel.string>
+		<panel.string name="no device">
+			機器が設定されていません
+		</panel.string>
 		<text name="Input">
 			入力
 		</text>
diff --git a/indra/newview/skins/default/xui/ja/panel_teleport_history.xml b/indra/newview/skins/default/xui/ja/panel_teleport_history.xml
index c1bf81f7e7900a8b4c442db8c7151b264bb78fee..58e396877c876323db3d71465ba7109754b0f36b 100644
--- a/indra/newview/skins/default/xui/ja/panel_teleport_history.xml
+++ b/indra/newview/skins/default/xui/ja/panel_teleport_history.xml
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="Teleport History">
 	<accordion name="history_accordion">
+		<no_matched_tabs_text name="no_matched_teleports_msg" value="お探しのものは見つかりましたか?[secondlife:///app/search/places/[SEARCH_TERM]をお試しください。"/>
+		<no_visible_tabs_text name="no_teleports_msg" value="テレポートの履歴には何も情報がありません。[secondlife:///app/search/places/ Search]をお試しください。"/>
 		<accordion_tab name="today" title="今日"/>
 		<accordion_tab name="yesterday" title="昨日"/>
 		<accordion_tab name="2_days_ago" title="2日前"/>
diff --git a/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml b/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml
index 414eba05091b03930b56d6f972ca2a8d7ce1ffc4..519b69799b4d1cc4b744a70c6f5c534438cb5ab1 100644
--- a/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml
@@ -23,8 +23,7 @@
 	</panel.string>
 	<text name="title" value="アイテムのプロフィール"/>
 	<text name="origin" value="(持ち物)"/>
-	<panel label=""
-           name="item_profile">
+	<panel label="" name="item_profile">
 		<text name="LabelItemNameTitle">
 			名前:
 		</text>
@@ -59,20 +58,20 @@
 			<text name="GroupLabel">
 				グループ:
 			</text>
-			<check_box label="共有" name="CheckShareWithGroup" tool_tip="設定したグループのメンバー全員にこのオブジェクトの修正権限を与えます。 譲渡しない限り、役割制限を有効にはできません。"/>
+			<check_box label="共有" name="CheckShareWithGroup" tool_tip="設定したグループのメンバー全員にこのオブジェクトの修正権限を与えます。譲渡しない限り、役割制限を有効にはできません。"/>
 			<text name="NextOwnerLabel">
 				次の所有者:
 			</text>
 			<check_box label="修正" name="CheckNextOwnerModify"/>
 			<check_box label="コピー" name="CheckNextOwnerCopy"/>
-			<check_box label="再販・プレゼント" name="CheckNextOwnerTransfer" tool_tip="次の所有者はこのオブジェクトを他人にあげたり再販することができます"/>
+			<check_box label="再販・プレゼント" name="CheckNextOwnerTransfer" tool_tip="次の所有者はこのオブジェクトを他人にあげたり再販できます"/>
 		</panel>
-		<check_box label="販売する" name="CheckPurchase"/>
+		<check_box label="販売中" name="CheckPurchase"/>
 		<combo_box name="combobox sale copy">
 			<combo_box.item label="コピー" name="Copy"/>
 			<combo_box.item label="オリジナル" name="Original"/>
 		</combo_box>
-		<spinner label="価格: L$" name="Edit Cost"/>
+		<spinner label="価格:L$" name="Edit Cost"/>
 	</panel>
 	<panel name="button_panel">
 		<button label="キャンセル" name="cancel_btn"/>
diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml
index 350a98aaf03e68abf882bf77a4fe1e517055e3ad..b68b68a4f85b33232de4d9b4be7393a95495a5ca 100644
--- a/indra/newview/skins/default/xui/ja/strings.xml
+++ b/indra/newview/skins/default/xui/ja/strings.xml
@@ -663,6 +663,9 @@
 	<string name="worldmap_offline">
 		オフライン
 	</string>
+	<string name="worldmap_item_tooltip_format">
+		[AREA] 平方メートル L$[PRICE]
+	</string>
 	<string name="worldmap_results_none_found">
 		見つかりませんでした。
 	</string>
@@ -1061,6 +1064,7 @@
 	<string name="AnimFlagStop" value=" アニメーションを停止:"/>
 	<string name="AnimFlagStart" value=" アニメーションを開始:"/>
 	<string name="Wave" value=" 手を振る"/>
+	<string name="GestureActionNone" value="なし"/>
 	<string name="HelloAvatar" value=" やあ、アバター!"/>
 	<string name="ViewAllGestures" value="  すべて表示 &gt;&gt;"/>
 	<string name="GetMoreGestures" value="ショッピング &gt;&gt;"/>
@@ -1143,12 +1147,12 @@
 	<string name="InvFolder Favorite">
 		お気に入り
 	</string>
-	<string name="InvFolder favorite">
-		お気に入り
-	</string>
 	<string name="InvFolder Current Outfit">
 		着用中のアウトフィット
 	</string>
+	<string name="InvFolder Initial Outfits">
+		最初のアウトフィット
+	</string>
 	<string name="InvFolder My Outfits">
 		マイ アウトフィット
 	</string>
@@ -1468,6 +1472,7 @@
 	<string name="SummaryForTheWeek" value="今週のまとめ。開始日は"/>
 	<string name="NextStipendDay" value="です。次回のお小遣い支給日:"/>
 	<string name="GroupIndividualShare" value="                      グループ       個人の割り当て"/>
+	<string name="GroupColumn" value="グループの設定"/>
 	<string name="Balance">
 		残高
 	</string>
@@ -1687,6 +1692,12 @@
 	<string name="BusyModeResponseDefault">
 		メッセージを送った住人は、誰にも邪魔をされたくないため現在「取り込み中」モードです。  あなたのメッセージは、あとで確認できるように IM パネルに表示されます。
 	</string>
+	<string name="NoOutfits">
+		アウトフィットがまだありません。[secondlife:///app/search/all/ Search]をお試しください
+	</string>
+	<string name="NoOutfitsTabsMatched">
+		お探しのものは見つかりましたか?[secondlife:///app/search/all/[SEARCH_TERM]をお試しください。
+	</string>
 	<string name="MuteByName">
 		(名称別)
 	</string>
@@ -3676,6 +3687,9 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="group_role_owners">
 		オーナー
 	</string>
+	<string name="group_member_status_online">
+		オンライン
+	</string>
 	<string name="uploading_abuse_report">
 		アップロード中...
   
@@ -3729,9 +3743,15 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="Invalid Wearable">
 		無効な着用物
 	</string>
+	<string name="New Gesture">
+		ジェスチャー
+	</string>
 	<string name="New Script">
 		新規スクリプト
 	</string>
+	<string name="New Note">
+		ノート
+	</string>
 	<string name="New Folder">
 		新規フォルダ
 	</string>
@@ -3789,6 +3809,15 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="Male - Wow">
 		男性 - Wow
 	</string>
+	<string name="Female - Chuckle">
+		女性 – クスクス
+	</string>
+	<string name="Female - Cry">
+		女性 – 泣く
+	</string>
+	<string name="Female - Embarrassed">
+		女性 – 恥ずかしい
+	</string>
 	<string name="Female - Excuse me">
 		女性 – すみません
 	</string>
@@ -3807,9 +3836,21 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="Female - Hey">
 		女性 - Hey
 	</string>
+	<string name="Female - Hey baby">
+		女性 – ヘイ、ベィビー!
+	</string>
 	<string name="Female - Laugh">
 		女性 - 笑う
 	</string>
+	<string name="Female - Looking good">
+		女性 – いい感じ
+	</string>
+	<string name="Female - Over here">
+		女性 – こっちよ
+	</string>
+	<string name="Female - Please">
+		女性 – プリーズ
+	</string>
 	<string name="Female - Repulsed">
 		女性 - 拒絶
 	</string>
@@ -3859,4 +3900,46 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="dateTimePM">
 		PM
 	</string>
+	<string name="LocalEstimateUSD">
+		US$ [AMOUNT]
+	</string>
+	<string name="Membership">
+		会員
+	</string>
+	<string name="Roles">
+		役割
+	</string>
+	<string name="Group Identity">
+		グループの識別情報
+	</string>
+	<string name="Parcel Management">
+		区画の管理
+	</string>
+	<string name="Parcel Identity">
+		区画の識別情報
+	</string>
+	<string name="Parcel Settings">
+		区画の設定
+	</string>
+	<string name="Parcel Powers">
+		区画の権限
+	</string>
+	<string name="Parcel Access">
+		区画へのアクセス
+	</string>
+	<string name="Parcel Content">
+		区画のコンテンツ
+	</string>
+	<string name="Object Management">
+		オブジェクトの管理
+	</string>
+	<string name="Accounting">
+		会計
+	</string>
+	<string name="Notices">
+		通知
+	</string>
+	<string name="Chat">
+		チャット
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/nl/language_settings.xml b/indra/newview/skins/default/xui/nl/language_settings.xml
index dc4663705fb44fdab83f6e3f47877c1ff8f881dd..53501d5dcb57849df6a1a42f65fa249c76227407 100644
--- a/indra/newview/skins/default/xui/nl/language_settings.xml
+++ b/indra/newview/skins/default/xui/nl/language_settings.xml
@@ -17,6 +17,7 @@
 	datetimeToCodes["month"]	= "%B";		// August
 	datetimeToCodes["mthnum"]	= "%m";		// 08
 	datetimeToCodes["day"]		= "%d";		// 31
+	datetimeToCodes["sday"]		= "%-d";	// 9
 	datetimeToCodes["hour24"]	= "%H";		// 14
 	datetimeToCodes["hour"]		= "%H";		// 14
 	datetimeToCodes["hour12"]	= "%I";		// 02
diff --git a/indra/newview/skins/default/xui/pl/language_settings.xml b/indra/newview/skins/default/xui/pl/language_settings.xml
index debc451a338beee6b159e58ec5867a72af30345e..681b38e9cf6d5c0b2cdc8b8a75db616f5affa9c9 100644
--- a/indra/newview/skins/default/xui/pl/language_settings.xml
+++ b/indra/newview/skins/default/xui/pl/language_settings.xml
@@ -17,6 +17,7 @@
 	datetimeToCodes["month"]	= "%B";		// August
 	datetimeToCodes["mthnum"]	= "%m";		// 08
 	datetimeToCodes["day"]		= "%d";		// 31
+	datetimeToCodes["sday"]		= "%-d";	// 9
 	datetimeToCodes["hour24"]	= "%H";		// 14
 	datetimeToCodes["hour"]		= "%H";		// 14
 	datetimeToCodes["hour12"]	= "%I";		// 02
diff --git a/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml b/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml
index a01bee94a123d8de8913b2977a8777cd68fd74de..80bdbb0fb40ae0bab4d8f0fa10b329dc793cc38e 100644
--- a/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml
@@ -42,7 +42,12 @@
 	<text name="library_label">
 		Biblioteca:
 	</text>
-	<scroll_list name="library_list" width="84"/>
+	<scroll_list name="library_list" width="84">
+		<scroll_list.rows name="action_animation" value="Animação"/>
+		<scroll_list.rows name="action_sound" value="Som"/>
+		<scroll_list.rows name="action_chat" value="Bate-papo"/>
+		<scroll_list.rows name="action_wait" value="Espere"/>
+	</scroll_list>
 	<button label="Incluir" left="118" name="add_btn" width="87"/>
 	<text name="steps_label">
 		Passos:
diff --git a/indra/newview/skins/default/xui/pt/floater_world_map.xml b/indra/newview/skins/default/xui/pt/floater_world_map.xml
index 77d0c787e753b8fa4e6af1a727585c4eec94d58e..490a975e8076450da5044d6d671595f89dd46897 100644
--- a/indra/newview/skins/default/xui/pt/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/pt/floater_world_map.xml
@@ -6,7 +6,7 @@
 		</text>
 	</panel>
 	<panel name="layout_panel_2">
-		<button font="SansSerifSmall" label="Mostra minha localização" label_selected="Mostra minha localização" left_delta="91" name="Show My Location" tool_tip="Centrar o mapa na localização do meu avatar" />
+		<button font="SansSerifSmall" label="Mostra minha localização" label_selected="Mostra minha localização" left_delta="91" name="Show My Location" tool_tip="Centrar o mapa na localização do meu avatar"/>
 		<text name="me_label">
 			Eu
 		</text>
@@ -22,12 +22,12 @@
 		<text name="land_sale_label">
 			Terreno à venda
 		</text>
-		<text name="by_owner_label">
-			pelo dono
-		</text>
 		<text name="auction_label">
 			leilão
 		</text>
+		<text name="by_owner_label">
+			pelo dono
+		</text>
 		<button label="Voltar ao meu início" label_selected="Voltar ao meu início" name="Go Home" tool_tip="Teletransportar para meu início"/>
 		<text name="Home_label">
 			Início
@@ -39,7 +39,7 @@
 		<text name="pg_label">
 			Geral
 		</text>
-		<check_box label="Mature" name="events_mature_chk"/>
+		<check_box initial_value="true" label="Mature" name="events_mature_chk"/>
 		<text name="events_mature_label">
 			Moderado
 		</text>
@@ -63,6 +63,9 @@
 		<search_editor label="Regiões por nome" name="location" tool_tip="Digite o nome da região"/>
 		<button label="Buscar" name="DoSearch" tool_tip="Buscar região"/>
 		<button name="Clear" tool_tip="Limpar linhas e redefinir mapa"/>
+		<text name="events_label">
+			Local:
+		</text>
 		<button font="SansSerifSmall" label="Teletransportar" label_selected="Teletransporte" name="Teleport" tool_tip="Teletransportar para o lugar selecionado"/>
 		<button font="SansSerifSmall" label="Copiar SLurl" name="copy_slurl" tool_tip="Copia a localização atual como um SLurl para usar na web."/>
 		<button font="SansSerifSmall" label="Mostrar seleção" label_selected="Mostrar Destino" left_delta="91" name="Show Destination" tool_tip="Centrar mapa no local selecionado" width="135"/>
diff --git a/indra/newview/skins/default/xui/pt/language_settings.xml b/indra/newview/skins/default/xui/pt/language_settings.xml
index f25e77574d24c1c41b9e60352c334508aa7fdcb2..e1de6ffea76f7a79094dd5e88fd659c3c4f6ce48 100644
--- a/indra/newview/skins/default/xui/pt/language_settings.xml
+++ b/indra/newview/skins/default/xui/pt/language_settings.xml
@@ -17,6 +17,7 @@
 	datetimeToCodes["month"]	= "%B";		// August
 	datetimeToCodes["mthnum"]	= "%m";		// 08
 	datetimeToCodes["day"]		= "%d";		// 31
+	datetimeToCodes["sday"]		= "%-d";	// 9
 	datetimeToCodes["hour24"]	= "%H";		// 14
 	datetimeToCodes["hour"]		= "%H";		// 14
 	datetimeToCodes["hour12"]	= "%I";		// 02
diff --git a/indra/newview/skins/default/xui/pt/menu_viewer.xml b/indra/newview/skins/default/xui/pt/menu_viewer.xml
index d5e08080005a4df91f569d56f6fa4f9653f0d611..33fccbedcce7bd75bd4d96a02313f64cf41a5ad6 100644
--- a/indra/newview/skins/default/xui/pt/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/pt/menu_viewer.xml
@@ -94,6 +94,7 @@
 			<menu_item_call label="Scripts em modo não execução" name="Set Scripts to Not Running"/>
 		</menu>
 		<menu label="Opções" name="Options">
+			<menu_item_call label="Autorizações de upload padrão" name="perm prefs"/>
 			<menu_item_check label="Mostrar permissões avançadas" name="DebugPermissions"/>
 			<menu_item_check label="Só selecionar meus objetos" name="Select Only My Objects"/>
 			<menu_item_check label="Só selecionar objetos móveis" name="Select Only Movable Objects"/>
@@ -111,7 +112,6 @@
 			<menu_item_call label="Som (L$[COST])..." name="Upload Sound"/>
 			<menu_item_call label="Animação (L$[COST])..." name="Upload Animation"/>
 			<menu_item_call label="Volume (L$[COST] por arquivo)..." name="Bulk Upload"/>
-			<menu_item_call label="Autorizações de upload padrão" name="perm prefs"/>
 		</menu>
 	</menu>
 	<menu label="Ajuda" name="Help">
diff --git a/indra/newview/skins/default/xui/pt/notifications.xml b/indra/newview/skins/default/xui/pt/notifications.xml
index 2a1b5f995a9581807f76807d44bfc3f2547d5a8a..a6645d8b134dc1f10c0c367c0e614c000975f765 100644
--- a/indra/newview/skins/default/xui/pt/notifications.xml
+++ b/indra/newview/skins/default/xui/pt/notifications.xml
@@ -356,7 +356,7 @@ Tem certeza de que quer prosseguir?
 		<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Apagar"/>
 	</notification>
 	<notification name="DeleteOutfits">
-		Excluir o look selecionado?
+		Excluir look(s) selecionado(s)?
 		<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
 	</notification>
 	<notification name="PromptGoToEventsPage">
@@ -2729,7 +2729,7 @@ Avatar &apos;[NAME]&apos; saiu totalmente carregado.
 	</notification>
 	<notification name="AvatarRezSelfBakeNotification">
 		( [EXISTENCE] segundos de vida )
-Você carregou uma textura com [RESOLUTION] para o(a) &apos;[BODYREGION]&apos; em [TIME] segundos.
+[ACTION] de textura com [RESOLUTION] para o(a) &apos;[BODYREGION]&apos; em [TIME] segundos.
 	</notification>
 	<notification name="ConfirmLeaveCall">
 		Tem certeza de que quer sair desta ligação?
@@ -2767,4 +2767,7 @@ Se você continuar a receber esta mensagem, consulte o [SUPPORT_SITE].
 		Se você tem um terreno, seu terreno pode ser seu início. 
 Outra opção é procurar por lugares com a tag &apos;Infohub&apos; no mapa.
 	</global>
+	<global name="You died and have been teleported to your home location">
+		Você morreu e foi reenviado ao seu início.
+	</global>
 </notifications>
diff --git a/indra/newview/skins/default/xui/pt/panel_group_notices.xml b/indra/newview/skins/default/xui/pt/panel_group_notices.xml
index 9ccb85cdf62a97dfd4f6a488793675e0f44a9bca..21136d06fb8e7f9366055849480bfaf9418eb5f1 100644
--- a/indra/newview/skins/default/xui/pt/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/pt/panel_group_notices.xml
@@ -18,7 +18,7 @@ Cada grupo pode enviar no máximo 200 avisos/dia
 	<text name="notice_list_none_found">
 		Nenhum resultado foi encontrado.
 	</text>
-	<button label="Criar um novo aviso" label_selected="Criar nova notícia" name="create_new_notice" tool_tip="Criar um novo aviso"/>
+	<button label="Novo aviso" label_selected="Criar nova notícia" name="create_new_notice" tool_tip="Criar um novo aviso"/>
 	<button label="Atualizar" label_selected="Atualizar lista" name="refresh_notices" tool_tip="Atualizar lista de avisos"/>
 	<panel label="Criar nova notícia" name="panel_create_new_notice">
 		<text name="lbl">
diff --git a/indra/newview/skins/default/xui/pt/panel_group_roles.xml b/indra/newview/skins/default/xui/pt/panel_group_roles.xml
index 9c3792ec433403ef2c493e98457381e36697de35..c861e296240a100465b1e71c1e8c0ff809923a74 100644
--- a/indra/newview/skins/default/xui/pt/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/pt/panel_group_roles.xml
@@ -11,6 +11,9 @@
 			<panel.string name="help_text">
 				Você pode adicionar ou remover as funções designadas aos membros. Selecione vários membros, segurando a tecla Ctrl e clicando em seus nomes.
 			</panel.string>
+			<panel.string name="donation_area">
+				[AREA] m²
+			</panel.string>
 			<filter_editor label="Filtrar por membro" name="filter_input"/>
 			<name_list bottom_delta="-105" height="104" name="member_list">
 				<name_list.columns label="Membro" name="name"/>
@@ -63,21 +66,15 @@ Há uma grande variedade de habilidades.
 		<text name="static">
 			Nome da função
 		</text>
-		<line_editor name="role_name">
-			Empregados
-		</line_editor>
+		<line_editor name="role_name"/>
 		<text name="static3">
 			Título da função
 		</text>
-		<line_editor name="role_title">
-			(esperando)
-		</line_editor>
+		<line_editor name="role_title"/>
 		<text name="static2">
 			Descrição
 		</text>
-		<text_editor name="role_description">
-			(esperando)
-		</text_editor>
+		<text_editor name="role_description"/>
 		<text name="static4">
 			Cargos desempenhados
 		</text>
@@ -88,9 +85,6 @@ Há uma grande variedade de habilidades.
 		<scroll_list name="role_allowed_actions" tool_tip="Clique na guia Funções para ver mais detalhes"/>
 	</panel>
 	<panel name="actions_footer">
-		<text name="static">
-			Descrição da função
-		</text>
 		<text_editor name="action_description">
 			Essa habilidade permite tirar alguem do grupo. Somente o dono do grupo poderá retirar outro dono do grupo.
 		</text_editor>
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml b/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml
index 43c970841a8522813b0f2bc906faaf125a3ea83b..5be07f4d1f9abe710b2fcffa3234470a92f59b35 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml
@@ -11,8 +11,8 @@
 	<check_box label="Ativado" name="enable_media"/>
 	<slider label="Bate-papo de voz" name="Voice Volume"/>
 	<check_box label="Ativado" name="enable_voice_check"/>
-	<check_box label="Autorizar auto-play de mídias" name="media_auto_play_btn" tool_tip="Marque esta opção para auto-executar mídias, se elas quiserem"/>
-	<check_box label="Tocar mídia anexada em outros avatares" name="media_show_on_others_btn" tool_tip="Desmarque esta opção para ocultar mídias anexadas em avatares por perto"/>
+	<check_box label="Autorizar auto-play de mídias" name="media_auto_play_btn" tool_tip="Marque esta opção para auto-executar mídias, se elas quiserem" value="true"/>
+	<check_box label="Tocar mídia anexada em outros avatares" name="media_show_on_others_btn" tool_tip="Desmarque esta opção para ocultar mídias anexadas em avatares por perto" value="true"/>
 	<text name="voice_chat_settings">
 		Configuração de bate-papo de voz
 	</text>
@@ -28,6 +28,12 @@
 		<panel.string name="default_text">
 			Padrão
 		</panel.string>
+		<panel.string name="default system device">
+			Dispositivo padrão do sistema
+		</panel.string>
+		<panel.string name="no device">
+			Nenhum
+		</panel.string>
 		<text name="Input">
 			Entrada
 		</text>
diff --git a/indra/newview/skins/default/xui/pt/panel_teleport_history.xml b/indra/newview/skins/default/xui/pt/panel_teleport_history.xml
index ba83fee7ba3267d43e08c6694dd6f3ad8dbc2e9d..b77064a1ff9784ebfb9f9681c2a6b8ce25ee2b4a 100644
--- a/indra/newview/skins/default/xui/pt/panel_teleport_history.xml
+++ b/indra/newview/skins/default/xui/pt/panel_teleport_history.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="Teleport History">
 	<accordion name="history_accordion">
+		<no_matched_tabs_text name="no_matched_teleports_msg" value="Não encontrou o que procura? Tente fazer uma [secondlife:///app/search/groups/[SEARCH_TERM] Busca]."/>
+		<no_visible_tabs_text name="no_teleports_msg" value="Histórico de teletransportes vazio. Tente fazer uma [secondlife:///app/search/groups Busca]."/>
 		<accordion_tab name="today" title="Hoje"/>
 		<accordion_tab name="yesterday" title="Ontem"/>
 		<accordion_tab name="2_days_ago" title="2 dias atrás"/>
-		5
 		<accordion_tab name="3_days_ago" title="3 dias atrás"/>
 		<accordion_tab name="4_days_ago" title="4 dias atrás"/>
 		<accordion_tab name="5_days_ago" title="5 dias atrás"/>
diff --git a/indra/newview/skins/default/xui/pt/sidepanel_item_info.xml b/indra/newview/skins/default/xui/pt/sidepanel_item_info.xml
index d2050f46600c7e2f45ab7cd322a0c2f9e799b526..5af3a73d3d3061a521c31d57c51532b7d38bbf2f 100644
--- a/indra/newview/skins/default/xui/pt/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/pt/sidepanel_item_info.xml
@@ -23,8 +23,7 @@
 	</panel.string>
 	<text name="title" value="Perfil do item"/>
 	<text name="origin" value="(Inventário)"/>
-	<panel label=""
-           name="item_profile">
+	<panel label="" name="item_profile">
 		<text name="LabelItemNameTitle">
 			Nome:
 		</text>
diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml
index f0a4a4e2a6e5975aeaa773603c0950f2b3f8ccec..4bf2bda248f2c39bbcc2b99630a18f31bfac22b8 100644
--- a/indra/newview/skins/default/xui/pt/strings.xml
+++ b/indra/newview/skins/default/xui/pt/strings.xml
@@ -645,6 +645,9 @@
 	<string name="worldmap_offline">
 		Offline
 	</string>
+	<string name="worldmap_item_tooltip_format">
+		L$[PRICE] por [AREA] m²
+	</string>
 	<string name="worldmap_results_none_found">
 		Nenhum encontrado.
 	</string>
@@ -1034,6 +1037,7 @@
 	<string name="AnimFlagStop" value="Parar animação"/>
 	<string name="AnimFlagStart" value="Iniciar animação"/>
 	<string name="Wave" value="Acenar"/>
+	<string name="GestureActionNone" value="Nenhum"/>
 	<string name="HelloAvatar" value="Olá, avatar!"/>
 	<string name="ViewAllGestures" value="Ver todos&gt;&gt;"/>
 	<string name="GetMoreGestures" value="Mais &gt;&gt;"/>
@@ -1116,12 +1120,12 @@
 	<string name="InvFolder Favorite">
 		Favoritos
 	</string>
-	<string name="InvFolder favorite">
-		Favoritos
-	</string>
 	<string name="InvFolder Current Outfit">
 		Look atual
 	</string>
+	<string name="InvFolder Initial Outfits">
+		Looks iniciais
+	</string>
 	<string name="InvFolder My Outfits">
 		Meus looks
 	</string>
@@ -1441,6 +1445,7 @@
 	<string name="SummaryForTheWeek" value="Resumo para esta semana, com início em"/>
 	<string name="NextStipendDay" value="Próximo dia de salário é"/>
 	<string name="GroupIndividualShare" value="Grupo       Divisão individualI"/>
+	<string name="GroupColumn" value="Grupo"/>
 	<string name="Balance">
 		Balanço
 	</string>
@@ -1654,6 +1659,12 @@
 	<string name="BusyModeResponseDefault">
 		O residente para o qual escreveu está no modo &apos;ocupado&apos;, ou seja, ele prefere não receber nada no momento. Sua mensagem será exibida como uma MI mais tarde.
 	</string>
+	<string name="NoOutfits">
+		Você ainda não tem nenhum look. Tente encontrar um na [secondlife:///app/search/groups Busca].
+	</string>
+	<string name="NoOutfitsTabsMatched">
+		Não encontrou o que procura? Tente fazer uma [secondlife:///app/search/people/[SEARCH_TERM] Busca].
+	</string>
 	<string name="MuteByName">
 		(por nome)
 	</string>
@@ -3573,6 +3584,9 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 	<string name="group_role_owners">
 		Proprietários
 	</string>
+	<string name="group_member_status_online">
+		Conectado
+	</string>
 	<string name="uploading_abuse_report">
 		Carregando...
   
@@ -3626,9 +3640,15 @@ Denunciar abuso
 	<string name="Invalid Wearable">
 		Item inválido
 	</string>
+	<string name="New Gesture">
+		Novo gesto
+	</string>
 	<string name="New Script">
 		Novo script
 	</string>
+	<string name="New Note">
+		Nova nota
+	</string>
 	<string name="New Folder">
 		Nova pasta
 	</string>
@@ -3686,6 +3706,15 @@ Denunciar abuso
 	<string name="Male - Wow">
 		Wow - masculino
 	</string>
+	<string name="Female - Chuckle">
+		Engraçado - Feminino
+	</string>
+	<string name="Female - Cry">
+		Chorar - Feminino
+	</string>
+	<string name="Female - Embarrassed">
+		Com vergonha - Feminino
+	</string>
 	<string name="Female - Excuse me">
 		Perdão - fem
 	</string>
@@ -3704,9 +3733,21 @@ Denunciar abuso
 	<string name="Female - Hey">
 		Ôpa - feminino
 	</string>
+	<string name="Female - Hey baby">
+		E aí, beliza? - Feminino
+	</string>
 	<string name="Female - Laugh">
 		Risada - feminina
 	</string>
+	<string name="Female - Looking good">
+		Que chique - Feminino
+	</string>
+	<string name="Female - Over here">
+		Acenar - Feminino
+	</string>
+	<string name="Female - Please">
+		Por favor - Feminino
+	</string>
 	<string name="Female - Repulsed">
 		Quero distância! - feminino
 	</string>
@@ -3756,4 +3797,46 @@ Denunciar abuso
 	<string name="dateTimePM">
 		PM
 	</string>
+	<string name="LocalEstimateUSD">
+		US$ [AMOUNT]
+	</string>
+	<string name="Membership">
+		Plano
+	</string>
+	<string name="Roles">
+		Cargos
+	</string>
+	<string name="Group Identity">
+		Identidade do lote
+	</string>
+	<string name="Parcel Management">
+		Gestão do lote
+	</string>
+	<string name="Parcel Identity">
+		ID do lote
+	</string>
+	<string name="Parcel Settings">
+		Configurações do lote
+	</string>
+	<string name="Parcel Powers">
+		Poderes do lote
+	</string>
+	<string name="Parcel Access">
+		Acesso ao lote
+	</string>
+	<string name="Parcel Content">
+		Conteúdo do lote
+	</string>
+	<string name="Object Management">
+		Gestão de objetos
+	</string>
+	<string name="Accounting">
+		Contabilidade
+	</string>
+	<string name="Notices">
+		Avisos
+	</string>
+	<string name="Chat">
+		Bate-papo
+	</string>
 </strings>
diff --git a/indra/test_apps/llplugintest/llmediaplugintest.cpp b/indra/test_apps/llplugintest/llmediaplugintest.cpp
index 7a544debb2b94cd811804e61250d0f05db125383..166905c37cfb8e710d6d0a6bdf79ab0fd91d7127 100644
--- a/indra/test_apps/llplugintest/llmediaplugintest.cpp
+++ b/indra/test_apps/llplugintest/llmediaplugintest.cpp
@@ -959,6 +959,23 @@ mediaPanel*  LLMediaPluginTest::findMediaPanel( LLPluginClassMedia* source )
 	return result;
 }
 
+////////////////////////////////////////////////////////////////////////////////
+//
+mediaPanel* LLMediaPluginTest::findMediaPanel( const std::string &target_name )
+{
+	mediaPanel *result = NULL;
+
+	for( int panel = 0; panel < (int)mMediaPanels.size(); ++panel )
+	{
+		if ( mMediaPanels[ panel ]->mTarget == target_name )
+		{
+			result = mMediaPanels[ panel ];
+		}
+	}
+
+	return result;
+}
+
 ////////////////////////////////////////////////////////////////////////////////
 //
 void LLMediaPluginTest::navigateToNewURI( std::string uri )
@@ -1571,7 +1588,7 @@ std::string LLMediaPluginTest::pluginNameFromMimeType( std::string& mime_type )
 
 ////////////////////////////////////////////////////////////////////////////////
 //
-void LLMediaPluginTest::addMediaPanel( std::string url )
+mediaPanel* LLMediaPluginTest::addMediaPanel( std::string url )
 {
 	// Get the plugin filename using the URL
 	std::string mime_type = mimeTypeFromUrl( url );
@@ -1603,7 +1620,7 @@ void LLMediaPluginTest::addMediaPanel( std::string url )
 	if (NULL == getcwd( cwd, FILENAME_MAX - 1 ))
 	{
 		std::cerr << "Couldn't get cwd - probably too long - failing to init." << std::endl;
-		return;
+		return NULL;
 	}
 	std::string user_data_path = std::string( cwd ) + "/";
 #endif
@@ -1673,6 +1690,8 @@ void LLMediaPluginTest::addMediaPanel( std::string url )
 
 		std::cout << "Adding new media panel for " << url << "(" << media_width << "x" << media_height << ") with index " << panel->mId << " - total panels = " << mMediaPanels.size() << std::endl;
 	}
+	
+	return panel;
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -1778,15 +1797,15 @@ void LLMediaPluginTest::updateMediaPanel( mediaPanel* panel )
 
 ////////////////////////////////////////////////////////////////////////////////
 //
-void LLMediaPluginTest::replaceMediaPanel( mediaPanel* panel, std::string url )
+mediaPanel* LLMediaPluginTest::replaceMediaPanel( mediaPanel* panel, std::string url )
 {
 	// no media panels so we can't change anything - have to add
 	if ( mMediaPanels.size() == 0 )
-		return;
+		return NULL;
 
 	// sanity check
 	if ( ! panel )
-		return;
+		return NULL;
 
 	int index;
 	for(index = 0; index < (int)mMediaPanels.size(); index++)
@@ -1798,7 +1817,7 @@ void LLMediaPluginTest::replaceMediaPanel( mediaPanel* panel, std::string url )
 	if(index >= (int)mMediaPanels.size())
 	{
 		// panel isn't in mMediaPanels
-		return;
+		return NULL;
 	}
 
 	std::cout << "Replacing media panel with index " << panel->mId << std::endl;
@@ -1840,7 +1859,7 @@ void LLMediaPluginTest::replaceMediaPanel( mediaPanel* panel, std::string url )
 	if (NULL == getcwd( cwd, FILENAME_MAX - 1 ))
 	{
 		std::cerr << "Couldn't get cwd - probably too long - failing to init." << std::endl;
-		return;
+		return NULL;
 	}
 	std::string user_data_path = std::string( cwd ) + "/";
 #endif
@@ -1880,6 +1899,8 @@ void LLMediaPluginTest::replaceMediaPanel( mediaPanel* panel, std::string url )
 	// load and start the URL
 	panel->mMediaSource->loadURI( url );
 	panel->mMediaSource->start();
+	
+	return panel;
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -2139,7 +2160,46 @@ void LLMediaPluginTest::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent e
 		break;
 
 		case MEDIA_EVENT_CLICK_LINK_HREF:
-			std::cerr <<  "Media event:  MEDIA_EVENT_CLICK_LINK_HREF, uri is " << self->getClickURL() << std::endl;
+		{
+			std::cerr <<  "Media event:  MEDIA_EVENT_CLICK_LINK_HREF, uri is " << self->getClickURL() << ", target is " << self->getClickTarget() << std::endl;
+			// retrieve the event parameters
+			std::string url = self->getClickURL();
+			std::string target = self->getClickTarget();
+			U32 target_type = self->getClickTargetType();
+
+			switch (target_type)
+			{
+				case LLPluginClassMedia::TARGET_NONE:
+					// ignore this click
+				break;
+				
+				case LLPluginClassMedia::TARGET_EXTERNAL:
+					// this should open in an external browser, but since this is a test app we don't care.
+				break;
+				
+				case LLPluginClassMedia::TARGET_BLANK:
+					// Create a new panel with the specified URL.
+					addMediaPanel(url);
+				break;
+
+				case LLPluginClassMedia::TARGET_OTHER:
+					mediaPanel *target_panel = findMediaPanel(target);
+					if(target_panel)
+					{
+						target_panel = replaceMediaPanel(target_panel, url);
+					}
+					else
+					{
+						target_panel = addMediaPanel(url);
+					}
+
+					if(target_panel)
+					{
+						target_panel->mTarget = target;
+					}
+				break;
+			}
+		}
 		break;
 
 		case MEDIA_EVENT_CLICK_LINK_NOFOLLOW:
diff --git a/indra/test_apps/llplugintest/llmediaplugintest.h b/indra/test_apps/llplugintest/llmediaplugintest.h
index 5d08e4214891dc8e6bb88cb9ad924f7ad8269b46..ecd6cbfc4ff0575d7e147f272bd6d9b9666f8e1e 100644
--- a/indra/test_apps/llplugintest/llmediaplugintest.h
+++ b/indra/test_apps/llplugintest/llmediaplugintest.h
@@ -56,6 +56,7 @@ struct mediaPanel
 		int mId;
 		std::string mStartUrl;
 		std::string mMimeType;
+		std::string mTarget;
 		LLPluginClassMedia *mMediaSource;
 		int mMediaWidth;
 		int mMediaHeight;
@@ -96,16 +97,17 @@ class LLMediaPluginTest : public LLPluginClassMediaOwner
 		void draw( int draw_type );
 		void windowPosToTexturePos( int window_x, int window_y, int& media_x, int& media_y, int& id );
 
-		void addMediaPanel( std::string url );
+		mediaPanel* addMediaPanel( std::string url );
 		void updateMediaPanel( mediaPanel* panel );
 		void remMediaPanel( mediaPanel* panel );
-		void replaceMediaPanel( mediaPanel* panel, std::string url );
+		mediaPanel* replaceMediaPanel( mediaPanel* panel, std::string url );
 		void getRandomMediaSize( int& width, int& height, std::string mime_type );
 		void navigateToNewURI( std::string uri );
         void initUrlHistory( std::string uri );
 		void selectPanelById( int id );
 		void selectPanel( mediaPanel* panel );
 		mediaPanel* findMediaPanel( LLPluginClassMedia* panel );
+		mediaPanel* findMediaPanel( const std::string &target_name );
 		void makePickTexture( int id, GLuint* texture_handle, unsigned char** texture_pixels );
 		void makeChrome();
 		void resetView();
diff --git a/install.xml b/install.xml
index 28f13553d760239dfb1d07468e521cd334e63447..a3f5b5c7bc3269a434e1d56a5a18be3ffee8576e 100644
--- a/install.xml
+++ b/install.xml
@@ -995,9 +995,9 @@ anguage Infrstructure (CLI) international standard</string>
           <key>windows</key>
           <map>
             <key>md5sum</key>
-            <string>df1bdd683128e060d60e435f65d8f7e8</string>
+            <string>1591dab02d6135c204a7a31bf72d8ac1</string>
             <key>url</key>
-            <uri>http://viewer-source-downloads.s3.amazonaws.com/install_pkgs/llqtwebkit-windows-qt4.6-20100617.tar.bz2</uri>
+            <uri>http://viewer-source-downloads.s3.amazonaws.com/install_pkgs/llqtwebkit-windows-qt4.6-20100809.tar.bz2</uri>
           </map>
         </map>
       </map>