diff --git a/indra/llappearance/llavatarappearancedefines.h b/indra/llappearance/llavatarappearancedefines.h
index 5663d24293618ac796941c5d7e185a863b1a70d0..88df23924148f22b8ffe89af6bc8326e5bbadf6c 100644
--- a/indra/llappearance/llavatarappearancedefines.h
+++ b/indra/llappearance/llavatarappearancedefines.h
@@ -143,7 +143,7 @@ typedef std::vector<LLWearableType::EType> wearables_vec_t;
 // 
 // This holds const data - it is initialized once and the contents never change after that.
 //------------------------------------------------------------------------
-class LLAvatarAppearanceDictionary : public LLSingleton<LLAvatarAppearanceDictionary>
+class LLAvatarAppearanceDictionary final : public LLSingleton<LLAvatarAppearanceDictionary>
 {
 	//--------------------------------------------------------------------
 	// Constructors and Destructors
diff --git a/indra/llappearance/lltexlayer.h b/indra/llappearance/lltexlayer.h
index 6a5040cf0ba69009a22afcbcd4541c65f65513a2..b7dda4d121b2c4c083dbba2f4b4479cdd5a7e1b2 100644
--- a/indra/llappearance/lltexlayer.h
+++ b/indra/llappearance/lltexlayer.h
@@ -291,7 +291,7 @@ class LLTexLayerSetBuffer : public virtual LLRefCount
 // LLTexLayerStaticImageList
 //
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-class LLTexLayerStaticImageList : public LLSingleton<LLTexLayerStaticImageList>
+class LLTexLayerStaticImageList final : public LLSingleton<LLTexLayerStaticImageList>
 {
 	LLSINGLETON(LLTexLayerStaticImageList);
 	~LLTexLayerStaticImageList();
diff --git a/indra/llappearance/llwearabletype.cpp b/indra/llappearance/llwearabletype.cpp
index 66a23c701657e5d531e4c5063e932e9e35a28d84..99a66611d6b414857b392449a9c28dc312e637a1 100644
--- a/indra/llappearance/llwearabletype.cpp
+++ b/indra/llappearance/llwearabletype.cpp
@@ -57,7 +57,7 @@ struct WearableEntry : public LLDictionaryEntry
 	BOOL mAllowMultiwear;
 };
 
-class LLWearableDictionary : public LLParamSingleton<LLWearableDictionary>,
+class LLWearableDictionary final : public LLParamSingleton<LLWearableDictionary>,
 							 public LLDictionary<LLWearableType::EType, WearableEntry>
 {
 	LLSINGLETON(LLWearableDictionary, LLWearableType&);
diff --git a/indra/llappearance/llwearabletype.h b/indra/llappearance/llwearabletype.h
index 57f3ef160d6cef8191ee60c2a79197babbd2fb3b..f0b06074ab824b7d0193f4aa2bb10d82f04ead88 100644
--- a/indra/llappearance/llwearabletype.h
+++ b/indra/llappearance/llwearabletype.h
@@ -33,7 +33,7 @@
 #include "llsingleton.h"
 #include "llinvtranslationbrdg.h"
 
-class LLWearableType : public LLParamSingleton<LLWearableType>
+class LLWearableType final : public LLParamSingleton<LLWearableType>
 {
 	LLSINGLETON(LLWearableType, LLTranslationBridge* trans);
 	~LLWearableType();
diff --git a/indra/llcommon/llassettype.cpp b/indra/llcommon/llassettype.cpp
index e6cc06e8d01a1220581153c1216d8d740eb88b35..09578608c8f18ce51c2def35490a93e64da738dd 100644
--- a/indra/llcommon/llassettype.cpp
+++ b/indra/llcommon/llassettype.cpp
@@ -60,7 +60,7 @@ struct AssetEntry : public LLDictionaryEntry
 	bool mCanKnow;
 };
 
-class LLAssetDictionary : public LLSingleton<LLAssetDictionary>,
+class LLAssetDictionary final : public LLSingleton<LLAssetDictionary>,
 						  public LLDictionary<LLAssetType::EType, AssetEntry>
 {
 	LLSINGLETON(LLAssetDictionary);
diff --git a/indra/llcommon/llcoros.h b/indra/llcommon/llcoros.h
index 38c2356c99d8bf41df4bec38f4ef98f7a8b4ab71..cabfd074c4b4ac2fb95f86c39ebbffd6a07bef3d 100644
--- a/indra/llcommon/llcoros.h
+++ b/indra/llcommon/llcoros.h
@@ -85,7 +85,7 @@ namespace boost {
  * can provide diagnostic info: we can look up the name of the
  * currently-running coroutine.
  */
-class LL_COMMON_API LLCoros: public LLSingleton<LLCoros>
+class LL_COMMON_API LLCoros final : public LLSingleton<LLCoros>
 {
     LLSINGLETON(LLCoros);
     ~LLCoros();
diff --git a/indra/llcommon/llerror.cpp b/indra/llcommon/llerror.cpp
index 3ffb05f858ac463ce0abeaad0b864cb185dd79a6..4722cd1adb2d1d5c76a43c77e443d7a7fd6f50d1 100644
--- a/indra/llcommon/llerror.cpp
+++ b/indra/llcommon/llerror.cpp
@@ -439,7 +439,7 @@ namespace
 	typedef std::vector<LLError::RecorderPtr> Recorders;
 	typedef std::vector<LLError::CallSite*> CallSiteVector;
 
-	class Globals : public LLSingleton<Globals>
+	class Globals final : public LLSingleton<Globals>
 	{
 		LLSINGLETON(Globals);
 	public:
@@ -513,7 +513,7 @@ namespace LLError
 
 	typedef LLPointer<SettingsConfig> SettingsConfigPtr;
 
-	class Settings : public LLSingleton<Settings>
+	class Settings final : public LLSingleton<Settings>
 	{
 		LLSINGLETON(Settings);
 	public:
diff --git a/indra/llcommon/llevents.h b/indra/llcommon/llevents.h
index e380c108f4d199a239dc8e12d0276a75db1cc89c..edfcb0a46015af1740bc1a27d0ed8f5bbe1780e9 100644
--- a/indra/llcommon/llevents.h
+++ b/indra/llcommon/llevents.h
@@ -234,7 +234,7 @@ class LLEventPump;
 // capable of this.) In that case, instead of calling LLEventPumps::instance()
 // again -- resurrecting the deleted LLSingleton -- store an
 // LLHandle<LLEventPumps> and test it before use.
-class LL_COMMON_API LLEventPumps: public LLSingleton<LLEventPumps>,
+class LL_COMMON_API LLEventPumps final : public LLSingleton<LLEventPumps>,
                                   public LLHandleProvider<LLEventPumps>
 {
     LLSINGLETON(LLEventPumps);
diff --git a/indra/llcommon/llinitdestroyclass.h b/indra/llcommon/llinitdestroyclass.h
index 5f979614fe0ee94b4b8036d983a1006ae1d507ee..956200b1c4ece1ebd5dd89bcf17b9618b7139602 100644
--- a/indra/llcommon/llinitdestroyclass.h
+++ b/indra/llcommon/llinitdestroyclass.h
@@ -74,7 +74,7 @@ class LLCallbackRegistry
  * (before main()), requiring LLInitClassList to be fully constructed on
  * demand regardless of module initialization order.
  */
-class LLInitClassList : 
+class LLInitClassList final :
 	public LLCallbackRegistry, 
 	public LLSingleton<LLInitClassList>
 {
@@ -88,7 +88,7 @@ class LLInitClassList :
  * time (before main()), requiring LLDestroyClassList to be fully constructed
  * on demand regardless of module initialization order.
  */
-class LLDestroyClassList : 
+class LLDestroyClassList final :
 	public LLCallbackRegistry, 
 	public LLSingleton<LLDestroyClassList>
 {
diff --git a/indra/llcommon/llpounceable.h b/indra/llcommon/llpounceable.h
index 37ee88e0edcf30dc399f526c6b97e6354cf0229b..594d02b2cba4f26e75a70e65337b5feb127be522 100644
--- a/indra/llcommon/llpounceable.h
+++ b/indra/llcommon/llpounceable.h
@@ -73,7 +73,7 @@ class LLPounceableQueueImpl;
 // because we can't count on a data member queue being initialized at the time
 // we start getting callWhenReady() calls. This is that LLSingleton.
 template <typename T>
-class LLPounceableQueueSingleton:
+class LLPounceableQueueSingleton final :
     public LLSingleton<LLPounceableQueueSingleton<T> >
 {
     LLSINGLETON_EMPTY_CTOR(LLPounceableQueueSingleton);
diff --git a/indra/llcommon/llsafehandle.h b/indra/llcommon/llsafehandle.h
index 9550e6253e8ff8f133bad890111a41c1cc0a899d..817e0de0ae4246bcda50151dd772649be61fe8b2 100644
--- a/indra/llcommon/llsafehandle.h
+++ b/indra/llcommon/llsafehandle.h
@@ -178,7 +178,7 @@ class LLSafeHandle
 	// Of course, as with any LLSingleton, the "null instance" is only
 	// instantiated on demand -- in this case, if you actually try to
 	// dereference an LLSafeHandle containing null.
-	class NullInstanceHolder: public LLSingleton<NullInstanceHolder>
+	class NullInstanceHolder final : public LLSingleton<NullInstanceHolder>
 	{
 		LLSINGLETON_EMPTY_CTOR(NullInstanceHolder);
 		~NullInstanceHolder() {}
diff --git a/indra/llcommon/llsingleton.cpp b/indra/llcommon/llsingleton.cpp
index 0cc48d2e48234a11b3204ab43ecb8fd8afd0e24f..73ebabe7a1b689d1311443475a70fc5649b55097 100644
--- a/indra/llcommon/llsingleton.cpp
+++ b/indra/llcommon/llsingleton.cpp
@@ -52,7 +52,7 @@ bool oktolog();
 // list is to help track inter-LLSingleton dependencies, and since we have
 // this implicit dependency from every LLSingleton to the master list, make it
 // an LLSingleton.
-class LLSingletonBase::MasterList:
+class LLSingletonBase::MasterList final :
     public LLSingleton<LLSingletonBase::MasterList>
 {
 private:
diff --git a/indra/llcommon/llsingleton.h b/indra/llcommon/llsingleton.h
index 30a5b21cf86e1307c440482dc795428be2f9ad7b..8f5998c1fe7cdd6e1b84fdb1e309b50080647b92 100644
--- a/indra/llcommon/llsingleton.h
+++ b/indra/llcommon/llsingleton.h
@@ -832,10 +832,10 @@ private:                                                                \
  */
 #define LLSINGLETON_EMPTY_CTOR(DERIVED_CLASS)                           \
     /* LLSINGLETON() is carefully implemented to permit exactly this */ \
-    LLSINGLETON(DERIVED_CLASS) {}
+    LLSINGLETON(DERIVED_CLASS) = default;
 
 #define LLSINGLETON_EMPTY_CTOR_C11(DERIVED_CLASS)                       \
     /* LLSINGLETON() is carefully implemented to permit exactly this */ \
-    LLSINGLETON_C11(DERIVED_CLASS) {}
+    LLSINGLETON_C11(DERIVED_CLASS) = default;
 
 #endif
diff --git a/indra/llcommon/llsys.h b/indra/llcommon/llsys.h
index 5ab97939b95f709024e59532e5cc1d37aa0ed7da..044381155b896e2eb117c15650742387f2dfb8e0 100644
--- a/indra/llcommon/llsys.h
+++ b/indra/llcommon/llsys.h
@@ -41,7 +41,7 @@
 #include <iosfwd>
 #include <string>
 
-class LL_COMMON_API LLOSInfo : public LLSingleton<LLOSInfo>
+class LL_COMMON_API LLOSInfo final : public LLSingleton<LLOSInfo>
 {
 	LLSINGLETON(LLOSInfo);
 public:
diff --git a/indra/llcorehttp/_httpopcancel.h b/indra/llcorehttp/_httpopcancel.h
index 86944eb159a3528bcef8039c080ef425daf40b36..f1385fd3cfb28eae348ef68e6975d369e319746a 100644
--- a/indra/llcorehttp/_httpopcancel.h
+++ b/indra/llcorehttp/_httpopcancel.h
@@ -49,7 +49,7 @@ namespace LLCore
 /// its final status unchanged and *this* request will complete
 /// with an HE_HANDLE_NOT_FOUND error status.
 
-class HttpOpCancel : public HttpOperation
+class HttpOpCancel final : public HttpOperation
 {
 public:
 	/// @param	handle	Handle of previously-issued request to
diff --git a/indra/llcorehttp/_httpoperation.h b/indra/llcorehttp/_httpoperation.h
index 1a75921c09c1be8f9b641aa29a93136f72a6d94d..bcf5ad2aef16dc6cbf8dc6601479dc1df31d4a93 100644
--- a/indra/llcorehttp/_httpoperation.h
+++ b/indra/llcorehttp/_httpoperation.h
@@ -217,7 +217,7 @@ class HttpOperation : private boost::noncopyable,
 /// request *does* generate a reply on the response
 /// queue, if requested.
 
-class HttpOpStop : public HttpOperation
+class HttpOpStop final : public HttpOperation
 {
 public:
 	HttpOpStop();
@@ -239,7 +239,7 @@ class HttpOpStop : public HttpOperation
 /// the servicing thread which bounces a reply back to the
 /// caller without any further delay.
 
-class HttpOpNull : public HttpOperation
+class HttpOpNull final : public HttpOperation
 {
 public:
 	HttpOpNull();
@@ -259,7 +259,7 @@ class HttpOpNull : public HttpOperation
 /// HttpOpSpin is a test-only request that puts the worker
 /// thread into a cpu spin.  Used for unit tests and cleanup
 /// evaluation.  You do not want to use this in production.
-class HttpOpSpin : public HttpOperation
+class HttpOpSpin final : public HttpOperation
 {
 public:
 	// 0 does a hard spin in the operation
diff --git a/indra/llcorehttp/_httpoprequest.h b/indra/llcorehttp/_httpoprequest.h
index cdbe350785315fa24c3ca2ad29c883a5f92d424d..29983d58b1a19d3b9648213fa3771f3e7950087c 100644
--- a/indra/llcorehttp/_httpoprequest.h
+++ b/indra/llcorehttp/_httpoprequest.h
@@ -63,7 +63,7 @@ class BufferArray;
 /// the information needed to make a working request which can
 /// then be enqueued to a request queue.
 ///
-class HttpOpRequest : public HttpOperation
+class HttpOpRequest final : public HttpOperation
 {
 public:
     typedef boost::shared_ptr<HttpOpRequest> ptr_t;
diff --git a/indra/llcorehttp/_httpopsetget.h b/indra/llcorehttp/_httpopsetget.h
index eabd41e79f29496cd3f8fd886390042010cb17df..168488855603810112cb26bf16efb69832ca6bde 100644
--- a/indra/llcorehttp/_httpopsetget.h
+++ b/indra/llcorehttp/_httpopsetget.h
@@ -50,7 +50,7 @@ namespace LLCore
 /// *TODO:  Can't return values to caller yet.  Need to do
 /// something better with HttpResponse and visitNotifier().
 ///
-class HttpOpSetGet : public HttpOperation
+class HttpOpSetGet final : public HttpOperation
 {
 public:
     typedef boost::shared_ptr<HttpOpSetGet> ptr_t;
diff --git a/indra/llcorehttp/_httpopsetpriority.h b/indra/llcorehttp/_httpopsetpriority.h
index 43e2aa081b25f1872849b56c5443d727eb2cc629..2e735db7c8d0a6b40f0e88fbb543baf114ea3b5f 100644
--- a/indra/llcorehttp/_httpopsetpriority.h
+++ b/indra/llcorehttp/_httpopsetpriority.h
@@ -46,7 +46,7 @@ namespace LLCore
 /// *NOTE:  This will very likely be removed in the near future
 /// when priority is removed from the library.
 
-class HttpOpSetPriority : public HttpOperation
+class HttpOpSetPriority final : public HttpOperation
 {
 public:
 	HttpOpSetPriority(HttpHandle handle, HttpRequest::priority_t priority);
diff --git a/indra/llcorehttp/_httpreadyqueue.h b/indra/llcorehttp/_httpreadyqueue.h
index 7418988ec1f88aae990ef70a57703e3c86f1e6bd..dbdebbd1b5683394f93747e6743c19e5687010d8 100644
--- a/indra/llcorehttp/_httpreadyqueue.h
+++ b/indra/llcorehttp/_httpreadyqueue.h
@@ -66,7 +66,7 @@ typedef std::priority_queue<HttpOpRequest::ptr_t,
 
 #endif // LLCORE_HTTP_READY_QUEUE_IGNORES_PRIORITY
 
-class HttpReadyQueue : public HttpReadyQueueBase
+class HttpReadyQueue final : public HttpReadyQueueBase
 {
 public:
 	HttpReadyQueue()
diff --git a/indra/llcorehttp/_httprequestqueue.h b/indra/llcorehttp/_httprequestqueue.h
index 3c3d134b07f3ad30a15dc16aa5253f9d18c39486..153c6960fa9594aaeb0e9d030c7d7ac5ee0923c4 100644
--- a/indra/llcorehttp/_httprequestqueue.h
+++ b/indra/llcorehttp/_httprequestqueue.h
@@ -47,7 +47,7 @@ class HttpOperation;
 /// requests from all HttpRequest instances into the
 /// singleton HttpService instance.
 
-class HttpRequestQueue : public LLCoreInt::RefCounted
+class HttpRequestQueue final : public LLCoreInt::RefCounted
 {
 protected:
 	/// Caller acquires a Refcount on construction
diff --git a/indra/llcorehttp/_thread.h b/indra/llcorehttp/_thread.h
index 22b7750badb1b88b64f0ae500f208f3c54ae3199..3522658e87a2f2b55a472b6086419ec187024391 100644
--- a/indra/llcorehttp/_thread.h
+++ b/indra/llcorehttp/_thread.h
@@ -39,7 +39,7 @@
 namespace LLCoreInt
 {
 
-class HttpThread : public RefCounted
+class HttpThread final : public RefCounted
 {
 private:
 	HttpThread();							// Not defined
diff --git a/indra/llcorehttp/bufferarray.h b/indra/llcorehttp/bufferarray.h
index 320adf2b8b5c9a59dfb197f6f542f0eecb12a1e4..dd58bdefb4aa2e1c667e6a1f6f86104d583a5d4a 100644
--- a/indra/llcorehttp/bufferarray.h
+++ b/indra/llcorehttp/bufferarray.h
@@ -64,7 +64,7 @@ class BufferArrayStreamBuf;
 /// Allocation:  Refcounted, heap only.  Caller of the constructor
 /// is given a single refcount.
 ///
-class BufferArray : public LLCoreInt::RefCounted
+class BufferArray final : public LLCoreInt::RefCounted
 {
 public:
 	// BufferArrayStreamBuf has intimate knowledge of this
diff --git a/indra/llcorehttp/bufferstream.h b/indra/llcorehttp/bufferstream.h
index 9327a798aa90cabf374c32e501525d7db1742570..eda796a94f771674442e1372742bcd642ed728fc 100644
--- a/indra/llcorehttp/bufferstream.h
+++ b/indra/llcorehttp/bufferstream.h
@@ -82,7 +82,7 @@ namespace LLCore
 /// sometime.
 ///
 
-class BufferArrayStreamBuf : public std::streambuf
+class BufferArrayStreamBuf final : public std::streambuf
 {
 public:
 	/// Constructor increments the reference count on the
@@ -131,7 +131,7 @@ class BufferArrayStreamBuf : public std::streambuf
 /// can be applied to a BufferArray.  Very convenient for LLSD
 /// serialization and parsing as well.
 
-class BufferArrayStream : public std::iostream
+class BufferArrayStream final : public std::iostream
 {
 public:
 	/// Constructor increments the reference count on the
diff --git a/indra/llcorehttp/httpresponse.h b/indra/llcorehttp/httpresponse.h
index b834085e5cb23b0ce08dce05587321454b42e724..e04feb69da062d267f365833d6ad9ab4d7414e2d 100644
--- a/indra/llcorehttp/httpresponse.h
+++ b/indra/llcorehttp/httpresponse.h
@@ -57,7 +57,7 @@ class HttpHeaders;
 /// Allocation:  Refcounted, heap only.  Caller of the constructor
 /// is given a refcount.
 ///
-class HttpResponse : public LLCoreInt::RefCounted
+class HttpResponse final : public LLCoreInt::RefCounted
 {
 public:
 	HttpResponse();
diff --git a/indra/llcorehttp/httpstats.h b/indra/llcorehttp/httpstats.h
index 2c713cb54873660240c98d05ec7327bd66edbbf6..d6f0a422cdf4ee04765fbbefd04aa746ec7ac60a 100644
--- a/indra/llcorehttp/httpstats.h
+++ b/indra/llcorehttp/httpstats.h
@@ -35,7 +35,7 @@
 
 namespace LLCore
 {
-    class HTTPStats : public LLSingleton<HTTPStats>
+    class HTTPStats final : public LLSingleton<HTTPStats>
     {
         LLSINGLETON(HTTPStats);
         virtual ~HTTPStats();
diff --git a/indra/llimage/llimage.h b/indra/llimage/llimage.h
index 32d4ea9566b4011c35520fb170fdfdd5036d2e9e..e5a71f387487dfc110e315523f945348f0daa83f 100644
--- a/indra/llimage/llimage.h
+++ b/indra/llimage/llimage.h
@@ -90,7 +90,7 @@ typedef enum e_image_codec
 //============================================================================
 // library initialization class
 
-class LLImage : public LLParamSingleton<LLImage>
+class LLImage final : public LLParamSingleton<LLImage>
 {
 	LLSINGLETON(LLImage, bool use_new_byte_range = false, S32 minimal_reverse_byte_range_percent = 75);
 	~LLImage();
@@ -180,7 +180,7 @@ class LLImageBase
 };
 
 // Raw representation of an image (used for textures, and other uncompressed formats
-class LLImageRaw : public LLImageBase
+class LLImageRaw final : public LLImageBase
 {
 protected:
 	/*virtual*/ ~LLImageRaw();
diff --git a/indra/llimage/llimagebmp.h b/indra/llimage/llimagebmp.h
index 6a5fa4697d10872ad323f80f9ffe770ed4fb843e..724e8b7eeea7fffebc29d62d2e65723be49f41d8 100644
--- a/indra/llimage/llimagebmp.h
+++ b/indra/llimage/llimagebmp.h
@@ -31,7 +31,7 @@
 
 // This class compresses and decompressed BMP files
 
-class LLImageBMP : public LLImageFormatted
+class LLImageBMP final : public LLImageFormatted
 {
 protected:
 	virtual ~LLImageBMP();
diff --git a/indra/llimage/llimagedxt.h b/indra/llimage/llimagedxt.h
index a4a9bcf99c4b6c5876d843dea5cce41a9ee35fce..6e7126c0cf53940da6cbbe2bbb50de977d3427b9 100644
--- a/indra/llimage/llimagedxt.h
+++ b/indra/llimage/llimagedxt.h
@@ -31,7 +31,7 @@
 
 // This class decodes and encodes LL DXT files (which may unclude uncompressed RGB or RGBA mipped data)
 
-class LLImageDXT : public LLImageFormatted
+class LLImageDXT final : public LLImageFormatted
 {
 public:
 	enum EFileFormat
diff --git a/indra/llimage/llimagej2c.h b/indra/llimage/llimagej2c.h
index e196f7479ed0c83dd30b17e3a5db0db5f7c7d863..1e1c91a306c3e46fae3b26fc6909d75e4e27f8ef 100644
--- a/indra/llimage/llimagej2c.h
+++ b/indra/llimage/llimagej2c.h
@@ -38,7 +38,7 @@ const F32 DEFAULT_COMPRESSION_RATE = 1.f/8.f;
 class LLImageJ2CImpl;
 class LLImageCompressionTester ;
 
-class LLImageJ2C : public LLImageFormatted
+class LLImageJ2C final : public LLImageFormatted
 {
 protected:
 	virtual ~LLImageJ2C();
@@ -137,7 +137,7 @@ class LLImageJ2CImpl
 // Tracks the image compression / decompression data,
 // records and outputs them to the log file.
 //
-class LLImageCompressionTester : public LLMetricPerformanceTesterBasic
+class LLImageCompressionTester final : public LLMetricPerformanceTesterBasic
 {
     public:
         LLImageCompressionTester();
diff --git a/indra/llimage/llimagejpeg.h b/indra/llimage/llimagejpeg.h
index 7a849a84212aa8f43123baf41dd2e3029cf2cef0..4912f5080cc6c9ee820275c1709267b27dcc3acb 100644
--- a/indra/llimage/llimagejpeg.h
+++ b/indra/llimage/llimagejpeg.h
@@ -42,7 +42,7 @@ extern "C" {
 #endif
 }
 
-class LLImageJPEG : public LLImageFormatted
+class LLImageJPEG final : public LLImageFormatted
 {
 protected:
 	virtual ~LLImageJPEG();
diff --git a/indra/llimage/llimagepng.h b/indra/llimage/llimagepng.h
index ef16f2996f9a533fff0b4a88ad8ea0dc84184605..109510ef9b49afe4378f17a5d8adec629c2222cb 100644
--- a/indra/llimage/llimagepng.h
+++ b/indra/llimage/llimagepng.h
@@ -29,7 +29,7 @@
 #include "stdtypes.h"
 #include "llimage.h"
 
-class LLImagePNG : public LLImageFormatted
+class LLImagePNG final : public LLImageFormatted
 {
 protected:
 	~LLImagePNG();
diff --git a/indra/llimage/llimagetga.h b/indra/llimage/llimagetga.h
index b1f34dcdaddf1f90e974fe6d3579021f49d02afb..75cad685bada218c9e88e503e79345f18ecb4a46 100644
--- a/indra/llimage/llimagetga.h
+++ b/indra/llimage/llimagetga.h
@@ -31,7 +31,7 @@
 
 // This class compresses and decompressed TGA (targa) files
 
-class LLImageTGA : public LLImageFormatted
+class LLImageTGA final : public LLImageFormatted
 {
 protected:
 	virtual ~LLImageTGA();
diff --git a/indra/llimagej2coj/llimagej2coj.h b/indra/llimagej2coj/llimagej2coj.h
index 5c6193944e3222a062090e06fec90b458dcee6a8..02b9a11ea1a799376c517928f0eb42086427297b 100644
--- a/indra/llimagej2coj/llimagej2coj.h
+++ b/indra/llimagej2coj/llimagej2coj.h
@@ -29,7 +29,7 @@
 
 #include "llimagej2c.h"
 
-class LLImageJ2COJ : public LLImageJ2CImpl
+class LLImageJ2COJ final : public LLImageJ2CImpl
 {	
 public:
 	LLImageJ2COJ();
diff --git a/indra/llinventory/llfoldertype.cpp b/indra/llinventory/llfoldertype.cpp
index 27bb4058a0120e39d1e84e9c88115ad6da38dd1a..a41e5394554499d535e71dee87172b6e8c6e39ca 100644
--- a/indra/llinventory/llfoldertype.cpp
+++ b/indra/llinventory/llfoldertype.cpp
@@ -48,7 +48,7 @@ struct FolderEntry : public LLDictionaryEntry
 	const bool mIsProtected;
 };
 
-class LLFolderDictionary : public LLSingleton<LLFolderDictionary>,
+class LLFolderDictionary final : public LLSingleton<LLFolderDictionary>,
 						   public LLDictionary<LLFolderType::EType, FolderEntry>
 {
 	LLSINGLETON(LLFolderDictionary);
diff --git a/indra/llinventory/llinventorysettings.cpp b/indra/llinventory/llinventorysettings.cpp
index fdad50e8d46b70fe5772d5d15df8088a7517014f..01299a65849beb1acffd0f6219b9cff77fef80ea 100644
--- a/indra/llinventory/llinventorysettings.cpp
+++ b/indra/llinventory/llinventorysettings.cpp
@@ -39,7 +39,7 @@ namespace {
 }
 
 //=========================================================================
-struct SettingsEntry : public LLDictionaryEntry
+struct SettingsEntry final : public LLDictionaryEntry
 {
     SettingsEntry(const std::string &name,
         const std::string& default_new_name,
@@ -61,7 +61,7 @@ struct SettingsEntry : public LLDictionaryEntry
     LLInventoryType::EIconName mIconName;
 };
 
-class LLSettingsDictionary : public LLSingleton<LLSettingsDictionary>,
+class LLSettingsDictionary final : public LLSingleton<LLSettingsDictionary>,
     public LLDictionary<LLSettingsType::type_e, SettingsEntry>
 {
     LLSINGLETON(LLSettingsDictionary);
diff --git a/indra/llinventory/llinventorytype.cpp b/indra/llinventory/llinventorytype.cpp
index 8459347ffa5f6d5c914e479cd6c8533435a71118..d641a3f30a97c502dbd142d5af24e57abe6b6209 100644
--- a/indra/llinventory/llinventorytype.cpp
+++ b/indra/llinventory/llinventorytype.cpp
@@ -36,7 +36,7 @@ static const std::string empty_string;
 ///----------------------------------------------------------------------------
 /// Class LLInventoryType
 ///----------------------------------------------------------------------------
-struct InventoryEntry : public LLDictionaryEntry
+struct InventoryEntry final : public LLDictionaryEntry
 {
 	InventoryEntry(const std::string &name, // unlike asset type names, not limited to 8 characters; need not match asset type names
 				   const std::string &human_name, // for decoding to human readable form; put any and as many printable characters you want in each one.
@@ -61,7 +61,7 @@ struct InventoryEntry : public LLDictionaryEntry
 	asset_vec_t mAssetTypes;
 };
 
-class LLInventoryDictionary : public LLSingleton<LLInventoryDictionary>,
+class LLInventoryDictionary final : public LLSingleton<LLInventoryDictionary>,
 							  public LLDictionary<LLInventoryType::EType, InventoryEntry>
 {
 	LLSINGLETON(LLInventoryDictionary);
diff --git a/indra/llmessage/llavatarnamecache.h b/indra/llmessage/llavatarnamecache.h
index 3c12d66ff619059d9ea6d1691deadbbc344e4520..4f249cd653fa02ad919d2c4740040024c80c77b9 100644
--- a/indra/llmessage/llavatarnamecache.h
+++ b/indra/llmessage/llavatarnamecache.h
@@ -39,7 +39,7 @@
 
 class LLSD;
 
-class LLAvatarNameCache : public LLSingleton<LLAvatarNameCache>
+class LLAvatarNameCache final : public LLSingleton<LLAvatarNameCache>
 {
 	LLSINGLETON(LLAvatarNameCache);
 	~LLAvatarNameCache();
diff --git a/indra/llmessage/llcoproceduremanager.h b/indra/llmessage/llcoproceduremanager.h
index 70204ba02b53b9d28b693595e47378a76d60700e..de858fb29dc729cd39756630bece1102fa7ad85c 100644
--- a/indra/llmessage/llcoproceduremanager.h
+++ b/indra/llmessage/llcoproceduremanager.h
@@ -36,7 +36,7 @@
 
 class LLCoprocedurePool;
 
-class LLCoprocedureManager : public LLSingleton < LLCoprocedureManager >
+class LLCoprocedureManager final : public LLSingleton < LLCoprocedureManager >
 {
     LLSINGLETON(LLCoprocedureManager);
     virtual ~LLCoprocedureManager();
diff --git a/indra/llmessage/llexperiencecache.h b/indra/llmessage/llexperiencecache.h
index f9ff69c2b6690ebddb9ab59e4555db9bfadbb73e..99cd06f2763a59f5ba6db9ac30bb4c8d23729460 100644
--- a/indra/llmessage/llexperiencecache.h
+++ b/indra/llmessage/llexperiencecache.h
@@ -41,7 +41,7 @@ class LLSD;
 class LLUUID;
 
 
-class LLExperienceCache: public LLSingleton < LLExperienceCache >
+class LLExperienceCache final : public LLSingleton < LLExperienceCache >
 {
     LLSINGLETON(LLExperienceCache);
 
diff --git a/indra/llmessage/llproxy.h b/indra/llmessage/llproxy.h
index a1ffa9e5d563e782a621a4733d3f0bf41da8d631..59c3999e56d002600cf595137f904313b499f143 100644
--- a/indra/llmessage/llproxy.h
+++ b/indra/llmessage/llproxy.h
@@ -217,7 +217,7 @@ enum LLSocks5AuthType
  * *TODO$: This should be moved into the LLCore::Http space.
  * 
  */
-class LLProxy: public LLSingleton<LLProxy>
+class LLProxy final : public LLSingleton<LLProxy>
 {
 	/*###########################################################################################
 	METHODS THAT DO NOT LOCK mProxyMutex!
diff --git a/indra/llmessage/message.h b/indra/llmessage/message.h
index 52dbf871dbc963be38a38b4bbf597946b4a3b7ef..5a07085a24b39085f4610cec3c334ddd36adacd2 100644
--- a/indra/llmessage/message.h
+++ b/indra/llmessage/message.h
@@ -69,7 +69,7 @@ const U32 MESSAGE_NUMBER_OF_HASH_BUCKETS = 8192;
 
 const S32 MESSAGE_MAX_PER_FRAME = 400;
 
-class LLMessageStringTable : public LLSingleton<LLMessageStringTable>
+class LLMessageStringTable final : public LLSingleton<LLMessageStringTable>
 {
 	LLSINGLETON(LLMessageStringTable);
 	~LLMessageStringTable();
diff --git a/indra/llrender/llrender2dutils.h b/indra/llrender/llrender2dutils.h
index 70ab006fd6573490d0857cf90b588bd29cb569a4..3428067e71fc86fe5829d7d711953b85869bc995 100644
--- a/indra/llrender/llrender2dutils.h
+++ b/indra/llrender/llrender2dutils.h
@@ -121,7 +121,7 @@ inline void gl_rect_2d_offset_local( const LLRect& rect, S32 pixel_offset, BOOL
 
 class LLImageProviderInterface;
 
-class LLRender2D : public LLParamSingleton<LLRender2D>
+class LLRender2D final : public LLParamSingleton<LLRender2D>
 {
 	LLSINGLETON(LLRender2D, LLImageProviderInterface* image_provider);
 	LOG_CLASS(LLRender2D);
diff --git a/indra/llui/llclipboard.h b/indra/llui/llclipboard.h
index a668ac1ac6cfe9a30963d58340127117d23be931..dc4e6c721bc1610f1b4d23cc055e69d9596b0a72 100644
--- a/indra/llui/llclipboard.h
+++ b/indra/llui/llclipboard.h
@@ -46,7 +46,7 @@
 // In all other cases, the text and the UUIDs are very much independent.
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-class LLClipboard : public LLSingleton<LLClipboard>
+class LLClipboard final : public LLSingleton<LLClipboard>
 {
 	LLSINGLETON(LLClipboard);
 	~LLClipboard();
diff --git a/indra/llui/llcommandmanager.h b/indra/llui/llcommandmanager.h
index 8cec5e2b244e6d3e1b1dbdb32f3f711392675b5c..076ccc57a639a34bb59087a68e4def35c2b07293 100644
--- a/indra/llui/llcommandmanager.h
+++ b/indra/llui/llcommandmanager.h
@@ -170,7 +170,7 @@ class LLCommand
 };
 
 
-class LLCommandManager
+class LLCommandManager final
 :	public LLSingleton<LLCommandManager>
 {
 	LLSINGLETON(LLCommandManager);
diff --git a/indra/llui/llfunctorregistry.h b/indra/llui/llfunctorregistry.h
index e43974bc52fa9d44324538d05de1fadbb17a1340..25ffc975b7ff4efafd5c2ec585cbd3cebdd22641 100644
--- a/indra/llui/llfunctorregistry.h
+++ b/indra/llui/llfunctorregistry.h
@@ -51,7 +51,7 @@
  */
 
 template <typename FUNCTOR_TYPE>
-class LLFunctorRegistry : public LLSingleton<LLFunctorRegistry<FUNCTOR_TYPE> >
+class LLFunctorRegistry final : public LLSingleton<LLFunctorRegistry<FUNCTOR_TYPE> >
 {
 	LLSINGLETON(LLFunctorRegistry);
 	LOG_CLASS(LLFunctorRegistry);
diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h
index c7277b99ba661b6162aacad7df802d2c5e28a8da..d1e82342798c378e11a0fbedd5788e557efed785 100644
--- a/indra/llui/llnotifications.h
+++ b/indra/llui/llnotifications.h
@@ -870,7 +870,7 @@ class LLNotificationsInterface
 						LLNotificationFunctorRegistry::ResponseFunctor functor) = 0;
 };
 
-class LLNotifications : 
+class LLNotifications final :
 	public LLNotificationsInterface,
 	public LLSingleton<LLNotifications>, 
 	public LLNotificationChannelBase
diff --git a/indra/llui/llpanel.h b/indra/llui/llpanel.h
index b8f47ef6badd427fdf00b03df3821278c99b0420..0a77f8e6299e8ba711fd04b3cfe77aecd42202f9 100644
--- a/indra/llui/llpanel.h
+++ b/indra/llui/llpanel.h
@@ -265,7 +265,7 @@ typedef boost::function<LLPanel* (void)> LLPanelClassCreatorFunc;
 
 // local static instance for registering a particular panel class
 
-class LLRegisterPanelClass
+class LLRegisterPanelClass final
 :	public LLSingleton< LLRegisterPanelClass >
 {
 	LLSINGLETON_EMPTY_CTOR(LLRegisterPanelClass);
diff --git a/indra/llui/llresmgr.h b/indra/llui/llresmgr.h
index b19d8d40b89f48912284950d1c8bbe849304cbd7..8f14d9f687cfa8d62f25f7b15c107c22135fdf2d 100644
--- a/indra/llui/llresmgr.h
+++ b/indra/llui/llresmgr.h
@@ -40,7 +40,7 @@ enum LLLOCALE_ID
 	LLLOCALE_COUNT	// Number of values in this enum.  Keep at end.
 };
 
-class LLResMgr : public LLSingleton<LLResMgr>
+class LLResMgr final : public LLSingleton<LLResMgr>
 {
 	LLSINGLETON(LLResMgr);
 
diff --git a/indra/llui/llspellcheck.h b/indra/llui/llspellcheck.h
index f1964cc091940f6e03513f9143c79b22b5fc5e23..0e4d96561cb9d28944836df055dce2bdd240eed6 100644
--- a/indra/llui/llspellcheck.h
+++ b/indra/llui/llspellcheck.h
@@ -34,7 +34,7 @@
 
 class Hunspell;
 
-class LLSpellChecker : public LLSingleton<LLSpellChecker>
+class LLSpellChecker final : public LLSingleton<LLSpellChecker>
 {
 	LLSINGLETON(LLSpellChecker);
 	~LLSpellChecker();
diff --git a/indra/llui/lltextparser.h b/indra/llui/lltextparser.h
index 3d71e40452d84342a708e0dd1db41553110432e5..e76b21cfac9a4fe5839f047c31c76750c8988027 100644
--- a/indra/llui/lltextparser.h
+++ b/indra/llui/lltextparser.h
@@ -35,7 +35,7 @@ class LLUUID;
 class LLVector3d;
 class LLColor4;
 
-class LLTextParser : public LLSingleton<LLTextParser>
+class LLTextParser final : public LLSingleton<LLTextParser>
 {
 	LLSINGLETON(LLTextParser);
 
diff --git a/indra/llui/lltooltip.h b/indra/llui/lltooltip.h
index 0b1fbe536748946108178440b823c9421846c394..cff582fcfb9e87e621370317c63a3b9a412eefc2 100644
--- a/indra/llui/lltooltip.h
+++ b/indra/llui/lltooltip.h
@@ -127,7 +127,7 @@ class LLInspector : public LLToolTip
 	{};
 };
 
-class LLToolTipMgr : public LLSingleton<LLToolTipMgr>
+class LLToolTipMgr final : public LLSingleton<LLToolTipMgr>
 {
 	LLSINGLETON(LLToolTipMgr);
 	LOG_CLASS(LLToolTipMgr);
diff --git a/indra/llui/llui.h b/indra/llui/llui.h
index 9856e551cc7956c60ba723e3aff289d676ce0523..1ce436cad14642b6c1630220561bf907d23dadc2 100644
--- a/indra/llui/llui.h
+++ b/indra/llui/llui.h
@@ -108,7 +108,7 @@ class LLImageProviderInterface;
 
 typedef	void (*LLUIAudioCallback)(const LLUUID& uuid);
 
-class LLUI : public LLParamSingleton<LLUI>
+class LLUI final : public LLParamSingleton<LLUI>
 {
 public:
 	typedef std::map<std::string, LLControlGroup*> settings_map_t;
diff --git a/indra/llui/lluicolortable.h b/indra/llui/lluicolortable.h
index 44472070cc4f4249d1dc1c7daebc21bcd4089f4f..d6f9a93f832ce1b2680cb88828ec4a54bc987c6f 100644
--- a/indra/llui/lluicolortable.h
+++ b/indra/llui/lluicolortable.h
@@ -36,7 +36,7 @@
 
 class LLUIColor;
 
-class LLUIColorTable : public LLSingleton<LLUIColorTable>
+class LLUIColorTable final : public LLSingleton<LLUIColorTable>
 {
 	LLSINGLETON_EMPTY_CTOR(LLUIColorTable);
 	LOG_CLASS(LLUIColorTable);
diff --git a/indra/llui/lluictrl.h b/indra/llui/lluictrl.h
index 7360bd76598799dc17e90fc46f2539c694ee8fe2..3cca281f1ca1168018101a0a24e2a9fbf6b70141 100644
--- a/indra/llui/lluictrl.h
+++ b/indra/llui/lluictrl.h
@@ -258,7 +258,7 @@ class LLUICtrl
 
 	LLUICtrl* findRootMostFocusRoot();
 
-	class LLTextInputFilter : public LLQueryFilter, public LLSingleton<LLTextInputFilter>
+	class LLTextInputFilter final : public LLQueryFilter, public LLSingleton<LLTextInputFilter>
 	{
 		LLSINGLETON_EMPTY_CTOR(LLTextInputFilter);
 		/*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const 
@@ -270,12 +270,12 @@ class LLUICtrl
 	template <typename F, typename DERIVED> class CallbackRegistry : public LLRegistrySingleton<std::string, F, DERIVED >
 	{};	
 
-	class CommitCallbackRegistry : public CallbackRegistry<commit_callback_t, CommitCallbackRegistry>
+	class CommitCallbackRegistry final : public CallbackRegistry<commit_callback_t, CommitCallbackRegistry>
 	{
 		LLSINGLETON_EMPTY_CTOR(CommitCallbackRegistry);
 	};
 	// the enable callback registry is also used for visiblity callbacks
-	class EnableCallbackRegistry : public CallbackRegistry<enable_callback_t, EnableCallbackRegistry>
+	class EnableCallbackRegistry final : public CallbackRegistry<enable_callback_t, EnableCallbackRegistry>
 	{
 		LLSINGLETON_EMPTY_CTOR(EnableCallbackRegistry);
 	};
diff --git a/indra/llui/lluictrlfactory.h b/indra/llui/lluictrlfactory.h
index 03d946f1b7729e6cc9808ba78529e5abc06b0877..800ac76e9939c22a2d4a6e4eb62c89db3adaf04e 100644
--- a/indra/llui/lluictrlfactory.h
+++ b/indra/llui/lluictrlfactory.h
@@ -57,13 +57,13 @@ class LLChildRegistry : public LLRegistrySingleton<std::string, LLWidgetCreatorF
 	LLChildRegistry() {}
 };
 
-class LLDefaultChildRegistry : public LLChildRegistry<LLDefaultChildRegistry>
+class LLDefaultChildRegistry final : public LLChildRegistry<LLDefaultChildRegistry>
 {
 	LLSINGLETON_EMPTY_CTOR(LLDefaultChildRegistry);
 };
 
 // lookup widget name by type
-class LLWidgetNameRegistry 
+class LLWidgetNameRegistry final
 :	public LLRegistrySingleton<const std::type_info*, std::string, LLWidgetNameRegistry>
 {
 	LLSINGLETON_EMPTY_CTOR(LLWidgetNameRegistry);
@@ -87,7 +87,7 @@ extern LLTrace::BlockTimerStatHandle FTM_INIT_FROM_PARAMS;
 extern template class LLUICtrlFactory* LLSingleton<class LLUICtrlFactory>::getInstance();
 #endif
 
-class LLUICtrlFactory : public LLSingleton<LLUICtrlFactory>
+class LLUICtrlFactory final : public LLSingleton<LLUICtrlFactory>
 {
 	LLSINGLETON(LLUICtrlFactory);
 	~LLUICtrlFactory();
diff --git a/indra/llui/llurlregistry.h b/indra/llui/llurlregistry.h
index efafe543abc65278835b292d6195bdecc561221f..d52f44bec04addb26dc3dfd56e5e114455b210d0 100644
--- a/indra/llui/llurlregistry.h
+++ b/indra/llui/llurlregistry.h
@@ -60,7 +60,7 @@ void LLUrlRegistryNullCallback(const std::string &url,
 /// As such, you can provide a callback method that will get invoked
 /// when a new label is available for one of your matched Urls.
 ///
-class LLUrlRegistry : public LLSingleton<LLUrlRegistry>
+class LLUrlRegistry final : public LLSingleton<LLUrlRegistry>
 {
 	LLSINGLETON(LLUrlRegistry);
 	~LLUrlRegistry();
diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp
index 61db2f2d94840ab502d6d2d12edfff2fc2ddacee..c914c390013031a7277d88c8a735b91fd7a4e63e 100644
--- a/indra/llui/llview.cpp
+++ b/indra/llui/llview.cpp
@@ -1940,7 +1940,7 @@ class CompareByTabOrder
 	const S32 mDefaultTabGroup;
 };
 
-class SortByTabOrder : public LLQuerySorter, public LLSingleton<SortByTabOrder>
+class SortByTabOrder final : public LLQuerySorter, public LLSingleton<SortByTabOrder>
 {
 	LLSINGLETON_EMPTY_CTOR(SortByTabOrder);
 	/*virtual*/ void sort(LLView * parent, LLView::child_list_t &children) const 
@@ -1964,7 +1964,7 @@ const LLViewQuery & LLView::getTabOrderQuery()
 }
 
 // This class is only used internally by getFocusRootsQuery below. 
-class LLFocusRootsFilter : public LLQueryFilter, public LLSingleton<LLFocusRootsFilter>
+class LLFocusRootsFilter final : public LLQueryFilter, public LLSingleton<LLFocusRootsFilter>
 {
 	LLSINGLETON_EMPTY_CTOR(LLFocusRootsFilter);
 	/*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const 
diff --git a/indra/llui/llviewereventrecorder.h b/indra/llui/llviewereventrecorder.h
index 8712b041d26626b8869f5ad2ca46bc50bfe37282..a25e656280f5b1b50b89d15be34475b167595895 100644
--- a/indra/llui/llviewereventrecorder.h
+++ b/indra/llui/llviewereventrecorder.h
@@ -44,7 +44,7 @@
 
 #include "llsingleton.h" // includes llerror which we need here so we can skip the include here
 
-class LLViewerEventRecorder : public LLSingleton<LLViewerEventRecorder>
+class LLViewerEventRecorder final : public LLSingleton<LLViewerEventRecorder>
 {
   LLSINGLETON(LLViewerEventRecorder);
   ~LLViewerEventRecorder();
diff --git a/indra/llui/llviewquery.h b/indra/llui/llviewquery.h
index 21bb1be26f8d5c86a17e19c569446d79ecbebf8d..bbd7ba30d4bc60ce7a738022077a2dce6d638135 100644
--- a/indra/llui/llviewquery.h
+++ b/indra/llui/llviewquery.h
@@ -52,37 +52,37 @@ class LLQuerySorter
 	virtual void sort(LLView * parent, viewList_t &children) const;
 };
 
-class LLLeavesFilter : public LLQueryFilter, public LLSingleton<LLLeavesFilter>
+class LLLeavesFilter final : public LLQueryFilter, public LLSingleton<LLLeavesFilter>
 {
 	LLSINGLETON_EMPTY_CTOR(LLLeavesFilter);
 	/*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const;
 };
 
-class LLRootsFilter : public LLQueryFilter, public LLSingleton<LLRootsFilter>
+class LLRootsFilter final : public LLQueryFilter, public LLSingleton<LLRootsFilter>
 {
 	LLSINGLETON_EMPTY_CTOR(LLRootsFilter);
 	/*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const;
 };
 
-class LLVisibleFilter : public LLQueryFilter, public LLSingleton<LLVisibleFilter>
+class LLVisibleFilter final : public LLQueryFilter, public LLSingleton<LLVisibleFilter>
 {
 	LLSINGLETON_EMPTY_CTOR(LLVisibleFilter);
 	/*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const;
 };
 
-class LLEnabledFilter : public LLQueryFilter, public LLSingleton<LLEnabledFilter>
+class LLEnabledFilter final : public LLQueryFilter, public LLSingleton<LLEnabledFilter>
 {
 	LLSINGLETON_EMPTY_CTOR(LLEnabledFilter);
 	/*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const;
 };
 
-class LLTabStopFilter : public LLQueryFilter, public LLSingleton<LLTabStopFilter>
+class LLTabStopFilter final : public LLQueryFilter, public LLSingleton<LLTabStopFilter>
 {
 	LLSINGLETON_EMPTY_CTOR(LLTabStopFilter);
 	/*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const;
 };
 
-class LLCtrlFilter : public LLQueryFilter, public LLSingleton<LLCtrlFilter>
+class LLCtrlFilter final : public LLQueryFilter, public LLSingleton<LLCtrlFilter>
 {
 	LLSINGLETON_EMPTY_CTOR(LLCtrlFilter);
 	/*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const;
diff --git a/indra/llui/llxuiparser.h b/indra/llui/llxuiparser.h
index eb0eac8194def07f180a18aa5d758ecd3b49ce21..16db98cd1c8aacff036337dde0e564fa5e64de5c 100644
--- a/indra/llui/llxuiparser.h
+++ b/indra/llui/llxuiparser.h
@@ -39,7 +39,7 @@
 class LLView;
 
 // lookup widget type by name
-class LLWidgetTypeRegistry
+class LLWidgetTypeRegistry final
 :	public LLRegistrySingleton<std::string, const std::type_info*, LLWidgetTypeRegistry>
 {
 	LLSINGLETON_EMPTY_CTOR(LLWidgetTypeRegistry);
diff --git a/indra/media_plugins/cef/windows_volume_catcher.cpp b/indra/media_plugins/cef/windows_volume_catcher.cpp
index 7a36123a1169256277a6c9a513a8bd412d7a289f..fdb4aacb1bf21b64602f2b9f4d82dea315d6a5f8 100644
--- a/indra/media_plugins/cef/windows_volume_catcher.cpp
+++ b/indra/media_plugins/cef/windows_volume_catcher.cpp
@@ -30,7 +30,7 @@
 #include "llsingleton.h"
 #include <windows.h>
 #include <mmeapi.h>
-class VolumeCatcherImpl : public LLSingleton<VolumeCatcherImpl>
+class VolumeCatcherImpl final : public LLSingleton<VolumeCatcherImpl>
 {
 	LLSINGLETON(VolumeCatcherImpl);
 	// This is a singleton class -- both callers and the component implementation should use getInstance() to find the instance.
diff --git a/indra/newview/llaccountingcostmanager.h b/indra/newview/llaccountingcostmanager.h
index 55e1d19f05f45a298f070bdc01c7108efe01d5bc..e2c08faf620a85108eff0ce8f9b5960f9e049d06 100644
--- a/indra/newview/llaccountingcostmanager.h
+++ b/indra/newview/llaccountingcostmanager.h
@@ -56,7 +56,7 @@ class LLAccountingCostObserver
 	LLUUID		mTransactionID;
 };
 //===============================================================================
-class LLAccountingCostManager : public LLSingleton<LLAccountingCostManager>
+class LLAccountingCostManager final : public LLSingleton<LLAccountingCostManager>
 {
 	LLSINGLETON(LLAccountingCostManager);
 
diff --git a/indra/newview/llagentbenefits.h b/indra/newview/llagentbenefits.h
index 48aa6bd8698babcaacb929bf5c1ec621ef4e158b..ba6f4a91982cf332d8adb81626a4828cdb3e7b03 100644
--- a/indra/newview/llagentbenefits.h
+++ b/indra/newview/llagentbenefits.h
@@ -63,7 +63,7 @@ class LLAgentBenefits
 	bool m_initalized;
 };
 
-class LLAgentBenefitsMgr: public LLSingleton<LLAgentBenefitsMgr> 
+class LLAgentBenefitsMgr final : public LLSingleton<LLAgentBenefitsMgr>
 {
 	LLSINGLETON(LLAgentBenefitsMgr);
 	~LLAgentBenefitsMgr();
diff --git a/indra/newview/llagentpicksinfo.h b/indra/newview/llagentpicksinfo.h
index f981e08ff7715c6b7d60e602a9a2873d6b7db27f..7b327e5c21f75fbb7240942b9e089ae169689f2c 100644
--- a/indra/newview/llagentpicksinfo.h
+++ b/indra/newview/llagentpicksinfo.h
@@ -34,7 +34,7 @@ struct LLAvatarPicks;
 /**
  * Class that provides information about Agent Picks
  */
-class LLAgentPicksInfo : public LLSingleton<LLAgentPicksInfo>
+class LLAgentPicksInfo final : public LLSingleton<LLAgentPicksInfo>
 {
 	LLSINGLETON(LLAgentPicksInfo);
 	virtual ~LLAgentPicksInfo();
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index b8b75538a388f01ac7254b87cb12edf348297609..c68887ba562a6c0ec6703d757093a66979907ab9 100644
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -40,7 +40,7 @@ class LLWearableHoldingPattern;
 class LLInventoryCallback;
 class LLOutfitUnLockTimer;
 
-class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
+class LLAppearanceMgr final : public LLSingleton<LLAppearanceMgr>
 {
 	LLSINGLETON(LLAppearanceMgr);
 	~LLAppearanceMgr();
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index c4b1c9d10608a3bb41cde385fa356c8f5b22ca6b..41e4dcfbe70fb7d94b3e727fdf9bf52a7d0ed011 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -396,7 +396,7 @@ const char* const VIEWER_WINDOW_CLASSNAME = "Alchemy";
  * Tasks added to this list will be executed in the next LLAppViewer::idle() iteration.
  * All tasks are executed only once.
  */
-class LLDeferredTaskList: public LLSingleton<LLDeferredTaskList>
+class LLDeferredTaskList final : public LLSingleton<LLDeferredTaskList>
 {
 	LLSINGLETON_EMPTY_CTOR(LLDeferredTaskList);
 	LOG_CLASS(LLDeferredTaskList);
diff --git a/indra/newview/llattachmentsmgr.h b/indra/newview/llattachmentsmgr.h
index d9ffdca7ba64734f6cab7e8ff22486a1f0653bf0..5b4919b216a09235bfb6e674220c309b21747739 100644
--- a/indra/newview/llattachmentsmgr.h
+++ b/indra/newview/llattachmentsmgr.h
@@ -60,7 +60,7 @@ class LLViewerInventoryItem;
 // To handle attachments that never arrive, we forget about requests
 // that exceed a timeout value.
 //--------------------------------------------------------------------------------
-class LLAttachmentsMgr: public LLSingleton<LLAttachmentsMgr>
+class LLAttachmentsMgr final : public LLSingleton<LLAttachmentsMgr>
 {
     LLSINGLETON(LLAttachmentsMgr);
 	virtual ~LLAttachmentsMgr();
diff --git a/indra/newview/llautoreplace.h b/indra/newview/llautoreplace.h
index 23cc3136468575a3ce1dce365cc4cb525c94c28e..395039f02b27a05da76cad535bffe47b8e299bd1 100644
--- a/indra/newview/llautoreplace.h
+++ b/indra/newview/llautoreplace.h
@@ -189,7 +189,7 @@ class LLAutoReplaceSettings
  * See the autoreplaceCallback method for how to add autoreplace functionality
  * to a text entry tool.
  */
-class LLAutoReplace : public LLSingleton<LLAutoReplace>
+class LLAutoReplace final : public LLSingleton<LLAutoReplace>
 {
     LLSINGLETON(LLAutoReplace);
 public:
diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp
index 5c2c39a0e594634421834bc98fa2341c8caf8d01..e8ed61cbfbd0c33c71fb6bfd28d8c73a09e7684b 100644
--- a/indra/newview/llavataractions.cpp
+++ b/indra/newview/llavataractions.cpp
@@ -814,7 +814,7 @@ namespace action_give_inventory
 		}
 	}
 
-	struct LLShareInfo : public LLSingleton<LLShareInfo>
+	struct LLShareInfo final : public LLSingleton<LLShareInfo>
 	{
 		LLSINGLETON_EMPTY_CTOR(LLShareInfo);
 	public:
diff --git a/indra/newview/llavatariconctrl.h b/indra/newview/llavatariconctrl.h
index 7c0e570d899c853187ec710f00256b2591e0e82b..32716753088e87eb0d93087d3b701dc3cf548ed0 100644
--- a/indra/newview/llavatariconctrl.h
+++ b/indra/newview/llavatariconctrl.h
@@ -35,7 +35,7 @@
 
 class LLAvatarName;
 
-class LLAvatarIconIDCache: public LLSingleton<LLAvatarIconIDCache>
+class LLAvatarIconIDCache final : public LLSingleton<LLAvatarIconIDCache>
 {
 	LLSINGLETON(LLAvatarIconIDCache);
 
diff --git a/indra/newview/llavatarpropertiesprocessor.h b/indra/newview/llavatarpropertiesprocessor.h
index 1c981d5b2e8827b4f43f8f59af3e021fbdd511ee..d72aa4a959bb1581a5dda9df6bb79e89dfd13bf1 100644
--- a/indra/newview/llavatarpropertiesprocessor.h
+++ b/indra/newview/llavatarpropertiesprocessor.h
@@ -196,7 +196,7 @@ class LLAvatarPropertiesObserver
 	virtual void processProperties(void* data, EAvatarProcessorType type) = 0;
 };
 
-class LLAvatarPropertiesProcessor
+class LLAvatarPropertiesProcessor final
 	: public LLSingleton<LLAvatarPropertiesProcessor>
 {
 	LLSINGLETON(LLAvatarPropertiesProcessor);
diff --git a/indra/newview/llavatarrenderinfoaccountant.h b/indra/newview/llavatarrenderinfoaccountant.h
index 6b5fa7bc35d21c7b95ebabc06e66c9dd893f0beb..4bde92674f11558c3609f19ca961d4e239f62c0d 100644
--- a/indra/newview/llavatarrenderinfoaccountant.h
+++ b/indra/newview/llavatarrenderinfoaccountant.h
@@ -36,7 +36,7 @@ class LLViewerRegion;
 
 // Class to gather avatar rendering information 
 // that is sent to or fetched from regions.
-class LLAvatarRenderInfoAccountant : public LLSingleton<LLAvatarRenderInfoAccountant>
+class LLAvatarRenderInfoAccountant final : public LLSingleton<LLAvatarRenderInfoAccountant>
 {
 	LLSINGLETON(LLAvatarRenderInfoAccountant);
 	~LLAvatarRenderInfoAccountant();
diff --git a/indra/newview/llavatarrendernotifier.h b/indra/newview/llavatarrendernotifier.h
index ec17b3d9e62117bdeaadb9db4016dd8ba662b051..af9a57ba20f030a5ca3c234523514c4ebb876667 100644
--- a/indra/newview/llavatarrendernotifier.h
+++ b/indra/newview/llavatarrendernotifier.h
@@ -65,7 +65,7 @@ typedef std::list<LLHUDComplexity> hud_complexity_list_t;
 
 // Class to notify user about drastic changes in agent's render weights or if other agents
 // reported that user's agent is too 'heavy' for their settings
-class LLAvatarRenderNotifier : public LLSingleton<LLAvatarRenderNotifier>
+class LLAvatarRenderNotifier final : public LLSingleton<LLAvatarRenderNotifier>
 {
 	LLSINGLETON(LLAvatarRenderNotifier);
 
@@ -112,7 +112,7 @@ class LLAvatarRenderNotifier : public LLSingleton<LLAvatarRenderNotifier>
 };
 
 // Class to notify user about heavy set of HUD
-class LLHUDRenderNotifier : public LLSingleton<LLHUDRenderNotifier>
+class LLHUDRenderNotifier final : public LLSingleton<LLHUDRenderNotifier>
 {
     LLSINGLETON(LLHUDRenderNotifier);
     ~LLHUDRenderNotifier();
diff --git a/indra/newview/llchannelmanager.h b/indra/newview/llchannelmanager.h
index 8abe350196bd9630de2a4e6de8e3f4591d95f423..19dd4f34190c91e140ab74c21c8352d6317b5910 100644
--- a/indra/newview/llchannelmanager.h
+++ b/indra/newview/llchannelmanager.h
@@ -41,7 +41,7 @@ namespace LLNotificationsUI
  * Manager for screen channels.
  * Responsible for instantiating and retrieving screen channels.
  */
-class LLChannelManager : public LLSingleton<LLChannelManager>
+class LLChannelManager final : public LLSingleton<LLChannelManager>
 {
 	LLSINGLETON(LLChannelManager);
 	virtual ~LLChannelManager();
diff --git a/indra/newview/llchicletbar.h b/indra/newview/llchicletbar.h
index 6c521dc1d504f176b0f3cfc367ed10ece092af14..1f299f4e271d48573083c7f77ec7c970bcd70b6b 100644
--- a/indra/newview/llchicletbar.h
+++ b/indra/newview/llchicletbar.h
@@ -34,7 +34,7 @@ class LLIMChiclet;
 class LLLayoutPanel;
 class LLLayoutStack;
 
-class LLChicletBar
+class LLChicletBar final
 	: public LLSingleton<LLChicletBar>
 	, public LLPanel
 {
diff --git a/indra/newview/llcontrolavatar.h b/indra/newview/llcontrolavatar.h
index 18b9ba4794d705abcf3719201197ef132edff060..eac25600ab784e2ec977294dbc69ba287509ff75 100644
--- a/indra/newview/llcontrolavatar.h
+++ b/indra/newview/llcontrolavatar.h
@@ -100,7 +100,7 @@ typedef std::map<LLUUID, S32> signaled_animation_map_t;
 typedef std::map<LLUUID, signaled_animation_map_t> object_signaled_animation_map_t;
 
 // Stores information about previously requested animations, by object id.
-class LLObjectSignaledAnimationMap: public LLSingleton<LLObjectSignaledAnimationMap>
+class LLObjectSignaledAnimationMap final : public LLSingleton<LLObjectSignaledAnimationMap>
 {
     LLSINGLETON_EMPTY_CTOR(LLObjectSignaledAnimationMap); 
 
diff --git a/indra/newview/llconversationlog.h b/indra/newview/llconversationlog.h
index 46e46a3278b6c4c843b286054f56e21bf071bf3a..68b45de6ab0e08b472fbc25cb53f417728c0d120 100644
--- a/indra/newview/llconversationlog.h
+++ b/indra/newview/llconversationlog.h
@@ -107,7 +107,7 @@ class LLConversation
  * To distinguish two conversations with the same sessionID it's also needed to compare their creation date.
  */
 
-class LLConversationLog : public LLSingleton<LLConversationLog>, LLIMSessionObserver
+class LLConversationLog final : public LLSingleton<LLConversationLog>, LLIMSessionObserver
 {
 	LLSINGLETON(LLConversationLog);
 public:
diff --git a/indra/newview/lldebugmessagebox.h b/indra/newview/lldebugmessagebox.h
index 87a0910662aa119a456424f2f6b1aa2f5b774c8c..2fbb78557ce0ae165e75747c72d2233acb485790 100644
--- a/indra/newview/lldebugmessagebox.h
+++ b/indra/newview/lldebugmessagebox.h
@@ -52,7 +52,7 @@ typedef enum e_debug_var_type
 	VAR_TYPE_COUNT
 } EDebugVarType;
 
-class LLDebugVarMessageBox : public LLFloater
+class LLDebugVarMessageBox final : public LLFloater
 {
 protected:
 	LLDebugVarMessageBox(const std::string& title, EDebugVarType var_type, void *var);
diff --git a/indra/newview/lldeferredsounds.h b/indra/newview/lldeferredsounds.h
index 33f02b35215b2e219df508369e62b561b9569fb6..bc029848f9f01ac40005aca553cf3bcdae55d332 100644
--- a/indra/newview/lldeferredsounds.h
+++ b/indra/newview/lldeferredsounds.h
@@ -31,7 +31,7 @@
 
 struct SoundData;
 
-class LLDeferredSounds : public LLSingleton<LLDeferredSounds>
+class LLDeferredSounds final : public LLSingleton<LLDeferredSounds>
 {
 	LLSINGLETON_EMPTY_CTOR(LLDeferredSounds);
 	std::vector<SoundData> soundVector;
diff --git a/indra/newview/lldonotdisturbnotificationstorage.h b/indra/newview/lldonotdisturbnotificationstorage.h
index c6f0bf1ab588ddd63fd52324bdf91f7dcd9d3516..42563181707724f623129cfc9edb33dcc1fc3d7f 100644
--- a/indra/newview/lldonotdisturbnotificationstorage.h
+++ b/indra/newview/lldonotdisturbnotificationstorage.h
@@ -35,7 +35,7 @@
 
 class LLSD;
 
-class LLDoNotDisturbNotificationStorageTimer : public LLEventTimer
+class LLDoNotDisturbNotificationStorageTimer final : public LLEventTimer
 {
 public:
     LLDoNotDisturbNotificationStorageTimer();
@@ -45,7 +45,7 @@ class LLDoNotDisturbNotificationStorageTimer : public LLEventTimer
     BOOL tick();
 };
 
-class LLDoNotDisturbNotificationStorage : public LLParamSingleton<LLDoNotDisturbNotificationStorage>, public LLNotificationStorage
+class LLDoNotDisturbNotificationStorage final : public LLParamSingleton<LLDoNotDisturbNotificationStorage>, public LLNotificationStorage
 {
 	LLSINGLETON(LLDoNotDisturbNotificationStorage);
 	~LLDoNotDisturbNotificationStorage();
diff --git a/indra/newview/llestateinfomodel.h b/indra/newview/llestateinfomodel.h
index d6f00c573cf11c619d9ee62917c6bde60d31938e..8e644ea15d785d65af31156acaaeda893a290633 100644
--- a/indra/newview/llestateinfomodel.h
+++ b/indra/newview/llestateinfomodel.h
@@ -36,7 +36,7 @@ class LLMessageSystem;
 /**
  * Contains estate info, notifies interested parties of its changes.
  */
-class LLEstateInfoModel : public LLSingleton<LLEstateInfoModel>
+class LLEstateInfoModel final : public LLSingleton<LLEstateInfoModel>
 {
 	LLSINGLETON(LLEstateInfoModel);
 	LOG_CLASS(LLEstateInfoModel);
diff --git a/indra/newview/llexperiencelog.h b/indra/newview/llexperiencelog.h
index 5cc5bf685fd0445b122a349ad6055c2cf464ebf8..e91bcfa5a2f22daa2725a8b7433fd52716da57c6 100644
--- a/indra/newview/llexperiencelog.h
+++ b/indra/newview/llexperiencelog.h
@@ -31,7 +31,7 @@
 
 #include "llsingleton.h"
 
-class LLExperienceLog : public LLSingleton<LLExperienceLog>
+class LLExperienceLog final : public LLSingleton<LLExperienceLog>
 {
 	LLSINGLETON(LLExperienceLog);
 public:
diff --git a/indra/newview/llfasttimerview.h b/indra/newview/llfasttimerview.h
index 6ce0ecea52d86f164e8e9c9577bae90c81e56aac..bb151334e35e3f17f37112cbbf1705f9bc4b3810 100644
--- a/indra/newview/llfasttimerview.h
+++ b/indra/newview/llfasttimerview.h
@@ -35,7 +35,7 @@
 
 class LLScrollbar;
 
-class LLFastTimerView : public LLFloater
+class LLFastTimerView final : public LLFloater
 {
 public:
 	LLFastTimerView(const LLSD&);
diff --git a/indra/newview/llfavoritesbar.h b/indra/newview/llfavoritesbar.h
index d93161fd7ac4ae8644095aace2999fc11822b000..02519537eea427798ead9150d4c4b39552a77cbc 100644
--- a/indra/newview/llfavoritesbar.h
+++ b/indra/newview/llfavoritesbar.h
@@ -171,7 +171,7 @@ class LLFavoritesBarCtrl : public LLUICtrl, public LLInventoryObserver
  * It replaced previously implemented solution to store sort index in landmark's name as a "<N>@" prefix.
  * Data are stored in user home directory.
  */
-class LLFavoritesOrderStorage : public LLSingleton<LLFavoritesOrderStorage>
+class LLFavoritesOrderStorage final : public LLSingleton<LLFavoritesOrderStorage>
 	, public LLDestroyClass<LLFavoritesOrderStorage>
 {
 	LLSINGLETON(LLFavoritesOrderStorage);
diff --git a/indra/newview/llfeaturemanager.h b/indra/newview/llfeaturemanager.h
index 42a226cd18f843bdc40ed58e07f30543e58eedc4..e3742f16b47cb2864b0138e42ef6ca3ed9cb59a7 100644
--- a/indra/newview/llfeaturemanager.h
+++ b/indra/newview/llfeaturemanager.h
@@ -95,7 +95,7 @@ class LLFeatureList
 };
 
 
-class LLFeatureManager : public LLFeatureList, public LLSingleton<LLFeatureManager>
+class LLFeatureManager final : public LLFeatureList, public LLSingleton<LLFeatureManager>
 {
 	LLSINGLETON(LLFeatureManager);
 	~LLFeatureManager() {cleanupFeatureTables();}
diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp
index 0b2b4e1d37623ea2a3a48b2532b9871ef667a610..e4b7bb55b28797f116a8a9805ae9b44a8ecb0617 100644
--- a/indra/newview/llfloaterabout.cpp
+++ b/indra/newview/llfloaterabout.cpp
@@ -74,7 +74,7 @@ extern U32 gPacketsIn;
 ///----------------------------------------------------------------------------
 /// Class LLFloaterAbout
 ///----------------------------------------------------------------------------
-class LLFloaterAbout 
+class LLFloaterAbout final
 	: public LLFloater
 {
 	friend class LLFloaterReg;
diff --git a/indra/newview/llfloaterauction.h b/indra/newview/llfloaterauction.h
index c83a11ba8b9af0b2d782cb33b690a30f6bdb85fd..8a3edd90c64196a035f8852c2939be4d16a05f12 100644
--- a/indra/newview/llfloaterauction.h
+++ b/indra/newview/llfloaterauction.h
@@ -42,7 +42,7 @@ class LLParcelSelection;
 class LLParcel;
 class LLViewerRegion;
 
-class LLFloaterAuction : public LLFloater
+class LLFloaterAuction final : public LLFloater
 {
 	friend class LLFloaterReg;
 public:
diff --git a/indra/newview/llfloaterautoreplacesettings.h b/indra/newview/llfloaterautoreplacesettings.h
index 2109aa7026509d476eabe32382085cc0d4d63f44..b54da0e2d7690c74e9f4b121da5e2bc720a23740 100644
--- a/indra/newview/llfloaterautoreplacesettings.h
+++ b/indra/newview/llfloaterautoreplacesettings.h
@@ -35,7 +35,7 @@
 #include <boost/bind.hpp>
 #include "llautoreplace.h"
 
-class LLFloaterAutoReplaceSettings : public LLFloater
+class LLFloaterAutoReplaceSettings final : public LLFloater
 {
 public:
 	LLFloaterAutoReplaceSettings(const LLSD& key);
diff --git a/indra/newview/llfloateravatar.h b/indra/newview/llfloateravatar.h
index cadc5e4028be24ed39f4bec922eaf4f3469bc81d..a965ff54a94cf99832bb74777befcff91fb46fc4 100644
--- a/indra/newview/llfloateravatar.h
+++ b/indra/newview/llfloateravatar.h
@@ -30,7 +30,7 @@
 
 #include "llfloater.h"
 
-class LLFloaterAvatar:
+class LLFloaterAvatar final :
 	public LLFloater
 {
 	friend class LLFloaterReg;
diff --git a/indra/newview/llfloateravatarpicker.h b/indra/newview/llfloateravatarpicker.h
index fbee61b0549ca432893012322f24735e231f4869..4a538ce82d527a33fad1cb1d4507cb0de614bf63 100644
--- a/indra/newview/llfloateravatarpicker.h
+++ b/indra/newview/llfloateravatarpicker.h
@@ -36,7 +36,7 @@
 class LLAvatarName;
 class LLScrollListCtrl;
 
-class LLFloaterAvatarPicker :public LLFloater
+class LLFloaterAvatarPicker final :public LLFloater
 {
 public:
 	typedef boost::signals2::signal<bool(const uuid_vec_t&), boost_boolean_combiner> validate_signal_t;
diff --git a/indra/newview/llfloateravatarrendersettings.h b/indra/newview/llfloateravatarrendersettings.h
index 00ee074f17510690e6924eac0a4021ce1b854a23..38c30fc6280d05b3b146b784f07b32e14ec82089 100644
--- a/indra/newview/llfloateravatarrendersettings.h
+++ b/indra/newview/llfloateravatarrendersettings.h
@@ -33,7 +33,7 @@
 
 class LLNameListCtrl;
 
-class LLFloaterAvatarRenderSettings : public LLFloater
+class LLFloaterAvatarRenderSettings final : public LLFloater
 {
 public:
 
diff --git a/indra/newview/llfloateravatartextures.h b/indra/newview/llfloateravatartextures.h
index 02474a10e15d2fc255e86f59df8d9a23eb6504d8..9d7ac17368dc7c32d25c1f94940c86449cdc4893 100644
--- a/indra/newview/llfloateravatartextures.h
+++ b/indra/newview/llfloateravatartextures.h
@@ -34,7 +34,7 @@
 
 class LLTextureCtrl;
 
-class LLFloaterAvatarTextures : public LLFloater
+class LLFloaterAvatarTextures final : public LLFloater
 {
 public:
 	LLFloaterAvatarTextures(const LLSD& id);
diff --git a/indra/newview/llfloaterbanduration.h b/indra/newview/llfloaterbanduration.h
index e8ec7cc669f245e2d0120949928e0696549f09ed..32c4ccec5ddb844804717daebf669613284d42ed 100644
--- a/indra/newview/llfloaterbanduration.h
+++ b/indra/newview/llfloaterbanduration.h
@@ -29,7 +29,7 @@
 
 #include "llfloater.h"
 
-class LLFloaterBanDuration : public LLFloater
+class LLFloaterBanDuration final : public LLFloater
 {
     typedef boost::function<void(const uuid_vec_t&, const S32 duration)> select_callback_t;
 
diff --git a/indra/newview/llfloaterbeacons.h b/indra/newview/llfloaterbeacons.h
index 47d06962962b550bc48b1372daf6f8701c0ed47d..1318d0d8156801ec7c3cbd5ba5d82eb7e7f2c598 100644
--- a/indra/newview/llfloaterbeacons.h
+++ b/indra/newview/llfloaterbeacons.h
@@ -30,7 +30,7 @@
 
 #include "llfloater.h"
 
-class LLFloaterBeacons : public LLFloater
+class LLFloaterBeacons final : public LLFloater
 {
 	friend class LLFloaterReg;
 	
diff --git a/indra/newview/llfloaterbigpreview.h b/indra/newview/llfloaterbigpreview.h
index 513ed8da6ef65e77c71714ed45faff6586942467..9ff84937aa29822ab80af7299e62d8bd5462cbe6 100644
--- a/indra/newview/llfloaterbigpreview.h
+++ b/indra/newview/llfloaterbigpreview.h
@@ -29,7 +29,7 @@
 
 #include "llfloater.h"
 
-class LLFloaterBigPreview : public LLFloater
+class LLFloaterBigPreview final : public LLFloater
 {
 public:
 	LLFloaterBigPreview(const LLSD& key);
diff --git a/indra/newview/llfloaterbuildoptions.h b/indra/newview/llfloaterbuildoptions.h
index 02c56cb6a9253a9006350b74bdeec89b80620049..8e25df900ac5d5b5a572fb649bc16e8cf8f17a92 100644
--- a/indra/newview/llfloaterbuildoptions.h
+++ b/indra/newview/llfloaterbuildoptions.h
@@ -39,7 +39,7 @@ class LLObjectSelection;
 
 typedef LLSafeHandle<LLObjectSelection> LLObjectSelectionHandle;
 
-class LLFloaterBuildOptions
+class LLFloaterBuildOptions final
 	:	public LLFloater
 {
 public:
diff --git a/indra/newview/llfloaterbulkpermission.h b/indra/newview/llfloaterbulkpermission.h
index 1afc876bba981406d3dde48443505d6add8d7e87..eeb58ddd821859cdc6b4f86f662400822c8ef947 100644
--- a/indra/newview/llfloaterbulkpermission.h
+++ b/indra/newview/llfloaterbulkpermission.h
@@ -36,7 +36,7 @@
 #include "llfloater.h"
 #include "llscrolllistctrl.h"
 
-class LLFloaterBulkPermission : public LLFloater, public LLVOInventoryListener
+class LLFloaterBulkPermission final : public LLFloater, public LLVOInventoryListener
 {
 	friend class LLFloaterReg;
 public:
diff --git a/indra/newview/llfloaterbump.h b/indra/newview/llfloaterbump.h
index d2f9fabdd335d5ff261af301f25e7415421381ca..5cec67b1953af260ddf08e2b873140f8664eb36b 100644
--- a/indra/newview/llfloaterbump.h
+++ b/indra/newview/llfloaterbump.h
@@ -34,7 +34,7 @@
 class LLMeanCollisionData;
 class LLScrollListCtrl;
 
-class LLFloaterBump 
+class LLFloaterBump final
 : public LLFloater
 {
 	friend class LLFloaterReg;
diff --git a/indra/newview/llfloaterbuy.h b/indra/newview/llfloaterbuy.h
index 3ec642dee1652db7334df71716e6c2eb38be0932..5f0f9d1cff5685826de41334d876dd0c5100a060 100644
--- a/indra/newview/llfloaterbuy.h
+++ b/indra/newview/llfloaterbuy.h
@@ -42,7 +42,7 @@ class LLViewerObject;
 class LLSaleInfo;
 class LLObjectSelection;
 
-class LLFloaterBuy
+class LLFloaterBuy final
 : public LLFloater, public LLVOInventoryListener
 {
 public:
diff --git a/indra/newview/llfloaterbuycontents.h b/indra/newview/llfloaterbuycontents.h
index 19393fb6af4b4e60b65020bd172fd01b198c70e1..a4797c3d1908824da46c6c15e246df637d97e3e1 100644
--- a/indra/newview/llfloaterbuycontents.h
+++ b/indra/newview/llfloaterbuycontents.h
@@ -40,7 +40,7 @@
 class LLViewerObject;
 class LLObjectSelection;
 
-class LLFloaterBuyContents
+class LLFloaterBuyContents final
 : public LLFloater, public LLVOInventoryListener
 {
 public:
diff --git a/indra/newview/llfloaterbuycurrency.cpp b/indra/newview/llfloaterbuycurrency.cpp
index 91436e52fe663962ab0328b636740e4add4d3390..f1cc6dfaff470c27f52ee52f66c2253626918b8d 100644
--- a/indra/newview/llfloaterbuycurrency.cpp
+++ b/indra/newview/llfloaterbuycurrency.cpp
@@ -45,7 +45,7 @@
 static const S32 STANDARD_BUY_AMOUNT = 2000;
 static const S32 MINIMUM_BALANCE_AMOUNT = 0;
 
-class LLFloaterBuyCurrencyUI
+class LLFloaterBuyCurrencyUI final
 :	public LLFloater
 {
 public:
diff --git a/indra/newview/llfloaterbuycurrencyhtml.h b/indra/newview/llfloaterbuycurrencyhtml.h
index 6b1fc53f1fc4162253f3bbd1da5f8a9971627ec5..699e6debd8e87fc5301a49fa5fd410248456d6f1 100644
--- a/indra/newview/llfloaterbuycurrencyhtml.h
+++ b/indra/newview/llfloaterbuycurrencyhtml.h
@@ -30,7 +30,7 @@
 #include "llfloater.h"
 #include "llmediactrl.h"
 
-class LLFloaterBuyCurrencyHTML : 
+class LLFloaterBuyCurrencyHTML final :
 	public LLFloater, 
 	public LLViewerMediaObserver
 {
diff --git a/indra/newview/llfloaterbuyland.cpp b/indra/newview/llfloaterbuyland.cpp
index 0a0e5ffc0619e96779b64b7eaa0cc691616e07c5..80d4ab01686caca4d64664329e3f51757f7ff573 100644
--- a/indra/newview/llfloaterbuyland.cpp
+++ b/indra/newview/llfloaterbuyland.cpp
@@ -66,7 +66,7 @@
 // NOTE: This is duplicated in lldatamoney.cpp ...
 const F32 GROUP_LAND_BONUS_FACTOR = 1.1f;
 
-class LLFloaterBuyLandUI
+class LLFloaterBuyLandUI final
 :	public LLFloater
 {
 public:
diff --git a/indra/newview/llfloaterbvhpreview.h b/indra/newview/llfloaterbvhpreview.h
index 20d15d96033b35bf4d5c0e383c4a5d74dcd08253..3c6f442cf6c6bd09d69e514e9b77c80807156cf9 100644
--- a/indra/newview/llfloaterbvhpreview.h
+++ b/indra/newview/llfloaterbvhpreview.h
@@ -68,7 +68,7 @@ class LLPreviewAnimation : public LLViewerDynamicTexture
 	LLPointer<LLVOAvatar>			mDummyAvatar;
 };
 
-class LLFloaterBvhPreview : public LLFloaterNameDesc
+class LLFloaterBvhPreview final : public LLFloaterNameDesc
 {
 public:
 	LLFloaterBvhPreview(const std::string& filename);
diff --git a/indra/newview/llfloatercamera.h b/indra/newview/llfloatercamera.h
index 9440f50c3fd15b6d8787702e6273d0b102f670b7..4fcbe63736bffc62f9c6f3c86f69fa7348436609 100644
--- a/indra/newview/llfloatercamera.h
+++ b/indra/newview/llfloatercamera.h
@@ -45,7 +45,7 @@ enum ECameraControlMode
 	CAMERA_CTRL_MODE_PRESETS
 };
 
-class LLFloaterCamera : public LLFloater
+class LLFloaterCamera final : public LLFloater
 {
 	friend class LLFloaterReg;
 	
diff --git a/indra/newview/llfloatercamerapresets.h b/indra/newview/llfloatercamerapresets.h
index 66430fa399441f67a52aae5944e0ed915b5d8689..86a957596b88fd166ec209ae5180a0511414ba0a 100644
--- a/indra/newview/llfloatercamerapresets.h
+++ b/indra/newview/llfloatercamerapresets.h
@@ -30,7 +30,7 @@
 
 class LLFloaterReg;
 
-class LLFloaterCameraPresets : public LLFloater
+class LLFloaterCameraPresets final : public LLFloater
 {
     friend class LLFloaterReg;
 
diff --git a/indra/newview/llfloatercolorpicker.h b/indra/newview/llfloatercolorpicker.h
index 16974a872ef4f167b2bf4379d150bf405098207d..816d501f900749e5e8932faff773b6d6425f8b0e 100644
--- a/indra/newview/llfloatercolorpicker.h
+++ b/indra/newview/llfloatercolorpicker.h
@@ -40,7 +40,7 @@ class LLCheckBoxCtrl;
 
 //////////////////////////////////////////////////////////////////////////////
 // floater class
-class LLFloaterColorPicker 
+class LLFloaterColorPicker final
 	: public LLFloater
 {
 	public:
diff --git a/indra/newview/llfloaterconversationlog.h b/indra/newview/llfloaterconversationlog.h
index e971330f3d0b6efe54aa49a5cafcbb39c1b618d2..7a0ff93060ed177102a54e3c728b7bf45befac8b 100644
--- a/indra/newview/llfloaterconversationlog.h
+++ b/indra/newview/llfloaterconversationlog.h
@@ -30,7 +30,7 @@
 
 class LLConversationLogList;
 
-class LLFloaterConversationLog : public LLFloater
+class LLFloaterConversationLog final : public LLFloater
 {
 public:
 
diff --git a/indra/newview/llfloaterconversationpreview.h b/indra/newview/llfloaterconversationpreview.h
index 7ca4ee6945cceb3e6230cb7a0231f9f171146574..2e20bf351ed4cf3f5bd032edeb650c66da5b4d24 100644
--- a/indra/newview/llfloaterconversationpreview.h
+++ b/indra/newview/llfloaterconversationpreview.h
@@ -34,7 +34,7 @@ extern const std::string LL_FCP_ACCOUNT_NAME;		//"user_name"
 
 class LLSpinCtrl;
 
-class LLFloaterConversationPreview : public LLFloater
+class LLFloaterConversationPreview final : public LLFloater
 {
 public:
 
diff --git a/indra/newview/llfloaterdeleteprefpreset.h b/indra/newview/llfloaterdeleteprefpreset.h
index 0ab3da7139254b255104d8d5d8e0cb895f81dc60..a1e7667773dee7c0ff2fb957783e1973eee579b1 100644
--- a/indra/newview/llfloaterdeleteprefpreset.h
+++ b/indra/newview/llfloaterdeleteprefpreset.h
@@ -32,7 +32,7 @@
 
 class LLComboBox;
 
-class LLFloaterDeletePrefPreset : public LLFloater
+class LLFloaterDeletePrefPreset final : public LLFloater
 {
 
 public:
diff --git a/indra/newview/llfloaterdestinations.h b/indra/newview/llfloaterdestinations.h
index 85d9b3391e5782dcd263a449a40aef1e24fb2aec..030464002a3c206aa5b43e3d82147a23b2454a38 100644
--- a/indra/newview/llfloaterdestinations.h
+++ b/indra/newview/llfloaterdestinations.h
@@ -30,7 +30,7 @@
 
 #include "llfloater.h"
 
-class LLFloaterDestinations:
+class LLFloaterDestinations final :
 	public LLFloater
 {
 	friend class LLFloaterReg;
diff --git a/indra/newview/llfloaterdisplayname.cpp b/indra/newview/llfloaterdisplayname.cpp
index e6742727d6d369082425908f8f23511250d8d5ff..9bbb4a8a2053b972ad8cdf40d3ee884d391ff4af 100644
--- a/indra/newview/llfloaterdisplayname.cpp
+++ b/indra/newview/llfloaterdisplayname.cpp
@@ -40,7 +40,7 @@
 #include "llagent.h"
 
 
-class LLFloaterDisplayName : public LLFloater
+class LLFloaterDisplayName final : public LLFloater
 {
 public:
 	LLFloaterDisplayName(const LLSD& key);
diff --git a/indra/newview/llfloatereditextdaycycle.h b/indra/newview/llfloatereditextdaycycle.h
index b6e9fdb14f8a635757c954ed20b7da7d34fa2acd..a0eb9d697747643a89cd7e1c8b14a24bfd3e9e33 100644
--- a/indra/newview/llfloatereditextdaycycle.h
+++ b/indra/newview/llfloatereditextdaycycle.h
@@ -50,7 +50,7 @@ typedef std::shared_ptr<LLSettingsBase> LLSettingsBasePtr_t;
 /**
  * Floater for creating or editing a day cycle.
  */
-class LLFloaterEditExtDayCycle : public LLFloater
+class LLFloaterEditExtDayCycle final : public LLFloater
 {
 	LOG_CLASS(LLFloaterEditExtDayCycle);
 
diff --git a/indra/newview/llfloaterenvironmentadjust.h b/indra/newview/llfloaterenvironmentadjust.h
index cb38dbcfa80e3362e4b754b38669be734d0e6696..fc36ceaebd7f64f28964bc1134c3a81a398ea7e0 100644
--- a/indra/newview/llfloaterenvironmentadjust.h
+++ b/indra/newview/llfloaterenvironmentadjust.h
@@ -40,7 +40,7 @@ class LLLineEditor;
 /**
  * Floater container for taking a snapshot of the current environment and making minor adjustments.
  */
-class LLFloaterEnvironmentAdjust : public LLFloater
+class LLFloaterEnvironmentAdjust final : public LLFloater
 {
     LOG_CLASS(LLFloaterEnvironmentAdjust);
 
diff --git a/indra/newview/llfloaterevent.h b/indra/newview/llfloaterevent.h
index ed90055d95587d6ac0d5b3d5a67bb7d99419e2b6..1698e62a912edaa47a94fd0d7981203798e32caf 100644
--- a/indra/newview/llfloaterevent.h
+++ b/indra/newview/llfloaterevent.h
@@ -34,7 +34,7 @@
 class LLMediaCtrl;
 class LLButton;
 
-class LLFloaterEvent : public LLFloater,
+class LLFloaterEvent final : public LLFloater,
                        public LLViewerMediaObserver
 
 {
diff --git a/indra/newview/llfloaterexperiencepicker.h b/indra/newview/llfloaterexperiencepicker.h
index 29054a57db2b47468afa48eb34d10dbdc5a8ca9d..4c7e5655c3a6df81130f931d4c6b9252026dd411 100644
--- a/indra/newview/llfloaterexperiencepicker.h
+++ b/indra/newview/llfloaterexperiencepicker.h
@@ -34,7 +34,7 @@ class LLLineEditor;
 class LLPanelExperiencePicker;
 
 
-class LLFloaterExperiencePicker : public LLFloater
+class LLFloaterExperiencePicker final : public LLFloater
 {
 public:
 
diff --git a/indra/newview/llfloaterexperienceprofile.h b/indra/newview/llfloaterexperienceprofile.h
index 1394418d9118d3e6d8e96f198039c045e3b2ed2b..a9857ec3875715b15c6b12f747919dbca2f75478 100644
--- a/indra/newview/llfloaterexperienceprofile.h
+++ b/indra/newview/llfloaterexperienceprofile.h
@@ -37,7 +37,7 @@ class LLLayoutPanel;
 class LLTextBox;
 class LLComboBox;
 
-class LLFloaterExperienceProfile : public LLFloater
+class LLFloaterExperienceProfile final : public LLFloater
 {
     LOG_CLASS(LLFloaterExperienceProfile);
 public:
diff --git a/indra/newview/llfloaterexperiences.h b/indra/newview/llfloaterexperiences.h
index 6d0559af7cfc18f5544a76c312641d50bf6127ca..53637d46fcb49b76bfa2234c33f840c38b2ffc21 100644
--- a/indra/newview/llfloaterexperiences.h
+++ b/indra/newview/llfloaterexperiences.h
@@ -32,7 +32,7 @@
 
 class LLPanelExperiences;
 
-class LLFloaterExperiences :
+class LLFloaterExperiences final :
 	public LLFloater
 {
 public:
diff --git a/indra/newview/llfloaterfixedenvironment.h b/indra/newview/llfloaterfixedenvironment.h
index 513996c4a393e6f9f6c4c65b8b4fbb4cc7495991..08583dc6c5ed34629273c3be827ac1386a6e275d 100644
--- a/indra/newview/llfloaterfixedenvironment.h
+++ b/indra/newview/llfloaterfixedenvironment.h
@@ -131,7 +131,7 @@ class LLFloaterFixedEnvironment : public LLFloater
     bool                    mIsDirty;
 };
 
-class LLFloaterFixedEnvironmentWater : public LLFloaterFixedEnvironment
+class LLFloaterFixedEnvironmentWater final : public LLFloaterFixedEnvironment
 {
     LOG_CLASS(LLFloaterFixedEnvironmentWater);
 
@@ -151,7 +151,7 @@ class LLFloaterFixedEnvironmentWater : public LLFloaterFixedEnvironment
 private:
 };
 
-class LLFloaterFixedEnvironmentSky : public LLFloaterFixedEnvironment
+class LLFloaterFixedEnvironmentSky final : public LLFloaterFixedEnvironment
 {
     LOG_CLASS(LLFloaterFixedEnvironmentSky);
 
diff --git a/indra/newview/llfloaterfonttest.h b/indra/newview/llfloaterfonttest.h
index fc82d7ef5140586e503c566eae3efe10a81057d4..b5e896c63a1459ccd31235af3a92d6a3af49d823 100644
--- a/indra/newview/llfloaterfonttest.h
+++ b/indra/newview/llfloaterfonttest.h
@@ -30,7 +30,7 @@
 
 #include "llfloater.h"
 
-class LLFloaterFontTest:
+class LLFloaterFontTest final :
 	public LLFloater
 {
 	friend class LLFloaterReg;
diff --git a/indra/newview/llfloaterforgetuser.h b/indra/newview/llfloaterforgetuser.h
index 801fcbb4127b78920c32f98befb248d99f60c3b9..ab683abfe4d48d50a88664deea18e35d46128f7c 100644
--- a/indra/newview/llfloaterforgetuser.h
+++ b/indra/newview/llfloaterforgetuser.h
@@ -31,7 +31,7 @@
 
 class LLScrollListCtrl;
 
-class LLFloaterForgetUser : public LLFloater
+class LLFloaterForgetUser final : public LLFloater
 {
 public:
     LLFloaterForgetUser(const LLSD &key);
diff --git a/indra/newview/llfloatergesture.h b/indra/newview/llfloatergesture.h
index 1d702c6704e17dfed42e634b7e3008c7d0da6e35..89af2c82f5a9a44ce3690a41a4c212016e1e8aab 100644
--- a/indra/newview/llfloatergesture.h
+++ b/indra/newview/llfloatergesture.h
@@ -48,7 +48,7 @@ class LLFloaterGestureInventoryObserver;
 class LLMultiGesture;
 class LLMenuGL;
 
-class LLFloaterGesture
+class LLFloaterGesture final
 :	public LLFloater, LLInventoryFetchDescendentsObserver
 {
 	LOG_CLASS(LLFloaterGesture);
diff --git a/indra/newview/llfloatergodtools.h b/indra/newview/llfloatergodtools.h
index cbaeee705180dbf3cdec361e1017a22e5b059d86..1f8b5ff73342dba2ba0f3b63cdc849284061dbd2 100644
--- a/indra/newview/llfloatergodtools.h
+++ b/indra/newview/llfloatergodtools.h
@@ -51,7 +51,7 @@ class LLTabContainer;
 class LLTextBox;
 class LLMessageSystem;
 
-class LLFloaterGodTools
+class LLFloaterGodTools final
 	: public LLFloater
 {
 	friend class LLFloaterReg;
diff --git a/indra/newview/llfloatergotoline.h b/indra/newview/llfloatergotoline.h
index 058d6017522a278cda32461413d6d44c547d5017..62606a494ff3baa6d146b9b3107e61d2ed00ad72 100644
--- a/indra/newview/llfloatergotoline.h
+++ b/indra/newview/llfloatergotoline.h
@@ -34,7 +34,7 @@
 
 class LLScriptEdCore;
 
-class LLFloaterGotoLine : public LLFloater
+class LLFloaterGotoLine final : public LLFloater
 {
 public:
         LLFloaterGotoLine(LLScriptEdCore* editor_core);
diff --git a/indra/newview/llfloatergridstatus.h b/indra/newview/llfloatergridstatus.h
index 0c3deb7d4c8d7adba06c0e5790d90c2f44b9cba9..8ea3f8e3581c982ca793c76195ed7bba73131501 100644
--- a/indra/newview/llfloatergridstatus.h
+++ b/indra/newview/llfloatergridstatus.h
@@ -35,7 +35,7 @@
 class LLMediaCtrl;
 
 
-class LLFloaterGridStatus :
+class LLFloaterGridStatus final :
     public LLFloaterWebContent
 {
 public:
diff --git a/indra/newview/llfloatergroupbulkban.h b/indra/newview/llfloatergroupbulkban.h
index 5b680a1ba4969541920a8ae728a62153a6895d6a..42317ffbed8122c5aa9cb0534bce1f20bdb47cb4 100644
--- a/indra/newview/llfloatergroupbulkban.h
+++ b/indra/newview/llfloatergroupbulkban.h
@@ -31,7 +31,7 @@
 #include "llfloater.h"
 #include "lluuid.h"
 
-class LLFloaterGroupBulkBan : public LLFloater
+class LLFloaterGroupBulkBan final : public LLFloater
 {
 public:
 	virtual ~LLFloaterGroupBulkBan();
diff --git a/indra/newview/llfloatergroupinvite.h b/indra/newview/llfloatergroupinvite.h
index 657e5711f0fdebf9ac043fdf27fd9b110d0a9447..aa1d0997bfeeea74511d06acb293910a8f71c4e9 100644
--- a/indra/newview/llfloatergroupinvite.h
+++ b/indra/newview/llfloatergroupinvite.h
@@ -31,7 +31,7 @@
 #include "llfloater.h"
 #include "lluuid.h"
 
-class LLFloaterGroupInvite
+class LLFloaterGroupInvite final
 : public LLFloater
 {
 public:
diff --git a/indra/newview/llfloatergroups.h b/indra/newview/llfloatergroups.h
index 1ad27cea19f300d41221ad7a614c706101d873e8..90417e2acd4910f882707386f8a11dec37bd88e6 100644
--- a/indra/newview/llfloatergroups.h
+++ b/indra/newview/llfloatergroups.h
@@ -50,7 +50,7 @@ class LLScrollListCtrl;
 class LLButton;
 class LLFloaterGroupPicker;
 
-class LLFloaterGroupPicker : public LLFloater
+class LLFloaterGroupPicker final : public LLFloater
 {
 public:
 	LLFloaterGroupPicker(const LLSD& seed);
diff --git a/indra/newview/llfloaterhelpbrowser.h b/indra/newview/llfloaterhelpbrowser.h
index bf4f544a14b1cc75cde3d38158a3cb21f2719203..cd0f3bb824ad2707d9ba93ca4aecfbad367c93ac 100644
--- a/indra/newview/llfloaterhelpbrowser.h
+++ b/indra/newview/llfloaterhelpbrowser.h
@@ -33,7 +33,7 @@
 
 class LLMediaCtrl;
 
-class LLFloaterHelpBrowser : 
+class LLFloaterHelpBrowser final :
 	public LLFloater, 
 	public LLViewerMediaObserver
 {
diff --git a/indra/newview/llfloaterhoverheight.h b/indra/newview/llfloaterhoverheight.h
index a643fa2516e941ddc4270b07f46644f14f651a6c..a570ddc94687fa9ae4bb4f8f7e3715cfbebfc1ef 100644
--- a/indra/newview/llfloaterhoverheight.h
+++ b/indra/newview/llfloaterhoverheight.h
@@ -29,7 +29,7 @@
 
 #include "llfloater.h"
 
-class LLFloaterHoverHeight: public LLFloater
+class LLFloaterHoverHeight final : public LLFloater
 {
 public:
 	LLFloaterHoverHeight(const LLSD& key);
diff --git a/indra/newview/llfloaterhud.h b/indra/newview/llfloaterhud.h
index e560d6320b1a47431d009a7f5f6f6a71f71a9b48..b945736298c16d1771edadef0b0b115982b9749f 100644
--- a/indra/newview/llfloaterhud.h
+++ b/indra/newview/llfloaterhud.h
@@ -31,7 +31,7 @@
 
 class LLMediaCtrl;
 
-class LLFloaterHUD : public LLFloater
+class LLFloaterHUD final : public LLFloater
 {
 	friend class LLFloaterReg;
 public:
diff --git a/indra/newview/llfloaterimagepreview.h b/indra/newview/llfloaterimagepreview.h
index d034622c35f46826f85c3fbe19c8209b06388711..4b139f076c8287142db0464d843a8f4f28004858 100644
--- a/indra/newview/llfloaterimagepreview.h
+++ b/indra/newview/llfloaterimagepreview.h
@@ -107,7 +107,7 @@ class LLImagePreviewAvatar : public LLViewerDynamicTexture
 	U32			mTextureName;
 };
 
-class LLFloaterImagePreview : public LLFloaterNameDesc
+class LLFloaterImagePreview final : public LLFloaterNameDesc
 {
 public:
 	LLFloaterImagePreview(const std::string& filename);
diff --git a/indra/newview/llfloaterimcontainer.h b/indra/newview/llfloaterimcontainer.h
index 78b35721112e751970fc5668c9f9cc0faf0f404c..e4690fd59626ac02fb4cf0a2a3dc1ab24e02ba1a 100644
--- a/indra/newview/llfloaterimcontainer.h
+++ b/indra/newview/llfloaterimcontainer.h
@@ -48,7 +48,7 @@ class LLFloaterIMContainer;
 class LLSpeaker;
 class LLSpeakerMgr;
 
-class LLFloaterIMContainer
+class LLFloaterIMContainer final
 	: public LLMultiFloater
 	, public LLIMSessionObserver
 {
diff --git a/indra/newview/llfloaterimnearbychat.h b/indra/newview/llfloaterimnearbychat.h
index f0daacd6a9e7212e572f147f40d3082e7d84a94a..42eb074224e3f81b8c330f11d32186fb23906abc 100644
--- a/indra/newview/llfloaterimnearbychat.h
+++ b/indra/newview/llfloaterimnearbychat.h
@@ -40,7 +40,7 @@
 
 class LLResizeBar;
 
-class LLFloaterIMNearbyChat
+class LLFloaterIMNearbyChat final
 	:	public LLFloaterIMSessionTab
 {
 public:
diff --git a/indra/newview/llfloaterimnearbychathandler.cpp b/indra/newview/llfloaterimnearbychathandler.cpp
index 53e3bf27151c84f4b5ff6205389d4ab3b5b405dd..90331dc006f4d04b2f616973d51fec1364846646 100644
--- a/indra/newview/llfloaterimnearbychathandler.cpp
+++ b/indra/newview/llfloaterimnearbychathandler.cpp
@@ -169,7 +169,7 @@ class LLFloaterIMNearbyChatScreenChannel: public LLScreenChannelBase
 
 // We're deriving from LLToast to be able to override onClose()
 // in order to handle closing nearby chat toasts properly.
-class LLFloaterIMNearbyChatToast : public LLToast
+class LLFloaterIMNearbyChatToast final : public LLToast
 {
 	LOG_CLASS(LLFloaterIMNearbyChatToast);
 public:
diff --git a/indra/newview/llfloaterimsession.h b/indra/newview/llfloaterimsession.h
index 28464fc14bd8e4d774b430cb23f3ba899d980532..a8bf995862549efd47fb5f3bae553719121a39df 100644
--- a/indra/newview/llfloaterimsession.h
+++ b/indra/newview/llfloaterimsession.h
@@ -50,7 +50,7 @@ typedef boost::signals2::signal<void(const LLUUID& session_id)> floater_showed_s
  * Individual IM window that appears at the bottom of the screen,
  * optionally "docked" to the bottom tray.
  */
-class LLFloaterIMSession
+class LLFloaterIMSession final
     : public LLVoiceClientStatusObserver
     , public LLFloaterIMSessionTab
 {
diff --git a/indra/newview/llfloaterinspect.h b/indra/newview/llfloaterinspect.h
index 7f7f7377f05d02aa8b33429fae4e0f24e7674df8..d05f9800c36da2e05ae6e35752358992630cc0e0 100644
--- a/indra/newview/llfloaterinspect.h
+++ b/indra/newview/llfloaterinspect.h
@@ -40,7 +40,7 @@ class LLUICtrl;
 class LLSelectNode;
 // [/RLVa:KB]
 
-class LLFloaterInspect : public LLFloater
+class LLFloaterInspect final : public LLFloater
 {
 	friend class LLFloaterReg;
 public:
diff --git a/indra/newview/llfloaterjoystick.h b/indra/newview/llfloaterjoystick.h
index a1b595138927a1c59354c9f5fb77f694d9e90959..290e73c95ceb544b72bba814796c2b5ffb03c436 100644
--- a/indra/newview/llfloaterjoystick.h
+++ b/indra/newview/llfloaterjoystick.h
@@ -32,7 +32,7 @@
 
 class LLCheckBoxCtrl;
 
-class LLFloaterJoystick : public LLFloater
+class LLFloaterJoystick final : public LLFloater
 {
 	friend class LLFloaterReg;
 
diff --git a/indra/newview/llfloaterlagmeter.h b/indra/newview/llfloaterlagmeter.h
index 929ea40629a36ef4307a84fc7bb811f5461196e9..a05ff2f0892739faf801682fbb2fb5307d84d73c 100644
--- a/indra/newview/llfloaterlagmeter.h
+++ b/indra/newview/llfloaterlagmeter.h
@@ -31,7 +31,7 @@
 
 class LLTextBox;
 
-class LLFloaterLagMeter : public LLFloater
+class LLFloaterLagMeter final : public LLFloater
 {
 	friend class LLFloaterReg;
 	
diff --git a/indra/newview/llfloaterland.h b/indra/newview/llfloaterland.h
index 5d9b411f0458ddbec843bd01259c722eb862e960..81fbea812663df938e2ae9a0f648a505fd86b23a 100644
--- a/indra/newview/llfloaterland.h
+++ b/indra/newview/llfloaterland.h
@@ -69,7 +69,7 @@ class LLParcel;
 class LLPanelLandExperiences;
 class LLPanelLandEnvironment;
 
-class LLFloaterLand
+class LLFloaterLand final
 :	public LLFloater
 {
 	friend class LLFloaterReg;
diff --git a/indra/newview/llfloaterlandholdings.h b/indra/newview/llfloaterlandholdings.h
index d1d510bb40a189007bbbe397b2a366d4d9f8e028..e7b3b31ec222edb8a28d5412885df5cd2f7fc5af 100644
--- a/indra/newview/llfloaterlandholdings.h
+++ b/indra/newview/llfloaterlandholdings.h
@@ -34,7 +34,7 @@ class LLTextBox;
 class LLScrollListCtrl;
 class LLButton;
 
-class LLFloaterLandHoldings
+class LLFloaterLandHoldings final
 :	public LLFloater
 {
 public:
diff --git a/indra/newview/llfloaterlinkreplace.h b/indra/newview/llfloaterlinkreplace.h
index 060773f93e769d3e001bd3ba5a7923299a0fcd90..8c786deadd35bf554d66c227979baf76d14ad6e5 100644
--- a/indra/newview/llfloaterlinkreplace.h
+++ b/indra/newview/llfloaterlinkreplace.h
@@ -78,7 +78,7 @@ class LLInventoryLinkReplaceDropTarget : public LLLineEditor
 };
 
 
-class LLFloaterLinkReplace : public LLFloater, LLEventTimer
+class LLFloaterLinkReplace final : public LLFloater, LLEventTimer
 {
 	LOG_CLASS(LLFloaterLinkReplace);
 
diff --git a/indra/newview/llfloaterloadprefpreset.h b/indra/newview/llfloaterloadprefpreset.h
index 9471f6f1e1aade38c0a6665b815856311c6be049..6716e017109afd7c93b4765aa282c35edb7bd5fb 100644
--- a/indra/newview/llfloaterloadprefpreset.h
+++ b/indra/newview/llfloaterloadprefpreset.h
@@ -32,7 +32,7 @@
 
 class LLComboBox;
 
-class LLFloaterLoadPrefPreset : public LLFloater
+class LLFloaterLoadPrefPreset final : public LLFloater
 {
 
 public:
diff --git a/indra/newview/llfloatermarketplacelistings.h b/indra/newview/llfloatermarketplacelistings.h
index ffc098e28a238ef1de11a9c90d3e0a5fc6811367..c56baac1158330d2138931ca37609f1e6041fa30 100644
--- a/indra/newview/llfloatermarketplacelistings.h
+++ b/indra/newview/llfloatermarketplacelistings.h
@@ -89,7 +89,7 @@ class LLPanelMarketplaceListings : public LLPanel
 // Class LLFloaterMarketplaceListings
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-class LLFloaterMarketplaceListings : public LLFloater
+class LLFloaterMarketplaceListings final : public LLFloater
 {
 public:
 	LLFloaterMarketplaceListings(const LLSD& key);
@@ -146,7 +146,7 @@ class LLFloaterMarketplaceListings : public LLFloater
 //-----------------------------------------------------------------------------
 // LLFloaterAssociateListing
 //-----------------------------------------------------------------------------
-class LLFloaterAssociateListing : public LLFloater
+class LLFloaterAssociateListing final : public LLFloater
 {
 	friend class LLFloaterReg;
 public:
@@ -176,7 +176,7 @@ class LLFloaterAssociateListing : public LLFloater
 // get the validation triggered on the server and display the html report.
 // *TODO : morph into an html/text window using the pattern in llfloatertos
 
-class LLFloaterMarketplaceValidation : public LLFloater
+class LLFloaterMarketplaceValidation final : public LLFloater
 {
 public:
 	LLFloaterMarketplaceValidation(const LLSD& key);
@@ -211,7 +211,7 @@ class LLFloaterMarketplaceValidation : public LLFloater
 // LLFloaterItemProperties
 //-----------------------------------------------------------------------------
 
-class LLFloaterItemProperties : public LLFloater
+class LLFloaterItemProperties final : public LLFloater
 {
 public:
 	LLFloaterItemProperties(const LLSD& key);
diff --git a/indra/newview/llfloatermediasettings.h b/indra/newview/llfloatermediasettings.h
index f93512eb3a6014e3d619c99f1c011f6e5ee043a3..0796a401f1f74bbb6fd51a282273eb7e9c9768b7 100644
--- a/indra/newview/llfloatermediasettings.h
+++ b/indra/newview/llfloatermediasettings.h
@@ -34,7 +34,7 @@ class LLPanelMediaSettingsGeneral;
 class LLPanelMediaSettingsSecurity;
 class LLPanelMediaSettingsPermissions;
 
-class LLFloaterMediaSettings : 
+class LLFloaterMediaSettings final :
 	public LLFloater
 {
 public: 
diff --git a/indra/newview/llfloatermemleak.h b/indra/newview/llfloatermemleak.h
index 86416eaa076a6bb5d2b72940573abaa3d2c0bdea..ba7cf771f2db1a58a065f6b6230a293f8f871f92 100644
--- a/indra/newview/llfloatermemleak.h
+++ b/indra/newview/llfloatermemleak.h
@@ -29,7 +29,7 @@
 
 #include "llfloater.h"
 
-class LLFloaterMemLeak : public LLFloater
+class LLFloaterMemLeak final : public LLFloater
 {
 	friend class LLFloaterReg;
 public:
diff --git a/indra/newview/llfloatermodelpreview.h b/indra/newview/llfloatermodelpreview.h
index 1c66570650b64a977be0533f60dcf0f8f9d09d8f..1230b47d69339ee497cd11990435c499da073cc1 100644
--- a/indra/newview/llfloatermodelpreview.h
+++ b/indra/newview/llfloatermodelpreview.h
@@ -59,7 +59,7 @@ class domMesh;
 class LLMenuButton;
 class LLToggleableMenu;
 
-class LLFloaterModelPreview : public LLFloaterModelUploadBase
+class LLFloaterModelPreview final : public LLFloaterModelUploadBase
 {
 public:
 	
diff --git a/indra/newview/llfloatermyenvironment.h b/indra/newview/llfloatermyenvironment.h
index fea0981590c9e5f5d045416442dbfa88a8df6bcf..909d66f43db0e987406a7be4b5fbd876d0b56f4b 100644
--- a/indra/newview/llfloatermyenvironment.h
+++ b/indra/newview/llfloatermyenvironment.h
@@ -35,7 +35,7 @@
 
 class LLInventoryPanel;
 
-class LLFloaterMyEnvironment
+class LLFloaterMyEnvironment final
 :	public LLFloater, LLInventoryFetchDescendentsObserver
 {
     LOG_CLASS(LLFloaterMyEnvironment);
diff --git a/indra/newview/llfloatermyscripts.h b/indra/newview/llfloatermyscripts.h
index 3c053a0223c7210a2a3b7a75843c4704aa900717..c2f1a6d271d607f365d1e1905689f586bb57ba1c 100644
--- a/indra/newview/llfloatermyscripts.h
+++ b/indra/newview/llfloatermyscripts.h
@@ -30,7 +30,7 @@
 #include "llfloater.h"
 #include "llpanel.h"
 
-class LLFloaterMyScripts : public LLFloater
+class LLFloaterMyScripts final : public LLFloater
 {
 public:
 	LLFloaterMyScripts(const LLSD& seed);
diff --git a/indra/newview/llfloaternamedesc.h b/indra/newview/llfloaternamedesc.h
index 589f470e827906ed230242277ce6ac3a205d3110..1e9fe51c9f2d576acdc37154b861a2f4e780cc2e 100644
--- a/indra/newview/llfloaternamedesc.h
+++ b/indra/newview/llfloaternamedesc.h
@@ -60,21 +60,21 @@ class LLFloaterNameDesc : public LLFloater
 	std::string		mFilename;
 };
 
-class LLFloaterSoundPreview : public LLFloaterNameDesc
+class LLFloaterSoundPreview final : public LLFloaterNameDesc
 {
 public:
 	LLFloaterSoundPreview(const LLSD& filename );
 	virtual BOOL postBuild();
 };
 
-class LLFloaterAnimPreview : public LLFloaterNameDesc
+class LLFloaterAnimPreview final : public LLFloaterNameDesc
 {
 public:
 	LLFloaterAnimPreview(const LLSD& filename );
 	virtual BOOL postBuild();
 };
 
-class LLFloaterScriptPreview : public LLFloaterNameDesc
+class LLFloaterScriptPreview final : public LLFloaterNameDesc
 {
 public:
 	LLFloaterScriptPreview(const LLSD& filename );
diff --git a/indra/newview/llfloaternotificationsconsole.h b/indra/newview/llfloaternotificationsconsole.h
index 4e92b7d857dd693f3e2f2c745d91beef5fa4fa68..41162fc6d6b41ddaa030ecf7ebb572db6d07f21b 100644
--- a/indra/newview/llfloaternotificationsconsole.h
+++ b/indra/newview/llfloaternotificationsconsole.h
@@ -33,7 +33,7 @@
 
 class LLNotification;
 
-class LLFloaterNotificationConsole : 
+class LLFloaterNotificationConsole final :
 	public LLFloater
 {
 	friend class LLFloaterReg;
@@ -58,7 +58,7 @@ class LLFloaterNotificationConsole :
 /*
  * @brief Pop-up debugging view of a generic new notification.
  */
-class LLFloaterNotification : public LLFloater
+class LLFloaterNotification final : public LLFloater
 {
 public:
 	LLFloaterNotification(LLNotification* note);
diff --git a/indra/newview/llfloaterobjectweights.h b/indra/newview/llfloaterobjectweights.h
index 1a2c317bad862171a9303d73b77a501534a60149..5fe05f33fa56688a338c3bf67a33dc8ca9ca6009 100644
--- a/indra/newview/llfloaterobjectweights.h
+++ b/indra/newview/llfloaterobjectweights.h
@@ -41,7 +41,7 @@ class LLTextBox;
  * A functor that checks whether a bounding box for all
  * selected objects crosses a region or parcel bounds.
  */
-struct LLCrossParcelFunctor : public LLSelectedObjectFunctor
+struct LLCrossParcelFunctor final : public LLSelectedObjectFunctor
 {
 	/*virtual*/ bool apply(LLViewerObject* obj);
 
@@ -50,7 +50,7 @@ struct LLCrossParcelFunctor : public LLSelectedObjectFunctor
 };
 
 
-class LLFloaterObjectWeights : public LLFloater, LLAccountingCostObserver
+class LLFloaterObjectWeights final : public LLFloater, LLAccountingCostObserver
 {
 public:
 	LOG_CLASS(LLFloaterObjectWeights);
diff --git a/indra/newview/llfloateroutfitphotopreview.h b/indra/newview/llfloateroutfitphotopreview.h
index a1e7b58abe613ab0445753ec249fa5f1670da1a1..4b68c3b9bf5a93c6f936933cc4548e3cb6dc238e 100644
--- a/indra/newview/llfloateroutfitphotopreview.h
+++ b/indra/newview/llfloateroutfitphotopreview.h
@@ -35,7 +35,7 @@
 class LLComboBox;
 class LLImageRaw;
 
-class LLFloaterOutfitPhotoPreview : public LLPreview
+class LLFloaterOutfitPhotoPreview final : public LLPreview
 {
 public:
 	LLFloaterOutfitPhotoPreview(const LLSD& key);
diff --git a/indra/newview/llfloateroutfitsnapshot.h b/indra/newview/llfloateroutfitsnapshot.h
index bee386ec63bb70ca29708b62375367e048880213..c22bf85826edc11c26d3720a7137ea2c796e8842 100644
--- a/indra/newview/llfloateroutfitsnapshot.h
+++ b/indra/newview/llfloateroutfitsnapshot.h
@@ -36,7 +36,7 @@
 /// Class LLFloaterOutfitSnapshot
 ///----------------------------------------------------------------------------
 
-class LLFloaterOutfitSnapshot : public LLFloaterSnapshotBase
+class LLFloaterOutfitSnapshot final : public LLFloaterSnapshotBase
 {
     LOG_CLASS(LLFloaterOutfitSnapshot);
 
@@ -74,7 +74,7 @@ class LLFloaterOutfitSnapshot : public LLFloaterSnapshotBase
 /// Class LLFloaterOutfitSnapshot::Impl
 ///----------------------------------------------------------------------------
 
-class LLFloaterOutfitSnapshot::Impl : public LLFloaterSnapshotBase::ImplBase
+class LLFloaterOutfitSnapshot::Impl final : public LLFloaterSnapshotBase::ImplBase
 {
     LOG_CLASS(LLFloaterOutfitSnapshot::Impl);
 public:
@@ -102,7 +102,7 @@ class LLFloaterOutfitSnapshot::Impl : public LLFloaterSnapshotBase::ImplBase
 /// Class LLOutfitSnapshotFloaterView
 ///----------------------------------------------------------------------------
 
-class LLOutfitSnapshotFloaterView : public LLFloaterView
+class LLOutfitSnapshotFloaterView final : public LLFloaterView
 {
 public:
     struct Params
diff --git a/indra/newview/llfloaterpathfindingcharacters.h b/indra/newview/llfloaterpathfindingcharacters.h
index 4021f4f119ac4f1bb6c0d3342ca8ce0261357665..6f5eca0a0251d04aa3efdba9f8b2f2036a72a0c1 100644
--- a/indra/newview/llfloaterpathfindingcharacters.h
+++ b/indra/newview/llfloaterpathfindingcharacters.h
@@ -39,7 +39,7 @@ class LLQuaternion;
 class LLSD;
 class LLVector3;
 
-class LLFloaterPathfindingCharacters : public LLFloaterPathfindingObjects
+class LLFloaterPathfindingCharacters final : public LLFloaterPathfindingObjects
 {
 public:
 	virtual void                                    onClose(bool pIsAppQuitting);
diff --git a/indra/newview/llfloaterpathfindingconsole.h b/indra/newview/llfloaterpathfindingconsole.h
index e999e57741ff4a37bdee43aa429754d0149e1c5c..c728db91ba0c7d874c7cb30ef40ee67cbfdd7b3e 100644
--- a/indra/newview/llfloaterpathfindingconsole.h
+++ b/indra/newview/llfloaterpathfindingconsole.h
@@ -49,7 +49,7 @@ class LLTabContainer;
 class LLTextBase;
 class LLToolset;
 
-class LLFloaterPathfindingConsole
+class LLFloaterPathfindingConsole final
 :	public LLFloater
 {
 	friend class LLFloaterReg;
diff --git a/indra/newview/llfloaterpathfindinglinksets.h b/indra/newview/llfloaterpathfindinglinksets.h
index 7149da9215f9258a7c48492dce4650f4830f73d9..ada0b92c28431f444b62e009991cd432563866d7 100644
--- a/indra/newview/llfloaterpathfindinglinksets.h
+++ b/indra/newview/llfloaterpathfindinglinksets.h
@@ -43,7 +43,7 @@ class LLTextBase;
 class LLUICtrl;
 class LLVector3;
 
-class LLFloaterPathfindingLinksets : public LLFloaterPathfindingObjects
+class LLFloaterPathfindingLinksets final : public LLFloaterPathfindingObjects
 {
 public:
 	static void  openLinksetsWithSelectedObjects();
diff --git a/indra/newview/llfloaterpay.cpp b/indra/newview/llfloaterpay.cpp
index 87973c2286e3863051eaccadfd18ef49649741b9..477ae8ab6f8e8c390add530764dda2c996fdcb00 100644
--- a/indra/newview/llfloaterpay.cpp
+++ b/indra/newview/llfloaterpay.cpp
@@ -78,7 +78,7 @@ typedef boost::shared_ptr<LLGiveMoneyInfo> give_money_ptr;
 /// Class LLFloaterPay
 ///----------------------------------------------------------------------------
 
-class LLFloaterPay : public LLFloater
+class LLFloaterPay final : public LLFloater
 {
 public:
 	LLFloaterPay(const LLSD& key);
diff --git a/indra/newview/llfloaterperms.h b/indra/newview/llfloaterperms.h
index 02359a256ec72b4454cd78562e610fbaaa94d85c..d30b82e0835166a4eecf99b7040c8c22dab22d98 100644
--- a/indra/newview/llfloaterperms.h
+++ b/indra/newview/llfloaterperms.h
@@ -32,7 +32,7 @@
 #include "lleventcoro.h"
 #include "llcoros.h"
 
-class LLFloaterPerms : public LLFloater
+class LLFloaterPerms final : public LLFloater
 {
 	friend class LLFloaterReg;
 	
@@ -50,7 +50,7 @@ class LLFloaterPerms : public LLFloater
 
 };
 
-class LLFloaterPermsDefault : public LLFloater
+class LLFloaterPermsDefault final : public LLFloater
 {
 	friend class LLFloaterReg;
 
diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h
index c06227cf4617995271ff91f2fb817aef6e41f7da..e30c0931c109dfbde2a8ec79d95e3fcbeef4e3cf 100644
--- a/indra/newview/llfloaterpreference.h
+++ b/indra/newview/llfloaterpreference.h
@@ -69,7 +69,7 @@ typedef enum
 	} EGraphicsSettings;
 
 // Floater to control preferences (display, audio, bandwidth, general.
-class LLFloaterPreference : public LLFloater, public LLAvatarPropertiesObserver, public LLConversationLogObserver
+class LLFloaterPreference final : public LLFloater, public LLAvatarPropertiesObserver, public LLConversationLogObserver
 {
 public: 
 	LLFloaterPreference(const LLSD& key);
@@ -287,7 +287,7 @@ class LLPanelPreference : public LLPanel
 	LOG_CLASS(LLPanelPreference);
 };
 
-class LLPanelPreferenceGraphics : public LLPanelPreference
+class LLPanelPreferenceGraphics final : public LLPanelPreference
 {
 public:
 	BOOL postBuild();
@@ -308,7 +308,7 @@ class LLPanelPreferenceGraphics : public LLPanelPreference
 	LOG_CLASS(LLPanelPreferenceGraphics);
 };
 
-class LLFloaterPreferenceGraphicsAdvanced : public LLFloater
+class LLFloaterPreferenceGraphicsAdvanced final : public LLFloater
 {
   public: 
 	LLFloaterPreferenceGraphicsAdvanced(const LLSD& key);
@@ -345,7 +345,7 @@ class LLAvatarComplexityControls
 	LOG_CLASS(LLAvatarComplexityControls);
 };
 
-class LLFloaterPreferenceProxy : public LLFloater
+class LLFloaterPreferenceProxy final : public LLFloater
 {
 public: 
 	LLFloaterPreferenceProxy(const LLSD& key);
diff --git a/indra/newview/llfloaterpreferenceviewadvanced.h b/indra/newview/llfloaterpreferenceviewadvanced.h
index 4619fdaab16b9f79aaea2071b04c5c5252556adb..ef33ee388cede9e8cbc61166c20d781cb6623953 100644
--- a/indra/newview/llfloaterpreferenceviewadvanced.h
+++ b/indra/newview/llfloaterpreferenceviewadvanced.h
@@ -30,7 +30,7 @@
 #include "llcontrol.h"
 #include "llfloater.h"
 
-class LLFloaterPreferenceViewAdvanced
+class LLFloaterPreferenceViewAdvanced final
 :	public LLFloater
 {
 	friend class LLFloaterReg;
diff --git a/indra/newview/llfloaterpreviewtrash.h b/indra/newview/llfloaterpreviewtrash.h
index 465c0c677fc6db4089171e2ea55110265c295052..922a0f435d128172dd73838ffb0a39687ae0778f 100644
--- a/indra/newview/llfloaterpreviewtrash.h
+++ b/indra/newview/llfloaterpreviewtrash.h
@@ -30,7 +30,7 @@
 
 #include "llfloater.h"
 
-class LLFloaterPreviewTrash
+class LLFloaterPreviewTrash final
 : public LLFloater
 {
 public:
diff --git a/indra/newview/llfloaterprofile.h b/indra/newview/llfloaterprofile.h
index 22ed47e54f9bca99246f3bd04bd8dc9ab38dbfe5..259a752fbf2929269063e282e1ffea65d952487e 100644
--- a/indra/newview/llfloaterprofile.h
+++ b/indra/newview/llfloaterprofile.h
@@ -32,7 +32,7 @@
 
 class LLPanelProfile;
 
-class LLFloaterProfile : public LLFloater
+class LLFloaterProfile final : public LLFloater
 {
     LOG_CLASS(LLFloaterProfile);
 public:
diff --git a/indra/newview/llfloaterproperties.h b/indra/newview/llfloaterproperties.h
index aa3fcec3374d99d1ba5de336aaccb7140c3dd3ee..755d37a10789f56882d11104745aeabcf56ba309 100644
--- a/indra/newview/llfloaterproperties.h
+++ b/indra/newview/llfloaterproperties.h
@@ -44,7 +44,7 @@ class LLTextBox;
 
 class LLPropertiesObserver;
 
-class LLFloaterProperties : public LLFloater
+class LLFloaterProperties final : public LLFloater
 {
 public:
 	LLFloaterProperties(const LLUUID& item_id);
@@ -89,7 +89,7 @@ class LLFloaterProperties : public LLFloater
 	LLPropertiesObserver* mPropertiesObserver;
 };
 
-class LLMultiProperties : public LLMultiFloater
+class LLMultiProperties final : public LLMultiFloater
 {
 public:
 	LLMultiProperties();
diff --git a/indra/newview/llfloaterregiondebugconsole.h b/indra/newview/llfloaterregiondebugconsole.h
index f55d9649243d1b8f117f441f9ca2c0cde5340c45..291968cec31bb3df83659e9dd662de5e6d61359a 100644
--- a/indra/newview/llfloaterregiondebugconsole.h
+++ b/indra/newview/llfloaterregiondebugconsole.h
@@ -37,7 +37,7 @@ class LLTextEditor;
 typedef boost::signals2::signal<
 	void (const std::string& output)> console_reply_signal_t;
 
-class LLFloaterRegionDebugConsole : public LLFloater
+class LLFloaterRegionDebugConsole final : public LLFloater
 {
 public:
 	LLFloaterRegionDebugConsole(LLSD const & key);
diff --git a/indra/newview/llfloaterregioninfo.h b/indra/newview/llfloaterregioninfo.h
index 0372ba2543e456a0150a4387bce90cf5bf257208..211043154403e1efb07bf67553e1c06b54a9c41e 100644
--- a/indra/newview/llfloaterregioninfo.h
+++ b/indra/newview/llfloaterregioninfo.h
@@ -70,7 +70,7 @@ class LLPanelRegionEnvironment;
 
 class LLEventTimer;
 
-class LLFloaterRegionInfo : public LLFloater
+class LLFloaterRegionInfo final : public LLFloater
 {
 	friend class LLFloaterReg;
 public:
diff --git a/indra/newview/llfloaterregionrestarting.h b/indra/newview/llfloaterregionrestarting.h
index 46416db2c883d539c722637c0ce9717f34c0ae18..a1fb1a54e058d28b7171f1c25b0dcd7c38f5e637 100644
--- a/indra/newview/llfloaterregionrestarting.h
+++ b/indra/newview/llfloaterregionrestarting.h
@@ -31,7 +31,7 @@
 #include "lltextbox.h"
 #include "lleventtimer.h"
 
-class LLFloaterRegionRestarting : public LLFloater,  public LLEventTimer
+class LLFloaterRegionRestarting final : public LLFloater,  public LLEventTimer
 {
 	friend class LLFloaterReg;
 
diff --git a/indra/newview/llfloaterreporter.h b/indra/newview/llfloaterreporter.h
index c678df7155ae423466e2296457de673461ed7c2d..63ad22beb682ade05dec1d0f89cc06b850f68311 100644
--- a/indra/newview/llfloaterreporter.h
+++ b/indra/newview/llfloaterreporter.h
@@ -74,7 +74,7 @@ enum EReportType
 	CS_REQUEST_REPORT = 4
 };
 
-class LLFloaterReporter
+class LLFloaterReporter final
 :	public LLFloater
 {
 public:
diff --git a/indra/newview/llfloatersaveprefpreset.h b/indra/newview/llfloatersaveprefpreset.h
index ae58180e7f46dbc1cc0a8c8f93f45b39ca911120..78591ab1337de36ea653a4e3ff1110ea02ae2630 100644
--- a/indra/newview/llfloatersaveprefpreset.h
+++ b/indra/newview/llfloatersaveprefpreset.h
@@ -32,7 +32,7 @@
 
 class LLComboBox;
 
-class LLFloaterSavePrefPreset : public LLFloater
+class LLFloaterSavePrefPreset final : public LLFloater
 {
 
 public:
diff --git a/indra/newview/llfloatersceneloadstats.h b/indra/newview/llfloatersceneloadstats.h
index aa414bf5448165447226d7318f5cfa22184fd829..cf0ad28244728e0f72ee417512a1d038e6b5f57e 100644
--- a/indra/newview/llfloatersceneloadstats.h
+++ b/indra/newview/llfloatersceneloadstats.h
@@ -29,7 +29,7 @@
 
 #include "llfloater.h"
 
-class LLFloaterSceneLoadStats : public LLFloater
+class LLFloaterSceneLoadStats final : public LLFloater
 {
 	friend class LLFloaterReg;
 private:
diff --git a/indra/newview/llfloaterscriptdebug.h b/indra/newview/llfloaterscriptdebug.h
index 8c08b234f39b4fcfb3277e4c74689b1bf59958b8..8199386093be879b25cbcff2426cd3a7db8858ff 100644
--- a/indra/newview/llfloaterscriptdebug.h
+++ b/indra/newview/llfloaterscriptdebug.h
@@ -32,7 +32,7 @@
 class LLTextEditor;
 class LLUUID;
 
-class LLFloaterScriptDebug : public LLMultiFloater
+class LLFloaterScriptDebug final : public LLMultiFloater
 {
 public:
 	LLFloaterScriptDebug(const LLSD& key);
@@ -51,7 +51,7 @@ class LLFloaterScriptDebug : public LLMultiFloater
 	static LLFloaterScriptDebug*	sInstance;
 };
 
-class LLFloaterScriptDebugOutput : public LLFloater
+class LLFloaterScriptDebugOutput final : public LLFloater
 {
 public:
 	LLFloaterScriptDebugOutput(const LLSD& object_id);
diff --git a/indra/newview/llfloaterscriptedprefs.h b/indra/newview/llfloaterscriptedprefs.h
index 31df897aac71bbc466a0fc0592e320f36b3dc42c..ee04081335af38dfd3f137a383909ee848b9a206 100644
--- a/indra/newview/llfloaterscriptedprefs.h
+++ b/indra/newview/llfloaterscriptedprefs.h
@@ -33,7 +33,7 @@
 class LLScriptEditor;
 class LLUICtrl;
 
-class LLFloaterScriptEdPrefs : public LLFloater
+class LLFloaterScriptEdPrefs final : public LLFloater
 {
 public:
 	LLFloaterScriptEdPrefs(const LLSD& key);
diff --git a/indra/newview/llfloaterscriptlimits.h b/indra/newview/llfloaterscriptlimits.h
index d2192f9d01e580baecf1e3bfa6f6fc7cba52e717..7b00fae5fa84805548c9101b25649636e662a166 100644
--- a/indra/newview/llfloaterscriptlimits.h
+++ b/indra/newview/llfloaterscriptlimits.h
@@ -42,7 +42,7 @@ class LLAvatarName;
 
 class LLPanelScriptLimitsRegionMemory;
 
-class LLFloaterScriptLimits : public LLFloater
+class LLFloaterScriptLimits final : public LLFloater
 {
 	friend class LLFloaterReg;
 public:
diff --git a/indra/newview/llfloatersearch.h b/indra/newview/llfloatersearch.h
index 35b268e1b28f0774fdcfde386ea1de0e4db14582..0f9bf2f54d038a3bf53bc981f8b809f5c40c4af4 100644
--- a/indra/newview/llfloatersearch.h
+++ b/indra/newview/llfloatersearch.h
@@ -42,7 +42,7 @@ class LLMediaCtrl;
 /// web page. The browser control is explicitly marked as "trusted"
 /// so that the user can click on teleport links in search results.
 ///
-class LLFloaterSearch : 
+class LLFloaterSearch final :
 	public LLFloaterWebContent
 {
 public:
diff --git a/indra/newview/llfloatersellland.cpp b/indra/newview/llfloatersellland.cpp
index b139e5daf5c290ed48ea2f81c5a374305a3390d4..19b5548b3f1c505e36b56ccf724bb1b2ca8cc468 100644
--- a/indra/newview/llfloatersellland.cpp
+++ b/indra/newview/llfloatersellland.cpp
@@ -51,7 +51,7 @@ void send_parcel_select_objects(S32 parcel_local_id, U32 return_type,
 
 enum Badge { BADGE_OK, BADGE_NOTE, BADGE_WARN, BADGE_ERROR };
 
-class LLFloaterSellLandUI
+class LLFloaterSellLandUI final
 :	public LLFloater
 {
 public:
diff --git a/indra/newview/llfloatersettingsdebug.h b/indra/newview/llfloatersettingsdebug.h
index f07e0557e3d7c8b5f413bfcd35920d9883a66f2d..ad7352a56988c1035c7f69cd3ac5e16c0d5ebea7 100644
--- a/indra/newview/llfloatersettingsdebug.h
+++ b/indra/newview/llfloatersettingsdebug.h
@@ -30,7 +30,7 @@
 #include "llcontrol.h"
 #include "llfloater.h"
 
-class LLFloaterSettingsDebug 
+class LLFloaterSettingsDebug final
 :	public LLFloater
 {
 	friend class LLFloaterReg;
diff --git a/indra/newview/llfloatersidepanelcontainer.h b/indra/newview/llfloatersidepanelcontainer.h
index 5c37a10c38f8e3c397c3d2312990da3aae33ffab..b481652181d91a2b4344319fa4c818391537d585 100644
--- a/indra/newview/llfloatersidepanelcontainer.h
+++ b/indra/newview/llfloatersidepanelcontainer.h
@@ -40,7 +40,7 @@
  * drag an inventory item from My Inventory window to a docked IM window,
  * i.e. share the item (see VWR-22891).
  */
-class LLFloaterSidePanelContainer : public LLFloater
+class LLFloaterSidePanelContainer final : public LLFloater
 {
 private:
 	static const std::string sMainPanelName;
diff --git a/indra/newview/llfloatersnapshot.h b/indra/newview/llfloatersnapshot.h
index bcba14d63d107cec93b113a321fd57628724234b..8683f4fc7cbf1c28119c49378510b537140e53d4 100644
--- a/indra/newview/llfloatersnapshot.h
+++ b/indra/newview/llfloatersnapshot.h
@@ -137,7 +137,7 @@ class LLFloaterSnapshotBase::ImplBase
 	EStatus mStatus;
 };
 
-class LLFloaterSnapshot : public LLFloaterSnapshotBase
+class LLFloaterSnapshot final : public LLFloaterSnapshotBase
 {
 	LOG_CLASS(LLFloaterSnapshot);
 
@@ -171,7 +171,7 @@ class LLFloaterSnapshot : public LLFloaterSnapshotBase
 /// Class LLFloaterSnapshot::Impl
 ///----------------------------------------------------------------------------
 
-class LLFloaterSnapshot::Impl : public LLFloaterSnapshotBase::ImplBase
+class LLFloaterSnapshot::Impl final : public LLFloaterSnapshotBase::ImplBase
 {
 	LOG_CLASS(LLFloaterSnapshot::Impl);
 public:
@@ -211,7 +211,7 @@ class LLFloaterSnapshot::Impl : public LLFloaterSnapshotBase::ImplBase
 	void setFinished(bool finished, bool ok = true, const std::string& msg = LLStringUtil::null);
 };
 
-class LLSnapshotFloaterView : public LLFloaterView
+class LLSnapshotFloaterView final : public LLFloaterView
 {
 public:
 	struct Params 
diff --git a/indra/newview/llfloaterspellchecksettings.h b/indra/newview/llfloaterspellchecksettings.h
index f9bbefafb744859dd51f6bca6ecc4bdada339fb8..200cbb203de3866695fa1d2bae018740a9c1fb7b 100644
--- a/indra/newview/llfloaterspellchecksettings.h
+++ b/indra/newview/llfloaterspellchecksettings.h
@@ -29,7 +29,7 @@
 
 #include "llfloater.h"
 
-class LLFloaterSpellCheckerSettings : public LLFloater
+class LLFloaterSpellCheckerSettings final : public LLFloater
 {
 public:
 	LLFloaterSpellCheckerSettings(const LLSD& key);
@@ -47,7 +47,7 @@ class LLFloaterSpellCheckerSettings : public LLFloater
 	void refreshDictionaries(bool from_settings);
 };
 
-class LLFloaterSpellCheckerImport : public LLFloater
+class LLFloaterSpellCheckerImport final : public LLFloater
 {
 public:
 	LLFloaterSpellCheckerImport(const LLSD& key);
diff --git a/indra/newview/llfloatertelehub.h b/indra/newview/llfloatertelehub.h
index 9b9b11fb296ef96ecf135a9383f7a75dafebcf58..505f7d22628be5829f4e3b8a810d0ba3b2c12d71 100644
--- a/indra/newview/llfloatertelehub.h
+++ b/indra/newview/llfloatertelehub.h
@@ -35,7 +35,7 @@ class LLObjectSelection;
 
 const S32 MAX_SPAWNPOINTS_PER_TELEHUB = 16;
 
-class LLFloaterTelehub : public LLFloater
+class LLFloaterTelehub final : public LLFloater
 {
 public:
 	LLFloaterTelehub(const LLSD& key);
diff --git a/indra/newview/llfloatertestinspectors.h b/indra/newview/llfloatertestinspectors.h
index 1724a2e076eeec99b2d9592b18375f78cb7bdafd..f80daa499c7fa7a67fdf67bf96aefeb97ec8287b 100644
--- a/indra/newview/llfloatertestinspectors.h
+++ b/indra/newview/llfloatertestinspectors.h
@@ -29,7 +29,7 @@
 
 class LLSD;
 
-class LLFloaterTestInspectors : public LLFloater
+class LLFloaterTestInspectors final : public LLFloater
 {
 	friend class LLFloaterReg;
 public:
diff --git a/indra/newview/llfloatertestlistview.h b/indra/newview/llfloatertestlistview.h
index 0d4c7eb79381a8763cde84ef991af8145bd9e08d..0d1d2975d2e1f9b0aa54ca6b1b34d409aa349ddd 100644
--- a/indra/newview/llfloatertestlistview.h
+++ b/indra/newview/llfloatertestlistview.h
@@ -30,7 +30,7 @@
 
 class LLSD;
 
-class LLFloaterTestListView : public LLFloater
+class LLFloaterTestListView final : public LLFloater
 {
 	friend class LLFloaterReg;
 
diff --git a/indra/newview/llfloatertexturefetchdebugger.h b/indra/newview/llfloatertexturefetchdebugger.h
index 096ad88e07e5c1520f5fd28e5b1e5526937806ee..2afd6a736bf92ec2334c270920ff5859870f8aaf 100644
--- a/indra/newview/llfloatertexturefetchdebugger.h
+++ b/indra/newview/llfloatertexturefetchdebugger.h
@@ -30,7 +30,7 @@
 #include "llfloater.h"
 class LLTextureFetchDebugger;
 
-class LLFloaterTextureFetchDebugger : public LLFloater
+class LLFloaterTextureFetchDebugger final : public LLFloater
 {
 	friend class LLFloaterReg;
 public:
diff --git a/indra/newview/llfloatertools.h b/indra/newview/llfloatertools.h
index ffff564ad41b03fd5d5cc2101c6402edbc6be17b..183201fc7d01a130ad0542cdc8a8ece6b3585f1b 100644
--- a/indra/newview/llfloatertools.h
+++ b/indra/newview/llfloatertools.h
@@ -52,7 +52,7 @@ class LLLandImpactsObserver;
 
 typedef LLSafeHandle<LLObjectSelection> LLObjectSelectionHandle;
 
-class LLFloaterTools
+class LLFloaterTools final
 : public LLFloater
 {
 public:
diff --git a/indra/newview/llfloatertopobjects.h b/indra/newview/llfloatertopobjects.h
index 3138249c7ae1331b42226032f07f5baf25f29b63..8c7fd41916c4973df9557ab02965172fe9c92684 100644
--- a/indra/newview/llfloatertopobjects.h
+++ b/indra/newview/llfloatertopobjects.h
@@ -47,7 +47,7 @@ enum LAND_STAT_REPORT_TYPE
 	STAT_REPORT_TOP_COLLIDERS
 };
 
-class LLFloaterTopObjects : public LLFloater
+class LLFloaterTopObjects final : public LLFloater
 {
 	friend class LLFloaterReg;
 public:
diff --git a/indra/newview/llfloatertoybox.h b/indra/newview/llfloatertoybox.h
index 10aee0e6f54d0985d4fcc871952a348124a8fb01..75c129fe6a6ceb68abee09f4096c49e45497921a 100644
--- a/indra/newview/llfloatertoybox.h
+++ b/indra/newview/llfloatertoybox.h
@@ -34,7 +34,7 @@ class LLButton;
 class LLToolBar;
 
 
-class LLFloaterToybox : public LLFloater
+class LLFloaterToybox final : public LLFloater
 {
 public:
 	LLFloaterToybox(const LLSD& key);
diff --git a/indra/newview/llfloatertranslationsettings.h b/indra/newview/llfloatertranslationsettings.h
index 2a15eacdedafa50c8559f7442211ad929b2e4e48..ff7ad9c50e462af22330b86192ef36ae4200c981 100644
--- a/indra/newview/llfloatertranslationsettings.h
+++ b/indra/newview/llfloatertranslationsettings.h
@@ -35,7 +35,7 @@ class LLComboBox;
 class LLLineEditor;
 class LLRadioGroup;
 
-class LLFloaterTranslationSettings : public LLFloater
+class LLFloaterTranslationSettings final : public LLFloater
 {
 public:
 	LLFloaterTranslationSettings(const LLSD& key);
diff --git a/indra/newview/llfloateruipreview.cpp b/indra/newview/llfloateruipreview.cpp
index e876634c41ac49424a0e7565ff1b930228d54fe7..6872b2f1f703032def28d8f4add6e30f2ef5569b 100644
--- a/indra/newview/llfloateruipreview.cpp
+++ b/indra/newview/llfloateruipreview.cpp
@@ -130,7 +130,7 @@ class LLOverlapPanel : public LLPanel
 };
 
 
-class LLFloaterUIPreview : public LLFloater
+class LLFloaterUIPreview final : public LLFloater
 {
 public:
 	// Setup
@@ -263,7 +263,7 @@ class LLFadeEventTimer : public LLEventTimer
 
 // Implementation of previewed floater
 // Used to override draw and mouse handler
-class LLPreviewedFloater : public LLFloater
+class LLPreviewedFloater final : public LLFloater
 {
 public:
 	LLPreviewedFloater(LLFloaterUIPreview* floater, const Params& params)
diff --git a/indra/newview/llfloaterurlentry.h b/indra/newview/llfloaterurlentry.h
index 20f4604907acceb12b84e2eb0b36906782841751..0f53029ff2fb4f3eadc4b3c9929b26d02d13f49c 100644
--- a/indra/newview/llfloaterurlentry.h
+++ b/indra/newview/llfloaterurlentry.h
@@ -35,7 +35,7 @@
 class LLLineEditor;
 class LLComboBox;
 
-class LLFloaterURLEntry : public LLFloater
+class LLFloaterURLEntry final : public LLFloater
 {
 public:
 	// Can only be shown by LLPanelLandMedia, and pushes data back into
diff --git a/indra/newview/llfloatervoiceeffect.h b/indra/newview/llfloatervoiceeffect.h
index 4d432c46ccc5bdc0447d780e57bcd6f9f84b4256..6db183b9be128afaecc7d5ae5e89d8a3d562c02c 100644
--- a/indra/newview/llfloatervoiceeffect.h
+++ b/indra/newview/llfloatervoiceeffect.h
@@ -34,7 +34,7 @@
 class LLButton;
 class LLScrollListCtrl;
 
-class LLFloaterVoiceEffect
+class LLFloaterVoiceEffect final
 	: public LLFloater
 	, public LLVoiceEffectObserver
 {
diff --git a/indra/newview/llfloaterwhitelistentry.h b/indra/newview/llfloaterwhitelistentry.h
index deab49c52382aafc16b687e19ac785f820ad6cda..749faf7ee440168d6e2d1840561b8ba303bd5d22 100644
--- a/indra/newview/llfloaterwhitelistentry.h
+++ b/indra/newview/llfloaterwhitelistentry.h
@@ -31,7 +31,7 @@
 
 class LLLineEditor;
 
-class LLFloaterWhiteListEntry : 
+class LLFloaterWhiteListEntry final :
 	public LLFloater
 {
 	public:
diff --git a/indra/newview/llfloaterwindowsize.h b/indra/newview/llfloaterwindowsize.h
index a71e5e273c9252f77d03cc1b912f7196c2b4d3f0..73650ad1086284c7a0fc24c9551308da5b1d5500 100644
--- a/indra/newview/llfloaterwindowsize.h
+++ b/indra/newview/llfloaterwindowsize.h
@@ -31,7 +31,7 @@
 ///----------------------------------------------------------------------------
 /// Class LLFloaterWindowSize
 ///----------------------------------------------------------------------------
-class LLFloaterWindowSize
+class LLFloaterWindowSize final
 	:	public LLFloater
 {
 	friend class LLFloaterReg;
diff --git a/indra/newview/llfloaterworldmap.h b/indra/newview/llfloaterworldmap.h
index b63de737faad55eae04792258c5488dd45caa010..a7278fb0474605c38c7905387caa1fdab83a8e7b 100644
--- a/indra/newview/llfloaterworldmap.h
+++ b/indra/newview/llfloaterworldmap.h
@@ -46,7 +46,7 @@ class LLItemInfo;
 class LLLineEditor;
 class LLTabContainer;
 
-class LLFloaterWorldMap : public LLFloater
+class LLFloaterWorldMap final : public LLFloater
 {
 public:
 	LLFloaterWorldMap(const LLSD& key);
diff --git a/indra/newview/llfollowcam.h b/indra/newview/llfollowcam.h
index 799584816051b8741aacf9d9c689e43eff14781d..6d16996b3f56a78b1ca2e05eab510baed4dfb85f 100644
--- a/indra/newview/llfollowcam.h
+++ b/indra/newview/llfollowcam.h
@@ -193,7 +193,7 @@ class LLFollowCam : public LLFollowCamParams
 };// end of FollowCam class
 
 
-class LLFollowCamMgr : public LLSingleton<LLFollowCamMgr>
+class LLFollowCamMgr final : public LLSingleton<LLFollowCamMgr>
 {
     LLSINGLETON(LLFollowCamMgr);
     ~LLFollowCamMgr();
diff --git a/indra/newview/llfriendcard.h b/indra/newview/llfriendcard.h
index 2fb912a93048b87340a4b6e4e8d32e0a230f14f6..d8833d0f556b1032ce2a26e99d80818c59c1805b 100644
--- a/indra/newview/llfriendcard.h
+++ b/indra/newview/llfriendcard.h
@@ -33,7 +33,7 @@
 
 class LLViewerInventoryItem;
 
-class LLFriendCardsManager
+class LLFriendCardsManager final
 	: public LLSingleton<LLFriendCardsManager>
 	, public LLFriendObserver
 {
diff --git a/indra/newview/llgesturemgr.h b/indra/newview/llgesturemgr.h
index 402bdf6039952df5e1391eaddaf190df64b74514..9ec80b854658015470c2db99d3acf047b8a8794e 100644
--- a/indra/newview/llgesturemgr.h
+++ b/indra/newview/llgesturemgr.h
@@ -49,7 +49,7 @@ class LLGestureManagerObserver
 	virtual void changed() = 0;
 };
 
-class LLGestureMgr : public LLSingleton<LLGestureMgr>, public LLInventoryFetchItemsObserver
+class LLGestureMgr final : public LLSingleton<LLGestureMgr>, public LLInventoryFetchItemsObserver
 {
 	LLSINGLETON(LLGestureMgr);
 	~LLGestureMgr();
diff --git a/indra/newview/llgroupmgr.h b/indra/newview/llgroupmgr.h
index cf9735e38a0510ed0cb94ceb156f736501162ffa..f6713fb6d27b5a5ee368bfdf7dad39302c1ca3f6 100644
--- a/indra/newview/llgroupmgr.h
+++ b/indra/newview/llgroupmgr.h
@@ -351,7 +351,7 @@ struct LLRoleActionSet
 	std::vector<LLRoleAction*> mActions;
 };
 
-class LLGroupMgr : public LLSingleton<LLGroupMgr>
+class LLGroupMgr final : public LLSingleton<LLGroupMgr>
 {
 	LLSINGLETON(LLGroupMgr);
 	~LLGroupMgr();
diff --git a/indra/newview/llhints.h b/indra/newview/llhints.h
index 1f730734d0124e8d7d5c335b858fa4895b14d2ce..3aa8449adfd58c7fdb63eee51f30b66a838465b5 100644
--- a/indra/newview/llhints.h
+++ b/indra/newview/llhints.h
@@ -32,7 +32,7 @@
 #include "llinitdestroyclass.h"
 
 
-class LLHints :  public LLSingleton<LLHints>
+class LLHints final :  public LLSingleton<LLHints>
 {
 	LLSINGLETON(LLHints);
 	~LLHints();
diff --git a/indra/newview/llhudmanager.h b/indra/newview/llhudmanager.h
index 7782739690dca1e83e31da5120262d70e4870c19..54bbd19ece053f05ada405ab9cc2010f06ae7ba0 100644
--- a/indra/newview/llhudmanager.h
+++ b/indra/newview/llhudmanager.h
@@ -34,7 +34,7 @@
 class LLHUDEffect;
 class LLMessageSystem;
 
-class LLHUDManager : public LLSingleton<LLHUDManager>
+class LLHUDManager final : public LLSingleton<LLHUDManager>
 {
 	LLSINGLETON(LLHUDManager);
 	~LLHUDManager();
diff --git a/indra/newview/llimagefiltersmanager.h b/indra/newview/llimagefiltersmanager.h
index d06212d85aea06a7ad0d911723c2b8d7965c19de..b121a32feccee4cf68fc5efd8240db8cfa48fd49 100644
--- a/indra/newview/llimagefiltersmanager.h
+++ b/indra/newview/llimagefiltersmanager.h
@@ -32,7 +32,7 @@
 //============================================================================
 // LLImageFiltersManager class
 
-class LLImageFiltersManager : public LLSingleton<LLImageFiltersManager>
+class LLImageFiltersManager final : public LLSingleton<LLImageFiltersManager>
 {
 	LLSINGLETON(LLImageFiltersManager);
 	~LLImageFiltersManager();
diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h
index 79c831ebb6a6981d2f3695ee43c6bdc003bb615f..51de8a234616f3ec14bdcb6a824c1e9030646065 100644
--- a/indra/newview/llimview.h
+++ b/indra/newview/llimview.h
@@ -60,7 +60,7 @@ class LLSessionTimeoutTimer : public LLEventTimer
 /**
  * Model (MVC) for IM Sessions
  */
-class LLIMModel :  public LLSingleton<LLIMModel>
+class LLIMModel final :  public LLSingleton<LLIMModel>
 {
 	LLSINGLETON(LLIMModel);
 public:
@@ -312,7 +312,7 @@ class LLIMSessionObserver
 };
 
 
-class LLIMMgr : public LLSingleton<LLIMMgr>
+class LLIMMgr final : public LLSingleton<LLIMMgr>
 {
 	LLSINGLETON(LLIMMgr);
 	friend class LLIMModel;
@@ -500,7 +500,7 @@ class LLIMMgr : public LLSingleton<LLIMMgr>
 	LLSD mPendingAgentListUpdates;
 };
 
-class LLCallDialogManager : public LLSingleton<LLCallDialogManager>
+class LLCallDialogManager final : public LLSingleton<LLCallDialogManager>
 {
 	LLSINGLETON(LLCallDialogManager);
 	~LLCallDialogManager();
diff --git a/indra/newview/llinventoryicon.cpp b/indra/newview/llinventoryicon.cpp
index 81c001b8bd65e909a80ee2d1cbdd06259bca7925..3bfe57212a82be91b54e12b9f0634bc89bc77d7b 100644
--- a/indra/newview/llinventoryicon.cpp
+++ b/indra/newview/llinventoryicon.cpp
@@ -36,7 +36,7 @@
 #include "llwearabletype.h"
 #include "llinventorysettings.h"
 
-struct IconEntry : public LLDictionaryEntry
+struct IconEntry final : public LLDictionaryEntry
 {
 	IconEntry(const std::string &item_name)
 		:
@@ -44,7 +44,7 @@ struct IconEntry : public LLDictionaryEntry
 	{}
 };
 
-class LLIconDictionary : public LLSingleton<LLIconDictionary>,
+class LLIconDictionary final : public LLSingleton<LLIconDictionary>,
 						 public LLDictionary<LLInventoryType::EIconName, IconEntry>
 {
 	LLSINGLETON(LLIconDictionary);
diff --git a/indra/newview/llinventorymodelbackgroundfetch.h b/indra/newview/llinventorymodelbackgroundfetch.h
index 00d2908c1b52775af1b626e734cd949f5de37458..b7839cf08075b033614cd793207906656967069f 100644
--- a/indra/newview/llinventorymodelbackgroundfetch.h
+++ b/indra/newview/llinventorymodelbackgroundfetch.h
@@ -41,7 +41,7 @@
 // This class handles background fetches, which are fetches of
 // inventory folder.  Fetches can be recursive or not.
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-class LLInventoryModelBackgroundFetch : public LLSingleton<LLInventoryModelBackgroundFetch>
+class LLInventoryModelBackgroundFetch final : public LLSingleton<LLInventoryModelBackgroundFetch>
 {
 	LLSINGLETON(LLInventoryModelBackgroundFetch);
 	~LLInventoryModelBackgroundFetch();
diff --git a/indra/newview/lllocalbitmaps.h b/indra/newview/lllocalbitmaps.h
index 226dbbe4949c5d8e53e6cdf823851187982e86eb..94aad1471a134d00b5ae03a31378fb374f04ed8e 100644
--- a/indra/newview/lllocalbitmaps.h
+++ b/indra/newview/lllocalbitmaps.h
@@ -111,7 +111,7 @@ class LLLocalBitmapTimer : public LLEventTimer
 
 };
 
-class LLLocalBitmapMgr : public LLSingleton<LLLocalBitmapMgr>
+class LLLocalBitmapMgr final : public LLSingleton<LLLocalBitmapMgr>
 {
 	LLSINGLETON(LLLocalBitmapMgr);
 	~LLLocalBitmapMgr();
diff --git a/indra/newview/lllocationhistory.h b/indra/newview/lllocationhistory.h
index 1cecbabd3b5302f1850af6e0eb1dfee636e3ea3c..5388559415e97be7208505fdc30841c537983c30 100644
--- a/indra/newview/lllocationhistory.h
+++ b/indra/newview/lllocationhistory.h
@@ -101,7 +101,7 @@ class LLLocationHistoryItem {
 	ELocationType mType;
 };
 
-class LLLocationHistory: public LLSingleton<LLLocationHistory>
+class LLLocationHistory final : public LLSingleton<LLLocationHistory>
 {
 	LLSINGLETON(LLLocationHistory);
 	LOG_CLASS(LLLocationHistory);
diff --git a/indra/newview/lllogchat.cpp b/indra/newview/lllogchat.cpp
index 48d7e3b07cd078671328a1b67a7e509024548697..530db5ce3b3d1cc367ca997a6bfea2587d9a0301 100644
--- a/indra/newview/lllogchat.cpp
+++ b/indra/newview/lllogchat.cpp
@@ -132,7 +132,7 @@ void append_to_last_message(std::list<LLSD>& messages, const std::string& line)
 	messages.back()[LL_IM_TEXT] = im_text;
 }
 
-class LLLogChatTimeScanner: public LLSingleton<LLLogChatTimeScanner>
+class LLLogChatTimeScanner final : public LLSingleton<LLLogChatTimeScanner>
 {
 	LLSINGLETON(LLLogChatTimeScanner);
 
diff --git a/indra/newview/lllogchat.h b/indra/newview/lllogchat.h
index 8b7fe14e1684ad4c6c4b7596a09aaa948978f154..d2a1566473cdedefb1ecb25eb832bdb0fb55610f 100644
--- a/indra/newview/lllogchat.h
+++ b/indra/newview/lllogchat.h
@@ -79,7 +79,7 @@ class LLDeleteHistoryThread : public LLActionThread
 	static void deleteHistory();
 };
 
-class LLLogChat : public LLSingleton<LLLogChat>
+class LLLogChat final : public LLSingleton<LLLogChat>
 {
     LLSINGLETON(LLLogChat);
     ~LLLogChat();
diff --git a/indra/newview/lllogininstance.h b/indra/newview/lllogininstance.h
index b759b43474d560c865b288bb41c4ac0c59f1b006..a502392acdc631a2fbf31aaa23fec3959558882b 100644
--- a/indra/newview/lllogininstance.h
+++ b/indra/newview/lllogininstance.h
@@ -39,7 +39,7 @@ class LLNotificationsInterface;
 
 // This class hosts the login module and is used to 
 // negotiate user authentication attempts.
-class LLLoginInstance : public LLSingleton<LLLoginInstance>
+class LLLoginInstance final : public LLSingleton<LLLoginInstance>
 {
 	LLSINGLETON(LLLoginInstance);
 	~LLLoginInstance();
diff --git a/indra/newview/llmainlooprepeater.h b/indra/newview/llmainlooprepeater.h
index 2ec3a74e4ae3bc4a446182cc444c5d654cd044d6..68ac254164e9710c6c8882c0c7cb4eda007a1e6b 100644
--- a/indra/newview/llmainlooprepeater.h
+++ b/indra/newview/llmainlooprepeater.h
@@ -40,7 +40,7 @@
 // pump value is a string naming the pump to which the message should be
 // re-posted.  The payload value is what will be posted to the designated pump.
 //
-class LLMainLoopRepeater:
+class LLMainLoopRepeater final :
 	public LLSingleton<LLMainLoopRepeater>
 {
 	LLSINGLETON(LLMainLoopRepeater);
diff --git a/indra/newview/llmarketplacefunctions.h b/indra/newview/llmarketplacefunctions.h
index fee9225f77c5905d04f5530e2694c14ece2e1c74..c6a69def5795499b35bbb1a29eede3e49038412a 100644
--- a/indra/newview/llmarketplacefunctions.h
+++ b/indra/newview/llmarketplacefunctions.h
@@ -83,7 +83,7 @@ namespace MarketplaceFetchCodes
 }
 
 
-class LLMarketplaceInventoryImporter
+class LLMarketplaceInventoryImporter final
 	: public LLSingleton<LLMarketplaceInventoryImporter>
 {
 	LLSINGLETON(LLMarketplaceInventoryImporter);
@@ -177,7 +177,7 @@ class LLSLMUpdateListingsResponder;
 class LLSLMAssociateListingsResponder;
 class LLSLMDeleteListingsResponder;
 
-class LLMarketplaceData
+class LLMarketplaceData final
     : public LLSingleton<LLMarketplaceData>
 {
     LLSINGLETON(LLMarketplaceData);
diff --git a/indra/newview/llmenuoptionpathfindingrebakenavmesh.h b/indra/newview/llmenuoptionpathfindingrebakenavmesh.h
index 649a387dd3c70db09d278e574021d8833a8bc90c..b7b0310159e790ae559b487c049bb038e97c336d 100644
--- a/indra/newview/llmenuoptionpathfindingrebakenavmesh.h
+++ b/indra/newview/llmenuoptionpathfindingrebakenavmesh.h
@@ -35,7 +35,7 @@
 
 class LLPathfindingNavMeshStatus;
 
-class LLMenuOptionPathfindingRebakeNavmesh : public LLSingleton<LLMenuOptionPathfindingRebakeNavmesh>
+class LLMenuOptionPathfindingRebakeNavmesh final : public LLSingleton<LLMenuOptionPathfindingRebakeNavmesh>
 {
 	LLSINGLETON(LLMenuOptionPathfindingRebakeNavmesh);
 	virtual ~LLMenuOptionPathfindingRebakeNavmesh();
diff --git a/indra/newview/llmoveview.h b/indra/newview/llmoveview.h
index f8a14dba1ede34593c863dce928f54cf4ebfea8a..dbe5e1c48f4b5e865e6e5be32539d2c8ceca2d19 100644
--- a/indra/newview/llmoveview.h
+++ b/indra/newview/llmoveview.h
@@ -37,7 +37,7 @@ class LLJoystickAgentSlide;
 //
 // Classes
 //
-class LLFloaterMove
+class LLFloaterMove final
 :	public LLFloater
 {
 	LOG_CLASS(LLFloaterMove);
diff --git a/indra/newview/llmutelist.h b/indra/newview/llmutelist.h
index f2fcf3dbb33a7cedecc1f604b4f9d846e3786f60..0f7e9a411930cf86e96e13f377fc4b15309c4b9f 100644
--- a/indra/newview/llmutelist.h
+++ b/indra/newview/llmutelist.h
@@ -69,7 +69,7 @@ class LLMute
 	U32			mFlags;	// flags pertaining to this mute entry
 };
 
-class LLMuteList : public LLSingleton<LLMuteList>
+class LLMuteList final : public LLSingleton<LLMuteList>
 {
 	LLSINGLETON(LLMuteList);
 	~LLMuteList();
@@ -175,7 +175,7 @@ class LLMuteListObserver
 	virtual void onChangeDetailed(const LLMute& ) { }
 };
 
-class LLRenderMuteList : public LLSingleton<LLRenderMuteList>
+class LLRenderMuteList final : public LLSingleton<LLRenderMuteList>
 {
     LLSINGLETON(LLRenderMuteList);
 public:
diff --git a/indra/newview/llnavigationbar.h b/indra/newview/llnavigationbar.h
index 997c7677cd05556052fe2941d2bf5796dd2cb7fa..7ddd28d7089a77a2766055f2022502b96042428c 100755
--- a/indra/newview/llnavigationbar.h
+++ b/indra/newview/llnavigationbar.h
@@ -82,7 +82,7 @@ class LLPullButton: public LLButton
 /**
  * Web browser-like navigation bar.
  */ 
-class LLNavigationBar
+class LLNavigationBar final
 	:	public LLPanel, public LLSingleton<LLNavigationBar>, private LLDestroyClass<LLNavigationBar>
 {
 	LLSINGLETON(LLNavigationBar);
diff --git a/indra/newview/llnotificationmanager.h b/indra/newview/llnotificationmanager.h
index 52c79cc68970d172a37dd3a9abe6c3e9f8625396..bb342e26bb67a5ec9a2645ad17a7478ee6dff065 100644
--- a/indra/newview/llnotificationmanager.h
+++ b/indra/newview/llnotificationmanager.h
@@ -44,7 +44,7 @@ class LLToast;
 /**
  * Responsible for registering notification handlers.
  */
-class LLNotificationManager : public LLSingleton<LLNotificationManager>
+class LLNotificationManager final : public LLSingleton<LLNotificationManager>
 {
 	LLSINGLETON(LLNotificationManager);
 	virtual ~LLNotificationManager();
diff --git a/indra/newview/llnotificationstorage.cpp b/indra/newview/llnotificationstorage.cpp
index 35fdfa88bb52d39ca7d313949cc16d4d01f5d764..ca1a3517ac959cff44787c137c8ea5e140e0e3bd 100644
--- a/indra/newview/llnotificationstorage.cpp
+++ b/indra/newview/llnotificationstorage.cpp
@@ -43,7 +43,7 @@
 
 typedef boost::function<LLNotificationResponderInterface * (const LLSD& pParams)> responder_constructor_t;
 
-class LLResponderRegistry : public LLRegistrySingleton<std::string, responder_constructor_t, LLResponderRegistry>
+class LLResponderRegistry final : public LLRegistrySingleton<std::string, responder_constructor_t, LLResponderRegistry>
 {
     LLSINGLETON_EMPTY_CTOR(LLResponderRegistry);
 public:
diff --git a/indra/newview/lloutfitobserver.h b/indra/newview/lloutfitobserver.h
index 77041db68d094c475df3615fac856a6024f0f475..79c2761a687cf2405a07c8b0ac7d42e9f5565092 100644
--- a/indra/newview/lloutfitobserver.h
+++ b/indra/newview/lloutfitobserver.h
@@ -34,7 +34,7 @@
  * Outfit observer facade that provides simple possibility to subscribe on
  * BOF(base outfit) replaced, BOF changed, COF(current outfit) changed events.
  */
-class LLOutfitObserver: public LLInventoryObserver, public LLSingleton<LLOutfitObserver>
+class LLOutfitObserver final : public LLInventoryObserver, public LLSingleton<LLOutfitObserver>
 {
 	LLSINGLETON(LLOutfitObserver);
 	virtual ~LLOutfitObserver();
diff --git a/indra/newview/llpanelblockedlist.h b/indra/newview/llpanelblockedlist.h
index 07f04376566c9350e1637fa8f974f95518bf9541..652aa0fbe92b69d4ecf1ef535ae2015d86ecbc4b 100644
--- a/indra/newview/llpanelblockedlist.h
+++ b/indra/newview/llpanelblockedlist.h
@@ -86,7 +86,7 @@ class LLPanelBlockedList : public LLPanel
 // LLFloaterGetBlockedObjectName()
 //-----------------------------------------------------------------------------
 // Class for handling mute object by name floater.
-class LLFloaterGetBlockedObjectName : public LLFloater
+class LLFloaterGetBlockedObjectName final : public LLFloater
 {
 	friend class LLFloaterReg;
 public:
diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index c601a6c210255901a30535f22c9acaf6f62117c7..073beee8a72de078b511e6412d1cf360c84f3e87 100644
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -113,7 +113,7 @@ typedef std::vector<ESubpart> subpart_vec_t;
 
 // Locally defined classes
 
-class LLEditWearableDictionary : public LLSingleton<LLEditWearableDictionary>
+class LLEditWearableDictionary final : public LLSingleton<LLEditWearableDictionary>
 {
         //--------------------------------------------------------------------
         // Constructors and Destructors
diff --git a/indra/newview/llpanelgenerictip.h b/indra/newview/llpanelgenerictip.h
index f8a3413fe4b7e5f1069106836985965ad2583d9b..1e3ea3ed16197cb7aa3180e9e6ffe9e9fdf68407 100644
--- a/indra/newview/llpanelgenerictip.h
+++ b/indra/newview/llpanelgenerictip.h
@@ -34,7 +34,7 @@
  * Represents tip toast panel that contains only one child element - message text.
  * This panel can be used for different cases of tip notifications.
  */
-class LLPanelGenericTip: public LLPanelTipToast
+class LLPanelGenericTip final : public LLPanelTipToast
 {
 	// disallow instantiation of this class
 private:
diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index 02cd22c3071864f370ed1484a15558cbdc24773e..dda145bee682d5af83112c4d0005dbb3b9119167 100644
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -76,7 +76,7 @@ void on_file_loaded_for_save(BOOL success,
 /// LLFloaterInventoryFinder
 ///----------------------------------------------------------------------------
 
-class LLFloaterInventoryFinder : public LLFloater
+class LLFloaterInventoryFinder final : public LLFloater
 {
 public:
 	LLFloaterInventoryFinder( LLPanelMainInventory* inventory_view);
diff --git a/indra/newview/llpanelonlinestatus.h b/indra/newview/llpanelonlinestatus.h
index 7dc648f1357119e17468eeae59af5089c311997d..1090105f2143f7282967eb8be317845d442073df 100644
--- a/indra/newview/llpanelonlinestatus.h
+++ b/indra/newview/llpanelonlinestatus.h
@@ -33,7 +33,7 @@
 /**
  * Represents online tip toast panel.
  */
-class LLPanelOnlineStatus : public LLPanelTipToast
+class LLPanelOnlineStatus final : public LLPanelTipToast
 {
 	// disallow instantiation of this class
 private:
diff --git a/indra/newview/llpanelprofileclassifieds.h b/indra/newview/llpanelprofileclassifieds.h
index f71fcd5d54c3e725148fa70c836100f6ec3a2d60..8ddef4d11122c1aab1447fd67473f8cfb5f13afb 100644
--- a/indra/newview/llpanelprofileclassifieds.h
+++ b/indra/newview/llpanelprofileclassifieds.h
@@ -48,7 +48,7 @@ class LLTextureCtrl;
 class LLUICtrl;
 
 
-class LLPublishClassifiedFloater : public LLFloater
+class LLPublishClassifiedFloater final : public LLFloater
 {
 public:
     LLPublishClassifiedFloater(const LLSD& key);
diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp
index ab6b90501e2d61eb02211285e7730e545457f5df..8eaf88ae91fb39d48896b78391f3a3065496aafb 100644
--- a/indra/newview/llpanelteleporthistory.cpp
+++ b/indra/newview/llpanelteleporthistory.cpp
@@ -104,7 +104,7 @@ class LLTeleportHistoryFlatItem : public LLPanel
 ////////////////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////////////////
 
-class LLTeleportHistoryFlatItemStorage: public LLSingleton<LLTeleportHistoryFlatItemStorage>
+class LLTeleportHistoryFlatItemStorage final : public LLSingleton<LLTeleportHistoryFlatItemStorage>
 {
 	LLSINGLETON_EMPTY_CTOR(LLTeleportHistoryFlatItemStorage);
 protected:
diff --git a/indra/newview/llpaneltiptoast.h b/indra/newview/llpaneltiptoast.h
index cb09f1dca6604cf13b98e95b0abf2ec21b5af47b..3646f070e380c3cec2e4634e025722ade3b9fe31 100644
--- a/indra/newview/llpaneltiptoast.h
+++ b/indra/newview/llpaneltiptoast.h
@@ -40,7 +40,7 @@ class LLPanelTipToast : public LLToastPanel
 	LOG_CLASS(LLPanelTipToast);
 public:
 	LLPanelTipToast(const LLNotificationPtr& notification): LLToastPanel(notification) {}
-	virtual BOOL postBuild();
+	BOOL postBuild() final;
 private:
 	void onMessageTextClick();
 	void onPanelClick(S32 x, S32 y, MASK mask);
diff --git a/indra/newview/llpaneltopinfobar.h b/indra/newview/llpaneltopinfobar.h
index 5405548ea8b4bbfcbbf427c735e73d01544874c9..d4b0ff0ad187662fca3f98aca3dde8c48bff04f2 100644
--- a/indra/newview/llpaneltopinfobar.h
+++ b/indra/newview/llpaneltopinfobar.h
@@ -35,7 +35,7 @@ class LLTextBox;
 class LLIconCtrl;
 class LLParcelChangeObserver;
 
-class LLPanelTopInfoBar : public LLPanel, public LLSingleton<LLPanelTopInfoBar>, private LLDestroyClass<LLPanelTopInfoBar>
+class LLPanelTopInfoBar final : public LLPanel, public LLSingleton<LLPanelTopInfoBar>, private LLDestroyClass<LLPanelTopInfoBar>
 {
 	LLSINGLETON(LLPanelTopInfoBar);
 	~LLPanelTopInfoBar();
diff --git a/indra/newview/llpanelvolume.h b/indra/newview/llpanelvolume.h
index 66117316cf2d0cd95267cb4dc01e71a22a4d7a0d..39d876b11f33e28adc0fcc92c17aa929bd4d9bd8 100644
--- a/indra/newview/llpanelvolume.h
+++ b/indra/newview/llpanelvolume.h
@@ -41,7 +41,7 @@ class LLViewerObject;
 class LLComboBox;
 class LLColorSwatchCtrl;
 
-class LLPanelVolume : public LLPanel
+class LLPanelVolume final : public LLPanel
 {
 public:
 	LLPanelVolume();
diff --git a/indra/newview/llpanelvolumepulldown.h b/indra/newview/llpanelvolumepulldown.h
index e907bb0c78fa36dbd4623c8187a14bc39d2e0799..190220476114e9fa77ef5d6f87af89d83132ccf4 100644
--- a/indra/newview/llpanelvolumepulldown.h
+++ b/indra/newview/llpanelvolumepulldown.h
@@ -32,7 +32,7 @@
 
 #include "llpanelpulldown.h"
 
-class LLPanelVolumePulldown : public LLPanelPulldown
+class LLPanelVolumePulldown final : public LLPanelPulldown
 {
  public:
 	LLPanelVolumePulldown();
diff --git a/indra/newview/llpathfindingmanager.h b/indra/newview/llpathfindingmanager.h
index a44cd892da61c4d45028bb4680fa76c27f2e3bc6..2301a0175e76924ab7bfda971101e2116a86ef80 100644
--- a/indra/newview/llpathfindingmanager.h
+++ b/indra/newview/llpathfindingmanager.h
@@ -46,7 +46,7 @@ class LLViewerRegion;
 
 class LinksetsResponder;
 
-class LLPathfindingManager : public LLSingleton<LLPathfindingManager>
+class LLPathfindingManager final : public LLSingleton<LLPathfindingManager>
 {
 	LLSINGLETON(LLPathfindingManager);
 	virtual ~LLPathfindingManager();
diff --git a/indra/newview/llpathfindingpathtool.h b/indra/newview/llpathfindingpathtool.h
index 88cb3a15f89e1e2131d4f613b1ebd746712a9616..22dae88e0d7b01f8361e9484de88062bed738e39 100644
--- a/indra/newview/llpathfindingpathtool.h
+++ b/indra/newview/llpathfindingpathtool.h
@@ -34,7 +34,7 @@
 #include "llsingleton.h"
 #include "lltool.h"
 
-class LLPathfindingPathTool : public LLTool, public LLSingleton<LLPathfindingPathTool>
+class LLPathfindingPathTool final : public LLTool, public LLSingleton<LLPathfindingPathTool>
 {
 	LLSINGLETON(LLPathfindingPathTool);
 	virtual ~LLPathfindingPathTool();
diff --git a/indra/newview/llpersistentnotificationstorage.h b/indra/newview/llpersistentnotificationstorage.h
index 1fb44872867d9c0b4e1c4801766297c1b463782d..7dabb691a604c68a9acbfeb059084c8330024466 100644
--- a/indra/newview/llpersistentnotificationstorage.h
+++ b/indra/newview/llpersistentnotificationstorage.h
@@ -43,7 +43,7 @@ class LLSD;
 // be a) serializable(implement LLNotificationResponderInterface),
 // b) registered with LLResponderRegistry (found in llpersistentnotificationstorage.cpp).
 
-class LLPersistentNotificationStorage : public LLParamSingleton<LLPersistentNotificationStorage>, public LLNotificationStorage
+class LLPersistentNotificationStorage final : public LLParamSingleton<LLPersistentNotificationStorage>, public LLNotificationStorage
 {
 	LLSINGLETON(LLPersistentNotificationStorage);
 	~LLPersistentNotificationStorage();
diff --git a/indra/newview/llpresetsmanager.h b/indra/newview/llpresetsmanager.h
index d5b384ceb9559e25052fedd444581e918ed42d79..643d2fb6c57f9cf7cb86456f58e60e544cf099d4 100644
--- a/indra/newview/llpresetsmanager.h
+++ b/indra/newview/llpresetsmanager.h
@@ -52,7 +52,7 @@ enum EDefaultOptions
 	DEFAULT_HIDE				// Do not display "Default" in a list
 };
 
-class LLPresetsManager : public LLSingleton<LLPresetsManager>
+class LLPresetsManager final : public LLSingleton<LLPresetsManager>
 {
 	LLSINGLETON(LLPresetsManager);
 	~LLPresetsManager();
diff --git a/indra/newview/llpreview.h b/indra/newview/llpreview.h
index b41aa2be1a67652ca83362fdaca8c89a52098180..2ee76d590eadb7c1da853b16b62d13ba29ee9167 100644
--- a/indra/newview/llpreview.h
+++ b/indra/newview/llpreview.h
@@ -40,7 +40,7 @@ class LLLineEditor;
 class LLRadioGroup;
 class LLPreview;
 
-class LLMultiPreview : public LLMultiFloater
+class LLMultiPreview final : public LLMultiFloater
 {
 public:
 	LLMultiPreview();
diff --git a/indra/newview/llpreviewanim.h b/indra/newview/llpreviewanim.h
index 8eaed6ca1f9ce1bcb29847a082f20034aa365aad..ebe1f81a2fc1f59d38cfb354fa784e0e4d81d856 100644
--- a/indra/newview/llpreviewanim.h
+++ b/indra/newview/llpreviewanim.h
@@ -30,7 +30,7 @@
 #include "llpreview.h"
 #include "llcharacter.h"
 
-class LLPreviewAnim : public LLPreview
+class LLPreviewAnim final : public LLPreview
 {
 public:
 
diff --git a/indra/newview/llpreviewgesture.h b/indra/newview/llpreviewgesture.h
index 3ba4f562952505e041100a5c23f905d6b920d3b3..82b10d9b4cd6ad177ac57e42c04ff7684dbe214c 100644
--- a/indra/newview/llpreviewgesture.h
+++ b/indra/newview/llpreviewgesture.h
@@ -41,7 +41,7 @@ class LLButton;
 class LLRadioGroup;
 class LLVFS;
 
-class LLPreviewGesture : public LLPreview
+class LLPreviewGesture final : public LLPreview
 {
 public:
 	// Pass an object_id if this gesture is inside an object in the world,
diff --git a/indra/newview/llpreviewnotecard.h b/indra/newview/llpreviewnotecard.h
index d9c14815c177abcca0e2bd0a5c65b91af090c0d4..12c4980a85fa44c959a31112083d6a2dcc9ee89c 100644
--- a/indra/newview/llpreviewnotecard.h
+++ b/indra/newview/llpreviewnotecard.h
@@ -41,7 +41,7 @@
 class LLViewerTextEditor;
 class LLButton;
 
-class LLPreviewNotecard : public LLPreview
+class LLPreviewNotecard final : public LLPreview
 {
 public:
 	LLPreviewNotecard(const LLSD& key);
diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp
index 102e939374589c950f9d3b98078df29dd8dc0c51..e0aba6610603959a9a87075b8b489446b5b8f530 100644
--- a/indra/newview/llpreviewscript.cpp
+++ b/indra/newview/llpreviewscript.cpp
@@ -150,7 +150,7 @@ bool LLLiveLSLFile::loadFile()
 /// ---------------------------------------------------------------------------
 /// LLFloaterScriptSearch
 /// ---------------------------------------------------------------------------
-class LLFloaterScriptSearch : public LLFloater
+class LLFloaterScriptSearch final : public LLFloater
 {
 public:
 	LLFloaterScriptSearch(LLScriptEdCore* editor_core);
diff --git a/indra/newview/llpreviewscript.h b/indra/newview/llpreviewscript.h
index 74e4c00d43bed537b9dd743ca37ec226f20c54c3..1c85587d1051eb37892aad5152d14e3ca9a6ec03 100644
--- a/indra/newview/llpreviewscript.h
+++ b/indra/newview/llpreviewscript.h
@@ -54,7 +54,7 @@ class LLScriptEdContainer;
 class LLFloaterGotoLine;
 class LLFloaterExperienceProfile;
 
-class LLLiveLSLFile : public LLLiveFile
+class LLLiveLSLFile final : public LLLiveFile
 {
 public:
     typedef boost::function<bool(const std::string& filename)> change_callback_t;
@@ -72,7 +72,7 @@ class LLLiveLSLFile : public LLLiveFile
 };
 
 // Inner, implementation class.  LLPreviewScript and LLLiveLSLEditor each own one of these.
-class LLScriptEdCore : public LLPanel
+class LLScriptEdCore final : public LLPanel
 {
 	friend class LLPreviewScript;
 	friend class LLPreviewLSL;
@@ -214,7 +214,7 @@ class LLScriptEdContainer : public LLPreview
 };
 
 // Used to view and edit an LSL script from your inventory.
-class LLPreviewLSL : public LLScriptEdContainer
+class LLPreviewLSL final : public LLScriptEdContainer
 {
 public:
 	LLPreviewLSL(const LLSD& key );
@@ -252,7 +252,7 @@ class LLPreviewLSL : public LLScriptEdContainer
 
 
 // Used to view and edit an LSL script that is attached to an object.
-class LLLiveLSLEditor : public LLScriptEdContainer
+class LLLiveLSLEditor final : public LLScriptEdContainer
 {
 	friend class LLLiveLSLFile;
 public: 
diff --git a/indra/newview/llpreviewsound.h b/indra/newview/llpreviewsound.h
index 0453bfd9367535fdfe40b9cb8414a8370a27d15a..d3e00b83c83fede943d8359a87338ca6c969d3d9 100644
--- a/indra/newview/llpreviewsound.h
+++ b/indra/newview/llpreviewsound.h
@@ -29,7 +29,7 @@
 
 #include "llpreview.h"
 
-class LLPreviewSound : public LLPreview
+class LLPreviewSound final : public LLPreview
 {
 public:
 	LLPreviewSound(const LLSD& key);
diff --git a/indra/newview/llpreviewtexture.h b/indra/newview/llpreviewtexture.h
index e8bba63cb23f258a4f062dc9655fd02244dd3333..b7e68cab4999f2d3cacf9e6766543706f8a6608b 100644
--- a/indra/newview/llpreviewtexture.h
+++ b/indra/newview/llpreviewtexture.h
@@ -35,7 +35,7 @@
 class LLComboBox;
 class LLImageRaw;
 
-class LLPreviewTexture : public LLPreview
+class LLPreviewTexture final : public LLPreview
 {
 public:
 	LLPreviewTexture(const LLSD& key);
diff --git a/indra/newview/llproductinforequest.h b/indra/newview/llproductinforequest.h
index d1036374e8008302ff83f8b8d68ee12f4d7eaade..b10a15b2310ddf6c736157a9866a306e13cb4240 100644
--- a/indra/newview/llproductinforequest.h
+++ b/indra/newview/llproductinforequest.h
@@ -39,7 +39,7 @@
  * We use description in the UI, but the sku is provided in the various
  * messages; this tool provides translation between the systems.
  */
-class LLProductInfoRequestManager : public LLSingleton<LLProductInfoRequestManager>
+class LLProductInfoRequestManager final : public LLSingleton<LLProductInfoRequestManager>
 {
 	LLSINGLETON(LLProductInfoRequestManager);
 public:
diff --git a/indra/newview/llrecentpeople.h b/indra/newview/llrecentpeople.h
index 18b669ff4fc81be07d5f47d1a1c78dee5aeae1e5..0eedb735d9e2bb7f0b46a58c34fd5c1b455a20d3 100644
--- a/indra/newview/llrecentpeople.h
+++ b/indra/newview/llrecentpeople.h
@@ -48,7 +48,7 @@ class LLDate;
  * 
  *TODO: purge least recently added items? 
  */
-class LLRecentPeople: public LLSingleton<LLRecentPeople>, public LLOldEvents::LLSimpleListener
+class LLRecentPeople final : public LLSingleton<LLRecentPeople>, public LLOldEvents::LLSimpleListener
 {
 	LLSINGLETON_EMPTY_CTOR(LLRecentPeople);
 	LOG_CLASS(LLRecentPeople);
diff --git a/indra/newview/llregioninfomodel.h b/indra/newview/llregioninfomodel.h
index 4bcffedfba674139a7e2c954f42eb5f6017ceeb2..075ec220ffa37a811bd0c78e4f3d5ee05a07df4f 100644
--- a/indra/newview/llregioninfomodel.h
+++ b/indra/newview/llregioninfomodel.h
@@ -34,7 +34,7 @@ class LLMessageSystem;
 /**
  * Contains region info, notifies interested parties of its changes.
  */
-class LLRegionInfoModel : public LLSingleton<LLRegionInfoModel>
+class LLRegionInfoModel final : public LLSingleton<LLRegionInfoModel>
 {
 	LLSINGLETON(LLRegionInfoModel);
 	LOG_CLASS(LLRegionInfoModel);
diff --git a/indra/newview/llremoteparcelrequest.h b/indra/newview/llremoteparcelrequest.h
index 5b0d1891378fbbbb4975e6010e13c691952972ff..e6a940624d980e1b32a3ab5d1eb3e65e5dedbc60 100644
--- a/indra/newview/llremoteparcelrequest.h
+++ b/indra/newview/llremoteparcelrequest.h
@@ -72,7 +72,7 @@ class LLRemoteParcelInfoObserver
 	LLRootHandle<LLRemoteParcelInfoObserver> mObserverHandle;
 };
 
-class LLRemoteParcelInfoProcessor : public LLSingleton<LLRemoteParcelInfoProcessor>
+class LLRemoteParcelInfoProcessor final : public LLSingleton<LLRemoteParcelInfoProcessor>
 {
 	LLSINGLETON_EMPTY_CTOR(LLRemoteParcelInfoProcessor);
 	virtual ~LLRemoteParcelInfoProcessor() {}
diff --git a/indra/newview/llscenemonitor.h b/indra/newview/llscenemonitor.h
index 7cd531bd34667c510e492f3d396ba63226e792b1..f325409e71d4ce67f5f041b66a309dcdfb3ab1da 100644
--- a/indra/newview/llscenemonitor.h
+++ b/indra/newview/llscenemonitor.h
@@ -37,7 +37,7 @@ class LLCharacter;
 class LLRenderTarget;
 class LLViewerTexture;
 
-class LLSceneMonitor : public LLSingleton<LLSceneMonitor>
+class LLSceneMonitor final : public LLSingleton<LLSceneMonitor>
 {
 	LLSINGLETON(LLSceneMonitor);
 	~LLSceneMonitor();
@@ -107,7 +107,7 @@ class LLSceneMonitor : public LLSingleton<LLSceneMonitor>
 	LLTrace::Recording						mMonitorRecording;
 };
 
-class LLSceneMonitorView : public LLFloater
+class LLSceneMonitorView final : public LLFloater
 {
 public:
 	LLSceneMonitorView(const LLRect& rect);
diff --git a/indra/newview/llsceneview.h b/indra/newview/llsceneview.h
index e077c358b4c3639fa8aa728ceb9f9bcbf8df6e70..6e3c809f5c9074062dbd3b030fa6aa977f7ac7bc 100644
--- a/indra/newview/llsceneview.h
+++ b/indra/newview/llsceneview.h
@@ -30,7 +30,7 @@
 #include "llfloater.h"
 
 
-class LLSceneView : public LLFloater
+class LLSceneView final : public LLFloater
 {
 public:
 	LLSceneView(const LLRect& rect);
diff --git a/indra/newview/llscriptfloater.h b/indra/newview/llscriptfloater.h
index 3695b8a3e129c64d447d0685a59167b33dccd06c..4906c2f493237d1578c9acf097002e68f0e7598b 100644
--- a/indra/newview/llscriptfloater.h
+++ b/indra/newview/llscriptfloater.h
@@ -36,7 +36,7 @@ class LLToastPanel;
  * Handles script notifications ("ScriptDialog" and "ScriptDialogGroup")
  * and manages Script Floaters.
  */
-class LLScriptFloaterManager : public LLSingleton<LLScriptFloaterManager>
+class LLScriptFloaterManager final : public LLSingleton<LLScriptFloaterManager>
 {
 	// *TODO
 	// LLScriptFloaterManager and LLScriptFloater will need some refactoring after we 
diff --git a/indra/newview/llsearchhistory.h b/indra/newview/llsearchhistory.h
index 4ae6122396eb51b7a82864081939854cc9158910..1c881add64344af1e0592aeaae45d1a1cb4a84b1 100644
--- a/indra/newview/llsearchhistory.h
+++ b/indra/newview/llsearchhistory.h
@@ -35,7 +35,7 @@
  * Search history container able to save and load history from file.
  * History is stored in chronological order, most recent at the beginning.
  */
-class LLSearchHistory : public LLSingleton<LLSearchHistory>, private LLDestroyClass<LLSearchHistory>
+class LLSearchHistory final : public LLSingleton<LLSearchHistory>, private LLDestroyClass<LLSearchHistory>
 {
 	LLSINGLETON(LLSearchHistory);
 	friend class LLDestroyClass<LLSearchHistory>;
diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h
index 3bed484b588a0897fc2180c4d824ac738a787a3e..24ef216a22756e334513574e1caf7f1c9bf2cfdc 100644
--- a/indra/newview/llselectmgr.h
+++ b/indra/newview/llselectmgr.h
@@ -407,7 +407,7 @@ class LLSelectionCallbackData
     LLObjectSelectionHandle					mSelectedObjects;
 };
 
-class LLSelectMgr : public LLEditMenuHandler, public LLSingleton<LLSelectMgr>
+class LLSelectMgr final : public LLEditMenuHandler, public LLSingleton<LLSelectMgr>
 {
 	LLSINGLETON(LLSelectMgr);
 	~LLSelectMgr();
diff --git a/indra/newview/llsettingspicker.h b/indra/newview/llsettingspicker.h
index 859f92fbe8e46f7081fa5e9b9565810cd8580c22..fe8eb7e19f96d023f96fb42df695c277f64357e2 100644
--- a/indra/newview/llsettingspicker.h
+++ b/indra/newview/llsettingspicker.h
@@ -42,7 +42,7 @@ class LLFilterEditor;
 class LLInventoryPanel;
 
 //=========================================================================
-class LLFloaterSettingsPicker : public LLFloater
+class LLFloaterSettingsPicker final : public LLFloater
 {
 public:
     enum ETrackMode
diff --git a/indra/newview/llsidepanelappearance.h b/indra/newview/llsidepanelappearance.h
index 93f23a29f330ad5265e9c709e2eca876d45bccda..d4b924dd7c6cc292c4c594f591436371aa356bca 100644
--- a/indra/newview/llsidepanelappearance.h
+++ b/indra/newview/llsidepanelappearance.h
@@ -39,7 +39,7 @@ class LLPanelEditWearable;
 class LLViewerWearable;
 class LLPanelOutfitsInventory;
 
-class LLSidepanelAppearance : public LLPanel
+class LLSidepanelAppearance final : public LLPanel
 {
 	LOG_CLASS(LLSidepanelAppearance);
 public:
diff --git a/indra/newview/llspeakers.h b/indra/newview/llspeakers.h
index d1dbf72fe9e9c363fbfe79c595c3d0118446e7d9..97c91e534f76ea146bbe00253efe1db71b7c8855 100644
--- a/indra/newview/llspeakers.h
+++ b/indra/newview/llspeakers.h
@@ -340,7 +340,7 @@ class LLIMSpeakerMgr : public LLSpeakerMgr
 
 };
 
-class LLActiveSpeakerMgr : public LLSpeakerMgr, public LLSingleton<LLActiveSpeakerMgr>
+class LLActiveSpeakerMgr final : public LLSpeakerMgr, public LLSingleton<LLActiveSpeakerMgr>
 {
 	LLSINGLETON(LLActiveSpeakerMgr);
 	LOG_CLASS(LLActiveSpeakerMgr);
@@ -349,7 +349,7 @@ class LLActiveSpeakerMgr : public LLSpeakerMgr, public LLSingleton<LLActiveSpeak
 	virtual void updateSpeakerList();
 };
 
-class LLLocalSpeakerMgr : public LLSpeakerMgr, public LLSingleton<LLLocalSpeakerMgr>
+class LLLocalSpeakerMgr final : public LLSpeakerMgr, public LLSingleton<LLLocalSpeakerMgr>
 {
 	LLSINGLETON(LLLocalSpeakerMgr);
 	~LLLocalSpeakerMgr ();
diff --git a/indra/newview/llspeakingindicatormanager.cpp b/indra/newview/llspeakingindicatormanager.cpp
index 5ca1d4b4a57d597c558f4594052f70ed31acacb3..04e874e90d86dac998d0be0ef0421ed45844c436 100644
--- a/indra/newview/llspeakingindicatormanager.cpp
+++ b/indra/newview/llspeakingindicatormanager.cpp
@@ -46,7 +46,7 @@
  *
  * Several indicators can be registered for the same avatar.
  */
-class SpeakingIndicatorManager : public LLSingleton<SpeakingIndicatorManager>, LLVoiceClientParticipantObserver
+class SpeakingIndicatorManager final : public LLSingleton<SpeakingIndicatorManager>, LLVoiceClientParticipantObserver
 {
 	LLSINGLETON(SpeakingIndicatorManager);
 	~SpeakingIndicatorManager();
diff --git a/indra/newview/llstylemap.h b/indra/newview/llstylemap.h
index 96b392059372bf38463a5b32c875fff1f0a678e5..619141f3365d9148601b4d5249a917fee02b1441 100644
--- a/indra/newview/llstylemap.h
+++ b/indra/newview/llstylemap.h
@@ -37,7 +37,7 @@
 
 typedef std::map<LLUUID, LLStyle::Params> style_map_t;
 
-class LLStyleMap : public LLSingleton<LLStyleMap>
+class LLStyleMap final : public LLSingleton<LLStyleMap>
 {
 	LLSINGLETON_EMPTY_CTOR(LLStyleMap);
 public:
diff --git a/indra/newview/llsyntaxid.h b/indra/newview/llsyntaxid.h
index caddba5527949384d333072611edfcad79b1f91c..28eb5cf4ce4353d1beffb314f7920da2df810dd0 100644
--- a/indra/newview/llsyntaxid.h
+++ b/indra/newview/llsyntaxid.h
@@ -36,7 +36,7 @@
 
 class fetchKeywordsFileResponder;
 
-class LLSyntaxIdLSL : public LLSingleton<LLSyntaxIdLSL>
+class LLSyntaxIdLSL final : public LLSingleton<LLSyntaxIdLSL>
 {
 	LLSINGLETON(LLSyntaxIdLSL);
 	friend class fetchKeywordsFileResponder;
diff --git a/indra/newview/llteleporthistory.h b/indra/newview/llteleporthistory.h
index 66875279100ce94da15b5b3661f3d84575c6c41a..da7fc4dcfc9301bf70744564f1b3deb2ce2c4bca 100644
--- a/indra/newview/llteleporthistory.h
+++ b/indra/newview/llteleporthistory.h
@@ -71,7 +71,7 @@ class LLTeleportHistoryItem
  * 
  * @see LLNavigationBar
  */
-class LLTeleportHistory: public LLSingleton<LLTeleportHistory>
+class LLTeleportHistory final : public LLSingleton<LLTeleportHistory>
 {
 	LLSINGLETON(LLTeleportHistory);
 	~LLTeleportHistory();
diff --git a/indra/newview/llteleporthistorystorage.h b/indra/newview/llteleporthistorystorage.h
index c646bb7edfd49c5e6fff6a9c45f531f451be6784..04179f9d1a9dbbdb3f98e4f3de7cd62ad0120946 100644
--- a/indra/newview/llteleporthistorystorage.h
+++ b/indra/newview/llteleporthistorystorage.h
@@ -66,7 +66,7 @@ class LLTeleportHistoryPersistentItem
  * Persistent teleport history.
  *
  */
-class LLTeleportHistoryStorage: public LLSingleton<LLTeleportHistoryStorage>
+class LLTeleportHistoryStorage final : public LLSingleton<LLTeleportHistoryStorage>
 {
 	LLSINGLETON(LLTeleportHistoryStorage);
 	~LLTeleportHistoryStorage();
diff --git a/indra/newview/lltextureatlasmanager.h b/indra/newview/lltextureatlasmanager.h
index 1b8df708c6299abfb79bdb42e6da5bb76f693fa7..772216676cd1c4aa33028e0a9b2c8981133f4d30 100644
--- a/indra/newview/lltextureatlasmanager.h
+++ b/indra/newview/lltextureatlasmanager.h
@@ -83,7 +83,7 @@ class LLTextureAtlasSlot : public LLRefCount
 	U32             mUpdatedTime ;	
 } ;
 
-class LLTextureAtlasManager : public LLSingleton<LLTextureAtlasManager>
+class LLTextureAtlasManager final : public LLSingleton<LLTextureAtlasManager>
 {
 	LLSINGLETON(LLTextureAtlasManager);
 	~LLTextureAtlasManager();
diff --git a/indra/newview/lltexturectrl.h b/indra/newview/lltexturectrl.h
index 3e5d2c257784097118c32917042668dc12bff752..a36662e65f4cdf8bb0a97e2c4917b7b63cd8e4df 100644
--- a/indra/newview/lltexturectrl.h
+++ b/indra/newview/lltexturectrl.h
@@ -252,7 +252,7 @@ typedef boost::function<void()> floater_close_callback;
 typedef boost::function<void(const LLUUID& asset_id)> set_image_asset_id_callback;
 typedef boost::function<void(LLPointer<LLViewerTexture> texture)> set_on_update_image_stats_callback;
 
-class LLFloaterTexturePicker : public LLFloater
+class LLFloaterTexturePicker final : public LLFloater
 {
 public:
 	LLFloaterTexturePicker(
diff --git a/indra/newview/lltoastgroupnotifypanel.h b/indra/newview/lltoastgroupnotifypanel.h
index 269c23798c3a543e802a14a28ed0bd98361a84e5..a4c6f0b42fd40a09872f7ffc4cf2a16e114959ec 100644
--- a/indra/newview/lltoastgroupnotifypanel.h
+++ b/indra/newview/lltoastgroupnotifypanel.h
@@ -40,7 +40,7 @@ class LLButton;
  *
  * Replaces class LLGroupNotifyBox.
  */
-class LLToastGroupNotifyPanel
+class LLToastGroupNotifyPanel final
 :	public LLToastPanel
 {
 public:
diff --git a/indra/newview/lltoastimpanel.h b/indra/newview/lltoastimpanel.h
index 767617dabca83a746bd780f1392cc33161a39a83..e63956c6864468a73464d1353218813913327317 100644
--- a/indra/newview/lltoastimpanel.h
+++ b/indra/newview/lltoastimpanel.h
@@ -35,7 +35,7 @@
 
 class LLGroupIconCtrl;
 
-class LLToastIMPanel: public LLToastPanel 
+class LLToastIMPanel final : public LLToastPanel
 {
 public:
 	struct Params
diff --git a/indra/newview/lltoastnotifypanel.h b/indra/newview/lltoastnotifypanel.h
index a5a637c6fac9e4de3fa9bb27f159c9b600a28623..8bc047c4235ac04af3a3bb301b2083a8c712d7d2 100644
--- a/indra/newview/lltoastnotifypanel.h
+++ b/indra/newview/lltoastnotifypanel.h
@@ -137,7 +137,7 @@ class LLToastNotifyPanel: public LLCheckBoxToastPanel, public LLInstanceTracker<
 	static const LLFontGL* sFontSmall;
 };
 
-class LLIMToastNotifyPanel : public LLToastNotifyPanel
+class LLIMToastNotifyPanel final : public LLToastNotifyPanel
 {
 public:
 
diff --git a/indra/newview/lltoastscriptquestion.h b/indra/newview/lltoastscriptquestion.h
index a756f88415ef5f7e89834ec18d19664097c8ee4f..41634be9fa3af988aadf749e76be36ec0b82c05d 100644
--- a/indra/newview/lltoastscriptquestion.h
+++ b/indra/newview/lltoastscriptquestion.h
@@ -30,7 +30,7 @@
 #ifndef LLTOASTSCRIPTQUESTION_H_
 #define LLTOASTSCRIPTQUESTION_H_
 
-class LLToastScriptQuestion : public LLToastPanel
+class LLToastScriptQuestion final : public LLToastPanel
 {
 	LOG_CLASS(LLToastScriptQuestion);
 
diff --git a/indra/newview/lltoastscripttextbox.h b/indra/newview/lltoastscripttextbox.h
index a539124ef173803535c7e075bb26808ad0f73987..7df5c17b98579926a04e68bcdb1b7284da76aec8 100644
--- a/indra/newview/lltoastscripttextbox.h
+++ b/indra/newview/lltoastscripttextbox.h
@@ -33,7 +33,7 @@
 /**
  * Toast panel for scripted llTextbox notifications.
  */
-class LLToastScriptTextbox
+class LLToastScriptTextbox final
 :	public LLToastPanel
 {
 public:
diff --git a/indra/newview/lltoolbrush.h b/indra/newview/lltoolbrush.h
index c108d8325681b0f54317f5d5899f05444bcb5ae7..9c55a269777843bfb15cd96bd6fdc70adc0676f9 100644
--- a/indra/newview/lltoolbrush.h
+++ b/indra/newview/lltoolbrush.h
@@ -41,7 +41,7 @@ class LLViewerRegion;
 // A toolbrush that modifies the land.
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-class LLToolBrushLand : public LLTool, public LLEditMenuHandler, public LLSingleton<LLToolBrushLand>
+class LLToolBrushLand final : public LLTool, public LLEditMenuHandler, public LLSingleton<LLToolBrushLand>
 {
 	LLSINGLETON(LLToolBrushLand);
 	typedef std::set<LLViewerRegion*> region_list_t;
diff --git a/indra/newview/lltoolcomp.h b/indra/newview/lltoolcomp.h
index 86506f725ef4a93fa3563955759efa453589bd6c..f0aa9ac76c2170b371b189d2d51bf6964d4118e7 100644
--- a/indra/newview/lltoolcomp.h
+++ b/indra/newview/lltoolcomp.h
@@ -101,7 +101,7 @@ class LLToolComposite : public LLTool
 //-----------------------------------------------------------------------
 // LLToolCompTranslate
 
-class LLToolCompInspect : public LLToolComposite, public LLSingleton<LLToolCompInspect>
+class LLToolCompInspect final : public LLToolComposite, public LLSingleton<LLToolCompInspect>
 {
 	LLSINGLETON(LLToolCompInspect);
 	virtual ~LLToolCompInspect();
@@ -126,7 +126,7 @@ class LLToolCompInspect : public LLToolComposite, public LLSingleton<LLToolCompI
 //-----------------------------------------------------------------------
 // LLToolCompTranslate
 
-class LLToolCompTranslate : public LLToolComposite, public LLSingleton<LLToolCompTranslate>
+class LLToolCompTranslate final : public LLToolComposite, public LLSingleton<LLToolCompTranslate>
 {
 	LLSINGLETON(LLToolCompTranslate);
 	virtual ~LLToolCompTranslate();
@@ -147,7 +147,7 @@ class LLToolCompTranslate : public LLToolComposite, public LLSingleton<LLToolCom
 //-----------------------------------------------------------------------
 // LLToolCompScale
 
-class LLToolCompScale : public LLToolComposite, public LLSingleton<LLToolCompScale>
+class LLToolCompScale final : public LLToolComposite, public LLSingleton<LLToolCompScale>
 {
 	LLSINGLETON(LLToolCompScale);
 	virtual ~LLToolCompScale();
@@ -169,7 +169,7 @@ class LLToolCompScale : public LLToolComposite, public LLSingleton<LLToolCompSca
 //-----------------------------------------------------------------------
 // LLToolCompRotate
 
-class LLToolCompRotate : public LLToolComposite, public LLSingleton<LLToolCompRotate>
+class LLToolCompRotate final : public LLToolComposite, public LLSingleton<LLToolCompRotate>
 {
 	LLSINGLETON(LLToolCompRotate);
 	virtual ~LLToolCompRotate();
@@ -192,7 +192,7 @@ class LLToolCompRotate : public LLToolComposite, public LLSingleton<LLToolCompRo
 //-----------------------------------------------------------------------
 // LLToolCompCreate
 
-class LLToolCompCreate : public LLToolComposite, public LLSingleton<LLToolCompCreate>
+class LLToolCompCreate final : public LLToolComposite, public LLSingleton<LLToolCompCreate>
 {
 	LLSINGLETON(LLToolCompCreate);
 	virtual ~LLToolCompCreate();
@@ -217,7 +217,7 @@ class LLToolGun;
 class LLToolGrabBase;
 class LLToolSelect;
 
-class LLToolCompGun : public LLToolComposite, public LLSingleton<LLToolCompGun>
+class LLToolCompGun final : public LLToolComposite, public LLSingleton<LLToolCompGun>
 {
 	LLSINGLETON(LLToolCompGun);
 	virtual ~LLToolCompGun();
diff --git a/indra/newview/lltooldraganddrop.h b/indra/newview/lltooldraganddrop.h
index 24a712029c9e30ed735f8e75335be0382a3a434e..d3fdb6d3c0e4b5cd80c19596252792cf4f6f4f9b 100644
--- a/indra/newview/lltooldraganddrop.h
+++ b/indra/newview/lltooldraganddrop.h
@@ -41,7 +41,7 @@ class LLViewerRegion;
 class LLVOAvatar;
 class LLPickInfo;
 
-class LLToolDragAndDrop : public LLTool, public LLSingleton<LLToolDragAndDrop>
+class LLToolDragAndDrop final : public LLTool, public LLSingleton<LLToolDragAndDrop>
 {
 	LLSINGLETON(LLToolDragAndDrop);
 public:
@@ -279,7 +279,7 @@ class LLToolDragAndDrop : public LLTool, public LLSingleton<LLToolDragAndDrop>
 						 dragOrDrop3dImpl f_land);
 		dragOrDrop3dImpl mFunctions[DT_COUNT];
 	};	
-	class LLDragAndDropDictionary : public LLSingleton<LLDragAndDropDictionary>,
+	class LLDragAndDropDictionary final : public LLSingleton<LLDragAndDropDictionary>,
 									public LLDictionary<EDragAndDropType, DragAndDropEntry>
 	{
 		LLSINGLETON(LLDragAndDropDictionary);
diff --git a/indra/newview/lltoolface.h b/indra/newview/lltoolface.h
index e4b8ae12b87d4a62e95e727feee1527acc97b149..0e13c5296c1051fb443b942a4310b58f95938832 100644
--- a/indra/newview/lltoolface.h
+++ b/indra/newview/lltoolface.h
@@ -32,7 +32,7 @@
 class LLViewerObject;
 class LLPickInfo;
 
-class LLToolFace
+class LLToolFace final
 :	public LLTool, public LLSingleton<LLToolFace>
 {
 	LLSINGLETON(LLToolFace);
diff --git a/indra/newview/lltoolfocus.h b/indra/newview/lltoolfocus.h
index cfc235b6c2a411fba999d95e0de805f7fb13b532..20c48425a6693f5f457c5b1e200c081df63a28a6 100644
--- a/indra/newview/lltoolfocus.h
+++ b/indra/newview/lltoolfocus.h
@@ -31,7 +31,7 @@
 
 class LLPickInfo;
 
-class LLToolCamera
+class LLToolCamera final
 :	public LLTool, public LLSingleton<LLToolCamera>
 {
 	LLSINGLETON(LLToolCamera);
diff --git a/indra/newview/lltoolgrab.h b/indra/newview/lltoolgrab.h
index 02ed5c26d752c9ffb3eeddaf0cf73ca7002a8f1f..b1c292ed85e14cafa00f2fb10e9f2820844049de 100644
--- a/indra/newview/lltoolgrab.h
+++ b/indra/newview/lltoolgrab.h
@@ -146,7 +146,7 @@ class LLToolGrabBase : public LLTool
 };
 
 /// This is the LLSingleton instance of LLToolGrab.
-class LLToolGrab : public LLToolGrabBase, public LLSingleton<LLToolGrab>
+class LLToolGrab final : public LLToolGrabBase, public LLSingleton<LLToolGrab>
 {
 	LLSINGLETON_EMPTY_CTOR(LLToolGrab);
 };
diff --git a/indra/newview/lltoolindividual.h b/indra/newview/lltoolindividual.h
index e7c2060fba01909da6a84bc444dc7f03d9e256bf..a28e6d02f4cb1b7164bf5d3745c6e6a56469daf0 100644
--- a/indra/newview/lltoolindividual.h
+++ b/indra/newview/lltoolindividual.h
@@ -37,7 +37,7 @@ class LLPickInfo;
 // A tool to select individual objects rather than linked sets.
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-class LLToolIndividual : public LLTool, public LLSingleton<LLToolIndividual>
+class LLToolIndividual final : public LLTool, public LLSingleton<LLToolIndividual>
 {
 	LLSINGLETON(LLToolIndividual);
 	virtual ~LLToolIndividual();
diff --git a/indra/newview/lltoolmgr.h b/indra/newview/lltoolmgr.h
index d5ec645949cbe120369d9286d090171ae5573bf6..17bf2978d2aec77730189ce5e2615d8ab06afe83 100644
--- a/indra/newview/lltoolmgr.h
+++ b/indra/newview/lltoolmgr.h
@@ -40,7 +40,7 @@ const MASK MASK_ORBIT			= MASK_CONTROL;
 const MASK MASK_PAN				= MASK_CONTROL | MASK_SHIFT;
 const MASK MASK_COPY			= MASK_SHIFT;
 
-class LLToolMgr : public LLSingleton<LLToolMgr>
+class LLToolMgr final : public LLSingleton<LLToolMgr>
 {
 	LLSINGLETON(LLToolMgr);
 	~LLToolMgr();
diff --git a/indra/newview/lltoolobjpicker.h b/indra/newview/lltoolobjpicker.h
index 5ad9b67e217859e85709603b33b0ea29b775e53b..1680ee53b9bfa5780820fcaf3099ffddb5856b6c 100644
--- a/indra/newview/lltoolobjpicker.h
+++ b/indra/newview/lltoolobjpicker.h
@@ -33,7 +33,7 @@
 
 class LLPickInfo;
 
-class LLToolObjPicker : public LLTool, public LLSingleton<LLToolObjPicker>
+class LLToolObjPicker final : public LLTool, public LLSingleton<LLToolObjPicker>
 {
 	LLSINGLETON(LLToolObjPicker);
 public:
diff --git a/indra/newview/lltoolpie.h b/indra/newview/lltoolpie.h
index 8b776904a2aa588f38c9cae0f50c458196c9c669..2ac6b3521803c3461929cfa0c92ec83bd4a1e297 100644
--- a/indra/newview/lltoolpie.h
+++ b/indra/newview/lltoolpie.h
@@ -35,7 +35,7 @@
 class LLViewerObject;
 class LLObjectSelection;
 
-class LLToolPie : public LLTool, public LLSingleton<LLToolPie>
+class LLToolPie final : public LLTool, public LLSingleton<LLToolPie>
 {
 	LLSINGLETON(LLToolPie);
 	LOG_CLASS(LLToolPie);
diff --git a/indra/newview/lltoolpipette.h b/indra/newview/lltoolpipette.h
index 7575d8ad18454b60ad66451af839338b4efdc6d0..85c388ca80b62a29378c47101801fa7cbc930c38 100644
--- a/indra/newview/lltoolpipette.h
+++ b/indra/newview/lltoolpipette.h
@@ -40,7 +40,7 @@
 class LLViewerObject;
 class LLPickInfo;
 
-class LLToolPipette
+class LLToolPipette final
 :	public LLTool, public LLSingleton<LLToolPipette>
 {
 	LLSINGLETON(LLToolPipette);
diff --git a/indra/newview/lltoolselectland.h b/indra/newview/lltoolselectland.h
index b5ba72f16d5d0073e3bcb6127cf12c136b1352c4..3306b07da5c7fc31dd11642fb61cfe121784e235 100644
--- a/indra/newview/lltoolselectland.h
+++ b/indra/newview/lltoolselectland.h
@@ -32,7 +32,7 @@
 
 class LLParcelSelection;
 
-class LLToolSelectLand
+class LLToolSelectLand final
 :	public LLTool, public LLSingleton<LLToolSelectLand>
 {
 	LLSINGLETON(LLToolSelectLand);
diff --git a/indra/newview/lltrackpicker.h b/indra/newview/lltrackpicker.h
index dab3b72915b0f70c5ed5543b28a84151d8cc701e..061e688b832d842653725135a920f0d5113c3964 100644
--- a/indra/newview/lltrackpicker.h
+++ b/indra/newview/lltrackpicker.h
@@ -33,7 +33,7 @@
 
 //=========================================================================
 
-class LLFloaterTrackPicker : public LLFloater
+class LLFloaterTrackPicker final : public LLFloater
 {
 public:
     LLFloaterTrackPicker(LLView * owner, const LLSD &params = LLSD());
diff --git a/indra/newview/lltransientfloatermgr.h b/indra/newview/lltransientfloatermgr.h
index d126543f1535b9cec4128121c1ff500d954c428e..bd3a4a6477582328156e8ee59adae05af3fcf119 100644
--- a/indra/newview/lltransientfloatermgr.h
+++ b/indra/newview/lltransientfloatermgr.h
@@ -36,7 +36,7 @@ class LLTransientFloater;
 /**
  * Provides functionality to hide transient floaters.
  */
-class LLTransientFloaterMgr: public LLSingleton<LLTransientFloaterMgr>
+class LLTransientFloaterMgr final : public LLSingleton<LLTransientFloaterMgr>
 {
 	LLSINGLETON(LLTransientFloaterMgr);
 
diff --git a/indra/newview/llurlwhitelist.h b/indra/newview/llurlwhitelist.h
index c2511b08fd8da4a9fec2220c8d00197453d45907..d885d3c16b55fbbfd69deca78264ebc828380025 100644
--- a/indra/newview/llurlwhitelist.h
+++ b/indra/newview/llurlwhitelist.h
@@ -30,7 +30,7 @@
 
 #include <list>
 
-class LLUrlWhiteList : public LLSingleton<LLUrlWhiteList>
+class LLUrlWhiteList final : public LLSingleton<LLUrlWhiteList>
 {
 	LLSINGLETON(LLUrlWhiteList);
 	~LLUrlWhiteList();
diff --git a/indra/newview/llversioninfo.h b/indra/newview/llversioninfo.h
index 02ff0c094aaa96fab6d5d5e5aeeebb52ed9ec46d..b543ba7d146d5d220f68a6666f80541d5ccf0193 100644
--- a/indra/newview/llversioninfo.h
+++ b/indra/newview/llversioninfo.h
@@ -44,7 +44,7 @@ class LLStoreListener;
 /// viewer code that wants to query the current version should 
 /// use this API.
 ///
-class LLVersionInfo: public LLSingleton<LLVersionInfo>
+class LLVersionInfo final : public LLSingleton<LLVersionInfo>
 {
 	LLSINGLETON(LLVersionInfo);
 	void initSingleton();
diff --git a/indra/newview/llviewerassettype.cpp b/indra/newview/llviewerassettype.cpp
index 4804ef6ddcb4f19583a0de80acd9a9e410d02f09..75eed356d34bb703da11e71671352cbd82d965c0 100644
--- a/indra/newview/llviewerassettype.cpp
+++ b/indra/newview/llviewerassettype.cpp
@@ -45,7 +45,7 @@ struct ViewerAssetEntry : public LLDictionaryEntry
 	EDragAndDropType mDadType;
 };
 
-class LLViewerAssetDictionary : public LLSingleton<LLViewerAssetDictionary>,
+class LLViewerAssetDictionary final : public LLSingleton<LLViewerAssetDictionary>,
 						  public LLDictionary<LLViewerAssetType::EType, ViewerAssetEntry>
 {
 	LLSINGLETON(LLViewerAssetDictionary);
diff --git a/indra/newview/llviewerfoldertype.cpp b/indra/newview/llviewerfoldertype.cpp
index 0efae1e38a4997906d84bec14394c05f89e72331..dc95bf25c67361015758f7221f56a55450f59908 100644
--- a/indra/newview/llviewerfoldertype.cpp
+++ b/indra/newview/llviewerfoldertype.cpp
@@ -100,7 +100,7 @@ struct ViewerFolderEntry : public LLDictionaryEntry
 	bool mHideIfEmpty;
 };
 
-class LLViewerFolderDictionary : public LLSingleton<LLViewerFolderDictionary>,
+class LLViewerFolderDictionary final : public LLSingleton<LLViewerFolderDictionary>,
 								 public LLDictionary<LLFolderType::EType, ViewerFolderEntry>
 {
 	LLSINGLETON(LLViewerFolderDictionary);
diff --git a/indra/newview/llviewerhelp.h b/indra/newview/llviewerhelp.h
index da50e07a4362a092c2241e26929dbf6be5f52a87..252dfedfb374e76e864a965ba66eeed8b89a9814 100644
--- a/indra/newview/llviewerhelp.h
+++ b/indra/newview/llviewerhelp.h
@@ -37,7 +37,7 @@
 
 class LLUICtrl;
 
-class LLViewerHelp : public LLHelp, public LLSingleton<LLViewerHelp>
+class LLViewerHelp final : public LLHelp, public LLSingleton<LLViewerHelp>
 {
 	LLSINGLETON_EMPTY_CTOR(LLViewerHelp);
 
diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp
index cd2409dadbf07e1becf46575c5eb774358f15daf..47cae6f6136e7625f6a7e0e39cd556524b0bb197 100644
--- a/indra/newview/llviewerinventory.cpp
+++ b/indra/newview/llviewerinventory.cpp
@@ -97,7 +97,7 @@ void doInventoryCb(LLPointer<LLInventoryCallback> cb, LLUUID id)
 ///----------------------------------------------------------------------------
 /// Helper class to store special inventory item names and their localized values.
 ///----------------------------------------------------------------------------
-class LLLocalizedInventoryItemsDictionary : public LLSingleton<LLLocalizedInventoryItemsDictionary>
+class LLLocalizedInventoryItemsDictionary final : public LLSingleton<LLLocalizedInventoryItemsDictionary>
 {
 	LLSINGLETON(LLLocalizedInventoryItemsDictionary);
 public:
diff --git a/indra/newview/llviewerjoystick.h b/indra/newview/llviewerjoystick.h
index 016b435ee84648a54f4f04bf7d9baef7fe9cc847..7bf2ec83fc0025fe331813fdefb0176053719c4e 100644
--- a/indra/newview/llviewerjoystick.h
+++ b/indra/newview/llviewerjoystick.h
@@ -43,7 +43,7 @@ typedef enum e_joystick_driver_state
 	JDS_INITIALIZING
 } EJoystickDriverState;
 
-class LLViewerJoystick : public LLSingleton<LLViewerJoystick>
+class LLViewerJoystick final : public LLSingleton<LLViewerJoystick>
 {
 	LLSINGLETON(LLViewerJoystick);
 	virtual ~LLViewerJoystick();
diff --git a/indra/newview/llviewerkeyboard.cpp b/indra/newview/llviewerkeyboard.cpp
index 2d0cea41944da4710cb982ee3624574fdfee7998..afbabe4c7c09952ca36306784eb36b72566410b8 100644
--- a/indra/newview/llviewerkeyboard.cpp
+++ b/indra/newview/llviewerkeyboard.cpp
@@ -54,7 +54,7 @@ const F32 NUDGE_TIME = 0.25f;  // in seconds
 const S32 NUDGE_FRAMES = 2;
 const F32 ORBIT_NUDGE_RATE = 0.05f;  // fraction of normal speed
 
-struct LLKeyboardActionRegistry 
+struct LLKeyboardActionRegistry final
 :	public LLRegistrySingleton<std::string, boost::function<void (EKeystate keystate)>, LLKeyboardActionRegistry>
 {
 	LLSINGLETON_EMPTY_CTOR(LLKeyboardActionRegistry);
diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h
index 512c5a827992dca4d376b82f96362210b61fa408..6729c046666a7ed8c4eb18ba70d7770d63fb4b84 100644
--- a/indra/newview/llviewermedia.h
+++ b/indra/newview/llviewermedia.h
@@ -70,7 +70,7 @@ class LLViewerMediaEventEmitter
 
 class LLViewerMediaImpl;
 
-class LLViewerMedia: public LLSingleton<LLViewerMedia>
+class LLViewerMedia final : public LLSingleton<LLViewerMedia>
 {
 	LLSINGLETON(LLViewerMedia);
 	~LLViewerMedia();
diff --git a/indra/newview/llviewermediafocus.h b/indra/newview/llviewermediafocus.h
index fa469c36e3a1f5c81361951538816730c1103eee..25f6e153be01ce77f7bd45ef78ec9f2aa7501b52 100644
--- a/indra/newview/llviewermediafocus.h
+++ b/indra/newview/llviewermediafocus.h
@@ -37,7 +37,7 @@
 class LLViewerMediaImpl;
 class LLPanelPrimMediaControls;
 
-class LLViewerMediaFocus : 
+class LLViewerMediaFocus final :
 	public LLFocusableElement, 
 	public LLSingleton<LLViewerMediaFocus>
 {
diff --git a/indra/newview/llviewernetwork.h b/indra/newview/llviewernetwork.h
index 4c87720374d21d4ffd5471c6b204dd50bcdef7c0..f680550ea3fa2a7776b86b7042b09b46c9827351 100644
--- a/indra/newview/llviewernetwork.h
+++ b/indra/newview/llviewernetwork.h
@@ -56,7 +56,7 @@ class LLInvalidGridName
  * This class maintains the currently selected grid, and provides short
  * form accessors for each of the properties of the selected grid.
  **/
-class LLGridManager : public LLSingleton<LLGridManager>
+class LLGridManager final : public LLSingleton<LLGridManager>
 {
 	/// Instantiate the grid manager, load default grids, selects the default grid
 	LLSINGLETON(LLGridManager);
diff --git a/indra/newview/llviewerparcelaskplay.h b/indra/newview/llviewerparcelaskplay.h
index dc711917d29368f1e755d6ecd0594a6833782e31..24457d2ef1a25fd5bf947dcc9519bd6a12ee7b08 100644
--- a/indra/newview/llviewerparcelaskplay.h
+++ b/indra/newview/llviewerparcelaskplay.h
@@ -30,7 +30,7 @@
 #include "llnotificationptr.h"
 #include "lluuid.h"
 
-class LLViewerParcelAskPlay : public LLSingleton<LLViewerParcelAskPlay>
+class LLViewerParcelAskPlay final : public LLSingleton<LLViewerParcelAskPlay>
 {
     LLSINGLETON(LLViewerParcelAskPlay);
     ~LLViewerParcelAskPlay();
diff --git a/indra/newview/llviewerparcelmedia.h b/indra/newview/llviewerparcelmedia.h
index 779a65bdf83a5cb239b485e2379bc21ec2675658..d796666530148715bf56439d3d469c3809f0e85d 100644
--- a/indra/newview/llviewerparcelmedia.h
+++ b/indra/newview/llviewerparcelmedia.h
@@ -37,7 +37,7 @@ class LLViewerParcelMediaNavigationObserver;
 // This class understands land parcels, network traffic, LSL media
 // transport commands, and talks to the LLViewerMedia class to actually
 // do playback.  It allows us to remove code from LLViewerParcelMgr.
-class LLViewerParcelMedia : public LLViewerMediaObserver, public LLSingleton<LLViewerParcelMedia>
+class LLViewerParcelMedia final : public LLViewerMediaObserver, public LLSingleton<LLViewerParcelMedia>
 {
 	LLSINGLETON(LLViewerParcelMedia);
 	~LLViewerParcelMedia();
diff --git a/indra/newview/llviewerparcelmediaautoplay.h b/indra/newview/llviewerparcelmediaautoplay.h
index cf8e9a97e76149346c1ab932bf930a795de9b40d..545dc1e3d52b20e9d400ecd495461a51c4a86df2 100644
--- a/indra/newview/llviewerparcelmediaautoplay.h
+++ b/indra/newview/llviewerparcelmediaautoplay.h
@@ -31,7 +31,7 @@
 #include "lluuid.h"
 
 // timer to automatically play media
-class LLViewerParcelMediaAutoPlay : LLEventTimer, public LLSingleton<LLViewerParcelMediaAutoPlay>
+class LLViewerParcelMediaAutoPlay final : LLEventTimer, public LLSingleton<LLViewerParcelMediaAutoPlay>
 {
 	LLSINGLETON(LLViewerParcelMediaAutoPlay);
 public:
diff --git a/indra/newview/llviewerstats.h b/indra/newview/llviewerstats.h
index ad732b55f9635f87f5a423452564dd9a1251f199..32e18bf25d7a8070218a5729273b0733696744f1 100644
--- a/indra/newview/llviewerstats.h
+++ b/indra/newview/llviewerstats.h
@@ -244,7 +244,7 @@ extern LLTrace::EventStatHandle<LLUnit<F32, LLUnits::Percent> > OBJECT_CACHE_HIT
 
 }
 
-class LLViewerStats : public LLSingleton<LLViewerStats>
+class LLViewerStats final : public LLSingleton<LLViewerStats>
 {
 	LLSINGLETON(LLViewerStats);
 	~LLViewerStats();
diff --git a/indra/newview/llviewerstatsrecorder.h b/indra/newview/llviewerstatsrecorder.h
index c974bea49de5f38cdb55016809c719ab72dd1446..9764b50ec9dc594440b1e3dcea78cfd2eae14fdc 100644
--- a/indra/newview/llviewerstatsrecorder.h
+++ b/indra/newview/llviewerstatsrecorder.h
@@ -42,7 +42,7 @@
 class LLMutex;
 class LLViewerObject;
 
-class LLViewerStatsRecorder : public LLSingleton<LLViewerStatsRecorder>
+class LLViewerStatsRecorder final : public LLSingleton<LLViewerStatsRecorder>
 {
 	LLSINGLETON(LLViewerStatsRecorder);
 	LOG_CLASS(LLViewerStatsRecorder);
diff --git a/indra/newview/llviewertexturelist.h b/indra/newview/llviewertexturelist.h
index 281d23c671c862e11b58ddd7c11d8ae029535ab1..7a6a85f580a62beb2307360fb32f873496249068 100644
--- a/indra/newview/llviewertexturelist.h
+++ b/indra/newview/llviewertexturelist.h
@@ -232,7 +232,7 @@ class LLViewerTextureList
     LOG_CLASS(LLViewerTextureList);
 };
 
-class LLUIImageList : public LLImageProviderInterface, public LLSingleton<LLUIImageList>
+class LLUIImageList final : public LLImageProviderInterface, public LLSingleton<LLUIImageList>
 {
 	LLSINGLETON_EMPTY_CTOR(LLUIImageList);
 public:
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 2f80a133d09711e5dff7c2b7e60c4ec954c2029d..1a12d1c55d431a3a2423feb850b5799cfc661f53 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -296,7 +296,7 @@ class RecordToChatConsoleRecorder : public LLError::Recorder
 	}
 };
 
-class RecordToChatConsole : public LLSingleton<RecordToChatConsole>
+class RecordToChatConsole final : public LLSingleton<RecordToChatConsole>
 {
 	LLSINGLETON(RecordToChatConsole);
 public:
@@ -1981,7 +1981,7 @@ void LLViewerWindow::initGLDefaults()
 	gBox.prerender();
 }
 
-struct MainPanel : public LLPanel
+struct MainPanel final : public LLPanel
 {
 };
 
diff --git a/indra/newview/llvlcomposition.h b/indra/newview/llvlcomposition.h
index 2dd04ac5a5cb74544213930ac31cb396df5cf378..75c15e7a62c23eeb9ddf3eded2854c1e5a960997 100644
--- a/indra/newview/llvlcomposition.h
+++ b/indra/newview/llvlcomposition.h
@@ -32,7 +32,7 @@
 
 class LLSurface;
 
-class LLVLComposition : public LLViewerLayer
+class LLVLComposition final : public LLViewerLayer
 {
 public:
 	LLVLComposition(LLSurface *surfacep, const U32 width, const F32 scale);
diff --git a/indra/newview/llvocache.cpp b/indra/newview/llvocache.cpp
index 07660ca6ac16efc94a662da152592ef40c066abf..23bf2a6376b2228c5a019c8eca38f3991800bab1 100644
--- a/indra/newview/llvocache.cpp
+++ b/indra/newview/llvocache.cpp
@@ -677,7 +677,7 @@ void LLVOCachePartition::removeEntry(LLViewerOctreeEntry* entry)
 	llassert(!entry->getGroup());
 }
 	
-class LLVOCacheOctreeCull : public LLViewerOctreeCull
+class LLVOCacheOctreeCull final : public LLViewerOctreeCull
 {
 public:
 	LLVOCacheOctreeCull(LLCamera* camera, LLViewerRegion* regionp, 
@@ -798,7 +798,7 @@ class LLVOCacheOctreeCull : public LLViewerOctreeCull
 };
 
 //select objects behind camera
-class LLVOCacheOctreeBackCull : public LLViewerOctreeCull
+class LLVOCacheOctreeBackCull final : public LLViewerOctreeCull
 {
 public:
 	LLVOCacheOctreeBackCull(LLCamera* camera, const LLVector3& shift, LLViewerRegion* regionp, F32 pixel_threshold, bool use_occlusion) 
diff --git a/indra/newview/llvoicechannel.h b/indra/newview/llvoicechannel.h
index 309c3eebddfea599b9decd08d3dc362fe096457b..d7928c262a455b07aaa259a09bb505ab2414375e 100644
--- a/indra/newview/llvoicechannel.h
+++ b/indra/newview/llvoicechannel.h
@@ -165,7 +165,7 @@ class LLVoiceChannelGroup : public LLVoiceChannel
 	BOOL mIsRetrying;
 };
 
-class LLVoiceChannelProximal : public LLVoiceChannel, public LLSingleton<LLVoiceChannelProximal>
+class LLVoiceChannelProximal final : public LLVoiceChannel, public LLSingleton<LLVoiceChannelProximal>
 {
 	LLSINGLETON(LLVoiceChannelProximal);
 public:
@@ -179,7 +179,7 @@ class LLVoiceChannelProximal : public LLVoiceChannel, public LLSingleton<LLVoice
 
 };
 
-class LLVoiceChannelP2P : public LLVoiceChannelGroup
+class LLVoiceChannelP2P final : public LLVoiceChannelGroup
 {
 public:
 	LLVoiceChannelP2P(const LLUUID& session_id, const std::string& session_name, const LLUUID& other_user_id);
diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp
index cc590fc947cf1b42d192942d468fda53656a963e..2cfa45584a4356e948f3507bb041ba97c9424f1a 100644
--- a/indra/newview/llvoiceclient.cpp
+++ b/indra/newview/llvoiceclient.cpp
@@ -46,7 +46,7 @@ const F32 LLVoiceClient::VOLUME_MAX = 1.0f;
 
 
 // Support for secondlife:///app/voice SLapps
-class LLVoiceHandler : public LLCommandHandler
+class LLVoiceHandler final : public LLCommandHandler
 {
 public:
 	// requests will be throttled from a non-trusted browser
@@ -892,7 +892,7 @@ LLVoiceEffectInterface* LLVoiceClient::getVoiceEffectInterface() const
 ///////////////////
 // version checking
 
-class LLViewerRequiredVoiceVersion : public LLHTTPNode
+class LLViewerRequiredVoiceVersion final : public LLHTTPNode
 {
 	static BOOL sAlertedUser;
 	virtual void post(
@@ -923,7 +923,7 @@ class LLViewerRequiredVoiceVersion : public LLHTTPNode
 	}
 };
 
-class LLViewerParcelVoiceInfo : public LLHTTPNode
+class LLViewerParcelVoiceInfo final : public LLHTTPNode
 {
 	virtual void post(
 					  LLHTTPNode::ResponsePtr response,
diff --git a/indra/newview/llvoiceclient.h b/indra/newview/llvoiceclient.h
index 3d04e1f0dbe0c6c0e45734a2140ddc42753cddf7..4e4cb381e3de166bb2ad033a9d12c985a8437981 100644
--- a/indra/newview/llvoiceclient.h
+++ b/indra/newview/llvoiceclient.h
@@ -310,7 +310,7 @@ class LLVoiceEffectInterface
 };
 
 
-class LLVoiceClient: public LLParamSingleton<LLVoiceClient>
+class LLVoiceClient final : public LLParamSingleton<LLVoiceClient>
 {
 	LLSINGLETON(LLVoiceClient, LLPumpIO *pump);
 	LOG_CLASS(LLVoiceClient);
@@ -497,7 +497,7 @@ class LLVoiceClient: public LLParamSingleton<LLVoiceClient>
 /**
  * Speaker volume storage helper class
  **/
-class LLSpeakerVolumeStorage : public LLSingleton<LLSpeakerVolumeStorage>
+class LLSpeakerVolumeStorage final : public LLSingleton<LLSpeakerVolumeStorage>
 {
 	LLSINGLETON(LLSpeakerVolumeStorage);
 	~LLSpeakerVolumeStorage();
diff --git a/indra/newview/llvoicevivox.h b/indra/newview/llvoicevivox.h
index 6399e4132b6dd0d9314a4391be292b1802b2c31a..bc2719dbd747144c56880a5f10bd787ab9498ab9 100644
--- a/indra/newview/llvoicevivox.h
+++ b/indra/newview/llvoicevivox.h
@@ -52,7 +52,7 @@ class LLAvatarName;
 class LLVivoxVoiceClientMuteListObserver;
 
 
-class LLVivoxVoiceClient :	public LLSingleton<LLVivoxVoiceClient>,
+class LLVivoxVoiceClient final : public LLSingleton<LLVivoxVoiceClient>,
 							virtual public LLVoiceModuleInterface,
 							virtual public LLVoiceEffectInterface
 {
@@ -1026,7 +1026,7 @@ class LLVivoxProtocolParser : public LLIOPipe
 
 };
 
-class LLVivoxSecurity :	public LLSingleton<LLVivoxSecurity>
+class LLVivoxSecurity final : public LLSingleton<LLVivoxSecurity>
 {
     LLSINGLETON(LLVivoxSecurity);
     virtual ~LLVivoxSecurity();
@@ -1040,7 +1040,7 @@ class LLVivoxSecurity :	public LLSingleton<LLVivoxSecurity>
     std::string     mAccountHandle;
 };
 
-class LLVoiceVivoxStats : public LLSingleton<LLVoiceVivoxStats>
+class LLVoiceVivoxStats final : public LLSingleton<LLVoiceVivoxStats>
 {
     LLSINGLETON(LLVoiceVivoxStats);
     LOG_CLASS(LLVoiceVivoxStats);
diff --git a/indra/newview/llvosurfacepatch.cpp b/indra/newview/llvosurfacepatch.cpp
index 897bace4e1ca9b0b3cc6aa8d52e9fd0f3d26f4c1..c8db7dc42c476552a01f50e338a24cb060c0336f 100644
--- a/indra/newview/llvosurfacepatch.cpp
+++ b/indra/newview/llvosurfacepatch.cpp
@@ -47,7 +47,7 @@ F32 LLVOSurfacePatch::sLODFactor = 1.f;
 
 //============================================================================
 
-class LLVertexBufferTerrain : public LLVertexBuffer
+class LLVertexBufferTerrain final : public LLVertexBuffer
 {
 public:
 	LLVertexBufferTerrain() :
diff --git a/indra/newview/llwatchdog.cpp b/indra/newview/llwatchdog.cpp
index 6273f10c697f80ebf435bc4d4654fee3ce396df5..edb8b134438d6ddce4def139b387300f39aba537 100644
--- a/indra/newview/llwatchdog.cpp
+++ b/indra/newview/llwatchdog.cpp
@@ -41,7 +41,7 @@ void default_killer_callback()
 }
 
 // This class runs the watchdog timing thread.
-class LLWatchdogTimerThread : public LLThread
+class LLWatchdogTimerThread final : public LLThread
 {
 public:
 	LLWatchdogTimerThread() : 
diff --git a/indra/newview/llwatchdog.h b/indra/newview/llwatchdog.h
index 9a6624258e90f43c43a114fa1250d579b45ec990..3630baf3d385b78127c09f2f712d1b122d625d5f 100644
--- a/indra/newview/llwatchdog.h
+++ b/indra/newview/llwatchdog.h
@@ -50,7 +50,7 @@ class LLWatchdogEntry
 	virtual void stop();
 };
 
-class LLWatchdogTimeout : public LLWatchdogEntry
+class LLWatchdogTimeout final : public LLWatchdogEntry
 {
 public:
 	LLWatchdogTimeout();
@@ -73,7 +73,7 @@ class LLWatchdogTimeout : public LLWatchdogEntry
 };
 
 class LLWatchdogTimerThread; // Defined in the cpp
-class LLWatchdog : public LLSingleton<LLWatchdog>
+class LLWatchdog final : public LLSingleton<LLWatchdog>
 {
 	LLSINGLETON(LLWatchdog);
 	~LLWatchdog();
diff --git a/indra/newview/llwearableitemslist.h b/indra/newview/llwearableitemslist.h
index f3182ed163b4669b4e44f644e601d8f38358dbce..2d6ea7737559725cccd268844b6cebf5deb4c7d5 100644
--- a/indra/newview/llwearableitemslist.h
+++ b/indra/newview/llwearableitemslist.h
@@ -409,7 +409,7 @@ class LLWearableItemsList : public LLInventoryItemsList
 	 * (e.g. for items selected across multiple wearable lists),
 	 * so making it a singleton.
 	 */
-	class ContextMenu : public LLListContextMenu, public LLSingleton<ContextMenu>
+	class ContextMenu final : public LLListContextMenu, public LLSingleton<ContextMenu>
 	{
 		LLSINGLETON(ContextMenu);
 	public:
diff --git a/indra/newview/llwearablelist.h b/indra/newview/llwearablelist.h
index 782f7751e59f19f8702a0ea81f52a7df4510d3ea..8a13d1db47c27350226c314987893038ee4c56d4 100644
--- a/indra/newview/llwearablelist.h
+++ b/indra/newview/llwearablelist.h
@@ -39,7 +39,7 @@
    inventory items pointing to the same asset (i.e. more than one ItemID
    per assetID).  EXT-6252
 */
-class LLWearableList : public LLSingleton<LLWearableList>
+class LLWearableList final : public LLSingleton<LLWearableList>
 {
 	LLSINGLETON_EMPTY_CTOR(LLWearableList);
 	~LLWearableList();
diff --git a/indra/newview/llwindebug.h b/indra/newview/llwindebug.h
index 524adba652960c849583ae81b253f782cea679fe..5b1cbd0a4c358e96bd252c29ed690651c7413a75 100644
--- a/indra/newview/llwindebug.h
+++ b/indra/newview/llwindebug.h
@@ -35,7 +35,7 @@
 #include <dbghelp.h>
 #pragma warning (pop)
 
-class LLWinDebug:
+class LLWinDebug final :
 	public LLSingleton<LLWinDebug>
 {
 	LLSINGLETON_EMPTY_CTOR(LLWinDebug);
diff --git a/indra/newview/llwindowlistener.h b/indra/newview/llwindowlistener.h
index 7af5ab3b9f07363a81deda7c5da85bd87ead0a74..e870eae930047c89995cba40216510ee16b72f85 100644
--- a/indra/newview/llwindowlistener.h
+++ b/indra/newview/llwindowlistener.h
@@ -33,7 +33,7 @@
 class LLKeyboard;
 class LLViewerWindow;
 
-class LLWindowListener : public LLEventAPI
+class LLWindowListener final : public LLEventAPI
 {
 public:
 	typedef boost::function<LLKeyboard*()> KeyboardGetter;
diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp
index ec9c09e81c49992492d07839ec30484b905dfd1c..4f854b832f16a6f1f4c8cfe9067d5f16ce4bd837 100644
--- a/indra/newview/llworld.cpp
+++ b/indra/newview/llworld.cpp
@@ -1172,7 +1172,7 @@ void process_enable_simulator(LLMessageSystem *msg, void **user_data)
 	msg->sendReliable(sim);
 }
 
-class LLEstablishAgentCommunication : public LLHTTPNode
+class LLEstablishAgentCommunication final : public LLHTTPNode
 {
 	LOG_CLASS(LLEstablishAgentCommunication);
 public:
diff --git a/indra/newview/llworldmap.h b/indra/newview/llworldmap.h
index 4bb27268bb75bb316e8e09eb2ee9b02f60d131fc..337d2b2a855730f0dd8cfe8693e1ac50a22c4c96 100644
--- a/indra/newview/llworldmap.h
+++ b/indra/newview/llworldmap.h
@@ -193,7 +193,7 @@ const S32 MAP_MAX_SIZE = 2048;
 const S32 MAP_BLOCK_SIZE = 4;
 const S32 MAP_BLOCK_RES = (MAP_MAX_SIZE / MAP_BLOCK_SIZE);
 
-class LLWorldMap : public LLSingleton<LLWorldMap>
+class LLWorldMap final : public LLSingleton<LLWorldMap>
 {
 	LLSINGLETON(LLWorldMap);
 	~LLWorldMap();
diff --git a/indra/newview/llworldmapmessage.h b/indra/newview/llworldmapmessage.h
index 65276df06820835dcd2157d2a2aa76a63bd16b78..a56930c9a568ee1df70ebd12b54484e631f30221 100644
--- a/indra/newview/llworldmapmessage.h
+++ b/indra/newview/llworldmapmessage.h
@@ -32,7 +32,7 @@
 // Handling of messages (send and process) as well as SLURL callback if necessary
 class LLMessageSystem;
 
-class LLWorldMapMessage : public LLSingleton<LLWorldMapMessage>
+class LLWorldMapMessage final : public LLSingleton<LLWorldMapMessage>
 {
 	LLSINGLETON(LLWorldMapMessage);
 	~LLWorldMapMessage();
diff --git a/indra/newview/llworldmapview.h b/indra/newview/llworldmapview.h
index a2a6dc53fb5cabd412f0fcfecedefef27c0ca1f3..7391a762bd78f4a32dbce5c3fdb0f217204ea79c 100644
--- a/indra/newview/llworldmapview.h
+++ b/indra/newview/llworldmapview.h
@@ -44,7 +44,7 @@ class LLVector3;
 class LLTextBox;
 
 
-class LLWorldMapView : public LLPanel
+class LLWorldMapView final : public LLPanel
 {
 public:
 	static void initClass();
diff --git a/indra/newview/rlvfloaters.h b/indra/newview/rlvfloaters.h
index f29fa92483d3e24ab1a700f8be33670e521f81da..9e6fb2b6215c50d719ecd48cdd8a89339a7ecf42 100644
--- a/indra/newview/rlvfloaters.h
+++ b/indra/newview/rlvfloaters.h
@@ -38,7 +38,7 @@ enum class ERlvBehaviourFilter {
 	ALL
 };
 
-class RlvFloaterBehaviours : public LLFloater
+class RlvFloaterBehaviours final : public LLFloater
 {
 	friend class LLFloaterReg;
 private:
@@ -74,7 +74,7 @@ class RlvFloaterBehaviours : public LLFloater
 // RlvFloaterLocks class declaration
 //
 
-class RlvFloaterLocks : public LLFloater
+class RlvFloaterLocks final : public LLFloater
 {
 	friend class LLFloaterReg;
 private:
@@ -106,7 +106,7 @@ class RlvFloaterLocks : public LLFloater
 // RlvFloaterStrings class declaration
 //
 
-class RlvFloaterStrings : public LLFloater
+class RlvFloaterStrings final : public LLFloater
 {
 	friend class LLFloaterReg;
 private:
@@ -135,7 +135,7 @@ class RlvFloaterStrings : public LLFloater
 // RlvFloaterConsole - debug console to allow command execution without the need for a script
 //
 
-class RlvFloaterConsole : public LLFloater
+class RlvFloaterConsole final : public LLFloater
 {
 	friend class LLFloaterReg;
 	template<ERlvParamType> friend struct RlvCommandHandlerBaseImpl;
diff --git a/indra/newview/rlvhelper.h b/indra/newview/rlvhelper.h
index cbe79ec57a0347790b4227ab014eee427933df1e..abd0b78d76562084861ef019f0bba2e92dd27082 100644
--- a/indra/newview/rlvhelper.h
+++ b/indra/newview/rlvhelper.h
@@ -89,7 +89,7 @@ class RlvBehaviourInfo
 // RlvBehaviourDictionary and related classes
 //
 
-class RlvBehaviourDictionary : public LLSingleton<RlvBehaviourDictionary>
+class RlvBehaviourDictionary final : public LLSingleton<RlvBehaviourDictionary>
 {
 	friend class RlvFloaterBehaviours;
 	LLSINGLETON(RlvBehaviourDictionary);
@@ -470,7 +470,7 @@ class RlvObject
 // RlvForceWear
 //
 
-class RlvForceWear : public LLSingleton<RlvForceWear>
+class RlvForceWear final : public LLSingleton<RlvForceWear>
 {
 	LLSINGLETON(RlvForceWear);
 public:
@@ -572,7 +572,7 @@ class RlvForceWear : public LLSingleton<RlvForceWear>
 // RlvBehaviourNotifyObserver
 //
 
-class RlvBehaviourNotifyHandler : public LLSingleton<RlvBehaviourNotifyHandler>
+class RlvBehaviourNotifyHandler final : public LLSingleton<RlvBehaviourNotifyHandler>
 {
 	LLSINGLETON(RlvBehaviourNotifyHandler);
 protected:
diff --git a/indra/newview/rlvinventory.h b/indra/newview/rlvinventory.h
index 2cb7f8bc8edac693c8a7cc9a22831631597f685d..a1f0c7d00d1b2c306d6ef8a066455664f5eaf951 100644
--- a/indra/newview/rlvinventory.h
+++ b/indra/newview/rlvinventory.h
@@ -34,7 +34,7 @@ class LLOfferInfo;
 // RlvInventory class declaration
 //
 
-class RlvInventory : public LLSingleton<RlvInventory>, public LLInventoryObserver
+class RlvInventory final : public LLSingleton<RlvInventory>, public LLInventoryObserver
 {
 	LLSINGLETON(RlvInventory);
 public:
diff --git a/indra/newview/rlvlocks.h b/indra/newview/rlvlocks.h
index 62c4635121ce957c9481def0a1061f0cfa9791c7..bd605ddde14966fe1f1aee26a8b6bf4d912edfeb 100644
--- a/indra/newview/rlvlocks.h
+++ b/indra/newview/rlvlocks.h
@@ -138,7 +138,7 @@ extern RlvAttachmentLocks gRlvAttachmentLocks;
 //
 
 // TODO-RLVa: [RLVa-1.2.1] This class really looks rather cluttered so look into cleaning it up/simplifying it a bit
-class RlvAttachmentLockWatchdog : public LLSingleton<RlvAttachmentLockWatchdog>
+class RlvAttachmentLockWatchdog final : public LLSingleton<RlvAttachmentLockWatchdog>
 {
 	LLSINGLETON(RlvAttachmentLockWatchdog);
 protected:
@@ -279,7 +279,7 @@ extern RlvWearableLocks gRlvWearableLocks;
 // RlvFolderLocks class declaration
 //
 
-class RlvFolderLocks : public LLSingleton<RlvFolderLocks>
+class RlvFolderLocks final : public LLSingleton<RlvFolderLocks>
 {
 	friend class RlvLockedDescendentsCollector;
 	LLSINGLETON(RlvFolderLocks);
diff --git a/indra/newview/rlvmodifiers.h b/indra/newview/rlvmodifiers.h
index 3ccec3e71c3784773b6f977ed6758c233e8b467b..b26c1db0ebdc8aa240c4819f3d36640f24d41e18 100644
--- a/indra/newview/rlvmodifiers.h
+++ b/indra/newview/rlvmodifiers.h
@@ -90,7 +90,7 @@ struct RlvBehaviourModifierTween
 	RlvBehaviourModifierValue endValue;
 };
 
-class RlvBehaviourModifierAnimator : public LLSingleton<RlvBehaviourModifierAnimator>
+class RlvBehaviourModifierAnimator final : public LLSingleton<RlvBehaviourModifierAnimator>
 {
 	LLSINGLETON_EMPTY_CTOR(RlvBehaviourModifierAnimator);
 public:
diff --git a/indra/newview/rlvui.h b/indra/newview/rlvui.h
index c6f945a2c5a60e04f60fab94571e71f599bae389..1a5f68e9acf37395a7365bbccf7ac7e5b413a2fa 100644
--- a/indra/newview/rlvui.h
+++ b/indra/newview/rlvui.h
@@ -26,7 +26,7 @@
 // RlvUIEnabler - self-contained class that handles disabling or reenabling certain aspects of the viewer's UI
 //
 
-class RlvUIEnabler : public LLSingleton<RlvUIEnabler>
+class RlvUIEnabler final : public LLSingleton<RlvUIEnabler>
 {
 	friend class RlvHandler;
 	LLSINGLETON(RlvUIEnabler);