diff --git a/.hgtags b/.hgtags
index c81c919d1a2f966df2fcea947d8aaaf046248c53..d598ff1f626b9fe9bf6baa7dfa9b7faf8ddd078e 100755
--- a/.hgtags
+++ b/.hgtags
@@ -468,3 +468,4 @@ bf6d453046011a11de2643fac610cc5258650f82 3.6.5-release
 ae457ece77001767ae9613148c495e7b98cc0f4a 3.6.7-release
 d40c66e410741de7e90b1ed6dac28dd8a2d7e1f6 3.6.8-release
 70eda3721d36df3e00730629c42a1304e5bc65b8 3.6.9-release
+5b54b36862ff8bc3b6935673c9d1c1f22ee8d521 3.6.10-release
diff --git a/indra/llcommon/llsd.cpp b/indra/llcommon/llsd.cpp
index 8276ec836a77399ed164ff02d4ec65a3286aafb5..f9624852843c6a41cd6b35ede7cd4d03a69ff88b 100755
--- a/indra/llcommon/llsd.cpp
+++ b/indra/llcommon/llsd.cpp
@@ -506,6 +506,8 @@ namespace
 
 		LLSD::array_iterator beginArray() { return mData.begin(); }
 		LLSD::array_iterator endArray() { return mData.end(); }
+		LLSD::reverse_array_iterator rbeginArray() { return mData.rbegin(); }
+		LLSD::reverse_array_iterator rendArray() { return mData.rend(); }
 		virtual LLSD::array_const_iterator beginArray() const { return mData.begin(); }
 		virtual LLSD::array_const_iterator endArray() const { return mData.end(); }
 
@@ -947,6 +949,9 @@ LLSD::array_iterator		LLSD::endArray()		{ return makeArray(impl).endArray(); }
 LLSD::array_const_iterator	LLSD::beginArray() const{ return safe(impl).beginArray(); }
 LLSD::array_const_iterator	LLSD::endArray() const	{ return safe(impl).endArray(); }
 
+LLSD::reverse_array_iterator	LLSD::rbeginArray()		{ return makeArray(impl).rbeginArray(); }
+LLSD::reverse_array_iterator	LLSD::rendArray()		{ return makeArray(impl).rendArray(); }
+
 namespace llsd
 {
 
diff --git a/indra/llcommon/llsd.h b/indra/llcommon/llsd.h
index 5eb69059ac6e5f41e4f76504f6d081419652766f..deb87d74976fac998503de8c3365e2d5dd3f1cae 100755
--- a/indra/llcommon/llsd.h
+++ b/indra/llcommon/llsd.h
@@ -320,11 +320,15 @@ public:
 		
 		typedef std::vector<LLSD>::iterator			array_iterator;
 		typedef std::vector<LLSD>::const_iterator	array_const_iterator;
+		typedef std::vector<LLSD>::reverse_iterator reverse_array_iterator;
 		
 		array_iterator			beginArray();
 		array_iterator			endArray();
 		array_const_iterator	beginArray() const;
 		array_const_iterator	endArray() const;
+
+		reverse_array_iterator	rbeginArray();
+		reverse_array_iterator	rendArray();
 	//@}
 	
 	/** @name Type Testing */
diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index 0730b2ed8b8cb30d26f7a3eb857eee6e932f3df2..e63045659e22c803656405743660c8609fbb701b 100755
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -114,6 +114,9 @@ static const F32 MEM_INFO_THROTTLE = 20;
 static const F32 MEM_INFO_WINDOW = 10*60;
 
 #if LL_WINDOWS
+// We cannot trust GetVersionEx function on Win8.1 , we should check this value when creating OS string
+static const U32 WINNT_WINBLUE = 0x0603;
+
 #ifndef DLLVERSIONINFO
 typedef struct _DllVersionInfo
 {
@@ -214,6 +217,26 @@ static bool regex_search_no_exc(const S& string, M& match, const R& regex)
     }
 }
 
+#if LL_WINDOWS
+// GetVersionEx should not works correct with Windows 8.1 and the later version. We need to check this case 
+static bool	check_for_version(WORD wMajorVersion, WORD wMinorVersion, WORD wServicePackMajor)
+{
+    OSVERSIONINFOEXW osvi = { sizeof(osvi), 0, 0, 0, 0, {0}, 0, 0 };
+    DWORDLONG        const dwlConditionMask = VerSetConditionMask(
+        VerSetConditionMask(
+        VerSetConditionMask(
+            0, VER_MAJORVERSION, VER_GREATER_EQUAL),
+               VER_MINORVERSION, VER_GREATER_EQUAL),
+               VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL);
+
+    osvi.dwMajorVersion = wMajorVersion;
+    osvi.dwMinorVersion = wMinorVersion;
+    osvi.wServicePackMajor = wServicePackMajor;
+
+    return VerifyVersionInfoW(&osvi, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR, dwlConditionMask) != FALSE;
+}
+#endif
+
 
 LLOSInfo::LLOSInfo() :
 	mMajorVer(0), mMinorVer(0), mBuild(0), mOSVersionString("")	 
@@ -222,6 +245,7 @@ LLOSInfo::LLOSInfo() :
 #if LL_WINDOWS
 	OSVERSIONINFOEX osvi;
 	BOOL bOsVersionInfoEx;
+	BOOL bShouldUseShellVersion = false;
 
 	// Try calling GetVersionEx using the OSVERSIONINFOEX structure.
 	ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
@@ -284,11 +308,19 @@ LLOSInfo::LLOSInfo() :
 				}
 				else if(osvi.dwMinorVersion == 2)
 				{
+					if (check_for_version(HIBYTE(WINNT_WINBLUE), LOBYTE(WINNT_WINBLUE), 0))
+					{
+						mOSStringSimple = "Microsoft Windows 8.1 ";
+						bShouldUseShellVersion = true; // GetVersionEx failed, going to use shell version
+					}
+					else
+					{
 					if(osvi.wProductType == VER_NT_WORKSTATION)
 						mOSStringSimple = "Microsoft Windows 8 ";
 					else
 						mOSStringSimple = "Windows Server 2012 ";
 				}
+				}
 
 				///get native system info if available..
 				typedef void (WINAPI *PGNSI)(LPSYSTEM_INFO); ///function pointer for loading GetNativeSystemInfo
@@ -354,9 +386,8 @@ LLOSInfo::LLOSInfo() :
 			}
 			else
 			{
-				tmpstr = llformat("%s (Build %d)",
-								  csdversion.c_str(),
-								  (osvi.dwBuildNumber & 0xffff));
+				tmpstr = !bShouldUseShellVersion ?  llformat("%s (Build %d)", csdversion.c_str(), (osvi.dwBuildNumber & 0xffff)):
+					llformat("%s (Build %d)", csdversion.c_str(), shell32_build);
 			}
 
 			mOSString = mOSStringSimple + tmpstr;
@@ -392,7 +423,7 @@ LLOSInfo::LLOSInfo() :
 	std::string compatibility_mode;
 	if(got_shell32_version)
 	{
-		if(osvi.dwMajorVersion != shell32_major || osvi.dwMinorVersion != shell32_minor)
+		if((osvi.dwMajorVersion != shell32_major || osvi.dwMinorVersion != shell32_minor) && !bShouldUseShellVersion)
 		{
 			compatibility_mode = llformat(" compatibility mode. real ver: %d.%d (Build %d)", 
 											shell32_major,
diff --git a/indra/llinventory/llparcel.cpp b/indra/llinventory/llparcel.cpp
index 37c603348e3342a1ed9191e72cffcf47d125cc04..5eb5fb442d0f958860de8691e7e54541c46c66bd 100755
--- a/indra/llinventory/llparcel.cpp
+++ b/indra/llinventory/llparcel.cpp
@@ -414,117 +414,6 @@ BOOL LLParcel::allowTerraformBy(const LLUUID &agent_id) const
 }
 
 
-bool LLParcel::isAgentBlockedFromParcel(LLParcel* parcelp,
-                                        const LLUUID& agent_id,
-                                        const uuid_vec_t& group_ids,
-                                        const BOOL is_agent_identified,
-                                        const BOOL is_agent_transacted,
-                                        const BOOL is_agent_ageverified)
-{
-    S32 current_group_access = parcelp->blockAccess(agent_id, LLUUID::null, is_agent_identified, is_agent_transacted, is_agent_ageverified);
-    S32 count;
-    bool is_allowed = (current_group_access == BA_ALLOWED) ? true: false;
-    LLUUID group_id;
-    
-    count = group_ids.size();
-    for (int i = 0; i < count && !is_allowed; i++)
-    {
-        group_id = group_ids[i];
-        current_group_access = parcelp->blockAccess(agent_id, group_id, is_agent_identified, is_agent_transacted, is_agent_ageverified);
-        
-        if (current_group_access == BA_ALLOWED) is_allowed = true;
-    }
-    
-    return !is_allowed;
-}
-
-BOOL LLParcel::isAgentBanned(const LLUUID& agent_id) const
-{
-	// Test ban list
-	if (mBanList.find(agent_id) != mBanList.end())
-	{
-		return TRUE;
-	}
-    
-    return FALSE;
-}
-
-S32 LLParcel::blockAccess(const LLUUID& agent_id, const LLUUID& group_id,
-                          const BOOL is_agent_identified,
-                          const BOOL is_agent_transacted,
-                          const BOOL is_agent_ageverified) const
-{
-    // Test ban list
-    if (isAgentBanned(agent_id))
-    {
-        return BA_BANNED;
-    }
-    
-    // Always allow owner on (unless he banned himself, useful for
-    // testing). We will also allow estate owners/managers in if they 
-    // are not explicitly banned.
-    if (agent_id == mOwnerID)
-    {
-        return BA_ALLOWED;
-    }
-    
-    // Special case when using pass list where group access is being restricted but not 
-    // using access list.	 In this case group members are allowed only if they buy a pass.
-    // We return BA_NOT_IN_LIST if not in list
-    BOOL passWithGroup = getParcelFlag(PF_USE_PASS_LIST) && !getParcelFlag(PF_USE_ACCESS_LIST) 
-    && getParcelFlag(PF_USE_ACCESS_GROUP) && !mGroupID.isNull() && group_id == mGroupID;
-    
-    
-    // Test group list
-    if (getParcelFlag(PF_USE_ACCESS_GROUP)
-        && !mGroupID.isNull()
-        && group_id == mGroupID
-        && !passWithGroup)
-    {
-        return BA_ALLOWED;
-    }
-    
-    // Test access list
-    if (getParcelFlag(PF_USE_ACCESS_LIST) || passWithGroup )
-    {
-        if (mAccessList.find(agent_id) != mAccessList.end())
-        {
-            return BA_ALLOWED;
-        }
-        
-        return BA_NOT_ON_LIST; 
-    }
-    
-    // If we're not doing any other limitations, all users
-    // can enter, unless
-    if (		 !getParcelFlag(PF_USE_ACCESS_GROUP)
-                 && !getParcelFlag(PF_USE_ACCESS_LIST))
-    { 
-        //If the land is group owned, and you are in the group, bypass these checks
-        if(getIsGroupOwned() && group_id == mGroupID)
-        {
-            return BA_ALLOWED;
-        }
-        
-        // Test for "payment" access levels
-        // Anonymous - No Payment Info on File
-        if(getParcelFlag(PF_DENY_ANONYMOUS) && !is_agent_identified && !is_agent_transacted)
-        {
-            return BA_NO_ACCESS_LEVEL;
-        }
-        // AgeUnverified - Not Age Verified
-        if(getParcelFlag(PF_DENY_AGEUNVERIFIED) && !is_agent_ageverified)
-        {
-			return BA_NOT_AGE_VERIFIED;
-        }
-    
-        return BA_ALLOWED;
-    }
-    
-    return BA_NOT_IN_GROUP;
-    
-}
-
 
 void LLParcel::setArea(S32 area, S32 sim_object_limit)
 {
diff --git a/indra/llinventory/llparcel.h b/indra/llinventory/llparcel.h
index 0279e8bef970371595250a794c2bfc79bee03ded..c4363a48df5151bc3b73e9b9bfdec97a9f9b25c1 100755
--- a/indra/llinventory/llparcel.h
+++ b/indra/llinventory/llparcel.h
@@ -527,23 +527,6 @@ public:
 	// Can this agent change the shape of the land?
 	BOOL	allowTerraformBy(const LLUUID &agent_id) const;
 
-	// Returns 0 if access is OK, otherwise a BA_ return code above.
-	S32	 blockAccess(const LLUUID& agent_id, 
-			const LLUUID& group_id, 
-			const BOOL is_agent_identified, 
-			const BOOL is_agent_transacted,
-			const BOOL is_agent_ageverified) const;
-
-	// Only checks if the agent is explicitly banned from this parcel
-	BOOL isAgentBanned(const LLUUID& agent_id) const;
-
-	static bool isAgentBlockedFromParcel(LLParcel* parcelp, 
-									const LLUUID& agent_id,
-									const uuid_vec_t& group_ids,
-									const BOOL is_agent_identified,
-									const BOOL is_agent_transacted,
-									const BOOL is_agent_ageverified);
-
 	bool	operator==(const LLParcel &rhs) const;
 
 	// Calculate rent - area * rent * discount rate
diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp
index 2b865b4a8eff6a77c77edee8384c7229810c570d..f74c934b21fdaf0a0dd03d816fb6e0d0301eb03f 100755
--- a/indra/llmath/llvolume.cpp
+++ b/indra/llmath/llvolume.cpp
@@ -166,7 +166,8 @@ void calc_tangent_from_triangle(
 
 	F32 rd = s1*t2-s2*t1;
 
-	float r = ((rd*rd) > FLT_EPSILON) ? 1.0F / rd : 1024.f; //some made up large ratio for division by zero
+	float r = ((rd*rd) > FLT_EPSILON) ? (1.0f / rd)
+											    : ((rd > 0.0f) ? 1024.f : -1024.f); //some made up large ratio for division by zero
 
 	llassert(llfinite(r));
 	llassert(!llisnan(r));
@@ -6789,7 +6790,8 @@ void CalculateTangentArray(U32 vertexCount, const LLVector4a *vertex, const LLVe
         
 		F32 rd = s1*t2-s2*t1;
 
-		float r = ((rd*rd) > FLT_EPSILON) ? 1.0F / rd : 1024.f; //some made up large ratio for division by zero
+		float r = ((rd*rd) > FLT_EPSILON) ? (1.0f / rd)
+													 : ((rd > 0.0f) ? 1024.f : -1024.f); //some made up large ratio for division by zero
 
 		llassert(llfinite(r));
 		llassert(!llisnan(r));
diff --git a/indra/llrender/llrendertarget.cpp b/indra/llrender/llrendertarget.cpp
index b82b370d6ee431d27216ba224bd1c0a25f64ab05..fe8110904d68bf91c9544570bcc2249e257908d7 100755
--- a/indra/llrender/llrendertarget.cpp
+++ b/indra/llrender/llrendertarget.cpp
@@ -364,35 +364,55 @@ void LLRenderTarget::release()
 
 		sBytesAllocated -= mResX*mResY*4;
 	}
-	else if (mUseDepth && mFBO)
-	{ //detach shared depth buffer
+	else if (mFBO)
+	{
 		glBindFramebuffer(GL_FRAMEBUFFER, mFBO);
-		if (mStencil)
-		{ //attached as a renderbuffer
-			glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, 0);
-			glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, 0);
-			mStencil = false;
+
+		if (mUseDepth)
+		{ //detach shared depth buffer
+			if (mStencil)
+			{ //attached as a renderbuffer
+				glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, 0);
+				glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, 0);
+				mStencil = false;
+			}
+			else
+			{ //attached as a texture
+				glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, LLTexUnit::getInternalType(mUsage), 0, 0);
+			}
+			mUseDepth = false;
 		}
-		else
-		{ //attached as a texture
-			glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, LLTexUnit::getInternalType(mUsage), 0, 0);
+	}
+
+	// Detach any extra color buffers (e.g. SRGB spec buffers)
+	//
+	if (mFBO && (mTex.size() > 1))
+	{		
+		S32 z;
+		for (z = mTex.size() - 1; z >= 1; z--)
+		{
+			sBytesAllocated -= mResX*mResY*4;
+			glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0+z, LLTexUnit::getInternalType(mUsage), 0, 0);
+			stop_glerror();
+			LLImageGL::deleteTextures(1, &mTex[z]);
 		}
-		mUseDepth = false;
 	}
 
 	if (mFBO)
 	{
 		glDeleteFramebuffers(1, (GLuint *) &mFBO);
+		stop_glerror();
 		mFBO = 0;
 	}
 
 	if (mTex.size() > 0)
 	{
-		sBytesAllocated -= mResX*mResY*4*mTex.size();
-		LLImageGL::deleteTextures(mTex.size(), &mTex[0]);
+		sBytesAllocated -= mResX*mResY*4;
+		LLImageGL::deleteTextures(1, &mTex[0]);
+	}
+
 		mTex.clear();
 		mInternalFormat.clear();
-	}
 	
 	mResX = mResY = 0;
 
diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp
index d4e14d94190bcaa4d5d8c4867b8f8737d94cfc8c..56be52f69abf317403f28d8bd3277000b1a59313 100755
--- a/indra/llui/llcombobox.cpp
+++ b/indra/llui/llcombobox.cpp
@@ -534,6 +534,13 @@ void LLComboBox::createLineEditor(const LLComboBox::Params& p)
 	}
 }
 
+void LLComboBox::setLeftTextPadding(S32 pad)
+{
+	S32 left_pad, right_pad;
+	mTextEntry->getTextPadding(&left_pad, &right_pad);
+	mTextEntry->setTextPadding(pad, right_pad);
+}
+
 void* LLComboBox::getCurrentUserdata()
 {
 	LLScrollListItem* item = mList->getFirstSelected();
diff --git a/indra/llui/llcombobox.h b/indra/llui/llcombobox.h
index 64dbaea30634d1d6cb95f88a397de45b907b3187..67393504e7ff36aa90e6bfdf8274e6ff3ad9a415 100755
--- a/indra/llui/llcombobox.h
+++ b/indra/llui/llcombobox.h
@@ -191,6 +191,8 @@ public:
 
 	//========================================================================
 	
+	void			setLeftTextPadding(S32 pad);
+	
 	void*			getCurrentUserdata();
 
 	void			setPrearrangeCallback( commit_callback_t cb ) { mPrearrangeCallback = cb; }
diff --git a/indra/llui/llcommandmanager.cpp b/indra/llui/llcommandmanager.cpp
index 625fb8e87024c7cfc5f2a8d646737dabe181be76..49cfb2255e73318a4c7df2447235f3e1d894918f 100755
--- a/indra/llui/llcommandmanager.cpp
+++ b/indra/llui/llcommandmanager.cpp
@@ -50,6 +50,8 @@ const LLCommandId LLCommandId::null = LLCommandId("null command");
 LLCommand::Params::Params()
 	: available_in_toybox("available_in_toybox", false)
 	, icon("icon")
+	, hover_icon_unselected("hover_icon_unselected")
+	, hover_icon_selected("hover_icon_selected")
 	, label_ref("label_ref")
 	, name("name")
 	, tooltip_ref("tooltip_ref")
@@ -71,6 +73,8 @@ LLCommand::LLCommand(const LLCommand::Params& p)
 	: mIdentifier(p.name)
 	, mAvailableInToybox(p.available_in_toybox)
 	, mIcon(p.icon)
+	, mHoverIconUnselected(p.hover_icon_unselected)
+	, mHoverIconSelected(p.hover_icon_selected)
 	, mLabelRef(p.label_ref)
 	, mName(p.name)
 	, mTooltipRef(p.tooltip_ref)
diff --git a/indra/llui/llcommandmanager.h b/indra/llui/llcommandmanager.h
index ff5a8a325738b1c9a511cbd3df93b96683c357ca..9f276f712df4649a02d674063ccf854052c786dd 100755
--- a/indra/llui/llcommandmanager.h
+++ b/indra/llui/llcommandmanager.h
@@ -96,6 +96,9 @@ public:
 		Mandatory<std::string>	name;
 		Mandatory<std::string>	tooltip_ref;
 
+		Optional<std::string>   hover_icon_selected;
+		Optional<std::string>   hover_icon_unselected;
+
 		Mandatory<std::string>	execute_function;
 		Optional<LLSD>			execute_parameters;
 
@@ -124,6 +127,8 @@ public:
 	const std::string& labelRef() const { return mLabelRef; }
 	const std::string& name() const { return mName; }
 	const std::string& tooltipRef() const { return mTooltipRef; }
+	const std::string& hoverIconUnselected() const {return mHoverIconUnselected; }
+	const std::string& hoverIconSelected() const {return mHoverIconSelected; }
 
 	const std::string& executeFunctionName() const { return mExecuteFunction; }
 	const LLSD& executeParameters() const { return mExecuteParameters; }
@@ -150,6 +155,8 @@ private:
 	std::string mLabelRef;
 	std::string mName;
 	std::string mTooltipRef;
+	std::string mHoverIconUnselected;
+	std::string mHoverIconSelected;
 
 	std::string mExecuteFunction;
 	LLSD        mExecuteParameters;
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index 182c5cfd8acf731f16cf77690004349af0c7ec13..6e6bcd6ab5ff5819f12ef3a6c58faa9d6562526c 100755
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -1821,7 +1821,7 @@ void LLFloater::onClickClose( LLFloater* self )
 	self->onClickCloseBtn();
 }
 
-void	LLFloater::onClickCloseBtn()
+void LLFloater::onClickCloseBtn(bool app_quitting)
 {
 	closeFloater(false);
 }
diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h
index 953689498f28bbbe0c233c059239a80f21affb69..75715ef296b03a26c5b482d55415dba4065f118a 100755
--- a/indra/llui/llfloater.h
+++ b/indra/llui/llfloater.h
@@ -390,7 +390,7 @@ protected:
 
 	void			destroy(); // Don't call this directly.  You probably want to call closeFloater()
 
-	virtual	void	onClickCloseBtn();
+	virtual	void	onClickCloseBtn(bool app_quitting = false);
 
 	virtual void	updateTitleButtons();
 
diff --git a/indra/llui/llfolderviewitem.cpp b/indra/llui/llfolderviewitem.cpp
index f06131364593737103d3d814982071156ec3ea20..aa2343226cbd29c3b2132792304c53c17ab77c65 100644
--- a/indra/llui/llfolderviewitem.cpp
+++ b/indra/llui/llfolderviewitem.cpp
@@ -526,7 +526,7 @@ BOOL LLFolderViewItem::handleMouseDown( S32 x, S32 y, MASK mask )
 
 BOOL LLFolderViewItem::handleHover( S32 x, S32 y, MASK mask )
 {
-	static LLCachedControl<S32> drag_and_drop_threshold(*LLUI::sSettingGroups["config"],"DragAndDropDistanceThreshold");
+	static LLCachedControl<S32> drag_and_drop_threshold(*LLUI::sSettingGroups["config"],"DragAndDropDistanceThreshold", 3);
 
 	mIsMouseOverTitle = (y > (getRect().getHeight() - mItemHeight));
 
diff --git a/indra/llui/llmodaldialog.cpp b/indra/llui/llmodaldialog.cpp
index 8c2be449045f563a837530eba4d6abb30d366eb7..4d6e189b92bc0d2b1535faf45d8eabe8e4646122 100755
--- a/indra/llui/llmodaldialog.cpp
+++ b/indra/llui/llmodaldialog.cpp
@@ -34,7 +34,7 @@
 #include "llui.h"
 #include "llwindow.h"
 #include "llkeyboard.h"
-
+#include "llmenugl.h"
 // static
 std::list<LLModalDialog*> LLModalDialog::sModalStack;
 
@@ -161,6 +161,18 @@ void LLModalDialog::setVisible( BOOL visible )
 
 BOOL LLModalDialog::handleMouseDown(S32 x, S32 y, MASK mask)
 {
+	LLView* popup_menu = LLMenuGL::sMenuContainer->getVisibleMenu();
+	if (popup_menu != NULL)
+	{
+		S32 mx, my;
+		LLUI::getMousePositionScreen(&mx, &my);
+		LLRect menu_screen_rc = popup_menu->calcScreenRect();
+		if(!menu_screen_rc.pointInRect(mx, my))
+		{
+			LLMenuGL::sMenuContainer->hideMenus();
+		}
+	}
+
 	if (mModal)
 	{
 		if (!LLFloater::handleMouseDown(x, y, mask))
@@ -173,6 +185,8 @@ BOOL LLModalDialog::handleMouseDown(S32 x, S32 y, MASK mask)
 	{
 		LLFloater::handleMouseDown(x, y, mask);
 	}
+
+
 	return TRUE;
 }
 
@@ -183,6 +197,22 @@ BOOL LLModalDialog::handleHover(S32 x, S32 y, MASK mask)
 		getWindow()->setCursor(UI_CURSOR_ARROW);
 		lldebugst(LLERR_USER_INPUT) << "hover handled by " << getName() << llendl;		
 	}
+
+	LLView* popup_menu = LLMenuGL::sMenuContainer->getVisibleMenu();
+	if (popup_menu != NULL)
+	{
+		S32 mx, my;
+		LLUI::getMousePositionScreen(&mx, &my);
+		LLRect menu_screen_rc = popup_menu->calcScreenRect();
+		if(menu_screen_rc.pointInRect(mx, my))
+		{
+			S32 local_x = mx - popup_menu->getRect().mLeft;
+			S32 local_y = my - popup_menu->getRect().mBottom;
+			popup_menu->handleHover(local_x, local_y, mask);
+			gFocusMgr.setMouseCapture(NULL);
+		}
+	}
+
 	return TRUE;
 }
 
@@ -210,6 +240,7 @@ BOOL LLModalDialog::handleDoubleClick(S32 x, S32 y, MASK mask)
 
 BOOL LLModalDialog::handleRightMouseDown(S32 x, S32 y, MASK mask)
 {
+	LLMenuGL::sMenuContainer->hideMenus();
 	childrenHandleRightMouseDown(x, y, mask);
 	return TRUE;
 }
diff --git a/indra/llui/llscrollcontainer.cpp b/indra/llui/llscrollcontainer.cpp
index cbcce0ece545fa7e7617fa5ad6f3f4a1127da877..238eae21c25f6366e63dc24f0e8a1c39015f670d 100755
--- a/indra/llui/llscrollcontainer.cpp
+++ b/indra/llui/llscrollcontainer.cpp
@@ -519,7 +519,7 @@ bool LLScrollContainer::addChild(LLView* view, S32 tab_group)
 
 void LLScrollContainer::updateScroll()
 {
-	if (!mScrolledView)
+	if (!getVisible() || !mScrolledView)
 	{
 		return;
 	}
diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp
index 76ba53ec329e600084424a110695f7924edc709b..6fd2bb1b36739e7cf3a56f3a643658a2f61d777f 100755
--- a/indra/llui/lltabcontainer.cpp
+++ b/indra/llui/lltabcontainer.cpp
@@ -193,12 +193,15 @@ LLTabContainer::TabParams::TabParams()
 :	tab_top_image_unselected("tab_top_image_unselected"),
 	tab_top_image_selected("tab_top_image_selected"),
 	tab_top_image_flash("tab_top_image_flash"),
+	tab_top_image_hovered("tab_top_image_hovered"),
 	tab_bottom_image_unselected("tab_bottom_image_unselected"),
 	tab_bottom_image_selected("tab_bottom_image_selected"),
 	tab_bottom_image_flash("tab_bottom_image_flash"),
+	tab_bottom_image_hovered("tab_bottom_image_hovered"),
 	tab_left_image_unselected("tab_left_image_unselected"),
 	tab_left_image_selected("tab_left_image_selected"),
-	tab_left_image_flash("tab_left_image_flash")
+	tab_left_image_flash("tab_left_image_flash"),
+	tab_left_image_hovered("tab_left_image_hovered")
 {}
 
 LLTabContainer::Params::Params()
@@ -218,7 +221,8 @@ LLTabContainer::Params::Params()
 	open_tabs_on_drag_and_drop("open_tabs_on_drag_and_drop", false),
 	tab_icon_ctrl_pad("tab_icon_ctrl_pad", 0),
 	use_ellipses("use_ellipses"),
-	font_halign("halign")
+	font_halign("halign"),
+	use_highlighting_on_hover("use_highlighting_on_hover",false)
 {}
 
 LLTabContainer::LLTabContainer(const LLTabContainer::Params& p)
@@ -254,7 +258,8 @@ LLTabContainer::LLTabContainer(const LLTabContainer::Params& p)
 	mCustomIconCtrlUsed(p.use_custom_icon_ctrl),
 	mOpenTabsOnDragAndDrop(p.open_tabs_on_drag_and_drop),
 	mTabIconCtrlPad(p.tab_icon_ctrl_pad),
-	mUseTabEllipses(p.use_ellipses)
+	mUseTabEllipses(p.use_ellipses),
+	mUseHighlightingOnHover(p.use_highlighting_on_hover)
 {
 	static LLUICachedControl<S32> tabcntr_vert_tab_min_width ("UITabCntrVertTabMinWidth", 0);
 
@@ -903,18 +908,30 @@ void LLTabContainer::update_images(LLTabTuple* tuple, TabParams params, LLTabCon
 			tuple->mButton->setImageUnselected(static_cast<LLUIImage*>(params.tab_top_image_unselected));
 			tuple->mButton->setImageSelected(static_cast<LLUIImage*>(params.tab_top_image_selected));
 			tuple->mButton->setImageFlash(static_cast<LLUIImage*>(params.tab_top_image_flash));
+			if(mUseHighlightingOnHover)
+			{
+				tuple->mButton->setImageHoverUnselected(static_cast<LLUIImage*>(params.tab_top_image_hovered));
+			}
 		}
 		else if (pos == LLTabContainer::BOTTOM)
 		{
 			tuple->mButton->setImageUnselected(static_cast<LLUIImage*>(params.tab_bottom_image_unselected));
 			tuple->mButton->setImageSelected(static_cast<LLUIImage*>(params.tab_bottom_image_selected));
 			tuple->mButton->setImageFlash(static_cast<LLUIImage*>(params.tab_bottom_image_flash));
+			if(mUseHighlightingOnHover)
+			{
+				tuple->mButton->setImageHoverUnselected(static_cast<LLUIImage*>(params.tab_bottom_image_hovered));
+			}
 		}
 		else if (pos == LLTabContainer::LEFT)
 		{
 			tuple->mButton->setImageUnselected(static_cast<LLUIImage*>(params.tab_left_image_unselected));
 			tuple->mButton->setImageSelected(static_cast<LLUIImage*>(params.tab_left_image_selected));
 			tuple->mButton->setImageFlash(static_cast<LLUIImage*>(params.tab_left_image_flash));
+			if(mUseHighlightingOnHover)
+			{
+				tuple->mButton->setImageHoverUnselected(static_cast<LLUIImage*>(params.tab_left_image_hovered));
+			}
 		}
 	}
 }
diff --git a/indra/llui/lltabcontainer.h b/indra/llui/lltabcontainer.h
index 57862fc626c0374c49a863a238836b0d4963553e..7e7d4ac6e6d22b942c7645eb8a10e69a933cea3a 100755
--- a/indra/llui/lltabcontainer.h
+++ b/indra/llui/lltabcontainer.h
@@ -62,12 +62,15 @@ public:
 		Optional<LLUIImage*>				tab_top_image_unselected,
 											tab_top_image_selected,
 											tab_top_image_flash,
