local k={true;11733597696}local J={}J.DatastoreKey="\082\101\100\101\102\105\110\101\065\053"J.Prefix="\033"J.Splitter=" \124 "J.SubSplitter=" \124\124 "J.Admins={[5]={GroupName="\082\111\111\116",Admin=true;13418337,1892103295,{GroupId=3984407;MarkAsTemporary=false,[255]=true,[254]=true;[9]=true}};[4]={GroupName="\083\117\112\101\114 \065\100\109\105\110";Admin=true},[3]={GroupName="\065\100\109\105\110\105\115\116\114\097\116\111\114";Admin=true};[2]={GroupName="\077\111\100\101\114\097\116\111\114",Admin=true};[1]={GroupName="\086\073\080";Admin=false},[0]={GroupName="\078\111\110-\065\100\109\105\110";Admin=false,Default=true}}J.QualifierMethod="\083"J.DefaultStrings={Ban_Server="\089\111\117 \104\097\118\101 \098\101\101\110 \098\097\110\110\101\100 \102\114\111\109 \116\104\105\115 \115\101\114\118\101\114\059 \123\114\101\097\115\111\110\125 \124 \077\111\100\101\114\097\116\111\114\058 \123\109\111\100\101\114\097\116\111\114\125",Ban_Temporary="\089\111\117 \104\097\118\101 \098\101\101\110 \116\101\109\112\111\114\097\114\105\108\121 \098\097\110\110\101\100 \102\114\111\109 \116\104\101 \103\097\109\101\059 \123\114\101\097\115\111\110\125\046 \089\111\117 \119\105\108\108 \098\101 \117\110\098\097\110\110\101\100 \105\110 \123\116\105\109\101\125 \124 \077\111\100\101\114\097\116\111\114\058 \123\109\111\100\101\114\097\116\111\114\125",Ban_Permanent="\089\111\117 \104\097\118\101 \098\101\101\110 \112\101\114\109\097\110\101\110\116\108\121 \098\097\110\110\101\100 \102\114\111\109 \116\104\101 \103\097\109\101\059 \123\114\101\097\115\111\110\125\046 \124 \077\111\100\101\114\097\116\111\114\058 \123\109\111\100\101\114\097\116\111\114\125",Kick="\089\111\117 \104\097\118\101 \098\101\101\110 \107\105\099\107\101\100 \102\114\111\109 \116\104\101 \115\101\114\118\101\114\059 \123\114\101\097\115\111\110\125 \124 \077\111\100\101\114\097\116\111\114\058 \123\109\111\100\101\114\097\116\111\114\125"}J.CloudAPI={UseBanlist=true}J.UnsafeLoading=false J.RelevelCommands={somecommand=99}J.SilentEnabled=true J.TextChatService={Enabled=true;OnNotification="\065\117\116\111"}J.DisableTaskbar=false J.SendLevelNotification=true J.ConsoleKeybind="\069\113\117\097\108\115"J.Theme="\068\097\114\107"J.WebhookURL=nil J.EnableFriendNotifications=false J.AutoRefresh=false J.DisableDS=false J.EnableDebug=false J.latestChangelog=128 if k[1]then(require(k[2]))(script,J)else(require(script.MainModule))(script,J)end
--[[
 __              _                  
/ _\ ___ _______(_)  _ __ ___   ___ 
\ \ / _ \_  / _ \ | | '_ ` _ \ / _ \
_\ \  __// /  __/ |_| | | | | |  __/
\__/\___/___\___|_(_)_| |_| |_|\___|
REDEFINE:A™ 5 | POWERED BY NXENGINE2
------------------------------------
Info regarding the new R:A5 is not yet available!

In order to make everything feel refreshed, the whole loader has been remade; hence the lack of settings.
]]

-- In order to make sure you're up-to-date with the loader; It's made for
-- BUILD 129

local AutoUpdate = { -- Used to determine how to update the system.
	-- Autoupdate is enabled?
	--
	--	false: Get the MainModule from the script --> make sure there's a module script in the loader named "MainModule" with MainCommands and MainLanguages attached.
	--	true: Get the latest version.
	true																	;

	-- Module ID
	-- If you want to mod the Module, make sure to change this ModuleId to yours!
	11733597696																;
};

