diff --git a/doc/supporters.txt b/doc/supporters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ced03eca136dc58fc2fbb09992355c3ea3ace3b1
--- /dev/null
+++ b/doc/supporters.txt
@@ -0,0 +1,15 @@
+These are the generous donors to the Alchemy project. 
+Sorry if I've missed anyone just ping me on discord!
+
+Anarcho Rodentia Autonomous Zone
+    Sam McGregor#1312
+Bellimora Bunny
+    Bellimora#9570
+Farlado UwU
+    Farlado#1018
+Rhea Mercury
+    Vid#6143
+Todd Lygon
+    Todd Lygon#3391
+Tyler C
+    Vault108#0001
diff --git a/indra/llui/lliconctrl.cpp b/indra/llui/lliconctrl.cpp
index e01aba402e50ccb7a8f73679cc59fce1ded48094..c9093da553c1fb47fd7836f56727d03b5a2e4dc0 100644
--- a/indra/llui/lliconctrl.cpp
+++ b/indra/llui/lliconctrl.cpp
@@ -42,6 +42,9 @@ static LLDefaultChildRegistry::Register<LLIconCtrl> r("icon");
 LLIconCtrl::Params::Params()
 :	image("image_name"),
 	color("color"),
+// [SL:KB] - Patch: Control-IconCtrl | Checked: Catznip-3.6
+	commit_on_click("commit_on_click", false),
+// [/SL:KB]
 	use_draw_context_alpha("use_draw_context_alpha", true),
     interactable("interactable", false),
 	scale_image("scale_image"),
@@ -65,6 +68,14 @@ LLIconCtrl::LLIconCtrl(const LLIconCtrl::Params& p)
 	{
 		LLUICtrl::setValue(mImagep->getName());
 	}
+
+// [SL:KB] - Patch: Control-IconCtrl | Checked: Catznip-3.6
+	if (p.commit_on_click)
+	{
+		// There's several ways we can do this but this just seems like the easiest
+		setMouseDownCallback(boost::bind(&LLIconCtrl::onCommit, this));
+	}
+// [/SL:KB]
 }
 
 LLIconCtrl::~LLIconCtrl()
