diff --git a/indra/newview/rlvcommon.cpp b/indra/newview/rlvcommon.cpp
index 3b54bbd3344bae3920469ae3685a7ef0ddf639a1..d7cb2dd43a97d183dc720478e8afeb5ee0465c8c 100644
--- a/indra/newview/rlvcommon.cpp
+++ b/indra/newview/rlvcommon.cpp
@@ -40,6 +40,9 @@
 #include "rlvhandler.h"
 #include "rlvlocks.h"
 
+#include "llscriptruntimeperms.h"
+#include <boost/algorithm/string/predicate.hpp> // icontains
+#include <boost/algorithm/string/regex.hpp> // regex_replace_all
 #include <boost/algorithm/string.hpp>
 #include <boost/regex.hpp>
 
@@ -127,7 +130,7 @@ void RlvSettings::initClass()
 		int nMinMaturity = gSavedSettings.getS32("RLVaExperienceMaturityThreshold");
 		s_nExperienceMinMaturity = (nMinMaturity == 0) ? 0 : ((nMinMaturity == 1) ? SIM_ACCESS_PG : ((nMinMaturity == 2) ? SIM_ACCESS_MATURE : SIM_ACCESS_ADULT));
 		const std::string& strBlockedExperiences = gSavedSettings.getString("RLVaBlockedExperiences");
-		s_BlockedExperiences = absl::StrSplit(strBlockedExperiences, ';');
+		boost::split(s_BlockedExperiences, strBlockedExperiences, boost::is_any_of(";"));
 
 		fInitialized = true;
 	}
@@ -178,12 +181,12 @@ void RlvSettings::initCompatibilityMode(std::string strCompatList)
 	s_CompatItemCreators.clear();
 	s_CompatItemNames.clear();
 
-	absl::StrAppend(&strCompatList, ";", rlvGetSetting<std::string>("RLVaCompatibilityModeList", ""));
+	strCompatList.append(";").append(rlvGetSetting<std::string>("RLVaCompatibilityModeList", ""));
 
 	boost_tokenizer tokCompatList(strCompatList, boost::char_separator<char>(";", "", boost::drop_empty_tokens));
 	for (const std::string& strCompatEntry : tokCompatList)
 	{
-		if (absl::StartsWith(strCompatEntry, "creator:"))
+		if (boost::starts_with(strCompatEntry, "creator:"))
 		{
 			LLUUID idCreator;
 			if ( (44 == strCompatEntry.size()) && (LLUUID::parseUUID(strCompatEntry.substr(8), &idCreator)) &&
@@ -192,7 +195,7 @@ void RlvSettings::initCompatibilityMode(std::string strCompatList)
 				s_CompatItemCreators.push_back(idCreator);
 			}
 		}
-		else if (absl::StartsWith(strCompatEntry, "name:"))
+		else if (boost::starts_with(strCompatEntry, "name:"))
 		{
 			if (strCompatEntry.size() > 5)
 				s_CompatItemNames.push_back(strCompatEntry.substr(5));
@@ -442,7 +445,7 @@ std::string RlvStrings::getVersionNum(const LLUUID& idRlvObject)
 
 std::string RlvStrings::getVersionImplNum()
 {
-	return llformat("%d%02d%02d%02d", RLVa_VERSION_MAJOR, RLVa_VERSION_MAJOR, RLVa_VERSION_PATCH, RLVa_IMPL_ID);
+	return llformat("%d%02d%02d%02d", RLVa_VERSION_MAJOR, RLVa_VERSION_MINOR, RLVa_VERSION_PATCH, RLVa_IMPL_ID);
 }
 
 // Checked: 2011-11-08 (RLVa-1.5.0)
diff --git a/indra/newview/rlvenvironment.cpp b/indra/newview/rlvenvironment.cpp
index 805390b3ce664e83effa70284a8650d57cd9985d..91e043da231ac574c241afe5f7a9cfe4bcb989da 100644
--- a/indra/newview/rlvenvironment.cpp
+++ b/indra/newview/rlvenvironment.cpp
@@ -173,7 +173,7 @@ class RlvIsOfSettingsType : public LLInventoryCollectFunctor
 		{
 			return
 				(m_eSettingsType == LLSettingsType::fromInventoryFlags(pItem->getFlags())) &&
-				( (m_strNameMatch.empty()) || (absl::EqualsIgnoreCase(pItem->getName(), m_strNameMatch)) );
+				( (m_strNameMatch.empty()) || (boost::iequals(pItem->getName(), m_strNameMatch)) );
 		}
 		return false;
 	}
@@ -475,7 +475,7 @@ LLEnvironment::EnvSelection_t RlvEnvironment::getTargetEnvironment()
 // static
 bool RlvEnvironment::onHandleCommand(const RlvCommand& rlvCmd, ERlvCmdRet& cmdRet, const std::string& strCmdPrefix, const handler_map_t& fnLookup, const legacy_handler_map_t& legacyFnLookup)
 {
-	if ( (rlvCmd.getBehaviour().length() > strCmdPrefix.length() + 2) && (absl::StartsWith(rlvCmd.getBehaviour(), strCmdPrefix)) )
+	if ( (rlvCmd.getBehaviour().length() > strCmdPrefix.length() + 2) && (boost::starts_with(rlvCmd.getBehaviour(), strCmdPrefix)) )
 	{
 		std::string strEnvCommand = rlvCmd.getBehaviour().substr(strCmdPrefix.length());
 
diff --git a/indra/newview/rlvhelper.cpp b/indra/newview/rlvhelper.cpp
index ef48789840787fe24c8f26741074c14a488cf863..8316b0d114183c69521c9f247de54351b43940da 100644
--- a/indra/newview/rlvhelper.cpp
+++ b/indra/newview/rlvhelper.cpp
@@ -396,7 +396,7 @@ void RlvBehaviourDictionary::clearModifiers(const LLUUID& idRlvObj)
 
 const RlvBehaviourInfo* RlvBehaviourDictionary::getBehaviourInfo(const std::string& strBhvr, ERlvParamType eParamType, bool* pfStrict) const
 {
-	bool fStrict = absl::EndsWith(strBhvr, "_sec");
+	bool fStrict = boost::algorithm::ends_with(strBhvr, "_sec");
 	if (pfStrict)
 		*pfStrict = fStrict;