/// <summary>
 /// Rebuilds the package using package creation
 /// </summary>
 /// <param name="xParams"></param>
 /// <returns></returns>
 public bool RebuildPackage(RSAParams xParams)
 {
     if (!ActiveCheck())
         return false;
     if (!xParams.Valid)
         return (xActive = false);
     CreateSTFS x = new CreateSTFS();
     x.HeaderData = xHeader;
     x.STFSType = xSTFSStruct.ThisType;
     // Populate
     foreach (FolderEntry y in xFolderDirectory)
         x.AddFolder(y.GetPath());
     foreach (FileEntry y in xFileDirectory)
     {
         DJsIO io = y.xGetTempIO(true);
         if (io != null && io.Accessed)
         {
             io.Close();
             x.AddFile(io.FileNameLong, y.GetPath());
         }
     }
     STFSPackage xreturn = new STFSPackage(x, xParams, VariousFunctions.GetTempFileLocale(), xLog);
     if (xreturn.ParseSuccess)
     {
         xIO.Close();
         xreturn.xIO.Close();
         if (!VariousFunctions.MoveFile(xreturn.xIO.FileNameLong, xIO.FileNameLong))
             return (xActive = false);
         xreturn.xIO = xIO;
         SetSamePackage(ref xreturn);
         xIO.OpenAgain();
         return !(xActive = false);
     }
     xreturn.xIO.Close();
     VariousFunctions.DeleteFile(xreturn.xIO.FileNameLong);
     return (xActive = false);
 }
        public byte[] RebuildPackageInMemory(RSAParams xParams)
        {
            if (!CanRead)
            {
                OpenAgain();
            }
            var cstfs = new CreateSTFS();
            cstfs.HeaderData.Description = xHeader.Description;
            cstfs.HeaderData.DeviceID = xHeader.DeviceID;

            cstfs.HeaderData.ProfileID = xHeader.ProfileID;
            cstfs.HeaderData.Publisher = xHeader.Publisher;
            cstfs.HeaderData.SaveConsoleID = xHeader.SaveConsoleID;
            cstfs.HeaderData.Title_Package = xHeader.Title_Package;
            cstfs.HeaderData.Title_Display = xHeader.Title_Display;
            cstfs.HeaderData.ThisType = xHeader.ThisType;
            cstfs.HeaderData.SaveGameID = xHeader.SaveGameID;
            cstfs.HeaderData.DataFileCount = xHeader.DataFileCount;
            cstfs.HeaderData.DataFileSize = xHeader.DataFileSize;
            cstfs.HeaderData.MediaID = xHeader.MediaID;
            cstfs.HeaderData.TitleID = xHeader.TitleID;
            cstfs.HeaderData.Version_ = xHeader.Version_;
            cstfs.HeaderData.Version_Base = xHeader.Version_Base;

            cstfs.HeaderData.MetaDataVersion = xHeader.MetaDataVersion;
            cstfs.HeaderData.Platform = xHeader.Platform;
            cstfs.HeaderData.SeasonNumber = xHeader.SeasonNumber;

            cstfs.STFSType = xSTFSStruct.ThisType;
            // Populate
            foreach (var y in xFolderDirectory)
                cstfs.AddFolder(y.GetPath());
            foreach (var y in xFileDirectory)
            {
                cstfs.AddFile(y.ExtractBytes(true), y.GetPath());
            }
            byte[] ret;
            var xreturn = new STFSPackage(cstfs, xParams, out ret, xLog);
            if (xreturn.ParseSuccess)
            {

                return ret;
            }
            xreturn.xIO.Close();

            return null;
        }