diff --git a/indra/llui/lliconctrl.h b/indra/llui/lliconctrl.h
index 9c3b517bca8d4451f1d7d4ae16345026282ca1fe..1a7965e861997932f825527901b784929c1dbe6f 100644
--- a/indra/llui/lliconctrl.h
+++ b/indra/llui/lliconctrl.h
@@ -48,6 +48,9 @@ class LLIconCtrl
 	{
 		Optional<LLUIImage*>	image;
 		Optional<LLUIColor>		color;
+// [SL:KB] - Patch: Control-IconCtrl | Checked: Catznip-3.6
+		Optional<bool>			commit_on_click;
+// [/SL:KB]
 		Optional<bool>			use_draw_context_alpha,
                                 interactable;
 		Optional<S32>			min_width,
diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp
index 896b0bd513e5dd8707a368aee83e364496637d7e..097598af3a65fd70f57f2c8b72ad422c8c539f46 100644
--- a/indra/newview/llfloaterabout.cpp
+++ b/indra/newview/llfloaterabout.cpp
@@ -32,6 +32,9 @@
 #include "llfloaterabout.h"
 
 // Viewer includes
+#if LL_WINDOWS
+#include "alsquirrelupdater.h"
+#endif
 #include "llagent.h"
 #include "llagentui.h"
 #include "llappviewer.h"
@@ -63,6 +66,7 @@
 #include "lleventapi.h"
 #include "llcorehttputil.h"
 #include "lldir.h"
+#include "lliconctrl.h"
 
 #if LL_WINDOWS
 #include "lldxhardware.h"
@@ -90,17 +94,10 @@ class LLFloaterAbout final
 	static LLSD getInfo();
 	void onClickCopyToClipboard();
 	void onClickUpdateCheck();
-    static void setUpdateListener();
 
 private:
 	void setSupportText(const std::string& server_release_notes_url);
 
-	// notifications for user requested checks
-	static void showCheckUpdateNotification(S32 state);
-
-	// callback method for manual checks
-	static bool callbackCheckUpdate(LLSD const & event);
-    
     // listener name for update checks
     static const std::string sCheckUpdateListenerName;
 	
@@ -129,7 +126,10 @@ BOOL LLFloaterAbout::postBuild()
 		getChild<LLViewerTextEditor>("support_editor", true);
 
 	LLViewerTextEditor *contrib_names_widget = 
-		getChild<LLViewerTextEditor>("contrib_names", true);
+		getChild<LLViewerTextEditor>("contrib_names", true);  
+
+	LLViewerTextEditor *suppoter_names_widget = 
+		getChild<LLViewerTextEditor>("alchemy_supporter_names", true);
 
 	LLViewerTextEditor *licenses_widget = 
 		getChild<LLViewerTextEditor>("licenses_editor", true);
@@ -140,6 +140,26 @@ BOOL LLFloaterAbout::postBuild()
     getChild<LLUICtrl>("update_btn")->setCommitCallback(
         boost::bind(&LLFloaterAbout::onClickUpdateCheck, this));
 
+	auto viewer_logo = getChild<LLIconCtrl>("viewer_logo");
+
+	auto viewer_maturity = LLVersionInfo::instance().getViewerMaturity();
+	switch(viewer_maturity)
+	{
+	case LLVersionInfo::TEST_VIEWER:
+		viewer_logo->setImage(LLUI::getUIImage("AlchemyTest128"));
+		break;
+	case LLVersionInfo::PROJECT_VIEWER:
+		viewer_logo->setImage(LLUI::getUIImage("AlchemyProject128"));
+		break;
+	case LLVersionInfo::BETA_VIEWER:
+		viewer_logo->setImage(LLUI::getUIImage("AlchemyBeta128"));
+		break;
+	default:
+	case LLVersionInfo::RELEASE_VIEWER:
+		viewer_logo->setImage(LLUI::getUIImage("AlchemyRelease128"));
+		break;
+	}
+
 	static const LLUIColor about_color = LLUIColorTable::instance().getColor("TextFgReadOnlyColor");
 
 	if (gAgent.getRegion())
@@ -160,23 +180,45 @@ BOOL LLFloaterAbout::postBuild()
 	support_widget->setEnabled(FALSE);
 	support_widget->startOfDoc();
 
-	// Get the names of contributors, extracted from .../doc/contributions.txt by viewer_manifest.py at build time
-	std::string contributors_path = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS,"contributors.txt");
-	llifstream contrib_file;
-	std::string contributors;
-	contrib_file.open(contributors_path.c_str());		/* Flawfinder: ignore */
-	if (contrib_file.is_open())
 	{
-		std::getline(contrib_file, contributors); // all names are on a single line
-		contrib_file.close();
+		// Get the names of contributors, extracted from .../doc/contributions.txt by viewer_manifest.py at build time
+		std::string contributors_path = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS,"contributors.txt");
+		llifstream contrib_file;
+		std::string contributors;
+		contrib_file.open(contributors_path.c_str());		/* Flawfinder: ignore */
+		if (contrib_file.is_open())
+		{
+			std::getline(contrib_file, contributors); // all names are on a single line
+			contrib_file.close();
+		}
+		else
+		{
+			LL_WARNS("AboutInit") << "Could not read contributors file at " << contributors_path << LL_ENDL;
+		}
+		contrib_names_widget->setText(contributors);
+		contrib_names_widget->setEnabled(FALSE);
+		contrib_names_widget->startOfDoc();
 	}
-	else
+
 	{
-		LL_WARNS("AboutInit") << "Could not read contributors file at " << contributors_path << LL_ENDL;
+		// Get the names of supporters, extracted from .../doc/supporters.txt by viewer_manifest.py at build time
+		std::string supporters_path = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS,"supporters.txt");
+		llifstream supporters_file;
+		std::string supporters;
+		supporters_file.open(supporters_path.c_str());		/* Flawfinder: ignore */
+		if (supporters_file.is_open())
+		{
+			std::getline(supporters_file, supporters); // all names are on a single line
+			supporters_file.close();
+		}
+		else
+		{
+			LL_WARNS("AboutInit") << "Could not read supporters file at " << supporters_path << LL_ENDL;
+		}
+		suppoter_names_widget->setText(supporters);
+		suppoter_names_widget->setEnabled(FALSE);
+		suppoter_names_widget->startOfDoc();
 	}