+											tab_top_image_hovered,
 											tab_bottom_image_unselected,
 											tab_bottom_image_selected,
 											tab_bottom_image_flash,
+											tab_bottom_image_hovered,
 											tab_left_image_unselected,
 											tab_left_image_selected,
-											tab_left_image_flash;		
+											tab_left_image_flash,
+											tab_left_image_hovered;
 		TabParams();
 	};
 
@@ -114,6 +117,11 @@ public:
 		 */
 		Optional<S32>						tab_icon_ctrl_pad;
 
+		/**
+		 *  This variable is used to found out should we highlight tab button on hover
+		*/
+		Optional<bool>						use_highlighting_on_hover;
+
 		Params();
 	};
 
@@ -307,6 +315,7 @@ private:
 	bool							mOpenTabsOnDragAndDrop;
 	S32								mTabIconCtrlPad;
 	bool							mUseTabEllipses;
+	bool                            mUseHighlightingOnHover;
 };
 
 #endif  // LL_TABCONTAINER_H
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index cc171661ce0bb0bcd32b35f4034b1009a270716d..5ec4cf4fe5dd57af6b51e9d1e93365dd4d6b0083 100755
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -1029,7 +1029,7 @@ BOOL LLTextBase::handleMouseDown(S32 x, S32 y, MASK mask)
 BOOL LLTextBase::handleMouseUp(S32 x, S32 y, MASK mask)
 {
 	LLTextSegmentPtr cur_segment = getSegmentAtLocalPos(x, y);
-	if (cur_segment && cur_segment->handleMouseUp(x, y, mask))
+	if (hasMouseCapture() && cur_segment && cur_segment->handleMouseUp(x, y, mask))
 	{
 		// Did we just click on a link?
 		if (mURLClickSignal
diff --git a/indra/llui/lltextbox.cpp b/indra/llui/lltextbox.cpp
index 11cfa1d2632cf5223f2308d02050b3211b62a16f..d175204e6d598673f46ec0a35bc8a94ae42487e2 100755
--- a/indra/llui/lltextbox.cpp
+++ b/indra/llui/lltextbox.cpp
@@ -59,11 +59,14 @@ BOOL LLTextBox::handleMouseDown(S32 x, S32 y, MASK mask)
 	}
 
 	if (!handled && mClickedCallback)
+	{
+		handled = TRUE;
+	}
+
+	if (handled)
 	{
 		// Route future Mouse messages here preemptively.  (Release on mouse up.)
 		gFocusMgr.setMouseCapture( this );
-
-		handled = TRUE;
 	}
 
 	return handled;
@@ -71,7 +74,7 @@ BOOL LLTextBox::handleMouseDown(S32 x, S32 y, MASK mask)
 
 BOOL LLTextBox::handleMouseUp(S32 x, S32 y, MASK mask)
 {
-	BOOL	handled = FALSE;
+	BOOL	handled = LLTextBase::handleMouseUp(x, y, mask);
 
 	if (getSoundFlags() & MOUSE_UP)
 	{
@@ -93,10 +96,6 @@ BOOL LLTextBox::handleMouseUp(S32 x, S32 y, MASK mask)
 			handled = TRUE;
 		}
 	}
-	else
-	{
-		handled = LLTextBase::handleMouseUp(x, y, mask);
-	}
 
 	return handled;
 }
diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
index 0c16e06109fbd51b21eea8484785201adcc9d978..62140dd9d67909de341221f61efaa6f092dad743 100755
--- a/indra/llui/lltexteditor.cpp
+++ b/indra/llui/lltexteditor.cpp
@@ -666,6 +666,14 @@ void LLTextEditor::selectAll()
 	updatePrimary();
 }
 
+void LLTextEditor::selectByCursorPosition(S32 prev_cursor_pos, S32 next_cursor_pos)
+{
+	setCursorPos(prev_cursor_pos);
+	startSelection();
+	setCursorPos(next_cursor_pos);
+	endSelection();
+}
+
 BOOL LLTextEditor::handleMouseDown(S32 x, S32 y, MASK mask)
 {
 	BOOL	handled = FALSE;
@@ -713,7 +721,6 @@ BOOL LLTextEditor::handleMouseDown(S32 x, S32 y, MASK mask)
 				setCursorAtLocalPos( x, y, true );
 				startSelection();
 			}
-			gFocusMgr.setMouseCapture( this );
 		}
 
 		handled = TRUE;
@@ -722,6 +729,10 @@ BOOL LLTextEditor::handleMouseDown(S32 x, S32 y, MASK mask)
 	// Delay cursor flashing
 	resetCursorBlink();
 
+	if (handled && !gFocusMgr.getMouseCapture())
+	{
+		gFocusMgr.setMouseCapture( this );
+	}
 	return handled;
 }
 
diff --git a/indra/llui/lltexteditor.h b/indra/llui/lltexteditor.h
index 32b543ec0e3439380847c001ee18f4cefb3dece0..d3b7bc0eb7681ef04c31155ee3561496a9896b48 100755
--- a/indra/llui/lltexteditor.h
+++ b/indra/llui/lltexteditor.h
@@ -144,6 +144,8 @@ public:
 	virtual void	selectAll();
 	virtual BOOL	canSelectAll()	const;
 
+	void 			selectByCursorPosition(S32 prev_cursor_pos, S32 next_cursor_pos);
+
 	virtual bool	canLoadOrSaveToFile();
 
 	void			selectNext(const std::string& search_text_in, BOOL case_insensitive, BOOL wrap = TRUE);
diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp
index 928e82cb8c21c798e2cdb1744270ababa2b7012c..6bfe113933d322c46b8dea9d2d6cddc9985302f5 100755
--- a/indra/llui/lltoolbar.cpp
+++ b/indra/llui/lltoolbar.cpp
@@ -928,6 +928,8 @@ LLToolBarButton* LLToolBar::createButton(const LLCommandId& id)
 	button_p.label = LLTrans::getString(commandp->labelRef());
 	button_p.tool_tip = LLTrans::getString(commandp->tooltipRef());
 	button_p.image_overlay = LLUI::getUIImage(commandp->icon());
+	button_p.image_hover_unselected = LLUI::getUIImage(commandp->hoverIconUnselected());
+	button_p.image_hover_selected = LLUI::getUIImage(commandp->hoverIconSelected());
 	button_p.button_flash_enable = commandp->isFlashingAllowed();
 	button_p.overwriteFrom(mButtonParams[mButtonType]);
 	LLToolBarButton* button = LLUICtrlFactory::create<LLToolBarButton>(button_p);
diff --git a/indra/llui/llui.h b/indra/llui/llui.h
index 0a0e0e164ec830191b912707ee8d37e169ec7827..0bc4424a8cab7b39a58a7fce63b8558fab524ca6 100755
--- a/indra/llui/llui.h
+++ b/indra/llui/llui.h
@@ -405,11 +405,6 @@ public:
 					  const std::string& comment = "Declared In Code")
 	:	LLCachedControl<T>(LLUI::getControlControlGroup(name), name, default_value, comment)
 	{}
-
-	// This constructor will signal an error if the control doesn't exist in the control group
-	LLUICachedControl(const std::string& name)
-	:	LLCachedControl<T>(LLUI::getControlControlGroup(name), name)
-	{}
 };
 
 namespace LLInitParam
diff --git a/indra/llwindow/llwindowcallbacks.cpp b/indra/llwindow/llwindowcallbacks.cpp
index 9712ae1d91a39111a0db162da0055a5214d16732..eadff8a6b4af096d3f4dd0e922b3548f8330d983 100755
--- a/indra/llwindow/llwindowcallbacks.cpp
+++ b/indra/llwindow/llwindowcallbacks.cpp
@@ -122,6 +122,7 @@ void LLWindowCallbacks::handleResize(LLWindow *window, const S32 width, const S3
 
 void LLWindowCallbacks::handleFocus(LLWindow *window)
 {
+	 LL_WARNS("COCOA") << "Called handleFocus proto" << LL_ENDL;
 }
 
 void LLWindowCallbacks::handleFocusLost(LLWindow *window)
diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp
index d5b62bd3a71d17dc2c50f1811e17afc72cfc4d22..11c0b5108692e787d5276529be7ba7cc1f13d4ea 100755
--- a/indra/llwindow/llwindowmacosx.cpp
+++ b/indra/llwindow/llwindowmacosx.cpp
@@ -331,7 +331,16 @@ void callMouseExit()
 
 void callWindowFocus()
 {
-	gWindowImplementation->getCallbacks()->handleFocus(gWindowImplementation);
+   if ( gWindowImplementation && gWindowImplementation->getCallbacks() )
+	{
+		gWindowImplementation->getCallbacks()->handleFocus (gWindowImplementation);
+	}
+	else
+	{
+		LL_WARNS("COCOA") << "Window Implementation or callbacks not yet initialized." << LL_ENDL;
+	}
+
+
 }
 
 void callWindowUnfocus()
diff --git a/indra/llxml/llcontrol.h b/indra/llxml/llcontrol.h
index e1f9be80ddad26d909449b0a6300f4d50c08b553..f46d21408bfe2bcd0538679056ef1caab59342b3 100755
--- a/indra/llxml/llcontrol.h
+++ b/indra/llxml/llcontrol.h
@@ -408,16 +408,6 @@ public:
 		}
 	}
 
-	LLCachedControl(LLControlGroup& group,
-					const std::string& name)
-	{
-		mCachedControlPtr = LLControlCache<T>::getInstance(name);
-		if (mCachedControlPtr.isNull())
-		{
-			mCachedControlPtr = new LLControlCache<T>(group, name);
-		}
-	}
-
 	operator const T&() const { return mCachedControlPtr->getValue(); }
 	operator boost::function<const T&()> () const { return boost::function<const T&()>(*this); }
 	const T& operator()() { return mCachedControlPtr->getValue(); }
diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt
index c47e8b5872d2549dd1c67c6ee4c3c98b1c293dda..e8b6c77dc9a010bd0e717304e124a85e79c4982c 100644
--- a/indra/newview/VIEWER_VERSION.txt
+++ b/indra/newview/VIEWER_VERSION.txt
@@ -1 +1 @@
-3.6.10
+3.6.11
diff --git a/indra/newview/app_settings/commands.xml b/indra/newview/app_settings/commands.xml
index 60c942094aad44fcc98f66c0a29ae3da1975dfd2..ce878f156b47efbdbcd9b7d73354ec36481e895e 100755
--- a/indra/newview/app_settings/commands.xml
+++ b/indra/newview/app_settings/commands.xml
@@ -3,6 +3,8 @@
   <command name="aboutland"
            available_in_toybox="true"
            icon="Command_AboutLand_Icon"
+           hover_icon_unselected="Command_Highlighting_Icon"
+           hover_icon_selected="Command_Highlighting_Selected_Icon"
            label_ref="Command_AboutLand_Label"
            tooltip_ref="Command_AboutLand_Tooltip"
            execute_function="Floater.ToggleOrBringToFront"
@@ -13,6 +15,8 @@
   <command name="appearance"  
            available_in_toybox="true"
            icon="Command_Appearance_Icon"
+           hover_icon_unselected="Command_Highlighting_Icon"
+           hover_icon_selected="Command_Highlighting_Selected_Icon"
            label_ref="Command_Appearance_Label"
            tooltip_ref="Command_Appearance_Tooltip"
            execute_function="Floater.ToggleOrBringToFront"
@@ -23,6 +27,8 @@
   <command name="avatar"
            available_in_toybox="true"
            icon="Command_Avatar_Icon"
+           hover_icon_unselected="Command_Highlighting_Icon"
+           hover_icon_selected="Command_Highlighting_Selected_Icon"
            label_ref="Command_Avatar_Label"
            tooltip_ref="Command_Avatar_Tooltip"
            execute_function="Floater.ToggleOrBringToFront"
@@ -33,6 +39,8 @@
   <command name="build"
            available_in_toybox="true"
            icon="Command_Build_Icon"
+           hover_icon_unselected="Command_Highlighting_Icon"
+           hover_icon_selected="Command_Highlighting_Selected_Icon"
            label_ref="Command_Build_Label"
            tooltip_ref="Command_Build_Tooltip"
            execute_function="Build.Toggle"
@@ -46,6 +54,8 @@
            available_in_toybox="true"
 		   is_flashing_allowed="true"
            icon="Command_Chat_Icon"
+           hover_icon_unselected="Command_Highlighting_Icon"
+           hover_icon_selected="Command_Highlighting_Selected_Icon"
            label_ref="Command_Chat_Label"
            tooltip_ref="Command_Conversations_Tooltip"
            execute_function="Floater.ToggleOrBringToFront"
@@ -56,6 +66,8 @@
   <command name="compass"
            available_in_toybox="false"
            icon="Command_Compass_Icon"
+           hover_icon_unselected="Command_Highlighting_Icon"
+           hover_icon_selected="Command_Highlighting_Selected_Icon"
            label_ref="Command_Compass_Label"
            tooltip_ref="Command_Compass_Tooltip"
            execute_function="Floater.ToggleOrBringToFront"
@@ -66,6 +78,8 @@
   <command name="destinations"
            available_in_toybox="true"
            icon="Command_Destinations_Icon"
+           hover_icon_unselected="Command_Highlighting_Icon"
+           hover_icon_selected="Command_Highlighting_Selected_Icon"
            label_ref="Command_Destinations_Label"
            tooltip_ref="Command_Destinations_Tooltip"
            execute_function="Floater.ToggleOrBringToFront"
@@ -76,6 +90,8 @@
   <command name="gestures"
            available_in_toybox="true"
            icon="Command_Gestures_Icon"
+           hover_icon_unselected="Command_Highlighting_Icon"
+           hover_icon_selected="Command_Highlighting_Selected_Icon"
            label_ref="Command_Gestures_Label"
            tooltip_ref="Command_Gestures_Tooltip"
            execute_function="Floater.ToggleOrBringToFront"
@@ -86,6 +102,8 @@
   <command name="howto"
            available_in_toybox="true"
            icon="Command_HowTo_Icon"
+           hover_icon_unselected="Command_Highlighting_Icon"
+           hover_icon_selected="Command_Highlighting_Selected_Icon"
            label_ref="Command_HowTo_Label"
            tooltip_ref="Command_HowTo_Tooltip"
            execute_function="Help.ToggleHowTo"
@@ -94,6 +112,8 @@
   <command name="inventory"
            available_in_toybox="true"
            icon="Command_Inventory_Icon"
+           hover_icon_unselected="Command_Highlighting_Icon"
+           hover_icon_selected="Command_Highlighting_Selected_Icon"
            label_ref="Command_Inventory_Label"
            tooltip_ref="Command_Inventory_Tooltip"
            execute_function="Floater.ToggleOrBringToFront"
@@ -104,6 +124,8 @@
   <command name="map"
            available_in_toybox="true"
            icon="Command_Map_Icon"
+           hover_icon_unselected="Command_Highlighting_Icon"
+           hover_icon_selected="Command_Highlighting_Selected_Icon"
            label_ref="Command_Map_Label"
            tooltip_ref="Command_Map_Tooltip"
            execute_function="Floater.ToggleOrBringToFront"
@@ -114,6 +136,8 @@
   <command name="marketplace"
            available_in_toybox="false"
            icon="Command_Marketplace_Icon"
+           hover_icon_unselected="Command_Highlighting_Icon"
+           hover_icon_selected="Command_Highlighting_Selected_Icon"
            label_ref="Command_Marketplace_Label"
            tooltip_ref="Command_Marketplace_Tooltip"
            execute_function="Avatar.OpenMarketplace"
@@ -121,6 +145,8 @@
   <command name="minimap"
            available_in_toybox="true"
            icon="Command_MiniMap_Icon"
+           hover_icon_unselected="Command_Highlighting_Icon"
+           hover_icon_selected="Command_Highlighting_Selected_Icon"
            label_ref="Command_MiniMap_Label"
            tooltip_ref="Command_MiniMap_Tooltip"
            execute_function="Floater.ToggleOrBringToFront"
@@ -131,6 +157,8 @@
   <command name="move"
            available_in_toybox="true"
            icon="Command_Move_Icon"
+           hover_icon_unselected="Command_Highlighting_Icon"
+           hover_icon_selected="Command_Highlighting_Selected_Icon"
            label_ref="Command_Move_Label"
            tooltip_ref="Command_Move_Tooltip"
            execute_function="Floater.ToggleOrBringToFront"
@@ -141,6 +169,8 @@
   <command name="outbox"
            available_in_toybox="false"
            icon="Command_Outbox_Icon"
+           hover_icon_unselected="Command_Highlighting_Icon"
+           hover_icon_selected="Command_Highlighting_Selected_Icon"
            label_ref="Command_Outbox_Label"
            tooltip_ref="Command_Outbox_Tooltip"
            execute_function="Floater.ToggleOrBringToFront"
@@ -151,6 +181,8 @@
   <command name="people"
            available_in_toybox="true"
            icon="Command_People_Icon"
+           hover_icon_unselected="Command_Highlighting_Icon"
+           hover_icon_selected="Command_Highlighting_Selected_Icon"
            label_ref="Command_People_Label"
            tooltip_ref="Command_People_Tooltip"
            execute_function="Floater.ToggleOrBringToFront"
@@ -161,6 +193,8 @@
   <command name="picks"
            available_in_toybox="true"
            icon="Command_Picks_Icon"
+           hover_icon_unselected="Command_Highlighting_Icon"
+           hover_icon_selected="Command_Highlighting_Selected_Icon"
            label_ref="Command_Picks_Label"
            tooltip_ref="Command_Picks_Tooltip"
            execute_function="Floater.ToggleOrBringToFront"
@@ -171,6 +205,8 @@
   <command name="places"
            available_in_toybox="true"
            icon="Command_Places_Icon"
+           hover_icon_unselected="Command_Highlighting_Icon"
+           hover_icon_selected="Command_Highlighting_Selected_Icon"
            label_ref="Command_Places_Label"
            tooltip_ref="Command_Places_Tooltip"
            execute_function="Floater.ToggleOrBringToFront"
@@ -181,6 +217,8 @@
   <command name="preferences"
            available_in_toybox="true"
            icon="Command_Preferences_Icon"
+           hover_icon_unselected="Command_Highlighting_Icon"
+           hover_icon_selected="Command_Highlighting_Selected_Icon"
            label_ref="Command_Preferences_Label"
            tooltip_ref="Command_Preferences_Tooltip"
            execute_function="Floater.ToggleOrBringToFront"
@@ -191,6 +229,8 @@
   <command name="profile"
            available_in_toybox="true"
            icon="Command_Profile_Icon"
+           hover_icon_unselected="Command_Highlighting_Icon"
+           hover_icon_selected="Command_Highlighting_Selected_Icon"
            label_ref="Command_Profile_Label"
            tooltip_ref="Command_Profile_Tooltip"
            execute_function="Avatar.ToggleMyProfile"
@@ -199,6 +239,8 @@
   <command name="search"
            available_in_toybox="true"
            icon="Command_Search_Icon"
+           hover_icon_unselected="Command_Highlighting_Icon"
+           hover_icon_selected="Command_Highlighting_Selected_Icon"
            label_ref="Command_Search_Label"
            tooltip_ref="Command_Search_Tooltip"
            execute_function="Floater.ToggleOrBringToFront"
@@ -209,6 +251,8 @@
   <command name="snapshot"
            available_in_toybox="true"
            icon="Command_Snapshot_Icon"
+           hover_icon_unselected="Command_Highlighting_Icon"
+           hover_icon_selected="Command_Highlighting_Selected_Icon"
            label_ref="Command_Snapshot_Label"
            tooltip_ref="Command_Snapshot_Tooltip"
            execute_function="Floater.ToggleOrBringToFront"
@@ -229,6 +273,8 @@
   <command name="speak"
            available_in_toybox="true"
            icon="Command_Speak_Icon"
+           hover_icon_unselected="Command_Highlighting_Icon"
+           hover_icon_selected="Command_Highlighting_Selected_Icon"
            label_ref="Command_Speak_Label"
            tooltip_ref="Command_Speak_Tooltip"
            execute_function="Agent.PressMicrophone"
@@ -243,6 +289,8 @@
   <command name="view"
            available_in_toybox="true"
            icon="Command_View_Icon"
+           hover_icon_unselected="Command_Highlighting_Icon"
+           hover_icon_selected="Command_Highlighting_Selected_Icon"
            label_ref="Command_View_Label"
            tooltip_ref="Command_View_Tooltip"
            execute_function="Floater.ToggleOrBringToFront"
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 41aac583d7661a270e4de4287efac459473dc1cd..d9093c2a6d240dfa572707a53e8ef4005b7805f6 100755
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -5942,6 +5942,17 @@
       <key>Value</key>
       <real>1.6</real>
     </map>
+    <key>MaxPersistentNotifications</key>
+    <map>
+      <key>Comment</key>
+      <string>Maximum amount of persistent notifications</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>S32</string>
+      <key>Value</key>
+      <real>250</real>
+    </map>
     <key>MaxSelectDistance</key>
     <map>
       <key>Comment</key>
@@ -9850,7 +9861,7 @@
     <key>RenderUseVAO</key>
     <map>
       <key>Comment</key>
-      <string>[EXPERIMENTAL] Use GL Vertex Array Objects</string>
+      <string>[EXPERIMENTAL] Use GL Vertex Array Objects.</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
@@ -13334,7 +13345,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>-1</string>
+      <string>0</string>
     </map>
     <key>VivoxDebugSIPURIHostName</key>
     <map>
diff --git a/indra/newview/app_settings/settings_per_account.xml b/indra/newview/app_settings/settings_per_account.xml
index 636caf5ef321cd69a50cb381609e6745ab26889f..500151c935277b05d2d5d04ddf64f93bf9273945 100755
--- a/indra/newview/app_settings/settings_per_account.xml
+++ b/indra/newview/app_settings/settings_per_account.xml
@@ -77,6 +77,17 @@
         <key>Value</key>
             <integer>412</integer>
     </map>
+    <key>ConversationsParticipantListCollapsed</key>
+    <map>
+        <key>Comment</key>
+            <string>Stores the expanded/collapsed state of Nearby chat participant list</string>
+        <key>Persist</key>
+            <integer>1</integer>
+        <key>Type</key>
+            <string>Boolean</string>
+        <key>Value</key>
+            <integer>true</integer>
+    </map>   
     <key>InstantMessageLogPath</key>
         <map>
         <key>Comment</key>
diff --git a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl
index 271947b2dd6dbd51c80fb969458fd126161b204c..39632d0cef04c8e72115ebfa6df3a4e8e7b74617 100755
--- a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl
+++ b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl
@@ -34,14 +34,17 @@ mat4 getObjectSkinnedTransform()
 	
 	vec4 w = fract(weight4);
 	vec4 index = floor(weight4);
+	
+		 index = min(index, vec4(31.0));
+		 index = max(index, vec4( 0.0));
 
 	float scale = 1.0/(w.x+w.y+w.z+w.w);
 	w *= scale;
-
-	mat4 mat  = matrixPalette[int(index.x)]*w.x;
-		 mat += matrixPalette[int(index.y)]*w.y;
-		 mat += matrixPalette[int(index.z)]*w.z;
-		 mat += matrixPalette[int(index.w)]*w.w;
+	
+	mat4 mat = matrixPalette[int(index.x)]*w.x;
+	mat += matrixPalette[int(index.y)]*w.y;
+	mat += matrixPalette[int(index.z)]*w.z;
+	mat += matrixPalette[int(index.w)]*w.w;
 		
 	return mat;
 }
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 9cee0aa8673cb201129bdb2a26e5d6a8f5563352..79da9e5873112b5e5951070f92ee42bcaf7359ac 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -1092,10 +1092,18 @@ const LLVector3d &LLAgent::getPositionGlobal() const
 //-----------------------------------------------------------------------------
 const LLVector3 &LLAgent::getPositionAgent()
 {
-	if (isAgentAvatarValid() && !gAgentAvatarp->mDrawable.isNull())
+	if (isAgentAvatarValid())
+	{
+		if(gAgentAvatarp->mDrawable.isNull())
 		{
-			mFrameAgent.setOrigin(gAgentAvatarp->getRenderPosition());
+			mFrameAgent.setOrigin(gAgentAvatarp->getPositionAgent());
 		}
+		else
+	{
+		mFrameAgent.setOrigin(gAgentAvatarp->getRenderPosition());	
+	}
+	}
+
 
 	return mFrameAgent.getOrigin();
 }
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index 1edbbe2a2e8cf4ca6f49a7a817b99796fc5d7f96..fa810aac76bb6950fd5a3359cf794abe7f1ad5d7 100755
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -1538,7 +1538,11 @@ void LLAgentWearables::userUpdateAttachments(LLInventoryModel::item_array_t& obj
 	std::set<LLUUID> requested_item_ids;
 	std::set<LLUUID> current_item_ids;
 	for (S32 i=0; i<obj_item_array.count(); i++)
-		requested_item_ids.insert(obj_item_array[i].get()->getLinkedUUID());
+	{
+		const LLUUID & requested_id = obj_item_array[i].get()->getLinkedUUID();
+		//llinfos << "Requested attachment id " << requested_id << llendl;
+		requested_item_ids.insert(requested_id);
+	}
 
 	// Build up list of objects to be removed and items currently attached.
 	llvo_vec_t objects_to_remove;
@@ -1555,17 +1559,28 @@ void LLAgentWearables::userUpdateAttachments(LLInventoryModel::item_array_t& obj
 			if (objectp)
 			{
 				LLUUID object_item_id = objectp->getAttachmentItemID();
+
+				bool remove_attachment = true;
 				if (requested_item_ids.find(object_item_id) != requested_item_ids.end())
-				{
-					// Object currently worn, was requested.
+				{	// Object currently worn, was requested to keep it
 					// Flag as currently worn so we won't have to add it again.
-					current_item_ids.insert(object_item_id);
+					remove_attachment = false;
 				}
-				else
+				else if (objectp->isTempAttachment())
+				{	// Check if we should keep this temp attachment
+					remove_attachment = LLAppearanceMgr::instance().shouldRemoveTempAttachment(objectp->getID());
+				}
+
+				if (remove_attachment)
 				{
-					// object currently worn, not requested.
+					// llinfos << "found object to remove, id " << objectp->getID() << ", item " << objectp->getAttachmentItemID() << llendl;
 					objects_to_remove.push_back(objectp);
 				}
+				else
+				{
+					// llinfos << "found object to keep, id " << objectp->getID() << ", item " << objectp->getAttachmentItemID() << llendl;
+					current_item_ids.insert(object_item_id);
+				}
 			}
 		}
 	}
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index fd9236c8b384cf6403edb779c320396cc1a80e04..da1609297e434fe036d0f6a135786b7f4722ebe9 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -3415,21 +3415,50 @@ void LLAppearanceMgr::removeItemsFromAvatar(const uuid_vec_t& ids_to_remove)
 		llwarns << "called with empty list, nothing to do" << llendl;
 	}
 	for (uuid_vec_t::const_iterator it = ids_to_remove.begin(); it != ids_to_remove.end(); ++it)
-			{
+	{
 		const LLUUID& id_to_remove = *it;
 		const LLUUID& linked_item_id = gInventory.getLinkedItemID(id_to_remove);
 		removeCOFItemLinks(linked_item_id);
-			}
-	updateAppearanceFromCOF();
+		addDoomedTempAttachment(linked_item_id);
 	}
+	updateAppearanceFromCOF();
+}
 
 void LLAppearanceMgr::removeItemFromAvatar(const LLUUID& id_to_remove)
 {
 	LLUUID linked_item_id = gInventory.getLinkedItemID(id_to_remove);
 	removeCOFItemLinks(linked_item_id);
+	addDoomedTempAttachment(linked_item_id);
 	updateAppearanceFromCOF();
 }
 
