diff --git a/indra/llxuixml/llinitparam.h b/indra/llxuixml/llinitparam.h
index 582f5449d9d1ce28468b5160a334a327e7e2bc6e..b645c4be7c80636926848906bcec52c9cfa8698c 100644
--- a/indra/llxuixml/llinitparam.h
+++ b/indra/llxuixml/llinitparam.h
@@ -858,7 +858,7 @@ namespace LLInitParam
 		{
 			const self_t& src_typed_param = static_cast<const self_t&>(src);
 			self_t& dst_typed_param = static_cast<self_t&>(dst);
-			if (dst_typed_param.T::merge(BaseBlock::selfBlockDescriptor(), src_typed_param, overwrite || !dst_typed_param.isProvided()))
+			if (dst_typed_param.T::merge(T::selfBlockDescriptor(), src_typed_param, overwrite || !dst_typed_param.isProvided()))
 			{
 				dst_typed_param.mData.clearKey();
 				return true;
diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml
index d7bb64ce8a7787b39abc4bf24ebfc954571cdfdb..16e39fc1c4851930d6214ee197342eefd7983b95 100644
--- a/indra/newview/app_settings/logcontrol.xml
+++ b/indra/newview/app_settings/logcontrol.xml
@@ -25,6 +25,7 @@
 							<string>AppCache</string>
 							<string>Window</string>
 							<string>RenderInit</string>
+							<string>MediaAuth</string>
 						</array>
 				</map>
 				<map>
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 6d124cd0b8876fe250014de4a70478904ce5e55e..59b6115fab78c9da9ff4f4ef5735ac2bf0dea3ed 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -5971,7 +5971,7 @@
     <key>Type</key>
     <string>F32</string>
     <key>Value</key>
-    <real>0.2</real>
+    <real>0.125</real>
   </map>
   <key>MediaRollOffMin</key>
   <map>
@@ -5982,7 +5982,7 @@
     <key>Type</key>
     <string>F32</string>
     <key>Value</key>
-    <real>7.0</real>
+    <real>5.0</real>
   </map>
   <key>MediaRollOffMax</key>
   <map>
@@ -9053,6 +9053,17 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
+    <key>TextureDiscardLevel</key>
+    <map>
+      <key>Comment</key>
+      <string>Specify texture resolution (0 = highest, 5 = lowest)</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>U32</string>
+      <key>Value</key>
+      <integer>0</integer>
+    </map>
     <key>TextureLoadFullRes</key>
     <map>
       <key>Comment</key>
diff --git a/indra/newview/gpu_table.txt b/indra/newview/gpu_table.txt
index 3754f30a669cf78c8ae9d3e4db67071a77c5f390..5aad295cb12916d2822382db5aaa4ebe3b14f601 100644
--- a/indra/newview/gpu_table.txt
+++ b/indra/newview/gpu_table.txt
@@ -203,14 +203,14 @@ NVIDIA GeForce 7100				.*NVIDIA.*GeForce 71.*				0		1
 NVIDIA GeForce 7200				.*NVIDIA.*GeForce 72.*				1		1
 NVIDIA GeForce 7300				.*NVIDIA.*GeForce 73.*				1		1
 NVIDIA GeForce 7500				.*NVIDIA.*GeForce 75.*				1		1
-NVIDIA GeForce 7600				.*NVIDIA.*GeForce 76.*				3		1
-NVIDIA GeForce 7800				.*NVIDIA.*GeForce.*78.*				3		1
-NVIDIA GeForce 7900				.*NVIDIA.*GeForce.*79.*				3		1
+NVIDIA GeForce 7600				.*NVIDIA.*GeForce 76.*				1		1
+NVIDIA GeForce 7800				.*NVIDIA.*GeForce.*78.*				1		1
+NVIDIA GeForce 7900				.*NVIDIA.*GeForce.*79.*				1		1
 NVIDIA GeForce 8100				.*NVIDIA.*GeForce 81.*				1		1
 NVIDIA GeForce 8200				.*NVIDIA.*GeForce 82.*				1		1
 NVIDIA GeForce 8300				.*NVIDIA.*GeForce 83.*				1		1
 NVIDIA GeForce 8400				.*NVIDIA.*GeForce 84.*				1		1
-NVIDIA GeForce 8500				.*GeForce 85.*						3		1
+NVIDIA GeForce 8500				.*GeForce 85.*						1		1
 NVIDIA GeForce 8600M			.*NVIDIA.*GeForce.*8600M.*			1		1
 NVIDIA GeForce 8600				.*NVIDIA.*GeForce 86.*				3		1
 NVIDIA GeForce 8700				.*NVIDIA.*GeForce 87.*				3		1
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 2eb7cfd34aead2020d83e0387b1f42351fa723e8..e017fffa54209ee7363c49ef3cd2dcd83d09d877 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -505,7 +505,7 @@ bool LLWearableHoldingPattern::pollMissingWearables()
 
 	if (done)
 	{
-		gAgentAvatarp->wearablesLoaded();
+		gAgentAvatarp->debugWearablesLoaded();
 		clearCOFLinksForMissingWearables();
 		onAllComplete();
 	}
@@ -1706,7 +1706,7 @@ void LLAppearanceMgr::autopopulateOutfits()
 // Handler for anything that's deferred until avatar de-clouds.
 void LLAppearanceMgr::onFirstFullyVisible()
 {
-	gAgentAvatarp->avatarVisible();
+	gAgentAvatarp->debugAvatarVisible();
 	autopopulateOutfits();
 }
 
diff --git a/indra/newview/llfloateruipreview.cpp b/indra/newview/llfloateruipreview.cpp
index f61c86db1406743f537eaca02ce9a0f15425617f..1b6ef0e97a18e0365cf313392012bcc5635da037 100644
--- a/indra/newview/llfloateruipreview.cpp
+++ b/indra/newview/llfloateruipreview.cpp
@@ -266,11 +266,12 @@ class LLFadeEventTimer : public LLEventTimer
 class LLPreviewedFloater : public LLFloater
 {
 public:
-	LLPreviewedFloater(LLFloaterUIPreview* floater)
-		: LLFloater(LLSD()),
+	LLPreviewedFloater(LLFloaterUIPreview* floater, const Params& params)
+		: LLFloater(LLSD(), params),
 		  mFloaterUIPreview(floater)
 	{
 	}
+
 	virtual void draw();
 	BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
 	BOOL handleToolTip(S32 x, S32 y, MASK mask);
@@ -428,6 +429,7 @@ BOOL LLFloaterUIPreview::postBuild()
 	// Double-click opens the floater, for convenience
 	mFileList->setDoubleClickCallback(boost::bind(&LLFloaterUIPreview::onClickDisplayFloater, this, PRIMARY_FLOATER));
 
+	setDefaultBtn("display_floater");
 	// get pointers to buttons and link to callbacks
 	mLanguageSelection = main_panel_tmp->getChild<LLComboBox>("language_select_combo");
 	mLanguageSelection->setCommitCallback(boost::bind(&LLFloaterUIPreview::onLanguageComboSelect, this, mLanguageSelection));
@@ -824,7 +826,11 @@ void LLFloaterUIPreview::displayFloater(BOOL click, S32 ID, bool save)
 		return;															// ignore click (this can only happen with empty list; otherwise an item is always selected)
 	}
 
-	*floaterp = new LLPreviewedFloater(this);
+	LLFloater::Params p(LLFloater::getDefaultParams());
+	p.min_height=p.header_height;
+	p.min_width=10;
+
+	*floaterp = new LLPreviewedFloater(this, p);
 
 	if(!strncmp(path.c_str(),"floater_",8)
 		|| !strncmp(path.c_str(), "inspect_", 8))		// if it's a floater
@@ -874,6 +880,8 @@ void LLFloaterUIPreview::displayFloater(BOOL click, S32 ID, bool save)
 	}
 	else																// if it is a panel...
 	{
+		(*floaterp)->setCanResize(true);
+
 		const LLFloater::Params& floater_params = LLFloater::getDefaultParams();
 		S32 floater_header_size = floater_params.header_height;
 
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 35f7cbcd0188d7eba1bc656f0111ae6f9d793cc8..29865e420a23750baf61955ee75bba4fea7389e2 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -4141,19 +4141,9 @@ void LLObjectBridge::performAction(LLInventoryModel* model, std::string action)
 
 void LLObjectBridge::openItem()
 {
-	LLViewerInventoryItem* item = getItem();
-
-	if (item)
-	{
-		LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
-	}
-
-	show_item_profile(mUUID);
-
-	// Disable old properties floater; this is replaced by the sidepanel.
-	/*
-	  LLFloaterReg::showInstance("properties", mUUID);
-	*/
+	// object double-click action is to wear/unwear object
+	performAction(getInventoryModel(),
+		      get_is_item_worn(mUUID) ? "detach" : "attach");
 }
 
 LLFontGL::StyleFlags LLObjectBridge::getLabelStyle() const
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index 23df6b6cc571a5735c0b331e4543d8701cde20ee..2e1c5238d3645de5c922f1516f832c4f7413d481 100644
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -1249,9 +1249,11 @@ void LLInventoryModel::addCategory(LLViewerInventoryCategory* category)
 
 void LLInventoryModel::addItem(LLViewerInventoryItem* item)
 {
+	/*
 	const LLViewerInventoryCategory* cat = gInventory.getCategory(item->getParentUUID()); // Seraph remove for 2.1
 	const std::string cat_name = cat ? cat->getName() : "CAT NOT FOUND"; // Seraph remove for 2.1
 	llinfos << "Added item [ name:" << item->getName() << " UUID:" << item->getUUID() << " type:" << item->getActualType() << " ] to folder [ name:" << cat_name << " uuid:" << item->getParentUUID() << " ]" << llendl; // Seraph remove for 2.1
+	*/
 
 	llassert(item);
 	if(item)
diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp
index 337627cc79523ad92622db2656d1898b2930cb34..4be03596f84f07d3be2217390f4e194b13ceaaa8 100644
--- a/indra/newview/lltexlayer.cpp
+++ b/indra/newview/lltexlayer.cpp
@@ -237,7 +237,7 @@ BOOL LLTexLayerSetBuffer::render()
 		{
 			if (mTexLayerSet->isVisible())
 			{
-				mTexLayerSet->getAvatar()->bakedTextureUpload(mTexLayerSet->getBakedTexIndex(), FALSE); // FALSE for start of upload, TRUE for finish.
+				mTexLayerSet->getAvatar()->debugBakedTextureUpload(mTexLayerSet->getBakedTexIndex(), FALSE); // FALSE for start of upload, TRUE for finish.
 				readBackAndUpload();
 			}
 			else
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index 7429a49ccfb7ed67e97716dcbcddb9c5c847672f..e5c5a607dd8902098e95c07bf687bd65b39daf1a 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -1937,7 +1937,7 @@ void LLViewerMediaImpl::updateVolume()
 				// attenuated_volume = 1 / (roll_off_rate * (d - min))^2
 				// the +1 is there so that for distance 0 the volume stays the same
 				F64 adjusted_distance = mProximityCamera - gSavedSettings.getF32("MediaRollOffMin");
-				F64 attenuation = gSavedSettings.getF32("MediaRollOffRate") * adjusted_distance;
+				F64 attenuation = 1.0 + (gSavedSettings.getF32("MediaRollOffRate") * adjusted_distance);
 				attenuation = 1.0 / (attenuation * attenuation);
 				// the attenuation multiplier should never be more than one since that would increase volume
 				volume = volume * llmin(1.0, attenuation);
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index d925ab0d9005ae811e2f7790eff7fb97de4770af..d8a9ce93745897e474c3c820b7f0d7e815d23ca0 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -1893,6 +1893,12 @@ bool LLViewerFetchedTexture::updateFetch()
 			h = mGLTexturep->getHeight(0);
 			c = mComponents;
 		}
+
+		const U32 override_tex_discard_level = gSavedSettings.getU32("TextureDiscardLevel");
+		if (override_tex_discard_level != 0)
+		{
+			desired_discard = override_tex_discard_level;
+		}
 		
 		// bypass texturefetch directly by pulling from LLTextureCache
 		bool fetch_request_created = false;
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index c82de73f2512c0a195078d0a43651df26e8eaf93..cf3fb01b5a4a440d88d51b48a2f5cf741a075e5f 100644
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -157,14 +157,14 @@ void LLVOAvatarSelf::initInstance()
 	{
 		for (U32 j = 0; j <= MAX_DISCARD_LEVEL; ++j)
 		{
-			mTextureLoadTimes[i][j] = -1.0f;
+			mDebugTextureLoadTimes[i][j] = -1.0f;
 		}
 	}
 
 	for (U32 i =0; i < LLVOAvatarDefines::BAKED_NUM_INDICES; ++i)
 	{
-		mBakedTextureTimes[i][0] = -1.0f;
-		mBakedTextureTimes[i][1] = -1.0f;
+		mDebugBakedTextureTimes[i][0] = -1.0f;
+		mDebugBakedTextureTimes[i][1] = -1.0f;
 	}
 
 	status &= buildMenus();
@@ -1271,6 +1271,8 @@ BOOL LLVOAvatarSelf::isLocalTextureDataAvailable(const LLTexLayerSet* layerset)
 //-----------------------------------------------------------------------------
 BOOL LLVOAvatarSelf::isLocalTextureDataFinal(const LLTexLayerSet* layerset) const
 {
+	const U32 override_tex_discard_level = gSavedSettings.getU32("TextureDiscardLevel");
+
 	for (U32 i = 0; i < mBakedTextureDatas.size(); i++)
 	{
 		if (layerset == mBakedTextureDatas[i].mTexLayerSet)
@@ -1285,7 +1287,7 @@ BOOL LLVOAvatarSelf::isLocalTextureDataFinal(const LLTexLayerSet* layerset) cons
 				const U32 wearable_count = gAgentWearables.getWearableCount(wearable_type);
 				for (U32 wearable_index = 0; wearable_index < wearable_count; wearable_index++)
 				{
-					if (getLocalDiscardLevel(*local_tex_iter, wearable_index) != 0)
+					if (getLocalDiscardLevel(*local_tex_iter, wearable_index) > (S32)(override_tex_discard_level))
 					{
 						return FALSE;
 					}
@@ -1761,12 +1763,12 @@ BOOL LLVOAvatarSelf::getIsCloud()
 }
 
 /*static*/
-void LLVOAvatarSelf::onTimingLocalTexLoaded(BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata)
+void LLVOAvatarSelf::debugOnTimingLocalTexLoaded(BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata)
 {
-	gAgentAvatarp->timingLocalTexLoaded(success, src_vi, src, aux_src, discard_level, final, userdata);
+	gAgentAvatarp->debugTimingLocalTexLoaded(success, src_vi, src, aux_src, discard_level, final, userdata);
 }
 
-void LLVOAvatarSelf::timingLocalTexLoaded(BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata)
+void LLVOAvatarSelf::debugTimingLocalTexLoaded(BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata)
 {
 	LLAvatarTexData *data = (LLAvatarTexData *)userdata;
 	if (!data)
@@ -1776,14 +1778,14 @@ void LLVOAvatarSelf::timingLocalTexLoaded(BOOL success, LLViewerFetchedTexture *
 
 	ETextureIndex index = data->mIndex;
 	
-if (index < 0 || index >= TEX_NUM_INDICES)
+	if (index < 0 || index >= TEX_NUM_INDICES)
 	{
 		return;
 	}
 
 	if (discard_level >=0 && discard_level <= MAX_DISCARD_LEVEL) // ignore discard level -1, as it means we have no data.
 	{
-		mTextureLoadTimes[(U32)index][(U32)discard_level] = mDebugSelfLoadTimer.getElapsedTimeF32();
+		mDebugTextureLoadTimes[(U32)index][(U32)discard_level] = mDebugSelfLoadTimer.getElapsedTimeF32();
 	}
 	if (final)
 	{
@@ -1791,14 +1793,14 @@ if (index < 0 || index >= TEX_NUM_INDICES)
 	}
 }
 
-void LLVOAvatarSelf::bakedTextureUpload(EBakedTextureIndex index, BOOL finished)
+void LLVOAvatarSelf::debugBakedTextureUpload(EBakedTextureIndex index, BOOL finished)
 {
 	U32 done = 0;
 	if (finished)
 	{
 		done = 1;
 	}
-	mBakedTextureTimes[index][done] = mDebugSelfLoadTimer.getElapsedTimeF32();
+	mDebugBakedTextureTimes[index][done] = mDebugSelfLoadTimer.getElapsedTimeF32();
 }
 
 const LLUUID& LLVOAvatarSelf::grabBakedTexture(EBakedTextureIndex baked_index) const
@@ -1963,7 +1965,7 @@ void LLVOAvatarSelf::setNewBakedTexture( ETextureIndex te, const LLUUID& uuid )
 	const LLVOAvatarDictionary::TextureEntry *texture_dict = LLVOAvatarDictionary::getInstance()->getTexture(te);
 	if (texture_dict->mIsBakedTexture)
 	{
-		bakedTextureUpload(texture_dict->mBakedTextureIndex, TRUE); // FALSE for start of upload, TRUE for finish.
+		debugBakedTextureUpload(texture_dict->mBakedTextureIndex, TRUE); // FALSE for start of upload, TRUE for finish.
 		llinfos << "New baked texture: " << texture_dict->mName << " UUID: " << uuid <<llendl;
 	}
 	else
@@ -1993,8 +1995,8 @@ void LLVOAvatarSelf::outputRezDiagnostics() const
 {
 	const F32 final_time = mDebugSelfLoadTimer.getElapsedTimeF32();
 	llinfos << "REZTIME: Myself rez stats:" << llendl;
-	llinfos << "\t Time from avatar creation to load wearables: " << (S32)mTimeWearablesLoaded << llendl;
-	llinfos << "\t Time from avatar creation to de-cloud: " << (S32)mTimeAvatarVisible << llendl;
+	llinfos << "\t Time from avatar creation to load wearables: " << (S32)mDebugTimeWearablesLoaded << llendl;
+	llinfos << "\t Time from avatar creation to de-cloud: " << (S32)mDebugTimeAvatarVisible << llendl;
 	llinfos << "\t Time from avatar creation to de-cloud for others: " << (S32)final_time << llendl;
 	llinfos << "\t Load time for each texture: " << llendl;
 	for (U32 i = 0; i < LLVOAvatarDefines::TEX_NUM_INDICES; ++i)
@@ -2005,7 +2007,7 @@ void LLVOAvatarSelf::outputRezDiagnostics() const
 		for (j=0; j <= MAX_DISCARD_LEVEL; j++)
 		{
 			out << "\t";
-			S32 load_time = (S32)mTextureLoadTimes[i][j];
+			S32 load_time = (S32)mDebugTextureLoadTimes[i][j];
 			if (load_time == -1)
 			{
 				out << "*";
@@ -2025,7 +2027,7 @@ void LLVOAvatarSelf::outputRezDiagnostics() const
 	llinfos << "\t Time points for each upload (start / finish)" << llendl;
 	for (U32 i = 0; i < LLVOAvatarDefines::BAKED_NUM_INDICES; ++i)
 	{
-		llinfos << "\t\t (" << i << ") \t" << (S32)mBakedTextureTimes[i][0] << " / " << (S32)mBakedTextureTimes[i][1] << llendl;
+		llinfos << "\t\t (" << i << ") \t" << (S32)mDebugBakedTextureTimes[i][0] << " / " << (S32)mDebugBakedTextureTimes[i][1] << llendl;
 	}
 }
 
diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h
index 666219f3aaca3bc6255f4d542c3d66ae07253f0a..8e6d9698f2e248ed3109ecc7a35a86206defbbb0 100644
--- a/indra/newview/llvoavatarself.h
+++ b/indra/newview/llvoavatarself.h
@@ -124,8 +124,6 @@ class LLVOAvatarSelf :
 	//--------------------------------------------------------------------
 public:
 	/*virtual*/ BOOL    getIsCloud();
-	void bakedTextureUpload(LLVOAvatarDefines::EBakedTextureIndex index, BOOL finished);
-	static void		onTimingLocalTexLoaded(BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata);
 
 	//--------------------------------------------------------------------
 	// Region state
@@ -217,6 +215,8 @@ class LLVOAvatarSelf :
 	static void			processRebakeAvatarTextures(LLMessageSystem* msg, void**);
 protected:
 	/*virtual*/ void	removeMissingBakedTextures();
+private:
+	LLFrameTimer    	mBakeTimeoutTimer;
 
 	//--------------------------------------------------------------------
 	// Layers
@@ -348,16 +348,18 @@ class LLVOAvatarSelf :
 		LLUUID			mAvatarID;
 		LLVOAvatarDefines::ETextureIndex	mIndex;
 	};
-	void wearablesLoaded() { mTimeWearablesLoaded = mDebugSelfLoadTimer.getElapsedTimeF32(); }
-	void avatarVisible() { mTimeAvatarVisible = mDebugSelfLoadTimer.getElapsedTimeF32(); }
+	void debugWearablesLoaded() { mDebugTimeWearablesLoaded = mDebugSelfLoadTimer.getElapsedTimeF32(); }
+	void debugAvatarVisible() { mDebugTimeAvatarVisible = mDebugSelfLoadTimer.getElapsedTimeF32(); }
 	void outputRezDiagnostics() const;
+	void debugBakedTextureUpload(LLVOAvatarDefines::EBakedTextureIndex index, BOOL finished);
+	static void		debugOnTimingLocalTexLoaded(BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata);
 private:
 	LLFrameTimer    mDebugSelfLoadTimer;
-	F32				mTimeWearablesLoaded;
-	F32 			mTimeAvatarVisible;
-	F32 			mTextureLoadTimes[LLVOAvatarDefines::TEX_NUM_INDICES][MAX_DISCARD_LEVEL+1]; // load time for each texture at each discard level
-	F32 			mBakedTextureTimes[LLVOAvatarDefines::BAKED_NUM_INDICES][2]; // time to start upload and finish upload of each baked texture
-	void			timingLocalTexLoaded(BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata);
+	F32				mDebugTimeWearablesLoaded;
+	F32 			mDebugTimeAvatarVisible;
+	F32 			mDebugTextureLoadTimes[LLVOAvatarDefines::TEX_NUM_INDICES][MAX_DISCARD_LEVEL+1]; // load time for each texture at each discard level
+	F32 			mDebugBakedTextureTimes[LLVOAvatarDefines::BAKED_NUM_INDICES][2]; // time to start upload and finish upload of each baked texture
+	void			debugTimingLocalTexLoaded(BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata);
 
 /**                    Diagnostics
  **                                                                            **
diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp
index 6c27aefebb3fd5b4160e6dd85353d0a42b1ad4dd..10b9a18fa8ef6061cc46f9b18d7b49daedc0572d 100644
--- a/indra/newview/llwearable.cpp
+++ b/indra/newview/llwearable.cpp
@@ -442,7 +442,7 @@ BOOL LLWearable::importFile( LLFILE* file )
 			delete mSavedTEMap[te];
 		}
 
-		image->setLoadedCallback(LLVOAvatarSelf::onTimingLocalTexLoaded,0,TRUE,FALSE, new LLVOAvatarSelf::LLAvatarTexData(id, (LLVOAvatarDefines::ETextureIndex)te));
+		image->setLoadedCallback(LLVOAvatarSelf::debugOnTimingLocalTexLoaded,0,TRUE,FALSE, new LLVOAvatarSelf::LLAvatarTexData(id, (LLVOAvatarDefines::ETextureIndex)te));
 
 
 		LLUUID textureid(text_buffer);
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index 0788a0ca9ed0d0d2fa58b300a6235c041f8f7bbb..2c1cb5938771759f92a6c4cf556ab7d6aa192c0d 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -649,4 +649,9 @@ with the same filename but different name
   <texture name="Progress_11" file_name="icons/Progress_11.png" preload="true" />
   <texture name="Progress_12" file_name="icons/Progress_12.png" preload="true" />
 
+  <texture name="bevel_background" file_name="widgets/bevel_background.png" preload="true" scale.left="12" scale.top="15" scale.right="120" scale.bottom="2"/>
+  <texture name="buy_off" file_name="widgets/buy_off.png" preload="true" scale.left="2" scale.top="15" scale.right="67" scale.bottom="4"/>
+  <texture name="buy_over" file_name="widgets/buy_over.png" preload="true" scale.left="2" scale.top="15" scale.right="67" scale.bottom="4"/>
+  <texture name="buy_press" file_name="widgets/buy_press.png" preload="true" scale.left="2" scale.top="15" scale.right="67" scale.bottom="4"/>
+  
 </textures>
diff --git a/indra/newview/skins/default/textures/widgets/bevel_background.png b/indra/newview/skins/default/textures/widgets/bevel_background.png
new file mode 100644
index 0000000000000000000000000000000000000000..fb5067503dea1616256ce018d8a795778ca7cb3c
Binary files /dev/null and b/indra/newview/skins/default/textures/widgets/bevel_background.png differ
diff --git a/indra/newview/skins/default/textures/widgets/buy_off.png b/indra/newview/skins/default/textures/widgets/buy_off.png
new file mode 100644
index 0000000000000000000000000000000000000000..961ad071d4242cf7928137525ad1846d002dff48
Binary files /dev/null and b/indra/newview/skins/default/textures/widgets/buy_off.png differ
diff --git a/indra/newview/skins/default/textures/widgets/buy_over.png b/indra/newview/skins/default/textures/widgets/buy_over.png
new file mode 100644
index 0000000000000000000000000000000000000000..0be19f8a31a51ece6397d0f12579c889fa9699e8
Binary files /dev/null and b/indra/newview/skins/default/textures/widgets/buy_over.png differ
diff --git a/indra/newview/skins/default/textures/widgets/buy_press.png b/indra/newview/skins/default/textures/widgets/buy_press.png
new file mode 100644
index 0000000000000000000000000000000000000000..d6f587464db39abee6592da3119ea666ee7378b8
Binary files /dev/null and b/indra/newview/skins/default/textures/widgets/buy_press.png differ
diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml
index 20e7c28db0ee04c4666ea69a25dcf9fe650dfcc8..5f28fa6495c0a531a700baef9c0da69ec0638d56 100644
--- a/indra/newview/skins/default/xui/en/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_about_land.xml
@@ -1933,7 +1933,7 @@ Only large parcels can be listed in search.
              left_delta="20"
              name="Only Allow"
              top="49"
-             width="278">
+             width="325">
                 Restrict Access to Residents verified by:
             </text>
             <check_box
diff --git a/indra/newview/skins/default/xui/en/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/en/floater_buy_currency_html.xml
index ab44082070b7b5bad049ff1479d2b11cb6aa0a8b..4643f66bd897bd8471c863619f5549acd430465c 100644
--- a/indra/newview/skins/default/xui/en/floater_buy_currency_html.xml
+++ b/indra/newview/skins/default/xui/en/floater_buy_currency_html.xml
@@ -2,26 +2,26 @@
 <floater
  legacy_header_height="18"
  can_resize="false"
- height="240"
+ height="280"
  layout="topleft"
- min_height="240"
- min_width="420"
+ min_height="280"
+ min_width="450"
  name="floater_buy_currency_html"
  help_topic="floater_buy_currency_html"
  save_rect="true"
  single_instance="true"
  title="BUY CURRENCY"
- width="422">
+ width="452">
  <floater.string
       name="buy_currency_url" translate="false">
-        http://user.lindenlab.com/~callum/ez/index.php?lang=[LANGUAGE]&amp;sa=[SPECIFIC_AMOUNT]&amp;sum=[SUM]&amp;msg=[MSG]&amp;bal=[BAL]
-</floater.string>
+        https://quick-buy-www.jeff.ooze.lindenlab.com/en/display
+ </floater.string>
     <web_browser
-     bottom="238"
+     bottom="278"
      follows="left|right|top|bottom"
      layout="topleft"
      left="2"
      name="browser"
      top="18"
-     width="420" />
+     width="450" />
 </floater>
diff --git a/indra/newview/skins/default/xui/en/panel_status_bar.xml b/indra/newview/skins/default/xui/en/panel_status_bar.xml
index 690d2971ee1730205aaedf27601577c8aa2a8e8f..e0c9c49a23d43a0d599219aec1e215ba67867fed 100644
--- a/indra/newview/skins/default/xui/en/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml
@@ -43,38 +43,40 @@
     </panel.string>
     <button
      auto_resize="true"
-     halign="right"
+     halign="center"
      font="SansSerifSmall"
      follows="right|top"
      image_overlay=""
-     image_selected="spacer35.tga"
-     image_unselected="spacer35.tga"
-     image_pressed="spacer35.tga"
-     height="16"
-     right="-230"
+     image_selected="bevel_background"
+     image_unselected="bevel_background"
+     image_pressed="bevel_background"
+     height="18"
+     right="-275"
      label_shadow="false"
      name="buycurrency"
      tool_tip="My Balance"
-     top="3"
-     width="120" />
+     pad_left="12"
+     pad_right="12" 
+     top="0"
+     width="40" />
     <button
      auto_resize="true"
-     halign="right"
+     halign="center"
      font="SansSerifSmall"
      follows="right|top"
-     image_selected="spacer35.tga"
-     image_unselected="spacer35.tga"
-     image_pressed="spacer35.tga"
-     height="16"
-     label="Buy L$"
-     label_color="EmphasisColor"
+     image_hover_unselected="buy_over"
+     image_unselected="buy_off"
+     image_pressed="buy_press"
+     height="18"
+     label="BUY L$"
+     label_color="White"
      left_pad="0"
-     label_shadow="false"
+     label_shadow="true"
      name="buyL"
-     pad_right="20"
+     pad_right="0"
      pad_bottom="2"
      tool_tip="Click to buy more L$"
-     top="2"
+     top="0"
      width="55" />
     <text
      type="string"
@@ -88,7 +90,7 @@
      left_pad="0"
      name="TimeText"
      tool_tip="Current time (Pacific)"
-     width="100">
+     width="145">
         24:00 AM PST
     </text>
     <button
diff --git a/indra/newview/skins/default/xui/ja/floater_about_land.xml b/indra/newview/skins/default/xui/ja/floater_about_land.xml
index d23ab3565be79dda3b5bafa3e9a8caf664433467..10c27a2b33eacec3de3ddff7c80d574ada640ab5 100644
--- a/indra/newview/skins/default/xui/ja/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/ja/floater_about_land.xml
@@ -308,10 +308,10 @@
 				(なし)
 			</panel.string>
 			<panel.string name="push_restrict_text">
-				プッシングを制限
+				プッシュ禁止
 			</panel.string>
 			<panel.string name="push_restrict_region_text">
-				プッシングを制限 (地域設定優先)
+				プッシュ禁止 (地域設定優先)
 			</panel.string>
 			<text name="allow_label">
 				他の住人への許可:
@@ -337,7 +337,7 @@
 				土地オプション:
 			</text>
 			<check_box label="安全(ダメージなし)" name="check safe" tool_tip="チェックを入れるとこの土地でのダメージコンバットが無効になり、「安全」に設定されます。 チェックを外すとダメージコンバットが有効になります。"/>
-			<check_box label="プッシングを制限" name="PushRestrictCheck" tool_tip="スクリプトによるプッシングを制限します。 このオプションを選択することにより、あなたの土地での破壊的行動を防ぐことができます。"/>
+			<check_box label="プッシュ禁止" name="PushRestrictCheck" tool_tip="スクリプトによるプッシュを禁止します。 このオプションを選択することにより、あなたの土地での破壊的行動を防ぐことができます。"/>
 			<check_box label="検索に区画を表示(週 L$ 30)" name="ShowDirectoryCheck" tool_tip="この区画を検索結果に表示します"/>
 			<combo_box name="land category with adult">
 				<combo_box.item label="全カテゴリ" name="item0"/>
@@ -355,7 +355,7 @@
 				<combo_box.item label="その他" name="item12"/>
 			</combo_box>
 			<combo_box name="land category">
-				<combo_box.item label="全カテゴリー" name="item0"/>
+				<combo_box.item label="全カテゴリ" name="item0"/>
 				<combo_box.item label="Linden 所在地" name="item1"/>
 				<combo_box.item label="アート&amp;カルチャー" name="item3"/>
 				<combo_box.item label="ビジネス" name="item4"/>
@@ -379,7 +379,7 @@
 			<button label="設定" label_selected="設定" name="Set" tool_tip="訪問者の着地点の設定を行います。この区画内に立って行ってください。"/>
 			<button label="クリア" label_selected="クリア" name="Clear" tool_tip="着地点をクリア"/>
 			<text name="Teleport Routing: ">
-				テレポート制限:
+				テレポート経路:
 			</text>
 			<combo_box name="landing type" tool_tip="テレポート経路 -- あなたの土地へのテレポート経路を選択">
 				<combo_box.item label="不可" name="Blocked"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_postcard.xml b/indra/newview/skins/default/xui/ja/floater_postcard.xml
index 5a2b047fe07496f6602ca178a3b661f995882b3c..9d9b59fa51391ac959bbaeafa3b6fb149430f0ba 100644
--- a/indra/newview/skins/default/xui/ja/floater_postcard.xml
+++ b/indra/newview/skins/default/xui/ja/floater_postcard.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Postcard" title="スナップショットをメール">
+<floater name="Postcard" title="スナップショットをEメールで送信">
 	<text name="to_label">
-		住人のメール:
+		受信先のEメール:
 	</text>
 	<line_editor left="145" name="to_form" width="125"/>
 	<text name="from_label">
-		あなたのメール:
+		あなたのEメール:
 	</text>
 	<line_editor left="145" name="from_form" width="125"/>
 	<text name="name_label">
diff --git a/indra/newview/skins/default/xui/ja/floater_tools.xml b/indra/newview/skins/default/xui/ja/floater_tools.xml
index a7e687abeb8079183979344183e673690409bdc9..6c3ad99fa786d820303ebfc8fb941d7ea32b4ef8 100644
--- a/indra/newview/skins/default/xui/ja/floater_tools.xml
+++ b/indra/newview/skins/default/xui/ja/floater_tools.xml
@@ -49,7 +49,7 @@
 	</text>
 	<radio_group name="focus_radio_group">
 		<radio_item label="ズーム" name="radio zoom"/>
-		<radio_item label="軌跡(Ctrl)" name="radio orbit"/>
+		<radio_item label="旋回(Ctrl)" name="radio orbit"/>
 		<radio_item label="水平・垂直移動 (Ctrl + Shift)" name="radio pan"/>
 	</radio_group>
 	<radio_group name="move_radio_group">
@@ -69,9 +69,9 @@
 	</text>
 	<check_box left="116" name="checkbox uniform"/>
 	<text name="checkbox uniform label">
-		両側を引伸ばす
+		両側を引き延ばす
 	</text>
-	<check_box initial_value="true" label="テクスチャを引伸ばす" name="checkbox stretch textures"/>
+	<check_box initial_value="true" label="テクスチャを引き延ばす" name="checkbox stretch textures"/>
 	<check_box initial_value="true" label="グリッドにスナップ" left_delta="27" name="checkbox snap to grid"/>
 	<combo_box left_delta="60" name="combobox grid mode" tool_tip="オブジェクトの配置に使うグリッドルーラを選択します" width="76">
 		<combo_box.item label="インワールドグリッド" name="World"/>
@@ -87,7 +87,7 @@
 	<button label="" label_selected="" name="ToolHemiCylinder" tool_tip="半円柱"/>
 	<button label="" label_selected="" name="ToolCone" tool_tip="円錐"/>
 	<button label="" label_selected="" name="ToolHemiCone" tool_tip="半円錐"/>
-	<button label="" label_selected="" name="ToolSphere" tool_tip="球形"/>
+	<button label="" label_selected="" name="ToolSphere" tool_tip="球体"/>
 	<button label="" label_selected="" name="ToolHemiSphere" tool_tip="半球"/>
 	<button label="" label_selected="" name="ToolTorus" tool_tip="トーラス"/>
 	<button label="" label_selected="" name="ToolTube" tool_tip="チューブ"/>
@@ -267,7 +267,7 @@
 				<combo_box.item label="ボックス" name="Box"/>
 				<combo_box.item label="シリンダー" name="Cylinder"/>
 				<combo_box.item label="プリズム" name="Prism"/>
-				<combo_box.item label="球形" name="Sphere"/>
+				<combo_box.item label="球体" name="Sphere"/>
 				<combo_box.item label="トーラス" name="Torus"/>
 				<combo_box.item label="チューブ" name="Tube"/>
 				<combo_box.item label="リング" name="Ring"/>
@@ -350,7 +350,7 @@
 			</text>
 			<combo_box name="sculpt type control">
 				<combo_box.item label="(なし)" name="None"/>
-				<combo_box.item label="球形" name="Sphere"/>
+				<combo_box.item label="球体" name="Sphere"/>
 				<combo_box.item label="トーラス" name="Torus"/>
 				<combo_box.item label="平面" name="Plane"/>
 				<combo_box.item label="シリンダー" name="Cylinder"/>
diff --git a/indra/newview/skins/default/xui/ja/menu_participant_list.xml b/indra/newview/skins/default/xui/ja/menu_participant_list.xml
index 3d0368245effa5d97dad2ec92956c58147c13685..4555bad9bacf073037cb8568962ecf2f912852c7 100644
--- a/indra/newview/skins/default/xui/ja/menu_participant_list.xml
+++ b/indra/newview/skins/default/xui/ja/menu_participant_list.xml
@@ -10,7 +10,7 @@
 	<menu_item_call label="支払う" name="Pay"/>
 	<menu_item_check label="人のアイコン表示" name="View Icons"/>
 	<menu_item_check label="ボイスをブロック" name="Block/Unblock"/>
-	<menu_item_check label="文字をブロックする" name="MuteText"/>
+	<menu_item_check label="文字をブロック" name="MuteText"/>
 	<context_menu label="モデレーターのオプション &gt;" name="Moderator Options">
 		<menu_item_check label="文字チャットを許可" name="AllowTextChat"/>
 		<menu_item_call label="この参加者をミュートする" name="ModerateVoiceMuteSelected"/>
diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml
index 7adc5e3a7843cedc727b5d5f6a7a33f0e10ababb..f734bcde42ba6f18eed0f7a6df6dca6933e5d6de 100644
--- a/indra/newview/skins/default/xui/ja/notifications.xml
+++ b/indra/newview/skins/default/xui/ja/notifications.xml
@@ -2230,7 +2230,7 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ
 ここでは飛べません。
 	</notification>
 	<notification name="PushRestricted">
-		このエリアではプッシュが制限されています。 土地所有者以外は他人をプッシュすることはできません。
+		このエリアではプッシュが禁止されています。 土地所有者以外は他人をプッシュすることはできません。
 	</notification>
 	<notification name="NoVoice">
 		このエリアではボイスチャットが無効です。 誰かが話しているのを聞くことはできません。
diff --git a/install.xml b/install.xml
index bb2f8c1f2f66e56cdb89f788ee96270cb78b4cd2..c6b6ffda810edb6c2914c6dc5b5dd70d0ed29dda 100644
--- a/install.xml
+++ b/install.xml
@@ -962,9 +962,9 @@ anguage Infrstructure (CLI) international standard</string>
           <key>windows</key>
           <map>
             <key>md5sum</key>
-            <string>d682ed6232193b4eab3170657a54ebf9</string>
+            <string>1d9697fed57084eea7b3dc250e9c66f7</string>
             <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-windows-qt4.6-20100519.tar.bz2</uri>
+            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-windows-qt4.6-20100525.tar.bz2</uri>
           </map>
         </map>
       </map>