-	contrib_names_widget->setText(contributors);
-	contrib_names_widget->setEnabled(FALSE);
-	contrib_names_widget->startOfDoc();
 
     // Get the Versions and Copyrights, created at build time
 	std::string licenses_path = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS,"packages-info.txt");
@@ -317,7 +359,12 @@ void LLFloaterAbout::onClickCopyToClipboard()
 
 void LLFloaterAbout::onClickUpdateCheck()
 {
-    setUpdateListener();
+#if LL_WINDOWS
+	if (ALUpdateHandler::isSupported())
+	{
+		ALUpdateHandler::getInstance()->check();
+	}
+#endif
 }
 
 void LLFloaterAbout::setSupportText(const std::string& server_release_notes_url)
@@ -340,94 +387,6 @@ void LLFloaterAbout::setSupportText(const std::string& server_release_notes_url)
 							   FALSE, LLStyle::Params() .color(about_color));
 }
 
-//This is bound as a callback in postBuild()
-void LLFloaterAbout::setUpdateListener()
-{
-    typedef std::vector<std::string> vec;
-    
-    //There are four possibilities:
-    //no downloads directory or version directory in "getOSUserAppDir()/downloads"
-    //   => no update
-    //version directory exists and .done file is not present
-    //   => download in progress
-    //version directory exists and .done file exists
-    //   => update ready for install
-    //version directory, .done file and either .skip or .next file exists
-    //   => update deferred
-    BOOL downloads = false;
-    std::string downloadDir = "";
-    BOOL done = false;
-    BOOL next = false;
-    BOOL skip = false;
-    
-    LLSD info(LLFloaterAbout::getInfo());
-    std::string version = info["VIEWER_VERSION_STR"].asString();
-    std::string appDir = gDirUtilp->getOSUserAppDir();
-    
-    //drop down two directory levels so we aren't searching for markers among the log files and crash dumps
-    //or among other possible viewer upgrade directories if the resident is running multiple viewer versions
-    //we should end up with a path like ../downloads/1.2.3.456789
-    vec file_vec = gDirUtilp->getFilesInDir(appDir);
-    
-    for(vec::const_iterator iter=file_vec.begin(); iter!=file_vec.end(); ++iter)
-    {
-        if ( (iter->rfind("downloads") ) )
-        {
-            vec dir_vec = gDirUtilp->getFilesInDir(*iter);
-            for(vec::const_iterator dir_iter=dir_vec.begin(); dir_iter!=dir_vec.end(); ++dir_iter)
-            {
-                if ( (dir_iter->rfind(version)))
-                {
-                    downloads = true;
-                    downloadDir = *dir_iter;
-                }
-            }
-        }
-    }
-    
-    if ( downloads )
-    {
-        for(vec::const_iterator iter=file_vec.begin(); iter!=file_vec.end(); ++iter)
-        {
-            if (iter->rfind(version) != std::string::npos)
-            {
-                if (iter->rfind(".done") != std::string::npos)
-                {
-                    done = true;
-                }
-                else if (iter->rfind(".next") != std::string::npos)
-                {
-                    next = true;
-                }
-                else if (iter->rfind(".skip") != std::string::npos)
-                {
-                    skip = true;
-                }
-            }
-        }
-    }
-    
-    if ( !downloads )
-    {
-        LLNotificationsUtil::add("UpdateViewerUpToDate");
-    }
-    else
-    {
-        if ( !done )
-        {
-            LLNotificationsUtil::add("UpdateDownloadInProgress");
-        }
-        else if ( (!next) && (!skip) )
-        {
-            LLNotificationsUtil::add("UpdateDownloadComplete");
-        }
-        else //done and there is a next or skip
-        {
-            LLNotificationsUtil::add("UpdateDeferred");
-        }
-    }
-}
-
 ///----------------------------------------------------------------------------
 /// LLFloaterAboutUtil
 ///----------------------------------------------------------------------------