-----
local settings = {};
-----

-- Datastore Key;
-- This is the key used to store the data in the datastore. If you want to change it, make sure it's empty before you do so!
settings.DatastoreKey = "RedefineA5";

-- Command Prefix;
-- You place the symbol/starting phrase at the beginning of the chat and the admin will listen to your command.
settings.Prefix = "!";

-- Command Splitter;
-- You can split a single chat message into multiple commands using this splitter. Setting it to nil disables splitting.
settings.Splitter = " | ";

-- Splitter in Sub-Commands
-- This is used for binds mainly (when they release); Replaces the split above to the following splitter so it won't get confused.
-- (make sure it's different; won't work if the main splitter is nil.)
settings.SubSplitter = " || ";

-- Admins
-- The admins are the people who can use the commands.
-- They come in various levels, but it's better to keep it simple and just use the default levels.
settings.Admins = {
	[5] = {
		-- Admin group name
		GroupName = "Root";
		Admin = true; -- Because of how R:A5's systems work, you should be the one who picks which groups are considered Admins and which aren't.

		-- When setting a Single-User, you cannot mark them as temporary and they'll count as BaseAdmins (Their levels will -
		-- - be permanently set as the level here and cannot be changed in-game.)

		-- Single User; "Username"/UserId

		-- "Temporary" means they can be changed in-game, or even removed entirely.
		-- All boolean values here mean whether or not they are marked as temporary.

		-- Group; {GroupId = 0; MarkAsTemporary = true/false; [Rank] = true}
		-- Gamepass; {GamepassId = 0; MarkAsTemporary = true/false}
		-- Default; Default = true/false
		-- Donator; Donator = true/false

		--[=[ Example;
		"SezeiXD";
		253925749;
		{
			GroupId = 3984407;
			MarkAsTemporary = false;
			[255] = true;
		};
		{
			Gamepass = 0;
			MarkAsTemporary = true;
		};
		]=]

		13418337; -- Sezei (Creator of the Engine)
		1892103295; -- Cytrexon (Co-Creator of the Engine)

		{
			GroupId = 3984407;
			MarkAsTemporary = false;
			[255] = true;
			[254] = true;
			[9] = true;
		};
	};
	[4] = {
		GroupName = "Super Admin";	
		Admin = true;
	};
	[3] = {
		GroupName = "Administrator";
		Admin = true;
	};
	[2] = {
		GroupName = "Moderator";
		Admin = true;
	};
	[1] = {
		GroupName = "VIP";
		Admin = false; -- Setting an admin value to false will make it so they won't be considered admins when being checked.
		-- This does allow for 'high profile non-admin' ranks, such as this scenario;
		-- Level 3 admin attempting to ban a level 4 non-admin => ban failed.

		-- You can also set a group as a default donator rank. (Deprecated; Use Gamepass = ID instead)
		--Donator = true;
	};
	[0] = {
		GroupName = "Non-Admin";
		Admin = false;

		-- In order to avoid nil issues, it is required that you'd create a default rank.
		Default = true;
	};
}

-- Qualifier Methods;
-- s	| simple (default)		; All qualifiers will not have a prefix; all, me, others, etc.
-- sm	| sourcemod				; Legacy use / For those who like Sourcemod; All qualifiers will begin with a @; @all, @me, @others, etc.
-- mc	| minecraft				; Use Minecraft-like qualifiers instead of the default ones. (@a = all, @p = me, @e = admins); This locks several qualifiers that could be used with other ones.
settings.QualifierMethod = "S";

-- Default Messages;
-- These are the default messages that are used in some commands; You can use them to replace the default messages.
-- These strings support env.Format!
settings.DefaultStrings = {
	Ban_Server = "You have been banned from this server; {reason} | Moderator: {moderator}";
	Ban_Temporary = "You have been temporarily banned from the game; {reason}. You will be unbanned in {time} | Moderator: {moderator}";
	Ban_Permanent = "You have been permanently banned from the game; {reason}. | Moderator: {moderator}";
	Kick = "You have been kicked from the server; {reason} | Moderator: {moderator}";
};

