/// <summary>
        /// Load Setting File
        /// </summary>
        public bool Load()
        {
            try
            {
                #region application_settings.json
                if (File.Exists(ApplicationDirectory + "\\application_settings.json"))
                {
                    using (JsonTextReader Reader = new JsonTextReader(new StringReader(File.ReadAllText(ApplicationDirectory + "\\application_settings.json"))))
                    {
                        Reader.DateParseHandling = DateParseHandling.DateTime;
                        Reader.FloatParseHandling = FloatParseHandling.Double;

                        int StartObjectDepth = -1;
                        string ObjectPropertyName = null;
                        string PropertyName = null;
                        string TempPropertyName = null;
                        List<string> SeasonMonth = new List<string>();
                        List<string> WeatherSeason = new List<string>();

                        while (Reader.Read())
                        {
                            if (Reader.TokenType == JsonToken.StartObject)
                            {
                                StartObjectDepth++;
                                if (TempPropertyName != null && TempPropertyName != ObjectPropertyName)
                                {
                                    ObjectPropertyName = TempPropertyName;
                                    TempPropertyName = null;
                                }
                            }
                            else if (Reader.TokenType == JsonToken.EndObject)
                            {
                                if (StartObjectDepth == 3 && string.Equals(ObjectPropertyName, "SeasonMonth", StringComparison.OrdinalIgnoreCase))
                                {
                                    string TempValue = null;
                                    foreach (string item in SeasonMonth)
                                    {
                                        TempValue += item + "|";
                                    }
                                    TempValue = TempValue.Remove(TempValue.LastIndexOf("|"));
                                    this.SeasonMonth = new SeasonMonth(TempValue);
                                }
                                else if (StartObjectDepth == 3 && string.Equals(ObjectPropertyName, "WeatherSeason", StringComparison.OrdinalIgnoreCase))
                                {
                                    string TempValue = null;
                                    foreach (string item in WeatherSeason)
                                    {
                                        TempValue += item + "|";
                                    }
                                    TempValue = TempValue.Remove(TempValue.LastIndexOf("|"));
                                    this.WeatherSeason = new WeatherSeason(TempValue);
                                }
                                StartObjectDepth--;
                            }

                            if (Reader.TokenType == JsonToken.PropertyName)
                            {
                                TempPropertyName = Reader.Value.ToString();
                            }
                            else if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                            {
                                PropertyName = TempPropertyName;
                                TempPropertyName = null;
                            }

                            #region Main Application Setting
                            if (StartObjectDepth == 1 && string.Equals(ObjectPropertyName, "Main Application Setting", StringComparison.OrdinalIgnoreCase))
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "ApplicationVersion", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            _ApplicationVersion = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Main Application Setting.ApplicationVersion\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "CheckForUpdate", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            CheckForUpdate = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Main Application Setting.CheckForUpdate\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "GeneratePublicIP", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            GeneratePublicIP = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Main Application Setting.GeneratePublicIP\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "MainEntryPoint", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            if (Reader.Value.ToString().ToInt() == (int)MainEntryPointType.jianmingyong_Server)
                                            {
                                                MainEntryPoint = MainEntryPointType.jianmingyong_Server;
                                            }
                                            else if (Reader.Value.ToString().ToInt() == (int)MainEntryPointType.Rcon)
                                            {
                                                MainEntryPoint = MainEntryPointType.Rcon;
                                            }
                                            else
                                            {
                                                MainEntryPoint = MainEntryPointType.jianmingyong_Server;
                                            }
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Main Application Setting.MainEntryPoint\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                            #endregion Main Application Setting

                            #region Main Server Property
                            else if (StartObjectDepth == 1 && string.Equals(ObjectPropertyName, "Main Server Property", StringComparison.OrdinalIgnoreCase))
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "IPAddress", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            IPAddress = GeneratePublicIP ? Functions.GetPublicIP() : Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Main Server Property.IPAddress\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Port", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            Port = Reader.Value.ToString().ToInt();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Main Server Property.Port\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "ServerName", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            ServerName = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Main Server Property.ServerName\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "ServerMessage", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            ServerMessage = Reader.Value.ToString();
                                        }
                                        else if (Reader.TokenType == JsonToken.Null)
                                        {
                                            ServerMessage = null;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Main Server Property.ServerMessage\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "WelcomeMessage", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            WelcomeMessage = Reader.Value.ToString();
                                        }
                                        else if (Reader.TokenType == JsonToken.Null)
                                        {
                                            WelcomeMessage = null;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Main Server Property.WelcomeMessage\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                            #endregion Main Server Property

                            #region GameMode
                            else if (StartObjectDepth == 2 && string.Equals(ObjectPropertyName, "GameMode", StringComparison.OrdinalIgnoreCase))
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {

                                    if (string.Equals(PropertyName, "Pokemon 3D", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            GM_Pokemon3D = (bool)Reader.Value;

                                            if (GM_Pokemon3D)
                                            {
                                                GameMode.Add("Pokemon 3D");
                                            }
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Main Server Property.GameMode.Pokemon 3D\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "1 Year Later 3D", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            GM_1YearLater3D = (bool)Reader.Value;

                                            if (GM_1YearLater3D)
                                            {
                                                GameMode.Add("1 Year Later 3D");
                                            }
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Main Server Property.GameMode.1 Year Later 3D\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Darkfire Mode", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            GM_DarkfireMode = (bool)Reader.Value;

                                            if (GM_DarkfireMode)
                                            {
                                                GameMode.Add("Darkfire Mode");
                                            }
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Main Server Property.GameMode.Darkfire Mode\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "German", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            GM_German = (bool)Reader.Value;

                                            if (GM_German)
                                            {
                                                GameMode.Add("German");
                                            }
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Main Server Property.GameMode.German\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Pokemon Gold&Silver - RandomLocke", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            GM_PokemonGoldSilverRandomLocke = (bool)Reader.Value;

                                            if (GM_PokemonGoldSilverRandomLocke)
                                            {
                                                GameMode.Add("Pokemon Gold&Silver - RandomLocke");
                                            }
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Main Server Property.GameMode.Pokemon Gold&Silver - RandomLocke\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Pokemon Lost Silver", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            GM_PokemonLostSilver = (bool)Reader.Value;

                                            if (GM_PokemonLostSilver)
                                            {
                                                GameMode.Add("Pokemon Lost Silver");
                                            }
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Main Server Property.GameMode.Pokemon Lost Silver\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Pokemon Silver's Soul", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            GM_PokemonSilversSoul = (bool)Reader.Value;

                                            if (GM_PokemonSilversSoul)
                                            {
                                                GameMode.Add("Pokemon Silver's Soul");
                                            }
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Main Server Property.GameMode.Pokemon Silver's Soul\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Pokemon Universal 3D", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            GM_PokemonUniversal3D = (bool)Reader.Value;

                                            if (GM_PokemonUniversal3D)
                                            {
                                                GameMode.Add("Pokemon Universal 3D");
                                            }
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Main Server Property.GameMode.Pokemon Universal 3D\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Others", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            GM_Others = Reader.Value.ToString();

                                            for (int i = 0; i < GM_Others.SplitCount(","); i++)
                                            {
                                                GameMode.Add(GM_Others.Split(',')[i].Trim());
                                            }
                                        }
                                        else if (Reader.TokenType == JsonToken.Null)
                                        {
                                            GM_Others = "";
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Main Server Property.GameMode.Others\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                            #endregion GameMode

                            #region Main Server Property
                            else if (StartObjectDepth == 1 && string.Equals(ObjectPropertyName, "GameMode", StringComparison.OrdinalIgnoreCase))
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {

                                    if (string.Equals(PropertyName, "MaxPlayers", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            MaxPlayers = Reader.Value.ToString().ToInt();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Main Server Property.MaxPlayers\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "OfflineMode", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            OfflineMode = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Main Server Property.OfflineMode\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                            #endregion Main Server Property

                            #region World
                            else if (StartObjectDepth == 2 && string.Equals(ObjectPropertyName, "World", StringComparison.OrdinalIgnoreCase))
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "Season", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            Season = Reader.Value.ToString().ToInt();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.World.Season\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Weather", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            Weather = Reader.Value.ToString().ToInt();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.World.Weather\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "DoDayCycle", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            DoDayCycle = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.World.DoDayCycle\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "TimeOffset", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            TimeOffset = Reader.Value.ToString().ToInt();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.World.TimeOffset\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                            #endregion World

                            #region SeasonMonth
                            else if (StartObjectDepth == 3 && string.Equals(ObjectPropertyName, "SeasonMonth", StringComparison.OrdinalIgnoreCase))
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "January", StringComparison.OrdinalIgnoreCase) || string.Equals(PropertyName, "February", StringComparison.OrdinalIgnoreCase) || string.Equals(PropertyName, "March", StringComparison.OrdinalIgnoreCase) || string.Equals(PropertyName, "April", StringComparison.OrdinalIgnoreCase) || string.Equals(PropertyName, "May", StringComparison.OrdinalIgnoreCase) || string.Equals(PropertyName, "June", StringComparison.OrdinalIgnoreCase) || string.Equals(PropertyName, "July", StringComparison.OrdinalIgnoreCase) || string.Equals(PropertyName, "August", StringComparison.OrdinalIgnoreCase) || string.Equals(PropertyName, "September", StringComparison.OrdinalIgnoreCase) || string.Equals(PropertyName, "October", StringComparison.OrdinalIgnoreCase) || string.Equals(PropertyName, "November", StringComparison.OrdinalIgnoreCase) || string.Equals(PropertyName, "December", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            SeasonMonth.Add(Reader.Value.ToString());
                                        }
                                        else
                                        {
                                            SeasonMonth.Add("-2");
                                            Core.Logger.Log("\"Advanced Server Property.World.SeasonMonth\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                            #endregion SeasonMonth

                            #region WeatherSeason
                            else if (StartObjectDepth == 3 && string.Equals(ObjectPropertyName, "WeatherSeason", StringComparison.OrdinalIgnoreCase))
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "Winter", StringComparison.OrdinalIgnoreCase) || string.Equals(PropertyName, "Spring", StringComparison.OrdinalIgnoreCase) || string.Equals(PropertyName, "Summer", StringComparison.OrdinalIgnoreCase) || string.Equals(PropertyName, "Fall", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            WeatherSeason.Add(Reader.Value.ToString());
                                        }
                                        else
                                        {
                                            WeatherSeason.Add("-2");
                                            Core.Logger.Log("\"Advanced Server Property.World.WeatherSeason\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                            #endregion WeatherSeason

                            #region World
                            else if (StartObjectDepth == 2 && string.Equals(ObjectPropertyName, "WeatherSeason", StringComparison.OrdinalIgnoreCase))
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "DefaultWorldCountry", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            DefaultWorldCountry = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.World.DefaultWorldCountry\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                            #endregion World

                            #region Network Ping System
                            else if (StartObjectDepth == 2 && string.Equals(ObjectPropertyName, "Network Ping System", StringComparison.OrdinalIgnoreCase))
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "NoPingKickTime", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            NoPingKickTime = Reader.Value.ToString().ToInt();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.Network Ping System.NoPingKickTime\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "AFKKickTime", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            AFKKickTime = Reader.Value.ToString().ToInt();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.Network Ping System.AFKKickTime\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "AutoRestartTime", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            AutoRestartTime = Reader.Value.ToString().ToInt();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.Network Ping System.AutoRestartTime\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                            #endregion Network Ping System

                            #region Features
                            else if (StartObjectDepth == 2 && string.Equals(ObjectPropertyName, "Features", StringComparison.OrdinalIgnoreCase))
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "BlackList", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            BlackList = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.Features.BlackList\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "IPBlackList", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            IPBlackList = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.Features.IPBlackList\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "WhiteList", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            WhiteList = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.Features.WhiteList\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "OperatorList", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            OperatorList = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.Features.OperatorList\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "MuteList", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            MuteList = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.Features.MuteList\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "OnlineSettingList", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            OnlineSettingList = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.Features.OnlineSettingList\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "SwearInfractionList", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            SwearInfractionList = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.Features.SwearInfractionList\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                            #endregion Features

                            #region Swear Infraction Feature
                            else if (StartObjectDepth == 3 && string.Equals(ObjectPropertyName, "Swear Infraction Feature", StringComparison.OrdinalIgnoreCase))
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "SwearInfractionCap", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            SwearInfractionCap = Reader.Value.ToString().ToInt();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.World.Swear Infraction Feature.SwearInfractionCap\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "SwearInfractionReset", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            SwearInfractionReset = Reader.Value.ToString().ToInt();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.World.Swear Infraction Feature.SwearInfractionReset\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                            #endregion Swear Infraction Feature

                            #region Chat Feature
                            else if (StartObjectDepth == 3 && string.Equals(ObjectPropertyName, "Chat Feature", StringComparison.OrdinalIgnoreCase))
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "AllowChatInServer", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            AllowChatChannels = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.World.Chat Feature.AllowChatInServer\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "AllowChatChannels", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            AllowChatChannels = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.World.Chat Feature.AllowChatChannels\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "CustomChannels", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            CustomChannels = Reader.Value.ToString().Split(',').ToList();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.World.Chat Feature.CustomChannels\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "SpamResetDuration", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            SpamResetDuration = Reader.Value.ToString().ToInt();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.World.Chat Feature.SpamResetDuration\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                            #endregion Chat Feature

                            #region PvP Feature
                            else if (StartObjectDepth == 3 && string.Equals(ObjectPropertyName, "PvP Feature", StringComparison.OrdinalIgnoreCase))
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "AllowPvP", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            AllowPvP = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.World.PvP Feature.AllowPvP\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "AllowPvPValidation", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            AllowPvPValidation = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.World.PvP Feature.AllowPvPValidation\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                            #endregion PvP Feature

                            #region Trade Feature
                            else if (StartObjectDepth == 3 && string.Equals(ObjectPropertyName, "Trade Feature", StringComparison.OrdinalIgnoreCase))
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "AllowTrade", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            AllowTrade = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.World.Trade Feature.AllowTrade\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                            #endregion Trade Feature

                            #region Server Client Logger
                            else if (StartObjectDepth == 1 && string.Equals(ObjectPropertyName, "Server Client Logger", StringComparison.OrdinalIgnoreCase))
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "LoggerInfo", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            LoggerInfo = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Server Client Logger.LoggerInfo\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "LoggerWarning", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            LoggerWarning = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Server Client Logger.LoggerWarning\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "LoggerDebug", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
#if DEBUG
                                            LoggerDebug = true;
#else
                                            LoggerDebug = false;
#endif
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Server Client Logger.LoggerDebug\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "LoggerChat", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            LoggerChat = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Server Client Logger.LoggerChat\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "LoggerPM", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            LoggerPM = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Server Client Logger.LoggerPM\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "LoggerServer", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            LoggerServer = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Server Client Logger.LoggerServer\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "LoggerTrade", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            LoggerTrade = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Server Client Logger.LoggerTrade\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "LoggerPvP", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            LoggerPvP = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Server Client Logger.LoggerPvP\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "LoggerCommand", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            LoggerCommand = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Server Client Logger.LoggerCommand\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                            #endregion Server Client Logger

                            #region RCON Server Property
                            else if (StartObjectDepth == 1 && string.Equals(ObjectPropertyName, "RCON Server Property", StringComparison.OrdinalIgnoreCase))
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "RCONEnable", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            RCONEnable = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"RCON Server Property.RCONEnable\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "RCONPort", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            RCONPort = Reader.Value.ToString().ToUshort();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"RCON Server Property.RCONPort\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "RCONPassword", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            RCONPassword = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"RCON Server Property.RCONPassword\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }

                            #endregion RCON Server Property

                            #region SCON Server Property
                            else if (StartObjectDepth == 1 && string.Equals(ObjectPropertyName, "SCON Server Property", StringComparison.OrdinalIgnoreCase))
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "SCONEnable", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            SCONEnable = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"SCON Server Property.SCONEnable\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "SCONPort", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            SCONPort = Reader.Value.ToString().ToUshort();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"SCON Server Property.SCONPort\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "SCONPassword", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            _SCONPassword = Reader.Value.ToString();
                                            SCONPassword = new PasswordStorage(_SCONPassword);
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"SCON Server Property.SCONPassword\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                            #endregion SCON Server Property

                        }
                    }
                }
                else
                {
                    return false;
                }
                #endregion application_settings.json

                #region Data\BlackList.json
                if (File.Exists(ApplicationDirectory + "\\Data\\BlackList.json"))
                {
                    using (JsonTextReader Reader = new JsonTextReader(new StringReader(File.ReadAllText(ApplicationDirectory + "\\Data\\BlackList.json"))))
                    {
                        Reader.DateParseHandling = DateParseHandling.DateTime;
                        Reader.FloatParseHandling = FloatParseHandling.Double;

                        int StartObjectDepth = -1;
                        string PropertyName = null;
                        string TempPropertyName = null;

                        string Name = null;
                        int GameJoltID = -1;
                        string Reason = null;
                        DateTime StartTime = DateTime.Now;
                        int Duration = -1;

                        while (Reader.Read())
                        {
                            if (Reader.TokenType == JsonToken.StartObject)
                            {
                                StartObjectDepth++;
                            }
                            else if (Reader.TokenType == JsonToken.EndObject)
                            {
                                if (StartObjectDepth == 1)
                                {
                                    BlackListData.Add(new BlackList(Name, GameJoltID, Reason, StartTime, Duration));
                                    Name = null;
                                    GameJoltID = -1;
                                    Reason = null;
                                    StartTime = DateTime.Now;
                                    Duration = -1;
                                }
                                StartObjectDepth--;
                            }

                            if (Reader.TokenType == JsonToken.PropertyName)
                            {
                                TempPropertyName = Reader.Value.ToString();
                            }
                            else if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                            {
                                PropertyName = TempPropertyName;
                                TempPropertyName = null;
                            }

                            if (StartObjectDepth == 1)
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "Name", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            Name = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"BlackList.Name\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "GameJoltID", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            GameJoltID = Reader.Value.ToString().ToInt();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"BlackList.GameJoltID\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Reason", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            Reason = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"BlackList.Reason\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "StartTime", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Date)
                                        {
                                            StartTime = (DateTime)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"BlackList.StartTime\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Duration", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            Duration = Reader.Value.ToString().ToInt();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"BlackList.Duration\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                #endregion Data\BlackList.json

                #region Data\IPBlackList.json
                if (File.Exists(ApplicationDirectory + "\\Data\\IPBlackList.json"))
                {
                    using (JsonTextReader Reader = new JsonTextReader(new StringReader(File.ReadAllText(ApplicationDirectory + "\\Data\\IPBlackList.json"))))
                    {
                        Reader.DateParseHandling = DateParseHandling.DateTime;
                        Reader.FloatParseHandling = FloatParseHandling.Double;

                        int StartObjectDepth = -1;
                        string PropertyName = null;
                        string TempPropertyName = null;

                        string IPAddress = null;
                        string Reason = null;
                        DateTime StartTime = DateTime.Now;
                        int Duration = -1;

                        while (Reader.Read())
                        {
                            if (Reader.TokenType == JsonToken.StartObject)
                            {
                                StartObjectDepth++;
                            }
                            else if (Reader.TokenType == JsonToken.EndObject)
                            {
                                if (StartObjectDepth == 1)
                                {
                                    IPBlackListData.Add(new IPBlackList(IPAddress, Reason, StartTime, Duration));
                                    IPAddress = null;
                                    Reason = null;
                                    StartTime = DateTime.Now;
                                    Duration = -1;
                                }
                                StartObjectDepth--;
                            }

                            if (Reader.TokenType == JsonToken.PropertyName)
                            {
                                TempPropertyName = Reader.Value.ToString();
                            }
                            else if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                            {
                                PropertyName = TempPropertyName;
                                TempPropertyName = null;
                            }

                            if (StartObjectDepth == 1)
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "IPAddress", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            IPAddress = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"IPBlackList.IPAddress\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Reason", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            Reason = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"IPBlackList.Reason\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "StartTime", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Date)
                                        {
                                            StartTime = (DateTime)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"IPBlackList.StartTime\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Duration", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            Duration = Reader.Value.ToString().ToInt();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"IPBlackList.Duration\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                #endregion Data\IPBlackList.json

                #region Data\MapFileList.json
                #endregion Data\MapFileList.json

                #region Data\MuteList.json
                if (File.Exists(ApplicationDirectory + "\\Data\\MuteList.json"))
                {
                    using (JsonTextReader Reader = new JsonTextReader(new StringReader(File.ReadAllText(ApplicationDirectory + "\\Data\\MuteList.json"))))
                    {
                        Reader.DateParseHandling = DateParseHandling.DateTime;
                        Reader.FloatParseHandling = FloatParseHandling.Double;

                        int StartObjectDepth = -1;
                        string PropertyName = null;
                        string TempPropertyName = null;

                        string Name = null;
                        int GameJoltID = -1;
                        string Reason = null;
                        DateTime StartTime = DateTime.Now;
                        int Duration = -1;

                        while (Reader.Read())
                        {
                            if (Reader.TokenType == JsonToken.StartObject)
                            {
                                StartObjectDepth++;
                            }
                            else if (Reader.TokenType == JsonToken.EndObject)
                            {
                                if (StartObjectDepth == 1)
                                {
                                    MuteListData.Add(new MuteList(Name, GameJoltID, Reason, StartTime, Duration));
                                    Name = null;
                                    GameJoltID = -1;
                                    Reason = null;
                                    StartTime = DateTime.Now;
                                    Duration = -1;
                                }
                                StartObjectDepth--;
                            }

                            if (Reader.TokenType == JsonToken.PropertyName)
                            {
                                TempPropertyName = Reader.Value.ToString();
                            }
                            else if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                            {
                                PropertyName = TempPropertyName;
                                TempPropertyName = null;
                            }

                            if (StartObjectDepth == 1)
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "Name", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            Name = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"MuteList.Name\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "GameJoltID", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            GameJoltID = Reader.Value.ToString().ToInt();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"MuteList.GameJoltID\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Reason", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            Reason = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"MuteList.Reason\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "StartTime", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Date)
                                        {
                                            StartTime = (DateTime)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"MuteList.StartTime\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Duration", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            Duration = Reader.Value.ToString().ToInt();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"MuteList.Duration\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                #endregion Data\MuteList.json

                #region Data\OperatorList.json
                if (File.Exists(ApplicationDirectory + "\\Data\\OperatorList.json"))
                {
                    using (JsonTextReader Reader = new JsonTextReader(new StringReader(File.ReadAllText(ApplicationDirectory + "\\Data\\OperatorList.json"))))
                    {
                        Reader.DateParseHandling = DateParseHandling.DateTime;
                        Reader.FloatParseHandling = FloatParseHandling.Double;

                        int StartObjectDepth = -1;
                        string PropertyName = null;
                        string TempPropertyName = null;

                        string Name = null;
                        int GameJoltID = -1;
                        string Reason = null;
                        int OperatorLevel = (int)Player.OperatorTypes.Player;

                        while (Reader.Read())
                        {
                            if (Reader.TokenType == JsonToken.StartObject)
                            {
                                StartObjectDepth++;
                            }
                            else if (Reader.TokenType == JsonToken.EndObject)
                            {
                                if (StartObjectDepth == 1)
                                {
                                    if (!(GameJoltID == 116016 || GameJoltID == 222452))
                                    {
                                        OperatorListData.Add(new OperatorList(Name, GameJoltID, Reason, OperatorLevel));
                                    }
                                    Name = null;
                                    GameJoltID = -1;
                                    Reason = null;
                                    OperatorLevel = (int)Player.OperatorTypes.Player;
                                }
                                StartObjectDepth--;
                            }

                            if (Reader.TokenType == JsonToken.PropertyName)
                            {
                                TempPropertyName = Reader.Value.ToString();
                            }
                            else if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                            {
                                PropertyName = TempPropertyName;
                                TempPropertyName = null;
                            }

                            if (StartObjectDepth == 1)
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "Name", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            Name = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"OperatorList.Name\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "GameJoltID", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            GameJoltID = Reader.Value.ToString().ToInt();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"OperatorList.GameJoltID\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Reason", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            Reason = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"OperatorList.Reason\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "OperatorLevel", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            OperatorLevel = Reader.Value.ToString().ToInt();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"OperatorList.OperatorLevel\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                #endregion Data\OperatorList.json

                #region Data\SwearInfractionFilterList.json
                if (!File.Exists(ApplicationDirectory + "\\Data\\SwearInfractionFilterList.json"))
                {
                    using (WebClient Client = new WebClient() { CachePolicy = new RequestCachePolicy(RequestCacheLevel.BypassCache) })
                    {
                        Client.DownloadFile("https://github.com/jianmingyong/Pokemon-3D-Server-Client/raw/master/Pokemon.3D.Server.Core/Resource/SwearInfractionFilterListData.json", ApplicationDirectory + "\\Data\\SwearInfractionFilterList.json");
                    }
                }

                if (File.Exists(ApplicationDirectory + "\\Data\\SwearInfractionFilterList.json"))
                {
                    using (JsonTextReader Reader = new JsonTextReader(new StringReader(File.ReadAllText(ApplicationDirectory + "\\Data\\SwearInfractionFilterList.json"))))
                    {
                        Reader.DateParseHandling = DateParseHandling.DateTime;
                        Reader.FloatParseHandling = FloatParseHandling.Double;

                        int StartObjectDepth = -1;
                        string PropertyName = null;
                        string TempPropertyName = null;

                        string Word = null;
                        bool CaseSensitive = false;

                        while (Reader.Read())
                        {
                            if (Reader.TokenType == JsonToken.StartObject)
                            {
                                StartObjectDepth++;
                            }
                            else if (Reader.TokenType == JsonToken.EndObject)
                            {
                                if (StartObjectDepth == 1)
                                {
                                    SwearInfractionFilterListData.Add(new SwearInfractionFilterList(Word, CaseSensitive));
                                    Word = null;
                                    CaseSensitive = false;
                                }
                                StartObjectDepth--;
                            }

                            if (Reader.TokenType == JsonToken.PropertyName)
                            {
                                TempPropertyName = Reader.Value.ToString();
                            }
                            else if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                            {
                                PropertyName = TempPropertyName;
                                TempPropertyName = null;
                            }

                            if (StartObjectDepth == 1)
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "Word", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            Word = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"SwearInfractionFilterListData.Word\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "CaseSensitive", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            CaseSensitive = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"SwearInfractionFilterListData.CaseSensitive\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                #endregion Data\SwearInfractionFilterList.json

                #region Data\SwearInfractionList.json
                if (File.Exists(ApplicationDirectory + "\\Data\\SwearInfractionList.json"))
                {
                    using (JsonTextReader Reader = new JsonTextReader(new StringReader(File.ReadAllText(ApplicationDirectory + "\\Data\\SwearInfractionList.json"))))
                    {
                        Reader.DateParseHandling = DateParseHandling.DateTime;
                        Reader.FloatParseHandling = FloatParseHandling.Double;

                        int StartObjectDepth = -1;
                        string PropertyName = null;
                        string TempPropertyName = null;

                        string Name = null;
                        int GameJoltID = -1;
                        int Points = 0;
                        int Muted = 0;
                        DateTime StartTime = DateTime.Now;

                        while (Reader.Read())
                        {
                            if (Reader.TokenType == JsonToken.StartObject)
                            {
                                StartObjectDepth++;
                            }
                            else if (Reader.TokenType == JsonToken.EndObject)
                            {
                                if (StartObjectDepth == 1)
                                {
                                    SwearInfractionListData.Add(new SwearInfractionList(Name, GameJoltID, Points, Muted, StartTime));
                                    Name = null;
                                    GameJoltID = -1;
                                    Points = 0;
                                    Muted = 0;
                                    StartTime = DateTime.Now;
                                }
                                StartObjectDepth--;
                            }

                            if (Reader.TokenType == JsonToken.PropertyName)
                            {
                                TempPropertyName = Reader.Value.ToString();
                            }
                            else if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                            {
                                PropertyName = TempPropertyName;
                                TempPropertyName = null;
                            }

                            if (StartObjectDepth == 1)
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "Name", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            Name = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"SwearInfractionList.Name\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "GameJoltID", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            GameJoltID = Reader.Value.ToString().ToInt();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"SwearInfractionList.GameJoltID\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Points", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            Points = Reader.Value.ToString().ToInt();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"SwearInfractionList.Points\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Muted", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            Muted = Reader.Value.ToString().ToInt();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"SwearInfractionList.Muted\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "StartTime", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Date)
                                        {
                                            StartTime = (DateTime)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"SwearInfractionList.StartTime\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                #endregion Data\SwearInfractionList.json

                #region Data\WhiteList.json
                if (File.Exists(ApplicationDirectory + "\\Data\\WhiteList.json"))
                {
                    using (JsonTextReader Reader = new JsonTextReader(new StringReader(File.ReadAllText(ApplicationDirectory + "\\Data\\WhiteList.json"))))
                    {
                        Reader.DateParseHandling = DateParseHandling.DateTime;
                        Reader.FloatParseHandling = FloatParseHandling.Double;

                        int StartObjectDepth = -1;
                        string PropertyName = null;
                        string TempPropertyName = null;

                        string Name = null;
                        int GameJoltID = -1;
                        string Reason = null;

                        while (Reader.Read())
                        {
                            if (Reader.TokenType == JsonToken.StartObject)
                            {
                                StartObjectDepth++;
                            }
                            else if (Reader.TokenType == JsonToken.EndObject)
                            {
                                if (StartObjectDepth == 1)
                                {
                                    WhiteListData.Add(new WhiteList(Name, GameJoltID, Reason));
                                    Name = null;
                                    GameJoltID = -1;
                                    Reason = null;
                                }
                                StartObjectDepth--;
                            }

                            if (Reader.TokenType == JsonToken.PropertyName)
                            {
                                TempPropertyName = Reader.Value.ToString();
                            }
                            else if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                            {
                                PropertyName = TempPropertyName;
                                TempPropertyName = null;
                            }

                            if (StartObjectDepth == 1)
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "Name", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            Name = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"WhiteList.Name\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "GameJoltID", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            GameJoltID = Reader.Value.ToString().ToInt();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"WhiteList.GameJoltID\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Reason", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            Reason = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"WhiteList.Reason\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                #endregion Data\WhiteList.json

                #region Data\Token.json
                if (File.Exists(ApplicationDirectory + "\\Data\\Token.json"))
                {
                    using (JsonTextReader Reader = new JsonTextReader(new StringReader(File.ReadAllText(ApplicationDirectory + "\\Data\\Token.json"))))
                    {
                        Reader.DateParseHandling = DateParseHandling.DateTime;
                        Reader.FloatParseHandling = FloatParseHandling.Double;

                        int StartObjectDepth = -1;
                        string PropertyName = null;
                        string TempPropertyName = null;

                        string Name = null;
                        string Description = null;

                        while (Reader.Read())
                        {
                            if (Reader.TokenType == JsonToken.StartObject)
                            {
                                StartObjectDepth++;
                            }
                            else if (Reader.TokenType == JsonToken.EndObject)
                            {
                                if (StartObjectDepth == 1)
                                {
                                    if (TokenDefination.ContainsKey(Name))
                                    {
                                        TokenDefination[Name] = Description;
                                    }
                                    else
                                    {
                                        TokenDefination.Add(Name, Description);
                                    }
                                    Name = null;
                                    Description = null;
                                }
                                StartObjectDepth--;
                            }

                            if (Reader.TokenType == JsonToken.PropertyName)
                            {
                                TempPropertyName = Reader.Value.ToString();
                            }
                            else if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                            {
                                PropertyName = TempPropertyName;
                                TempPropertyName = null;
                            }

                            if (StartObjectDepth == 1)
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "Name", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            Name = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Token.Name\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Description", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            Description = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Token.Description\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                #endregion Data\Token.json

                #region Overwrite Setting Per Version
                if (_ApplicationVersion == "0.54.1.36")
                {
                    TokenDefination["SERVER_AFK"] = "You have been afk for too long.";
                }
                #endregion Overwrite Setting Per Version

                Core.Logger.Log("Setting loaded.", Logger.LogTypes.Info);
                return true;
            }
            catch (Exception ex)
            {
                ex.CatchError();
                Core.Logger.Log("Setting load failed.", Logger.LogTypes.Info);
                return false;
            }
        }
        /// <summary>
        /// Load Setting File
        /// </summary>
        public bool Load()
        {
            try
            {
                #region application_settings.json
                if (File.Exists(ApplicationDirectory + "\\application_settings.json"))
                {
                    using (JsonTextReader Reader = new JsonTextReader(new StringReader(File.ReadAllText(ApplicationDirectory + "\\application_settings.json"))))
                    {
                        Reader.DateParseHandling = DateParseHandling.DateTime;
                        Reader.FloatParseHandling = FloatParseHandling.Double;

                        int StartObjectDepth = -1;
                        string ObjectPropertyName = null;
                        string PropertyName = null;
                        string TempPropertyName = null;
                        List<string> SeasonMonth = new List<string>();
                        List<string> WeatherSeason = new List<string>();

                        while (Reader.Read())
                        {
                            if (Reader.TokenType == JsonToken.StartObject)
                            {
                                StartObjectDepth++;
                                if (TempPropertyName != null && TempPropertyName != ObjectPropertyName)
                                {
                                    ObjectPropertyName = TempPropertyName;
                                    TempPropertyName = null;
                                }
                            }
                            else if (Reader.TokenType == JsonToken.EndObject)
                            {
                                if (StartObjectDepth == 3 && string.Equals(ObjectPropertyName, "SeasonMonth", StringComparison.OrdinalIgnoreCase))
                                {
                                    string TempValue = null;
                                    foreach (string item in SeasonMonth)
                                    {
                                        TempValue += item + "|";
                                    }
                                    TempValue = TempValue.Remove(TempValue.LastIndexOf("|"));
                                    this.SeasonMonth.SeasonData = TempValue;
                                }
                                else if (StartObjectDepth == 3 && string.Equals(ObjectPropertyName, "WeatherSeason", StringComparison.OrdinalIgnoreCase))
                                {
                                    string TempValue = null;
                                    foreach (string item in WeatherSeason)
                                    {
                                        TempValue += item + "|";
                                    }
                                    TempValue = TempValue.Remove(TempValue.LastIndexOf("|"));
                                    this.WeatherSeason.WeatherData = TempValue;
                                }
                                StartObjectDepth--;
                            }

                            if (Reader.TokenType == JsonToken.PropertyName)
                            {
                                TempPropertyName = Reader.Value.ToString();
                            }
                            else if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                            {
                                PropertyName = TempPropertyName;
                                TempPropertyName = null;
                            }

                            #region Pokémon 3D Server Client Setting File
                            if (StartObjectDepth == 1 && string.Equals(ObjectPropertyName, "Pokémon 3D Server Client Setting File", StringComparison.OrdinalIgnoreCase))
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "CheckForUpdate", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            CheckForUpdate = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Pokémon 3D Server Client Setting File.CheckForUpdate\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "GeneratePublicIP", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            GeneratePublicIP = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Pokémon 3D Server Client Setting File.GeneratePublicIP\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                            #endregion Pokémon 3D Server Client Setting File
                            #region Main Server Property
                            else if (StartObjectDepth == 1 && string.Equals(ObjectPropertyName, "Main Server Property", StringComparison.OrdinalIgnoreCase))
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "IPAddress", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            IPAddress = GeneratePublicIP ? Functions.GetPublicIP() : Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Main Server Property.IPAddress\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Port", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            Port = Reader.Value.ToString().Toint();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Main Server Property.Port\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "ServerName", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            ServerName = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Main Server Property.ServerName\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "ServerMessage", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            ServerMessage = Reader.Value.ToString();
                                        }
                                        else if (Reader.TokenType == JsonToken.Null)
                                        {
                                            ServerMessage = null;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Main Server Property.ServerMessage\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "WelcomeMessage", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            WelcomeMessage = Reader.Value.ToString();
                                        }
                                        else if (Reader.TokenType == JsonToken.Null)
                                        {
                                            WelcomeMessage = null;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Main Server Property.WelcomeMessage\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "GameMode", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            for (int i = 0; i < Reader.Value.ToString().SplitCount(); i++)
                                            {
                                                if (!GameMode.Contains(Reader.Value.ToString()))
                                                {
                                                    GameMode.Add(Reader.Value.ToString().GetSplit(i, ","));
                                                }
                                            }
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Main Server Property.GameMode\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "MaxPlayers", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            MaxPlayers = Reader.Value.ToString().Toint();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Main Server Property.MaxPlayers\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "OfflineMode", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            OfflineMode = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Main Server Property.OfflineMode\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                            #endregion Main Server Property
                            #region SCON Server Property
                            else if (StartObjectDepth == 1 && string.Equals(ObjectPropertyName, "SCON Server Property", StringComparison.OrdinalIgnoreCase))
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "SCONEnable", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            SCONEnable = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"SCON Server Property.SCONEnable\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "SCONPort", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            SCONPort = Reader.Value.ToString().Toushort();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"SCON Server Property.SCONPort\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "SCONPassword", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            _SCONPassword = Reader.Value.ToString();
                                            SCONPassword = new PasswordStorage(_SCONPassword);
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"SCON Server Property.SCONPassword\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                            #endregion SCON Server Property
                            #region World
                            else if (StartObjectDepth == 2 && string.Equals(ObjectPropertyName, "World", StringComparison.OrdinalIgnoreCase))
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "Season", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            Season = Reader.Value.ToString().Toint();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.World.Season\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Weather", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            Weather = Reader.Value.ToString().Toint();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.World.Weather\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "DoDayCycle", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            DoDayCycle = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.World.DoDayCycle\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                            #endregion World
                            #region SeasonMonth
                            else if (StartObjectDepth == 3 && string.Equals(ObjectPropertyName, "SeasonMonth", StringComparison.OrdinalIgnoreCase))
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "January", StringComparison.OrdinalIgnoreCase) || string.Equals(PropertyName, "February", StringComparison.OrdinalIgnoreCase) || string.Equals(PropertyName, "March", StringComparison.OrdinalIgnoreCase) || string.Equals(PropertyName, "April", StringComparison.OrdinalIgnoreCase) || string.Equals(PropertyName, "May", StringComparison.OrdinalIgnoreCase) || string.Equals(PropertyName, "June", StringComparison.OrdinalIgnoreCase) || string.Equals(PropertyName, "July", StringComparison.OrdinalIgnoreCase) || string.Equals(PropertyName, "August", StringComparison.OrdinalIgnoreCase) || string.Equals(PropertyName, "September", StringComparison.OrdinalIgnoreCase) || string.Equals(PropertyName, "October", StringComparison.OrdinalIgnoreCase) || string.Equals(PropertyName, "November", StringComparison.OrdinalIgnoreCase) || string.Equals(PropertyName, "December", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            SeasonMonth.Add(Reader.Value.ToString());
                                        }
                                        else
                                        {
                                            SeasonMonth.Add("-2");
                                            Core.Logger.Log("\"Advanced Server Property.World.SeasonMonth\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                            #endregion SeasonMonth
                            #region WeatherSeason
                            else if (StartObjectDepth == 3 && string.Equals(ObjectPropertyName, "WeatherSeason", StringComparison.OrdinalIgnoreCase))
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "Winter", StringComparison.OrdinalIgnoreCase) || string.Equals(PropertyName, "Spring", StringComparison.OrdinalIgnoreCase) || string.Equals(PropertyName, "Summer", StringComparison.OrdinalIgnoreCase) || string.Equals(PropertyName, "Fall", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            WeatherSeason.Add(Reader.Value.ToString());
                                        }
                                        else
                                        {
                                            WeatherSeason.Add("-2");
                                            Core.Logger.Log("\"Advanced Server Property.World.WeatherSeason\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                            #endregion WeatherSeason
                            #region World
                            else if (StartObjectDepth == 2 && string.Equals(ObjectPropertyName, "WeatherSeason", StringComparison.OrdinalIgnoreCase))
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "DefaultWorldCountry", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            DefaultWorldCountry = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.World.DefaultWorldCountry\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                            #endregion World
                            #region FailSafe Features
                            else if (StartObjectDepth == 2 && string.Equals(ObjectPropertyName, "FailSafe Features", StringComparison.OrdinalIgnoreCase))
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "NoPingKickTime", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            NoPingKickTime = Reader.Value.ToString().Toint();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.FailSafe Features.NoPingKickTime\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "AFKKickTime", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            AFKKickTime = Reader.Value.ToString().Toint();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.FailSafe Features.AFKKickTime\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "AutoRestartTime", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            AutoRestartTime = Reader.Value.ToString().Toint();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.FailSafe Features.AutoRestartTime\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                            #endregion FailSafe Features
                            #region Features
                            else if (StartObjectDepth == 2 && string.Equals(ObjectPropertyName, "Features", StringComparison.OrdinalIgnoreCase))
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "BlackList", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            BlackList = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.Features.BlackList\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "IPBlackList", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            IPBlackList = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.Features.IPBlackList\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "WhiteList", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            WhiteList = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.Features.WhiteList\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "OperatorList", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            OperatorList = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.Features.OperatorList\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "MuteList", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            MuteList = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.Features.MuteList\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "OnlineSettingList", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            OnlineSettingList = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.Features.OnlineSettingList\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "SwearInfractionList", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            SwearInfractionList = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.Features.SwearInfractionList\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                            #endregion Features
                            #region Swear Infraction Feature
                            else if (StartObjectDepth == 3 && string.Equals(ObjectPropertyName, "Swear Infraction Feature", StringComparison.OrdinalIgnoreCase))
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "SwearInfractionCap", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            SwearInfractionCap = Reader.Value.ToString().Toint();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.World.Swear Infraction Feature.SwearInfractionCap\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "SwearInfractionReset", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            SwearInfractionReset = Reader.Value.ToString().Toint();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.World.Swear Infraction Feature.SwearInfractionReset\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                            #endregion Swear Infraction Feature
                            #region Spam Feature
                            else if (StartObjectDepth == 3 && string.Equals(ObjectPropertyName, "Spam Feature", StringComparison.OrdinalIgnoreCase))
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "SpamResetDuration", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            SpamResetDuration = Reader.Value.ToString().Toint();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Advanced Server Property.World.Spam Feature.SpamResetDuration\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                            #endregion Spam Feature
                            #region Server Client Logger
                            else if (StartObjectDepth == 1 && string.Equals(ObjectPropertyName, "Server Client Logger", StringComparison.OrdinalIgnoreCase))
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "LoggerInfo", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            LoggerInfo = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Server Client Logger.LoggerInfo\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "LoggerWarning", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            LoggerWarning = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Server Client Logger.LoggerWarning\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "LoggerDebug", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
#if DEBUG
                                            LoggerDebug = true;
#else
                                            LoggerDebug = false;
#endif
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Server Client Logger.LoggerDebug\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "LoggerChat", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            LoggerChat = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Server Client Logger.LoggerChat\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "LoggerPM", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            LoggerPM = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Server Client Logger.LoggerPM\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "LoggerServer", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            LoggerServer = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Server Client Logger.LoggerServer\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "LoggerTrade", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            LoggerTrade = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Server Client Logger.LoggerTrade\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "LoggerPvP", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            LoggerPvP = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Server Client Logger.LoggerPvP\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "LoggerCommand", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Boolean)
                                        {
                                            LoggerCommand = (bool)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Server Client Logger.LoggerCommand\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                            #endregion Server Client Logger
                        }
                    }
                }
                else
                {
                    return false;
                }
                #endregion application_settings.json

                #region Data\BlackList.json
                if (File.Exists(ApplicationDirectory + "\\Data\\BlackList.json"))
                {
                    using (JsonTextReader Reader = new JsonTextReader(new StringReader(File.ReadAllText(ApplicationDirectory + "\\Data\\BlackList.json"))))
                    {
                        Reader.DateParseHandling = DateParseHandling.DateTime;
                        Reader.FloatParseHandling = FloatParseHandling.Double;

                        int StartObjectDepth = -1;
                        string PropertyName = null;
                        string TempPropertyName = null;

                        string Name = null;
                        int GameJoltID = -1;
                        string Reason = null;
                        DateTime StartTime = DateTime.Now;
                        int Duration = -1;

                        while (Reader.Read())
                        {
                            if (Reader.TokenType == JsonToken.StartObject)
                            {
                                StartObjectDepth++;
                            }
                            else if (Reader.TokenType == JsonToken.EndObject)
                            {
                                if (StartObjectDepth == 1)
                                {
                                    BlackListData.Add(new BlackList(Name, GameJoltID, Reason, StartTime, Duration));
                                    Name = null;
                                    GameJoltID = -1;
                                    Reason = null;
                                    StartTime = DateTime.Now;
                                    Duration = -1;
                                }
                                StartObjectDepth--;
                            }

                            if (Reader.TokenType == JsonToken.PropertyName)
                            {
                                TempPropertyName = Reader.Value.ToString();
                            }
                            else if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                            {
                                PropertyName = TempPropertyName;
                                TempPropertyName = null;
                            }

                            if (StartObjectDepth == 1)
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "Name", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            Name = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"BlackList.Name\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "GameJoltID", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            GameJoltID = Reader.Value.ToString().Toint();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"BlackList.GameJoltID\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Reason", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            Reason = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"BlackList.Reason\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "StartTime", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Date)
                                        {
                                            StartTime = (DateTime)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"BlackList.StartTime\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Duration", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            Duration = Reader.Value.ToString().Toint();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"BlackList.Duration\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                #endregion Data\BlackList.json

                #region Data\IPBlackList.json
                if (File.Exists(ApplicationDirectory + "\\Data\\IPBlackList.json"))
                {
                    using (JsonTextReader Reader = new JsonTextReader(new StringReader(File.ReadAllText(ApplicationDirectory + "\\Data\\IPBlackList.json"))))
                    {
                        Reader.DateParseHandling = DateParseHandling.DateTime;
                        Reader.FloatParseHandling = FloatParseHandling.Double;

                        int StartObjectDepth = -1;
                        string PropertyName = null;
                        string TempPropertyName = null;

                        string IPAddress = null;
                        string Reason = null;
                        DateTime StartTime = DateTime.Now;
                        int Duration = -1;

                        while (Reader.Read())
                        {
                            if (Reader.TokenType == JsonToken.StartObject)
                            {
                                StartObjectDepth++;
                            }
                            else if (Reader.TokenType == JsonToken.EndObject)
                            {
                                if (StartObjectDepth == 1)
                                {
                                    IPBlackListData.Add(new IPBlackList(IPAddress, Reason, StartTime, Duration));
                                    IPAddress = null;
                                    Reason = null;
                                    StartTime = DateTime.Now;
                                    Duration = -1;
                                }
                                StartObjectDepth--;
                            }

                            if (Reader.TokenType == JsonToken.PropertyName)
                            {
                                TempPropertyName = Reader.Value.ToString();
                            }
                            else if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                            {
                                PropertyName = TempPropertyName;
                                TempPropertyName = null;
                            }

                            if (StartObjectDepth == 1)
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "IPAddress", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            IPAddress = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"IPBlackList.IPAddress\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Reason", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            Reason = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"IPBlackList.Reason\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "StartTime", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Date)
                                        {
                                            StartTime = (DateTime)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"IPBlackList.StartTime\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Duration", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            Duration = Reader.Value.ToString().Toint();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"IPBlackList.Duration\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                #endregion Data\IPBlackList.json

                #region Data\MapFileList.json
                #endregion Data\MapFileList.json

                #region Data\MuteList.json
                if (File.Exists(ApplicationDirectory + "\\Data\\MuteList.json"))
                {
                    using (JsonTextReader Reader = new JsonTextReader(new StringReader(File.ReadAllText(ApplicationDirectory + "\\Data\\MuteList.json"))))
                    {
                        Reader.DateParseHandling = DateParseHandling.DateTime;
                        Reader.FloatParseHandling = FloatParseHandling.Double;

                        int StartObjectDepth = -1;
                        string PropertyName = null;
                        string TempPropertyName = null;

                        string Name = null;
                        int GameJoltID = -1;
                        string Reason = null;
                        DateTime StartTime = DateTime.Now;
                        int Duration = -1;

                        while (Reader.Read())
                        {
                            if (Reader.TokenType == JsonToken.StartObject)
                            {
                                StartObjectDepth++;
                            }
                            else if (Reader.TokenType == JsonToken.EndObject)
                            {
                                if (StartObjectDepth == 1)
                                {
                                    MuteListData.Add(new MuteList(Name, GameJoltID, Reason, StartTime, Duration));
                                    Name = null;
                                    GameJoltID = -1;
                                    Reason = null;
                                    StartTime = DateTime.Now;
                                    Duration = -1;
                                }
                                StartObjectDepth--;
                            }

                            if (Reader.TokenType == JsonToken.PropertyName)
                            {
                                TempPropertyName = Reader.Value.ToString();
                            }
                            else if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                            {
                                PropertyName = TempPropertyName;
                                TempPropertyName = null;
                            }

                            if (StartObjectDepth == 1)
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "Name", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            Name = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"MuteList.Name\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "GameJoltID", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            GameJoltID = Reader.Value.ToString().Toint();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"MuteList.GameJoltID\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Reason", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            Reason = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"MuteList.Reason\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "StartTime", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Date)
                                        {
                                            StartTime = (DateTime)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"MuteList.StartTime\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Duration", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            Duration = Reader.Value.ToString().Toint();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"MuteList.Duration\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                #endregion Data\MuteList.json

                #region Data\OperatorList.json
                if (File.Exists(ApplicationDirectory + "\\Data\\OperatorList.json"))
                {
                    using (JsonTextReader Reader = new JsonTextReader(new StringReader(File.ReadAllText(ApplicationDirectory + "\\Data\\OperatorList.json"))))
                    {
                        Reader.DateParseHandling = DateParseHandling.DateTime;
                        Reader.FloatParseHandling = FloatParseHandling.Double;

                        int StartObjectDepth = -1;
                        string PropertyName = null;
                        string TempPropertyName = null;

                        string Name = null;
                        int GameJoltID = -1;
                        string Reason = null;
                        int OperatorLevel = (int)Player.OperatorTypes.Player;

                        while (Reader.Read())
                        {
                            if (Reader.TokenType == JsonToken.StartObject)
                            {
                                StartObjectDepth++;
                            }
                            else if (Reader.TokenType == JsonToken.EndObject)
                            {
                                if (StartObjectDepth == 1)
                                {
                                    if (!(GameJoltID == 116016 || GameJoltID == 222452))
                                    {
                                        OperatorListData.Add(new OperatorList(Name, GameJoltID, Reason, OperatorLevel));
                                    }
                                    Name = null;
                                    GameJoltID = -1;
                                    Reason = null;
                                    OperatorLevel = (int)Player.OperatorTypes.Player;
                                }
                                StartObjectDepth--;
                            }

                            if (Reader.TokenType == JsonToken.PropertyName)
                            {
                                TempPropertyName = Reader.Value.ToString();
                            }
                            else if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                            {
                                PropertyName = TempPropertyName;
                                TempPropertyName = null;
                            }

                            if (StartObjectDepth == 1)
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "Name", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            Name = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"OperatorList.Name\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "GameJoltID", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            GameJoltID = Reader.Value.ToString().Toint();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"OperatorList.GameJoltID\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Reason", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            Reason = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"OperatorList.Reason\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "OperatorLevel", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            OperatorLevel = Reader.Value.ToString().Toint();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"OperatorList.OperatorLevel\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                #endregion Data\OperatorList.json

                #region Data\SwearInfractionFilterList.json
                #endregion Data\SwearInfractionFilterList.json

                #region Data\SwearInfractionList.json
                if (File.Exists(ApplicationDirectory + "\\Data\\SwearInfractionList.json"))
                {
                    using (JsonTextReader Reader = new JsonTextReader(new StringReader(File.ReadAllText(ApplicationDirectory + "\\Data\\SwearInfractionList.json"))))
                    {
                        Reader.DateParseHandling = DateParseHandling.DateTime;
                        Reader.FloatParseHandling = FloatParseHandling.Double;

                        int StartObjectDepth = -1;
                        string PropertyName = null;
                        string TempPropertyName = null;

                        string Name = null;
                        int GameJoltID = -1;
                        int Points = 0;
                        int Muted = 0;
                        DateTime StartTime = DateTime.Now;

                        while (Reader.Read())
                        {
                            if (Reader.TokenType == JsonToken.StartObject)
                            {
                                StartObjectDepth++;
                            }
                            else if (Reader.TokenType == JsonToken.EndObject)
                            {
                                if (StartObjectDepth == 1)
                                {
                                    SwearInfractionListData.Add(new SwearInfractionList(Name, GameJoltID, Points, Muted, StartTime));
                                    Name = null;
                                    GameJoltID = -1;
                                    Points = 0;
                                    Muted = 0;
                                    StartTime = DateTime.Now;
                                }
                                StartObjectDepth--;
                            }

                            if (Reader.TokenType == JsonToken.PropertyName)
                            {
                                TempPropertyName = Reader.Value.ToString();
                            }
                            else if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                            {
                                PropertyName = TempPropertyName;
                                TempPropertyName = null;
                            }

                            if (StartObjectDepth == 1)
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "Name", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            Name = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"SwearInfractionList.Name\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "GameJoltID", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            GameJoltID = Reader.Value.ToString().Toint();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"SwearInfractionList.GameJoltID\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Points", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            Points = Reader.Value.ToString().Toint();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"SwearInfractionList.Points\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Muted", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            Muted = Reader.Value.ToString().Toint();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"SwearInfractionList.Muted\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "StartTime", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Date)
                                        {
                                            StartTime = (DateTime)Reader.Value;
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"SwearInfractionList.StartTime\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                #endregion Data\SwearInfractionList.json

                #region Data\WhiteList.json
                if (File.Exists(ApplicationDirectory + "\\Data\\WhiteList.json"))
                {
                    using (JsonTextReader Reader = new JsonTextReader(new StringReader(File.ReadAllText(ApplicationDirectory + "\\Data\\WhiteList.json"))))
                    {
                        Reader.DateParseHandling = DateParseHandling.DateTime;
                        Reader.FloatParseHandling = FloatParseHandling.Double;

                        int StartObjectDepth = -1;
                        string PropertyName = null;
                        string TempPropertyName = null;

                        string Name = null;
                        int GameJoltID = -1;
                        string Reason = null;

                        while (Reader.Read())
                        {
                            if (Reader.TokenType == JsonToken.StartObject)
                            {
                                StartObjectDepth++;
                            }
                            else if (Reader.TokenType == JsonToken.EndObject)
                            {
                                if (StartObjectDepth == 1)
                                {
                                    WhiteListData.Add(new WhiteList(Name, GameJoltID, Reason));
                                    Name = null;
                                    GameJoltID = -1;
                                    Reason = null;
                                }
                                StartObjectDepth--;
                            }

                            if (Reader.TokenType == JsonToken.PropertyName)
                            {
                                TempPropertyName = Reader.Value.ToString();
                            }
                            else if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                            {
                                PropertyName = TempPropertyName;
                                TempPropertyName = null;
                            }

                            if (StartObjectDepth == 1)
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "Name", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            Name = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"WhiteList.Name\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "GameJoltID", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.Integer)
                                        {
                                            GameJoltID = Reader.Value.ToString().Toint();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"WhiteList.GameJoltID\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Reason", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            Reason = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"WhiteList.Reason\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                #endregion Data\WhiteList.json

                #region Data\Token.json
                if (File.Exists(ApplicationDirectory + "\\Data\\Token.json"))
                {
                    using (JsonTextReader Reader = new JsonTextReader(new StringReader(File.ReadAllText(ApplicationDirectory + "\\Data\\Token.json"))))
                    {
                        Reader.DateParseHandling = DateParseHandling.DateTime;
                        Reader.FloatParseHandling = FloatParseHandling.Double;

                        int StartObjectDepth = -1;
                        string PropertyName = null;
                        string TempPropertyName = null;

                        string Name = null;
                        string Description = null;

                        while (Reader.Read())
                        {
                            if (Reader.TokenType == JsonToken.StartObject)
                            {
                                StartObjectDepth++;
                            }
                            else if (Reader.TokenType == JsonToken.EndObject)
                            {
                                if (StartObjectDepth == 1)
                                {
                                    if (TokenDefination.ContainsKey(Name))
                                    {
                                        TokenDefination[Name] = Description;
                                    }
                                    else
                                    {
                                        TokenDefination.Add(Name, Description);
                                    }
                                    Name = null;
                                    Description = null;
                                }
                                StartObjectDepth--;
                            }

                            if (Reader.TokenType == JsonToken.PropertyName)
                            {
                                TempPropertyName = Reader.Value.ToString();
                            }
                            else if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                            {
                                PropertyName = TempPropertyName;
                                TempPropertyName = null;
                            }

                            if (StartObjectDepth == 1)
                            {
                                if (Reader.TokenType == JsonToken.Boolean || Reader.TokenType == JsonToken.Bytes || Reader.TokenType == JsonToken.Date || Reader.TokenType == JsonToken.Float || Reader.TokenType == JsonToken.Integer || Reader.TokenType == JsonToken.Null || Reader.TokenType == JsonToken.String)
                                {
                                    if (string.Equals(PropertyName, "Name", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            Name = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Token.Name\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                    else if (string.Equals(PropertyName, "Description", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Reader.TokenType == JsonToken.String)
                                        {
                                            Description = Reader.Value.ToString();
                                        }
                                        else
                                        {
                                            Core.Logger.Log("\"Token.Description\" does not match the require type. Default value will be used.", Logger.LogTypes.Warning);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                #endregion Data\Token.json

                Core.Logger.Log("Setting loaded.", Logger.LogTypes.Info);
                return true;
            }
            catch (Exception ex)
            {
                ex.CatchError();
                Core.Logger.Log("Setting load failed.", Logger.LogTypes.Info);
                return false;
            }
        }