+
+// Adds the given item ID to mDoomedTempAttachmentIDs iff it's a temp attachment
+void LLAppearanceMgr::addDoomedTempAttachment(const LLUUID& id_to_remove)
+{
+	LLViewerObject * attachmentp = gAgentAvatarp->findAttachmentByID(id_to_remove);
+	if (attachmentp &&
+		attachmentp->isTempAttachment())
+	{	// If this is a temp attachment and we want to remove it, record the ID 
+		// so it will be deleted when attachments are synced up with COF
+		mDoomedTempAttachmentIDs.insert(id_to_remove);
+		//llinfos << "Will remove temp attachment id " << id_to_remove << llendl;
+	}
+}
+
+// Find AND REMOVES the given UUID from mDoomedTempAttachmentIDs
+bool LLAppearanceMgr::shouldRemoveTempAttachment(const LLUUID& item_id)
+{
+	doomed_temp_attachments_t::iterator iter = mDoomedTempAttachmentIDs.find(item_id);
+	if (iter != mDoomedTempAttachmentIDs.end())
+	{
+		mDoomedTempAttachmentIDs.erase(iter);
+		return true;
+	}
+	return false;
+}
+
+
 bool LLAppearanceMgr::moveWearable(LLViewerInventoryItem* item, bool closer_to_body)
 {
 	if (!item || !item->isWearableType()) return false;
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index 46252afbde14799662de45582dbf63150c1f819d..5ec80f1cf086d17956ca43e1a3e11571267b9c53 100755
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -142,6 +142,9 @@ public:
 	void removeAllClothesFromAvatar();
 	void removeAllAttachmentsFromAvatar();
 
+	// Special handling of temp attachments, which are not in the COF
+	bool shouldRemoveTempAttachment(const LLUUID& item_id);
+
 	//has the current outfit changed since it was loaded?
 	bool isOutfitDirty() { return mOutfitIsDirty; }
 
@@ -239,6 +242,12 @@ private:
 
 	std::auto_ptr<LLOutfitUnLockTimer> mUnlockOutfitTimer;
 
+	// Set of temp attachment UUIDs that should be removed
+	typedef std::set<LLUUID> doomed_temp_attachments_t;
+	doomed_temp_attachments_t	mDoomedTempAttachmentIDs;
+
+	void addDoomedTempAttachment(const LLUUID& id_to_remove);
+
 	//////////////////////////////////////////////////////////////////////////////////
 	// Item-specific convenience functions 
 public:
diff --git a/indra/newview/llautoreplace.cpp b/indra/newview/llautoreplace.cpp
index 1d72397cbc1d4d22c215b29c57bee20348876659..dd9354fe3a8b7d8f31a62ef83024a2fab509fafd 100755
--- a/indra/newview/llautoreplace.cpp
+++ b/indra/newview/llautoreplace.cpp
@@ -39,7 +39,7 @@ void LLAutoReplace::autoreplaceCallback(S32& replacement_start, S32& replacement
 	replacement_length = 0;
 	replacement_string.clear();
 
-	static LLCachedControl<bool> perform_autoreplace(gSavedSettings, "AutoReplace");
+	static LLCachedControl<bool> perform_autoreplace(gSavedSettings, "AutoReplace", 0);
 	if (perform_autoreplace)
 	{
 		S32 word_end = cursor_pos - 1;
@@ -679,7 +679,7 @@ bool LLAutoReplaceSettings::decreaseListPriority(std::string listName)
 std::string LLAutoReplaceSettings::replaceWord(const std::string currentWord)
 {
 	std::string returnedWord = currentWord; // in case no replacement is found
-	static LLCachedControl<bool> autoreplace_enabled(gSavedSettings, "AutoReplace");
+	static LLCachedControl<bool> autoreplace_enabled(gSavedSettings, "AutoReplace", false);
 	if ( autoreplace_enabled )
 	{
 		LL_DEBUGS("AutoReplace")<<"checking '"<<currentWord<<"'"<< LL_ENDL;
diff --git a/indra/newview/llavatarrenderinfoaccountant.cpp b/indra/newview/llavatarrenderinfoaccountant.cpp
index 9e3225a2649dfbe2dea1af3c73f4930833368386..77d734cbfe3ee73f2ef099881b26abf69a8ace8b 100644
--- a/indra/newview/llavatarrenderinfoaccountant.cpp
+++ b/indra/newview/llavatarrenderinfoaccountant.cpp
@@ -336,7 +336,7 @@ void LLAvatarRenderInfoAccountant::idle()
 		sRenderInfoReportTimer.resetWithExpiry(SECS_BETWEEN_REGION_SCANS);
 	}
 
-	static LLCachedControl<U32> render_auto_mute_functions(gSavedSettings, "RenderAutoMuteFunctions");
+	static LLCachedControl<U32> render_auto_mute_functions(gSavedSettings, "RenderAutoMuteFunctions", 0);
 	static U32 prev_render_auto_mute_functions = (U32) -1;
 	if (prev_render_auto_mute_functions != render_auto_mute_functions)
 	{
diff --git a/indra/newview/llblocklist.cpp b/indra/newview/llblocklist.cpp
index 066cb71677a810488557f1594ff32806256c66cd..3849fbeb54b33fd0344b8827518ec1c7077286c7 100755
--- a/indra/newview/llblocklist.cpp
+++ b/indra/newview/llblocklist.cpp
@@ -41,10 +41,14 @@ static const LLBlockListNameTypeComparator	NAME_TYPE_COMPARATOR;
 LLBlockList::LLBlockList(const Params& p)
 :	LLFlatListViewEx(p),
  	mSelectedItem(NULL),
- 	mDirty(true)
+ 	mDirty(true),
+	mShouldAddAll(true),
+	mActionType(NONE),
+	mMuteListSize(0)
 {
 
 	LLMuteList::getInstance()->addObserver(this);
+	mMuteListSize = LLMuteList::getInstance()->getMutes().size();
 
 	// Set up context menu.
 	LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
@@ -73,6 +77,41 @@ LLBlockList::~LLBlockList()
 	LLMuteList::getInstance()->removeObserver(this);
 }
 
+void LLBlockList::createList()
+{
+	std::vector<LLMute> mutes = LLMuteList::instance().getMutes();
+	std::vector<LLMute>::const_iterator mute_it = mutes.begin();
+
+	for (; mute_it != mutes.end(); ++mute_it)
+	{
+		addNewItem(&*mute_it);
+	}
+}
+
+BlockListActionType LLBlockList::getCurrentMuteListActionType()
+{
+	BlockListActionType type = NONE;
+	U32 curSize = LLMuteList::getInstance()->getMutes().size();
+	if( curSize > mMuteListSize)
+		type = ADD;
+	else if(curSize < mMuteListSize)
+		type = REMOVE;
+
+	return type;
+}
+
+void LLBlockList::onChangeDetailed(const LLMute &mute)
+{
+	mActionType = getCurrentMuteListActionType();
+
+	mCurItemId = mute.mID;
+	mCurItemName = mute.mName;
+	mCurItemType = mute.mType;
+	mCurItemFlags = mute.mFlags;
+
+	refresh();
+}
+
 BOOL LLBlockList::handleRightMouseDown(S32 x, S32 y, MASK mask)
 {
 	BOOL handled = LLUICtrl::handleRightMouseDown(x, y, mask);
@@ -88,6 +127,16 @@ BOOL LLBlockList::handleRightMouseDown(S32 x, S32 y, MASK mask)
 	return handled;
 }
 
+void LLBlockList::removeListItem(const LLMute* mute)
+{
+	removeItemByUUID(mute->mID);
+}
+
+void LLBlockList::hideListItem(LLBlockedListItem* item, bool show)
+{
+	item->setVisible(show);
+}
+
 void LLBlockList::setNameFilter(const std::string& filter)
 {
 	std::string filter_upper = filter;
@@ -136,28 +185,56 @@ void LLBlockList::refresh()
 	bool have_filter = !mNameFilter.empty();
 
 	// save selection to restore it after list rebuilt
-	LLUUID selected = getSelectedUUID();
+	LLUUID selected = getSelectedUUID(), next_selected;
 
-	// calling refresh may be initiated by removing currently selected item
-	// so select next item and save the selection to restore it after list rebuilt
+	if(mShouldAddAll)	// creating list of blockers
+	{
+		clear();
+		createList();
+		mShouldAddAll = false;
+	}
+	else
+	{
+		// handle remove/add functionality
+		LLMute mute(mCurItemId, mCurItemName, mCurItemType, mCurItemFlags);
+		if(mActionType == ADD)
+		{
+			addNewItem(&mute);
+		}
+		else if(mActionType == REMOVE)
+		{
+			if(selected == mute.mID)
+			{
+				// we are going to remove currently selected item, so select next item and save the selection to restore it
 	if (!selectNextItemPair(false, true))
 	{
 		selectNextItemPair(true, true);
 	}
-	LLUUID next_selected = getSelectedUUID();
-
-	clear();
-
-	std::vector<LLMute> mutes = LLMuteList::instance().getMutes();
-	std::vector<LLMute>::const_iterator mute_it = mutes.begin();
+				next_selected = getSelectedUUID();
+			}
+			removeListItem(&mute);
+		}
+		mActionType = NONE;
+	}
 
-	for (; mute_it != mutes.end(); ++mute_it)
+	// handle filter functionality
+	if(have_filter || (!have_filter && !mPrevNameFilter.empty()))
 	{
-		if (have_filter && !findInsensitive(mute_it->mName, mNameFilter))
-			continue;
+		// we should update visibility of our items if previous filter was not empty
+		std::vector < LLPanel* > allItems;
+		getItems(allItems);
+		std::vector < LLPanel* >::iterator it = allItems.begin();
 
-		addNewItem(&*mute_it);
+		for(; it != allItems.end() ; ++it)
+		{
+			LLBlockedListItem * curItem = dynamic_cast<LLBlockedListItem *> (*it);
+			if(curItem)
+	{
+				hideListItem(curItem, findInsensitive(curItem->getName(), mNameFilter));
+			}
+		}
 	}
+	mPrevNameFilter = mNameFilter;
 
 	if (getItemPair(selected))
 	{
@@ -169,6 +246,7 @@ void LLBlockList::refresh()
 		// previously selected item was removed, so select next item
 		selectItemPair(getItemPair(next_selected), true);
 	}
+	mMuteListSize = LLMuteList::getInstance()->getMutes().size();
 
 	// Sort the list.
 	sort();
diff --git a/indra/newview/llblocklist.h b/indra/newview/llblocklist.h
index 1a215710f463ade3bf5d1f6edee32e808e4761dd..bac79f869e3c068d4fc084e4cbb373a9f534a5b3 100755
--- a/indra/newview/llblocklist.h
+++ b/indra/newview/llblocklist.h
@@ -34,6 +34,8 @@
 class LLBlockedListItem;
 class LLMute;
 
+enum BlockListActionType {NONE, ADD, REMOVE};
+
 /**
  * List of blocked avatars and objects.
  * This list represents contents of the LLMuteList.
@@ -56,7 +58,8 @@ public:
 	LLToggleableMenu*	getContextMenu() const { return mContextMenu.get(); }
 	LLBlockedListItem*	getBlockedItem() const;
 
-	virtual void onChange() { refresh(); }
+	virtual void onChange() { }
+	virtual void onChangeDetailed(const LLMute& );
 	virtual void draw();
 
 	void setNameFilter(const std::string& filter);
@@ -67,18 +70,32 @@ public:
 private:
 
 	void addNewItem(const LLMute* mute);
+	void removeListItem(const LLMute* mute);
+	void hideListItem(LLBlockedListItem* item, bool show);
 	void setDirty(bool dirty = true) { mDirty = dirty; }
 	bool findInsensitive(std::string haystack, const std::string& needle_upper);
 
 	bool isActionEnabled(const LLSD& userdata);
 	void onCustomAction (const LLSD& userdata);
+	void createList();
 
+	BlockListActionType getCurrentMuteListActionType();
 
 	LLHandle<LLToggleableMenu>	mContextMenu;
 
 	LLBlockedListItem*			mSelectedItem;
 	std::string 				mNameFilter;
 	bool 						mDirty;
+	bool						mShouldAddAll;
+	BlockListActionType			mActionType;
+	U32							mMuteListSize;
+
+	// This data is used to save information about item that currently changed(added or removed) 
+	LLUUID						mCurItemId;
+	std::string					mCurItemName;
+	LLMute::EType 				mCurItemType;
+	U32							mCurItemFlags;
+	std::string					mPrevNameFilter;
 
 };
 
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index 43a733f918725afe2d2f9634f43d517adbc40ed3..2eb4074c97bac596dfd1af1ff165d48fa32dd086 100755
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -60,6 +60,8 @@
 #include "llstring.h"
 #include "llurlaction.h"
 #include "llviewercontrol.h"
+#include "llviewerobjectlist.h"
+#include "llmutelist.h"
 
 static LLDefaultChildRegistry::Register<LLChatHistory> r("chat_history");
 
@@ -181,6 +183,18 @@ public:
 		{
 			LLAvatarActions::startIM(getAvatarId());
 		}
+		else if (level == "teleport")
+		{
+			LLAvatarActions::offerTeleport(getAvatarId());
+		}
+		else if (level == "voice_call")
+		{
+			LLAvatarActions::startCall(getAvatarId());
+		}
+		else if (level == "chat_history")
+		{
+			LLAvatarActions::viewChatHistory(getAvatarId());
+		}
 		else if (level == "add")
 		{
 			LLAvatarActions::requestFriendshipDialog(getAvatarId(), mFrom);
@@ -189,13 +203,75 @@ public:
 		{
 			LLAvatarActions::removeFriendDialog(getAvatarId());
 		}
+		else if (level == "invite_to_group")
+		{
+			LLAvatarActions::inviteToGroup(getAvatarId());
+		}
+		else if (level == "zoom_in")
+		{
+			handle_zoom_to_object(getAvatarId());
+		}
+		else if (level == "map")
+		{
+			LLAvatarActions::showOnMap(getAvatarId());
+		}
+		else if (level == "share")
+		{
+			LLAvatarActions::share(getAvatarId());
+		}
+		else if (level == "pay")
+		{
+			LLAvatarActions::pay(getAvatarId());
+		}
+		else if(level == "block_unblock")
+		{
+			mute(getAvatarId(), LLMute::flagVoiceChat);
+		}
+		else if(level == "mute_unmute")
+		{
+			mute(getAvatarId(), LLMute::flagTextChat);
+		}
+	}
+
+	bool onAvatarIconContextMenuItemChecked(const LLSD& userdata)
+	{
+		std::string level = userdata.asString();
+
+		if (level == "is_blocked")
+		{
+			return LLMuteList::getInstance()->isMuted(getAvatarId(), LLMute::flagVoiceChat);
+		}
+		if (level == "is_muted")
+		{
+			return LLMuteList::getInstance()->isMuted(getAvatarId(), LLMute::flagTextChat);
+		}
+		return false;
+	}
+
+	void mute(const LLUUID& participant_id, U32 flags)
+	{
+		BOOL is_muted = LLMuteList::getInstance()->isMuted(participant_id, flags);
+		std::string name;
+		gCacheName->getFullName(participant_id, name);
+		LLMute mute(participant_id, name, LLMute::AGENT);
+
+		if (!is_muted)
+		{
+			LLMuteList::getInstance()->add(mute, flags);
+		}
+		else
+		{
+			LLMuteList::getInstance()->remove(mute, flags);
+		}
 	}
 
 	BOOL postBuild()
 	{
 		LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
+		LLUICtrl::EnableCallbackRegistry::ScopedRegistrar registrar_enable;
 
 		registrar.add("AvatarIcon.Action", boost::bind(&LLChatHistoryHeader::onAvatarIconContextMenuItemClicked, this, _2));
+		registrar_enable.add("AvatarIcon.Check", boost::bind(&LLChatHistoryHeader::onAvatarIconContextMenuItemChecked, this, _2));
 		registrar.add("ObjectIcon.Action", boost::bind(&LLChatHistoryHeader::onObjectIconContextMenuItemClicked, this, _2));
 
 		LLMenuGL* menu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_avatar_icon.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
@@ -460,7 +536,7 @@ protected:
 
 		if(menu)
 		{
-			bool is_friend = LLAvatarTracker::instance().getBuddyInfo(mAvatarID) != NULL;
+			bool is_friend = LLAvatarActions::isFriend(mAvatarID);
 			
 			menu->setItemEnabled("Add Friend", !is_friend);
 			menu->setItemEnabled("Remove Friend", is_friend);
@@ -470,13 +546,34 @@ protected:
 				menu->setItemEnabled("Add Friend", false);
 				menu->setItemEnabled("Send IM", false);
 				menu->setItemEnabled("Remove Friend", false);
+				menu->setItemEnabled("Offer Teleport",false);
+				menu->setItemEnabled("Voice Call", false);
+				menu->setItemEnabled("Invite Group", false);
+				menu->setItemEnabled("Zoom In", false);
+				menu->setItemEnabled("Share", false);
+				menu->setItemEnabled("Pay", false);
+				menu->setItemEnabled("Block Unblock", false);
+				menu->setItemEnabled("Mute Text", false);
 			}
-
-			if (mSessionID == LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, mAvatarID))
+			else
+			{
+				LLUUID currentSessionID = LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, mAvatarID);
+				if (mSessionID == currentSessionID)
 			{
 				menu->setItemVisible("Send IM", false);
 			}
+				menu->setItemEnabled("Offer Teleport", LLAvatarActions::canOfferTeleport(mAvatarID));
+				menu->setItemEnabled("Voice Call", LLAvatarActions::canCall());
+
+				// We should only show 'Zoom in' item in a nearby chat
+				bool should_show_zoom = !LLIMModel::getInstance()->findIMSession(currentSessionID);
+				menu->setItemVisible("Zoom In", should_show_zoom && gObjectList.findObject(mAvatarID));	
+				menu->setItemEnabled("Block Unblock", LLAvatarActions::canBlock(mAvatarID));
+				menu->setItemEnabled("Mute Text", LLAvatarActions::canBlock(mAvatarID));
+			}
 
+			menu->setItemEnabled("Chat History", LLLogChat::isTranscriptExist(mAvatarID));
+			menu->setItemEnabled("Map", (LLAvatarTracker::instance().isBuddyOnline(mAvatarID) && is_agent_mappable(mAvatarID)) || gAgent.isGodlike() );
 			menu->buildDrawLabels();
 			menu->updateParent(LLMenuGL::sMenuContainer);
 			LLMenuGL::showPopup(this, menu, x, y);
@@ -968,6 +1065,22 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
 	// notify processing
 	if (chat.mNotifId.notNull())
 	{
+		bool create_toast = true;
+		for (LLToastNotifyPanel::instance_iter ti(LLToastNotifyPanel::beginInstances())
+			, tend(LLToastNotifyPanel::endInstances()); ti != tend; ++ti)
+		{
+			LLToastNotifyPanel& panel = *ti;
+			LLIMToastNotifyPanel * imtoastp = dynamic_cast<LLIMToastNotifyPanel *>(&panel);
+			const std::string& notification_name = panel.getNotificationName();
+			if (notification_name == "OfferFriendship" && panel.isControlPanelEnabled() && imtoastp)
+			{
+				create_toast = false;
+				break;
+			}
+		}
+
+		if (create_toast)
+		{
 		LLNotificationPtr notification = LLNotificationsUtil::find(chat.mNotifId);
 		if (notification != NULL)
 		{
@@ -989,6 +1102,7 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
 			mEditor->appendWidget(params, "\n", false);
 		}
 	}
+	}
 
 	// usual messages showing
 	else
diff --git a/indra/newview/llconversationview.cpp b/indra/newview/llconversationview.cpp
index 9faa12b2eeade59bba5d8d7797d4c19b318804bb..82d3fe74c00ef264b317f2d2aa69c536f07b8ba7 100644
--- a/indra/newview/llconversationview.cpp
+++ b/indra/newview/llconversationview.cpp
@@ -267,6 +267,23 @@ BOOL LLConversationViewSession::handleMouseDown( S32 x, S32 y, MASK mask )
     //This node (conversation) was selected and a child (participant) was not
     if(result && getRoot())
     {
+
+		if(getRoot()->getCurSelectedItem() == this)
+		{
+			LLConversationItem* item = dynamic_cast<LLConversationItem *>(getViewModelItem());
+			LLUUID session_id = item? item->getUUID() : LLUUID();
+
+			LLFloaterIMContainer *im_container = LLFloaterReg::getTypedInstance<LLFloaterIMContainer>("im_container");
+			if (im_container->isConversationsPaneCollapsed() && im_container->getSelectedSession() == session_id)
+			{
+				im_container->collapseMessagesPane(!im_container->isMessagesPaneCollapsed());
+			}
+			else
+			{
+				im_container->collapseMessagesPane(false);
+			}
+
+		}
 		selectConversationItem();
     }
 
@@ -318,7 +335,6 @@ void LLConversationViewSession::selectConversationItem()
 		LLFloaterIMContainer *im_container = LLFloaterReg::getTypedInstance<LLFloaterIMContainer>("im_container");
 		im_container->flashConversationItemWidget(session_id,false);
 		im_container->selectConversationPair(session_id, false);
-		im_container->collapseMessagesPane(false);
 	}
 }
 
diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp
index 6c5d229dbab8af41f8950f2abbb88585c92f39c1..e27dc279f4e71745708b917e1e67aa36c2683b21 100755
--- a/indra/newview/lldrawpoolalpha.cpp
+++ b/indra/newview/lldrawpoolalpha.cpp
@@ -382,9 +382,7 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask, S32 pass)
 			bool is_particle_or_hud_particle = group->mSpatialPartition->mPartitionType == LLViewerRegion::PARTITION_PARTICLE
 													  || group->mSpatialPartition->mPartitionType == LLViewerRegion::PARTITION_HUD_PARTICLE;
 
-			bool draw_glow_for_this_partition = mVertexShaderLevel > 0 && // no shaders = no glow.
-				// All particle systems seem to come off the wire with texture entries which claim that they glow.  This is probably a bug in the data.  Suppress.
-				!is_particle_or_hud_particle;
+			bool draw_glow_for_this_partition = mVertexShaderLevel > 0; // no shaders = no glow.
 
 			static LLFastTimer::DeclareTimer FTM_RENDER_ALPHA_GROUP_LOOP("Alpha Group");
 			LLFastTimer t(FTM_RENDER_ALPHA_GROUP_LOOP);
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp
index 369273bca6f20d345371412602f1ee267f9f8cdb..ae62be0ad010d88b2c44793b2c3399ede10f3f97 100755
--- a/indra/newview/llface.cpp
+++ b/indra/newview/llface.cpp
@@ -1386,7 +1386,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 		}
 	}
 	
-	static LLCachedControl<bool> use_transform_feedback(gSavedSettings, "RenderUseTransformFeedback");
+	static LLCachedControl<bool> use_transform_feedback(gSavedSettings, "RenderUseTransformFeedback", false);
 
 #ifdef GL_TRANSFORM_FEEDBACK_BUFFER
 	if (use_transform_feedback &&
@@ -1526,7 +1526,6 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 		}
 
 		glBindBufferARB(GL_TRANSFORM_FEEDBACK_BUFFER, 0);
-
 		gGL.popMatrix();
 
 		if (cur_shader)
diff --git a/indra/newview/llface.h b/indra/newview/llface.h
index 66b5f137401f38379169f7f8ba4d70e4f7b23e5f..c9037ce1eba8f91f8f670391d950d247a84e64cd 100755
--- a/indra/newview/llface.h
+++ b/indra/newview/llface.h
@@ -194,7 +194,8 @@ public:
 
 	void		setSize(S32 numVertices, S32 num_indices = 0, bool align = false);
 	
-	BOOL		genVolumeBBoxes(const LLVolume &volume, S32 f,const LLMatrix4& mat, BOOL global_volume = FALSE);
+	BOOL		genVolumeBBoxes(const LLVolume &volume, S32 f,
+									const LLMatrix4& mat_vert_in, BOOL global_volume = FALSE);
 	
 	void		init(LLDrawable* drawablep, LLViewerObject* objp);
 	void		destroy();
diff --git a/indra/newview/llfacebookconnect.cpp b/indra/newview/llfacebookconnect.cpp
index 611d18d6d6133db2553cbe79473200d800cd2896..9a20ce8f1bc701c2febbfa90e0db15689396811b 100644
--- a/indra/newview/llfacebookconnect.cpp
+++ b/indra/newview/llfacebookconnect.cpp
@@ -356,13 +356,18 @@ void LLFacebookConnect::openFacebookWeb(std::string url)
 
 std::string LLFacebookConnect::getFacebookConnectURL(const std::string& route, bool include_read_from_master)
 {
-	std::string url = gAgent.getRegion()->getCapability("FacebookConnect");
-	url += route;
+    std::string url("");
+    LLViewerRegion *regionp = gAgent.getRegion();
+    if (regionp)
+    {
+        url = regionp->getCapability("FacebookConnect");
+        url += route;
     
-	if (include_read_from_master && mReadFromMaster)
-	{
-		url += "?read_from_master=true";
-	}
+        if (include_read_from_master && mReadFromMaster)
+        {
+            url += "?read_from_master=true";
+        }
+    }
 	return url;
 }
 
diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp
index 8e1a1df211bc705189095992de22680ca9f3ec4c..06119620de1287281156a0f5c31e6611ac20e2ad 100755
--- a/indra/newview/llfasttimerview.cpp
+++ b/indra/newview/llfasttimerview.cpp
@@ -1545,7 +1545,7 @@ void LLFastTimerView::doAnalysis(std::string baseline, std::string target, std::
 		return ;
 	}
 }
-void	LLFastTimerView::onClickCloseBtn()
+void	LLFastTimerView::onClickCloseBtn(bool)
 {
 	setVisible(false);
 }
diff --git a/indra/newview/llfasttimerview.h b/indra/newview/llfasttimerview.h
index 5766cfa0b0525f0012d75c641dbed57e2d60f25b..1349b1e99cdd8aafe81b94c5d4245ea23f93de2f 100755
--- a/indra/newview/llfasttimerview.h
+++ b/indra/newview/llfasttimerview.h
@@ -63,7 +63,7 @@ public:
 	F64 getTime(const std::string& name);
 
 protected:
-	virtual	void	onClickCloseBtn();
+	virtual	void	onClickCloseBtn(bool app_quitting = false);
 private:	
 	typedef std::vector<std::vector<S32> > bar_positions_t;
 	bar_positions_t mBarStart;
diff --git a/indra/newview/llfilepicker.cpp b/indra/newview/llfilepicker.cpp
index c151b51c23ba24cc9450256329c0ff8189b13d17..16eacc9392fb70382dc9466c2e46582f9211b0c1 100755
--- a/indra/newview/llfilepicker.cpp
+++ b/indra/newview/llfilepicker.cpp
@@ -422,6 +422,19 @@ BOOL LLFilePicker::getSaveFile(ESaveFilter filter, const std::string& filename)
 			L"PNG Images (*.png)\0*.png\0" \
 			L"\0";
 		break;
+	case FFSAVE_TGAPNG:
+		if (filename.empty())
+		{
+			wcsncpy( mFilesW,L"untitled.png", FILENAME_BUFFER_SIZE);	/*Flawfinder: ignore*/
+			//PNG by default
+		}
+		mOFN.lpstrDefExt = L"png";
+		mOFN.lpstrFilter =
+			L"PNG Images (*.png)\0*.png\0" \
+			L"Targa Images (*.tga)\0*.tga\0" \
+			L"\0";
+		break;
+		
 	case FFSAVE_JPEG:
 		if (filename.empty())
 		{
@@ -640,13 +653,16 @@ bool	LLFilePicker::doNavSaveDialog(ESaveFilter filter, const std::string& filena
 			creator = "TVOD";
 			extension = "wav";
 			break;
-		
 		case FFSAVE_TGA:
 			type = "TPIC";
 			creator = "prvw";
 			extension = "tga";
 			break;
-		
+		case FFSAVE_TGAPNG:
+			type = "PNG";
+			creator = "prvw";
+			extension = "png";
+			break;
 		case FFSAVE_BMP:
 			type = "BMPf";
 			creator = "prvw";
@@ -921,6 +937,22 @@ void LLFilePicker::chooser_responder(GtkWidget *widget, gint response, gpointer
 		g_slist_free (file_list);
 	}
 
+	// let's save the extension of the last added file(considering current filter)
+	GtkFileFilter *gfilter = gtk_file_chooser_get_filter(GTK_FILE_CHOOSER(widget));
+	if(gfilter)
+	{
+		std::string filter = gtk_file_filter_get_name(gfilter);
+
+		if(filter == LLTrans::getString("png_image_files"))
+		{
+			picker->mCurrentExtension = ".png";
+		}
+		else if(filter == LLTrans::getString("targa_image_files"))
+		{
+			picker->mCurrentExtension = ".tga";
+		}
+	}
+
 	// set the default path for this usage context.
 	const char* cur_folder = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(widget));
 	if (cur_folder != NULL)
@@ -1092,6 +1124,24 @@ static std::string add_dictionary_filter_to_gtkchooser(GtkWindow *picker)
 							LLTrans::getString("dictionary_files") + " (*.dic; *.xcu)");
 }
 
+static std::string add_save_texture_filter_to_gtkchooser(GtkWindow *picker)
+{
+	GtkFileFilter *gfilter_tga = gtk_file_filter_new();
+	GtkFileFilter *gfilter_png = gtk_file_filter_new();
+
+	gtk_file_filter_add_pattern(gfilter_tga, "*.tga");
+	gtk_file_filter_add_mime_type(gfilter_png, "image/png");
+	std::string caption = LLTrans::getString("save_texture_image_files") + " (*.tga; *.png)";
+	gtk_file_filter_set_name(gfilter_tga, LLTrans::getString("targa_image_files").c_str());
+	gtk_file_filter_set_name(gfilter_png, LLTrans::getString("png_image_files").c_str());
+
+	gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(picker),
+					gfilter_png);
+	gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(picker),
+					gfilter_tga);
+	return caption;
+}
+
 BOOL LLFilePicker::getSaveFile( ESaveFilter filter, const std::string& filename )
 {
 	BOOL rtn = FALSE;
@@ -1129,6 +1179,15 @@ BOOL LLFilePicker::getSaveFile( ESaveFilter filter, const std::string& filename
 				(picker, "image/bmp", LLTrans::getString("bitmap_image_files") + " (*.bmp)");
 			suggest_ext = ".bmp";
 			break;
+		case FFSAVE_PNG:
+			caption += add_simple_mime_filter_to_gtkchooser
+				(picker, "image/png", LLTrans::getString("png_image_files") + " (*.png)");
+			suggest_ext = ".png";
+			break;
+		case FFSAVE_TGAPNG:
+			caption += add_save_texture_filter_to_gtkchooser(picker);
+			suggest_ext = ".png";
+			break;
 		case FFSAVE_AVI:
 			caption += add_simple_mime_filter_to_gtkchooser
 				(picker, "video/x-msvideo",
@@ -1181,9 +1240,17 @@ BOOL LLFilePicker::getSaveFile( ESaveFilter filter, const std::string& filename
 		}
 
 		gtk_widget_show_all(GTK_WIDGET(picker));
+
 		gtk_main();
 
 		rtn = (getFileCount() == 1);
+
+		if(rtn && filter == FFSAVE_TGAPNG)
+		{
+			std::string selected_file = mFiles.back();
+			mFiles.pop_back();
+			mFiles.push_back(selected_file + mCurrentExtension);
+		}
 	}
 
 	gViewerWindow->getWindow()->afterDialog();
diff --git a/indra/newview/llfilepicker.h b/indra/newview/llfilepicker.h
index 0d279f73f3065d696877ebeec092e34318271022..f0f82c51db0a218acef6ae0d1d41dbd0b5c99476 100755
--- a/indra/newview/llfilepicker.h
+++ b/indra/newview/llfilepicker.h
@@ -107,6 +107,7 @@ public:
 		FFSAVE_PNG = 13,
 		FFSAVE_JPEG = 14,
 		FFSAVE_SCRIPT = 15,
+		FFSAVE_TGAPNG = 16
 	};
 
 	// open the dialog. This is a modal operation
@@ -175,6 +176,8 @@ private:
 	// we remember the last path that was accessed for a particular usage
 	std::map <std::string, std::string> mContextToPathMap;
 	std::string mCurContextName;
+	// we also remember the extension of the last added file.
+	std::string mCurrentExtension;
 #endif
 
 	std::vector<std::string> mFiles;
diff --git a/indra/newview/llfloaterconversationpreview.cpp b/indra/newview/llfloaterconversationpreview.cpp
index 4a85160f95df2c4c37cbc8dabe8c72d3563dc37a..a303c2c6b3bb4ce74a945e63d53a3d9adf78f018 100755
--- a/indra/newview/llfloaterconversationpreview.cpp
+++ b/indra/newview/llfloaterconversationpreview.cpp
@@ -44,7 +44,8 @@ LLFloaterConversationPreview::LLFloaterConversationPreview(const LLSD& session_i
 	mPageSize(gSavedSettings.getS32("ConversationHistoryPageSize")),
 	mAccountName(session_id[LL_FCP_ACCOUNT_NAME]),
 	mCompleteName(session_id[LL_FCP_COMPLETE_NAME]),
-	mMutex(NULL)
+	mMutex(NULL),
+	mShowHistory(false)
 {
 }
 
@@ -91,7 +92,6 @@ BOOL LLFloaterConversationPreview::postBuild()
 	mPageSpinner->setMinValue(1);
 	mPageSpinner->set(1);
 	mPageSpinner->setEnabled(false);
-	mChatHistoryLoaded = false;
 	LLLogChat::startChatHistoryThread(file, load_params);
 	return LLFloater::postBuild();
 }
@@ -111,33 +111,29 @@ void LLFloaterConversationPreview::setPages(std::list<LLSD>& messages,const std:
 
 		std::string total_page_num = llformat("/ %d", mCurrentPage+1);
 		getChild<LLTextBox>("page_num_label")->setValue(total_page_num);
-		mChatHistoryLoaded = true;
+		mShowHistory = true;
 	}
 }
 
 void LLFloaterConversationPreview::draw()
 {
-	if(mChatHistoryLoaded)
+	if(mShowHistory)
 	{
 		showHistory();
-		mChatHistoryLoaded = false;
+		mShowHistory = false;
 	}
 	LLFloater::draw();
 }
 
 void LLFloaterConversationPreview::onOpen(const LLSD& key)
 {
-	if(mChatHistoryLoaded)
-	{
-		showHistory();
-	}
+	mShowHistory = true;
 }
 
 void LLFloaterConversationPreview::showHistory()
 {
-	// additional protection to avoid changes of mMessages in setPages()
+	// additional protection to avoid changes of mMessages in setPages
 	LLMutexLock lock(&mMutex);
-
 	if (!mMessages.size() || mCurrentPage * mPageSize >= mMessages.size())
 	{
 		return;
@@ -198,10 +194,11 @@ void LLFloaterConversationPreview::showHistory()
 void LLFloaterConversationPreview::onMoreHistoryBtnClick()
 {
 	mCurrentPage = (int)(mPageSpinner->getValueF32());
-	if (--mCurrentPage < 0)
+	if (!mCurrentPage)
 	{
 		return;
 	}
 
-	showHistory();
+	mCurrentPage--;
+	mShowHistory = true;
 }
diff --git a/indra/newview/llfloaterconversationpreview.h b/indra/newview/llfloaterconversationpreview.h
index f8796127baafaca6f2e5db8c655722a1f2f1369a..b0488f4ff127d51bdd58417b3cf0629bdc01e318 100755
--- a/indra/newview/llfloaterconversationpreview.h
+++ b/indra/newview/llfloaterconversationpreview.h
@@ -62,7 +62,7 @@ private:
 	std::string		mAccountName;
 	std::string		mCompleteName;
 	std::string     mChatHistoryFileName;
-	bool			mChatHistoryLoaded;
+	bool			mShowHistory;
 };
 
 #endif /* LLFLOATERCONVERSATIONPREVIEW_H_ */
diff --git a/indra/newview/llfloatergroupinvite.cpp b/indra/newview/llfloatergroupinvite.cpp
index 49da4e64b3c512b054961f6c61d4d3d2d14f0de0..d0f32897697386a4fb9eac6a77cbf13523b32144 100755
--- a/indra/newview/llfloatergroupinvite.cpp
+++ b/indra/newview/llfloatergroupinvite.cpp
@@ -30,6 +30,8 @@
 #include "llpanelgroupinvite.h"
 #include "lltrans.h"
 #include "lldraghandle.h"
+#include "llagent.h"
+#include "llgroupmgr.h"
 
 class LLFloaterGroupInvite::impl
 {
@@ -123,6 +125,12 @@ void LLFloaterGroupInvite::showForGroup(const LLUUID& group_id, uuid_vec_t *agen
 	LLFloaterGroupInvite *fgi = get_if_there(impl::sInstances,
 											 group_id,
 											 (LLFloaterGroupInvite*)NULL);
+
+	// refresh group information
+	gAgent.sendAgentDataUpdateRequest();
+	LLGroupMgr::getInstance()->clearGroupData(group_id);
+
+
 	if (!fgi)
 	{
 		fgi = new LLFloaterGroupInvite(group_id);
diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp
index 90b4490e1dcac0fb893fb6405e7cedecaf98d3d7..b5aa309066afd22107d1926fde325c84eee63d13 100755
--- a/indra/newview/llfloaterimcontainer.cpp
+++ b/indra/newview/llfloaterimcontainer.cpp
@@ -101,6 +101,7 @@ LLFloaterIMContainer::~LLFloaterIMContainer()
 
 	gSavedPerAccountSettings.setBOOL("ConversationsListPaneCollapsed", mConversationsPane->isCollapsed());
 	gSavedPerAccountSettings.setBOOL("ConversationsMessagePaneCollapsed", mMessagesPane->isCollapsed());
+	gSavedPerAccountSettings.setBOOL("ConversationsParticipantListCollapsed", !isParticipantListExpanded());
 
 	if (!LLSingleton<LLIMMgr>::destroyed())
 	{
@@ -250,6 +251,11 @@ BOOL LLFloaterIMContainer::postBuild()
 	// Init the sort order now that the root had been created
 	setSortOrder(LLConversationSort(gSavedSettings.getU32("ConversationSortOrder")));
 	
+	//We should expand nearby chat participants list for the new user
+	if(gAgent.isFirstLogin() || !gSavedPerAccountSettings.getBOOL("ConversationsParticipantListCollapsed"))
+	{
+		expandConversation();
+	}
 	// Keep the xml set title around for when we have to overwrite it
 	mGeneralTitle = getTitle();
 	
@@ -715,6 +721,16 @@ void LLFloaterIMContainer::updateResizeLimits()
 	assignResizeLimits();
 }
 
+bool LLFloaterIMContainer::isMessagesPaneCollapsed()
+{
+	return mMessagesPane->isCollapsed();
+}
+
+bool LLFloaterIMContainer::isConversationsPaneCollapsed()
+{
+	return mConversationsPane->isCollapsed();
+}
+
 void LLFloaterIMContainer::collapseMessagesPane(bool collapse)
 {
 	if (mMessagesPane->isCollapsed() == collapse)
@@ -784,8 +800,8 @@ void LLFloaterIMContainer::collapseConversationsPane(bool collapse, bool save_is
 		mConversationsPane->setTargetDim(gSavedPerAccountSettings.getS32("ConversationsListPaneWidth"));
 	}
 
-	S32 delta_width =
-			gSavedPerAccountSettings.getS32("ConversationsListPaneWidth") - mConversationsPane->getMinDim();
+	S32 delta_width = gSavedPerAccountSettings.getS32("ConversationsListPaneWidth") 
+		- mConversationsPane->getMinDim() - mConversationsStack->getPanelSpacing() + 1;
 
 	reshapeFloaterAndSetResizeLimits(collapse, delta_width);
 
@@ -2086,6 +2102,19 @@ void LLFloaterIMContainer::expandConversation()
 		}
 	}
 }
+bool LLFloaterIMContainer::isParticipantListExpanded()
+{
+	bool is_expanded = false;
+	if(!mConversationsPane->isCollapsed())
+	{
+		LLConversationViewSession* widget = dynamic_cast<LLConversationViewSession*>(get_ptr_in_map(mConversationsWidgets,getSelectedSession()));
+		if (widget)
+		{
+			is_expanded = widget->isOpen();
+		}
+	}
+	return is_expanded;
+}
 
 // By default, if torn off session is currently frontmost, LLFloater::isFrontmost() will return FALSE, which can lead to some bugs
 // So LLFloater::isFrontmost() is overriden here to check both selected session and the IM floater itself
@@ -2102,7 +2131,7 @@ BOOL LLFloaterIMContainer::isFrontmost()
 
 // For conversations, closeFloater() (linked to Ctrl-W) does not actually close the floater but the active conversation.
 // This is intentional so it doesn't confuse the user. onClickCloseBtn() closes the whole floater.
-void LLFloaterIMContainer::onClickCloseBtn()
+void LLFloaterIMContainer::onClickCloseBtn(bool app_quitting/* = false*/)
 {
 	// Always unminimize before trying to close.
 	// Most of the time the user will never see this state.
@@ -2111,7 +2140,7 @@ void LLFloaterIMContainer::onClickCloseBtn()
 		LLMultiFloater::setMinimized(FALSE);
 	}
 
-	LLFloater::closeFloater();
+	LLFloater::closeFloater(app_quitting);
 }
 
 void LLFloaterIMContainer::closeHostedFloater()
@@ -2158,7 +2187,7 @@ void LLFloaterIMContainer::closeFloater(bool app_quitting/* = false*/)
 	if(app_quitting)
 	{
 		closeAllConversations();
-		onClickCloseBtn();
+		onClickCloseBtn(app_quitting);
 	}
 	else
 	{
diff --git a/indra/newview/llfloaterimcontainer.h b/indra/newview/llfloaterimcontainer.h
index 36da457cacfb5f34ee4f549eb652ef81ff575a9a..f6d973b9b3be5f7646d3be62b25106d62bc39549 100755
--- a/indra/newview/llfloaterimcontainer.h
+++ b/indra/newview/llfloaterimcontainer.h
@@ -90,6 +90,8 @@ public:
 	static void onCurrentChannelChanged(const LLUUID& session_id);
 
 	void collapseMessagesPane(bool collapse);
+	bool isMessagesPaneCollapsed();
+	bool isConversationsPaneCollapsed();
 	
 	// Callbacks
 	static void idle(void* user_data);
@@ -134,7 +136,7 @@ private:
 	void onStubCollapseButtonClicked();
 	void processParticipantsStyleUpdate();
 	void onSpeakButtonClicked();
-	/*virtual*/ void onClickCloseBtn();
+	/*virtual*/ void onClickCloseBtn(bool app_quitting = false);
 	/*virtual*/ void closeHostedFloater();
 
 	void collapseConversationsPane(bool collapse, bool save_is_allowed=true);
@@ -172,6 +174,7 @@ private:
 	void toggleAllowTextChat(const LLUUID& participant_uuid);
 	void toggleMute(const LLUUID& participant_id, U32 flags);
 	void openNearbyChat();
+	bool isParticipantListExpanded();
 
 	LLButton* mExpandCollapseBtn;
 	LLButton* mStubCollapseBtn;
diff --git a/indra/newview/llfloaterimnearbychat.cpp b/indra/newview/llfloaterimnearbychat.cpp
index 3d77ea4f0bb3ab7fc1861214f39b125173e0ae68..323e84751f6f7b819ba0410562d17d7735fccd65 100755
--- a/indra/newview/llfloaterimnearbychat.cpp
+++ b/indra/newview/llfloaterimnearbychat.cpp
@@ -308,7 +308,8 @@ void LLFloaterIMNearbyChat::onClose(bool app_quitting)
 }
 
 // virtual
-void LLFloaterIMNearbyChat::onClickCloseBtn()
+void LLFloaterIMNearbyChat::onClickCloseBtn(bool)
+
 {
 	if (!isTornOff())
 	{
@@ -493,11 +494,11 @@ void LLFloaterIMNearbyChat::onChatBoxKeystroke()
 			if (!rest_of_match.empty())
 			{
 				mInputEditor->setText(utf8_trigger + rest_of_match); // keep original capitalization for user-entered part
-
 				// Select to end of line, starting from the character
 				// after the last one the user typed.
-				mInputEditor->selectNext(rest_of_match, false);
+				mInputEditor->selectByCursorPosition(utf8_out_str.size()-rest_of_match.size(),utf8_out_str.size());
 			}
+
 		}
 		else if (matchChatTypeTrigger(utf8_trigger, &utf8_out_str))
 		{
diff --git a/indra/newview/llfloaterimnearbychat.h b/indra/newview/llfloaterimnearbychat.h
index 05b48cccb03657a2b3e7f646f04cdc9225eec7c9..f0daacd6a9e7212e572f147f40d3082e7d84a94a 100755
--- a/indra/newview/llfloaterimnearbychat.h
+++ b/indra/newview/llfloaterimnearbychat.h
@@ -95,7 +95,7 @@ protected:
 	void onChatFontChange(LLFontGL* fontp);
 
 	/*virtual*/ void onTearOffClicked();
-	/*virtual*/ void onClickCloseBtn();
+	/*virtual*/ void onClickCloseBtn(bool app_qutting = false);
 
 	static LLWString stripChannelNumber(const LLWString &mesg, S32* channel);
 	EChatType processChatTypeTriggers(EChatType type, std::string &str);
diff --git a/indra/newview/llfloaterimsession.cpp b/indra/newview/llfloaterimsession.cpp
index 5cb9df5625895f96c22dcfb1c9e58aa1195af85c..14e1a486d3232e1edc6689c2bc66452ada907d57 100755
--- a/indra/newview/llfloaterimsession.cpp
+++ b/indra/newview/llfloaterimsession.cpp
@@ -112,7 +112,7 @@ void LLFloaterIMSession::onTearOffClicked()
 }
 
 // virtual
-void LLFloaterIMSession::onClickCloseBtn()
+void LLFloaterIMSession::onClickCloseBtn(bool)
 {
 	LLIMModel::LLIMSession* session = LLIMModel::instance().findIMSession(mSessionID);
 
diff --git a/indra/newview/llfloaterimsession.h b/indra/newview/llfloaterimsession.h
index a0e0171b344baa322714bc3766e6851f499e7197..d6718843ca0109240572533c158000f33a5ab4d6 100755
--- a/indra/newview/llfloaterimsession.h
+++ b/indra/newview/llfloaterimsession.h
@@ -141,7 +141,7 @@ private:
 	/*virtual*/ void refresh();
 
     /*virtual*/ void onTearOffClicked();
-	/*virtual*/ void onClickCloseBtn();
+	/*virtual*/ void onClickCloseBtn(bool app_qutting);
 
 	// Update the window title and input field help text
 	/*virtual*/ void updateSessionName(const std::string& name);
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index 8f20d4e0823ad7854f00294d9aeac3b77c70cb23..6c8e81e56324ae8cf404f29dce10eb815dc82681 100755
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -2374,7 +2374,7 @@ void LLPanelLandAccess::refresh()
 	{
 		BOOL use_access_list = parcel->getParcelFlag(PF_USE_ACCESS_LIST);
 		BOOL use_group = parcel->getParcelFlag(PF_USE_ACCESS_GROUP);
-		BOOL public_access = !use_access_list && !use_group;
+		BOOL public_access = !use_access_list;
 		
 		getChild<LLUICtrl>("public_access")->setValue(public_access );
 		getChild<LLUICtrl>("GroupCheck")->setValue(use_group );
@@ -2541,6 +2541,10 @@ void LLPanelLandAccess::refresh_ui()
 	getChildView("HoursSpin")->setEnabled(FALSE);
 	getChildView("AccessList")->setEnabled(FALSE);
 	getChildView("BannedList")->setEnabled(FALSE);
+	getChildView("add_allowed")->setEnabled(FALSE);
+	getChildView("remove_allowed")->setEnabled(FALSE);
+	getChildView("add_banned")->setEnabled(FALSE);
+	getChildView("remove_banned")->setEnabled(FALSE);
 	
 	LLParcel *parcel = mParcel->getParcel();
 	if (parcel)
@@ -2579,7 +2583,6 @@ void LLPanelLandAccess::refresh_ui()
 			{
 				getChildView("Only Allow")->setToolTip(std::string());
 			}
-			getChildView("GroupCheck")->setEnabled(FALSE);
 			getChildView("PassCheck")->setEnabled(FALSE);
 			getChildView("pass_combo")->setEnabled(FALSE);
 			getChildView("AccessList")->setEnabled(FALSE);
@@ -2589,11 +2592,7 @@ void LLPanelLandAccess::refresh_ui()
 			getChildView("limit_payment")->setEnabled(FALSE);
 			getChildView("limit_age_verified")->setEnabled(FALSE);
 
-			std::string group_name;
-			if (gCacheName->getGroupName(parcel->getGroupID(), group_name))
-			{			
-				getChildView("GroupCheck")->setEnabled(can_manage_allowed);
-			}
+
 			BOOL group_access = getChild<LLUICtrl>("GroupCheck")->getValue().asBoolean();
 			BOOL sell_passes = getChild<LLUICtrl>("PassCheck")->getValue().asBoolean();
 			getChildView("PassCheck")->setEnabled(can_manage_allowed);
@@ -2604,6 +2603,11 @@ void LLPanelLandAccess::refresh_ui()
 				getChildView("HoursSpin")->setEnabled(can_manage_allowed);
 			}
 		}
+		std::string group_name;
+		if (gCacheName->getGroupName(parcel->getGroupID(), group_name))
+		{
+			getChildView("GroupCheck")->setEnabled(can_manage_allowed);
+		}
 		getChildView("AccessList")->setEnabled(can_manage_allowed);
 		S32 allowed_list_count = parcel->mAccessList.size();
 		getChildView("add_allowed")->setEnabled(can_manage_allowed && allowed_list_count < PARCEL_MAX_ACCESS_LIST);
@@ -2650,17 +2654,6 @@ void LLPanelLandAccess::onCommitPublicAccess(LLUICtrl *ctrl, void *userdata)
 		return;
 	}
 
-	// If we disabled public access, enable group access by default (if applicable)
-	BOOL public_access = self->getChild<LLUICtrl>("public_access")->getValue().asBoolean();
-	if (public_access == FALSE)
-	{
-		std::string group_name;
-		if (gCacheName->getGroupName(parcel->getGroupID(), group_name))
-		{
-			self->getChild<LLUICtrl>("GroupCheck")->setValue(public_access ? FALSE : TRUE);
-		}
-	}
-	
 	onCommitAny(ctrl, userdata);
 }
 
@@ -2694,7 +2687,6 @@ void LLPanelLandAccess::onCommitAny(LLUICtrl *ctrl, void *userdata)
 	if (public_access)
 	{
 		use_access_list = FALSE;
-		use_access_group = FALSE;
 		limit_payment = self->getChild<LLUICtrl>("limit_payment")->getValue().asBoolean();
 		limit_age_verified = self->getChild<LLUICtrl>("limit_age_verified")->getValue().asBoolean();
 	}
diff --git a/indra/newview/llfloatersidepanelcontainer.cpp b/indra/newview/llfloatersidepanelcontainer.cpp
index 5f9556a870d66810af487f69807501b362bf54c9..c5248719e933a010ce77a14d0f5be57f6fded6c0 100755
--- a/indra/newview/llfloatersidepanelcontainer.cpp
+++ b/indra/newview/llfloatersidepanelcontainer.cpp
@@ -57,7 +57,7 @@ void LLFloaterSidePanelContainer::onOpen(const LLSD& key)
 	getChild<LLPanel>(sMainPanelName)->onOpen(key);
 }
 
-void LLFloaterSidePanelContainer::onClickCloseBtn()
+void LLFloaterSidePanelContainer::onClickCloseBtn(bool)
 {
 	LLPanelOutfitEdit* panel_outfit_edit =
 		dynamic_cast<LLPanelOutfitEdit*>(LLFloaterSidePanelContainer::getPanel("appearance", "panel_outfit_edit"));
diff --git a/indra/newview/llfloatersidepanelcontainer.h b/indra/newview/llfloatersidepanelcontainer.h
index 491723471fb1109211764fe9b6757234071b9cf4..65ec8f604e65b4446f74783655dba90f5b0c6cc2 100755
--- a/indra/newview/llfloatersidepanelcontainer.h
+++ b/indra/newview/llfloatersidepanelcontainer.h
@@ -51,7 +51,7 @@ public:
 
 	/*virtual*/ void onOpen(const LLSD& key);
 
-	/*virtual*/ void onClickCloseBtn();
+	/*virtual*/ void onClickCloseBtn(bool app_quitting = false);
 
 	LLPanel* openChildPanel(const std::string& panel_name, const LLSD& params);
 
diff --git a/indra/newview/llfloaterwebcontent.cpp b/indra/newview/llfloaterwebcontent.cpp
index be0e09271691fe50c197f9ea8f734a0851821444..76b73fcf29e99f73cf960a9d70ddf91af2b8c693 100755
--- a/indra/newview/llfloaterwebcontent.cpp
+++ b/indra/newview/llfloaterwebcontent.cpp
@@ -47,7 +47,7 @@ LLFloaterWebContent::_Params::_Params()
 	id("id"),
 	window_class("window_class", "web_content"),
 	show_chrome("show_chrome", true),
-	allow_address_entry("allow_address_entry", true),
+    allow_address_entry("allow_address_entry", true),
     allow_back_forward_navigation("allow_back_forward_navigation", true),
 	preferred_media_size("preferred_media_size"),
 	trusted_content("trusted_content", false),
@@ -103,7 +103,7 @@ BOOL LLFloaterWebContent::postBuild()
 
 	// cache image for secure browsing
 	mSecureLockIcon = getChild< LLIconCtrl >("media_secure_lock_flag");
-
+    
 	// initialize the URL history using the system URL History manager
 	initializeURLHistory();
 
@@ -362,6 +362,8 @@ void LLFloaterWebContent::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent
 		// we populate the status bar with URLs as they change so clear it now we're done
 		const std::string end_str = "";
 		mStatusBarText->setText( end_str );
+			mAddressCombo->setLeftTextPadding(22);
+			mAddressCombo->setLeftTextPadding(2);
 	}
 	else if(event == MEDIA_EVENT_CLOSE_REQUEST)
 	{
@@ -414,12 +416,12 @@ void LLFloaterWebContent::set_current_url(const std::string& url)
         }
 
         // Update current URL
-	mCurrentURL = url;
+        mCurrentURL = url;
         LLStringUtil::trim(mCurrentURL);
 
         // Serialize url history into the system URL History manager
-	LLURLHistory::removeURL("browser", mCurrentURL);
-	LLURLHistory::addURL("browser", mCurrentURL);
+        LLURLHistory::removeURL("browser", mCurrentURL);
+        LLURLHistory::addURL("browser", mCurrentURL);
 
 		// Check if this is a secure URL
 		static const std::string secure_prefix = std::string("https://");
@@ -431,7 +433,7 @@ void LLFloaterWebContent::set_current_url(const std::string& url)
 		mDisplayURL = (mSecureURL ? "      " + mCurrentURL : mCurrentURL);
 
         // Clean up browsing list (prevent dupes) and add/select the new URL to it
-	mAddressCombo->remove( mCurrentURL );
+        mAddressCombo->remove(mCurrentURL);
         mAddressCombo->add(mDisplayURL);
         mAddressCombo->selectByValue(mDisplayURL);
 
diff --git a/indra/newview/llmutelist.cpp b/indra/newview/llmutelist.cpp
index 54522bb7f66c32401e25d61a73b4c6ff0a1556f7..0720d443f8f812735798f5073a41645693745288 100755
--- a/indra/newview/llmutelist.cpp
+++ b/indra/newview/llmutelist.cpp
@@ -251,6 +251,7 @@ BOOL LLMuteList::add(const LLMute& mute, U32 flags)
 			llinfos << "Muting by name " << mute.mName << llendl;
 			updateAdd(mute);
 			notifyObservers();
+			notifyObserversDetailed(mute);
 			return TRUE;
 		}
 		else