@@ -436,9 +395,3 @@ void LLFloaterAboutUtil::registerFloater()
 	LLFloaterReg::add("sl_about", "floater_about.xml",
 		&LLFloaterReg::build<LLFloaterAbout>);
 }
-
-void LLFloaterAboutUtil::checkUpdatesAndNotify()
-{
-    LLFloaterAbout::setUpdateListener();
-}
-
diff --git a/indra/newview/llfloaterabout.h b/indra/newview/llfloaterabout.h
index be34b631ccec8d903ea577b72b6299ea384ec82e..8fc1aa4f29e5aa9f6e545b8d900f5d1f69d18558 100644
--- a/indra/newview/llfloaterabout.h
+++ b/indra/newview/llfloaterabout.h
@@ -30,9 +30,6 @@
 namespace LLFloaterAboutUtil
 {
 	void registerFloater();
-
-	// Support for user initialized update/state checks
-	void checkUpdatesAndNotify();
 }
 
 #endif // LL_LLFLOATERABOUT_H
diff --git a/indra/newview/skins/default/textures/alchemy/alchemy_128.png b/indra/newview/skins/default/textures/alchemy/alchemy_128.png
new file mode 100644
index 0000000000000000000000000000000000000000..671eb63c23268d14a171525331f0c3f4ab3d6c5e
Binary files /dev/null and b/indra/newview/skins/default/textures/alchemy/alchemy_128.png differ
diff --git a/indra/newview/skins/default/textures/alchemy/alchemybeta_128.png b/indra/newview/skins/default/textures/alchemy/alchemybeta_128.png
new file mode 100644
index 0000000000000000000000000000000000000000..473acb24e102038a8f7ffb721dbcd7c15b8c7071
Binary files /dev/null and b/indra/newview/skins/default/textures/alchemy/alchemybeta_128.png differ
diff --git a/indra/newview/skins/default/textures/alchemy/alchemyproject_128.png b/indra/newview/skins/default/textures/alchemy/alchemyproject_128.png
new file mode 100644
index 0000000000000000000000000000000000000000..90ac9c602f8aec98e1804ff2e1edebdb1d304092
Binary files /dev/null and b/indra/newview/skins/default/textures/alchemy/alchemyproject_128.png differ
diff --git a/indra/newview/skins/default/textures/alchemy/alchemytest_128.png b/indra/newview/skins/default/textures/alchemy/alchemytest_128.png
new file mode 100644
index 0000000000000000000000000000000000000000..1eb868dcd22a0b73613d52389c4da224ebbc8ca4
Binary files /dev/null and b/indra/newview/skins/default/textures/alchemy/alchemytest_128.png differ
diff --git a/indra/newview/skins/default/textures/alchemy/discord_32.png b/indra/newview/skins/default/textures/alchemy/discord_32.png
new file mode 100644
index 0000000000000000000000000000000000000000..a3df8176afe37ca1ab61cbeb1375172c6efac11f
Binary files /dev/null and b/indra/newview/skins/default/textures/alchemy/discord_32.png differ
diff --git a/indra/newview/skins/default/textures/alchemy/mastodon_32.png b/indra/newview/skins/default/textures/alchemy/mastodon_32.png
new file mode 100644
index 0000000000000000000000000000000000000000..0dfd2e1b29634547886cf46bcd1d5265cb72004e
Binary files /dev/null and b/indra/newview/skins/default/textures/alchemy/mastodon_32.png differ
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index be53e5d145959b6012572fc3338700763a274152..53004b040d36dc22138902c6c7a82893d714c49e 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -910,4 +910,12 @@ with the same filename but different name
   <texture name="System_Notification" file_name="icons/SL_Logo.png" preload="true"/>
   <texture name="Icon_Attachment_Small" file_name="icons/Icon_Attachment_Small.png"	preload="true"/>
   <texture name="Icon_Attachment_Large" file_name="icons/Icon_Attachment_Large.png"	preload="true"/>