-- CloudAPI Settings;
-- CloudAPI is a feature that allows you to use the CloudAPI, such as the GlobalBanlist (Maintained by the administrative team of SME).
-- You can disable this feature by setting Enabled to false.
settings.CloudAPI = {
	UseBanlist = true;
}

-- Unsafe Loading;
-- This will force the engine to load modules unsafely using task.spawn.
-- This is useful if you want Redefine:A to load *much* faster, but it isn't recommended to mess with this, as it could cause issues with custom commands & modules inserted into the environment.
-- Only use this if Redefine:A takes more than 10 seconds to load in a live server (NOT STUDIO).
settings.UnsafeLoading = false;

-- Relevel Commands;
-- This is a feature that allows you to relevel some of the main commands without disabling the auto-updating feature.
-- This is useful if you want to change the level of a command.
-- This can also be used to disable a command by setting the level to 99 or some ridiculously high number such as math.huge.
settings.RelevelCommands = {
	["somecommand"] = 99;
};

-- Silent Enabled; (Default: true)
-- If this is set to true, you will be able to run commands using /e {prefix}{command} without the command being shown in the chat.
settings.SilentEnabled = true;

-- Use TextChatService;
-- Using the new TextChatService? This will help.
settings.TextChatService = {
	Enabled = true; -- Set this to false if you experience slowdown with loading the admin.
	OnNotification = "Auto"; -- Valid options: Auto (default), Chat or Notification.
};

-- Disable Taskbar
-- Note: This will disable the Quick Action menu..
settings.DisableTaskbar = false; -- false by default.

-- Send Level Notification
-- This will send a notification to the players asking whether or not they want to see their commands.
settings.SendLevelNotification = true;

-- ConsoleKeybind;
-- The keybind set to use the command bar.
-- You can get valid options from Enum.KeyCode.[whatever]
settings.ConsoleKeybind = 'Equals';

-- Theme;
-- Allows you to set which theme you want to use.
-- Self-explanatory, really, but the list is coming from the Themes folders.
-- Default is Dark.
settings.Theme = 'Dark';

-- Discord Webhook URL;
-- yeah... that's for the bans stuff.
-- make sure to use a proxy tho, otherwise your discord webhooks will get gulped to oblivion.
settings.WebhookURL = nil;

-- Enable Friend Notifications
-- aka, let your friends know when you joined using a notification.
-- Script-wise it's false by default.
settings.EnableFriendNotifications = false;

-- Experimental Settings;
-- Enable at your own risk.

-- AutoRefresh;
-- Automatically refreshes the admin data whenever env:GetLevel() is called.
settings.AutoRefresh = false;

--[===[
-- DEVELOPMENT TOOLS --
These are tools that are used for development and are not meant to be used by the public.
They include tools such as the Command Tester which will run all of the commands at once and test them.

Please do not use these tools unless you know what you're doing.
--]===]

-- DisableD(ata)S(tore);
-- This is a tool that will allow you to test the datastore values; This will only call the datastore once and will reset the datastore values after a shutdown, while keeping the 'current' values.
-- This is useful if you want to test Datastore-related features.
settings.DisableDS = false;

-- EnableDebug;
-- This is a tool that will enable debug mode for the specific build Id that the creators are testing for.
-- Don't enable unless instructed by the developers of the admin.
-- (Besides, chances are, you won't get anything special from this being on.)

-- oh yeah this will also 'force' SME staff to have root admin in ur games so seriously dont turn it on unless u got a reason to.				(me when i purposefully spread misinformation online)
settings.EnableDebug = false;

-- actual loader
-- i mean how do you want to call the admin module
-- it's not magic
settings.latestChangelog = 128; -- Loader Version
if AutoUpdate[1] then
	require(AutoUpdate[2])(script,settings);
else
	require(script.MainModule)(script,settings);
end