@@ -299,6 +300,7 @@ BOOL LLMuteList::add(const LLMute& mute, U32 flags)
 				llinfos << "Muting " << localmute.mName << " id " << localmute.mID << " flags " << localmute.mFlags << llendl;
 				updateAdd(localmute);
 				notifyObservers();
+				notifyObserversDetailed(localmute);
 				if(!(localmute.mFlags & LLMute::flagParticles))
 				{
 					//Kill all particle systems owned by muted task
@@ -396,6 +398,7 @@ BOOL LLMuteList::remove(const LLMute& mute, U32 flags)
 		}
 		
 		// Must be after erase.
+		notifyObserversDetailed(localmute);
 		setLoaded();  // why is this here? -MG
 	}
 	else
@@ -409,6 +412,7 @@ BOOL LLMuteList::remove(const LLMute& mute, U32 flags)
 			updateRemove(mute);
 			mLegacyMutes.erase(legacy_it);
 			// Must be after erase.
+			notifyObserversDetailed(mute);
 			setLoaded(); // why is this here? -MG
 		}
 	}
@@ -762,3 +766,16 @@ void LLMuteList::notifyObservers()
 		it = mObservers.upper_bound(observer);
 	}
 }
+
+void LLMuteList::notifyObserversDetailed(const LLMute& mute)
+{
+	for (observer_set_t::iterator it = mObservers.begin();
+		it != mObservers.end();
+		)
+	{
+		LLMuteListObserver* observer = *it;
+		observer->onChangeDetailed(mute);
+		// In case onChange() deleted an entry.
+		it = mObservers.upper_bound(observer);
+	}
+}
diff --git a/indra/newview/llmutelist.h b/indra/newview/llmutelist.h
index 7a70370fe33519106950250dd2f98d197ac25bdd..3e998b4f0e2ad852bf37485fdbf122fc1f00786a 100755
--- a/indra/newview/llmutelist.h
+++ b/indra/newview/llmutelist.h
@@ -123,6 +123,7 @@ private:
 
 	void setLoaded();
 	void notifyObservers();
+	void notifyObserversDetailed(const LLMute &mute);
 
 	void updateAdd(const LLMute& mute);
 	void updateRemove(const LLMute& mute);
@@ -173,6 +174,7 @@ class LLMuteListObserver
 public:
 	virtual ~LLMuteListObserver() { }
 	virtual void onChange() = 0;
+	virtual void onChangeDetailed(const LLMute& ) { }
 };
 
 
diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index 53deded2f23cc8594e3ab57b4924bbb3ce47d152..1ff0bfd09136e117774138a508ba1dc52865de1d 100755
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -542,6 +542,13 @@ void LLPanelMainInventory::changed(U32)
 	updateItemcountText();
 }
 
+void LLPanelMainInventory::setFocusFilterEditor()
+{
+	if(mFilterEditor)
+	{
+		mFilterEditor->setFocus(true);
+	}
+}
 
 // virtual
 void LLPanelMainInventory::draw()
diff --git a/indra/newview/llpanelmaininventory.h b/indra/newview/llpanelmaininventory.h
index 394b004e209ffafb95382edc148d1b2459da5775..fc8cc67c338dab0d47bf2b6c14f3670340f816d1 100755
--- a/indra/newview/llpanelmaininventory.h
+++ b/indra/newview/llpanelmaininventory.h
@@ -82,6 +82,9 @@ public:
 	void setSelectCallback(const LLFolderView::signal_t::slot_type& cb);
 
 	void onFilterEdit(const std::string& search_string );
+
+	void setFocusFilterEditor();
+
 protected:
 	//
 	// Misc functions
diff --git a/indra/newview/llpersistentnotificationstorage.cpp b/indra/newview/llpersistentnotificationstorage.cpp
index 076c3e0235b9b22bb7c25eefcbccd1f321b47813..4f7d071d663ae3a7ae6e0bea118bf674d86044d4 100755
--- a/indra/newview/llpersistentnotificationstorage.cpp
+++ b/indra/newview/llpersistentnotificationstorage.cpp
@@ -77,6 +77,14 @@ void LLPersistentNotificationStorage::saveNotifications()
 		}
 
 		data.append(notification->asLLSD(true));
+		if (data.size() >= gSavedSettings.getS32("MaxPersistentNotifications"))
+		{
+			llwarns << "Too many persistent notifications."
+					<< " Saved " << gSavedSettings.getS32("MaxPersistentNotifications") << " of " << history_channel->size()
+					<< " persistent notifications." << llendl;
+			break;
+		}
+
 	}
 
 	writeNotifications(output);
@@ -97,7 +105,6 @@ void LLPersistentNotificationStorage::loadNotifications()
 	}
 
 	mLoaded = true;
-
 	LLSD input;
 	if (!readNotifications(input) ||input.isUndefined())
 	{
@@ -115,9 +122,9 @@ void LLPersistentNotificationStorage::loadNotifications()
 		findChannelByID(LLUUID(gSavedSettings.getString("NotificationChannelUUID"))));
 
 	LLNotifications& instance = LLNotifications::instance();
-
-	for (LLSD::array_const_iterator notification_it = data.beginArray();
-		notification_it != data.endArray();
+	S32 processed_notifications = 0;
+	for (LLSD::reverse_array_iterator notification_it = data.rbeginArray();
+		notification_it != data.rendArray();
 		++notification_it)
 	{
 		LLSD notification_params = *notification_it;
@@ -136,8 +143,16 @@ void LLPersistentNotificationStorage::loadNotifications()
 			// hide saved toasts so they don't confuse the user
 			notification_channel->hideToast(notification->getID());
 		}
+		++processed_notifications;
+		if (processed_notifications >= gSavedSettings.getS32("MaxPersistentNotifications"))
+		{
+			llwarns << "Too many persistent notifications."
+					<< " Processed " << gSavedSettings.getS32("MaxPersistentNotifications") << " of " << data.size() << " persistent notifications." << llendl;
+		    break;
 	}
-
+	}
+	LLNotifications::instance().getChannel("Persistent")->
+			connectChanged(boost::bind(&LLPersistentNotificationStorage::onPersistentChannelChanged, this, _1));
 	LL_INFOS("LLPersistentNotificationStorage") << "finished loading notifications" << LL_ENDL;
 }
 
diff --git a/indra/newview/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp
index 91a98792eb56b3dd0e529db8c3dce9e9d1e4d916..1ed48a978fffa2693494b8e55221b0d4c8340e9f 100755
--- a/indra/newview/llpreviewtexture.cpp
+++ b/indra/newview/llpreviewtexture.cpp
@@ -36,6 +36,7 @@
 #include "llfilepicker.h"
 #include "llfloaterreg.h"
 #include "llimagetga.h"
+#include "llimagepng.h"
 #include "llinventory.h"
 #include "llnotificationsutil.h"
 #include "llresmgr.h"
@@ -261,7 +262,7 @@ void LLPreviewTexture::saveAs()
 
 	LLFilePicker& file_picker = LLFilePicker::instance();
 	const LLInventoryItem* item = getItem() ;
-	if( !file_picker.getSaveFile( LLFilePicker::FFSAVE_TGA, item ? LLDir::getScrubbedFileName(item->getName()) : LLStringUtil::null) )
+	if( !file_picker.getSaveFile( LLFilePicker::FFSAVE_TGAPNG, item ? LLDir::getScrubbedFileName(item->getName()) : LLStringUtil::null) )
 	{
 		// User canceled or we failed to acquire save file.
 		return;
@@ -358,14 +359,27 @@ void LLPreviewTexture::onFileLoadedForSave(BOOL success,
 
 	if( self && final && success )
 	{
-		LLPointer<LLImageTGA> image_tga = new LLImageTGA;
-		if( !image_tga->encode( src ) )
+		const U32 ext_length = 3;
+		std::string extension = self->mSaveFileName.substr( self->mSaveFileName.length() - ext_length);
+
+		// We only support saving in PNG or TGA format
+		LLPointer<LLImageFormatted> image;
+		if(extension == "png")
+		{
+			image = new LLImagePNG;
+		}
+		else if(extension == "tga")
+		{
+			image = new LLImageTGA;
+		}
+
+		if( image && !image->encode( src, 0 ) )
 		{
 			LLSD args;
 			args["FILE"] = self->mSaveFileName;
 			LLNotificationsUtil::add("CannotEncodeFile", args);
 		}
-		else if( !image_tga->save( self->mSaveFileName ) )
+		else if( image && !image->save( self->mSaveFileName ) )
 		{
 			LLSD args;
 			args["FILE"] = self->mSaveFileName;
diff --git a/indra/newview/llsceneview.cpp b/indra/newview/llsceneview.cpp
index 09e799e4f741b11f4968aaa58579cb626906162c..cbd8bee9d5733e7706b5273a890cdf2a747663d2 100755
--- a/indra/newview/llsceneview.cpp
+++ b/indra/newview/llsceneview.cpp
@@ -51,7 +51,7 @@ LLSceneView::LLSceneView(const LLRect& rect)
 	setCanClose(true);
 }
 
-void LLSceneView::onClickCloseBtn()
+void LLSceneView::onClickCloseBtn(bool)
 {
 	setVisible(false);
 }
diff --git a/indra/newview/llsceneview.h b/indra/newview/llsceneview.h
index 2a3a14bbee45571dd6dee59bc3ab2633dfa7a380..1fceecb9e1a9efe975ff3574588c5f8805bfb6c9 100755
--- a/indra/newview/llsceneview.h
+++ b/indra/newview/llsceneview.h
@@ -38,7 +38,7 @@ public:
 	virtual void draw();
 	
 protected:
-	virtual void onClickCloseBtn();
+	virtual void onClickCloseBtn(bool app_qutting = false);
 
 
 };
diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp
index 8915bb2fef789c78f5c9c4a88dd178d987381f17..cbf43dbb937c522f51eaf32ee6712262b8188bea 100755
--- a/indra/newview/llsidepanelinventory.cpp
+++ b/indra/newview/llsidepanelinventory.cpp
@@ -397,7 +397,7 @@ void LLSidepanelInventory::onToggleInboxBtn()
 void LLSidepanelInventory::onOpen(const LLSD& key)
 {
 	LLFirstUse::newInventory(false);
-
+	mPanelMainInventory->setFocusFilterEditor();
 #if AUTO_EXPAND_INBOX
 	// Expand the inbox if we have fresh items
 	LLPanelMarketplaceInbox * inbox = findChild<LLPanelMarketplaceInbox>(MARKETPLACE_INBOX_PANEL);
diff --git a/indra/newview/llsidepaneltaskinfo.cpp b/indra/newview/llsidepaneltaskinfo.cpp
index ad7c939728fe36b668a7f4d8283c13223a0289f4..9be6d0c5f1a8242920dba7885f1731eebf5e8eaa 100755
--- a/indra/newview/llsidepaneltaskinfo.cpp
+++ b/indra/newview/llsidepaneltaskinfo.cpp
@@ -1170,6 +1170,10 @@ void LLSidepanelTaskInfo::doClickAction(U8 click_action)
 			// Warn, but do it anyway.
 			LLNotificationsUtil::add("ClickActionNotPayable");
 		}
+		else
+		{
+			handle_give_money_dialog();
+		}
 	}
 	LLSelectMgr::getInstance()->selectionSetClickAction(click_action);
 }
diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp
index 00eb0c1ab11d6bb9c88e40725a9611b9e577e8a6..2c83f6d0b707f1f0ecd5f9e455cfb89d1adc54cd 100755
--- a/indra/newview/llspatialpartition.cpp
+++ b/indra/newview/llspatialpartition.cpp
@@ -1568,7 +1568,7 @@ void LLSpatialGroup::checkOcclusion()
 			{
 				glGetQueryObjectuivARB(mOcclusionQuery[LLViewerCamera::sCurCameraID], GL_QUERY_RESULT_AVAILABLE_ARB, &available);
 
-				static LLCachedControl<bool> wait_for_query(gSavedSettings, "RenderSynchronousOcclusion");
+				static LLCachedControl<bool> wait_for_query(gSavedSettings, "RenderSynchronousOcclusion", true);
 
 				if (wait_for_query && mOcclusionIssued[LLViewerCamera::sCurCameraID] < gFrameCount)
 				{ //query was issued last frame, wait until it's available
diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index 6173e76a35163ce13213ca3e4757f94fc12adc21..def26b3885e5c54aa3465abc49de061cb57c7893 100644
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -1270,7 +1270,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 
 	if (mState == LOAD_FROM_NETWORK)
 	{
-		static LLCachedControl<bool> use_http(gSavedSettings,"ImagePipelineUseHTTP");
+		static LLCachedControl<bool> use_http(gSavedSettings,"ImagePipelineUseHTTP", true);
 
 // 		if (mHost != LLHost::invalid) get_url = false;
 		if ( use_http && mCanUseHTTP && mUrl.empty())//get http url.
@@ -1697,7 +1697,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 	
 	if (mState == DECODE_IMAGE)
 	{
-		static LLCachedControl<bool> textures_decode_disabled(gSavedSettings,"TextureDecodeDisabled");
+		static LLCachedControl<bool> textures_decode_disabled(gSavedSettings,"TextureDecodeDisabled", false);
 
 		setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority); // Set priority first since Responder may change it
 		if (textures_decode_disabled)
@@ -1873,9 +1873,9 @@ bool LLTextureFetchWorker::doWork(S32 param)
 // virtual
 void LLTextureFetchWorker::onCompleted(LLCore::HttpHandle handle, LLCore::HttpResponse * response)
 {
-	static LLCachedControl<bool> log_to_viewer_log(gSavedSettings, "LogTextureDownloadsToViewerLog");
-	static LLCachedControl<bool> log_to_sim(gSavedSettings, "LogTextureDownloadsToSimulator");
-	static LLCachedControl<bool> log_texture_traffic(gSavedSettings, "LogTextureNetworkTraffic") ;
+	static LLCachedControl<bool> log_to_viewer_log(gSavedSettings, "LogTextureDownloadsToViewerLog", false);
+	static LLCachedControl<bool> log_to_sim(gSavedSettings, "LogTextureDownloadsToSimulator", false);
+	static LLCachedControl<bool> log_texture_traffic(gSavedSettings, "LogTextureNetworkTraffic", false) ;
 
 	LLMutexLock lock(&mWorkMutex);										// +Mw
 
@@ -2876,7 +2876,7 @@ void LLTextureFetch::commonUpdate()
 //virtual
 S32 LLTextureFetch::update(F32 max_time_ms)
 {
-	static LLCachedControl<F32> band_width(gSavedSettings,"ThrottleBandwidthKBPS");
+	static LLCachedControl<F32> band_width(gSavedSettings,"ThrottleBandwidthKBPS", 500.0);
 
 	{
 		mNetworkQueueMutex.lock();										// +Mfnq
@@ -3099,8 +3099,8 @@ void LLTextureFetch::sendRequestListToSimulators()
 // 				llinfos << "IMAGE REQUEST: " << req->mID << " Discard: " << req->mDesiredDiscard
 // 						<< " Packet: " << packet << " Priority: " << req->mImagePriority << llendl;
 
-				static LLCachedControl<bool> log_to_viewer_log(gSavedSettings,"LogTextureDownloadsToViewerLog");
-				static LLCachedControl<bool> log_to_sim(gSavedSettings,"LogTextureDownloadsToSimulator");
+				static LLCachedControl<bool> log_to_viewer_log(gSavedSettings,"LogTextureDownloadsToViewerLog", false);
+				static LLCachedControl<bool> log_to_sim(gSavedSettings,"LogTextureDownloadsToSimulator", false);
 				if (log_to_viewer_log || log_to_sim)
 				{
 					mTextureInfo.setRequestStartTime(req->mID, LLTimer::getTotalTime());
@@ -3359,8 +3359,8 @@ bool LLTextureFetch::receiveImagePacket(const LLHost& host, const LLUUID& id, U1
 
 	if (packet_num >= (worker->mTotalPackets - 1))
 	{
-		static LLCachedControl<bool> log_to_viewer_log(gSavedSettings,"LogTextureDownloadsToViewerLog");
-		static LLCachedControl<bool> log_to_sim(gSavedSettings,"LogTextureDownloadsToSimulator");
+		static LLCachedControl<bool> log_to_viewer_log(gSavedSettings,"LogTextureDownloadsToViewerLog", false);
+		static LLCachedControl<bool> log_to_sim(gSavedSettings,"LogTextureDownloadsToSimulator", false);
 
 		if (log_to_viewer_log || log_to_sim)
 		{
diff --git a/indra/newview/lltoast.cpp b/indra/newview/lltoast.cpp
index d876c9a3f4b8614ae7fb8575a79abf57ceedc2c3..448fae48de4ef8548e09803d139d0038167c31d7 100755
--- a/indra/newview/lltoast.cpp
+++ b/indra/newview/lltoast.cpp
@@ -555,7 +555,7 @@ BOOL LLToast::handleMouseDown(S32 x, S32 y, MASK mask)
 		mHideBtnPressed = mHideBtn->getRect().pointInRect(x, y);
 	}
 
-	return LLFloater::handleMouseDown(x, y, mask);
+	return LLModalDialog::handleMouseDown(x, y, mask);
 }
 
 //--------------------------------------------------------------------------
diff --git a/indra/newview/lltoastalertpanel.cpp b/indra/newview/lltoastalertpanel.cpp
index 3f75f8da5e0212e88c034b37f367c87947e5b452..6083210080f9496f03c9db5efd037d30e2658bde 100755
--- a/indra/newview/lltoastalertpanel.cpp
+++ b/indra/newview/lltoastalertpanel.cpp
@@ -492,7 +492,7 @@ void LLToastAlertPanel::draw()
 	}
 
 	static LLUIColor shadow_color = LLUIColorTable::instance().getColor("ColorDropShadow");
-	static LLUICachedControl<S32> shadow_lines ("DropShadowFloater");
+	static LLUICachedControl<S32> shadow_lines ("DropShadowFloater", 5);
 
 	gl_drop_shadow( 0, LLToastPanel::getRect().getHeight(), LLToastPanel::getRect().getWidth(), 0,
 		shadow_color, shadow_lines);
diff --git a/indra/newview/lltoastnotifypanel.cpp b/indra/newview/lltoastnotifypanel.cpp
index 94d07b37effa3f2b57945876d910b789813b77a1..3a41bf28b4710fca52a56459b9cb9059f22db4e5 100755
--- a/indra/newview/lltoastnotifypanel.cpp
+++ b/indra/newview/lltoastnotifypanel.cpp
@@ -407,6 +407,28 @@ void LLToastNotifyPanel::init( LLRect rect, bool show_images )
 	}
 }
 
+bool LLToastNotifyPanel::isControlPanelEnabled() const
+{
+	bool cp_enabled = mControlPanel->getEnabled();
+	bool some_buttons_enabled = false;
+	if (cp_enabled)
+	{
+		LLView::child_list_const_iter_t child_it = mControlPanel->beginChild();
+		LLView::child_list_const_iter_t child_it_end = mControlPanel->endChild();
+		for(; child_it != child_it_end; ++child_it)
+		{
+			LLButton * buttonp = dynamic_cast<LLButton *>(*child_it);
+			if (buttonp && buttonp->getEnabled())
+			{
+				some_buttons_enabled = true;
+				break;
+			}
+		}
+	}
+
+	return cp_enabled && some_buttons_enabled;
+}
+
 //////////////////////////////////////////////////////////////////////////
 
 LLIMToastNotifyPanel::LLIMToastNotifyPanel(LLNotificationPtr& pNotification, const LLUUID& session_id, const LLRect& rect /* = LLRect::null */,
diff --git a/indra/newview/lltoastnotifypanel.h b/indra/newview/lltoastnotifypanel.h
index d02171b512c3bc91cfad83a7ad25436fa51d979a..fe7f1cf8f3a91e2708c4cead95019f584bbd04f9 100755
--- a/indra/newview/lltoastnotifypanel.h
+++ b/indra/newview/lltoastnotifypanel.h
@@ -69,6 +69,8 @@ public:
 
 	virtual void updateNotification() {}
 
+	bool isControlPanelEnabled() const;
+
 protected:
 	LLButton* createButton(const LLSD& form_element, BOOL is_option);
 
diff --git a/indra/newview/lltoastpanel.cpp b/indra/newview/lltoastpanel.cpp
index a30f8419806e89e1840f3d3fe4ccd858f3cf1c1d..e1b764a9438c541f142126bf9c2dd04fde1b0cab 100755
--- a/indra/newview/lltoastpanel.cpp
+++ b/indra/newview/lltoastpanel.cpp
@@ -52,6 +52,12 @@ std::string LLToastPanel::getTitle()
 	return mNotification->getMessage();
 }
 
+//virtual
+const std::string& LLToastPanel::getNotificationName()
+{
+	return mNotification->getName();
+}
+
 //virtual
 const LLUUID& LLToastPanel::getID()
 {
diff --git a/indra/newview/lltoastpanel.h b/indra/newview/lltoastpanel.h
index e4ab95007e521c104a1ca47f0839000112613a32..51630381f2118ff899b298484a1cc80d21df40d4 100755
--- a/indra/newview/lltoastpanel.h
+++ b/indra/newview/lltoastpanel.h
@@ -45,6 +45,7 @@ public:
 	virtual ~LLToastPanel() = 0;
 
 	virtual std::string getTitle();
+	virtual const std::string& getNotificationName();
 	virtual const LLUUID& getID();
 
 	static const S32 MIN_PANEL_HEIGHT;
diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp
index ef7d0cd81bb13dfd514bc3a526d83c0a38156a45..1a137f7129d5326ad66b5262b7f6b4bd7f20da14 100755
--- a/indra/newview/lltooldraganddrop.cpp
+++ b/indra/newview/lltooldraganddrop.cpp
@@ -355,7 +355,7 @@ void LLToolDragAndDrop::setDragStart(S32 x, S32 y)
 
 BOOL LLToolDragAndDrop::isOverThreshold(S32 x,S32 y)
 {
-	static LLCachedControl<S32> drag_and_drop_threshold(gSavedSettings,"DragAndDropDistanceThreshold");
+	static LLCachedControl<S32> drag_and_drop_threshold(gSavedSettings,"DragAndDropDistanceThreshold", 3);
 	
 	S32 mouse_delta_x = x - mDragStartX;
 	S32 mouse_delta_y = y - mDragStartY;
diff --git a/indra/newview/llviewerjoystick.cpp b/indra/newview/llviewerjoystick.cpp
index f6e840adcd803988264a97bd9c9c8f2b29b1ef81..aeeb591d55f31d33bcb863133970567defed02b2 100755
--- a/indra/newview/llviewerjoystick.cpp
+++ b/indra/newview/llviewerjoystick.cpp
@@ -919,7 +919,7 @@ void LLViewerJoystick::moveFlycam(bool reset)
 		{
 			if (i == X_I || i == Y_I || i == Z_I)
 			{
-				static LLCachedControl<F32> build_mode_scale(gSavedSettings,"FlycamBuildModeScale");
+				static LLCachedControl<F32> build_mode_scale(gSavedSettings,"FlycamBuildModeScale", 1.0);
 				cur_delta[i] *= build_mode_scale;
 			}
 		}
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index 13483790eda033a9c95ee277bc5a756928cd1cf9..21fb8d519b3442c4067c8f14f30157edd7decf7d 100755
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -3773,18 +3773,18 @@ bool LLViewerMediaImpl::shouldShowBasedOnClass() const
 	// If it is attached to an avatar and the pref is off, we shouldn't show it
 	if (attached_to_another_avatar)
 	{
-		static LLCachedControl<bool> show_media_on_others(gSavedSettings, LLViewerMedia::SHOW_MEDIA_ON_OTHERS_SETTING);
+		static LLCachedControl<bool> show_media_on_others(gSavedSettings, LLViewerMedia::SHOW_MEDIA_ON_OTHERS_SETTING, false);
 		return show_media_on_others;
 	}
 	if (inside_parcel)
 	{
-		static LLCachedControl<bool> show_media_within_parcel(gSavedSettings, LLViewerMedia::SHOW_MEDIA_WITHIN_PARCEL_SETTING);
+		static LLCachedControl<bool> show_media_within_parcel(gSavedSettings, LLViewerMedia::SHOW_MEDIA_WITHIN_PARCEL_SETTING, true);
 
 		return show_media_within_parcel;
 	}
 	else 
 	{
-		static LLCachedControl<bool> show_media_outside_parcel(gSavedSettings, LLViewerMedia::SHOW_MEDIA_OUTSIDE_PARCEL_SETTING);
+		static LLCachedControl<bool> show_media_outside_parcel(gSavedSettings, LLViewerMedia::SHOW_MEDIA_OUTSIDE_PARCEL_SETTING, true);
 
 		return show_media_outside_parcel;
 	}
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index ab9ea5618e87230640d52639022b1ef55c8c154f..3574d37adfe1b89c6e61443f8d7a8016c98721ec 100755
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -45,6 +45,7 @@
 #include "llsd.h"
 #include "llsdserialize.h"
 #include "llteleportflags.h"
+#include "lltoastnotifypanel.h"
 #include "lltransactionflags.h"
 #include "llvfile.h"
 #include "llvfs.h"
@@ -3228,7 +3229,20 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 			payload["online"] = (offline == IM_ONLINE);
 			payload["sender"] = msg->getSender().getIPandPort();
 
-			if (is_muted)
+			bool add_notification = true;
+			for (LLToastNotifyPanel::instance_iter ti(LLToastNotifyPanel::beginInstances())
+				, tend(LLToastNotifyPanel::endInstances()); ti != tend; ++ti)
+			{
+				LLToastNotifyPanel& panel = *ti;
+				const std::string& notification_name = panel.getNotificationName();
+				if (notification_name == "OfferFriendship" && panel.isControlPanelEnabled())
+				{
+					add_notification = false;
+					break;
+				}
+			}
+
+			if (is_muted && add_notification)
 			{
 				LLNotifications::instance().forceResponse(LLNotification::Params("OfferFriendship").payload(payload), 1);
 			}
@@ -3239,6 +3253,9 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 					send_do_not_disturb_message(msg, from_id);
 				}
 				args["NAME_SLURL"] = LLSLURL("agent", from_id, "about").getSLURLString();
+
+				if (add_notification)
+				{
 				if(message.empty())
 				{
 					//support for frienship offers from clients before July 2008
@@ -3254,6 +3271,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 				}
 			}
 		}
+		}
 		break;
 
 	case IM_FRIENDSHIP_ACCEPTED:
@@ -3816,19 +3834,6 @@ public:
 				LLInventoryModel::EXCLUDE_TRASH,
 				is_card);
 		}
-		LLSD args;
-		if ( land_items.count() > 0 )
-		{	// Show notification that they can now teleport to landmarks.  Use a random landmark from the inventory
-			S32 random_land = ll_rand( land_items.count() - 1 );
-			args["NAME"] = land_items[random_land]->getName();
-			LLNotificationsUtil::add("TeleportToLandmark",args);
-		}
-		if ( card_items.count() > 0 )
-		{	// Show notification that they can now contact people.  Use a random calling card from the inventory
-			S32 random_card = ll_rand( card_items.count() - 1 );
-			args["NAME"] = card_items[random_card]->getName();
-			LLNotificationsUtil::add("TeleportToPerson",args);
-		}
 
 		gInventory.removeObserver(this);
 		delete this;
@@ -4105,18 +4110,6 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)
 
 		if (isAgentAvatarValid())
 		{
-			// Chat the "back" SLURL. (DEV-4907)
-
-			LLSLURL slurl;
-			gAgent.getTeleportSourceSLURL(slurl);
-			LLSD substitution = LLSD().with("[T_SLURL]", slurl.getSLURLString());
-			std::string completed_from = LLAgent::sTeleportProgressMessages["completed_from"];
-			LLStringUtil::format(completed_from, substitution);
-
-			LLSD args;
-			args["MESSAGE"] = completed_from;
-			LLNotificationsUtil::add("SystemMessageTip", args);
-
 			// Set the new position
 			gAgentAvatarp->setPositionAgent(agent_pos);
 			gAgentAvatarp->clearChat();
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index 7151a0d6ed1f76fed2c335d87c07cf6d3e4ef068..1544e66431a9df31e911d66bd40fa820195db038 100755
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -5879,6 +5879,13 @@ void LLViewerObject::resetChildrenPosition(const LLVector3& offset, BOOL simplif
 	return ;
 }
 
+// virtual 
+BOOL	LLViewerObject::isTempAttachment() const
+{
+	return (mID.notNull() && (mID == mAttachmentItemID));
+}
+
+
 const LLUUID &LLViewerObject::getAttachmentItemID() const
 {
 	return mAttachmentItemID;
diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h
index b035473c747e138df6d866a6126a626303c41809..80bdd628a13715beef292aaa62f0c2d2a3f656a4 100755
--- a/indra/newview/llviewerobject.h
+++ b/indra/newview/llviewerobject.h
@@ -171,6 +171,8 @@ public:
 	virtual BOOL	isAttachment() const { return FALSE; }
 	virtual LLVOAvatar* getAvatar() const;  //get the avatar this object is attached to, or NULL if object is not an attachment
 	virtual BOOL	isHUDAttachment() const { return FALSE; }
+	virtual BOOL	isTempAttachment() const;
+
 	virtual void 	updateRadius() {};
 	virtual F32 	getVObjRadius() const; // default implemenation is mDrawable->getRadius()
 	
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index 460f9084d989ada6116181701d56e9e92cba6194..6018c2d250d8f2ce5ee07f3eb50d724b28d402b0 100755
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -232,6 +232,7 @@ public:
 		if( mID != regionp->getHttpResponderID() ) // region is no longer referring to this responder
 		{
 			LL_WARNS2("AppInit", "Capabilities") << "Received results for a stale http responder!" << LL_ENDL;
+			regionp->failedSeedCapability();
 			return ;
 		}
 
@@ -301,14 +302,9 @@ public:
 		
 		if ( regionp->getRegionImpl()->mCapabilities.size() != regionp->getRegionImpl()->mSecondCapabilitiesTracker.size() )
 		{
-			llinfos << "BaseCapabilitiesCompleteTracker " << "sim " << regionp->getName()
-				<< " sent duplicate seed caps that differs in size - most likely content. " 
-				<< (S32) regionp->getRegionImpl()->mCapabilities.size() << " vs " << regionp->getRegionImpl()->mSecondCapabilitiesTracker.size()
-				<< llendl;
-
+			llinfos<<"BaseCapabilitiesCompleteTracker "<<"Sim sent duplicate seed caps that differs in size - most likely content."<<llendl;			
 			//todo#add cap debug versus original check?
-			/*
-			CapabilityMap::const_iterator iter = regionp->getRegionImpl()->mCapabilities.begin();
+			/*CapabilityMap::const_iterator iter = regionp->getRegionImpl()->mCapabilities.begin();
 			while (iter!=regionp->getRegionImpl()->mCapabilities.end() )
 			{
 				llinfos << "BaseCapabilitiesCompleteTracker Original " << iter->first << " " << iter->second<<llendl;
@@ -399,9 +395,6 @@ LLViewerRegion::LLViewerRegion(const U64 &handle,
 	mImpl->mObjectPartition.push_back(new LLBridgePartition());	//PARTITION_BRIDGE
 	mImpl->mObjectPartition.push_back(new LLHUDParticlePartition());//PARTITION_HUD_PARTICLE
 	mImpl->mObjectPartition.push_back(NULL);						//PARTITION_NONE
-
-	mRenderInfoRequestTimer.resetWithExpiry(0.f);		// Set timer to be expired
-	setCapabilitiesReceivedCallback(boost::bind(&LLAvatarRenderInfoAccountant::expireRenderInfoReportTimer, _1));
 }
 
 
@@ -1586,7 +1579,6 @@ void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames)
 	capabilityNames.append("AgentState");
 	capabilityNames.append("AttachmentResources");
 	capabilityNames.append("AvatarPickerSearch");
-	capabilityNames.append("AvatarRenderInfo");
 	capabilityNames.append("CharacterProperties");
 	capabilityNames.append("ChatSessionRequest");
 	capabilityNames.append("CopyInventoryFromNotecard");
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index 50f0a5f1af7e4673585f250b7b16bbab88530943..553f6a2d5993ad2b10986137ca7d7efebdf8bc8a 100755
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -461,7 +461,7 @@ void LLViewerShaderMgr::setShaders()
 		S32 deferred_class = 0;
 		S32 transform_class = gGLManager.mHasTransformFeedback ? 1 : 0;
 
-		static LLCachedControl<bool> use_transform_feedback(gSavedSettings, "RenderUseTransformFeedback");
+		static LLCachedControl<bool> use_transform_feedback(gSavedSettings, "RenderUseTransformFeedback", false);
 		if (!use_transform_feedback)
 		{
 			transform_class = 0;
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index 84f66c359fbda3ebcdb3eb8cc54331f97731718e..693eca8a061ba89c39022dfd346a126565e817f8 100755
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -1422,7 +1422,7 @@ void LLViewerFetchedTexture::processTextureStats()
 	{
 		updateVirtualSize() ;
 		
-		static LLCachedControl<bool> textures_fullres(gSavedSettings,"TextureLoadFullRes");
+		static LLCachedControl<bool> textures_fullres(gSavedSettings,"TextureLoadFullRes", false);
 		
 		if (textures_fullres)
 		{
@@ -1747,9 +1747,9 @@ bool LLViewerFetchedTexture::setDebugFetching(S32 debug_level)
 
 bool LLViewerFetchedTexture::updateFetch()
 {
-	static LLCachedControl<bool> textures_decode_disabled(gSavedSettings,"TextureDecodeDisabled");
-	static LLCachedControl<F32>  sCameraMotionThreshold(gSavedSettings,"TextureCameraMotionThreshold");
-	static LLCachedControl<S32>  sCameraMotionBoost(gSavedSettings,"TextureCameraMotionBoost");
+	static LLCachedControl<bool> textures_decode_disabled(gSavedSettings,"TextureDecodeDisabled", false);
+	static LLCachedControl<F32>  sCameraMotionThreshold(gSavedSettings,"TextureCameraMotionThreshold", 0.2);
+	static LLCachedControl<S32>  sCameraMotionBoost(gSavedSettings,"TextureCameraMotionBoost", 3);
 	if(textures_decode_disabled)
 	{
 		return false ;
@@ -2828,7 +2828,7 @@ void LLViewerLODTexture::processTextureStats()
 {
 	updateVirtualSize() ;
 	
-	static LLCachedControl<bool> textures_fullres(gSavedSettings,"TextureLoadFullRes");
+	static LLCachedControl<bool> textures_fullres(gSavedSettings,"TextureLoadFullRes", false);
 	
 	if (textures_fullres)
 	{
diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
index 2efe4665fa393fc0bea784a5fa525cf82e5f9fac..783d1f220226e005091ffcbb96fb694f57214775 100755
--- a/indra/newview/llviewertexturelist.cpp
+++ b/indra/newview/llviewertexturelist.cpp
@@ -500,7 +500,7 @@ LLViewerFetchedTexture* LLViewerTextureList::createImage(const LLUUID &image_id,
 												   LLGLenum primary_format,
 												   LLHost request_from_host)
 {
-	static LLCachedControl<bool> fast_cache_fetching_enabled(gSavedSettings, "FastCacheFetchEnabled");
+	static LLCachedControl<bool> fast_cache_fetching_enabled(gSavedSettings, "FastCacheFetchEnabled", true);
 
 	LLPointer<LLViewerFetchedTexture> imagep ;
 	switch(texture_type)
@@ -1373,7 +1373,7 @@ void LLViewerTextureList::updateMaxResidentTexMem(S32 mem)
 // static
 void LLViewerTextureList::receiveImageHeader(LLMessageSystem *msg, void **user_data)
 {
-	static LLCachedControl<bool> log_texture_traffic(gSavedSettings,"LogTextureNetworkTraffic") ;
+	static LLCachedControl<bool> log_texture_traffic(gSavedSettings,"LogTextureNetworkTraffic", false) ;
 
 	LLFastTimer t(FTM_PROCESS_IMAGES);
 	
@@ -1445,7 +1445,7 @@ void LLViewerTextureList::receiveImageHeader(LLMessageSystem *msg, void **user_d
 // static
 void LLViewerTextureList::receiveImagePacket(LLMessageSystem *msg, void **user_data)
 {
-	static LLCachedControl<bool> log_texture_traffic(gSavedSettings,"LogTextureNetworkTraffic") ;
+	static LLCachedControl<bool> log_texture_traffic(gSavedSettings,"LogTextureNetworkTraffic", false) ;
 
 	LLFastTimer t(FTM_PROCESS_IMAGES);
 	
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index ff7642a773a4cc7a670fc78e21be57b10017a9ee..cb7536edceb09a8383d11c929dae28695bf63a12 100755
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -315,7 +315,7 @@ public:
 
 	void update()
 	{
-		static LLCachedControl<bool> log_texture_traffic(gSavedSettings,"LogTextureNetworkTraffic") ;
+		static LLCachedControl<bool> log_texture_traffic(gSavedSettings,"LogTextureNetworkTraffic", false) ;
 
 		std::string wind_vel_text;
 		std::string wind_vector_text;
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index fe035a0a7f9374644164491d180e624d4546230b..c3c1edb0a3cd884266fa6037daca372b0854fa17 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -707,7 +707,7 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
 	mVisualComplexityStale(TRUE),
 	mLoadedCallbacksPaused(FALSE),
 	mHasPelvisOffset( FALSE ),
-	mRenderUnloadedAvatar(LLCachedControl<bool>(gSavedSettings, "RenderUnloadedAvatar")),
+	mRenderUnloadedAvatar(LLCachedControl<bool>(gSavedSettings, "RenderUnloadedAvatar", false)),
 	mLastRezzedStatus(-1),
 	mIsEditingAppearance(FALSE),
 	mUseLocalAppearance(FALSE),
@@ -2707,8 +2707,8 @@ void LLVOAvatar::idleUpdateNameTagText(BOOL new_name)
 				LLFontGL::getFontSansSerifSmall());
 		}
 
-		static LLUICachedControl<bool> show_display_names("NameTagShowDisplayNames");
-		static LLUICachedControl<bool> show_usernames("NameTagShowUsernames");
+		static LLUICachedControl<bool> show_display_names("NameTagShowDisplayNames", true);
+		static LLUICachedControl<bool> show_usernames("NameTagShowUsernames", true);
 
 		if (LLAvatarName::useDisplayNames())
 		{
@@ -2934,7 +2934,7 @@ void LLVOAvatar::idleUpdateNameTagAlpha(BOOL new_name, F32 alpha)
 
 LLColor4 LLVOAvatar::getNameTagColor(bool is_friend)
 {
-	static LLUICachedControl<bool> show_friends("NameTagShowFriends");
+	static LLUICachedControl<bool> show_friends("NameTagShowFriends", false);
 	const char* color_name;
 	if (show_friends && is_friend)
 	{
@@ -2989,7 +2989,7 @@ bool LLVOAvatar::isVisuallyMuted()
 
 	if (!isSelf())
 	{
-		static LLCachedControl<U32> render_auto_mute_functions(gSavedSettings, "RenderAutoMuteFunctions");
+		static LLCachedControl<U32> render_auto_mute_functions(gSavedSettings, "RenderAutoMuteFunctions", 0);
 		if (render_auto_mute_functions)		// Hacky debug switch for developing feature
 		{
 			// Priority order (highest priority first)
@@ -3001,9 +3001,9 @@ bool LLVOAvatar::isVisuallyMuted()
 			//       - AND aren't over the thresholds
 			// * otherwise visually mute all other avatars
 
-			static LLCachedControl<U32> max_attachment_bytes(gSavedSettings, "RenderAutoMuteByteLimit");
-			static LLCachedControl<F32> max_attachment_area(gSavedSettings, "RenderAutoMuteSurfaceAreaLimit");
-			static LLCachedControl<U32> max_render_cost(gSavedSettings, "RenderAutoMuteRenderWeightLimit");
+			static LLCachedControl<U32> max_attachment_bytes(gSavedSettings, "RenderAutoMuteByteLimit", 0);
+			static LLCachedControl<F32> max_attachment_area(gSavedSettings, "RenderAutoMuteSurfaceAreaLimit", 0.0);
+			static LLCachedControl<U32> max_render_cost(gSavedSettings, "RenderAutoMuteRenderWeightLimit", 0);
 
 			if (mVisuallyMuteSetting == ALWAYS_VISUAL_MUTE)
 			{	// Always want to see this AV as an impostor
@@ -3390,8 +3390,8 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 
 			LLVector3 pelvisDir( mRoot->getWorldMatrix().getFwdRow4().mV );
 
-			static LLCachedControl<F32> s_pelvis_rot_threshold_slow(gSavedSettings, "AvatarRotateThresholdSlow");
-			static LLCachedControl<F32> s_pelvis_rot_threshold_fast(gSavedSettings, "AvatarRotateThresholdFast");
+			static LLCachedControl<F32> s_pelvis_rot_threshold_slow(gSavedSettings, "AvatarRotateThresholdSlow", 60.0);
+			static LLCachedControl<F32> s_pelvis_rot_threshold_fast(gSavedSettings, "AvatarRotateThresholdFast", 2.0);
 
 			F32 pelvis_rot_threshold = clamp_rescale(speed, 0.1f, 1.0f, s_pelvis_rot_threshold_slow, s_pelvis_rot_threshold_fast);
 						
@@ -5521,7 +5521,15 @@ void LLVOAvatar::addChild(LLViewerObject *childp)
 	LLViewerObject::addChild(childp);
 	if (childp->mDrawable)
 	{
-		attachObject(childp);
+		if (!attachObject(childp))
+		{
+			llwarns << "addChild() failed for " 
+					<< childp->getID()
+					<< " item " << childp->getAttachmentItemID()
+					<< llendl;
+			// MAINT-3312 backout
+			// mPendingAttachment.push_back(childp);
+		}
 	}
 	else
 	{
@@ -5554,8 +5562,27 @@ LLViewerJointAttachment* LLVOAvatar::getTargetAttachmentPoint(LLViewerObject* vi
 
 	if (!attachment)
 	{
-		llwarns << "Object attachment point invalid: " << attachmentID << llendl;
+		llwarns << "Object attachment point invalid: " << attachmentID 
+			<< " trying to use 1 (chest)"
+			<< llendl;
+
 		attachment = get_if_there(mAttachmentPoints, 1, (LLViewerJointAttachment*)NULL); // Arbitrary using 1 (chest)
+		if (attachment)
+		{
+			llwarns << "Object attachment point invalid: " << attachmentID 
+				<< " on object " << viewer_object->getID()
+				<< " attachment item " << viewer_object->getAttachmentItemID()
+				<< " falling back to 1 (chest)"
+				<< llendl;
+		}
+		else
+		{
+			llwarns << "Object attachment point invalid: " << attachmentID 
+				<< " on object " << viewer_object->getID()
+				<< " attachment item " << viewer_object->getAttachmentItemID()
+				<< "Unable to use fallback attachment point 1 (chest)"
+				<< llendl;
+		}
 	}
 
 	return attachment;
@@ -5626,13 +5653,22 @@ void LLVOAvatar::lazyAttach()
 	
 	for (U32 i = 0; i < mPendingAttachment.size(); i++)
 	{
-		if (mPendingAttachment[i]->mDrawable)
+		LLPointer<LLViewerObject> cur_attachment = mPendingAttachment[i];
+		if (cur_attachment->mDrawable)
 		{
-			attachObject(mPendingAttachment[i]);
+			if (!attachObject(cur_attachment))
+			{	// Drop it
+				llwarns << "attachObject() failed for " 
+					<< cur_attachment->getID()
+					<< " item " << cur_attachment->getAttachmentItemID()
+					<< llendl;
+				// MAINT-3312 backout
+				//still_pending.push_back(cur_attachment);
+			}
 		}
 		else
 		{
-			still_pending.push_back(mPendingAttachment[i]);
+			still_pending.push_back(cur_attachment);
 		}
 	}
 
@@ -5939,6 +5975,28 @@ BOOL LLVOAvatar::isWearingWearableType(LLWearableType::EType type) const
 
 
 
+LLViewerObject *	LLVOAvatar::findAttachmentByID( const LLUUID & target_id ) const
+{
+	for(attachment_map_t::const_iterator attachment_points_iter = mAttachmentPoints.begin();
+		attachment_points_iter != gAgentAvatarp->mAttachmentPoints.end();
+		++attachment_points_iter)
+	{
+		LLViewerJointAttachment* attachment = attachment_points_iter->second;
+		for (LLViewerJointAttachment::attachedobjs_vec_t::iterator attachment_iter = attachment->mAttachedObjects.begin();
+			 attachment_iter != attachment->mAttachedObjects.end();
+			 ++attachment_iter)
+		{
+			LLViewerObject *attached_object = (*attachment_iter);
+			if (attached_object &&
+				attached_object->getID() == target_id)
+			{
+				return attached_object;
+			}
+		}
+	}
+
+	return NULL;
+}
 
 
 // virtual
@@ -7877,7 +7935,7 @@ void LLVOAvatar::getImpostorValues(LLVector4a* extents, LLVector3& angle, F32& d
 
 void LLVOAvatar::idleUpdateRenderCost()
 {
-	static LLCachedControl<U32> max_render_cost(gSavedSettings, "RenderAutoMuteRenderWeightLimit");
+	static LLCachedControl<U32> max_render_cost(gSavedSettings, "RenderAutoMuteRenderWeightLimit", 0);
 	static const U32 ARC_LIMIT = 20000;
 
 	if (gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_ATTACHMENT_BYTES))
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 931e65b3ea1ca37e66c374ec655b322715dfcf9b..9d45a74ecc931de48e27a79af429cad8ab624670 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -731,6 +731,8 @@ public:
 	void				cleanupAttachedMesh( LLViewerObject* pVO );
 	static LLVOAvatar*  findAvatarFromAttachment(LLViewerObject* obj);
 	/*virtual*/ BOOL	isWearingWearableType(LLWearableType::EType type ) const;
+	LLViewerObject *	findAttachmentByID( const LLUUID & target_id ) const;
+
 protected:
 	LLViewerJointAttachment* getTargetAttachmentPoint(LLViewerObject* viewer_object);
 	void 				lazyAttach();
diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp
index af55c8f741ad800fba5c576def69a47daca9b7e7..815965fb0a7d495152b48350d1a0e9ead77f8bf7 100755
--- a/indra/newview/llvoiceclient.cpp
+++ b/indra/newview/llvoiceclient.cpp
@@ -113,8 +113,8 @@ LLVoiceClient::LLVoiceClient()
 	:
 	mVoiceModule(NULL),
 	m_servicePump(NULL),
-	mVoiceEffectEnabled(LLCachedControl<bool>(gSavedSettings, "VoiceMorphingEnabled")),
-	mVoiceEffectDefault(LLCachedControl<std::string>(gSavedPerAccountSettings, "VoiceEffectDefault")),
+	mVoiceEffectEnabled(LLCachedControl<bool>(gSavedSettings, "VoiceMorphingEnabled", true)),
+	mVoiceEffectDefault(LLCachedControl<std::string>(gSavedPerAccountSettings, "VoiceEffectDefault", "00000000-0000-0000-0000-000000000000")),
 	mPTTDirty(true),
 	mPTT(true),
 	mUsePTT(true),
diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp
index ff73aa5354569809fb46ae6731692e762a0307c2..9497041482b6253823d11c69ba867aa437e9dd4a 100755
--- a/indra/newview/llvoicevivox.cpp
+++ b/indra/newview/llvoicevivox.cpp
@@ -786,7 +786,6 @@ void LLVivoxVoiceClient::stateMachine()
 						{
 							loglevel = "0";	// turn logging off completely
 						}
-						loglevel = "0";	// turn logging off completely
 						params.args.add("-ll");
 						params.args.add(loglevel);
 						params.cwd = gDirUtilp->getAppRODataDir();
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index d9efd23b436c72b702a5a995337de768adfc2f70..c233221e5f33c639147287184b57e93666fe9840 100755
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -343,6 +343,7 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys,
 					}
 				}
 				mTexAnimMode = 0;
+				
 				mTextureAnimp->unpackTAMessage(mesgsys, block_num);
 			}
 			else
@@ -693,7 +694,7 @@ void LLVOVolume::updateTextureVirtualSize(bool forced)
 		}
 	}
 