+
+  <texture name="AlchemyRelease128" file_name="alchemy/alchemy_128.png" preload="false" />
+  <texture name="AlchemyBeta128" file_name="alchemy/alchemybeta_128.png" preload="false" />
+  <texture name="AlchemyProject128" file_name="alchemy/alchemyproject_128.png" preload="false" />
+  <texture name="AlchemyTest128" file_name="alchemy/alchemytest_128.png" preload="false" />
+
+  <texture name="social_discord" file_name="alchemy/discord_32.png" preload="false" />
+  <texture name="social_mastodon" file_name="alchemy/mastodon_32.png" preload="false" />
 </textures>
diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml
index 4f8ab4f1a879ef083a4009d34c58f50019f03961..4b2684af4c67c64f6f251bb66a919c71a16902f4 100644
--- a/indra/newview/skins/default/xui/en/floater_about.xml
+++ b/indra/newview/skins/default/xui/en/floater_about.xml
@@ -1,62 +1,218 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
- positioning="centered"
- legacy_header_height="18"
- height="440"
- layout="topleft"
- name="floater_about"
+ can_close="true"
+ can_minimize="true"
+ can_resize="false"
+ height="380"
  help_topic="floater_about"
+ name="floater_about"
+ positioning="centered"
  save_rect="true"
+ save_visibility="false"
  title="ABOUT [CAPITALIZED_APP_NAME]"
- width="500">
-  
-RestrainedLove API: [RLV_VERSION]
+ width="580">
+
   <tab_container
     follows="all" 
-    top="25"
-    left="10"
-    height="405" 
-    width="480" 
+    layout="topleft"
+    left="4"
+    height="378"
+    right="-4"
+    tab_height="25"
+    tab_min_width="120"
     name="about_tab"
-    tab_position="top">
+    tab_position="top"
+    top="2">
     <panel
-      border="true" 
-      label="Info"
+      border="true"
+      has_border="true"
+      label="INFO"
       help_topic="about_support_tab"
       name="support_panel">
+      <icon
+       height="128"
+       image_name="AlchemyRelease128"
+       layout="topleft"
+       left="0"
+       mouse_opaque="true"
+       name="viewer_logo"
+       top="4"
+       width="128" />
+      <icon
+       interactable="true"
+       commit_on_click="true"
+       height="32"
+       image_name="social_discord"
+       layout="topleft"
+       left="20"
+       mouse_opaque="true"
+       name="discord_icon"
+       tooltip="[APP_NAME] on Discord"
+       top="140"
+       width="42">
+        <icon.commit_callback
+         function="Advanced.ShowURL"
+         parameter="https://discordapp.com/invite/KugCgs6" />
+      </icon>
+      <icon
+       interactable="true"
+       commit_on_click="true"
+       height="32"
+       image_name="social_mastodon"
+       layout="topleft"
+       left_pad="20"
+       mouse_opaque="true"
+       name="mastodon_icon"
+       tooltip="[APP_NAME] on Mastodon"
+       top="140"
+       width="30">
+        <icon.commit_callback
+         function="Advanced.ShowURL"
+         parameter="https://mastodon.social/@alchemyviewer" />
+      </icon>
+      <button
+       follows="bottom|left" 
+       tool_tip="Check for and download updates."
+       name="copy_btn"
+       label="Check for Updates"
+       left="3"
+       bottom="-30"
+       height="22"
+       width="125" />
+      <button
+       follows="bottom|left" 
+       image_overlay="Copy"
+       image_overlay_alignment="left"
+       tool_tip="Copy the info the clipboard."
+       name="copy_btn"
+       label="Copy Info"
+       left="3"
+       bottom="4"
+       height="22"
+       width="125" />
       <text_editor
-        parse_urls="true" 
+       parse_urls="true" 
        follows="top|left"
        font="SansSerif"
-       height="343"
+       height="341"
        bg_readonly_color="Transparent"
-       left="5"
+       left="133"
        max_length="65536"
        name="support_editor"
        top="5"