-	static LLCachedControl<bool> dont_load_textures(gSavedSettings,"TextureDisable");
+	static LLCachedControl<bool> dont_load_textures(gSavedSettings,"TextureDisable", false);
 		
 	if (dont_load_textures || LLAppViewer::getTextureFetch()->mDebugPause) // || !mDrawable->isVisible())
 	{
@@ -1036,8 +1037,7 @@ BOOL LLVOVolume::setVolume(const LLVolumeParams &params_in, const S32 detail, bo
 			}
 		}
 
-
-		static LLCachedControl<bool> use_transform_feedback(gSavedSettings, "RenderUseTransformFeedback");
+		static LLCachedControl<bool> use_transform_feedback(gSavedSettings, "RenderUseTransformFeedback", false);
 
 		bool cache_in_vram = use_transform_feedback && gTransformPositionProgram.mProgramObject &&
 			(!mVolumeImpl || !mVolumeImpl->isVolumeUnique());
@@ -4460,6 +4460,8 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
 
 	bool emissive = false;
 
+	
+
 	{
 		LLFastTimer t(FTM_REBUILD_VOLUME_FACE_LIST);
 
@@ -5198,7 +5200,7 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, LLFac
 
 	U32 buffer_usage = group->mBufferUsage;
 	
-	static LLCachedControl<bool> use_transform_feedback(gSavedSettings, "RenderUseTransformFeedback");
+	static LLCachedControl<bool> use_transform_feedback(gSavedSettings, "RenderUseTransformFeedback", false);
 
 	if (use_transform_feedback &&
 		gTransformPositionProgram.mProgramObject && //transform shaders are loaded
diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp
index 7996f8a64005b31f6e1b3f58f93877639b46c7c5..103668d0510ce381d2daf42038b9d4698e9b56f7 100755
--- a/indra/newview/llworld.cpp
+++ b/indra/newview/llworld.cpp
@@ -140,6 +140,7 @@ LLViewerRegion* LLWorld::addRegion(const U64 &region_handle, const LLHost &host)
 {
 	llinfos << "Add region with handle: " << region_handle << " on host " << host << llendl;
 	LLViewerRegion *regionp = getRegionFromHandle(region_handle);
+	std::string seedUrl;
 	if (regionp)
 	{
 		llinfos << "Region exists, removing it " << llendl;
@@ -161,6 +162,9 @@ LLViewerRegion* LLWorld::addRegion(const U64 &region_handle, const LLHost &host)
 			llwarns << "LLWorld::addRegion exists, but isn't alive" << llendl;
 		}
 
+		// Save capabilities seed URL
+		seedUrl = regionp->getCapability("Seed");
+
 		// Kill the old host, and then we can continue on and add the new host.  We have to kill even if the host
 		// matches, because all the agent state for the new camera is completely different.
 		removeRegion(old_host);
@@ -188,6 +192,11 @@ LLViewerRegion* LLWorld::addRegion(const U64 &region_handle, const LLHost &host)
 		llerrs << "Unable to create new region!" << llendl;
 	}
 
+	if ( !seedUrl.empty() )
+	{
+		regionp->setCapability("Seed", seedUrl);
+	}
+
 	mRegionList.push_back(regionp);
 	mActiveRegionList.push_back(regionp);
 	mCulledRegionList.push_back(regionp);
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index 94c187e21a78b3f306e29e3f413c2824b20a8eac..bb891996c9fb9c05f73e230aadb4cb8f0ae0ac5f 100755
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -153,6 +153,8 @@ with the same filename but different name
   <texture name="Command_Speak_Icon"        file_name="toolbar_icons/speak.png"        preload="true" />
   <texture name="Command_View_Icon"         file_name="toolbar_icons/view.png"         preload="true" />
   <texture name="Command_Voice_Icon"        file_name="toolbar_icons/nearbyvoice.png"  preload="true" />
+  <texture name="Command_Highlighting_Icon" file_name="toolbar_icons/highlighting.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
+  <texture name="Command_Highlighting_Selected_Icon" file_name="toolbar_icons/highlighting_selected.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
   <texture name="Caret_Bottom_Icon"         file_name="toolbar_icons/caret_bottom.png" preload="true" scale.left="1" scale.top="23" scale.right="15" scale.bottom="1" />
   <texture name="Caret_Right_Icon"          file_name="toolbar_icons/caret_right.png"  preload="true" scale.left="5" scale.top="15" scale.right="28" scale.bottom="1" />
   <texture name="Caret_Left_Icon"           file_name="toolbar_icons/caret_left.png"   preload="true" scale.left="1" scale.top="15" scale.right="23" scale.bottom="1" />
@@ -163,6 +165,7 @@ with the same filename but different name
   <texture name="ComboButton_On" file_name="widgets/ComboButton_On.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
   <texture name="ComboButton_Off" file_name="widgets/ComboButton_Off.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
   <texture name="ComboButton_UpOff" file_name="widgets/ComboButton_UpOff.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
+  <texture name="ComboButton_Hovered" file_name="widgets/ComboButton_Hover.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
 
   <texture name="Container" file_name="containers/Container.png" preload="false" />
 
diff --git a/indra/newview/skins/default/textures/toolbar_icons/highlighting_selected.png b/indra/newview/skins/default/textures/toolbar_icons/highlighting_selected.png
new file mode 100644
index 0000000000000000000000000000000000000000..aa1bb26a56bb19e4b4023fffb5bd9293ee634beb
Binary files /dev/null and b/indra/newview/skins/default/textures/toolbar_icons/highlighting_selected.png differ
diff --git a/indra/newview/skins/default/textures/widgets/ComboButton_Hover.png b/indra/newview/skins/default/textures/widgets/ComboButton_Hover.png
new file mode 100644
index 0000000000000000000000000000000000000000..d492b30b4059aebf49ecd8d4daacbf5fb2c07eff
Binary files /dev/null and b/indra/newview/skins/default/textures/widgets/ComboButton_Hover.png differ
diff --git a/indra/newview/skins/default/xui/da/floater_tools.xml b/indra/newview/skins/default/xui/da/floater_tools.xml
index 815bde456e36d499f0de9ea46a2dd2082afcba24..9be129bbf616c285a5bea52868c0c372309c9876 100755
--- a/indra/newview/skins/default/xui/da/floater_tools.xml
+++ b/indra/newview/skins/default/xui/da/floater_tools.xml
@@ -462,10 +462,6 @@
 				<combo_box.item label="Rør" name="suction"/>
 				<combo_box.item label="Væv" name="weave"/>
 			</combo_box>
-			<check_box initial_value="falsk" label="Flugt planare overflader" name="checkbox planar align" tool_tip="Flugt teksuter på alle valgte overflader med den sidst valgte overflade. Kræver at planar tekstur-mapning er valgt."/>
-			<text name="rpt">
-				Gentagelser / overflade
-			</text>
 			<spinner label="Vandret (U)" name="TexScaleU"/>
 			<check_box label="Vend" name="checkbox flip s"/>
 			<spinner label="Lodret (V)" name="TexScaleV"/>
diff --git a/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml
index 72200a07ad55fe5a18cf82b131151e6881cec827..e494b2b755ac2e427bf3a3bd4ba22097ebca44c1 100755
--- a/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml
@@ -26,14 +26,14 @@
 		<text name="ShadersText">
 			Overflader:
 		</text>
-		<check_box initial_value="sand" label="Gennemsigtig vand" name="TransparentWater"/>
+		<check_box initial_value="true" label="Gennemsigtig vand" name="TransparentWater"/>
 		<check_box initial_value="true" label="Glatte flader og skin" name="BumpShiny"/>
-		<check_box initial_value="sand" label="Lokale lys" name="LocalLights"/>
+		<check_box initial_value="true" label="Lokale lys" name="LocalLights"/>
 		<check_box initial_value="true" label="Basale flader" name="BasicShaders" tool_tip="Ved at slå dette valg fra, kan det forhindres at visse grafikkort drivere crasher."/>
 		<check_box initial_value="true" label="Atmosfæriske flader" name="WindLightUseAtmosShaders"/>
-		<check_box initial_value="sand" label="Lys og skygger" name="UseLightShaders"/>
-		<check_box initial_value="sand" label="&quot;Ambient Occlusion&quot;" name="UseSSAO"/>
-		<check_box initial_value="sand" label="Skarphedsdybde" name="UseDoF"/>
+		<check_box initial_value="true" label="Lys og skygger" name="UseLightShaders"/>
+		<check_box initial_value="true" label="&quot;Ambient Occlusion&quot;" name="UseSSAO"/>
+		<check_box initial_value="true" label="Skarphedsdybde" name="UseDoF"/>
 		<text name="shadows_label">
 			Skygger:
 		</text>
diff --git a/indra/newview/skins/default/xui/da/panel_preferences_setup.xml b/indra/newview/skins/default/xui/da/panel_preferences_setup.xml
index 479e98817ee76b747ad7859e80838a88b3d8bc2b..7be9a9d5552447211a41772e8de519c9ff7c94d9 100755
--- a/indra/newview/skins/default/xui/da/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/da/panel_preferences_setup.xml
@@ -26,14 +26,13 @@
 		Web:
 	</text>
 	<radio_group name="use_external_browser">
-		<radio_item label="Benyt min browser(IE, Firefox, Safari)" name="external" tool_tip="Brug systemets standard web browser til hjælp, web links, m.v. Ikke anbefalet hvis du kører i fuld-skærm." value="1"/>
+		<radio_item label="Benyt min browser(IE, Firefox, Safari)" name="external" tool_tip="Brug systemets standard web browser til hjælp, web links, m.v. Ikke anbefalet hvis du kører i fuld-skærm." value="true"/>
 		<radio_item label="Benyt den indbyggede browser" name="internal" tool_tip="Brug den indbyggede web browser til hjælp, web links m.v. Denne browser åbner et nyt vindue i [APP_NAME]." value=""/>
 	</radio_group>
 	<check_box initial_value="true" label="Aktivér plugins" name="browser_plugins_enabled"/>
 	<check_box initial_value="true" label="Acceptér cookies" name="cookies_enabled"/>
 	<check_box initial_value="true" label="Aktivér Javascript" name="browser_javascript_enabled"/>
-	<check_box initial_value="fra" label="Tilad media browser pop-ups" name="media_popup_enabled"/>
-	<check_box initial_value="false" label="Aktivér web proxy" name="web_proxy_enabled"/>
+	<check_box initial_value="false" label="Tilad media browser pop-ups" name="media_popup_enabled"/>	
 	<text name="Proxy location">
 		Proxy placering:
 	</text>
diff --git a/indra/newview/skins/default/xui/de/floater_tools.xml b/indra/newview/skins/default/xui/de/floater_tools.xml
index 5f5c34a5cf6d955c82103a33ed62615247524cad..6634a4bd90ca512bbbb6e18db719c5ffdf330a74 100755
--- a/indra/newview/skins/default/xui/de/floater_tools.xml
+++ b/indra/newview/skins/default/xui/de/floater_tools.xml
@@ -466,16 +466,11 @@
 				<combo_box.item label="Saugen" name="suction"/>
 				<combo_box.item label="gewoben" name="weave"/>
 			</combo_box>
-			<check_box initial_value="falsch" label="Flache Oberflächen ausrichten" name="checkbox planar align" tool_tip="Texturen auf allen ausgewählten Oberflächen an der zuletzt ausgewählten Oberfläche ausrichten. Planar Texture Mapping erforderlich."/>
-			<text name="rpt">
-				Wiederholungen / Oberfläche
-			</text>
 			<spinner label="Horizontal (U)" name="TexScaleU"/>
 			<check_box label="Umkehren" name="checkbox flip s"/>
 			<spinner label="Vertikal (V)" name="TexScaleV"/>
 			<check_box label="Umkehren" name="checkbox flip t"/>
 			<spinner label="RotationËš" name="TexRot"/>
-			<spinner label="Wiederholungen / Meter" name="rptctrl"/>
 			<button label="Ãœbernehmen" label_selected="Ãœbernehmen" name="button apply"/>
 			<text name="tex offset">
 				Texture-Versatz
diff --git a/indra/newview/skins/default/xui/en/floater_im_container.xml b/indra/newview/skins/default/xui/en/floater_im_container.xml
index 1215efb7f96478c879bf0c70d9bfaa693d01abe9..28c89868bdd6526bfe04eb892fcda5b05ef6b630 100755
--- a/indra/newview/skins/default/xui/en/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/en/floater_im_container.xml
@@ -41,8 +41,8 @@
          auto_resize="false"
          user_resize="true"        
          name="conversations_layout_panel"
-         min_dim="38"
-         expanded_min_dim="136">
+         min_dim="43"
+         expanded_min_dim="140">
             <layout_stack
              animate="false" 
              follows="left|top|right"
@@ -100,7 +100,7 @@
                 <layout_panel
                  auto_resize="false"
                  name="conversations_pane_buttons_collapsed"
-                 width="31">
+                 width="35">
                     <button
                      follows="right|top"
                      height="25"
@@ -110,10 +110,10 @@
                      image_unselected="Toolbar_Middle_Off"
                      layout="topleft"
                      top="1"
-                     left="0"
+                     left="4"
                      name="expand_collapse_btn"
                      tool_tip="Collapse/Expand this list"
-                     width="31" />
+                     width="35" />
                 </layout_panel>
             </layout_stack>
             <panel
diff --git a/indra/newview/skins/default/xui/en/menu_avatar_icon.xml b/indra/newview/skins/default/xui/en/menu_avatar_icon.xml
index 50910dff32437eba7156eaf03f2ca7aac9cfc720..77b9095f7cdf9996cc9e2506f662b2533f0b3912 100755
--- a/indra/newview/skins/default/xui/en/menu_avatar_icon.xml
+++ b/indra/newview/skins/default/xui/en/menu_avatar_icon.xml
@@ -17,7 +17,7 @@
          parameter="profile" />
     </menu_item_call>
     <menu_item_call
-     label="Send IM..."
+     label="IM"
      layout="topleft"
      name="Send IM">
         <menu_item_call.on_click
@@ -25,7 +25,26 @@
          parameter="im" />
     </menu_item_call>
     <menu_item_call
-     label="Add Friend..."
+     label="Offer teleport"
+     layout="topleft"
+     name="Offer Teleport">
+        <on_click function="AvatarIcon.Action" parameter="teleport"/>
+    </menu_item_call>
+    <menu_item_call
+     label="Voice call"
+     layout="topleft"
+     name="Voice Call">
+        <on_click function="AvatarIcon.Action" parameter="voice_call"/>
+    </menu_item_call>
+    <menu_item_call
+     label="Chat history..."
+     layout="topleft"
+     name="Chat History">
+        <on_click function="AvatarIcon.Action" parameter="chat_history"/>   
+    </menu_item_call>
+    <menu_item_separator layout="topleft" name="separator_chat_history"/>
+    <menu_item_call
+     label="Add friend"
      layout="topleft"
      name="Add Friend">
         <menu_item_call.on_click
@@ -33,11 +52,56 @@
          parameter="add" />
     </menu_item_call>
     <menu_item_call
-     label="Remove Friend..."
+     label="Remove friend"
      layout="topleft"
      name="Remove Friend">
         <menu_item_call.on_click
          function="AvatarIcon.Action"
          parameter="remove" />
     </menu_item_call>
+    <menu_item_call
+     label="Invite to group..."
+     layout="topleft"
+     name="Invite Group">
+      <on_click function="AvatarIcon.Action" parameter="invite_to_group" />   
+    </menu_item_call>
+    <menu_item_separator layout="topleft" name="separator_invite_to_group"/>
+    <menu_item_call
+     label="Zoom In"
+     layout="topleft"
+     name="Zoom In">
+      <on_click function="AvatarIcon.Action" parameter="zoom_in" />
+    </menu_item_call>
+    <menu_item_call
+     label="Map"
+     layout="topleft"
+     name="Map">
+       <on_click function="AvatarIcon.Action" parameter="map" />
+    </menu_item_call>
+    <menu_item_call
+     label="Share"
+     layout="topleft"
+     name="Share">
+       <on_click function="AvatarIcon.Action" parameter="share" />
+    </menu_item_call>
+    <menu_item_call
+     label="Pay"
+     layout="topleft"
+     name="Pay">
+       <on_click function="AvatarIcon.Action" parameter="pay" />
+    </menu_item_call>
+    <menu_item_check
+     label="Block Voice"
+     layout="topleft"
+     name="Block Unblock">
+       <on_click function="AvatarIcon.Action" parameter="block_unblock" />
+       <on_check function="AvatarIcon.Check" parameter="is_blocked" />
+    </menu_item_check>
+    <menu_item_check
+     label="Block Text"
+     layout="topleft"
+     name="Mute Text">
+       <on_click function="AvatarIcon.Action" parameter="mute_unmute" />
+       <on_check function="AvatarIcon.Check" parameter="is_muted" />   
+  </menu_item_check>
 </menu>
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index d635b8ee93e3c39c02e9e5440ff3f61493d6c939..e5e2bd4c114d97226728a760861a9ad3a3c3b55d 100755
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -1305,18 +1305,18 @@
      tear_off="true">
         <menu_item_call
          label="How to..."
-         name="How To">
+         name="How To"
+         shortcut="F1">
             <menu_item_call.on_click
              function="Help.ToggleHowTo"
              parameter="" />
         </menu_item_call>
         <menu_item_call
-         label="[SECOND_LIFE] Help"
-         name="Second Life Help"
-         shortcut="F1">
+           label="Quickstart"
+           name="Quickstart">
             <menu_item_call.on_click
-             function="ShowHelp"
-             parameter="f1_help" />
+            function="Advanced.ShowURL"
+            parameter="http://community.secondlife.com/t5/English-Knowledge-Base/Second-Life-Quickstart/ta-p/1087919"/>
         </menu_item_call>
 <!--        <menu_item_call
          label="Tutorial"
@@ -1326,20 +1326,12 @@
              parameter="hud" />
         </menu_item_call>-->
 		<menu_item_separator/>
-		
-		<menu_item_call
-             label="User’s guide"
-             name="User’s guide">
-             <menu_item_call.on_click
-                 function="Advanced.ShowURL"
-                 parameter="http://community.secondlife.com/t5/English-Knowledge-Base/Second-Life-User-s-Guide/ta-p/1244857"/>
-        </menu_item_call>
         <menu_item_call
              label="Knowledge Base"
              name="Knowledge Base">
              <menu_item_call.on_click
                  function="Advanced.ShowURL"
-                 parameter="http://community.secondlife.com/t5/tkb/communitypage"/>
+            parameter="http://community.secondlife.com/t5/English-Knowledge-Base/Second-Life-User-s-Guide/ta-p/1244857"/>
         </menu_item_call>
         <menu_item_call
              label="Wiki"
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index eb71fdcf2c7230773a7b0b81fe107df485b1d90e..35f2e7b31e9e7570fd426569d78c14775e00d70c 100755
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -3481,7 +3481,7 @@ or you can install it now.
    name="DownloadBackgroundTip"
    type="notify">
 We have downloaded an update to your [APP_NAME] installation.
-Version [VERSION] [[RELEASE_NOTES_FULL_URL] Information about this update]
+Version [VERSION] [[INFO_URL] Information about this update]
     <tag>confirm</tag>
     <usetemplate
      name="okcancelbuttons"
@@ -3494,7 +3494,7 @@ Version [VERSION] [[RELEASE_NOTES_FULL_URL] Information about this update]
  name="DownloadBackgroundDialog"
  type="alertmodal">
 We have downloaded an update to your [APP_NAME] installation.
-Version [VERSION] [[RELEASE_NOTES_FULL_URL] Information about this update]
+    Version [VERSION] [[INFO_URL] Information about this update]
     <tag>confirm</tag>
     <usetemplate
      name="okcancelbuttons"
@@ -6038,8 +6038,8 @@ Please select at least one type of content to search (General, Moderate, or Adul
 [MESSAGE]
   </notification>
 
-  <notification
-   icon="notify.tga"
+ <notification
+  icon="notify.tga"
   name="FacebookConnect"
   type="notifytip">
 [MESSAGE]
@@ -6337,12 +6337,21 @@ You can only claim public land in the Region you&apos;re in.
   <notification
    icon="notify.tga"
    name="RegionTPAccessBlocked"
-   persist="true"
+   persist="false"
    type="notify">
    <tag>fail</tag>
     The region you're trying to visit contains content exceeding your current preferences.  You can change your preferences using Me &gt; Preferences &gt; General.
   </notification>
 
+  <notification
+	icon="notify.tga"
+   name="RegionAboutToShutdown"
+   persist="false"
+   type="notify">
+    <tag>fail</tag>
+    The region you're trying to enter is about to shut down.
+  </notification>
+  
   <notification
 	icon="notify.tga"
 	name="URBannedFromRegion"
@@ -6887,7 +6896,7 @@ This will add a bookmark in your inventory so you can quickly IM this Resident.
    priority="high"
    sound="UISndAlert"
    type="notify">
-This region will restart in [MINUTES] minutes.
+The region "[NAME]" will restart in [MINUTES] minutes.
 If you stay in this region you will be logged out.
   </notification>
 
@@ -6897,7 +6906,7 @@ If you stay in this region you will be logged out.
    priority="high"
    sound="UISndAlert"
    type="notify">
-This region will restart in [SECONDS] seconds.
+The region "[NAME]" will restart in [SECONDS] seconds.
 If you stay in this region you will be logged out.
   </notification>
 
@@ -8780,11 +8789,11 @@ You are no longer allowed here and have [EJECT_TIME] seconds to leave.
 
   <notification
    icon="alertmodal.tga"
-   name="NoEnterServerFull"
+   name="NoEnterRegionMaybeFull"
    type="notify">
    <tag>fail</tag>
-You can't enter this region because 
-the server is full.
+You can't enter region "[NAME]".
+It may be full or restarting soon.
   </notification>
 
   <notification
@@ -9548,6 +9557,14 @@ Cannot attach object because you do not have permission to move it.
 Not enough script resources available to attach object!
   </notification>
 
+  <notification
+   icon="alertmodal.tga"
+   name="CantAttachObjectBeingRemoved"
+   type="notify">
+    <tag>fail</tag>
+    Cannot attach object because it is already being removed.
+  </notification>
+
   <notification
    icon="alertmodal.tga"
    name="CantDropItemTrialUser"
diff --git a/indra/newview/skins/default/xui/en/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/en/panel_conversation_list_item.xml
index a054e71e34710eaa61d99e731fcf50397606a715..4372cf69bf208029e88c52361ea6e21d6c48cce5 100755
--- a/indra/newview/skins/default/xui/en/panel_conversation_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_conversation_list_item.xml
@@ -11,7 +11,7 @@
      height="20"
      default_icon_name="Generic_Person"
      layout="topleft"
-     left="5"
+     left="9"
      top="2"
      visible="false"
      width="20" />
@@ -20,7 +20,7 @@
      height="20"
      default_icon_name="Generic_Group"
      layout="topleft"
-     left="5"
+     left="9"
      top="2"
      visible="false"
      width="20" />
@@ -29,9 +29,9 @@
      height="20"
      image_name="Nearby_chat_icon"
      layout="topleft"
-     left="5"
+     left="10"
      name="nearby_chat_icon"
-     top="2"
+     top="3"
      visible="false"
      width="20"/>
     <layout_stack
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 3edeb9aa3670b7e782b7afac5715e28633fbeb5c..c7edba21f85aa56e2ea2e084102ed0a56b7d3ef9 100755
--- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
@@ -87,6 +87,7 @@
 	         direction="down"
 	         height="23"
 	         image_overlay="Arrow_Left_Off"
+	         image_hover_unselected="PushButton_Over"
 	         image_bottom_pad="1"
 	         layout="topleft"
 	         left="10"
@@ -99,6 +100,7 @@
 	         direction="down"
 	         height="23"
 	         image_overlay="Arrow_Right_Off"
+	         image_hover_unselected="PushButton_Over"
 	         image_bottom_pad="1"
 	         layout="topleft"
 	         left_pad="0"
@@ -111,6 +113,7 @@
 	         height="23"
 	         image_bottom_pad="1"
 	         image_overlay="Home_Off"
+	         image_hover_unselected="PushButton_Over"
 	         layout="topleft"
 	         left_pad="7"
 	         name="home_btn"
diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml
index dc0e4a594752055fd9512085094a22c13acaf36c..3caf2b3d7efab2f286bc8d49b343816c7f19f92c 100755
--- a/indra/newview/skins/default/xui/en/panel_people.xml
+++ b/indra/newview/skins/default/xui/en/panel_people.xml
@@ -66,7 +66,8 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
      tab_position="top"
      top="0"
      halign="center"
-     right="-5">
+     right="-5"
+     use_highlighting_on_hover="true">
 
 <!-- ================================= NEARBY tab =========================== -->
 
@@ -500,7 +501,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
             <text
                 type="string"
                 length="1"
-                follows="all"
+                follows="left|top|right"
                 height="14"
                 layout="topleft"
                 right="-10"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 8ac95beddb329738c229bdfe0db4e27cd097f77e..7e79d297ef6af6a392e40a5fd7742d0df422f001 100755
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -456,6 +456,8 @@ Please try logging in again in a minute.</string>
 	<string name="load_file_verb">Load</string>
 	<string name="targa_image_files">Targa Images</string>
 	<string name="bitmap_image_files">Bitmap Images</string>
+	<string name="png_image_files">PNG Images</string>
+	<string name="save_texture_image_files">Targa or PNG Images</string>
 	<string name="avi_movie_file">AVI Movie File</string>
 	<string name="xaf_animation_file">XAF Anim File</string>
 	<string name="xml_file">XML File</string>
diff --git a/indra/newview/skins/default/xui/en/widgets/location_input.xml b/indra/newview/skins/default/xui/en/widgets/location_input.xml
index 61ec046649d85ddced12ac0f6810beb9a2af34a4..4ea1aa6efbef011e50aa451780be76313855d0fb 100755
--- a/indra/newview/skins/default/xui/en/widgets/location_input.xml
+++ b/indra/newview/skins/default/xui/en/widgets/location_input.xml
@@ -150,6 +150,7 @@
   <combo_button
 		name="Location History"
                 label=""
+                image_hover_unselected="ComboButton_Hovered"
                 pad_right="0"/>
   <combo_list
 	      bg_writeable_color="MenuDefaultBgColor"
diff --git a/indra/newview/skins/default/xui/en/widgets/tab_container.xml b/indra/newview/skins/default/xui/en/widgets/tab_container.xml
index 20acea57ea89fa4fd43262159f9f4db51368d5ac..9559be214a56117ef6e2efe10afe12c3e45e6d32 100755
--- a/indra/newview/skins/default/xui/en/widgets/tab_container.xml
+++ b/indra/newview/skins/default/xui/en/widgets/tab_container.xml
@@ -25,19 +25,25 @@ label_pad_left - padding to the left of tab button labels
                tab_bottom_image_selected="Toolbar_Left_Selected"
                tab_left_image_unselected="SegmentedBtn_Left_Disabled"
                tab_left_image_selected="SegmentedBtn_Left_Selected_Over"
-/>
+               tab_top_image_hovered="TabTop_Left_Selected"
+               tab_button_image_hovered="Toolbar_Left_Selected"
+               tab_left_image_hovered="SegmentedBtn_Left_Selected_Over"/>
   <middle_tab tab_top_image_unselected="TabTop_Middle_Off"
                tab_top_image_selected="TabTop_Middle_Selected"
                tab_bottom_image_unselected="Toolbar_Middle_Off"
                tab_bottom_image_selected="Toolbar_Middle_Selected"
                tab_left_image_unselected="SegmentedBtn_Left_Disabled"
                tab_left_image_selected="SegmentedBtn_Left_Selected_Over"
-/>
+               tab_top_image_hovered="TabTop_Middle_Selected"
+               tab_button_image_hovered="Toolbar_Middle_Selected"
+               tab_left_image_hovered="SegmentedBtn_Left_Selected_Over"/>
   <last_tab tab_top_image_unselected="TabTop_Right_Off"
                tab_top_image_selected="TabTop_Right_Selected"
                tab_bottom_image_unselected="Toolbar_Right_Off"
                tab_bottom_image_selected="Toolbar_Right_Selected"
                tab_left_image_unselected="SegmentedBtn_Left_Disabled"
                tab_left_image_selected="SegmentedBtn_Left_Selected_Over"
-/>
+               tab_top_image_hovered="TabTop_Right_Selected"
+               tab_button_image_hovered="Toolbar_Right_Selected"
+               tab_left_image_hovered="SegmentedBtn_Left_Selected_Over"/>
 </tab_container>
diff --git a/indra/newview/skins/default/xui/es/floater_hardware_settings.xml b/indra/newview/skins/default/xui/es/floater_hardware_settings.xml
index c351db5eaecebc72ec35c37f1dab14da7bc3b1bb..c2327c96c442f9d379de53a0cc6da013c8fb91e9 100755
--- a/indra/newview/skins/default/xui/es/floater_hardware_settings.xml
+++ b/indra/newview/skins/default/xui/es/floater_hardware_settings.xml
@@ -28,7 +28,7 @@
 	<text name="tc label">
 		Activar S3TC:
 	</text>
-	<check_box initial_value="verdadero" label="Activar la compresión de texturas (requiere reiniciar)" name="texture compression" tool_tip="Comprime las texturas de la memoria de vídeo, lo cual permite cargar texturas de una resolución más alta, pero con una cierta pérdida de calidad del color."/>
+	<check_box initial_value="true" label="Activar la compresión de texturas (requiere reiniciar)" name="texture compression" tool_tip="Comprime las texturas de la memoria de vídeo, lo cual permite cargar texturas de una resolución más alta, pero con una cierta pérdida de calidad del color."/>
 	<slider label="Memoria para texturas (MB):" name="GraphicsCardTextureMemory" tool_tip="Cantidad de memoria asignada a las texturas. Por defecto es la memoria de la tarjeta de vídeo. Reducir esta cantidad puede mejorar el rendimiento, pero también hacer que las texturas se vean borrosas."/>
 	<spinner label="Intensidad de la niebla:" name="fog"/>
 	<button label="OK" label_selected="OK" name="OK"/>
diff --git a/indra/newview/skins/default/xui/es/floater_tools.xml b/indra/newview/skins/default/xui/es/floater_tools.xml
index 15462c37266fe1cd17d50a6f054d82d1ab4a7a38..32baa5bb7dbb51e64c7ff326dfb406bcb203cf51 100755
--- a/indra/newview/skins/default/xui/es/floater_tools.xml
+++ b/indra/newview/skins/default/xui/es/floater_tools.xml
@@ -443,16 +443,11 @@
 				<combo_box.item label="succión" name="suction"/>
 				<combo_box.item label="tejido" name="weave"/>
 			</combo_box>
-			<check_box initial_value="falso" label="Alinear caras del plano" name="checkbox planar align" tool_tip="Alinear texturas en todas las caras seleccionadas con la última cara seleccionada. Requiere la representación de texturas en el plano."/>
-			<text name="rpt">
-				Repeticiones por cara
-			</text>
 			<spinner label="Horizontal (U)" name="TexScaleU"/>
 			<check_box label="Voltear" name="checkbox flip s"/>
 			<spinner label="Vertical (V)" name="TexScaleV"/>
 			<check_box label="Voltear" name="checkbox flip t"/>
 			<spinner label="Rotación" name="TexRot"/>
-			<spinner label="Repeticiones / Metro" name="rptctrl"/>
 			<button label="Aplicar" label_selected="Aplicar" name="button apply"/>
 			<text name="tex offset">
 				Desplazar
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml
index 9362f767086fbf096b4b8aefdb710b0a7ca29d34..a9eab74e2b5983df5c94430368dd16c6ae23029f 100755
--- a/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml
@@ -25,14 +25,14 @@
 		<text name="ShadersText">
 			Shaders:
 		</text>
-		<check_box initial_value="verdadero" label="Agua transparente" name="TransparentWater"/>
+		<check_box initial_value="true" label="Agua transparente" name="TransparentWater"/>
 		<check_box initial_value="true" label="Efecto de relieve y brillo" name="BumpShiny"/>
-		<check_box initial_value="verdadero" label="Luces locales" name="LocalLights"/>
+		<check_box initial_value="true" label="Luces locales" name="LocalLights"/>
 		<check_box initial_value="true" label="Shaders básicos" name="BasicShaders" tool_tip="Desactivando esta opción puede prevenir fallos en algunos controladores de la tarjeta gráfica."/>
 		<check_box initial_value="true" label="Shaders de la atmósfera" name="WindLightUseAtmosShaders"/>
-		<check_box initial_value="verdadero" label="Modelo de iluminación avanzado" name="UseLightShaders"/>
-		<check_box initial_value="verdadero" label="Oclusión del ambiente" name="UseSSAO"/>
-		<check_box initial_value="verdadero" label="Profundidad del campo" name="UseDoF"/>
+		<check_box initial_value="true" label="Modelo de iluminación avanzado" name="UseLightShaders"/>
+		<check_box initial_value="true" label="Oclusión del ambiente" name="UseSSAO"/>
+		<check_box initial_value="true" label="Profundidad del campo" name="UseDoF"/>
 		<text name="shadows_label">
 			Sombras:
 		</text>
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_setup.xml b/indra/newview/skins/default/xui/es/panel_preferences_setup.xml
index f7eaa03d632cc3cd2b0460ac18849d1bebd9cf9e..508bfbcd3262ac6375e1132d3fa297c1287577f7 100755
--- a/indra/newview/skins/default/xui/es/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_setup.xml
@@ -21,7 +21,7 @@
 	<check_box initial_value="true" label="Activar plugins" name="browser_plugins_enabled"/>
 	<check_box initial_value="true" label="Aceptar las &apos;cookies&apos;" name="cookies_enabled"/>
 	<check_box initial_value="true" label="Activar Javascript" name="browser_javascript_enabled"/>
-	<check_box initial_value="falso" label="Permitir las ventanas emergentes en el navegador" name="media_popup_enabled"/>
+	<check_box initial_value="false" label="Permitir las ventanas emergentes en el navegador" name="media_popup_enabled"/>
 	<text name="Software updates:">
 		Actualizaciones de software:
 	</text>
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 5cb1654c70302d8e70c45ff2ddbfdeb41c9cbaa9..dcd698471520f3058181562cb0a8da84f0d20c42 100755
--- a/indra/newview/skins/default/xui/es/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_sound.xml
@@ -19,7 +19,7 @@
 	<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" 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"/>
-	<check_box label="Reproducir sonidos de los gestos" name="gesture_audio_play_btn" tool_tip="Selecciona esta opción para escuchar los sonidos de los gestos" value="verdadero"/>
+	<check_box label="Reproducir sonidos de los gestos" name="gesture_audio_play_btn" tool_tip="Selecciona esta opción para escuchar los sonidos de los gestos" value="true"/>
 	<text name="voice_chat_settings">
 		Configuración del chat de voz
 	</text>
diff --git a/indra/newview/skins/default/xui/es/panel_tools_texture.xml b/indra/newview/skins/default/xui/es/panel_tools_texture.xml
index 7199905a1c72fbd0a8fff89a5d51345760568199..b820880e60a43f5f37bb263f73ae0769357a9332 100644
--- a/indra/newview/skins/default/xui/es/panel_tools_texture.xml
+++ b/indra/newview/skins/default/xui/es/panel_tools_texture.xml
@@ -112,5 +112,5 @@
 	<spinner label="Grados de rotación" name="shinyRot"/>
 	<spinner label="Desplazamiento horizontal" name="shinyOffsetU"/>
 	<spinner label="Desplazamiento vertical" name="shinyOffsetV"/>
-	<check_box initial_value="falso" label="Alinear caras del plano" name="checkbox planar align" tool_tip="Alinear texturas en todas las caras seleccionadas con la última cara seleccionada. Requiere la representación de texturas en el plano."/>
+	<check_box initial_value="false" label="Alinear caras del plano" name="checkbox planar align" tool_tip="Alinear texturas en todas las caras seleccionadas con la última cara seleccionada. Requiere la representación de texturas en el plano."/>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/floater_hardware_settings.xml b/indra/newview/skins/default/xui/fr/floater_hardware_settings.xml
index 098f8fc7131522940ce660937ff5c56df87c2c55..bb146556ba0f1ae1cc8ae159722fb441b9f3d54e 100755
--- a/indra/newview/skins/default/xui/fr/floater_hardware_settings.xml
+++ b/indra/newview/skins/default/xui/fr/floater_hardware_settings.xml
@@ -28,7 +28,7 @@
 	<text name="tc label">
 		Activer S3TC :
 	</text>
-	<check_box initial_value="vraie" label="Activer la compression des textures (redémarrage requis)" name="texture compression" tool_tip="Comprime les textures en mémoire vidéo afin de permettre de charger des textures de résolution plus élevée au prix d&apos;une certaine qualité de couleur."/>
+	<check_box initial_value="true" label="Activer la compression des textures (redémarrage requis)" name="texture compression" tool_tip="Comprime les textures en mémoire vidéo afin de permettre de charger des textures de résolution plus élevée au prix d&apos;une certaine qualité de couleur."/>
 	<slider label="Mémoire textures (Mo) :" name="GraphicsCardTextureMemory" tool_tip="Quantité de mémoire à affecter aux textures. Utilise la mémoire de la carte vidéo par défaut. Si vous réduisez ce paramètre, cela peut améliorer les performances, mais les textures risquent d&apos;être floues."/>
 	<spinner label="Indice du brouillard :" name="fog"/>
 	<button label="OK" label_selected="OK" name="OK"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_tools.xml b/indra/newview/skins/default/xui/fr/floater_tools.xml
index bcc3423862aac23afa7778e750445298bab83146..421e14d51baf8ba1c1a8b54e75c0d9d023f5a14e 100755
--- a/indra/newview/skins/default/xui/fr/floater_tools.xml
+++ b/indra/newview/skins/default/xui/fr/floater_tools.xml
@@ -463,16 +463,11 @@
 				<combo_box.item label="Ventouses" name="suction"/>
 				<combo_box.item label="Tissage" name="weave"/>
 			</combo_box>
-			<check_box initial_value="false" label="Aligner les faces Plan" name="checkbox planar align" tool_tip="Aligner les textures sur toutes les faces sélectionnées avec la dernière face sélectionnée. Application de la texture Plan requise."/>
-			<text name="rpt">
-				Répétitions / Face
-			</text>
 			<spinner label="Horizontal (U)" name="TexScaleU"/>
 			<check_box label="Inverser" name="checkbox flip s"/>
 			<spinner label="Vertical (V)" name="TexScaleV"/>
 			<check_box label="Inverser" name="checkbox flip t"/>
 			<spinner label="RotationËš" name="TexRot"/>
-			<spinner label="Répétitions / Mètre" name="rptctrl"/>
 			<button label="Appliquer" label_selected="Appliquer" name="button apply"/>
 			<text name="tex offset">
 				Décalage de la texture
diff --git a/indra/newview/skins/default/xui/it/floater_tools.xml b/indra/newview/skins/default/xui/it/floater_tools.xml
index dd59035dd4f59a288227a374bfccd93efeb34322..468f284ccb00bc7d124e7434c8bbf7c715d8e454 100755
--- a/indra/newview/skins/default/xui/it/floater_tools.xml
+++ b/indra/newview/skins/default/xui/it/floater_tools.xml
@@ -470,16 +470,11 @@
 				<combo_box.item label="Cerchi rialzati" name="suction"/>
 				<combo_box.item label="Trama" name="weave"/>
 			</combo_box>
-			<check_box initial_value="falso" label="Allinea facce planari" name="checkbox planar align" tool_tip="Allinea le texture su tutte le facce selezionate con l’ultima faccia selezionata. È richiesta la mappatura planare delle texture."/>
-			<text name="rpt">
-				Ripetizioni / Faccia
-			</text>
 			<spinner label="Orizzontale (U)" name="TexScaleU"/>
 			<check_box label="Inverti" name="checkbox flip s"/>
 			<spinner label="Verticale (V)" name="TexScaleV"/>
 			<check_box label="Inverti" name="checkbox flip t"/>
 			<spinner label="RotazioneËš" name="TexRot"/>
-			<spinner label="Ripetizioni / Metro" name="rptctrl"/>
 			<button label="Applica" label_selected="Applica" name="button apply"/>
 			<text name="tex offset">
 				Bilanciamento della texture
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml
index e7483b1ba5c385e72d542383be4e6513cf58301f..2978c48db6a7fc4a054ffa06d65bb22808184355 100755
--- a/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml
@@ -25,7 +25,7 @@
 		<text name="ShadersText">
 			Effetti grafici:
 		</text>
-		<check_box initial_value="vero" label="Acqua trasparente" name="TransparentWater"/>
+		<check_box initial_value="true" label="Acqua trasparente" name="TransparentWater"/>
 		<check_box initial_value="true" label="Piccoli rilievi e scintillii" name="BumpShiny"/>
 		<check_box initial_value="true" label="Luci locali" name="LocalLights"/>
 		<check_box initial_value="true" label="Effetti grafici base" name="BasicShaders" tool_tip="Disabilitare questa opzione può evitare che qualche scheda grafica vada in crash."/>
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_setup.xml b/indra/newview/skins/default/xui/it/panel_preferences_setup.xml
index 4c190197b43e542b6642813401171e453d9d839a..fcc9661d03aa838b9a8424b0b64fe53da3c9efd3 100755
--- a/indra/newview/skins/default/xui/it/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_setup.xml
@@ -21,7 +21,7 @@
 	<check_box initial_value="true" label="Abilita plugin" name="browser_plugins_enabled"/>
 	<check_box initial_value="true" label="Accetta cookie" name="cookies_enabled"/>
 	<check_box initial_value="true" label="Abilita Javascript" name="browser_javascript_enabled"/>
-	<check_box initial_value="falso" label="Consenti pop-up nel browser media" name="media_popup_enabled"/>
+	<check_box initial_value="false" label="Consenti pop-up nel browser media" name="media_popup_enabled"/>
 	<text name="Software updates:">
 		Aggiornamenti software:
 	</text>
diff --git a/indra/newview/skins/default/xui/it/panel_tools_texture.xml b/indra/newview/skins/default/xui/it/panel_tools_texture.xml
index 4e515563aca3a929fd964861523df048a2ecd33e..36ad2980cb1afca36e22dfd1380ef351952221ec 100644
--- a/indra/newview/skins/default/xui/it/panel_tools_texture.xml
+++ b/indra/newview/skins/default/xui/it/panel_tools_texture.xml
@@ -112,5 +112,5 @@
 	<spinner label="Gradi di rotazione" name="shinyRot"/>
 	<spinner label="Spostamento orizzontale" name="shinyOffsetU"/>
 	<spinner label="Spostamento verticale" name="shinyOffsetV"/>
-	<check_box initial_value="falso" label="Allinea facce planari" name="checkbox planar align" tool_tip="Allinea le texture su tutte le facce selezionate con l’ultima faccia selezionata. È richiesta la mappatura planare delle texture."/>
+	<check_box initial_value="false" label="Allinea facce planari" name="checkbox planar align" tool_tip="Allinea le texture su tutte le facce selezionate con l’ultima faccia selezionata. È richiesta la mappatura planare delle texture."/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/floater_tools.xml b/indra/newview/skins/default/xui/ja/floater_tools.xml
index 4bd6439ad25e35287f9f036e5129847a4bd6f2f8..5511433ae3773d5b30090936c19a723a7e1f093b 100755
--- a/indra/newview/skins/default/xui/ja/floater_tools.xml
+++ b/indra/newview/skins/default/xui/ja/floater_tools.xml
@@ -469,16 +469,11 @@
 				<combo_box.item label="吸い込み" name="suction"/>
 				<combo_box.item label="織目" name="weave"/>
 			</combo_box>
-			<check_box initial_value="false" label="平面を揃える" name="checkbox planar align" tool_tip="選択面全てのテクスチャを、最後に選択された面に揃えます。 平面テクスチャのマッピングが必要です。"/>
-			<text name="rpt">
-				反復 / 面
-			</text>
 			<spinner label="水平(U)" name="TexScaleU"/>
 			<check_box label="反転" name="checkbox flip s"/>
 			<spinner label="垂直(V)" name="TexScaleV"/>
 			<check_box label="反転" name="checkbox flip t"/>
 			<spinner label="回転˚" name="TexRot"/>
-			<spinner label="反復 / メーター" name="rptctrl"/>
 			<button label="適用" label_selected="適用" name="button apply"/>
 			<text name="tex offset">
 				テクスチャのズレ
diff --git a/indra/newview/skins/default/xui/pl/floater_tools.xml b/indra/newview/skins/default/xui/pl/floater_tools.xml
index 9e6fed838764667ce242b701813c3d0d59c2adb3..69d5c23f9c8dc82385cfc9b572485574b56680cb 100755
--- a/indra/newview/skins/default/xui/pl/floater_tools.xml
+++ b/indra/newview/skins/default/xui/pl/floater_tools.xml
@@ -442,16 +442,11 @@
 				<combo_box.item label="Suction" name="suction"/>
 				<combo_box.item label="Fali" name="weave"/>
 			</combo_box>
-			<check_box initial_value="nieprawda" label="Połącz powierzchnie planarne" name="checkbox planar align" tool_tip="Połącz tekstury na wszystkich wybranych powierzchniach z powierzchnią wybraną jako ostatnia. Wymaga planarnego mapowania tekstury."/>
-			<text name="rpt">
-				Powtórzenia / Powierzchnia
-			</text>
 			<spinner label="Poziomo (U)" name="TexScaleU"/>
 			<check_box label="Odwróć" name="checkbox flip s"/>
 			<spinner label="Pionowo (V)" name="TexScaleV"/>
 			<check_box label="Odwróć" name="checkbox flip t"/>
 			<spinner label="Powtórzenia˚" name="TexRot"/>
-			<spinner label="Powtórzenia / metr" name="rptctrl"/>
 			<button label="Zastosuj" label_selected="Zastosuj" name="button apply"/>
 			<text name="tex offset">
 				Wyrównanie tekstury
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml
index f2beef091a413646edb99fefe1b43d950a79af0c..4cd271a14125868d8418b2c4db77f39a3d0624ec 100755
--- a/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml
@@ -26,7 +26,7 @@
 		<text name="ShadersText">
 			Cieniowanie pixeli (shadery):
 		</text>
-		<check_box initial_value="prawda" label="Przeźroczystość wody" name="TransparentWater"/>
+		<check_box initial_value="true" label="Przeźroczystość wody" name="TransparentWater"/>
 		<check_box initial_value="true" label="Mapowanie wypukłości i połysk" name="BumpShiny"/>
 		<check_box initial_value="true" label="Podstawowe shadery" name="BasicShaders" tool_tip="Wyłączenie tej opcji może naprawić błędy niektórych sterowników graficznych."/>
 		<check_box initial_value="true" label="Shadery atmosfery" name="WindLightUseAtmosShaders"/>
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_setup.xml b/indra/newview/skins/default/xui/pl/panel_preferences_setup.xml
index fa0a5981a8711f62b775bf2f231710522d54790b..b663e182278bd38c7125f0bb72bd61726c37ab7d 100755
--- a/indra/newview/skins/default/xui/pl/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_setup.xml
@@ -26,14 +26,13 @@
 		Internet:
 	</text>
 	<radio_group name="use_external_browser">
-		<radio_item label="Użyj zewnętrznej przeglądarki (IE, Firefox, Safari)" name="external" tool_tip="Używaj zewnętrznej przeglądarki. Nie jest to rekomendowane w trybie pełnoekranowym." value="1"/>
+		<radio_item label="Użyj zewnętrznej przeglądarki (IE, Firefox, Safari)" name="external" tool_tip="Używaj zewnętrznej przeglądarki. Nie jest to rekomendowane w trybie pełnoekranowym." value="true"/>
 		<radio_item label="Używaj wbudowanej przeglądarki." name="internal" tool_tip="Używaj wbudowanej przeglądarki. Ta przeglądarka otworzy nowe okno w [APP_NAME]." value=""/>
 	</radio_group>
 	<check_box initial_value="true" label="Zezwalaj na wtyczki" name="browser_plugins_enabled"/>
 	<check_box initial_value="true" label="Akceptuj ciasteczka z Internetu" name="cookies_enabled"/>
 	<check_box initial_value="true" label="Zezwalaj na Javascript" name="browser_javascript_enabled"/>
-	<check_box initial_value="nieprawda" label="Zezwól na wyskakujące okienka przeglądarki mediów" name="media_popup_enabled"/>
-	<check_box initial_value="false" label="Używaj serwera proxy" name="web_proxy_enabled"/>
+	<check_box initial_value="false" label="Zezwól na wyskakujące okienka przeglądarki mediów" name="media_popup_enabled"/>
 	<text name="Proxy location">
 		Lokalizacja proxy:
 	</text>
diff --git a/indra/newview/skins/default/xui/pt/floater_tools.xml b/indra/newview/skins/default/xui/pt/floater_tools.xml
index 8c245c582e227d04b0346372fdaeb8d4a218f913..66c14cdecfeb02277dbf0f11d1fdccd8a17f406c 100755
--- a/indra/newview/skins/default/xui/pt/floater_tools.xml
+++ b/indra/newview/skins/default/xui/pt/floater_tools.xml
@@ -463,16 +463,11 @@
 				<combo_box.item label="Sulcos" name="suction"/>
 				<combo_box.item label="Weave" name="weave"/>
 			</combo_box>
-			<check_box initial_value="falso" label="Alinhar planares" name="checkbox planar align" tool_tip="Alinhar texturas dos planos selecionados com o plano selecionado por último. Requer mapeamento planar da textura."/>
-			<text name="rpt">
-				Repetições / Plano
-			</text>
 			<spinner label="Horizontal (U)" name="TexScaleU"/>
 			<check_box label="Inverter" name="checkbox flip s"/>
 			<spinner label="Vertical (V)" name="TexScaleV"/>
 			<check_box label="Inverter" name="checkbox flip t"/>
 			<spinner label="Rotação˚" name="TexRot"/>
-			<spinner label="Repetições/Metro" name="rptctrl"/>
 			<button label="Aplicar" label_selected="Aplicar" name="button apply"/>
 			<text name="tex offset">
 				Offset de textura
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml
index 37e8838bf431f075aa9a8da0bd697510213e0b0d..756e345cb8c437909537a9fdc677728132bd1199 100755
--- a/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml
@@ -26,14 +26,14 @@ rápido
 		<text name="ShadersText">
 			Sombreadores:
 		</text>
-		<check_box initial_value="verdadeiro" label="Água transparente" name="TransparentWater"/>
+		<check_box initial_value="true" label="Água transparente" name="TransparentWater"/>
 		<check_box initial_value="true" label="Bump de Mapeamento e Brilho" name="BumpShiny"/>
-		<check_box initial_value="verdadeiro" label="Luzes locais" name="LocalLights"/>
+		<check_box initial_value="true" label="Luzes locais" name="LocalLights"/>
 		<check_box initial_value="true" label="Sombreadores básicos" name="BasicShaders" tool_tip="Desabilitar esta opção poderá impedir que alguns drivers de placa de vídeo a travem."/>
 		<check_box initial_value="true" label="Sombreadores Atmosféricos" name="WindLightUseAtmosShaders"/>
-		<check_box initial_value="verdadeiro" label="Modelo avançado de luzes" name="UseLightShaders"/>
-		<check_box initial_value="verdadeiro" label="Oclusão ambiental" name="UseSSAO"/>
-		<check_box initial_value="verdadeiro" label="Profundidade" name="UseDoF"/>
+		<check_box initial_value="true" label="Modelo avançado de luzes" name="UseLightShaders"/>
+		<check_box initial_value="true" label="Oclusão ambiental" name="UseSSAO"/>
+		<check_box initial_value="true" label="Profundidade" name="UseDoF"/>
 		<text name="shadows_label">
 			Sombras:
 		</text>
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml b/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml
index 887d0cfe98c4782d5bdadbd93b3df4da8a2bbbe5..1279e74e21dcaa759241263fa32edb26263d2687 100755
--- a/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml
@@ -21,7 +21,7 @@
 	<check_box initial_value="true" label="Habilitar plugins" name="browser_plugins_enabled"/>
 	<check_box initial_value="true" label="Aceitar cookies" name="cookies_enabled"/>
 	<check_box initial_value="true" label="Habilitar Javascript" name="browser_javascript_enabled"/>
-	<check_box initial_value="falso" label="Ativar pop-ups no navegador de mídia" name="media_popup_enabled"/>
+	<check_box initial_value="false" label="Ativar pop-ups no navegador de mídia" name="media_popup_enabled"/>
 	<text name="Software updates:">
 		Atualizações de software:
 	</text>
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 d910a7b812e9a0e782cbad0c27f3d4a0c4de951d..fff5fd700579be2ac80588e0c9d910f9460a2342 100755
--- a/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml
@@ -19,7 +19,7 @@
 	<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" 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"/>
-	<check_box label="Tocar áudio de gestos" name="gesture_audio_play_btn" tool_tip="Selecione para ouvir o áudio de gestos" value="verdadeiro"/>
+	<check_box label="Tocar áudio de gestos" name="gesture_audio_play_btn" tool_tip="Selecione para ouvir o áudio de gestos" value="true"/>
 	<text name="voice_chat_settings">
 		Configuração de bate-papo de voz
 	</text>
diff --git a/indra/newview/skins/default/xui/ru/floater_auction.xml b/indra/newview/skins/default/xui/ru/floater_auction.xml
index d84dc2e941247dfc4f0f934e24100e5e0b0dcfb4..105c75c919f96bafdadd5c1806c2e16338bc286d 100755
--- a/indra/newview/skins/default/xui/ru/floater_auction.xml
+++ b/indra/newview/skins/default/xui/ru/floater_auction.xml
@@ -3,7 +3,7 @@
 	<floater.string name="already for sale">
 		Нельзя выставить на аукцион участки, которые уже продаются.
 	</floater.string>
-	<check_box initial_value="истина" label="Включая желтую ограду вокруг выбранного участка" name="fence_check"/>
+	<check_box initial_value="true" label="Включая желтую ограду вокруг выбранного участка" name="fence_check"/>
 	<button label="Снимок" label_selected="Снимок" name="snapshot_btn"/>
 	<button label="Купить может каждый" label_selected="Купить может каждый" name="sell_to_anyone_btn"/>
 	<button label="Очистить настройки" label_selected="Очистить настройки" name="reset_parcel_btn"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_bulk_perms.xml b/indra/newview/skins/default/xui/ru/floater_bulk_perms.xml
index 31fc1c5ed3585f20f29b13ab0c8bf91e3865bdf6..304bf97dc1b11721474616d37464016495f24005 100755
--- a/indra/newview/skins/default/xui/ru/floater_bulk_perms.xml
+++ b/indra/newview/skins/default/xui/ru/floater_bulk_perms.xml
@@ -39,7 +39,7 @@
 	</text>
 	<check_box label="Изменять" name="next_owner_modify"/>
 	<check_box label="Копировать" name="next_owner_copy"/>
-	<check_box initial_value="истина" label="Передать" name="next_owner_transfer" tool_tip="Следующий владелец может отдать или перепродать объект"/>
+	<check_box initial_value="true" label="Передать" name="next_owner_transfer" tool_tip="Следующий владелец может отдать или перепродать объект"/>
 	<button label="OK" name="ok"/>
 	<button label="Применить" name="apply"/>
 	<button label="Отмена" name="close"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_hardware_settings.xml b/indra/newview/skins/default/xui/ru/floater_hardware_settings.xml
index 43f8c364734de444741691165fefb79923367707..d7da112a273e8faef0f2a26c507b05dddb3a85f3 100755
--- a/indra/newview/skins/default/xui/ru/floater_hardware_settings.xml
+++ b/indra/newview/skins/default/xui/ru/floater_hardware_settings.xml
@@ -24,7 +24,7 @@
 	<text name="Enable VBO:">
 		Включить VBO:
 	</text>
-	<check_box initial_value="истина" label="Включить объекты вершинных буферов OpenGL" name="vbo" tool_tip="Включение этого параметра на современном оборудовании даст увеличение производительности.  Однако на старом оборудовании это может привести к сбою приложения."/>
+	<check_box initial_value="true" label="Включить объекты вершинных буферов OpenGL" name="vbo" tool_tip="Включение этого параметра на современном оборудовании даст увеличение производительности.  Однако на старом оборудовании это может привести к сбою приложения."/>
 	<text name="tc label">
 		Включить S3TC:
 	</text>
diff --git a/indra/newview/skins/default/xui/ru/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/ru/floater_live_lsleditor.xml
index d8047fc0453b37f902cfe5fb9aa362293392e22c..fb6e747592041be29fa1c2e2463fe652e0b5df2a 100755
--- a/indra/newview/skins/default/xui/ru/floater_live_lsleditor.xml
+++ b/indra/newview/skins/default/xui/ru/floater_live_lsleditor.xml
@@ -10,6 +10,6 @@
 		СКРИПТ: [NAME]
 	</floater.string>
 	<button label="Сброс" label_selected="Сброс" name="Reset"/>
-	<check_box initial_value="истина" label="Выполняется" name="running"/>
-	<check_box initial_value="истина" label="Моно" name="mono"/>
+	<check_box initial_value="true" label="Выполняется" name="running"/>
+	<check_box initial_value="true" label="Моно" name="mono"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_perm_prefs.xml b/indra/newview/skins/default/xui/ru/floater_perm_prefs.xml
index a704b87bd1667b50aaa0374e463395c549982941..626f3c9321287f21460746ff0dafb7a1e9eecdeb 100755
--- a/indra/newview/skins/default/xui/ru/floater_perm_prefs.xml
+++ b/indra/newview/skins/default/xui/ru/floater_perm_prefs.xml
@@ -8,7 +8,7 @@
 		</text>
 		<check_box label="изменять" name="next_owner_modify"/>
 		<check_box label="копировать" name="next_owner_copy"/>
-		<check_box initial_value="истина" label="перепродавать/отдавать" name="next_owner_transfer"/>
+		<check_box initial_value="true" label="перепродавать/отдавать" name="next_owner_transfer"/>
 	</panel>
 	<button label="ОК" label_selected="ОК" name="ok"/>
 	<button label="Отмена" label_selected="Отмена" name="cancel"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_preferences_proxy.xml b/indra/newview/skins/default/xui/ru/floater_preferences_proxy.xml
index 4eecfedf172becc2241775d8d9c49ff7837240ec..13cff2bcbe58d0978e9fb9e4de95954880aff22a 100755
--- a/indra/newview/skins/default/xui/ru/floater_preferences_proxy.xml
+++ b/indra/newview/skins/default/xui/ru/floater_preferences_proxy.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="Proxy Settings Floater" title="Настройки прокси-сервера">
-	<check_box initial_value="ложь" label="Использовать HTTP-прокси для веб-страниц" name="web_proxy_enabled"/>
+	<check_box initial_value="false" label="Использовать HTTP-прокси для веб-страниц" name="web_proxy_enabled"/>
 	<text name="http_proxy_label">
 		HTTP-прокси:
 	</text>
diff --git a/indra/newview/skins/default/xui/ru/floater_settings_debug.xml b/indra/newview/skins/default/xui/ru/floater_settings_debug.xml
index 7db014ef53d5e7120623ef43cdaed85e03d09f46..db78d11e90cf955186d862738d6293155e3f4bed 100755
--- a/indra/newview/skins/default/xui/ru/floater_settings_debug.xml
+++ b/indra/newview/skins/default/xui/ru/floater_settings_debug.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="settings_debug" title="НАСТРОЙКИ ОТЛАДКИ">
 	<radio_group name="boolean_combo">
-		<radio_item label="ИСТИНА" name="TRUE" value="истина"/>
+		<radio_item label="ИСТИНА" name="TRUE" value="true"/>
 		<radio_item label="ЛОЖЬ" name="FALSE" value=""/>
 	</radio_group>
 	<color_swatch label="Цвет" name="val_color_swatch"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/ru/floater_texture_ctrl.xml
index a9a21e7d4a1b84f75ebadba17435ff201f74e4e2..c9e117362f9226b2b219a142a4fc1986310483b4 100755
--- a/indra/newview/skins/default/xui/ru/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/ru/floater_texture_ctrl.xml
@@ -19,10 +19,10 @@
 	<button label="По умолчанию" label_selected="По умолчанию" name="Default"/>
 	<button label="Очистить" label_selected="Очистить" name="Blank"/>
 	<button label="Нет" label_selected="Нет" name="None"/>
-	<check_box initial_value="истина" label="Применить сейчас" name="apply_immediate_check"/>
+	<check_box initial_value="true" label="Применить сейчас" name="apply_immediate_check"/>
 	<text name="preview_disabled" value="Просмотр отключен"/>
 	<filter_editor label="Фильтровать текстуры" name="inventory search editor"/>
-	<check_box initial_value="ложь" label="Показывать папки" name="show_folders_check"/>
+	<check_box initial_value="false" label="Показывать папки" name="show_folders_check"/>
 	<button label="Добавить" label_selected="Добавить" name="l_add_btn"/>
 	<button label="Удалить" label_selected="Удалить" name="l_rem_btn"/>
 	<button label="Передать" label_selected="Передать" name="l_upl_btn"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_tools.xml b/indra/newview/skins/default/xui/ru/floater_tools.xml
index c312f73428bd8ad628fe29eeb5c89a9f3c11721a..35921d147fd01863e756c02ef4cbe492420450d8 100755
--- a/indra/newview/skins/default/xui/ru/floater_tools.xml
+++ b/indra/newview/skins/default/xui/ru/floater_tools.xml
@@ -76,8 +76,8 @@
 	<text label="Растяжка обеих сторон" name="checkbox uniform label">
 		Растяжка обеих сторон
 	</text>
-	<check_box initial_value="истина" label="Растягивать текстуры" name="checkbox stretch textures"/>
-	<check_box initial_value="истина" label="Привязка" name="checkbox snap to grid"/>
+	<check_box initial_value="true" label="Растягивать текстуры" name="checkbox stretch textures"/>
+	<check_box initial_value="true" label="Привязка" name="checkbox snap to grid"/>
 	<combo_box name="combobox grid mode" tool_tip="Выберите тип линейки сетки для размещения объекта">
 		<combo_box.item label="Мировая" name="World"/>
 		<combo_box.item label="Локальная" name="Local"/>
@@ -101,7 +101,7 @@
 	<button name="ToolGrass" tool_tip="Трава"/>
 	<check_box label="Держать инструмент" name="checkbox sticky"/>
 	<check_box label="Копировать выдел." name="checkbox copy selection"/>
-	<check_box initial_value="истина" label="Центрир. копию" name="checkbox copy centers"/>
+	<check_box initial_value="true" label="Центрир. копию" name="checkbox copy centers"/>
 	<check_box label="Повернуть копию" name="checkbox copy rotates"/>
 	<radio_group name="land_radio_group">
 		<radio_item label="Выбрать землю" name="radio select land"/>
@@ -465,16 +465,11 @@
 				<combo_box.item label="присоска" name="suction"/>
 				<combo_box.item label="переплетение" name="weave"/>
 			</combo_box>
-			<check_box initial_value="ложь" label="Согласование" name="checkbox planar align" tool_tip="Согласование текстур на всех выбранных граних по последней выбранной грани. Должно быть выбрано наложение по плоскостям."/>
-			<text name="rpt">
-				Повторов на грань
-			</text>
 			<spinner label="По горизонтали (U)" name="TexScaleU"/>
 			<check_box label="Разворот" name="checkbox flip s"/>
 			<spinner label="По вертикали (V)" name="TexScaleV"/>
 			<check_box label="Разворот" name="checkbox flip t"/>
 			<spinner label="Вращение˚" name="TexRot"/>
-			<spinner label="Повторов на метр" name="rptctrl"/>
 			<button label="Применить" label_selected="Применить" name="button apply"/>
 			<text name="tex offset">
 				Сдвиг текстуры
diff --git a/indra/newview/skins/default/xui/ru/floater_world_map.xml b/indra/newview/skins/default/xui/ru/floater_world_map.xml
index ef8dfe22ae9352343c980d4bd0f2528bbacd960a..7d2acfd9a0dea61378f0370e9ce6c6adb07faccb 100755
--- a/indra/newview/skins/default/xui/ru/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/ru/floater_world_map.xml
@@ -35,7 +35,7 @@
 		<text name="pg_label">
 			Общие
 		</text>
-		<check_box initial_value="истина" name="events_mature_chk"/>
+		<check_box initial_value="true" name="events_mature_chk"/>
 		<text name="events_mature_label">
 			Умеренные
 		</text>
diff --git a/indra/newview/skins/default/xui/ru/panel_group_general.xml b/indra/newview/skins/default/xui/ru/panel_group_general.xml
index 4d7e1c9fffcaa19867bc0c05efa5036f774aa530..ba38dbf89e743394365a4463487e8461e02e49b3 100755
--- a/indra/newview/skins/default/xui/ru/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/ru/panel_group_general.xml
@@ -51,6 +51,6 @@
 			<combo_box.item label="Умеренный контент" name="mature"/>
 			<combo_box.item label="Общий контент" name="pg"/>
 		</combo_box>
-		<check_box initial_value="истина" label="Показать в поиске" name="show_in_group_list" tool_tip="Позволить людям видеть эту группу в результатах поиска"/>
+		<check_box initial_value="true" label="Показать в поиске" name="show_in_group_list" tool_tip="Позволить людям видеть эту группу в результатах поиска"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_media_settings_general.xml b/indra/newview/skins/default/xui/ru/panel_media_settings_general.xml
index 6dc435db20a3fc0aa27df32be7cbf623c177d203..d52397832cb3e7849100f00ef705d6d2f59cc45a 100755
--- a/indra/newview/skins/default/xui/ru/panel_media_settings_general.xml
+++ b/indra/newview/skins/default/xui/ru/panel_media_settings_general.xml
@@ -15,14 +15,14 @@
 	</text>
 	<text name="current_url" tool_tip="Текущая страница для этого медиа-источника" value=""/>
 	<button label="Сброс" name="current_url_reset_btn"/>
-	<check_box initial_value="ложь" label="Автоматическое зацикливание" name="auto_loop"/>
-	<check_box initial_value="ложь" label="Реакция на первый щелчок" name="first_click_interact"/>
-	<check_box initial_value="ложь" label="Автоувеличение" name="auto_zoom"/>
-	<check_box initial_value="ложь" label="Автоматическое проигрывание" name="auto_play"/>
+	<check_box initial_value="false" label="Автоматическое зацикливание" name="auto_loop"/>
+	<check_box initial_value="false" label="Реакция на первый щелчок" name="first_click_interact"/>
+	<check_box initial_value="false" label="Автоувеличение" name="auto_zoom"/>
+	<check_box initial_value="false" label="Автоматическое проигрывание" name="auto_play"/>
 	<text name="media_setting_note">
 		Примечание. Жители могут переопределять эту настройку.
 	</text>
-	<check_box initial_value="ложь" label="Автомасштабирование на объекте" name="auto_scale"/>
+	<check_box initial_value="false" label="Автомасштабирование на объекте" name="auto_scale"/>
 	<text name="size_label">
 		Размер:
 	</text>
diff --git a/indra/newview/skins/default/xui/ru/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/ru/panel_media_settings_permissions.xml
index 680cba9c140c0d53df03b381a7cbff3b523edf2c..cfb006f34676aefe0b1443862939073e9002b7dd 100755
--- a/indra/newview/skins/default/xui/ru/panel_media_settings_permissions.xml
+++ b/indra/newview/skins/default/xui/ru/panel_media_settings_permissions.xml
@@ -14,16 +14,16 @@
 	<text name="owner_label">
 		Владелец
 	</text>
-	<check_box initial_value="ложь" label="Разрешить навигацию и взаимодействие" name="perms_owner_interact"/>
-	<check_box initial_value="ложь" label="Панель управления видна" name="perms_owner_control"/>
+	<check_box initial_value="false" label="Разрешить навигацию и взаимодействие" name="perms_owner_interact"/>
+	<check_box initial_value="false" label="Панель управления видна" name="perms_owner_control"/>
 	<text name="group_label">
 		Группа:
 	</text>
-	<check_box initial_value="ложь" label="Разрешить навигацию и взаимодействие" name="perms_group_interact"/>
-	<check_box initial_value="ложь" label="Панель управления видна" name="perms_group_control"/>
+	<check_box initial_value="false" label="Разрешить навигацию и взаимодействие" name="perms_group_interact"/>
+	<check_box initial_value="false" label="Панель управления видна" name="perms_group_control"/>
 	<text name="anyone_label">
 		всем
 	</text>
-	<check_box initial_value="ложь" label="Разрешить навигацию и взаимодействие" name="perms_anyone_interact"/>
-	<check_box initial_value="ложь" label="Панель управления видна" name="perms_anyone_control"/>
+	<check_box initial_value="false" label="Разрешить навигацию и взаимодействие" name="perms_anyone_interact"/>
+	<check_box initial_value="false" label="Панель управления видна" name="perms_anyone_control"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_media_settings_security.xml b/indra/newview/skins/default/xui/ru/panel_media_settings_security.xml
index 6b30dc799cb375b205f7e85cf3f58956cb0d5557..bae491472a9fb6a0a10254239072dfc34e806f99 100755
--- a/indra/newview/skins/default/xui/ru/panel_media_settings_security.xml
+++ b/indra/newview/skins/default/xui/ru/panel_media_settings_security.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Безопасность" name="Media Settings Security">
-	<check_box initial_value="ложь" label="Разрешить доступ к ссылкам только по шаблону" name="whitelist_enable"/>
+	<check_box initial_value="false" label="Разрешить доступ к ссылкам только по шаблону" name="whitelist_enable"/>
 	<text name="home_url_fails_some_items_in_whitelist">
 		Пункты, не подходящие для домашней страницы, отмечены знаком:
 	</text>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_general.xml b/indra/newview/skins/default/xui/ru/panel_preferences_general.xml
index c7a850f78a11cd0901e819aaeea411817f7cd757..62617caed389552702363bd8110dac9144236fe6 100755
--- a/indra/newview/skins/default/xui/ru/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_general.xml
@@ -36,7 +36,7 @@
 		<combo_box.item label="Мое последнее место" name="MyLastLocation"/>
 		<combo_box.item label="Мой дом" name="MyHome"/>
 	</combo_box>
-	<check_box initial_value="истина" label="Показывать на экране входа" name="show_location_checkbox"/>
+	<check_box initial_value="true" label="Показывать на экране входа" name="show_location_checkbox"/>
 	<text name="name_tags_textbox">
 		Теги имен:
 	</text>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml
index 029e72e1379f78db8a8c9cb395af0a15ba28e1b7..c93955fcdce648ec9f775d7771832c9f8a2e82e6 100755
--- a/indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml
@@ -25,14 +25,14 @@
 		<text name="ShadersText">
 			Шейдеры:
 		</text>
-		<check_box initial_value="истина" label="Прозрачность воды" name="TransparentWater"/>
-		<check_box initial_value="истина" label="Рельефность и сияние" name="BumpShiny"/>
-		<check_box initial_value="истина" label="Локальный свет" name="LocalLights"/>
-		<check_box initial_value="истина" label="Базовые шейдеры" name="BasicShaders" tool_tip="Отключение этого параметра может предотвратить зависание некоторых видеокарт"/>
-		<check_box initial_value="истина" label="Атмосферные шейдеры" name="WindLightUseAtmosShaders"/>
-		<check_box initial_value="истина" label="Расширенная модель освещения" name="UseLightShaders"/>
-		<check_box initial_value="истина" label="Объемный свет" name="UseSSAO"/>
-		<check_box initial_value="истина" label="Глубина поля" name="UseDoF"/>
+		<check_box initial_value="true" label="Прозрачность воды" name="TransparentWater"/>
+		<check_box initial_value="true" label="Рельефность и сияние" name="BumpShiny"/>
+		<check_box initial_value="true" label="Локальный свет" name="LocalLights"/>
+		<check_box initial_value="true" label="Базовые шейдеры" name="BasicShaders" tool_tip="Отключение этого параметра может предотвратить зависание некоторых видеокарт"/>
+		<check_box initial_value="true" label="Атмосферные шейдеры" name="WindLightUseAtmosShaders"/>
+		<check_box initial_value="true" label="Расширенная модель освещения" name="UseLightShaders"/>
+		<check_box initial_value="true" label="Объемный свет" name="UseSSAO"/>
+		<check_box initial_value="true" label="Глубина поля" name="UseDoF"/>
 		<text name="shadows_label">
 			Тени:
 		</text>
@@ -95,9 +95,9 @@
 		<text name="AvatarRenderingText">
 			Отрисовка аватара:
 		</text>
-		<check_box initial_value="истина" label="Плоские аватары" name="AvatarImpostors"/>
-		<check_box initial_value="истина" label="Аппаратная отрисовка" name="AvatarVertexProgram"/>
-		<check_box initial_value="истина" label="Одежда аватара" name="AvatarCloth"/>
+		<check_box initial_value="true" label="Плоские аватары" name="AvatarImpostors"/>
+		<check_box initial_value="true" label="Аппаратная отрисовка" name="AvatarVertexProgram"/>
+		<check_box initial_value="true" label="Одежда аватара" name="AvatarCloth"/>
 		<text name="TerrainDetailText">
 			Ландшафт:
 		</text>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_setup.xml b/indra/newview/skins/default/xui/ru/panel_preferences_setup.xml
index e9c0c7de10791f95459c0aef8fbf6545f4ff8101..1741397a8411403911c2cafaec35e3e89e271f6c 100755
--- a/indra/newview/skins/default/xui/ru/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_setup.xml
@@ -18,10 +18,10 @@
 		<radio_item label="Использовать мой браузер (IE, Firefox, Safari)" name="external" tool_tip="Будет использоваться браузер, заданный в системе по умолчанию. Не рекомендуется, если [APP_NAME] работает в полноэкранном режиме." value="true"/>
 		<radio_item label="Использовать встроенный браузер" name="internal" tool_tip="Для просмотра справки, ссылок на веб-страницы и т. д. будет использоваться встроенный браузер. Этот браузер открывается как новое окно в [APP_NAME]." value=""/>
 	</radio_group>
-	<check_box initial_value="истина" label="Разрешить плагины" name="browser_plugins_enabled"/>
-	<check_box initial_value="истина" label="Принимать файлы cookie" name="cookies_enabled"/>
-	<check_box initial_value="истина" label="Разрешить Javascript" name="browser_javascript_enabled"/>
-	<check_box initial_value="ложь" label="Разрешить всплывающие окна" name="media_popup_enabled"/>
+	<check_box initial_value="true" label="Разрешить плагины" name="browser_plugins_enabled"/>
+	<check_box initial_value="true" label="Принимать файлы cookie" name="cookies_enabled"/>
+	<check_box initial_value="true" label="Разрешить Javascript" name="browser_javascript_enabled"/>
+	<check_box initial_value="false" label="Разрешить всплывающие окна" name="media_popup_enabled"/>
 	<text name="Software updates:">
 		Обновления ПО:
 	</text>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_sound.xml b/indra/newview/skins/default/xui/ru/panel_preferences_sound.xml
index bf673750d22b3ec811cfdf91a1e687d0ad865bc6..44f270527c538bbba3ac25431f6b4239ffdd3527 100755
--- a/indra/newview/skins/default/xui/ru/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_sound.xml
@@ -4,7 +4,7 @@
 		среднюю кнопку мыши
 	</panel.string>
 	<slider label="Общая громкость" name="System Volume"/>
-	<check_box initial_value="истина" name="mute_when_minimized"/>
+	<check_box initial_value="true" name="mute_when_minimized"/>
 	<text name="mute_chb_label">
 		Заглушать, когда свернуто
 	</text>
@@ -17,9 +17,9 @@
 	<check_box label="Включено" name="enable_media"/>
 	<slider label="Голосовой чат" name="Voice Volume"/>
 	<check_box label="Включено" name="enable_voice_check"/>
-	<check_box label="Разрешить автовоспроизведение медиа" name="media_auto_play_btn" tool_tip="Установка флажка позволит вам автоматически воспроизводить медиа" value="истина"/>
-	<check_box label="Воспроизводить медиа, присоединенные к другому аватару" name="media_show_on_others_btn" tool_tip="Снятие флажка скроет медиа, присоединенные к другому аватару" value="истина"/>
-	<check_box label="Сопровождать жесты звуками" name="gesture_audio_play_btn" tool_tip="Установите флажок, чтобы слышать звуки при жестах" value="истина"/>
+	<check_box label="Разрешить автовоспроизведение медиа" name="media_auto_play_btn" tool_tip="Установка флажка позволит вам автоматически воспроизводить медиа" value="true"/>
+	<check_box label="Воспроизводить медиа, присоединенные к другому аватару" name="media_show_on_others_btn" tool_tip="Снятие флажка скроет медиа, присоединенные к другому аватару" value="true"/>
+	<check_box label="Сопровождать жесты звуками" name="gesture_audio_play_btn" tool_tip="Установите флажок, чтобы слышать звуки при жестах" value="true"/>
 	<text name="voice_chat_settings">
 		Настройки голосового чата
 	</text>
diff --git a/indra/newview/skins/default/xui/ru/panel_tools_texture.xml b/indra/newview/skins/default/xui/ru/panel_tools_texture.xml
index 60717a3d1d5de44c1d4f1114f8ba11318065f87d..1abf7294871501fe3eaf95a51cdce12b11fe4c6b 100644
--- a/indra/newview/skins/default/xui/ru/panel_tools_texture.xml
+++ b/indra/newview/skins/default/xui/ru/panel_tools_texture.xml
@@ -112,5 +112,5 @@
 	<spinner label="Поворот, градусы" name="shinyRot"/>
 	<spinner label="Смещение по горизонтали" name="shinyOffsetU"/>
 	<spinner label="Смещение по вертикали" name="shinyOffsetV"/>
-	<check_box initial_value="ложь" label="Согласование" name="checkbox planar align" tool_tip="Согласование текстур на всех выбранных гранях по последней выбранной грани. Должно быть выбрано наложение по плоскостям."/>
+	<check_box initial_value="false" label="Согласование" name="checkbox planar align" tool_tip="Согласование текстур на всех выбранных гранях по последней выбранной грани. Должно быть выбрано наложение по плоскостям."/>
 </panel>
diff --git a/indra/newview/skins/default/xui/tr/floater_tools.xml b/indra/newview/skins/default/xui/tr/floater_tools.xml
index 4bf0372a8aaaa9488e4416a5be5cc6ed983a7f56..39a3569efafb38623df2ff8d7f0a9164f4442b47 100755
--- a/indra/newview/skins/default/xui/tr/floater_tools.xml
+++ b/indra/newview/skins/default/xui/tr/floater_tools.xml
@@ -465,16 +465,11 @@
 				<combo_box.item label="vakum" name="suction"/>
 				<combo_box.item label="örgü" name="weave"/>
 			</combo_box>
-			<check_box initial_value="false" label="Planar yüzleri hizala" name="checkbox planar align" tool_tip="Tüm seçili yüzeylerdeki dokuları son seçili yüzdekiyle hizalar. Planar doku eşleştirmesi gerektirir."/>
-			<text name="rpt">
-				Tekrarlar / Yüz
-			</text>
 			<spinner label="Yatay (U)" name="TexScaleU"/>
 			<check_box label="Çevir" name="checkbox flip s"/>
 			<spinner label="Dikey (V)" name="TexScaleV"/>
 			<check_box label="Çevir" name="checkbox flip t"/>
 			<spinner label="Döndürme*" name="TexRot"/>
-			<spinner label="Tekrarlar / Metre" name="rptctrl"/>
 			<button label="Uygula" label_selected="Uygula" name="button apply"/>
 			<text name="tex offset">
 				Doku Dengeleyicisi
diff --git a/indra/newview/skins/default/xui/zh/floater_tools.xml b/indra/newview/skins/default/xui/zh/floater_tools.xml
index 33c9ebeaf084a9809f1db64c0f5808c98e8a02d9..7e6c972f404db7c3626e4e53b7306784f714a4b0 100755
--- a/indra/newview/skins/default/xui/zh/floater_tools.xml
+++ b/indra/newview/skins/default/xui/zh/floater_tools.xml
@@ -465,16 +465,11 @@
 				<combo_box.item label="吸附" name="suction"/>
 				<combo_box.item label="編織" name="weave"/>
 			</combo_box>
-			<check_box initial_value="false" label="對齊平面" name="checkbox planar align" tool_tip="以最後所選擇的面為基準,對齊全部所選擇的面上的材質。 這必須使用平面材質映射方式。"/>
-			<text name="rpt">
-				重覆次數 / 面
-			</text>
 			<spinner label="水平(U)" name="TexScaleU"/>
 			<check_box label="翻轉" name="checkbox flip s"/>
 			<spinner label="垂直(V)" name="TexScaleV"/>
 			<check_box label="翻轉" name="checkbox flip t"/>
 			<spinner label="旋轉˚" name="TexRot"/>
-			<spinner label="重覆次數 / 公尺" name="rptctrl"/>
 			<button label="套用" label_selected="套用" name="button apply"/>
 			<text name="tex offset">
 				材質位移
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_setup.xml b/indra/newview/skins/default/xui/zh/panel_preferences_setup.xml
index 0fcc49b20346b95da360d0ac81140a4e1140063d..ab4d9a881dfc298696bedb2f8f0b929979f15cd5 100755
--- a/indra/newview/skins/default/xui/zh/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/zh/panel_preferences_setup.xml
@@ -15,7 +15,7 @@
 		網頁:
 	</text>
 	<radio_group name="use_external_browser">
-		<radio_item label="使用我的網頁瀏覽器(例如 IE, Firefox, Safari)" name="external" tool_tip="使用系統預設的瀏覽器瀏覽幫助,開啟網頁。全螢幕模式下不建議這麼做。" value="1"/>
+		<radio_item label="使用我的網頁瀏覽器(例如 IE, Firefox, Safari)" name="external" tool_tip="使用系統預設的瀏覽器瀏覽幫助,開啟網頁。全螢幕模式下不建議這麼做。" value="true"/>
 		<radio_item label="使用內建網頁瀏覽器" name="internal" tool_tip="使用內建的瀏覽器瀏覽幫助,開啟網頁。該瀏覽器將透過 [APP_NAME] 開啟新視窗。" value=""/>
 	</radio_group>
 	<check_box initial_value="true" label="啟用外掛" name="browser_plugins_enabled"/>
diff --git a/indra/viewer_components/updater/scripts/darwin/update_install.py b/indra/viewer_components/updater/scripts/darwin/update_install.py
index 2fc6fcdb29e1b04a33feb56014cc96af7b84d131..10d507c9eff035b4a5b16fd49f0be46267f0efac 100755
--- a/indra/viewer_components/updater/scripts/darwin/update_install.py
+++ b/indra/viewer_components/updater/scripts/darwin/update_install.py
@@ -17,6 +17,7 @@ $/LicenseInfo$
 import os
 import sys
 import cgitb
+from contextlib import contextmanager
 import errno
 import glob
 import plistlib
@@ -32,6 +33,11 @@ import Tkinter, tkMessageBox
 TITLE = "Second Life Viewer Updater"
 # Magic bundle identifier used by all Second Life viewer bundles
 BUNDLE_IDENTIFIER = "com.secondlife.indra.viewer"
+# Magic OS directory name that causes Cocoa viewer to crash on OS X 10.7.5
+# (see MAINT-3331)
+STATE_DIR = os.path.join(
+    os.environ["HOME"], "Library", "Saved Application State",
+    BUNDLE_IDENTIFIER + ".savedState")
 
 # Global handle to the MessageFrame so we can update message
 FRAME = None
@@ -136,6 +142,23 @@ def write_marker(markerfile, markertext):
         # try to log it -- otherwise shrug.
         log("%s exception: %s" % (err.__class__.__name__, err))
 
+# ****************************************************************************
+#   Utility
+# ****************************************************************************
+@contextmanager
+def allow_errno(errn):
+    """
+    Execute body of 'with' statement, accepting OSError with specific errno
+    'errn'. Propagate any other exception, or an OSError with any other errno.
+    """
+    try:
+        # run the body of the 'with' statement
+        yield
+    except OSError, err:
+        # unless errno == passed errn, re-raise the exception
+        if err.errno != errn:
+            raise
+
 # ****************************************************************************
 #   Main script logic
 # ****************************************************************************
@@ -158,12 +181,9 @@ def main(dmgfile, markerfile, markertext):
 
         # Move the old updater.log file out of the way
         logname = os.path.join(logsdir, "updater.log")
-        try:
+        # Nonexistence is okay. Anything else, not so much.
+        with allow_errno(errno.ENOENT):
             os.rename(logname, logname + ".old")
-        except OSError, err:
-            # Nonexistence is okay. Anything else, not so much.
-            if err.errno != errno.ENOENT:
-                raise
 
         # Open new updater.log.
         global LOGF
@@ -345,6 +365,13 @@ def main(dmgfile, markerfile, markertext):
             log("touch " + appdir)
             os.utime(appdir, None)      # set to current time
 
+            # MAINT-3331: remove STATE_DIR. Empirically, this resolves a
+            # persistent, mysterious crash after updating our viewer on an OS
+            # X 10.7.5 system.
+            log("rm -rf '%s'" % STATE_DIR)
+            with allow_errno(errno.ENOENT):
+                shutil.rmtree(STATE_DIR)
+
             command = ["open", appdir]
             log(' '.join(command))
             subprocess.check_call(command, stdout=LOGF, stderr=subprocess.STDOUT)