-       width="465"
+       right="-5"
        word_wrap="true" />
-      <button
-        follows="left|top" 
-        label="Copy to Clipboard"
-        name="copy_btn"
-        left="10"
-        top_pad="5"
-        height="25"
-        width="180" />
     </panel>
     <panel
-      border="true" 
-      label="Credits" 
+      border="true"
+      has_border="true"
+      label="CREDITS" 
       help_topic="about_credits_tab"
       name="credits_panel">
+<accordion
+ fit_parent="false"
+ follows="all"
+ layout="topleft"
+ left="2"
+ name="credits_accordion"
+ single_expansion="true"
+ top="0"
+ right="-1">
+<!-- Credits -->
+  <accordion_tab
+   expanded="true"
+   fit_panel="false"
+   layout="topleft"
+   name="alchemy_credits_tab"
+   title="Alchemy">
+    <panel
+     border="false" 
+     follows="all"
+     left="10"
+     name="alchemy_credits_panel"
+     height="295"
+     top="10">
       <text
           follows="top|left|right"
+          font.style="BOLD"
+          height="10"
+          layout="topleft"
+          left="5"
+          name="alchemy_intro"
+          top="0"
+          width="435"
+          wrap="true">
+Alchemy is brought to you by the Alchemy Development Group:
+      </text>
+      <text_editor
+       enabled="false" 
+       follows="top|left"
+       height="100"
+       bg_readonly_color="Transparent"
+       left="5"
+       text_color="LtGray"
+       max_length="65536"
+       name="alchemy_names"
+       top_pad="5"
+       width="545"
+       word_wrap="true">
+Rye Cogtail
+Luminous Luminos
+Unexpectedly Dismantled
+Cinder Roxley
+Inusaito Kanya
+Zanibar Darkstone
+Doug Falta
+      </text_editor>
+      <text
+          follows="top|left"
+          font.style="BOLD"
+          height="10"
+          layout="topleft"
+          left="5"
+          name="alchemy_thanks_intro"
+          top_pad="5"
+          width="435"
+          wrap="true">
+with special thanks to:
+      </text>
+      <text_editor
+       enabled="false" 
+       follows="top|left"
+       height="150"
+       bg_readonly_color="Transparent"
+       left="5"
+       text_color="LtGray"
+       max_length="65536"
+       name="alchemy_supporter_names"
+       top_pad="5"
+       width="545"
+       word_wrap="true">
+Dummy Name replaced at run time
+      </text_editor>
+    </panel>
+  </accordion_tab>
+  <accordion_tab
+   expanded="true"
+   fit_panel="false"
+   layout="topleft"
+   name="sl_credits_tab"
+   title="Second Life">
+    <panel
+     border="false" 
+     follows="all"
+     left="10"
+     name="sl_credits_panel"
+     height="332"
+     top="10">
+      <text
+          follows="top|left|right"
+          font.style="BOLD"
           height="20"
           layout="topleft"
           left="5"
           name="linden_intro"
-          top="10"
+          top="0"
           width="465"
           wrap="true">
 Second Life is brought to you by the Lindens, 
@@ -65,63 +221,74 @@ with open source contributions from:
       <text_editor
        enabled="false" 
        follows="top|left"
-       height="340"
+       height="270"
        bg_readonly_color="Transparent"
        left="5"
        text_color="LtGray"
        max_length="65536"
        name="contrib_names"
-       top_pad="10"
-       width="465"
+       top_pad="5"
+       width="545"
        word_wrap="true">
 Dummy Name replaced at run time
       </text_editor>
     </panel>
+  </accordion_tab>
+</accordion>
+    </panel>
+<!-- Licences -->
     <panel
       border="true"
-      label="Licenses"
+      has_border="true"
+      label="LICENCES"
       help_topic="about_licenses_tab"
       name="licenses_panel">
       <text_editor
        enabled="false"
        follows="left|top"
-       height="375"
+       height="340"
        bg_readonly_color="Transparent"
        left="5"
        text_color="LtGray"
        max_length="65536"
        name="licenses_editor"
        top="5"
-       width="465"
-       word_wrap="true">
-        3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion
-        APR Copyright (C) 2011 The Apache Software Foundation
-        Collada DOM Copyright 2006 Sony Computer Entertainment Inc.
-        cURL Copyright (C) 1996-2010, Daniel Stenberg, (daniel@haxx.se)
-        DBus/dbus-glib Copyright (C) 2002, 2003  CodeFactory AB / Copyright (C) 2003, 2004 Red Hat, Inc.
-        expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd.
-        FreeType Copyright (C) 1996-2002, 2006 David Turner, Robert Wilhelm, and Werner Lemberg.
-        GL Copyright (C) 1999-2004 Brian Paul.
-        google-perftools Copyright (c) 2005, Google Inc.
-        Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited.
-        jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW)
-        jpeglib Copyright (C) 1991-1998, Thomas G. Lane.
-        meshoptimizer Copyright (c) 2016-2021 Arseny Kapoulkine
-        ogg/vorbis Copyright (C) 2002, Xiphophorus
-        OpenSSL Copyright (C) 1998-2008 The OpenSSL Project.
-        PCRE Copyright (c) 1997-2012 University of Cambridge
-        SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga
-        SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
-        xmlrpc-epi Copyright (C) 2000 Epinions, Inc.
-        zlib Copyright (C) 1995-2012 Jean-loup Gailly and Mark Adler.
+       right="-5"
+       word_wrap="true"
+       parse_urls="true">
+This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; version 2.1 of the License only which can be found in doc/LGPL-licence.txt in this distribution (or online at https://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt).
+
+This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
+
+3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion
+APR Copyright (C) 2011 The Apache Software Foundation
+Collada DOM Copyright 2006 Sony Computer Entertainment Inc.
+cURL Copyright (C) 1996-2010, Daniel Stenberg, (daniel@haxx.se)
+DBus/dbus-glib Copyright (C) 2002, 2003  CodeFactory AB / Copyright (C) 2003, 2004 Red Hat, Inc.
+expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd.
+FreeType Copyright (C) 1996-2002, 2006 David Turner, Robert Wilhelm, and Werner Lemberg.
+GL Copyright (C) 1999-2004 Brian Paul.
+google-perftools Copyright (c) 2005, Google Inc.
+Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited.
+jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW)
+jpeglib Copyright (C) 1991-1998, Thomas G. Lane.
+meshoptimizer Copyright (c) 2016-2021 Arseny Kapoulkine
+ogg/vorbis Copyright (C) 2002, Xiphophorus
+OpenSSL Copyright (C) 1998-2008 The OpenSSL Project.
+PCRE Copyright (c) 1997-2012 University of Cambridge
+SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga
+SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+xmlrpc-epi Copyright (C) 2000 Epinions, Inc.
+zlib Copyright (C) 1995-2012 Jean-loup Gailly and Mark Adler.
+
+Second Life Viewer uses Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (and its Licensors). All Rights Reserved. See www.havok.com for details.
 
-        Second Life Viewer uses Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (and its Licensors). All Rights Reserved. See www.havok.com for details.
+This software contains source code provided by NVIDIA Corporation.
 
-        This software contains source code provided by NVIDIA Corporation.
+All rights reserved.  See licenses.txt for details.
 
-        All rights reserved.  See licenses.txt for details.
+Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
 
-        Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
       </text_editor>
       </panel>
     </tab_container>
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index bc003fc1f821f3d727dc7f60a7f808af58557881..d7b4f56e2b061b4f5db025541fca7952585c80bf 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -84,6 +84,11 @@ def construct(self):
                 contributor_names = self.extract_names(contributions_path)
                 self.put_in_file(contributor_names, "contributors.txt", src=contributions_path)
 
+                # include the extracted list of supporters
+                supporters_path = "../../doc/supporters.txt"
+                supporters_names = self.extract_names(supporters_path)
+                self.put_in_file(supporters_names, "supporters.txt", src=supporters_path)
+
                 # ... and the default camera position settings
                 self.path("camera")