From 34b281f5fc106d0838b62a798c635fac1aada376 Mon Sep 17 00:00:00 2001 From: hbeham Date: Fri, 8 Nov 2019 02:31:44 +0100 Subject: [PATCH] - unified handling for deleting channels (action based on file format support either mark-as-deleted, remove-from-file, append-at-end) - added unit tests - internal code cleanup --- readme.md | 6 +- readme_de.md | 5 +- source/ChanSort.Api/ChanSort.Api.csproj | 12 +- .../Controller/CsvRefListSerializer.cs | 18 +- source/ChanSort.Api/Controller/Editor.cs | 40 +- .../ChanSort.Api/Controller/SerializerBase.cs | 84 +++- .../Controller/TxtRefListSerializer.cs | 8 +- source/ChanSort.Api/Model/ChannelInfo.cs | 100 ++-- source/ChanSort.Api/Model/DataRoot.cs | 98 ++-- source/ChanSort.Api/Model/Enums.cs | 2 +- source/ChanSort.Api/Resources.Designer.cs | 2 +- .../ChanSort.Loader.GlobalClone.csproj | 8 +- .../GcSerializer.cs | 13 +- .../Resources.Designer.cs | 2 +- .../ChanSort.Loader.Hisense.csproj | 8 +- .../HisDbSerializer.cs | 10 +- .../Resources.Designer.cs | 2 +- .../ChanSort.Loader.Hisense2017.csproj | 8 +- .../HisDbSerializer.cs | 13 +- .../Resources.Designer.cs | 2 +- .../ChanSort.Loader.LG.csproj | 10 +- .../PresetProgramNrDialog.resx | 34 +- .../ChanSort.Loader.LG/Resource.Designer.cs | 2 +- source/ChanSort.Loader.LG/SatChannel.cs | 24 +- source/ChanSort.Loader.LG/TllChannelBase.cs | 5 +- .../ChanSort.Loader.LG/TllFileSerializer.cs | 38 +- source/ChanSort.Loader.LG/TvSettingsForm.resx | 46 +- .../ChanSort.Loader.Panasonic.csproj | 11 +- source/ChanSort.Loader.Panasonic/DbChannel.cs | 1 - .../ChanSort.Loader.Panasonic/Serializer.cs | 25 +- .../ChanSort.Loader.PhilipsXml.csproj | 13 +- .../ChanSort.Loader.PhilipsXml/Serializer.cs | 15 +- .../ChanSort.Loader.Samsung.csproj | 16 +- .../ChanSort.Loader.Samsung/DigitalChannel.cs | 9 +- .../Resource.Designer.cs | 2 +- source/ChanSort.Loader.Samsung/SatChannel.cs | 5 +- .../ChanSort.Loader.Samsung/ScmChannelBase.cs | 9 +- .../ChanSort.Loader.Samsung/ScmSerializer.cs | 216 +++++---- .../ChanSort.Loader.SamsungJ.csproj | 16 +- .../ChanSort.Loader.SamsungJ/DbSerializer.cs | 213 +++------ .../ChanSort.Loader.SilvaSchneider.csproj | 7 +- .../Serializer.cs | 11 +- .../ChanSort.Loader.Sony.csproj | 11 +- source/ChanSort.Loader.Sony/Serializer.cs | 20 +- .../ChanSort.Loader.Toshiba.csproj | 16 +- source/ChanSort.Loader.Toshiba/DbChannel.cs | 2 +- .../ChanSort.Loader.Toshiba/DbSerializer.cs | 125 ++--- .../ChanSort.Loader.VDR.csproj | 10 +- source/ChanSort.Loader.VDR/Serializer.cs | 9 +- source/ChanSort.sln | 44 +- source/ChanSort/AboutForm.resx | 42 +- source/ChanSort/ActionBox.resx | 14 +- source/ChanSort/ActionImages.resx | 4 +- source/ChanSort/ChanSort.csproj | 44 +- source/ChanSort/CharsetForm.resx | 32 +- source/ChanSort/GlobalImageCollection.resx | 4 +- source/ChanSort/MainForm.Designer.cs | 78 +-- source/ChanSort/MainForm.cs | 31 +- source/ChanSort/MainForm.de.resx | 12 +- source/ChanSort/MainForm.pt.resx | 16 +- source/ChanSort/MainForm.resx | 444 +++++++++--------- .../Printing/ReportOptionsDialog.resx | 24 +- .../ChanSort/Properties/Settings.Designer.cs | 2 +- source/ChanSort/Properties/licenses.licx | 14 +- source/ChanSort/ReferenceListForm.cs | 2 +- source/ChanSort/ReferenceListForm.resx | 96 ++-- source/ChanSort/WaitForm1.resx | 4 +- source/ChanSort/app.config | 2 +- source/DLL/ICSharpCode.SharpZipLib.dll | Bin 200704 -> 0 bytes .../LgGlobalCloneTest.cs | 66 ++- .../Test.Loader.GlobalClone.csproj | 21 +- .../HisenseChannelDbTest.cs | 62 ++- .../Test.Loader.Hisense.csproj | 13 +- .../HisenseServicelistDbTest.cs | 62 ++- .../Test.Loader.Hisense2017.csproj | 13 +- .../DvbsCleanup/TestDvbsCleanup.cs | 8 +- source/Test.Loader.LG/LM/TestLM.cs | 51 +- source/Test.Loader.LG/Test.Loader.LG.csproj | 6 +- source/Test.Loader.LG/TestBase.cs | 57 +-- source/Test.Loader.LG/app.config | 2 +- .../Test.Loader.Panasonic/PanasonicSvlTest.cs | 57 ++- .../Test.Loader.Panasonic.csproj | 17 +- .../Test.Loader.PhilipsXml/PhilipsXmlTest.cs | 58 ++- .../Test.Loader.PhilipsXml.csproj | 21 +- .../FileFormatDetectionTest.cs | 45 +- source/Test.Loader.Samsung/SamsungTest.cs | 107 ++++- .../Test.Loader.Samsung.csproj | 7 +- .../Channel_list_T_J_ohne_smart_12.scm | Bin 0 -> 57186 bytes .../TestFiles/Samsung_upcmini_EF_12.scm | Bin 0 -> 70518 bytes source/Test.Loader.SamsungJ/SamsungZipTest.cs | 60 ++- .../Test.Loader.SamsungJ.csproj | 19 +- .../Channel_list_T-KTSUDEUC-1007.2.zip | Bin 0 -> 117497 bytes .../Channel_list_T-KTSUDEUC-1007.3.zip | Bin 0 -> 117497 bytes source/Test.Loader.SilvaSchneider/SdxTest.cs | 63 ++- .../Test.Loader.SilvaSchneider.csproj | 13 +- source/Test.Loader.Sony/SonyXmlTest.cs | 114 ++++- .../Test.Loader.Sony/Test.Loader.Sony.csproj | 25 +- .../Test.Loader.Toshiba.csproj | 9 +- .../Test.Loader.Toshiba/ToshibaChmgtDbTest.cs | 63 ++- source/Test.Loader.VDR/LinuxVdrTest.cs | 61 ++- source/Test.Loader.VDR/Test.Loader.VDR.csproj | 9 +- source/Test.Loader/LoaderTestBase.cs | 8 +- source/Test.Loader/Test.Loader.csproj | 3 +- source/Test.Loader/TestUtils.cs | 68 +++ source/changelog.md | 7 + 105 files changed, 2024 insertions(+), 1442 deletions(-) delete mode 100644 source/DLL/ICSharpCode.SharpZipLib.dll create mode 100644 source/Test.Loader.Samsung/TestFiles/Channel_list_T_J_ohne_smart_12.scm create mode 100644 source/Test.Loader.Samsung/TestFiles/Samsung_upcmini_EF_12.scm create mode 100644 source/Test.Loader.SamsungJ/TestFiles/Channel_list_T-KTSUDEUC-1007.2.zip create mode 100644 source/Test.Loader.SamsungJ/TestFiles/Channel_list_T-KTSUDEUC-1007.3.zip create mode 100644 source/Test.Loader/TestUtils.cs diff --git a/readme.md b/readme.md index 4454214..0f9bed5 100644 --- a/readme.md +++ b/readme.md @@ -55,8 +55,8 @@ Supported TV models Special thanks to Hisense for supporting ChanSort with technical information and a test device! **Samsung** -.scm files: B (2009)*, B (2013), C, D, E, F, H series -.zip files: H, J, K, M series +.scm files: B (2009)*, B (2013), C, D, E, F, H, J series +.zip files: H, J, K, M, N and Q series Lists: Air analog, Air digital, Cable analog, Cable digital, Cable Prime, Sat digital, Astra HD+, Freesat, TivuSat, Canal Digital Sat, Digital+, Cyfra+ @@ -87,7 +87,7 @@ the channel list from/to USB can be found in the Wiki. Viera models with an svl.bin or svl.db channel list (most models since 2011) **Sony** -Android-TVs "sdb.xml" files using formats "FormateVer" 1.1.0 and "FormatVer" 1.0.0, 1.1.0 and 1.2.0 +Android-TVs "sdb.xml" files using formats "FormateVer" 1.1.0 and KDL 2012/2014 files using "FormatVer" 1.0.0, 1.1.0 and 1.2.0 **Toshiba** Models that export a .zip file containing chmgt.db, dvbSysData.db and dvbMainData.db files. diff --git a/readme_de.md b/readme_de.md index 54e794e..4a6a89c 100644 --- a/readme_de.md +++ b/readme_de.md @@ -54,7 +54,8 @@ Smart-Modelle (2016) mit channel.db Dateiformat, z.B. H65M5500 Besonderen Dank an Hisense für die Bereitstellung von technischen Informationen und einem Testgerät! **Samsung** -Serie: B (2009)*, B (2013), C, D, E, F, H, J +.scm Dateien: Serien B (2009)*, B (2013), C, D, E, F, H, J +.zip Dateien: Serien H, J, K, M, N and Q series Listen: Air analog, Air digital, Cable analog, Cable digital, Cable Prime, Sat digital, Astra HD+, Freesat, TivuSat, Canal Digital Sat, Digital+, Cyfra+ @@ -82,7 +83,7 @@ Eine Anleitung zum Aufruf des geheimen Service-Men Viera-Modelle mit svl.bin oder svl.db Dateien (die meisten Modelle seit 2011) **Sony** -Android-TV "sdb.xml" Dateien mit Versionen "FormateVer" 1.1.0 and "FormatVer" 1.0.0, 1.1.0 and 1.2.0 +Android-TV "sdb.xml" Dateien mit Versionen "FormateVer" 1.1.0 und KDL 2012/2014 mit "FormatVer" 1.0.0, 1.1.0 and 1.2.0 **ITT, Medion, Nabo, ok., PEAQ, Schaub-Lorenz, Silva-Schneider, Telefunken** Die Marken nutzen .sdx Dateien (derzeit wird nur Satellitenempfang unterstützt) diff --git a/source/ChanSort.Api/ChanSort.Api.csproj b/source/ChanSort.Api/ChanSort.Api.csproj index 382f2b7..3bc94e2 100644 --- a/source/ChanSort.Api/ChanSort.Api.csproj +++ b/source/ChanSort.Api/ChanSort.Api.csproj @@ -1,5 +1,5 @@  - + Debug AnyCPU @@ -10,7 +10,7 @@ Properties ChanSort.Api ChanSort.Api - v4.0 + v4.6 512 @@ -23,6 +23,7 @@ DEBUG;TRACE prompt 4 + false pdbonly @@ -31,6 +32,7 @@ TRACE prompt 4 + false true @@ -40,19 +42,23 @@ x86 prompt false + false - bin\x86\Release\ + ..\Release\ TRACE true pdbonly x86 prompt + false + + diff --git a/source/ChanSort.Api/Controller/CsvRefListSerializer.cs b/source/ChanSort.Api/Controller/CsvRefListSerializer.cs index 142665c..4df02cb 100644 --- a/source/ChanSort.Api/Controller/CsvRefListSerializer.cs +++ b/source/ChanSort.Api/Controller/CsvRefListSerializer.cs @@ -7,7 +7,7 @@ namespace ChanSort.Api { /// /// Reads a reference list from a .csv file with the format - /// [dummy1],ProgramNr,[dummy2],UID,ChannelName[,SignalSource,FavAndFlags] + /// [obsolete],ProgramNr,[obsolete],UID,ChannelName[,SignalSource,FavAndFlags] /// public class CsvRefListSerializer : SerializerBase { @@ -31,17 +31,15 @@ namespace ChanSort.Api { this.Features.ChannelNameEdit = ChannelNameEditMode.All; this.Features.CanSkipChannels = true; - this.Features.CanDeleteChannels = true; + this.Features.DeleteMode = DeleteMode.FlagWithoutPrNr; this.Features.CanHaveGaps = true; this.Features.EncryptedFlagEdit = false; - this.DataRoot.SortedFavorites = false; - this.DataRoot.SupportedFavorites = Favorites.A | Favorites.B | Favorites.C | Favorites.D | Favorites.E; + this.Features.SortedFavorites = false; + this.Features.SupportedFavorites = Favorites.A | Favorites.B | Favorites.C | Favorites.D | Favorites.E | Favorites.F | Favorites.G | Favorites.H; } #endregion - public override string DisplayName => "ChanSort .csv Reference List Loader"; - #region Load() public override void Load() @@ -211,6 +209,8 @@ namespace ChanSort.Api channel.Lock = false; channel.Skip = false; channel.Hidden = false; + channel.IsDeleted = false; + channel.Favorites = 0; foreach (var c in flags) { @@ -251,6 +251,7 @@ namespace ChanSort.Api break; case 'D': channel.IsDeleted = true; + channel.NewProgramNr = -1; break; } } @@ -318,7 +319,7 @@ namespace ChanSort.Api } } - public static void Save(TextWriter stream, DataRoot dataRoot) + public static void Save(TextWriter stream, DataRoot dataRoot, bool includeDeletedChannels = true) { foreach (var channelList in dataRoot.ChannelLists) { @@ -327,8 +328,9 @@ namespace ChanSort.Api foreach (var channel in channelList.GetChannelsByNewOrder()) { - if (channel.NewProgramNr == -1) + if (channel.NewProgramNr == -1 && !includeDeletedChannels) continue; + var line = string.Format("{0},{1},{2},{3},\"{4}\",{5},{6}", "", // past: channel.RecordIndex, channel.NewProgramNr, diff --git a/source/ChanSort.Api/Controller/Editor.cs b/source/ChanSort.Api/Controller/Editor.cs index c5883c1..09c0558 100644 --- a/source/ChanSort.Api/Controller/Editor.cs +++ b/source/ChanSort.Api/Controller/Editor.cs @@ -353,28 +353,34 @@ namespace ChanSort.Api { if (list.IsMixedSourceFavoritesList) continue; + + // sort the channels by assigned numbers, then unassigned by original order or alphabetically, then deleted channels var sortedChannels = list.Channels.OrderBy(ChanSortCriteria).ToList(); int maxProgNr = 0; foreach (var appChannel in sortedChannels) { - if (appChannel.RecordIndex < 0) + if (appChannel.IsProxy) continue; if (appChannel.NewProgramNr == -1) { - if (mode == UnsortedChannelMode.MarkDeleted) + if (mode == UnsortedChannelMode.Delete) appChannel.IsDeleted = true; - else + else // append (hidden if possible) { appChannel.Hidden = true; appChannel.Skip = true; } - } - int progNr = this.GetNewProgramNr(appChannel, ref maxProgNr); - if (mode != UnsortedChannelMode.MarkDeleted || this.DataRoot.DeletedChannelsNeedNumbers) - appChannel.NewProgramNr = progNr; + // assign a valid number or 0 .... because -1 will never be a valid value for the TV + appChannel.NewProgramNr = mode != UnsortedChannelMode.Delete || this.DataRoot.DeletedChannelsNeedNumbers ? ++maxProgNr : 0; + } + else + { + if (appChannel.NewProgramNr > maxProgNr) + maxProgNr = appChannel.NewProgramNr; + } } } } @@ -384,13 +390,13 @@ namespace ChanSort.Api private string ChanSortCriteria(ChannelInfo channel) { // explicitly sorted - var pos = channel.GetPosition(this.SubListIndex); + var pos = channel.NewProgramNr; if (pos != -1) return pos.ToString("d5"); // eventually hide unsorted channels - if (this.unsortedChannelMode == UnsortedChannelMode.MarkDeleted) - return "Z"; + if (this.unsortedChannelMode == UnsortedChannelMode.Delete) + return "Z" + channel.RecordIndex.ToString("d5"); // eventually append in old order if (this.unsortedChannelMode == UnsortedChannelMode.AppendInOrder) @@ -406,20 +412,6 @@ namespace ChanSort.Api #endregion - #region GetNewProgramNr() - - private int GetNewProgramNr(ChannelInfo appChannel, ref int maxPrNr) - { - int prNr = appChannel.NewProgramNr; - if (prNr > maxPrNr) - maxPrNr = prNr; - if (prNr == -1) - prNr = ++maxPrNr; - return prNr; - } - - #endregion - #endregion #region SetFavorites() diff --git a/source/ChanSort.Api/Controller/SerializerBase.cs b/source/ChanSort.Api/Controller/SerializerBase.cs index 94c87ac..3eeb5d7 100644 --- a/source/ChanSort.Api/Controller/SerializerBase.cs +++ b/source/ChanSort.Api/Controller/SerializerBase.cs @@ -1,4 +1,7 @@ -using System.Text; +using System.IO; +using System.IO.Compression; +using System.Text; +using System.Windows.Forms; namespace ChanSort.Api { @@ -6,21 +9,34 @@ namespace ChanSort.Api { #region class SupportedFeatures + public enum DeleteMode + { + NotSupported = 0, + Physically = 1, + FlagWithoutPrNr = 2, + FlagWithPrNr = 3 + } + public class SupportedFeatures { public ChannelNameEditMode ChannelNameEdit { get; set; } public bool CleanUpChannelData { get; set; } public bool DeviceSettings { get; set; } - public bool CanDeleteChannels { get; set; } public bool CanSkipChannels { get; set; } = true; - public bool CanHaveGaps { get; set; } + public bool CanHaveGaps { get; set; } = true; public bool EncryptedFlagEdit { get; set; } + public DeleteMode DeleteMode { get; set; } = DeleteMode.NotSupported; + + + public Favorites SupportedFavorites { get; set; } = Favorites.A | Favorites.B | Favorites.C | Favorites.D; + public bool SortedFavorites { get; set; } + public bool MixedSourceFavorites { get; set; } + public bool AllowGapsInFavNumbers { get; set; } + + public bool CanDeleteChannelsWithFlag => this.DeleteMode == DeleteMode.FlagWithPrNr || this.DeleteMode == DeleteMode.FlagWithoutPrNr; + public bool CanDeleteChannelsFromFile => this.DeleteMode == DeleteMode.Physically; + public bool DeletedChannelsNeedNumbers => this.DeleteMode == DeleteMode.FlagWithPrNr; - public SupportedFeatures() - { - this.CanDeleteChannels = true; - this.CanHaveGaps = true; - } } #endregion @@ -28,17 +44,15 @@ namespace ChanSort.Api public string FileName { get; set; } public DataRoot DataRoot { get; protected set; } - public SupportedFeatures Features { get; private set; } + public SupportedFeatures Features { get; } = new SupportedFeatures(); protected SerializerBase(string inputFile) { - this.Features = new SupportedFeatures(); this.FileName = inputFile; - this.DataRoot = new DataRoot(); this.defaultEncoding = Encoding.GetEncoding("iso-8859-9"); + this.DataRoot = new DataRoot(this); } - public abstract string DisplayName { get; } public abstract void Load(); public abstract void Save(string tvOutputFile); @@ -48,8 +62,7 @@ namespace ChanSort.Api set { this.defaultEncoding = value; } } - public virtual void EraseChannelData() { } - + #region GetFileInformation() public virtual string GetFileInformation() { StringBuilder sb = new StringBuilder(); @@ -85,9 +98,52 @@ namespace ChanSort.Api } return sb.ToString(); } + #endregion public virtual void ShowDeviceSettingsForm(object parentWindow) { } public virtual string CleanUpChannelData() { return ""; } + + + // common implementation helper methods + + protected string UnzipFileToTempFolder() + { + var tempDir = this.FileName + ".tmp"; + + if (Directory.Exists(tempDir)) + Directory.Delete(tempDir, true); + Directory.CreateDirectory(tempDir); + ZipFile.ExtractToDirectory(this.FileName, tempDir); + this.DeleteOnExit(tempDir); + return tempDir; + } + + protected void ZipToOutputFile(string tvOutputFile) + { + var tempDir = this.FileName + ".tmp"; + File.Delete(tvOutputFile); + ZipFile.CreateFromDirectory(tempDir, tvOutputFile); + this.FileName = tvOutputFile; + } + + // TODO: replace this with a SerializerBase implementing IDisposable + protected virtual void DeleteOnExit(string fileOrFolder) + { + Application.ApplicationExit += (sender, args) => + { + try + { + if (Directory.Exists(fileOrFolder)) + Directory.Delete(fileOrFolder, true); + else if (File.Exists(fileOrFolder)) + File.Delete(fileOrFolder); + } + catch + { + // ignore + } + }; + } } } diff --git a/source/ChanSort.Api/Controller/TxtRefListSerializer.cs b/source/ChanSort.Api/Controller/TxtRefListSerializer.cs index d14ba0d..24fb89f 100644 --- a/source/ChanSort.Api/Controller/TxtRefListSerializer.cs +++ b/source/ChanSort.Api/Controller/TxtRefListSerializer.cs @@ -16,11 +16,11 @@ namespace ChanSort.Api { this.Features.ChannelNameEdit = ChannelNameEditMode.All; this.Features.CanSkipChannels = false; - this.Features.CanDeleteChannels = true; + this.Features.DeleteMode = DeleteMode.Physically; this.Features.CanHaveGaps = true; this.Features.EncryptedFlagEdit = false; - this.DataRoot.SortedFavorites = false; - this.DataRoot.SupportedFavorites = 0; + this.Features.SortedFavorites = false; + this.Features.SupportedFavorites = 0; this.DataRoot.AddChannelList(this.allChannels); allChannels.VisibleColumnFieldNames = new List @@ -36,8 +36,6 @@ namespace ChanSort.Api #endregion - public override string DisplayName => ".txt Reference List Loader"; - #region Load() public override void Load() diff --git a/source/ChanSort.Api/Model/ChannelInfo.cs b/source/ChanSort.Api/Model/ChannelInfo.cs index 841e612..13a02f3 100644 --- a/source/ChanSort.Api/Model/ChannelInfo.cs +++ b/source/ChanSort.Api/Model/ChannelInfo.cs @@ -10,21 +10,31 @@ namespace ChanSort.Api private string uid; private string serviceTypeName; - /// - /// List of channels that have the same UID as this channel and were not added to the channel list directly - /// - public readonly List Duplicates = new List(); - public virtual bool IsDeleted { get; set; } public SignalSource SignalSource { get; set; } public string Source { get; set; } + + /// + /// Index or ID of the data record + /// public long RecordIndex { get; set; } + + /// + /// logical record order (might be different from the index, like old LG TLL files with a linked list of record indices) + /// public int RecordOrder { get; set; } + + /// + /// original program number from the file, except for channels with IsDeleted==true, which will have the value -1 + /// public int OldProgramNr { get; set; } + /// + /// new program number or -1, if the channel isn't assigned a number or has IsDeleted==true + /// public int NewProgramNr { get; set; } + public string Name { get; set; } public string ShortName { get; set; } - public Favorites Favorites { get; set; } public bool Skip { get; set; } public bool Lock { get; set; } public bool Hidden { get; set; } @@ -39,23 +49,50 @@ namespace ChanSort.Api public int AudioPid { get; set; } public int OriginalNetworkId { get; set; } public int TransportStreamId { get; set; } - public int Bouquet { get; set; } public string Provider { get; set; } public int SymbolRate { get; set; } public int ServiceType { get; set; } - public string Debug { get; private set; } public string SatPosition { get; set; } public Transponder Transponder { get; set; } + + /// + /// Bitmask in which favorite lists the channel is included + /// + public Favorites Favorites { get; set; } + /// + /// current number of the channel in the various favorite lists (if individual sorting is supported) + /// public List FavIndex { get; } + /// + /// original number of the channel in the various favorite lists (if individual sorting is supported) + /// public List OldFavIndex { get; } + + /// + /// predefined LCN (logical channel number) assigned by TV firmware or cable/sat operator + /// public int ProgramNrPreset { get; set; } public bool IsNameModified { get; set; } + + + /// + /// A proxy channel is inserted into the current channel list when there was no match for a reference list channel + /// public bool IsProxy => this.RecordIndex < 0; + + /// + /// arbitrary information that can be shown in a UI column to assist in analyzing a file format while coding a plugin + /// + public string Debug { get; private set; } + + + #region ctor() protected ChannelInfo() { + this.OldProgramNr = -1; this.NewProgramNr = -1; this.FavIndex = new List(MAX_FAV_LISTS); this.OldFavIndex = new List(MAX_FAV_LISTS); @@ -76,7 +113,6 @@ namespace ChanSort.Api this.SignalSource = source; this.RecordIndex = index; this.RecordOrder = (int)index; - this.NewProgramNr = -1; this.OldProgramNr = oldProgNr; this.Name = name; this.Encrypted = null; @@ -99,6 +135,11 @@ namespace ChanSort.Api #endregion #region Uid + /// + /// The Uid is the preferred way of matching channels between the current channel list and a reference list. + /// The basic format of this string was taken from a command line tool "TllSort" for LG TVs but then expanded beyond that + /// in order to support the various file formats and the data provided in those. + /// public string Uid { get @@ -113,7 +154,7 @@ namespace ChanSort.Api this.uid = "S" + /*this.SatPosition + */ "-" + this.OriginalNetworkId + "-" + this.TransportStreamId + "-" + this.ServiceId; else if ((this.SignalSource & SignalSource.MaskAntennaCableSat) == SignalSource.Antenna || (this.SignalSource & SignalSource.MaskAntennaCableSat) == SignalSource.Cable) { - // ChannelOrTransponder is needed for DVB-T where the same ONID+TSID+SID can be received from 2 different towers (on different frequencies) + // ChannelOrTransponder is needed for DVB-T where the same ONID+TSID+SID can be received from 2 different radio transmitters, but on different frequencies/channels this.uid = "C-" + this.OriginalNetworkId + "-" + this.TransportStreamId + "-" + this.ServiceId + "-" + this.ChannelOrTransponder; } else @@ -177,23 +218,6 @@ namespace ChanSort.Api } #endregion - #region GetFavString() - public static string GetFavString(Favorites favorites) - { - string sep = ""; - string text = ""; - foreach (Favorites favMask in Enum.GetValues(typeof(Favorites))) - { - if ((favorites & favMask) != 0) - { - text += sep + favMask.ToString(); - sep = ","; - } - } - return text; - } - #endregion - #region ParseFavString() public static Favorites ParseFavString(string value) { @@ -246,12 +270,19 @@ namespace ChanSort.Api #endregion #region UpdateRawData() + /// + /// called during the saving procedure to update the external channel list data with the changes made by the user + /// public virtual void UpdateRawData() { } #endregion #region ChangeEncoding() + /// + /// for file formats that allow characters in local code pages, this method should re-parse the raw data bytes for the given encoding + /// + /// public virtual void ChangeEncoding(System.Text.Encoding encoding) { } @@ -259,16 +290,25 @@ namespace ChanSort.Api #region GetPosition(), SetPosition(), ChangePosition() + /// + /// Gets the new channel number in the main channel list (index=0) or the various favorite lists (1-x) + /// public int GetPosition(int subListIndex) { return subListIndex == 0 ? this.NewProgramNr : this.FavIndex[subListIndex - 1]; } + /// + /// Gets the original channel number in the main channel list (index=0) or the various favorite lists (1-x) + /// public int GetOldPosition(int subListIndex) { return subListIndex == 0 ? this.OldProgramNr : this.OldFavIndex[subListIndex - 1]; } + /// + /// Sets the new channel number in the main channel list (index=0) or the various favorite lists (1-x) + /// public void SetPosition(int subListIndex, int newPos) { if (subListIndex == 0) @@ -284,6 +324,9 @@ namespace ChanSort.Api } } + /// + /// Sets the original channel number in the main channel list (index=0) or the various favorite lists (1-x) + /// public void SetOldPosition(int subListIndex, int oldPos) { if (subListIndex == 0) @@ -292,6 +335,9 @@ namespace ChanSort.Api this.OldFavIndex[subListIndex - 1] = oldPos; } + /// + /// Internal helper method to adjust the main or favorite program number by a delta value + /// internal void ChangePosition(int subListIndex, int delta) { if (subListIndex == 0) diff --git a/source/ChanSort.Api/Model/DataRoot.cs b/source/ChanSort.Api/Model/DataRoot.cs index 55badf3..9611e8f 100644 --- a/source/ChanSort.Api/Model/DataRoot.cs +++ b/source/ChanSort.Api/Model/DataRoot.cs @@ -1,41 +1,37 @@ using System.Collections.Generic; using System.Text; -using System.Linq; namespace ChanSort.Api { public class DataRoot { - private readonly IDictionary satellites = new Dictionary(); - private readonly IDictionary transponder = new Dictionary(); - private readonly IDictionary lnbConfig = new Dictionary(); private readonly IList channelLists = new List(); - private readonly StringBuilder warnings = new StringBuilder(); + private readonly SerializerBase loader; - public StringBuilder Warnings { get { return this.warnings; } } - public IDictionary Satellites { get { return this.satellites; } } - public IDictionary Transponder { get { return this.transponder; } } - public IDictionary LnbConfig { get { return this.lnbConfig; } } - public IEnumerable ChannelLists { get { return this.channelLists; } } - public bool IsEmpty { get { return this.channelLists.Count == 0; } } + public StringBuilder Warnings { get; } = new StringBuilder(); + public IDictionary Satellites { get; } = new Dictionary(); + public IDictionary Transponder { get; } = new Dictionary(); + public IDictionary LnbConfig { get; } = new Dictionary(); + public IEnumerable ChannelLists => this.channelLists; + public bool IsEmpty => this.channelLists.Count == 0; public bool NeedsSaving { get; set; } - public Favorites SupportedFavorites { get; set; } - public bool SortedFavorites { get; set; } - public bool MixedSourceFavorites { get; set; } - public bool AllowGapsInFavNumbers { get; set; } - public bool ShowDeletedChannels { get; set; } - public bool DeletedChannelsNeedNumbers { get; set; } - public DataRoot() + public Favorites SupportedFavorites => this.loader.Features.SupportedFavorites; + public bool SortedFavorites => this.loader.Features.SortedFavorites; + public bool MixedSourceFavorites => this.loader.Features.MixedSourceFavorites; + public bool AllowGapsInFavNumbers => this.loader.Features.AllowGapsInFavNumbers; + public bool DeletedChannelsNeedNumbers => this.loader.Features.DeletedChannelsNeedNumbers; + + public DataRoot(SerializerBase loader) { - this.SupportedFavorites = Favorites.A | Favorites.B | Favorites.C | Favorites.D; + this.loader = loader; } #region AddSatellite() public virtual void AddSatellite(Satellite satellite) { - this.satellites.Add(satellite.Id, satellite); + this.Satellites.Add(satellite.Id, satellite); } #endregion @@ -43,21 +39,21 @@ namespace ChanSort.Api public virtual void AddTransponder(Satellite sat, Transponder trans) { trans.Satellite = sat; - if (this.transponder.ContainsKey(trans.Id)) + if (this.Transponder.ContainsKey(trans.Id)) { - this.warnings.AppendFormat("Duplicate transponder data record for satellite #{0} with id {1}\r\n", sat?.Id, trans.Id); + this.Warnings.AppendFormat("Duplicate transponder data record for satellite #{0} with id {1}\r\n", sat?.Id, trans.Id); return; } if (sat != null) sat.Transponder.Add(trans.Id, trans); - this.transponder.Add(trans.Id, trans); + this.Transponder.Add(trans.Id, trans); } #endregion #region AddLnbConfig() public void AddLnbConfig(LnbConfig lnb) { - this.lnbConfig.Add(lnb.Id, lnb); + this.LnbConfig.Add(lnb.Id, lnb); } #endregion @@ -65,7 +61,7 @@ namespace ChanSort.Api public virtual void AddChannelList(ChannelList list) { this.channelLists.Add(list); - this.MixedSourceFavorites |= list.IsMixedSourceFavoritesList; + this.loader.Features.MixedSourceFavorites |= list.IsMixedSourceFavoritesList; } #endregion @@ -74,7 +70,7 @@ namespace ChanSort.Api { if (list == null) { - warnings.AppendFormat("No list found to add channel '{0}'\r\n", channel); + this.Warnings.AppendFormat("No list found to add channel '{0}'\r\n", channel); return; } string warning = list.AddChannel(channel); @@ -105,6 +101,26 @@ namespace ChanSort.Api } #endregion + #region ValidateAfterLoad() + public virtual void ValidateAfterLoad() + { + foreach (var list in this.ChannelLists) + { + if (list.IsMixedSourceFavoritesList) + continue; + + // make sure that deleted channels have OldProgramNr = -1 + foreach (var chan in list.Channels) + { + if (chan.IsDeleted) + chan.OldProgramNr = -1; + else if (chan.OldProgramNr < 0) // old versions of ChanSort saved -1 and without setting IsDeleted + chan.IsDeleted = true; + } + } + } + #endregion + #region ApplyCurrentProgramNumbers() public void ApplyCurrentProgramNumbers() { @@ -120,35 +136,37 @@ namespace ChanSort.Api foreach (var channel in list.Channels) { for (int i = 0; i <= c; i++) - channel.SetPosition(i, channel.IsDeleted && !this.DeletedChannelsNeedNumbers ? -1 : channel.GetOldPosition(i)); + channel.SetPosition(i, channel.GetOldPosition(i)); } } } #endregion - #region SetPrNrForDeletedChannels() - public void SetPrNrForDeletedChannels() + #region ValidateAfterSave() + public virtual void ValidateAfterSave() { - if (this.DeletedChannelsNeedNumbers) - return; - - // make sure that deleted channels have OldProgramNr = -1 + // set old numbers to match the new numbers + // also make sure that deleted channels are either removed from the list or assigned the -1 prNr, depending on the loader's DeleteMode foreach (var list in this.ChannelLists) { - if (list.IsMixedSourceFavoritesList) - continue; - foreach (var chan in list.Channels) + for (int i = 0; i < list.Channels.Count; i++) { + var chan = list.Channels[i]; if (chan.IsDeleted) { - chan.NewProgramNr = -1; - chan.OldProgramNr = -1; + if (this.loader.Features.DeleteMode == SerializerBase.DeleteMode.Physically) + list.Channels.RemoveAt(i--); + else + chan.NewProgramNr = -1; } - else if (chan.OldProgramNr == -1) // old versions of ChanSort saved -1 and without setting IsDeleted - chan.IsDeleted = true; + + chan.OldProgramNr = chan.NewProgramNr; + chan.OldFavIndex.Clear(); + chan.OldFavIndex.AddRange(chan.FavIndex); } } } #endregion + } } diff --git a/source/ChanSort.Api/Model/Enums.cs b/source/ChanSort.Api/Model/Enums.cs index b601eb0..b4c9923 100644 --- a/source/ChanSort.Api/Model/Enums.cs +++ b/source/ChanSort.Api/Model/Enums.cs @@ -82,7 +82,7 @@ namespace ChanSort.Api { AppendInOrder=0, AppendAlphabetically=1, - MarkDeleted=2 + Delete=2 } [Flags] diff --git a/source/ChanSort.Api/Resources.Designer.cs b/source/ChanSort.Api/Resources.Designer.cs index 8ac0b48..c51a8f1 100644 --- a/source/ChanSort.Api/Resources.Designer.cs +++ b/source/ChanSort.Api/Resources.Designer.cs @@ -19,7 +19,7 @@ namespace ChanSort.Api { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { diff --git a/source/ChanSort.Loader.GlobalClone/ChanSort.Loader.GlobalClone.csproj b/source/ChanSort.Loader.GlobalClone/ChanSort.Loader.GlobalClone.csproj index caeecaa..7839cf9 100644 --- a/source/ChanSort.Loader.GlobalClone/ChanSort.Loader.GlobalClone.csproj +++ b/source/ChanSort.Loader.GlobalClone/ChanSort.Loader.GlobalClone.csproj @@ -9,7 +9,7 @@ Properties ChanSort.Loader.GlobalClone ChanSort.Loader.GlobalClone - v4.0 + v4.6 512 @@ -22,6 +22,7 @@ DEBUG;TRACE prompt 4 + false AnyCPU @@ -31,6 +32,7 @@ TRACE prompt 4 + false true @@ -40,15 +42,17 @@ x86 prompt MinimumRecommendedRules.ruleset + false - bin\x86\Release\ + ..\Release\ TRACE true pdbonly x86 prompt MinimumRecommendedRules.ruleset + false diff --git a/source/ChanSort.Loader.GlobalClone/GcSerializer.cs b/source/ChanSort.Loader.GlobalClone/GcSerializer.cs index e0b0cfb..70b3aa1 100644 --- a/source/ChanSort.Loader.GlobalClone/GcSerializer.cs +++ b/source/ChanSort.Loader.GlobalClone/GcSerializer.cs @@ -25,7 +25,8 @@ namespace ChanSort.Loader.GlobalClone public GcSerializer(string inputFile) : base(inputFile) { this.Features.ChannelNameEdit = ChannelNameEditMode.All; - //this.Features.CanDeleteChannels = false; + this.Features.DeleteMode = DeleteMode.FlagWithPrNr; + this.Features.CanHaveGaps = true; this.DataRoot.AddChannelList(this.atvChannels); this.DataRoot.AddChannelList(this.dtvTvChannels); @@ -35,12 +36,6 @@ namespace ChanSort.Loader.GlobalClone } #endregion - #region DisplayName - public override string DisplayName => "LG GlobalClone loader"; - - #endregion - - #region Load() public override void Load() @@ -320,8 +315,8 @@ namespace ChanSort.Loader.GlobalClone { int n = info.LocalName[11] - 'A'; var mask = 1 << n; - this.DataRoot.SupportedFavorites |= (Favorites)mask; - this.DataRoot.SortedFavorites = true; + this.Features.SupportedFavorites |= (Favorites)mask; + this.Features.SortedFavorites = true; if (((int)ch.Favorites & mask) != 0) // xml element holds bad index data (250) when fav is not set ch.SetPosition(n + 1, int.Parse(info.InnerText)); } diff --git a/source/ChanSort.Loader.GlobalClone/Resources.Designer.cs b/source/ChanSort.Loader.GlobalClone/Resources.Designer.cs index d704f9c..1c711b1 100644 --- a/source/ChanSort.Loader.GlobalClone/Resources.Designer.cs +++ b/source/ChanSort.Loader.GlobalClone/Resources.Designer.cs @@ -19,7 +19,7 @@ namespace ChanSort.Loader.GlobalClone { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { diff --git a/source/ChanSort.Loader.Hisense/ChanSort.Loader.Hisense.csproj b/source/ChanSort.Loader.Hisense/ChanSort.Loader.Hisense.csproj index cd904a0..7b369f7 100644 --- a/source/ChanSort.Loader.Hisense/ChanSort.Loader.Hisense.csproj +++ b/source/ChanSort.Loader.Hisense/ChanSort.Loader.Hisense.csproj @@ -9,7 +9,7 @@ Properties ChanSort.Loader.Hisense ChanSort.Loader.Hisense - v4.0 + v4.6 512 @@ -23,6 +23,7 @@ prompt 4 x86 + false pdbonly @@ -31,6 +32,7 @@ TRACE prompt 4 + false true @@ -40,15 +42,17 @@ x86 prompt MinimumRecommendedRules.ruleset + false - bin\x86\Release\ + ..\Release\ TRACE true pdbonly x86 prompt MinimumRecommendedRules.ruleset + false diff --git a/source/ChanSort.Loader.Hisense/HisDbSerializer.cs b/source/ChanSort.Loader.Hisense/HisDbSerializer.cs index abc03c1..d7cdd10 100644 --- a/source/ChanSort.Loader.Hisense/HisDbSerializer.cs +++ b/source/ChanSort.Loader.Hisense/HisDbSerializer.cs @@ -13,8 +13,6 @@ namespace ChanSort.Loader.Hisense { public class HisDbSerializer : SerializerBase { - public override string DisplayName => "Hisense channel.db Loader"; - #region enums and bitmasks internal enum BroadcastType @@ -94,10 +92,10 @@ namespace ChanSort.Loader.Hisense DepencencyChecker.AssertVc2010RedistPackageX86Installed(); this.Features.ChannelNameEdit = ChannelNameEditMode.All; - this.Features.CanDeleteChannels = false; + this.Features.DeleteMode = DeleteMode.NotSupported; this.Features.CanSkipChannels = false; this.Features.CanHaveGaps = true; - this.DataRoot.SortedFavorites = true; + this.Features.SortedFavorites = true; channelLists.Add(new ChannelList(SignalSource.Antenna, "Antenna")); channelLists.Add(new ChannelList(SignalSource.Cable, "Cable")); @@ -537,7 +535,7 @@ namespace ChanSort.Loader.Hisense private void UpdateChannel(SQLiteCommand cmd, ChannelInfo ci) { - if (ci.RecordIndex < 0) // skip reference list proxy channels + if (ci.IsProxy) return; int x = (int) ((ulong) ci.RecordIndex >> 32); // the table number is kept in the higher 32 bits @@ -571,7 +569,7 @@ namespace ChanSort.Loader.Hisense { if (ci.FavIndex[i] <= 0) { - cmd.CommandText = $"delete from fav_{i + 1} where ui2_svc_id={ci.RecordIndex >> 32} and ui2_svc_rec_id={ci.RecordIndex & 0xFFFF}"; + cmd.CommandText = $"delete from fav_{i + 1} where ui2_svc_id={ci.RecordIndex >> 32} and ui2_svc_rec_id={ci.RecordIndex & 0xFFFFFFFF}"; cmd.ExecuteNonQuery(); } else diff --git a/source/ChanSort.Loader.Hisense/Resources.Designer.cs b/source/ChanSort.Loader.Hisense/Resources.Designer.cs index f4c6224..003475d 100644 --- a/source/ChanSort.Loader.Hisense/Resources.Designer.cs +++ b/source/ChanSort.Loader.Hisense/Resources.Designer.cs @@ -19,7 +19,7 @@ namespace ChanSort.Loader.Hisense { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { diff --git a/source/ChanSort.Loader.Hisense2017/ChanSort.Loader.Hisense2017.csproj b/source/ChanSort.Loader.Hisense2017/ChanSort.Loader.Hisense2017.csproj index 13d3ff2..40d919a 100644 --- a/source/ChanSort.Loader.Hisense2017/ChanSort.Loader.Hisense2017.csproj +++ b/source/ChanSort.Loader.Hisense2017/ChanSort.Loader.Hisense2017.csproj @@ -9,7 +9,7 @@ Properties ChanSort.Loader.Hisense2017 ChanSort.Loader.Hisense2017 - v4.0 + v4.6 512 @@ -23,6 +23,7 @@ prompt 4 x86 + false pdbonly @@ -31,6 +32,7 @@ TRACE prompt 4 + false true @@ -40,15 +42,17 @@ x86 prompt MinimumRecommendedRules.ruleset + false - bin\x86\Release\ + ..\Release\ TRACE true pdbonly x86 prompt MinimumRecommendedRules.ruleset + false diff --git a/source/ChanSort.Loader.Hisense2017/HisDbSerializer.cs b/source/ChanSort.Loader.Hisense2017/HisDbSerializer.cs index 743a480..f3804e6 100644 --- a/source/ChanSort.Loader.Hisense2017/HisDbSerializer.cs +++ b/source/ChanSort.Loader.Hisense2017/HisDbSerializer.cs @@ -119,18 +119,15 @@ namespace ChanSort.Loader.Hisense2017 DepencencyChecker.AssertVc2010RedistPackageX86Installed(); Features.ChannelNameEdit = ChannelNameEditMode.All; - Features.CanDeleteChannels = true; + Features.DeleteMode = DeleteMode.FlagWithPrNr; Features.CanSkipChannels = true; Features.CanHaveGaps = true; - DataRoot.MixedSourceFavorites = true; - DataRoot.SortedFavorites = true; - DataRoot.ShowDeletedChannels = false; + Features.MixedSourceFavorites = true; + Features.SortedFavorites = true; } #endregion - public override string DisplayName => "Hisense servicelist.db Loader"; - #region Load() public override void Load() @@ -513,8 +510,8 @@ left outer join Lcn l on l.ServiceId=fi.ServiceId and l.FavoriteId=fi.FavoriteId cmd.Parameters["@favId"].Value = favId; cmd.Parameters["@servId"].Value = ci.RecordIndex; - cmd.Parameters["@ch"].Value = ci.NewProgramNr <= 0 ? 9999 : ci.NewProgramNr; - cmd.Parameters["@del"].Value = ci.NewProgramNr <= 0 ? 1 : 0; // 1 or -1 ? + cmd.Parameters["@ch"].Value = ci.NewProgramNr; + cmd.Parameters["@del"].Value = ci.IsDeleted ? 1 : 0; // 1 or -1 ? // not sure if the following columns are used at all. they also exist in the Services table cmd.Parameters["@prot"].Value = ci.Lock ? -1 : 0; cmd.Parameters["@sel"].Value = ci.Skip ? 0 : -1; diff --git a/source/ChanSort.Loader.Hisense2017/Resources.Designer.cs b/source/ChanSort.Loader.Hisense2017/Resources.Designer.cs index 1222668..94e73e3 100644 --- a/source/ChanSort.Loader.Hisense2017/Resources.Designer.cs +++ b/source/ChanSort.Loader.Hisense2017/Resources.Designer.cs @@ -19,7 +19,7 @@ namespace ChanSort.Loader.Hisense2017 { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { diff --git a/source/ChanSort.Loader.LG/ChanSort.Loader.LG.csproj b/source/ChanSort.Loader.LG/ChanSort.Loader.LG.csproj index b82c884..8c538f9 100644 --- a/source/ChanSort.Loader.LG/ChanSort.Loader.LG.csproj +++ b/source/ChanSort.Loader.LG/ChanSort.Loader.LG.csproj @@ -10,7 +10,7 @@ Properties ChanSort.Loader.LG ChanSort.Loader.LG - v4.5.2 + v4.6 512 @@ -49,7 +49,7 @@ false - bin\x86\Release\ + ..\Release\ TRACE true pdbonly @@ -60,9 +60,9 @@ false - - - + + + diff --git a/source/ChanSort.Loader.LG/PresetProgramNrDialog.resx b/source/ChanSort.Loader.LG/PresetProgramNrDialog.resx index caa99dd..0ed1242 100644 --- a/source/ChanSort.Loader.LG/PresetProgramNrDialog.resx +++ b/source/ChanSort.Loader.LG/PresetProgramNrDialog.resx @@ -121,8 +121,8 @@ Top, Left, Right - - + + Vertical @@ -143,7 +143,7 @@ labelControl1 - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -157,7 +157,7 @@ Tahoma, 8.25pt, style=Bold - + Vertical @@ -176,7 +176,7 @@ labelControl3 - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -190,7 +190,7 @@ Tahoma, 8.25pt, style=Bold - + Vertical @@ -209,7 +209,7 @@ labelControl4 - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -220,7 +220,7 @@ Top, Left, Right - + Vertical @@ -239,7 +239,7 @@ labelControl5 - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -250,7 +250,7 @@ Top, Left, Right - + Vertical @@ -269,7 +269,7 @@ labelControl6 - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -280,7 +280,7 @@ Top, Left, Right - + Vertical @@ -299,7 +299,7 @@ labelControl7 - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -353,7 +353,7 @@ btnOk - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -364,7 +364,7 @@ Top, Left, Right - + Vertical @@ -383,7 +383,7 @@ labelControl2 - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -410,6 +410,6 @@ PresetProgramNrDialog - DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a \ No newline at end of file diff --git a/source/ChanSort.Loader.LG/Resource.Designer.cs b/source/ChanSort.Loader.LG/Resource.Designer.cs index 100024c..5649ce5 100644 --- a/source/ChanSort.Loader.LG/Resource.Designer.cs +++ b/source/ChanSort.Loader.LG/Resource.Designer.cs @@ -19,7 +19,7 @@ namespace ChanSort.Loader.LG { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resource { diff --git a/source/ChanSort.Loader.LG/SatChannel.cs b/source/ChanSort.Loader.LG/SatChannel.cs index 953530c..091549e 100644 --- a/source/ChanSort.Loader.LG/SatChannel.cs +++ b/source/ChanSort.Loader.LG/SatChannel.cs @@ -7,7 +7,7 @@ namespace ChanSort.Loader.LG private const string _SatConfigIndex = "offSatelliteNr"; private const string _TransponderIndex = "offTransponderIndex"; - public bool InUse { get; private set; } + public bool InUse { get; } public SatChannel(int order, int slot, DataMapping data, DataRoot dataRoot) : base(data) { @@ -19,8 +19,8 @@ namespace ChanSort.Loader.LG this.InitDvbData(data); int transponderIndex = data.GetWord(_TransponderIndex); - Transponder transponder = dataRoot.Transponder.TryGet(transponderIndex); - Satellite sat = transponder.Satellite; + var transponder = dataRoot.Transponder.TryGet(transponderIndex); + var sat = transponder.Satellite; this.Transponder = transponder; this.Satellite = sat.Name; @@ -32,23 +32,5 @@ namespace ChanSort.Loader.LG this.Polarity = transponder.Polarity; this.FreqInMhz = transponder.FrequencyInMhz; } - - internal static SatChannel CreateFromProxy(ChannelInfo proxy, DataRoot dataRoot, DataMapping mapping, int rawSize) - { - if (proxy.Transponder == null || proxy.Transponder.Satellite == null || proxy.Transponder.Satellite.LnbConfig == null) - return null; - - byte[] rawData = mapping.Settings.GetBytes("newRecordTemplate"); - if (rawData == null) - return null; - - mapping.SetDataPtr(rawData, 0); - mapping.SetWord(_SatConfigIndex, proxy.Transponder.Satellite.LnbConfig.Id); - mapping.SetWord(_TransponderIndex, proxy.Transponder.Id); - mapping.SetWord(_ServiceId, proxy.ServiceId); - var channel = new SatChannel(0, proxy.NewProgramNr, mapping, dataRoot); - channel.Name = proxy.Name; - return channel; - } } } diff --git a/source/ChanSort.Loader.LG/TllChannelBase.cs b/source/ChanSort.Loader.LG/TllChannelBase.cs index fff29e4..3673f4a 100644 --- a/source/ChanSort.Loader.LG/TllChannelBase.cs +++ b/source/ChanSort.Loader.LG/TllChannelBase.cs @@ -56,6 +56,9 @@ namespace ChanSort.Loader.LG this.Hidden = data.GetFlag(_Hide); this.Encrypted = data.GetFlag(_Encrypted); this.IsDeleted = data.GetFlag(_Deleted); + if (IsDeleted) // allow setting a breakpoint + { + } } #endregion @@ -105,7 +108,7 @@ namespace ChanSort.Loader.LG mapping.SetFlag(_Skip, this.Skip); mapping.SetFlag(_Lock, this.Lock); mapping.SetFlag(_Hide, this.Hidden); - if (this.NewProgramNr == -1) + if (this.IsDeleted) { mapping.SetFlag(_Deleted, true); mapping.SetByte("off" + _Moved, 0); //skip,lock,hide,moved diff --git a/source/ChanSort.Loader.LG/TllFileSerializer.cs b/source/ChanSort.Loader.LG/TllFileSerializer.cs index 89b0bf0..952c325 100644 --- a/source/ChanSort.Loader.LG/TllFileSerializer.cs +++ b/source/ChanSort.Loader.LG/TllFileSerializer.cs @@ -76,6 +76,8 @@ namespace ChanSort.Loader.LG public TllFileSerializer(string inputFile) : base(inputFile) { this.Features.ChannelNameEdit = ChannelNameEditMode.Analog; + this.Features.DeleteMode = DeleteMode.FlagWithoutPrNr; + this.Features.CanHaveGaps = true; this.Features.DeviceSettings = true; this.Features.CleanUpChannelData = true; this.SupportedTvCountryCodes = new List @@ -125,10 +127,6 @@ namespace ChanSort.Loader.LG #endregion - #region DisplayName - public override string DisplayName { get { return "TLL loader"; } } - #endregion - #region Load() public override void Load() @@ -530,11 +528,7 @@ namespace ChanSort.Loader.LG else { if (ci.IsDeleted) - { - ci.OldProgramNr = -1; - ci.NewProgramNr = -1; ++this.deletedChannelsSoft; - } var list = this.DataRoot.GetChannelList(ci.SignalSource); var dupes = list.GetChannelByUid(ci.Uid); @@ -923,10 +917,11 @@ namespace ChanSort.Loader.LG newDvbctChannelCount = 0; foreach (var list in this.DataRoot.ChannelLists) { - int count = list.Channels.Count; - for (int i=0; icbHbbTv - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpOption @@ -166,7 +166,7 @@ cbCustomCountry - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpOption @@ -177,8 +177,8 @@ 72, 29 - - + + Combo @@ -191,7 +191,7 @@ comboBoxEdit1 - DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpOption @@ -215,7 +215,7 @@ labelControl1 - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpOption @@ -242,7 +242,7 @@ grpOption - DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -269,7 +269,7 @@ btnOk - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -296,7 +296,7 @@ btnCancel - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -304,8 +304,8 @@ 2 - - + + Vertical @@ -324,7 +324,7 @@ labelControl3 - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpHotelMode @@ -348,7 +348,7 @@ labelControl2 - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpHotelMode @@ -375,7 +375,7 @@ cbDtvUpdate - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpHotelMode @@ -402,7 +402,7 @@ cbHotelMode - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpHotelMode @@ -429,7 +429,7 @@ grpHotelMode - DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -456,7 +456,7 @@ cbAutoChannelUpdate - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpSetup @@ -483,7 +483,7 @@ grpSetup - DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -491,7 +491,7 @@ 5 - + Vertical @@ -510,7 +510,7 @@ labelControl4 - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpInformation @@ -537,7 +537,7 @@ grpInformation - DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -567,7 +567,7 @@ lblHotelMenuAutoDetect - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -594,6 +594,6 @@ TvSettingsForm - DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a \ No newline at end of file diff --git a/source/ChanSort.Loader.Panasonic/ChanSort.Loader.Panasonic.csproj b/source/ChanSort.Loader.Panasonic/ChanSort.Loader.Panasonic.csproj index c0715ad..4c0eae0 100644 --- a/source/ChanSort.Loader.Panasonic/ChanSort.Loader.Panasonic.csproj +++ b/source/ChanSort.Loader.Panasonic/ChanSort.Loader.Panasonic.csproj @@ -1,5 +1,5 @@  - + Debug AnyCPU @@ -10,7 +10,7 @@ Properties ChanSort.Loader.Panasonic ChanSort.Loader.Panasonic - v4.0 + v4.6 512 @@ -23,6 +23,7 @@ DEBUG;TRACE prompt 4 + false pdbonly @@ -31,6 +32,7 @@ TRACE prompt 4 + false true @@ -40,14 +42,16 @@ x86 prompt false + false - bin\x86\Release\ + ..\Release\ TRACE true pdbonly x86 prompt + false @@ -60,7 +64,6 @@ - diff --git a/source/ChanSort.Loader.Panasonic/DbChannel.cs b/source/ChanSort.Loader.Panasonic/DbChannel.cs index 1d04c58..26d0d56 100644 --- a/source/ChanSort.Loader.Panasonic/DbChannel.cs +++ b/source/ChanSort.Loader.Panasonic/DbChannel.cs @@ -8,7 +8,6 @@ namespace ChanSort.Loader.Panasonic { internal class DbChannel : ChannelInfo { - internal int Bits; internal byte[] RawName; #region ctor() diff --git a/source/ChanSort.Loader.Panasonic/Serializer.cs b/source/ChanSort.Loader.Panasonic/Serializer.cs index 9bf9dc1..7ec32a5 100644 --- a/source/ChanSort.Loader.Panasonic/Serializer.cs +++ b/source/ChanSort.Loader.Panasonic/Serializer.cs @@ -4,7 +4,6 @@ using System.Data; using System.Data.SQLite; using System.IO; using System.Text; -using System.Windows.Forms; using ChanSort.Api; namespace ChanSort.Loader.Panasonic @@ -41,9 +40,10 @@ namespace ChanSort.Loader.Panasonic DepencencyChecker.AssertVc2010RedistPackageX86Installed(); this.Features.ChannelNameEdit = ChannelNameEditMode.None; // due to the chaos with binary data inside the "sname" string column, writing back a name has undesired side effects + this.Features.DeleteMode = DeleteMode.Physically; this.Features.CanHaveGaps = false; this.Features.EncryptedFlagEdit = true; - this.DataRoot.SortedFavorites = true; + this.Features.SortedFavorites = true; this.DataRoot.AddChannelList(this.avbtChannels); this.DataRoot.AddChannelList(this.avbcChannels); @@ -63,8 +63,6 @@ namespace ChanSort.Loader.Panasonic } #endregion - public override string DisplayName => "Panasonic .db/.bin Loader"; - #region Load() public override void Load() { @@ -102,7 +100,8 @@ namespace ChanSort.Loader.Panasonic var tempFile = this.FileName + ".tmp"; File.Delete(tempFile); - Application.ApplicationExit += CleanTempFile; + this.DeleteOnExit(tempFile); + if (cypherMode == CypherMode.Encryption) this.CypherFile(this.FileName, tempFile, false); else @@ -202,18 +201,6 @@ namespace ChanSort.Loader.Panasonic #endregion - #region CleanTempFile() - private void CleanTempFile(object sender, EventArgs e) - { - try - { - if (this.workFile != null) - File.Delete(this.workFile); - } - catch { } - } - #endregion - #region CreateDummySatellites() private void CreateDummySatellites() { @@ -351,7 +338,7 @@ order by s.ntype,major_channel var channel = channelInfo as DbChannel; if (channel == null) // skip reference list proxy channels continue; - if (channel.NewProgramNr < 0 || channel.OldProgramNr < 0) + if (channel.IsDeleted && channel.OldProgramNr >= 0) continue; cmd.Parameters["@rowid"].Value = channel.RecordIndex; cmd.Parameters["@progNr"].Value = channel.NewProgramNr; @@ -368,7 +355,7 @@ order by s.ntype,major_channel cmd.Parameters.Add(new SQLiteParameter("@rowid", DbType.Int32)); foreach (ChannelInfo channel in channelList.Channels) { - if (channel.NewProgramNr == -1 && channel.OldProgramNr >= 0) + if (channel.IsDeleted && channel.OldProgramNr >= 0) { cmd.Parameters["@rowid"].Value = channel.RecordIndex; cmd.ExecuteNonQuery(); diff --git a/source/ChanSort.Loader.PhilipsXml/ChanSort.Loader.PhilipsXml.csproj b/source/ChanSort.Loader.PhilipsXml/ChanSort.Loader.PhilipsXml.csproj index 03a9391..1794bad 100644 --- a/source/ChanSort.Loader.PhilipsXml/ChanSort.Loader.PhilipsXml.csproj +++ b/source/ChanSort.Loader.PhilipsXml/ChanSort.Loader.PhilipsXml.csproj @@ -9,9 +9,10 @@ Properties ChanSort.Loader.PhilipsXml ChanSort.Loader.PhilipsXml - v4.0 + v4.6 512 true + true @@ -21,32 +22,36 @@ DEBUG;TRACE prompt 4 + false pdbonly true - bin\Release\ + ..\Release\ TRACE prompt 4 + false true - bin\x86\Debug\ + ..\Debug\ DEBUG;TRACE full x86 prompt MinimumRecommendedRules.ruleset + false - bin\x86\Release\ + ..\Release\ TRACE true pdbonly x86 prompt MinimumRecommendedRules.ruleset + false diff --git a/source/ChanSort.Loader.PhilipsXml/Serializer.cs b/source/ChanSort.Loader.PhilipsXml/Serializer.cs index 37da734..20b49ca 100644 --- a/source/ChanSort.Loader.PhilipsXml/Serializer.cs +++ b/source/ChanSort.Loader.PhilipsXml/Serializer.cs @@ -41,7 +41,7 @@ namespace ChanSort.Loader.PhilipsXml public Serializer(string inputFile) : base(inputFile) { this.Features.ChannelNameEdit = ChannelNameEditMode.All; - this.Features.CanDeleteChannels = true; + this.Features.DeleteMode = DeleteMode.Physically; this.DataRoot.AddChannelList(this.terrChannels); this.DataRoot.AddChannelList(this.cableChannels); @@ -59,11 +59,6 @@ namespace ChanSort.Loader.PhilipsXml } #endregion - #region DisplayName - public override string DisplayName => "Philips *.xml loader"; - - #endregion - #region Load() @@ -134,8 +129,8 @@ namespace ChanSort.Loader.PhilipsXml if (setupNode.HasAttribute("ChannelName")) { this.formatVersion = 1; - this.DataRoot.SupportedFavorites = Favorites.A; - this.DataRoot.SortedFavorites = true; + this.Features.SupportedFavorites = Favorites.A; + this.Features.SortedFavorites = true; var dtype = bcastNode.GetAttribute("DecoderType"); if (dtype == "1") @@ -150,8 +145,8 @@ namespace ChanSort.Loader.PhilipsXml else if (setupNode.HasAttribute("name")) { this.formatVersion = 2; - this.DataRoot.SupportedFavorites = 0; - this.DataRoot.SortedFavorites = false; + this.Features.SupportedFavorites = 0; + this.Features.SortedFavorites = false; foreach (var list in this.DataRoot.ChannelLists) { list.VisibleColumnFieldNames.Remove("Favorites"); diff --git a/source/ChanSort.Loader.Samsung/ChanSort.Loader.Samsung.csproj b/source/ChanSort.Loader.Samsung/ChanSort.Loader.Samsung.csproj index 20f51fe..e802052 100644 --- a/source/ChanSort.Loader.Samsung/ChanSort.Loader.Samsung.csproj +++ b/source/ChanSort.Loader.Samsung/ChanSort.Loader.Samsung.csproj @@ -1,5 +1,5 @@  - + Debug AnyCPU @@ -10,7 +10,7 @@ Properties ChanSort.Loader.Samsung ChanSort.Loader.Samsung - v4.0 + v4.6 512 @@ -25,6 +25,7 @@ 4 true x86 + false pdbonly @@ -33,6 +34,7 @@ TRACE prompt 4 + false true @@ -45,9 +47,10 @@ false false false + false - bin\x86\Release\ + ..\Release\ TRACE true pdbonly @@ -56,15 +59,12 @@ true true true + false - - False - ..\DLL\ICSharpCode.SharpZipLib.dll - - + diff --git a/source/ChanSort.Loader.Samsung/DigitalChannel.cs b/source/ChanSort.Loader.Samsung/DigitalChannel.cs index 2be89d0..32de35a 100644 --- a/source/ChanSort.Loader.Samsung/DigitalChannel.cs +++ b/source/ChanSort.Loader.Samsung/DigitalChannel.cs @@ -13,9 +13,16 @@ namespace ChanSort.Loader.Samsung { this.InitCommonData(slot, signalSource & ~SignalSource.MaskTvRadioData, data); - if (!this.InUse || this.OldProgramNr == 0) + if (!this.InUse) return; + // "InUse" and "IsDeleted" are not always guessed correctly. If PrNr=0, the channel contains garbage + if (this.OldProgramNr == 0) + { + this.InUse = false; + return; + } + this.InitDvbData(data, providerNames); int transp = data.GetByte(_ChannelOrTransponder); diff --git a/source/ChanSort.Loader.Samsung/Resource.Designer.cs b/source/ChanSort.Loader.Samsung/Resource.Designer.cs index c2902e6..5d3141b 100644 --- a/source/ChanSort.Loader.Samsung/Resource.Designer.cs +++ b/source/ChanSort.Loader.Samsung/Resource.Designer.cs @@ -19,7 +19,7 @@ namespace ChanSort.Loader.Samsung { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resource { diff --git a/source/ChanSort.Loader.Samsung/SatChannel.cs b/source/ChanSort.Loader.Samsung/SatChannel.cs index 28ed8ae..8bb21cc 100644 --- a/source/ChanSort.Loader.Samsung/SatChannel.cs +++ b/source/ChanSort.Loader.Samsung/SatChannel.cs @@ -12,7 +12,10 @@ namespace ChanSort.Loader.Samsung { this.InitCommonData(slot, SignalSource.DvbS | presetList, data); if (!this.InUse) + { + this.IsDeleted = true; return; + } this.InitDvbData(data, providerNames); @@ -37,7 +40,7 @@ namespace ChanSort.Loader.Samsung public override void UpdateRawData() { - if (this.NewProgramNr < 0) // "deleted" flag is currently unknown for sat channels + if (this.IsDeleted) // "deleted" flag is currently unknown for sat channels this.InUse = false; base.UpdateRawData(); } diff --git a/source/ChanSort.Loader.Samsung/ScmChannelBase.cs b/source/ChanSort.Loader.Samsung/ScmChannelBase.cs index 446e000..e2fea90 100644 --- a/source/ChanSort.Loader.Samsung/ScmChannelBase.cs +++ b/source/ChanSort.Loader.Samsung/ScmChannelBase.cs @@ -71,8 +71,6 @@ namespace ChanSort.Loader.Samsung this.Skip = data.GetFlag(_Skip); this.Encrypted = data.GetFlag(_Encrypted); this.IsDeleted = data.GetFlag(_Deleted, false) || !data.GetFlag(_IsActive, true); - if (this.IsDeleted) - this.OldProgramNr = -1; this.AddDebug(data.Data, data.BaseOffset + 25, 3); } #endregion @@ -142,8 +140,7 @@ namespace ChanSort.Loader.Samsung { mapping.SetDataPtr(this.rawData, this.baseOffset); mapping.SetFlag(_InUse, this.InUse); - if (this.NewProgramNr >= 0) - mapping.SetWord(_ProgramNr, this.NewProgramNr); + mapping.SetWord(_ProgramNr, this.NewProgramNr); if (this.IsNameModified) { @@ -153,8 +150,8 @@ namespace ChanSort.Loader.Samsung } this.UpdateRawFavorites(); mapping.SetFlag(_Lock, this.Lock); - mapping.SetFlag(_Deleted, this.NewProgramNr < 0); - mapping.SetFlag(_IsActive, this.NewProgramNr >= 0); + mapping.SetFlag(_Deleted, this.IsDeleted); + mapping.SetFlag(_IsActive, !this.IsDeleted); mapping.SetFlag(_Skip, this.Skip); mapping.SetByte(this.mapping.GetByte(_Hidden) != 255 ? _Hidden : _HiddenAlt, this.Hidden ? 1 : 0); if (this.Encrypted != null) diff --git a/source/ChanSort.Loader.Samsung/ScmSerializer.cs b/source/ChanSort.Loader.Samsung/ScmSerializer.cs index bb8400b..bac5741 100644 --- a/source/ChanSort.Loader.Samsung/ScmSerializer.cs +++ b/source/ChanSort.Loader.Samsung/ScmSerializer.cs @@ -1,10 +1,10 @@ using System.Collections.Generic; using System.IO; +using System.IO.Compression; using System.Reflection; using System.Linq; using System.Text; using ChanSort.Api; -using ICSharpCode.SharpZipLib.Zip; namespace ChanSort.Loader.Samsung { @@ -62,15 +62,12 @@ namespace ChanSort.Loader.Samsung { this.ReadConfigurationFromIniFile(); this.Features.ChannelNameEdit = ChannelNameEditMode.All; + this.Features.DeleteMode = DeleteMode.FlagWithPrNr; this.Features.CleanUpChannelData = true; this.Features.EncryptedFlagEdit = true; } #endregion - #region DisplayName - public override string DisplayName { get { return "Samsung *.scm Loader"; } } - #endregion - #region ReadConfigurationFromIniFile() private void ReadConfigurationFromIniFile() { @@ -108,34 +105,34 @@ namespace ChanSort.Loader.Samsung #region Load() public override void Load() { - using (ZipFile zip = new ZipFile(this.FileName)) - { - DetectModelConstants(zip); - DataRoot.SupportedFavorites = c.supportedFavorites; - DataRoot.SortedFavorites = c.SortedFavorites == FavoritesIndexMode.IndividuallySorted; + var tempDir = this.UnzipFileToTempFolder(); + + DetectModelConstants(tempDir); + Features.SupportedFavorites = c.supportedFavorites; + Features.SortedFavorites = c.SortedFavorites == FavoritesIndexMode.IndividuallySorted; + + ReadAnalogFineTuning(tempDir); + ReadAnalogChannels(tempDir, "map-AirA", this.avbtChannels, out this.avbtFileContent, this.avbtFrequency); + ReadAnalogChannels(tempDir, "map-CableA", this.avbcChannels, out this.avbcFileContent, this.avbcFrequency); + ReadAnalogChannels(tempDir, "map-AirCableMixedA", this.avbxChannels, out this.avbxFileContent, this.avbcFrequency); + ReadDvbTransponderFrequenciesFromPtc(tempDir, "PTCAIR", this.dvbtFrequency); + ReadDvbServiceProviders(tempDir); + ReadDvbctChannels(tempDir, "map-AirD", this.dvbtChannels, out this.dvbtFileContent, this.dvbtFrequency); + ReadDvbTransponderFrequenciesFromPtc(tempDir, "PTCCABLE", this.dvbcFrequency); + ReadDvbctChannels(tempDir, "map-CableD", this.dvbcChannels, out this.dvbcFileContent, this.dvbcFrequency); + ReadDvbctChannels(tempDir, "map-AirCableMixedD", this.dvbxChannels, out this.dvbxFileContent, this.dvbcFrequency); + ReadDvbctChannels(tempDir, "map-CablePrime_D", this.primeChannels, out this.primeFileContent, this.dvbcFrequency); + ReadDvbctChannels(tempDir, "map-FreesatD", this.freesatChannels, out this.freesatFileContent, this.dvbcFrequency); + ReadDvbctChannels(tempDir, "map-TivusatD", this.tivusatChannels, out this.tivusatFileContent, this.dvbcFrequency); + ReadDvbctChannels(tempDir, "map-CanalDigitalSatD", this.canalDigitalChannels, out this.canalDigitalFileContent, this.dvbcFrequency); + ReadDvbctChannels(tempDir, "map-DigitalPlusD", this.digitalPlusChannels, out this.digitalPlusFileContent, this.dvbcFrequency); + ReadSatellites(tempDir); + ReadTransponder(tempDir, "UserTransponderDataBase.dat"); // read user data first so it has priority over overridden default transponsers + ReadTransponder(tempDir, "TransponderDataBase.dat"); + ReadDvbsChannels(tempDir, "map-SateD", this.dvbsChannels, out this.dvbsFileContent, c.dvbsChannelLength); + ReadDvbsChannels(tempDir, "map-CyfraPlusD", this.cyfraPlusChannels, out this.cyfraPlusFileContent, c.cyfraPlusChannelSize); + ReadAstraHdPlusChannels(tempDir); - ReadAnalogFineTuning(zip); - ReadAnalogChannels(zip, "map-AirA", this.avbtChannels, out this.avbtFileContent, this.avbtFrequency); - ReadAnalogChannels(zip, "map-CableA", this.avbcChannels, out this.avbcFileContent, this.avbcFrequency); - ReadAnalogChannels(zip, "map-AirCableMixedA", this.avbxChannels, out this.avbxFileContent, this.avbcFrequency); - ReadDvbTransponderFrequenciesFromPtc(zip, "PTCAIR", this.dvbtFrequency); - ReadDvbServiceProviders(zip); - ReadDvbctChannels(zip, "map-AirD", this.dvbtChannels, out this.dvbtFileContent, this.dvbtFrequency); - ReadDvbTransponderFrequenciesFromPtc(zip, "PTCCABLE", this.dvbcFrequency); - ReadDvbctChannels(zip, "map-CableD", this.dvbcChannels, out this.dvbcFileContent, this.dvbcFrequency); - ReadDvbctChannels(zip, "map-AirCableMixedD", this.dvbxChannels, out this.dvbxFileContent, this.dvbcFrequency); - ReadDvbctChannels(zip, "map-CablePrime_D", this.primeChannels, out this.primeFileContent, this.dvbcFrequency); - ReadDvbctChannels(zip, "map-FreesatD", this.freesatChannels, out this.freesatFileContent, this.dvbcFrequency); - ReadDvbctChannels(zip, "map-TivusatD", this.tivusatChannels, out this.tivusatFileContent, this.dvbcFrequency); - ReadDvbctChannels(zip, "map-CanalDigitalSatD", this.canalDigitalChannels, out this.canalDigitalFileContent, this.dvbcFrequency); - ReadDvbctChannels(zip, "map-DigitalPlusD", this.digitalPlusChannels, out this.digitalPlusFileContent, this.dvbcFrequency); - ReadSatellites(zip); - ReadTransponder(zip, "UserTransponderDataBase.dat"); // read user data first so it has priority over overridden default transponsers - ReadTransponder(zip, "TransponderDataBase.dat"); - ReadDvbsChannels(zip, "map-SateD", this.dvbsChannels, out this.dvbsFileContent, c.dvbsChannelLength); - ReadDvbsChannels(zip, "map-CyfraPlusD", this.cyfraPlusChannels, out this.cyfraPlusFileContent, c.cyfraPlusChannelSize); - ReadAstraHdPlusChannels(zip); - } foreach (var list in this.DataRoot.ChannelLists) { @@ -148,11 +145,11 @@ namespace ChanSort.Loader.Samsung #endregion #region DetectModelConstants() - internal void DetectModelConstants(ZipFile zip) + internal void DetectModelConstants(string tempDir) { if (DetectModelFromFileName()) return; - if (DetectModelFromCloneInfoFile(zip)) return; - if (DetectModelFromContentFileLengths(zip)) return; + if (DetectModelFromCloneInfoFile(tempDir)) return; + if (DetectModelFromContentFileLengths(tempDir)) return; throw new FileLoadException("Unable to determine TV model from file content or name"); } #endregion @@ -187,9 +184,9 @@ namespace ChanSort.Loader.Samsung #endregion #region DetectModelFromCloneInfoFile() - private bool DetectModelFromCloneInfoFile(ZipFile zip) + private bool DetectModelFromCloneInfoFile(string tempDir) { - byte[] cloneInfo = ReadFileContent(zip, "CloneInfo"); + byte[] cloneInfo = ReadFileContent(tempDir, "CloneInfo"); if (cloneInfo == null) { this.c = this.modelConstants["Series:B"]; @@ -213,7 +210,7 @@ namespace ChanSort.Loader.Samsung #endregion #region DetectModelFromContentFileLengths() - private bool DetectModelFromContentFileLengths(ZipFile zip) + private bool DetectModelFromContentFileLengths(string zip) { string[] candidates = { DetectModelFromAirAOrCableA(zip), @@ -267,69 +264,84 @@ namespace ChanSort.Loader.Samsung #endregion - #region DetectModelFromAirAOrCableA() - private string DetectModelFromAirAOrCableA(ZipFile zip) + #region GetFileInfo() + private FileInfo GetFileInfo(string zipFolder, params string[] fileNames) { - var entry = zip.GetEntry("map-AirA") ?? zip.GetEntry("map-CableA"); - if (entry == null) + foreach (var fileName in fileNames) + { + var path = Path.Combine(zipFolder, fileName); + var info = new FileInfo(path); + if (info.Exists) + return info; + } + + return null; + } + #endregion + + #region DetectModelFromAirAOrCableA() + private string DetectModelFromAirAOrCableA(string zip) + { + var info = GetFileInfo(zip, "map-AirA", "map-CableA"); + if (info == null) return null; var candidates = ""; - if (entry.Size % 28000 == 0) + if (info.Length % 28000 == 0) candidates += "B"; - if (entry.Size % 40000 == 0) + if (info.Length % 40000 == 0) candidates += "C"; - if (entry.Size % 64000 == 0) + if (info.Length % 64000 == 0) candidates += "DE"; return candidates; } #endregion #region DetectModelFromAirDOrCableD() - private string DetectModelFromAirDOrCableD(ZipFile zip) + private string DetectModelFromAirDOrCableD(string zip) { - var entry = zip.GetEntry("map-AirD") ?? zip.GetEntry("map-CableD") ?? zip.GetEntry("map-CablePrime_D") ?? zip.GetEntry("map-FreesatD") - ?? zip.GetEntry("map-TivusatD") ?? zip.GetEntry("map-CanalDigitalSatD") ?? zip.GetEntry("map-DigitalPlusD"); + var entry = GetFileInfo(zip, "map-AirD", "map-CableD", "map-CablePrime_D", "map-FreesatD", + "map-TivusatD", "map-CanalDigitalSatD", "map-DigitalPlusD"); if (entry == null) return null; var candidates = ""; - if (entry.Size % 248 == 0) + if (entry.Length % 248 == 0) candidates += "B"; - if (entry.Size % 292 == 0) + if (entry.Length % 292 == 0) candidates += "C"; - if (entry.Size % 320 == 0) + if (entry.Length % 320 == 0) candidates += "DE"; return candidates; } #endregion #region DetectModelFromSateD() - private string DetectModelFromSateD(ZipFile zip) + private string DetectModelFromSateD(string zip) { - var entry = zip.GetEntry("map-SateD"); + var entry = this.GetFileInfo(zip, "map-SateD"); if (entry == null) return null; var candidates = ""; - if (entry.Size % 144 == 0) + if (entry.Length % 144 == 0) candidates += "BC"; - if (entry.Size % 172 == 0) + if (entry.Length % 172 == 0) candidates += "D"; - if (entry.Size % 168 == 0) + if (entry.Length % 168 == 0) candidates += "E"; return candidates; } #endregion #region DetectModelFromTranspoderDatabase() - private string DetectModelFromTranspoderDatabase(ZipFile zip) + private string DetectModelFromTranspoderDatabase(string zip) { - var entry = zip.GetEntry("TransponderDatabase.dat"); + var entry = GetFileInfo(zip, "TransponderDatabase.dat"); if (entry == null) return null; - var size = entry.Size - 4; + var size = entry.Length - 4; var candidates = ""; if (size%49 == 0) candidates += "B"; @@ -340,13 +352,13 @@ namespace ChanSort.Loader.Samsung #endregion #region DetectModelFromAstraHdPlusD() - private string DetectModelFromAstraHdPlusD(ZipFile zip) + private string DetectModelFromAstraHdPlusD(string zip) { - var entry = zip.GetEntry("map-AstraHDPlusD"); + var entry = GetFileInfo(zip, "map-AstraHDPlusD"); if (entry == null) return null; - var size = entry.Size; + var size = entry.Length; string candidates = null; if (size % 212 == 0) candidates += "DE"; @@ -356,7 +368,7 @@ namespace ChanSort.Loader.Samsung #region ReadAnalogFineTuning() - private void ReadAnalogFineTuning(ZipFile zip) + private void ReadAnalogFineTuning(string zip) { int entrySize = c.avbtFineTuneLength; if (entrySize == 0) @@ -382,7 +394,7 @@ namespace ChanSort.Loader.Samsung #endregion #region ReadAnalogChannels() - private void ReadAnalogChannels(ZipFile zip, string fileName, ChannelList list, out byte[] data, Dictionary freq) + private void ReadAnalogChannels(string zip, string fileName, ChannelList list, out byte[] data, Dictionary freq) { data = null; int entrySize = c.avbtChannelLength; @@ -421,7 +433,7 @@ namespace ChanSort.Loader.Samsung #region ReadDvbTransponderFrequenciesFromPtc() - private void ReadDvbTransponderFrequenciesFromPtc(ZipFile zip, string file, IDictionary table) + private void ReadDvbTransponderFrequenciesFromPtc(string zip, string file, IDictionary table) { byte[] data = ReadFileContent(zip, file); if (data == null) @@ -441,7 +453,7 @@ namespace ChanSort.Loader.Samsung #endregion #region ReadDvbServiceProviders() - private void ReadDvbServiceProviders(ZipFile zip) + private void ReadDvbServiceProviders(string zip) { this.serviceProviderNames = new Dictionary(); var data = ReadFileContent(zip, "ServiceProviders"); @@ -466,7 +478,7 @@ namespace ChanSort.Loader.Samsung #endregion #region ReadDvbctChannels() - private void ReadDvbctChannels(ZipFile zip, string fileName, ChannelList list, out byte[] data, Dictionary frequency) + private void ReadDvbctChannels(string zip, string fileName, ChannelList list, out byte[] data, Dictionary frequency) { data = null; int entrySize = c.dvbtChannelLength; @@ -486,7 +498,7 @@ namespace ChanSort.Loader.Samsung for (int slotIndex = 0; slotIndex < count; slotIndex++) { DigitalChannel ci = new DigitalChannel(slotIndex, source, rawChannel, frequency, c.SortedFavorites, this.serviceProviderNames); - if (ci.InUse && !ci.IsDeleted && ci.OldProgramNr > 0) + if (ci.InUse) this.DataRoot.AddChannel(list, ci); rawChannel.BaseOffset += entrySize; @@ -496,7 +508,7 @@ namespace ChanSort.Loader.Samsung #region ReadSatellites() - private void ReadSatellites(ZipFile zip) + private void ReadSatellites(string zip) { byte[] data = ReadFileContent(zip, "SatDataBase.dat"); if (data == null || data.Length < 4) @@ -527,7 +539,7 @@ namespace ChanSort.Loader.Samsung #region ReadTransponder() - private void ReadTransponder(ZipFile zip, string fileName) + private void ReadTransponder(string zip, string fileName) { byte[] data = ReadFileContent(zip, fileName); if (data == null) @@ -562,7 +574,7 @@ namespace ChanSort.Loader.Samsung #endregion #region ReadDvbsChannels() - private void ReadDvbsChannels(ZipFile zip, string filename, ChannelList channels, out byte[] fileContent, int entrySize) + private void ReadDvbsChannels(string zip, string filename, ChannelList channels, out byte[] fileContent, int entrySize) { fileContent = ReadFileContent(zip, filename); if (fileContent == null) @@ -585,7 +597,7 @@ namespace ChanSort.Loader.Samsung #endregion #region ReadAstraHdPlusChannels() - private void ReadAstraHdPlusChannels(ZipFile zip) + private void ReadAstraHdPlusChannels(string zip) { this.hdplusFileContent = ReadFileContent(zip, "map-AstraHDPlusD"); if (hdplusFileContent == null || c.hdplusChannelLength == 0) @@ -608,64 +620,46 @@ namespace ChanSort.Loader.Samsung #region ReadFileContent() - private static byte[] ReadFileContent(ZipFile zip, string fileName) + private static byte[] ReadFileContent(string tempDir, string fileName) { - var entry = zip.GetEntry(fileName); - if (entry == null) - return null; - byte[] data = new byte[entry.Size]; - using (var stream = zip.GetInputStream(entry)) - { - stream.Read(data, 0, data.Length); - } - return data; + var path = Path.Combine(tempDir, fileName); + return File.Exists(path) ? File.ReadAllBytes(path) : null; } #endregion #region Save() public override void Save(string tvOutputFile) { - if (tvOutputFile != this.FileName) - { - File.Copy(this.FileName, tvOutputFile, true); - this.FileName = tvOutputFile; - } - using (ZipFile zip = new ZipFile(tvOutputFile)) - { - zip.BeginUpdate(); - this.SaveChannels(zip, "map-AirA", this.avbtChannels, this.avbtFileContent); - this.SaveChannels(zip, "map-CableA", this.avbcChannels, this.avbcFileContent); - this.SaveChannels(zip, "map-AirCableMixedA", this.avbxChannels, this.avbxFileContent); - this.SaveChannels(zip, "map-AirD", this.dvbtChannels, this.dvbtFileContent); - this.SaveChannels(zip, "map-CableD", this.dvbcChannels, this.dvbcFileContent); - this.SaveChannels(zip, "map-AirCableMixedD", this.dvbxChannels, this.dvbxFileContent); - this.SaveChannels(zip, "map-SateD", this.dvbsChannels, this.dvbsFileContent); - this.SaveChannels(zip, "map-AstraHDPlusD", this.hdplusChannels, this.hdplusFileContent); - this.SaveChannels(zip, "map-CablePrime_D", this.primeChannels, this.primeFileContent); - this.SaveChannels(zip, "map-FreesatD", this.freesatChannels, this.freesatFileContent); - this.SaveChannels(zip, "map-TivusatD", this.tivusatChannels, this.tivusatFileContent); - this.SaveChannels(zip, "map-CanalDigitalSatD", this.canalDigitalChannels, this.canalDigitalFileContent); - this.SaveChannels(zip, "map-DigitalPlusD", this.digitalPlusChannels, this.digitalPlusFileContent); - this.SaveChannels(zip, "map-CyfraPlusD", this.cyfraPlusChannels, this.cyfraPlusFileContent); - zip.CommitUpdate(); - } + string zip = this.FileName + ".tmp"; + this.SaveChannels(zip, "map-AirA", this.avbtChannels, this.avbtFileContent); + this.SaveChannels(zip, "map-CableA", this.avbcChannels, this.avbcFileContent); + this.SaveChannels(zip, "map-AirCableMixedA", this.avbxChannels, this.avbxFileContent); + this.SaveChannels(zip, "map-AirD", this.dvbtChannels, this.dvbtFileContent); + this.SaveChannels(zip, "map-CableD", this.dvbcChannels, this.dvbcFileContent); + this.SaveChannels(zip, "map-AirCableMixedD", this.dvbxChannels, this.dvbxFileContent); + this.SaveChannels(zip, "map-SateD", this.dvbsChannels, this.dvbsFileContent); + this.SaveChannels(zip, "map-AstraHDPlusD", this.hdplusChannels, this.hdplusFileContent); + this.SaveChannels(zip, "map-CablePrime_D", this.primeChannels, this.primeFileContent); + this.SaveChannels(zip, "map-FreesatD", this.freesatChannels, this.freesatFileContent); + this.SaveChannels(zip, "map-TivusatD", this.tivusatChannels, this.tivusatFileContent); + this.SaveChannels(zip, "map-CanalDigitalSatD", this.canalDigitalChannels, this.canalDigitalFileContent); + this.SaveChannels(zip, "map-DigitalPlusD", this.digitalPlusChannels, this.digitalPlusFileContent); + this.SaveChannels(zip, "map-CyfraPlusD", this.cyfraPlusChannels, this.cyfraPlusFileContent); + this.ZipToOutputFile(tvOutputFile); } #endregion #region SaveChannels() - private void SaveChannels(ZipFile zip, string fileName, ChannelList channels, byte[] fileContent) + private void SaveChannels(string zip, string fileName, ChannelList channels, byte[] fileContent) { if (fileContent == null) return; - zip.Delete(fileName); - string tempFilePath = Path.GetTempFileName(); + string tempFilePath = Path.Combine(zip, fileName); using (var stream = new FileStream(tempFilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite)) { this.WriteChannels(channels, fileContent, stream); } - - zip.Add(tempFilePath, fileName); } #endregion diff --git a/source/ChanSort.Loader.SamsungJ/ChanSort.Loader.SamsungJ.csproj b/source/ChanSort.Loader.SamsungJ/ChanSort.Loader.SamsungJ.csproj index bad2901..0c283b8 100644 --- a/source/ChanSort.Loader.SamsungJ/ChanSort.Loader.SamsungJ.csproj +++ b/source/ChanSort.Loader.SamsungJ/ChanSort.Loader.SamsungJ.csproj @@ -9,9 +9,10 @@ Properties ChanSort.Loader.SamsungJ ChanSort.Loader.SamsungJ - v4.0 + v4.6 512 - Client + + true @@ -21,6 +22,7 @@ DEBUG;TRACE prompt 4 + false pdbonly @@ -29,6 +31,7 @@ TRACE prompt 4 + false true @@ -38,26 +41,25 @@ x86 prompt MinimumRecommendedRules.ruleset + false - bin\x86\Release\ + ..\Release\ TRACE true pdbonly x86 prompt MinimumRecommendedRules.ruleset + false - - ..\DLL\ICSharpCode.SharpZipLib.dll - ..\DLL\System.Data.SQLite.dll - + diff --git a/source/ChanSort.Loader.SamsungJ/DbSerializer.cs b/source/ChanSort.Loader.SamsungJ/DbSerializer.cs index 54b0fa7..7e7dca5 100644 --- a/source/ChanSort.Loader.SamsungJ/DbSerializer.cs +++ b/source/ChanSort.Loader.SamsungJ/DbSerializer.cs @@ -3,15 +3,14 @@ using System.Collections.Generic; using System.Data; using System.Data.SQLite; using System.IO; +using System.Linq; using System.Text; -using System.Windows.Forms; using ChanSort.Api; -using ICSharpCode.SharpZipLib.Zip; namespace ChanSort.Loader.SamsungJ { /// - /// Loader for Samsung J/K/M/Q/N/... series .zip files + /// Loader for Samsung J/K/M/N/R/Q series .zip files (2015 - 2019+) /// class DbSerializer : SerializerBase { @@ -27,124 +26,79 @@ namespace ChanSort.Loader.SamsungJ DepencencyChecker.AssertVc2010RedistPackageX86Installed(); this.Features.ChannelNameEdit = ChannelNameEditMode.All; - this.Features.CanDeleteChannels = true; - this.DataRoot.SupportedFavorites = Favorites.A | Favorites.B | Favorites.C | Favorites.D | Favorites.E; - this.DataRoot.SortedFavorites = true; - this.DataRoot.AllowGapsInFavNumbers = false; - this.DataRoot.ShowDeletedChannels = false; + this.Features.DeleteMode = DeleteMode.Physically; + this.Features.SupportedFavorites = Favorites.A | Favorites.B | Favorites.C | Favorites.D | Favorites.E; + this.Features.SortedFavorites = true; + this.Features.AllowGapsInFavNumbers = false; } #endregion - #region DisplayName - public override string DisplayName => "Samsung .zip Loader"; - - #endregion - #region Load() public override void Load() - { - this.UnzipDataFile(); - if (File.Exists(tempDir + "\\sat")) - { - try - { - using (var conn = new SQLiteConnection("Data Source=" + tempDir + "\\sat")) - { - conn.Open(); - this.ReadSatDatabase(conn); - } - } - catch { } - } - - var files = Directory.GetFiles(tempDir, "*."); - if (files.Length == 0) - throw new FileLoadException("The Samsung .zip channel list archive does not contain any supported files."); - - foreach (var filePath in files) - { - var filename = Path.GetFileName(filePath) ?? ""; - if (filename.StartsWith("vconf_")) - continue; - try - { - using (var conn = new SQLiteConnection("Data Source=" + filePath)) - { - FileType type; - conn.Open(); - using (var cmd = conn.CreateCommand()) - { - this.RepairCorruptedDatabaseImage(cmd); - type = this.DetectFileType(cmd); - } - - switch (type) - { - case FileType.SatDb: break; - case FileType.ChannelDbAnalog: - ReadChannelDatabase(conn, filePath, false); - break; - case FileType.ChannelDbDvb: - ReadChannelDatabase(conn, filePath, true); - break; - } - } - } - catch - { - } - } - } - #endregion - - #region UnzipDataFile() - private void UnzipDataFile() - { - this.tempDir = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()) + "\\"; - Directory.CreateDirectory(tempDir); - Application.ApplicationExit += this.CleanTempFolder; - - using (ZipFile zip = new ZipFile(this.FileName)) - { - foreach (ZipEntry entry in zip) - { - // only expand files from the root folder to avoid pit-falls with incorrectly rezipped lists - // that contain the data files in a subfolder - if (Path.GetDirectoryName(entry.Name) == "") - this.Expand(zip, entry.Name); - } - } - } - #endregion - - #region CleanTempFolder() - private void CleanTempFolder(object sender, EventArgs e) { try { - foreach(var file in Directory.GetFiles(this.tempDir)) - File.Delete(file); - Directory.Delete(this.tempDir); + this.tempDir = this.UnzipFileToTempFolder(); + if (File.Exists(tempDir + "\\sat")) + { + try + { + using (var conn = new SQLiteConnection("Data Source=" + tempDir + "\\sat")) + { + conn.Open(); + this.ReadSatDatabase(conn); + } + } + catch + { + } + } + + var files = Directory.GetFiles(tempDir, "*."); + if (files.Length == 0) + throw new FileLoadException("The Samsung .zip channel list archive does not contain any supported files."); + + foreach (var filePath in files) + { + var filename = Path.GetFileName(filePath) ?? ""; + if (filename.StartsWith("vconf_")) + continue; + try + { + using (var conn = new SQLiteConnection("Data Source=" + filePath)) + { + FileType type; + conn.Open(); + using (var cmd = conn.CreateCommand()) + { + this.RepairCorruptedDatabaseImage(cmd); + type = this.DetectFileType(cmd); + } + + switch (type) + { + case FileType.SatDb: break; + case FileType.ChannelDbAnalog: + ReadChannelDatabase(conn, filePath, false); + break; + case FileType.ChannelDbDvb: + ReadChannelDatabase(conn, filePath, true); + break; + } + } + } + catch + { + } + } } - catch { } - } - #endregion - - #region Expand() - private void Expand(ZipFile zip, string path) - { - var entry = zip.GetEntry(path); - if (entry == null) - throw new FileLoadException("File not found inside .zip: " + path); - - byte[] buffer = new byte[65536]; - using (var input = zip.GetInputStream(entry)) - using (var output = new FileStream(this.tempDir + Path.GetFileName(path), FileMode.Create)) + finally { - int len; - while ((len = input.Read(buffer, 0, buffer.Length)) != 0) - output.Write(buffer, 0, len); + // force closing the file and releasing the locks + SQLiteConnection.ClearAllPools(); + GC.Collect(); + GC.WaitForPendingFinalizers(); } } #endregion @@ -296,11 +250,8 @@ namespace ChanSort.Loader.SamsungJ // Note that we can have channels from multiple satellites in the same list, so this is a loop variable now var sat = tp?.Satellite; var channel = new DbChannel(r, fields, this.DataRoot, providers, sat, tp); - //if (!channel.IsDeleted) - { - this.DataRoot.AddChannel(channelList, channel); - this.channelById.Add(channel.RecordIndex, channel); - } + this.DataRoot.AddChannel(channelList, channel); + this.channelById.Add(channel.RecordIndex, channel); } } @@ -404,28 +355,18 @@ namespace ChanSort.Loader.SamsungJ #region Save() public override void Save(string tvOutputFile) { - if (tvOutputFile != this.FileName) + foreach (var channelList in this.DataRoot.ChannelLists) { - File.Copy(this.FileName, tvOutputFile); - this.FileName = tvOutputFile; + var dbPath = this.dbPathByChannelList[channelList]; + SaveChannelList(channelList, dbPath); } - using (var zip = new ZipFile(this.FileName)) - { - zip.BeginUpdate(); + // force closing the file and releasing the locks + SQLiteConnection.ClearAllPools(); + GC.Collect(); + GC.WaitForPendingFinalizers(); - foreach (var channelList in this.DataRoot.ChannelLists) - { - var dbPath = this.dbPathByChannelList[channelList]; - SaveChannelList(channelList, dbPath); - - var entryName = Path.GetFileName(dbPath); - zip.Delete(entryName); - zip.Add(dbPath, entryName); - } - - zip.CommitUpdate(); - } + this.ZipToOutputFile(tvOutputFile); } #endregion @@ -496,6 +437,7 @@ namespace ChanSort.Loader.SamsungJ cmd.Prepare(); return cmd; } + private static SQLiteCommand PrepareUpdateFavCommand(SQLiteConnection conn) { var cmd = conn.CreateCommand(); @@ -523,17 +465,18 @@ namespace ChanSort.Loader.SamsungJ ChannelList channelList, bool analog = false) { - foreach (ChannelInfo channelInfo in channelList.Channels) + foreach (ChannelInfo channelInfo in channelList.Channels.ToList()) { var channel = channelInfo as DbChannel; if (channel == null) // ignore reference list proxy channels continue; - if (channel.NewProgramNr < 0) + if (channel.IsDeleted) { // delete channel from all tables that have a reference to srvId cmdDeleteSrv.Parameters["@id"].Value = channel.RecordIndex; cmdDeleteSrv.ExecuteNonQuery(); + channelList.Channels.Remove(channelInfo); continue; } diff --git a/source/ChanSort.Loader.SilvaSchneider/ChanSort.Loader.SilvaSchneider.csproj b/source/ChanSort.Loader.SilvaSchneider/ChanSort.Loader.SilvaSchneider.csproj index e18f301..fead867 100644 --- a/source/ChanSort.Loader.SilvaSchneider/ChanSort.Loader.SilvaSchneider.csproj +++ b/source/ChanSort.Loader.SilvaSchneider/ChanSort.Loader.SilvaSchneider.csproj @@ -9,9 +9,10 @@ Properties ChanSort.Loader.SilvaSchneider ChanSort.Loader.SilvaSchneider - v4.0 + v4.6 512 - Client + + true @@ -43,7 +44,7 @@ false - bin\x86\Release\ + ..\Release\ TRACE true pdbonly diff --git a/source/ChanSort.Loader.SilvaSchneider/Serializer.cs b/source/ChanSort.Loader.SilvaSchneider/Serializer.cs index 740d305..7080c53 100644 --- a/source/ChanSort.Loader.SilvaSchneider/Serializer.cs +++ b/source/ChanSort.Loader.SilvaSchneider/Serializer.cs @@ -16,8 +16,9 @@ namespace ChanSort.Loader.SilvaSchneider public Serializer(string inputFile) : base(inputFile) { this.Features.ChannelNameEdit = ChannelNameEditMode.None; - this.DataRoot.SortedFavorites = false; - this.DataRoot.SupportedFavorites = 0; + this.Features.DeleteMode = DeleteMode.Physically; + this.Features.SortedFavorites = false; + this.Features.SupportedFavorites = 0; this.DataRoot.AddChannelList(this.allChannels); @@ -37,8 +38,6 @@ namespace ChanSort.Loader.SilvaSchneider #endregion - public override string DisplayName => "Silva Schneider *.sdx Loader"; - #region Load() public override void Load() @@ -77,7 +76,9 @@ namespace ChanSort.Loader.SilvaSchneider foreach (var channel in this.allChannels.GetChannelsByNewOrder()) { // when a reference list was applied, the list may contain proxy entries for deleted channels, which must be ignored - if (channel is Channels realChannel && channel.NewProgramNr >= 0) + if (channel.IsProxy || channel.IsDeleted) + continue; + if (channel is Channels realChannel) file.Write(this.content, realChannel.FileOffset, realChannel.Length + 1); } } diff --git a/source/ChanSort.Loader.Sony/ChanSort.Loader.Sony.csproj b/source/ChanSort.Loader.Sony/ChanSort.Loader.Sony.csproj index 7107014..12e079d 100644 --- a/source/ChanSort.Loader.Sony/ChanSort.Loader.Sony.csproj +++ b/source/ChanSort.Loader.Sony/ChanSort.Loader.Sony.csproj @@ -9,9 +9,10 @@ Properties ChanSort.Loader.Sony ChanSort.Loader.Sony - v4.0 + v4.6 512 true + true @@ -21,6 +22,7 @@ DEBUG;TRACE prompt 4 + false pdbonly @@ -29,24 +31,27 @@ TRACE prompt 4 + false true - bin\x86\Debug\ + ..\Debug\ DEBUG;TRACE full x86 prompt MinimumRecommendedRules.ruleset + false - bin\x86\Release\ + ..\Release\ TRACE true pdbonly x86 prompt MinimumRecommendedRules.ruleset + false diff --git a/source/ChanSort.Loader.Sony/Serializer.cs b/source/ChanSort.Loader.Sony/Serializer.cs index 0cfc8d4..1530067 100644 --- a/source/ChanSort.Loader.Sony/Serializer.cs +++ b/source/ChanSort.Loader.Sony/Serializer.cs @@ -37,7 +37,7 @@ namespace ChanSort.Loader.Sony public Serializer(string inputFile) : base(inputFile) { this.Features.ChannelNameEdit = ChannelNameEditMode.All; - this.Features.CanDeleteChannels = true; + this.Features.DeleteMode = DeleteMode.FlagWithoutPrNr; // in Android/e-format, this will be changed to FlagWithPrNr this.DataRoot.AddChannelList(new ChannelList(SignalSource.DvbT | SignalSource.Tv, "DVB-T TV")); this.DataRoot.AddChannelList(new ChannelList(SignalSource.DvbT | SignalSource.Radio, "DVB-T Radio")); @@ -62,12 +62,6 @@ namespace ChanSort.Loader.Sony } #endregion - #region DisplayName - public override string DisplayName => "Sony sdb.xml loader"; - - #endregion - - #region Load() public override void Load() @@ -142,9 +136,7 @@ namespace ChanSort.Loader.Sony { this.format = "e" + formatNode.InnerText; this.isEFormat = true; - this.DataRoot.DeletedChannelsNeedNumbers = true; - foreach(var list in this.DataRoot.ChannelLists) - list.VisibleColumnFieldNames.Add("IsDeleted"); + this.Features.DeleteMode = DeleteMode.FlagWithPrNr; } if (SupportedFormatVersions.IndexOf(" " + this.format + " ", StringComparison.Ordinal) < 0) @@ -332,7 +324,7 @@ namespace ChanSort.Loader.Sony } chan.ServiceType = int.Parse(dvbData["ui1_sdt_service_type"][i]); - chan.SignalSource |= LookupData.Instance.IsRadioOrTv(chan.ServiceType); + chan.SignalSource |= LookupData.Instance.IsRadioOrTv(chan.ServiceType); // could also use information with 1=TV, 2=Radio, 3=Other CopyDataValues(serviceNode, svcData, i, chan.ServiceData); @@ -535,7 +527,7 @@ namespace ChanSort.Loader.Sony { var dvbt = this.DataRoot.GetChannelList(SignalSource.DvbT | SignalSource.Tv).Channels .Concat(this.DataRoot.GetChannelList(SignalSource.DvbT | SignalSource.Radio).Channels) - .Concat(this.DataRoot.GetChannelList(SignalSource.DvbT).Channels) + .Concat(this.DataRoot.GetChannelList(SignalSource.DvbT | SignalSource.Data).Channels) .ToList(); this.UpdateChannelList(dvbt, nodes); } @@ -544,14 +536,14 @@ namespace ChanSort.Loader.Sony { var dvbc = this.DataRoot.GetChannelList(SignalSource.DvbC | SignalSource.Tv).Channels .Concat(this.DataRoot.GetChannelList(SignalSource.DvbC | SignalSource.Radio).Channels) - .Concat(this.DataRoot.GetChannelList(SignalSource.DvbC).Channels) + .Concat(this.DataRoot.GetChannelList(SignalSource.DvbC | SignalSource.Data).Channels) .ToList(); this.UpdateChannelList(dvbc, nodes); } foreach (var list in this.DataRoot.ChannelLists) { - if ((list.SignalSource & SignalSource.DvbS) == SignalSource.DvbS && this.channeListNodes.TryGetValue(list.SignalSource, out nodes)) + if ((list.SignalSource & SignalSource.DvbS) == SignalSource.DvbS && this.channeListNodes.TryGetValue(list.SignalSource & ~SignalSource.MaskTvRadioData, out nodes)) this.UpdateChannelList(list.Channels, nodes); } diff --git a/source/ChanSort.Loader.Toshiba/ChanSort.Loader.Toshiba.csproj b/source/ChanSort.Loader.Toshiba/ChanSort.Loader.Toshiba.csproj index d694590..016b459 100644 --- a/source/ChanSort.Loader.Toshiba/ChanSort.Loader.Toshiba.csproj +++ b/source/ChanSort.Loader.Toshiba/ChanSort.Loader.Toshiba.csproj @@ -1,5 +1,5 @@  - + Debug AnyCPU @@ -10,7 +10,7 @@ Properties ChanSort.Loader.Toshiba ChanSort.Loader.Toshiba - v4.0 + v4.6 512 @@ -24,6 +24,7 @@ prompt 4 x86 + false pdbonly @@ -32,6 +33,7 @@ TRACE prompt 4 + false true @@ -42,9 +44,10 @@ prompt false false + false - bin\x86\Release\ + ..\Release\ TRACE true pdbonly @@ -52,22 +55,19 @@ prompt false false + false - - False - ..\DLL\ICSharpCode.SharpZipLib.dll - ..\DLL\System.Data.SQLite.dll + - diff --git a/source/ChanSort.Loader.Toshiba/DbChannel.cs b/source/ChanSort.Loader.Toshiba/DbChannel.cs index 9f78024..aa66e7d 100644 --- a/source/ChanSort.Loader.Toshiba/DbChannel.cs +++ b/source/ChanSort.Loader.Toshiba/DbChannel.cs @@ -133,7 +133,7 @@ namespace ChanSort.Loader.Toshiba #region UpdateRawData() public override void UpdateRawData() { - Bits &= ~(BITS_FavA | BITS_FavB | BITS_FavC | BITS_FavC | BITS_FavD | BITS_Locked); + Bits &= ~(BITS_FavA | BITS_FavB | BITS_FavC | BITS_FavD | BITS_Locked); if ((this.Favorites & Favorites.A) != 0) Bits |= BITS_FavA; if ((this.Favorites & Favorites.B) != 0) Bits |= BITS_FavB; if ((this.Favorites & Favorites.C) != 0) Bits |= BITS_FavC; diff --git a/source/ChanSort.Loader.Toshiba/DbSerializer.cs b/source/ChanSort.Loader.Toshiba/DbSerializer.cs index 977c4ca..797623e 100644 --- a/source/ChanSort.Loader.Toshiba/DbSerializer.cs +++ b/source/ChanSort.Loader.Toshiba/DbSerializer.cs @@ -1,19 +1,15 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Data; using System.Data.SQLite; -using System.IO; -using System.Windows.Forms; using ChanSort.Api; -using ICSharpCode.SharpZipLib.Zip; namespace ChanSort.Loader.Toshiba { class DbSerializer : SerializerBase { - private const string FILE_chmgt_db = "chmgt.db"; - private const string FILE_dvbSysData_db = "dvbSysData.db"; - private const string FILE_dvbMainData_db = "dvbMainData.db"; + private const string FILE_chmgt_db = "chmgt_type001\\chmgt.db"; + private const string FILE_dvbSysData_db = "dvb_type001\\dvbSysData.db"; + private const string FILE_dvbMainData_db = "dvb_type001\\dvbMainData.db"; private readonly ChannelList atvChannels = new ChannelList(SignalSource.AnalogCT, "Analog"); private readonly ChannelList dtvTvChannels = new ChannelList(SignalSource.DvbCT | SignalSource.Tv, "DTV"); @@ -30,6 +26,7 @@ namespace ChanSort.Loader.Toshiba DepencencyChecker.AssertVc2010RedistPackageX86Installed(); this.Features.ChannelNameEdit = ChannelNameEditMode.All; + this.Features.DeleteMode = DeleteMode.Physically; this.DataRoot.AddChannelList(this.atvChannels); this.DataRoot.AddChannelList(this.dtvTvChannels); @@ -39,15 +36,10 @@ namespace ChanSort.Loader.Toshiba } #endregion - #region DisplayName - public override string DisplayName { get { return "Toshiba *.db Loader"; } } - #endregion - - #region Load() public override void Load() { - this.UnzipDataFile(); + this.tempDir = this.UnzipFileToTempFolder() + "\\"; string sysDataConnString = "Data Source=" + tempDir + FILE_dvbSysData_db; using (var conn = new SQLiteConnection(sysDataConnString)) @@ -84,54 +76,7 @@ namespace ChanSort.Loader.Toshiba } } #endregion - - #region UnzipDataFile() - private void UnzipDataFile() - { - this.tempDir = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()) + "\\"; - Directory.CreateDirectory(tempDir); - Application.ApplicationExit += this.CleanTempFolder; - - using (ZipFile zip = new ZipFile(this.FileName)) - { - this.Expand(zip, "chmgt_type001/" + FILE_chmgt_db); - this.Expand(zip, "dvb_type001/" + FILE_dvbSysData_db); - this.Expand(zip, "dvb_type001/" + FILE_dvbMainData_db); - } - } - #endregion - - #region CleanTempFolder() - private void CleanTempFolder(object sender, EventArgs e) - { - try - { - foreach(var file in Directory.GetFiles(this.tempDir)) - File.Delete(file); - Directory.Delete(this.tempDir); - } - catch { } - } - #endregion - - #region Expand() - private void Expand(ZipFile zip, string path) - { - var entry = zip.GetEntry(path); - if (entry == null) - throw new FileLoadException("File not found inside .zip: " + path); - - byte[] buffer = new byte[65536]; - using (var input = zip.GetInputStream(entry)) - using (var output = new FileStream(this.tempDir + Path.GetFileName(path), FileMode.Create)) - { - int len; - while ((len = input.Read(buffer, 0, buffer.Length)) != 0) - output.Write(buffer, 0, len); - } - } - #endregion - + #region RepairCorruptedDatabaseImage() private void RepairCorruptedDatabaseImage(SQLiteCommand cmd) { @@ -291,37 +236,32 @@ namespace ChanSort.Loader.Toshiba #region Save() public override void Save(string tvOutputFile) { - if (tvOutputFile != this.FileName) - { - File.Copy(this.FileName, tvOutputFile); - this.FileName = tvOutputFile; - } - string channelConnString = "Data Source=" + this.tempDir + FILE_chmgt_db; using (var conn = new SQLiteConnection(channelConnString)) { conn.Open(); using (var cmd = conn.CreateCommand()) + using (var cmd2 = conn.CreateCommand()) { using (var trans = conn.BeginTransaction()) { - this.WriteChannels(cmd, "EuroATVChanList", this.atvChannels, true); - this.WriteChannels(cmd, "EuroDTVChanList", this.dtvTvChannels); - this.WriteChannels(cmd, "EuroDTVChanList", this.dtvRadioChannels); - this.WriteChannels(cmd, "EuroSATChanList", this.satTvChannels); - this.WriteChannels(cmd, "EuroSATChanList", this.satRadioChannels); + this.WriteChannels(cmd, cmd2, "EuroATVChanList", this.atvChannels, true); + this.WriteChannels(cmd, cmd2, "EuroDTVChanList", this.dtvTvChannels); + this.WriteChannels(cmd, cmd2, "EuroDTVChanList", this.dtvRadioChannels); + this.WriteChannels(cmd, cmd2, "EuroSATChanList", this.satTvChannels); + this.WriteChannels(cmd, cmd2, "EuroSATChanList", this.satRadioChannels); trans.Commit(); } this.RepairCorruptedDatabaseImage(cmd); } } - this.ZipFiles(); + this.ZipToOutputFile(tvOutputFile); } #endregion #region WriteChannels() - private void WriteChannels(SQLiteCommand cmd, string table, ChannelList channelList, bool analog=false) + private void WriteChannels(SQLiteCommand cmd, SQLiteCommand cmdDelete, string table, ChannelList channelList, bool analog=false) { string sql = "update " + table + " set channel_number=@nr "; if (!analog) @@ -332,30 +272,29 @@ namespace ChanSort.Loader.Toshiba cmd.Parameters.Add(new SQLiteParameter("@nr", DbType.Int32)); cmd.Parameters.Add(new SQLiteParameter("@Bits", DbType.Int32)); cmd.Prepare(); + + cmdDelete.CommandText = "delete from " + table + " where channel_handle=@id"; + cmdDelete.Parameters.Add(new SQLiteParameter("@id", DbType.Int32)); + foreach (ChannelInfo channelInfo in channelList.Channels) { var channel = channelInfo as DbChannel; if (channel == null) // ignore reference list proxy channels continue; - channel.UpdateRawData(); - cmd.Parameters["@id"].Value = channel.RecordIndex; - cmd.Parameters["@nr"].Value = channel.NewProgramNr; - cmd.Parameters["@Bits"].Value = channel.Bits; - cmd.ExecuteNonQuery(); - } - } - #endregion - #region ZipFiles() - private void ZipFiles() - { - const string entryName = "chmgt_type001/" + FILE_chmgt_db; - using (var zip = new ZipFile(this.FileName)) - { - zip.BeginUpdate(); - zip.Delete(entryName); - zip.Add(this.tempDir + "chmgt.db", entryName); - zip.CommitUpdate(); + if (channel.IsDeleted) + { + cmdDelete.Parameters["@id"].Value = channel.RecordIndex; + cmdDelete.ExecuteNonQuery(); + } + else + { + channel.UpdateRawData(); + cmd.Parameters["@id"].Value = channel.RecordIndex; + cmd.Parameters["@nr"].Value = channel.NewProgramNr; + cmd.Parameters["@Bits"].Value = channel.Bits; + cmd.ExecuteNonQuery(); + } } } #endregion diff --git a/source/ChanSort.Loader.VDR/ChanSort.Loader.VDR.csproj b/source/ChanSort.Loader.VDR/ChanSort.Loader.VDR.csproj index cd85362..5d5bf4d 100644 --- a/source/ChanSort.Loader.VDR/ChanSort.Loader.VDR.csproj +++ b/source/ChanSort.Loader.VDR/ChanSort.Loader.VDR.csproj @@ -1,5 +1,5 @@  - + Debug AnyCPU @@ -10,7 +10,7 @@ Properties ChanSort.Loader.VDR ChanSort.Loader.VDR - v4.0 + v4.6 512 @@ -23,6 +23,7 @@ DEBUG;TRACE prompt 4 + false pdbonly @@ -31,6 +32,7 @@ TRACE prompt 4 + false true @@ -40,14 +42,16 @@ x86 prompt false + false - bin\x86\Release\ + ..\Release\ TRACE true pdbonly x86 prompt + false diff --git a/source/ChanSort.Loader.VDR/Serializer.cs b/source/ChanSort.Loader.VDR/Serializer.cs index 17e0093..e0d9426 100644 --- a/source/ChanSort.Loader.VDR/Serializer.cs +++ b/source/ChanSort.Loader.VDR/Serializer.cs @@ -14,15 +14,14 @@ namespace ChanSort.Loader.VDR DepencencyChecker.AssertVc2010RedistPackageX86Installed(); this.Features.ChannelNameEdit = ChannelNameEditMode.None; - this.DataRoot.SortedFavorites = false; - //this.DataRoot.SupportedFavorites = new Favorites(); + this.Features.DeleteMode = DeleteMode.Physically; + this.Features.SortedFavorites = false; + //this.Features.SupportedFavorites = new Favorites(); this.DataRoot.AddChannelList(this.allChannels); } #endregion - public override string DisplayName { get { return "VDR channels .conf Loader"; } } - #region Load() public override void Load() { @@ -62,7 +61,7 @@ namespace ChanSort.Loader.VDR foreach (ChannelInfo channel in this.allChannels.GetChannelsByNewOrder()) { // when a reference list was applied, the list may contain proxy entries for deleted channels, which must be ignored - if (channel is Channels vdrChannel) + if (channel is Channels vdrChannel && !channel.IsDeleted) file.WriteLine(vdrChannel.confLine); } } diff --git a/source/ChanSort.sln b/source/ChanSort.sln index 68b89bd..046f91e 100644 --- a/source/ChanSort.sln +++ b/source/ChanSort.sln @@ -286,8 +286,8 @@ Global {D7BAFD55-50F5-46C3-A76B-2193BED5358F}.Release|Any CPU.Build.0 = Release|Any CPU {D7BAFD55-50F5-46C3-A76B-2193BED5358F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {D7BAFD55-50F5-46C3-A76B-2193BED5358F}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {D7BAFD55-50F5-46C3-A76B-2193BED5358F}.Release|x86.ActiveCfg = Release|Any CPU - {D7BAFD55-50F5-46C3-A76B-2193BED5358F}.Release|x86.Build.0 = Release|Any CPU + {D7BAFD55-50F5-46C3-A76B-2193BED5358F}.Release|x86.ActiveCfg = Release|x86 + {D7BAFD55-50F5-46C3-A76B-2193BED5358F}.Release|x86.Build.0 = Release|x86 {AA31A65D-9437-42AE-89C8-98C7392B450D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {AA31A65D-9437-42AE-89C8-98C7392B450D}.Debug|Any CPU.Build.0 = Debug|Any CPU {AA31A65D-9437-42AE-89C8-98C7392B450D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU @@ -298,8 +298,8 @@ Global {AA31A65D-9437-42AE-89C8-98C7392B450D}.Release|Any CPU.Build.0 = Release|Any CPU {AA31A65D-9437-42AE-89C8-98C7392B450D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {AA31A65D-9437-42AE-89C8-98C7392B450D}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {AA31A65D-9437-42AE-89C8-98C7392B450D}.Release|x86.ActiveCfg = Release|Any CPU - {AA31A65D-9437-42AE-89C8-98C7392B450D}.Release|x86.Build.0 = Release|Any CPU + {AA31A65D-9437-42AE-89C8-98C7392B450D}.Release|x86.ActiveCfg = Release|x86 + {AA31A65D-9437-42AE-89C8-98C7392B450D}.Release|x86.Build.0 = Release|x86 {D1E4454F-DB09-402D-AD87-1E3BD17266A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D1E4454F-DB09-402D-AD87-1E3BD17266A9}.Debug|Any CPU.Build.0 = Debug|Any CPU {D1E4454F-DB09-402D-AD87-1E3BD17266A9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU @@ -310,8 +310,8 @@ Global {D1E4454F-DB09-402D-AD87-1E3BD17266A9}.Release|Any CPU.Build.0 = Release|Any CPU {D1E4454F-DB09-402D-AD87-1E3BD17266A9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {D1E4454F-DB09-402D-AD87-1E3BD17266A9}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {D1E4454F-DB09-402D-AD87-1E3BD17266A9}.Release|x86.ActiveCfg = Release|Any CPU - {D1E4454F-DB09-402D-AD87-1E3BD17266A9}.Release|x86.Build.0 = Release|Any CPU + {D1E4454F-DB09-402D-AD87-1E3BD17266A9}.Release|x86.ActiveCfg = Release|x86 + {D1E4454F-DB09-402D-AD87-1E3BD17266A9}.Release|x86.Build.0 = Release|x86 {2717DB4C-7E94-4277-A880-FC2571096E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2717DB4C-7E94-4277-A880-FC2571096E74}.Debug|Any CPU.Build.0 = Debug|Any CPU {2717DB4C-7E94-4277-A880-FC2571096E74}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU @@ -322,8 +322,8 @@ Global {2717DB4C-7E94-4277-A880-FC2571096E74}.Release|Any CPU.Build.0 = Release|Any CPU {2717DB4C-7E94-4277-A880-FC2571096E74}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {2717DB4C-7E94-4277-A880-FC2571096E74}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {2717DB4C-7E94-4277-A880-FC2571096E74}.Release|x86.ActiveCfg = Release|Any CPU - {2717DB4C-7E94-4277-A880-FC2571096E74}.Release|x86.Build.0 = Release|Any CPU + {2717DB4C-7E94-4277-A880-FC2571096E74}.Release|x86.ActiveCfg = Release|x86 + {2717DB4C-7E94-4277-A880-FC2571096E74}.Release|x86.Build.0 = Release|x86 {8D592EB4-3BE2-4D99-8923-FA0794C729ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8D592EB4-3BE2-4D99-8923-FA0794C729ED}.Debug|Any CPU.Build.0 = Debug|Any CPU {8D592EB4-3BE2-4D99-8923-FA0794C729ED}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU @@ -334,8 +334,8 @@ Global {8D592EB4-3BE2-4D99-8923-FA0794C729ED}.Release|Any CPU.Build.0 = Release|Any CPU {8D592EB4-3BE2-4D99-8923-FA0794C729ED}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {8D592EB4-3BE2-4D99-8923-FA0794C729ED}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {8D592EB4-3BE2-4D99-8923-FA0794C729ED}.Release|x86.ActiveCfg = Release|Any CPU - {8D592EB4-3BE2-4D99-8923-FA0794C729ED}.Release|x86.Build.0 = Release|Any CPU + {8D592EB4-3BE2-4D99-8923-FA0794C729ED}.Release|x86.ActiveCfg = Release|x86 + {8D592EB4-3BE2-4D99-8923-FA0794C729ED}.Release|x86.Build.0 = Release|x86 {0A162099-DA92-426A-AB70-36F88F9E5DC1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0A162099-DA92-426A-AB70-36F88F9E5DC1}.Debug|Any CPU.Build.0 = Debug|Any CPU {0A162099-DA92-426A-AB70-36F88F9E5DC1}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU @@ -346,8 +346,8 @@ Global {0A162099-DA92-426A-AB70-36F88F9E5DC1}.Release|Any CPU.Build.0 = Release|Any CPU {0A162099-DA92-426A-AB70-36F88F9E5DC1}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {0A162099-DA92-426A-AB70-36F88F9E5DC1}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {0A162099-DA92-426A-AB70-36F88F9E5DC1}.Release|x86.ActiveCfg = Release|Any CPU - {0A162099-DA92-426A-AB70-36F88F9E5DC1}.Release|x86.Build.0 = Release|Any CPU + {0A162099-DA92-426A-AB70-36F88F9E5DC1}.Release|x86.ActiveCfg = Release|x86 + {0A162099-DA92-426A-AB70-36F88F9E5DC1}.Release|x86.Build.0 = Release|x86 {902EA731-EBB2-4B18-BE87-256C05277B3E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {902EA731-EBB2-4B18-BE87-256C05277B3E}.Debug|Any CPU.Build.0 = Debug|Any CPU {902EA731-EBB2-4B18-BE87-256C05277B3E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU @@ -358,8 +358,8 @@ Global {902EA731-EBB2-4B18-BE87-256C05277B3E}.Release|Any CPU.Build.0 = Release|Any CPU {902EA731-EBB2-4B18-BE87-256C05277B3E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {902EA731-EBB2-4B18-BE87-256C05277B3E}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {902EA731-EBB2-4B18-BE87-256C05277B3E}.Release|x86.ActiveCfg = Release|Any CPU - {902EA731-EBB2-4B18-BE87-256C05277B3E}.Release|x86.Build.0 = Release|Any CPU + {902EA731-EBB2-4B18-BE87-256C05277B3E}.Release|x86.ActiveCfg = Release|x86 + {902EA731-EBB2-4B18-BE87-256C05277B3E}.Release|x86.Build.0 = Release|x86 {C0528858-F32D-4C0C-8EC8-CEDB53C01402}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C0528858-F32D-4C0C-8EC8-CEDB53C01402}.Debug|Any CPU.Build.0 = Debug|Any CPU {C0528858-F32D-4C0C-8EC8-CEDB53C01402}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU @@ -370,8 +370,8 @@ Global {C0528858-F32D-4C0C-8EC8-CEDB53C01402}.Release|Any CPU.Build.0 = Release|Any CPU {C0528858-F32D-4C0C-8EC8-CEDB53C01402}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {C0528858-F32D-4C0C-8EC8-CEDB53C01402}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {C0528858-F32D-4C0C-8EC8-CEDB53C01402}.Release|x86.ActiveCfg = Release|Any CPU - {C0528858-F32D-4C0C-8EC8-CEDB53C01402}.Release|x86.Build.0 = Release|Any CPU + {C0528858-F32D-4C0C-8EC8-CEDB53C01402}.Release|x86.ActiveCfg = Release|x86 + {C0528858-F32D-4C0C-8EC8-CEDB53C01402}.Release|x86.Build.0 = Release|x86 {F732435A-0188-456C-8F06-7FBA1842FB35}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F732435A-0188-456C-8F06-7FBA1842FB35}.Debug|Any CPU.Build.0 = Debug|Any CPU {F732435A-0188-456C-8F06-7FBA1842FB35}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU @@ -382,8 +382,8 @@ Global {F732435A-0188-456C-8F06-7FBA1842FB35}.Release|Any CPU.Build.0 = Release|Any CPU {F732435A-0188-456C-8F06-7FBA1842FB35}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {F732435A-0188-456C-8F06-7FBA1842FB35}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {F732435A-0188-456C-8F06-7FBA1842FB35}.Release|x86.ActiveCfg = Release|Any CPU - {F732435A-0188-456C-8F06-7FBA1842FB35}.Release|x86.Build.0 = Release|Any CPU + {F732435A-0188-456C-8F06-7FBA1842FB35}.Release|x86.ActiveCfg = Release|x86 + {F732435A-0188-456C-8F06-7FBA1842FB35}.Release|x86.Build.0 = Release|x86 {D7B71F40-C941-4364-A25F-8D41B384507A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D7B71F40-C941-4364-A25F-8D41B384507A}.Debug|Any CPU.Build.0 = Debug|Any CPU {D7B71F40-C941-4364-A25F-8D41B384507A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU @@ -394,8 +394,8 @@ Global {D7B71F40-C941-4364-A25F-8D41B384507A}.Release|Any CPU.Build.0 = Release|Any CPU {D7B71F40-C941-4364-A25F-8D41B384507A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {D7B71F40-C941-4364-A25F-8D41B384507A}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {D7B71F40-C941-4364-A25F-8D41B384507A}.Release|x86.ActiveCfg = Release|Any CPU - {D7B71F40-C941-4364-A25F-8D41B384507A}.Release|x86.Build.0 = Release|Any CPU + {D7B71F40-C941-4364-A25F-8D41B384507A}.Release|x86.ActiveCfg = Release|x86 + {D7B71F40-C941-4364-A25F-8D41B384507A}.Release|x86.Build.0 = Release|x86 {AED060F0-495C-494C-89C2-7A96A0FA3762}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {AED060F0-495C-494C-89C2-7A96A0FA3762}.Debug|Any CPU.Build.0 = Debug|Any CPU {AED060F0-495C-494C-89C2-7A96A0FA3762}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU @@ -406,8 +406,8 @@ Global {AED060F0-495C-494C-89C2-7A96A0FA3762}.Release|Any CPU.Build.0 = Release|Any CPU {AED060F0-495C-494C-89C2-7A96A0FA3762}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {AED060F0-495C-494C-89C2-7A96A0FA3762}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {AED060F0-495C-494C-89C2-7A96A0FA3762}.Release|x86.ActiveCfg = Release|Any CPU - {AED060F0-495C-494C-89C2-7A96A0FA3762}.Release|x86.Build.0 = Release|Any CPU + {AED060F0-495C-494C-89C2-7A96A0FA3762}.Release|x86.ActiveCfg = Release|x86 + {AED060F0-495C-494C-89C2-7A96A0FA3762}.Release|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/source/ChanSort/AboutForm.resx b/source/ChanSort/AboutForm.resx index 9144e9a..977c285 100644 --- a/source/ChanSort/AboutForm.resx +++ b/source/ChanSort/AboutForm.resx @@ -117,8 +117,8 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + Vertical @@ -139,7 +139,7 @@ lblWebsite - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -170,7 +170,7 @@ lnkDownload - DevExpress.XtraEditors.HyperLinkEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.HyperLinkEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -194,7 +194,7 @@ gcPlugins - DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a horst@beham.biz @@ -215,7 +215,7 @@ lnkEmail - DevExpress.XtraEditors.HyperLinkEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.HyperLinkEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -223,7 +223,7 @@ 7 - + Vertical @@ -242,7 +242,7 @@ lblAuthor - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -250,7 +250,7 @@ 6 - + Vertical @@ -269,7 +269,7 @@ lblLicense - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -299,7 +299,7 @@ lnkLicense - DevExpress.XtraEditors.HyperLinkEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.HyperLinkEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -307,7 +307,7 @@ 4 - + Vertical @@ -326,7 +326,7 @@ lblCredits - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -350,7 +350,7 @@ txtCredits - DevExpress.XtraEditors.MemoEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.MemoEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -377,7 +377,7 @@ btnClose - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -401,7 +401,7 @@ txtAuthor - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -428,30 +428,30 @@ gvPlugins - DevExpress.XtraGrid.Views.Grid.GridView, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Views.Grid.GridView, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colPlugin - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colDisplayText - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colFileTypes - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a AboutForm - DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a \ No newline at end of file diff --git a/source/ChanSort/ActionBox.resx b/source/ChanSort/ActionBox.resx index 9f2fbde..85d1f5d 100644 --- a/source/ChanSort/ActionBox.resx +++ b/source/ChanSort/ActionBox.resx @@ -125,8 +125,8 @@ Tahoma, 9pt - - + + Vertical @@ -146,7 +146,7 @@ lblMessage - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -160,8 +160,8 @@ 32, 32 - - + + AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLlV0aWxzLnYxMi4yLCBWZXJzaW9uPTEyLjIu OC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEMAwAAAFFT @@ -459,12 +459,12 @@ imageCollection1 - DevExpress.Utils.ImageCollection, DevExpress.Utils.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.Utils.ImageCollection, DevExpress.Utils.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a ActionBoxDialog - DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a \ No newline at end of file diff --git a/source/ChanSort/ActionImages.resx b/source/ChanSort/ActionImages.resx index 2a4499b..30093c9 100644 --- a/source/ChanSort/ActionImages.resx +++ b/source/ChanSort/ActionImages.resx @@ -120,8 +120,8 @@ 349, 503 - - + + AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLlV0aWxzLnYxNS4yLCBWZXJzaW9uPTE1LjIu NS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAChE diff --git a/source/ChanSort/ChanSort.csproj b/source/ChanSort/ChanSort.csproj index d1440b0..91b0544 100644 --- a/source/ChanSort/ChanSort.csproj +++ b/source/ChanSort/ChanSort.csproj @@ -10,7 +10,7 @@ Properties ChanSort.Ui ChanSort - v4.5.2 + v4.6 512 @@ -30,7 +30,7 @@ x86 pdbonly true - bin\Release\ + ..\Release\ TRACE prompt 4 @@ -62,44 +62,44 @@ app.ico - + False - - + + False - + False - + False - - + + False - - + + False - + False - + False - + False - - - - - - - - + + + + + + + + diff --git a/source/ChanSort/CharsetForm.resx b/source/ChanSort/CharsetForm.resx index 1d9782e..589a418 100644 --- a/source/ChanSort/CharsetForm.resx +++ b/source/ChanSort/CharsetForm.resx @@ -138,13 +138,13 @@ btnCancel - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a 433, 446 - DevExpress.XtraGrid.Views.Grid.GridView, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Views.Grid.GridView, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a CharsetForm @@ -178,12 +178,12 @@ 0 - - + + Center - - + + None @@ -196,7 +196,7 @@ Top, Right - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a Fill @@ -211,10 +211,10 @@ $this - DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colName @@ -256,7 +256,7 @@ gcCharset - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a Default character set for my country @@ -271,7 +271,7 @@ 353, 6 - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a 75, 23 @@ -331,7 +331,7 @@ btnOk - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a 433, 483 @@ -340,17 +340,17 @@ 142 - DevExpress.XtraEditors.PanelControl, DevExpress.Utils.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.PanelControl, DevExpress.Utils.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a True - - + + Default - DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a True diff --git a/source/ChanSort/GlobalImageCollection.resx b/source/ChanSort/GlobalImageCollection.resx index 8e34927..26e0812 100644 --- a/source/ChanSort/GlobalImageCollection.resx +++ b/source/ChanSort/GlobalImageCollection.resx @@ -120,8 +120,8 @@ 17, 17 - - + + AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLlV0aWxzLnYxOS4xLCBWZXJzaW9uPTE5LjEu NS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEMAwAAAFFT diff --git a/source/ChanSort/MainForm.Designer.cs b/source/ChanSort/MainForm.Designer.cs index 5abfd86..75f4bac 100644 --- a/source/ChanSort/MainForm.Designer.cs +++ b/source/ChanSort/MainForm.Designer.cs @@ -128,10 +128,6 @@ this.miAddChannel = new DevExpress.XtraBars.BarButtonItem(); this.miRemove = new DevExpress.XtraBars.BarButtonItem(); this.miRenameChannel = new DevExpress.XtraBars.BarButtonItem(); - this.miSort = new DevExpress.XtraBars.BarButtonItem(); - this.miRenum = new DevExpress.XtraBars.BarButtonItem(); - this.miRenumFavByPrNr = new DevExpress.XtraBars.BarButtonItem(); - this.miCopyCsv = new DevExpress.XtraBars.BarButtonItem(); this.mnuFavSet = new DevExpress.XtraBars.BarSubItem(); this.mnuFavUnset = new DevExpress.XtraBars.BarSubItem(); this.miLockOn = new DevExpress.XtraBars.BarButtonItem(); @@ -140,6 +136,10 @@ this.miSkipOff = new DevExpress.XtraBars.BarButtonItem(); this.miHideOn = new DevExpress.XtraBars.BarButtonItem(); this.miHideOff = new DevExpress.XtraBars.BarButtonItem(); + this.miRenum = new DevExpress.XtraBars.BarButtonItem(); + this.miSort = new DevExpress.XtraBars.BarButtonItem(); + this.miRenumFavByPrNr = new DevExpress.XtraBars.BarButtonItem(); + this.miCopyCsv = new DevExpress.XtraBars.BarButtonItem(); this.barSubItem2 = new DevExpress.XtraBars.BarSubItem(); this.miTvSettings = new DevExpress.XtraBars.BarButtonItem(); this.miCleanupChannels = new DevExpress.XtraBars.BarButtonItem(); @@ -1295,41 +1295,6 @@ this.miRenameChannel.Name = "miRenameChannel"; this.miRenameChannel.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.miRenameChannel_ItemClick); // - // miSort - // - resources.ApplyResources(this.miSort, "miSort"); - this.miSort.CategoryGuid = new System.Guid("d7eec464-59c9-4f45-88aa-602e64c81cc0"); - this.miSort.Id = 40; - this.miSort.ImageOptions.ImageIndex = ((int)(resources.GetObject("miSort.ImageOptions.ImageIndex"))); - this.miSort.Name = "miSort"; - this.miSort.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.miSort_ItemClick); - // - // miRenum - // - resources.ApplyResources(this.miRenum, "miRenum"); - this.miRenum.CategoryGuid = new System.Guid("d7eec464-59c9-4f45-88aa-602e64c81cc0"); - this.miRenum.Id = 41; - this.miRenum.ImageOptions.ImageIndex = ((int)(resources.GetObject("miRenum.ImageOptions.ImageIndex"))); - this.miRenum.Name = "miRenum"; - this.miRenum.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.miRenum_ItemClick); - // - // miRenumFavByPrNr - // - resources.ApplyResources(this.miRenumFavByPrNr, "miRenumFavByPrNr"); - this.miRenumFavByPrNr.Id = 63; - this.miRenumFavByPrNr.Name = "miRenumFavByPrNr"; - this.miRenumFavByPrNr.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.miRenumFavByPrNr_ItemClick); - // - // miCopyCsv - // - resources.ApplyResources(this.miCopyCsv, "miCopyCsv"); - this.miCopyCsv.Id = 100; - this.miCopyCsv.ImageOptions.ImageIndex = ((int)(resources.GetObject("miCopyCsv.ImageOptions.ImageIndex"))); - this.miCopyCsv.ItemShortcut = new DevExpress.XtraBars.BarShortcut(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) - | System.Windows.Forms.Keys.C)); - this.miCopyCsv.Name = "miCopyCsv"; - this.miCopyCsv.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.miCopyCsv_ItemClick); - // // mnuFavSet // resources.ApplyResources(this.mnuFavSet, "mnuFavSet"); @@ -1406,6 +1371,41 @@ this.miHideOff.Name = "miHideOff"; this.miHideOff.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.miHideOff_ItemClick); // + // miRenum + // + resources.ApplyResources(this.miRenum, "miRenum"); + this.miRenum.CategoryGuid = new System.Guid("d7eec464-59c9-4f45-88aa-602e64c81cc0"); + this.miRenum.Id = 41; + this.miRenum.ImageOptions.ImageIndex = ((int)(resources.GetObject("miRenum.ImageOptions.ImageIndex"))); + this.miRenum.Name = "miRenum"; + this.miRenum.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.miRenum_ItemClick); + // + // miSort + // + resources.ApplyResources(this.miSort, "miSort"); + this.miSort.CategoryGuid = new System.Guid("d7eec464-59c9-4f45-88aa-602e64c81cc0"); + this.miSort.Id = 40; + this.miSort.ImageOptions.ImageIndex = ((int)(resources.GetObject("miSort.ImageOptions.ImageIndex"))); + this.miSort.Name = "miSort"; + this.miSort.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.miSort_ItemClick); + // + // miRenumFavByPrNr + // + resources.ApplyResources(this.miRenumFavByPrNr, "miRenumFavByPrNr"); + this.miRenumFavByPrNr.Id = 63; + this.miRenumFavByPrNr.Name = "miRenumFavByPrNr"; + this.miRenumFavByPrNr.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.miRenumFavByPrNr_ItemClick); + // + // miCopyCsv + // + resources.ApplyResources(this.miCopyCsv, "miCopyCsv"); + this.miCopyCsv.Id = 100; + this.miCopyCsv.ImageOptions.ImageIndex = ((int)(resources.GetObject("miCopyCsv.ImageOptions.ImageIndex"))); + this.miCopyCsv.ItemShortcut = new DevExpress.XtraBars.BarShortcut(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) + | System.Windows.Forms.Keys.C)); + this.miCopyCsv.Name = "miCopyCsv"; + this.miCopyCsv.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.miCopyCsv_ItemClick); + // // barSubItem2 // resources.ApplyResources(this.barSubItem2, "barSubItem2"); diff --git a/source/ChanSort/MainForm.cs b/source/ChanSort/MainForm.cs index d234a0e..16f4d13 100644 --- a/source/ChanSort/MainForm.cs +++ b/source/ChanSort/MainForm.cs @@ -551,7 +551,7 @@ namespace ChanSort.Ui if (!this.PromptSaveAndContinue()) return false; - serializer.DataRoot.SetPrNrForDeletedChannels(); + serializer.DataRoot.ValidateAfterLoad(); this.SetFileName(tvDataFile); this.currentPlugin = plugin; this.currentTvSerializer = serializer; @@ -765,10 +765,10 @@ namespace ChanSort.Ui try { - if (!this.PromptHandlingOfUnsortedChannels()) - return; if (!this.HandleChannelNumberGaps()) return; + if (!this.PromptHandlingOfUnsortedChannels()) + return; this.SaveTvDataFile(); this.DataRoot.NeedsSaving = false; this.RefreshGrid(this.gviewLeft, this.gviewRight); @@ -795,7 +795,7 @@ namespace ChanSort.Ui { foreach (var channel in list.Channels) { - if (channel.NewProgramNr < 0 && (!channel.IsDeleted || DataRoot.DeletedChannelsNeedNumbers)) + if (channel.NewProgramNr < 0 && (!channel.IsDeleted /* || DataRoot.DeletedChannelsNeedNumbers */)) { hasUnsorted = true; break; @@ -803,7 +803,7 @@ namespace ChanSort.Ui } } - UnsortedChannelMode mode = UnsortedChannelMode.MarkDeleted; + UnsortedChannelMode mode = UnsortedChannelMode.Delete; if (hasUnsorted) { @@ -812,7 +812,7 @@ namespace ChanSort.Ui using (var dlg = new ActionBoxDialog(msg)) { dlg.AddAction(Resources.MainForm_PromptHandlingOfUnsortedChannels_Append, DialogResult.Yes, dlg.FullList); - if (this.currentTvSerializer.Features.CanDeleteChannels) + if (this.currentTvSerializer.Features.CanDeleteChannelsWithFlag || this.currentTvSerializer.Features.CanDeleteChannelsFromFile) dlg.AddAction(Resources.MainForm_PromptHandlingOfUnsortedChannels_Delete, DialogResult.No, dlg.Delete); dlg.AddAction(Resources.MainForm_Cancel, DialogResult.Cancel, dlg.Cancel); res = dlg.ShowDialog(this); @@ -928,19 +928,7 @@ namespace ChanSort.Ui File.Copy(currentTvFile, bakFile); } this.currentTvSerializer.Save(this.currentTvFile); - - // after saving old numbers match the new numbers - foreach (var list in this.DataRoot.ChannelLists) - { - foreach (var chan in list.Channels) - { - if (chan.IsDeleted && !this.DataRoot.DeletedChannelsNeedNumbers) // during the saving process, deleted channels temporarily got a NewProgramNr assigned - chan.NewProgramNr = -1; - chan.OldProgramNr = chan.NewProgramNr; - chan.OldFavIndex.Clear(); - chan.OldFavIndex.AddRange(chan.FavIndex); - } - } + this.DataRoot.ValidateAfterSave(); } finally { @@ -1692,6 +1680,8 @@ namespace ChanSort.Ui try { File.Copy(bakFile, this.currentTvFile, true); + var attr = File.GetAttributes(this.currentTvFile); + File.SetAttributes(this.currentTvFile, attr & ~FileAttributes.ReadOnly); this.currentTvSerializer.DataRoot.NeedsSaving = false; if (this.currentPlugin != null) this.LoadFiles(this.currentPlugin, this.currentTvFile); @@ -2675,8 +2665,7 @@ namespace ChanSort.Ui { this.gviewRight.BeginSort(); this.gviewRight.ClearColumnsFilter(); - if (this.DataRoot != null && !this.DataRoot.ShowDeletedChannels) - this.colSlotOld.FilterInfo = new ColumnFilterInfo("[OldProgramNr]<>-1"); + this.colSlotOld.FilterInfo = new ColumnFilterInfo("[OldProgramNr]<>-1"); if (this.subListIndex > 0 && !this.CurrentChannelList.IsMixedSourceFavoritesList) this.colPrNr.FilterInfo = new ColumnFilterInfo("[NewProgramNr]<>-1"); this.gviewRight.EndSort(); diff --git a/source/ChanSort/MainForm.de.resx b/source/ChanSort/MainForm.de.resx index 3e40b13..4d358a6 100644 --- a/source/ChanSort/MainForm.de.resx +++ b/source/ChanSort/MainForm.de.resx @@ -556,8 +556,8 @@ speziellen Anbieter, Satelliten oder Länderlisten aus. 333, 17 - - + + AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxNS4yLCBWZXJzaW9uPTE1 LjIuNS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA @@ -567,7 +567,7 @@ speziellen Anbieter, Satelliten oder Länderlisten aus. Xxl+0wEL - + AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxNS4yLCBWZXJzaW9uPTE1 LjIuNS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA @@ -577,7 +577,7 @@ speziellen Anbieter, Satelliten oder Länderlisten aus. KphCYAEL - + AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxNS4yLCBWZXJzaW9uPTE1 LjIuNS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA @@ -587,7 +587,7 @@ speziellen Anbieter, Satelliten oder Länderlisten aus. ZMgcwAEL - + AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxNS4yLCBWZXJzaW9uPTE1 LjIuNS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA @@ -597,7 +597,7 @@ speziellen Anbieter, Satelliten oder Länderlisten aus. WIeWYGkVXQEL - + AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxNS4yLCBWZXJzaW9uPTE1 LjIuNS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA diff --git a/source/ChanSort/MainForm.pt.resx b/source/ChanSort/MainForm.pt.resx index bd38cdc..54b1487 100644 --- a/source/ChanSort/MainForm.pt.resx +++ b/source/ChanSort/MainForm.pt.resx @@ -62,9 +62,9 @@ - - - + + + Novo Pos @@ -329,8 +329,8 @@ Tipo serviço - - + + AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxMi4yLCBWZXJzaW9uPTEy LjIuNi4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA @@ -340,7 +340,7 @@ Xxl+0wEL - + AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxMi4yLCBWZXJzaW9uPTEy LjIuNi4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA @@ -350,7 +350,7 @@ KphCYAEL - + AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxMi4yLCBWZXJzaW9uPTEy LjIuNi4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA @@ -360,7 +360,7 @@ ZMgcwAEL - + AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxMi4yLCBWZXJzaW9uPTEy LjIuNi4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA diff --git a/source/ChanSort/MainForm.resx b/source/ChanSort/MainForm.resx index 81be359..35469bf 100644 --- a/source/ChanSort/MainForm.resx +++ b/source/ChanSort/MainForm.resx @@ -189,15 +189,15 @@ False - - + + Combo - - + + RegEx @@ -260,7 +260,7 @@ False - + Numeric @@ -273,7 +273,7 @@ gridLeft - DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpOutputList @@ -303,7 +303,7 @@ lblHotkeyLeft - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpOutputList @@ -342,7 +342,7 @@ pageProgNr - DevExpress.XtraTab.XtraTabPage, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraTab.XtraTabPage, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a tabSubList @@ -360,7 +360,7 @@ tabSubList - DevExpress.XtraTab.XtraTabControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraTab.XtraTabControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpSubList @@ -390,7 +390,7 @@ grpSubList - DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -725,51 +725,51 @@ Tools - - + + - AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxOS4xLCBWZXJzaW9uPTE5 - LjEuNS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA + AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxOS4yLCBWZXJzaW9uPTE5 + LjIuMy4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA ACZEZXZFeHByZXNzLlh0cmFCYXJzLkJhck1hbmFnZXJDYXRlZ29yeQMAAAAETmFtZQRHdWlkB1Zpc2li bGUBAwALU3lzdGVtLkd1aWQBAgAAAAYDAAAABEZpbGUE/P///wtTeXN0ZW0uR3VpZAsAAAACX2ECX2IC X2MCX2QCX2UCX2YCX2cCX2gCX2kCX2oCX2sAAAAAAAAAAAAAAAgHBwICAgICAgICKaPJ5gsBeU2NTSFe Xxl+0wEL - + - AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxOS4xLCBWZXJzaW9uPTE5 - LjEuNS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA + AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxOS4yLCBWZXJzaW9uPTE5 + LjIuMy4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA ACZEZXZFeHByZXNzLlh0cmFCYXJzLkJhck1hbmFnZXJDYXRlZ29yeQMAAAAETmFtZQRHdWlkB1Zpc2li bGUBAwALU3lzdGVtLkd1aWQBAgAAAAYDAAAABEhlbHAE/P///wtTeXN0ZW0uR3VpZAsAAAACX2ECX2IC X2MCX2QCX2UCX2YCX2cCX2gCX2kCX2oCX2sAAAAAAAAAAAAAAAgHBwICAgICAgICdEVVDegwMU2acNpw KphCYAEL - + - AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxOS4xLCBWZXJzaW9uPTE5 - LjEuNS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA + AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxOS4yLCBWZXJzaW9uPTE5 + LjIuMy4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA ACZEZXZFeHByZXNzLlh0cmFCYXJzLkJhck1hbmFnZXJDYXRlZ29yeQMAAAAETmFtZQRHdWlkB1Zpc2li bGUBAwALU3lzdGVtLkd1aWQBAgAAAAYDAAAABEVkaXQE/P///wtTeXN0ZW0uR3VpZAsAAAACX2ECX2IC X2MCX2QCX2UCX2YCX2cCX2gCX2kCX2oCX2sAAAAAAAAAAAAAAAgHBwICAgICAgICZMTu18lZRU+IqmAu ZMgcwAEL - + - AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxOS4xLCBWZXJzaW9uPTE5 - LjEuNS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA + AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxOS4yLCBWZXJzaW9uPTE5 + LjIuMy4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA ACZEZXZFeHByZXNzLlh0cmFCYXJzLkJhck1hbmFnZXJDYXRlZ29yeQMAAAAETmFtZQRHdWlkB1Zpc2li bGUBAwALU3lzdGVtLkd1aWQBAgAAAAYDAAAAB09wdGlvbnME/P///wtTeXN0ZW0uR3VpZAsAAAACX2EC X2ICX2MCX2QCX2UCX2YCX2cCX2gCX2kCX2oCX2sAAAAAAAAAAAAAAAgHBwICAgICAgICXJMOh9nzAkKc WIeWYGkVXQEL - + - AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxOS4xLCBWZXJzaW9uPTE5 - LjEuNS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA + AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxOS4yLCBWZXJzaW9uPTE5 + LjIuMy4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA ACZEZXZFeHByZXNzLlh0cmFCYXJzLkJhck1hbmFnZXJDYXRlZ29yeQMAAAAETmFtZQRHdWlkB1Zpc2li bGUBAwALU3lzdGVtLkd1aWQBAgAAAAYDAAAADUFjY2Vzc2liaWxpdHkE/P///wtTeXN0ZW0uR3VpZAsA AAACX2ECX2ICX2MCX2QCX2UCX2YCX2cCX2gCX2kCX2oCX2sAAAAAAAAAAAAAAAgHBwICAgICAgICeIvz @@ -789,7 +789,7 @@ barDockControlTop - DevExpress.XtraBars.BarDockControl, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarDockControl, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -810,7 +810,7 @@ barDockControlBottom - DevExpress.XtraBars.BarDockControl, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarDockControl, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -831,7 +831,7 @@ barDockControlLeft - DevExpress.XtraBars.BarDockControl, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarDockControl, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -852,7 +852,7 @@ barDockControlRight - DevExpress.XtraBars.BarDockControl, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarDockControl, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -875,8 +875,8 @@ swap - - + + Default @@ -889,7 +889,7 @@ rbInsertSwap - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpTopPanel @@ -916,7 +916,7 @@ rbInsertAfter - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpTopPanel @@ -940,7 +940,7 @@ rbInsertBefore - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpTopPanel @@ -970,7 +970,7 @@ cbCloseGap - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpTopPanel @@ -994,7 +994,7 @@ lblInsertMode - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpTopPanel @@ -1018,7 +1018,7 @@ picDonate - DevExpress.XtraEditors.PictureEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.PictureEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpTopPanel @@ -1042,7 +1042,7 @@ pageEmpty - DevExpress.XtraTab.XtraTabPage, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraTab.XtraTabPage, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a tabChannelList @@ -1060,7 +1060,7 @@ tabChannelList - DevExpress.XtraTab.XtraTabControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraTab.XtraTabControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpTopPanel @@ -1068,7 +1068,7 @@ 6 - + Vertical @@ -1090,7 +1090,7 @@ lblSetProgramNr - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpTopPanel @@ -1101,13 +1101,13 @@ 437, 5 - + OK \d{1,4} - + RegEx @@ -1120,7 +1120,7 @@ txtSetSlot - DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpTopPanel @@ -1144,7 +1144,7 @@ grpTopPanel - DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -1168,745 +1168,745 @@ gviewLeft - DevExpress.XtraGrid.Views.Grid.GridView, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Views.Grid.GridView, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colIndex1 - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colOutServiceType - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colOutSlot - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colOutName - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colOutFav - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a repositoryItemCheckedComboBoxEdit1 - DevExpress.XtraEditors.Repository.RepositoryItemCheckedComboBoxEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.Repository.RepositoryItemCheckedComboBoxEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colOutLock - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colOutSkip - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colOutHide - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colOutDeleted - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colUid1 - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a repositoryItemTextEdit1 - DevExpress.XtraEditors.Repository.RepositoryItemTextEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.Repository.RepositoryItemTextEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a globalImageCollection1 - ChanSort.Ui.GlobalImageCollection, ChanSort, Version=1.0.7164.24093, Culture=neutral, PublicKeyToken=null + ChanSort.Ui.GlobalImageCollection, ChanSort, Version=1.0.7248.39737, Culture=neutral, PublicKeyToken=null gviewRight - DevExpress.XtraGrid.Views.Grid.GridView, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Views.Grid.GridView, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colIndex - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colSlotOld - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colSlotNew - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colSource - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colPrNr - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colName - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colShortName - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colFavorites - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a repositoryItemCheckedComboBoxEdit2 - DevExpress.XtraEditors.Repository.RepositoryItemCheckedComboBoxEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.Repository.RepositoryItemCheckedComboBoxEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colLock - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colSkip - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colHidden - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colDeleted - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colEncrypted - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colServiceType - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colServiceTypeName - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colFreqInMhz - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colChannelOrTransponder - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colSatellite - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colNetworkId - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colTransportStreamId - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colServiceId - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colPcrPid - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colVideoPid - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colAudioPid - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colSymbolRate - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colPolarity - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colNetworkName - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colNetworkOperator - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colProvider - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colUid - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colLogicalIndex - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colSignalSource - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colDebug - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a barManager1 - DevExpress.XtraBars.BarManager, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarManager, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a bar1 - DevExpress.XtraBars.Bar, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.Bar, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miFile - DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miOpen - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miReload - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miRestoreOriginal - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miFileInformation - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miSave - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miSaveAs - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miOpenReferenceFile - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miAddFromRefList - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miSaveReferenceFile - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miExcelExport - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miPrint - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miQuit - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miRecentFiles - DevExpress.XtraBars.BarListItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarListItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miEdit - DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miAddChannel - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miRemove - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miRenameChannel - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - miSort - - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - miRenum - - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - miRenumFavByPrNr - - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - miCopyCsv - - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a mnuFavSet - DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a mnuFavUnset - DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miLockOn - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miLockOff - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miSkipOn - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miSkipOff - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miHideOn - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miHideOff - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miRenum + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miSort + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miRenumFavByPrNr + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miCopyCsv + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a barSubItem2 - DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miTvSettings - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miCleanupChannels - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a mnuOptions - DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a barSubItem1 - DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miEnglish - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miGerman - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miPortuguese - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miRussian - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miCzech - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miRomanian - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a mnuCharset - DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miCharsetForm - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miUtf8Charset - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miIsoCharSets - DevExpress.XtraBars.BarListItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarListItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miShowWarningsAfterLoad - DevExpress.XtraBars.BarCheckItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarCheckItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miAllowEditPredefinedLists - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miExplorerIntegration - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miCheckUpdates - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a mnuAccessibility - DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a mnuGotoChannelList - DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a mnuInputSource - DevExpress.XtraBars.BarLinkContainerItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarLinkContainerItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a mnuGotoFavList - DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a mnuFavList - DevExpress.XtraBars.BarLinkContainerItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarLinkContainerItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miSelectFavList0 - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miSelectFavListA - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miSelectFavListB - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miSelectFavListC - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miSelectFavListD - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miSelectFavListE - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miGotoLeftFilter - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miGotoLeftList - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miRightListFilter - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miGotoRightList - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a mnuHelp - DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miWiki - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miOpenWebsite - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miAbout - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miMoveUp - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a miMoveDown - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a defaultLookAndFeel1 - DevExpress.LookAndFeel.DefaultLookAndFeel, DevExpress.Utils.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.LookAndFeel.DefaultLookAndFeel, DevExpress.Utils.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a splashScreenManager1 - DevExpress.XtraSplashScreen.SplashScreenManager, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraSplashScreen.SplashScreenManager, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a popupContext - DevExpress.XtraBars.PopupMenu, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.PopupMenu, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a timerEditDelay @@ -1918,22 +1918,22 @@ popupInputSource - DevExpress.XtraBars.PopupMenu, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.PopupMenu, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a popupFavList - DevExpress.XtraBars.PopupMenu, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraBars.PopupMenu, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a MainForm - DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - 08/13/2019 13:25:32 + 11/05/2019 22:23:13 16, 16 @@ -1954,7 +1954,7 @@ btnToggleFavH - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a pnlEditControls @@ -1981,7 +1981,7 @@ btnToggleFavG - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a pnlEditControls @@ -2008,7 +2008,7 @@ btnToggleFavF - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a pnlEditControls @@ -2038,7 +2038,7 @@ btnToggleLock - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a pnlEditControls @@ -2065,7 +2065,7 @@ btnToggleFavE - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a pnlEditControls @@ -2092,7 +2092,7 @@ btnToggleFavD - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a pnlEditControls @@ -2119,7 +2119,7 @@ btnToggleFavC - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a pnlEditControls @@ -2146,7 +2146,7 @@ btnToggleFavB - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a pnlEditControls @@ -2173,7 +2173,7 @@ btnToggleFavA - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a pnlEditControls @@ -2209,7 +2209,7 @@ btnClearLeftFilter - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a pnlEditControls @@ -2239,7 +2239,7 @@ btnRenum - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a pnlEditControls @@ -2269,7 +2269,7 @@ btnDown - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a pnlEditControls @@ -2299,7 +2299,7 @@ btnUp - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a pnlEditControls @@ -2329,7 +2329,7 @@ btnRemoveLeft - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a pnlEditControls @@ -2353,7 +2353,7 @@ pnlEditControls - DevExpress.XtraEditors.PanelControl, DevExpress.Utils.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.PanelControl, DevExpress.Utils.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpOutputList @@ -2380,7 +2380,7 @@ grpOutputList - DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a splitContainerControl1.Panel1 @@ -2475,13 +2475,13 @@ False - + Combo - + RegEx @@ -2752,7 +2752,7 @@ gridRight - DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpInputList @@ -2782,7 +2782,7 @@ lblHotkeyRight - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpInputList @@ -2818,7 +2818,7 @@ specific provider, satellite or country lists. lblPredefinedList - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a panelControl3 @@ -2848,7 +2848,7 @@ specific provider, satellite or country lists. btnRemoveRight - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a panelControl3 @@ -2878,7 +2878,7 @@ specific provider, satellite or country lists. btnAddAll - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a panelControl3 @@ -2914,7 +2914,7 @@ specific provider, satellite or country lists. btnClearRightFilter - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a panelControl3 @@ -2944,7 +2944,7 @@ specific provider, satellite or country lists. btnAdd - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a panelControl3 @@ -2968,7 +2968,7 @@ specific provider, satellite or country lists. panelControl3 - DevExpress.XtraEditors.PanelControl, DevExpress.Utils.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.PanelControl, DevExpress.Utils.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpInputList @@ -2995,7 +2995,7 @@ specific provider, satellite or country lists. grpInputList - DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a splitContainerControl1.Panel2 @@ -3019,7 +3019,7 @@ specific provider, satellite or country lists. splitContainerControl1 - DevExpress.XtraEditors.SplitContainerControl, DevExpress.Utils.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SplitContainerControl, DevExpress.Utils.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this diff --git a/source/ChanSort/Printing/ReportOptionsDialog.resx b/source/ChanSort/Printing/ReportOptionsDialog.resx index 73952a5..8f880d6 100644 --- a/source/ChanSort/Printing/ReportOptionsDialog.resx +++ b/source/ChanSort/Printing/ReportOptionsDialog.resx @@ -135,7 +135,7 @@ labelControl1 - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -162,7 +162,7 @@ rbSortByNumber - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -186,7 +186,7 @@ rbSortByName - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -210,7 +210,7 @@ labelControl2 - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -228,8 +228,8 @@ 106, 52 - - + + Combo @@ -242,7 +242,7 @@ fontEdit1 - DevExpress.XtraEditors.FontEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.FontEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -269,7 +269,7 @@ btnPreview - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -296,7 +296,7 @@ btnCancel - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -313,7 +313,7 @@ 266, 52 - + Combo @@ -329,7 +329,7 @@ spinFontSize - DevExpress.XtraEditors.SpinEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SpinEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -356,6 +356,6 @@ ReportOptionsDialog - DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a \ No newline at end of file diff --git a/source/ChanSort/Properties/Settings.Designer.cs b/source/ChanSort/Properties/Settings.Designer.cs index b4e9114..8f50672 100644 --- a/source/ChanSort/Properties/Settings.Designer.cs +++ b/source/ChanSort/Properties/Settings.Designer.cs @@ -12,7 +12,7 @@ namespace ChanSort.Ui.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.1.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.3.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); diff --git a/source/ChanSort/Properties/licenses.licx b/source/ChanSort/Properties/licenses.licx index 162edd6..b6f709c 100644 --- a/source/ChanSort/Properties/licenses.licx +++ b/source/ChanSort/Properties/licenses.licx @@ -1,8 +1,6 @@ -DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a -DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a -DevExpress.XtraBars.BarManager, DevExpress.XtraBars.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a -DevExpress.XtraEditors.PictureEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a -DevExpress.XtraReports.UI.XtraReport, DevExpress.XtraReports.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a -DevExpress.XtraEditors.Repository.RepositoryItemTextEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a -DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a -DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.Repository.RepositoryItemTextEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.PictureEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraBars.BarManager, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a diff --git a/source/ChanSort/ReferenceListForm.cs b/source/ChanSort/ReferenceListForm.cs index 2411630..a47f350 100644 --- a/source/ChanSort/ReferenceListForm.cs +++ b/source/ChanSort/ReferenceListForm.cs @@ -6,9 +6,9 @@ using System.Text; using System.Windows.Forms; using ChanSort.Api; using ChanSort.Ui.Properties; +using DevExpress.Utils.Extensions; using DevExpress.XtraEditors; using DevExpress.XtraEditors.Controls; -using DevExpress.XtraPrinting.Native; namespace ChanSort.Ui { diff --git a/source/ChanSort/ReferenceListForm.resx b/source/ChanSort/ReferenceListForm.resx index f43ce6f..bfdd6e7 100644 --- a/source/ChanSort/ReferenceListForm.resx +++ b/source/ChanSort/ReferenceListForm.resx @@ -135,7 +135,7 @@ labelControl1 - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a groupControl1 @@ -153,8 +153,8 @@ 132, 36 - - + + Ellipsis @@ -181,7 +181,7 @@ - + Default @@ -194,7 +194,7 @@ edFile - DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a groupControl1 @@ -202,8 +202,8 @@ 3 - - + + Vertical @@ -224,7 +224,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) labelControl2 - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a groupControl1 @@ -251,7 +251,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) rbAuto - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a groupControl2 @@ -278,7 +278,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) rbManual - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a groupControl2 @@ -302,7 +302,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) labelControl3 - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpManual @@ -313,7 +313,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) 123, 33 - + Combo @@ -326,7 +326,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) comboSource - DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpManual @@ -337,7 +337,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) 123, 7 - + Combo @@ -350,7 +350,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) comboTarget - DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpManual @@ -374,7 +374,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) labelControl4 - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpManual @@ -398,7 +398,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) cbTv - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpManual @@ -422,7 +422,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) cbRadio - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpManual @@ -446,7 +446,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) labelControl5 - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpManual @@ -454,7 +454,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) 20 - + Vertical @@ -473,7 +473,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) labelControl6 - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpManual @@ -487,7 +487,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) 123, 134 - + Combo @@ -521,7 +521,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) comboPrNr - DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpManual @@ -548,7 +548,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) cbData - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpManual @@ -572,7 +572,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) cbConsecutive - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpManual @@ -596,7 +596,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) cbIp - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpManual @@ -620,7 +620,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) cbSat - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpManual @@ -644,7 +644,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) labelControl11 - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpManual @@ -668,7 +668,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) cbAntenna - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpManual @@ -692,7 +692,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) cbCable - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpManual @@ -716,7 +716,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) labelControl9 - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpManual @@ -740,7 +740,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) cbAnalog - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpManual @@ -764,7 +764,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) cbDigital - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpManual @@ -788,7 +788,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) lblTargetInfo - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpManual @@ -812,7 +812,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) lblSourceInfo - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpManual @@ -836,7 +836,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) labelControl7 - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpManual @@ -863,7 +863,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) btnApply - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a grpManual @@ -890,7 +890,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) grpManual - DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a groupControl2 @@ -917,7 +917,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) btnOk - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -944,7 +944,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) btnClose - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -971,7 +971,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) linkWiki - DevExpress.XtraEditors.HyperlinkLabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.HyperlinkLabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a groupControl1 @@ -995,7 +995,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) groupControl1 - DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -1006,7 +1006,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) Tahoma, 12pt - + Vertical @@ -1026,7 +1026,7 @@ This step can be repeated as needed. labelControl10 - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a groupControl2 @@ -1034,7 +1034,7 @@ This step can be repeated as needed. 0 - + Vertical @@ -1054,7 +1054,7 @@ This step can be repeated as needed. labelControl8 - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a groupControl2 @@ -1078,7 +1078,7 @@ This step can be repeated as needed. groupControl2 - DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a $this @@ -1105,6 +1105,6 @@ This step can be repeated as needed. ReferenceListForm - DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a \ No newline at end of file diff --git a/source/ChanSort/WaitForm1.resx b/source/ChanSort/WaitForm1.resx index 8583152..460e53e 100644 --- a/source/ChanSort/WaitForm1.resx +++ b/source/ChanSort/WaitForm1.resx @@ -145,7 +145,7 @@ 0, 14, 0, 14 - DevExpress.XtraWaitForm.WaitForm, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraWaitForm.WaitForm, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a WaitForm1 @@ -227,7 +227,7 @@ Horizontal - DevExpress.XtraWaitForm.ProgressPanel, DevExpress.XtraEditors.v19.1, Version=19.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + DevExpress.XtraWaitForm.ProgressPanel, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a Horizontal diff --git a/source/ChanSort/app.config b/source/ChanSort/app.config index 229767b..b2d5d71 100644 --- a/source/ChanSort/app.config +++ b/source/ChanSort/app.config @@ -5,7 +5,7 @@
- + diff --git a/source/DLL/ICSharpCode.SharpZipLib.dll b/source/DLL/ICSharpCode.SharpZipLib.dll deleted file mode 100644 index fe643ebc638dfc94f1149528d0e9a91ce52dc353..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200704 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

M 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 ch.Name == "ORF2W HD"); + Assert.AreEqual(122, orf2w.OldProgramNr); + Assert.AreEqual(122, orf2w.NewProgramNr); + Assert.IsFalse(orf2w.IsDeleted); + + orf2w.NewProgramNr = -1; + var editor = new Editor(); + editor.DataRoot = data; + editor.AutoNumberingForUnassignedChannels(UnsortedChannelMode.Delete); + + Assert.IsTrue(orf2w.IsDeleted); + Assert.AreNotEqual(-1, orf2w.NewProgramNr); + Assert.AreEqual(0, dvbs.Channels.Count(ch => ch.NewProgramNr <= 0)); + + + // save and reload + ser.Save(tempFile); + ser = plugin.CreateSerializer(tempFile); + ser.Load(); + data = ser.DataRoot; + data.ValidateAfterLoad(); + data.ApplyCurrentProgramNumbers(); + + + dvbs = data.GetChannelList(SignalSource.DvbS); + orf2w = dvbs.Channels.FirstOrDefault(ch => ch.Name == "ORF2W HD"); + Assert.IsTrue(orf2w.IsDeleted); + Assert.AreEqual(-1, orf2w.OldProgramNr); + } + #endregion + } } diff --git a/source/Test.Loader.GlobalClone/Test.Loader.GlobalClone.csproj b/source/Test.Loader.GlobalClone/Test.Loader.GlobalClone.csproj index 30c62b0..f6e38dd 100644 --- a/source/Test.Loader.GlobalClone/Test.Loader.GlobalClone.csproj +++ b/source/Test.Loader.GlobalClone/Test.Loader.GlobalClone.csproj @@ -10,7 +10,7 @@ Properties Test.Loader.GlobalClone Test.Loader.GlobalClone - v4.8 + v4.6 512 {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 15.0 @@ -20,6 +20,7 @@ UnitTest + true @@ -40,7 +41,7 @@ true - bin\x86\Debug\ + ..\Debug\ DEBUG;TRACE full x86 @@ -69,15 +70,9 @@ - - Always - - - Always - - - Always - + + + @@ -88,6 +83,10 @@ {5361c8cb-f737-4709-af8c-e1f0456f3c5b} ChanSort.Loader.GlobalClone + + {68cfcb2f-b52a-43a1-aa5c-5d64a1d655d2} + Test.Loader + diff --git a/source/Test.Loader.Hisense/HisenseChannelDbTest.cs b/source/Test.Loader.Hisense/HisenseChannelDbTest.cs index a3bcf68..4829547 100644 --- a/source/Test.Loader.Hisense/HisenseChannelDbTest.cs +++ b/source/Test.Loader.Hisense/HisenseChannelDbTest.cs @@ -1,7 +1,4 @@ -using System; -using System.IO; -using System.Linq; -using System.Reflection; +using System.Linq; using ChanSort.Api; using ChanSort.Loader.Hisense; using Microsoft.VisualStudio.TestTools.UnitTesting; @@ -11,13 +8,6 @@ namespace Test.Loader.Hisense [TestClass] public class HisenseChannelDbTest { - private static readonly string filesDir; - - static HisenseChannelDbTest() - { - filesDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\TestFiles\\"; - } - #region TestSatChannelsAddedToCorrectLists [TestMethod] public void TestSatChannelsAddedToCorrectLists() @@ -39,8 +29,9 @@ namespace Test.Loader.Hisense #region TestChannelsAddedToCorrectList private void TestChannelsAddedToCorrectLists(string fileName, SignalSource signalSource, int expectedTotal, int expectedTv, int expectedRadio, int dataProgramSid, string dataProgramName) { + var tempFile = TestUtils.DeploymentItem("Test.Loader.Hisense\\TestFiles\\" + fileName); var plugin = new HisDbSerializerPlugin(); - var ser = plugin.CreateSerializer(filesDir + fileName); + var ser = plugin.CreateSerializer(tempFile); ser.Load(); var root = ser.DataRoot; @@ -58,6 +49,53 @@ namespace Test.Loader.Hisense } #endregion + #region TestDeletingChannel + + [TestMethod] + public void TestDeletingChannel() + { + var tempFile = TestUtils.DeploymentItem("Test.Loader.Hisense\\TestFiles\\channel.db"); + var plugin = new HisDbSerializerPlugin(); + var ser = plugin.CreateSerializer(tempFile); + ser.Load(); + var data = ser.DataRoot; + data.ValidateAfterLoad(); + data.ApplyCurrentProgramNumbers(); + + // Pr# 130 = ORF2E + + var dvbs = data.GetChannelList(SignalSource.DvbS); + var orf2e = dvbs.Channels.FirstOrDefault(ch => ch.Name == "ORF2E"); + Assert.IsNotNull(orf2e); + Assert.AreEqual(130, orf2e.OldProgramNr); + Assert.AreEqual(130, orf2e.NewProgramNr); + Assert.IsFalse(orf2e.IsDeleted); + + orf2e.NewProgramNr = -1; + var editor = new Editor(); + editor.DataRoot = data; + editor.AutoNumberingForUnassignedChannels(UnsortedChannelMode.AppendInOrder); + + Assert.IsFalse(orf2e.IsDeleted); + Assert.IsTrue(orf2e.NewProgramNr > 0); + Assert.AreEqual(0, dvbs.Channels.Count(ch => ch.NewProgramNr <= 0)); + + + // save and reload + ser.Save(tempFile); + ser = plugin.CreateSerializer(tempFile); + ser.Load(); + data = ser.DataRoot; + data.ValidateAfterLoad(); + data.ApplyCurrentProgramNumbers(); + + // channel was removed from database + dvbs = data.GetChannelList(SignalSource.DvbS); + orf2e = dvbs.Channels.FirstOrDefault(ch => ch.Name == "ORF2E"); + Assert.IsNotNull(orf2e); + Assert.IsTrue(orf2e.NewProgramNr > 0); + } + #endregion } } diff --git a/source/Test.Loader.Hisense/Test.Loader.Hisense.csproj b/source/Test.Loader.Hisense/Test.Loader.Hisense.csproj index c4bee6f..d70a331 100644 --- a/source/Test.Loader.Hisense/Test.Loader.Hisense.csproj +++ b/source/Test.Loader.Hisense/Test.Loader.Hisense.csproj @@ -10,7 +10,7 @@ Properties Test.Loader.Hisense Test.Loader.Hisense - v4.8 + v4.6 512 {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 15.0 @@ -20,6 +20,7 @@ UnitTest + true @@ -40,7 +41,7 @@ true - bin\x86\Debug\ + ..\Debug\ DEBUG;TRACE full x86 @@ -72,9 +73,7 @@ - - Always - + @@ -85,6 +84,10 @@ {d093e7ee-d3ad-4e7b-af82-c6918ca017fb} ChanSort.Loader.Hisense + + {68cfcb2f-b52a-43a1-aa5c-5d64a1d655d2} + Test.Loader + diff --git a/source/Test.Loader.Hisense2017/HisenseServicelistDbTest.cs b/source/Test.Loader.Hisense2017/HisenseServicelistDbTest.cs index 8a5121f..686bee7 100644 --- a/source/Test.Loader.Hisense2017/HisenseServicelistDbTest.cs +++ b/source/Test.Loader.Hisense2017/HisenseServicelistDbTest.cs @@ -1,23 +1,16 @@ -using System; -using System.IO; +using System.IO; using System.Linq; using System.Reflection; using ChanSort.Api; using ChanSort.Loader.Hisense2017; using Microsoft.VisualStudio.TestTools.UnitTesting; + namespace Test.Loader.Hisense2017 { [TestClass] public class HisenseServicelistDbTest { - private static readonly string filesDir; - - static HisenseServicelistDbTest() - { - filesDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\TestFiles\\"; - } - #region TestAstraChannelsAddedToCorrectLists [TestMethod] public void TestAstraChannelsAddedToCorrectLists() @@ -38,8 +31,9 @@ namespace Test.Loader.Hisense2017 #region TestChannelsAddedToCorrectList private void TestChannelsAddedToCorrectLists(string fileName, string listCaption, int expectedTotal, int expectedTv, int expectedRadio) { + var tempFile = TestUtils.DeploymentItem("Test.Loader.Hisense2017\\TestFiles\\" + fileName); var plugin = new HisDbSerializerPlugin(); - var ser = plugin.CreateSerializer(filesDir + fileName); + var ser = plugin.CreateSerializer(tempFile); ser.Load(); var root = ser.DataRoot; @@ -54,6 +48,54 @@ namespace Test.Loader.Hisense2017 } #endregion + #region TestDeletingChannel + + [TestMethod] + public void TestDeletingChannel() + { + var tempFile = TestUtils.DeploymentItem("Test.Loader.Hisense2017\\TestFiles\\servicelist.db"); + var plugin = new HisDbSerializerPlugin(); + var ser = plugin.CreateSerializer(tempFile); + ser.Load(); + var data = ser.DataRoot; + data.ValidateAfterLoad(); + data.ApplyCurrentProgramNumbers(); + + // Pr# 910 = ORF2E + + var dvbs = data.GetChannelList(SignalSource.DvbS); + var orf2e = dvbs.Channels.FirstOrDefault(ch => ch.Name == "ORF2E"); + Assert.IsNotNull(orf2e); + Assert.AreEqual(910, orf2e.OldProgramNr); + Assert.AreEqual(910, orf2e.NewProgramNr); + Assert.IsFalse(orf2e.IsDeleted); + + orf2e.NewProgramNr = -1; + var editor = new Editor(); + editor.DataRoot = data; + editor.AutoNumberingForUnassignedChannels(UnsortedChannelMode.Delete); + + Assert.IsTrue(orf2e.IsDeleted); + Assert.IsTrue(orf2e.NewProgramNr > 0); + Assert.AreEqual(0, dvbs.Channels.Count(ch => ch.NewProgramNr <= 0)); + + + // save and reload + ser.Save(tempFile); + ser = plugin.CreateSerializer(tempFile); + ser.Load(); + data = ser.DataRoot; + data.ValidateAfterLoad(); + data.ApplyCurrentProgramNumbers(); + + // channel was marked deleted in database + dvbs = data.GetChannelList(SignalSource.DvbS); + orf2e = dvbs.Channels.FirstOrDefault(ch => ch.Name == "ORF2E"); + Assert.IsNotNull(orf2e); + Assert.IsTrue(orf2e.IsDeleted); + Assert.AreEqual(-1, orf2e.NewProgramNr); + } + #endregion } } diff --git a/source/Test.Loader.Hisense2017/Test.Loader.Hisense2017.csproj b/source/Test.Loader.Hisense2017/Test.Loader.Hisense2017.csproj index db8ffe4..df0ac8d 100644 --- a/source/Test.Loader.Hisense2017/Test.Loader.Hisense2017.csproj +++ b/source/Test.Loader.Hisense2017/Test.Loader.Hisense2017.csproj @@ -10,7 +10,7 @@ Properties Test.Loader.Hisense2017 Test.Loader.Hisense2017 - v4.8 + v4.6 512 {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 15.0 @@ -20,6 +20,7 @@ UnitTest + true @@ -40,7 +41,7 @@ true - bin\x86\Debug\ + ..\Debug\ DEBUG;TRACE full x86 @@ -72,9 +73,7 @@ - - Always - + @@ -85,6 +84,10 @@ {9282e1db-cd1f-400a-aca1-17e0c4562acf} ChanSort.Loader.Hisense2017 + + {68cfcb2f-b52a-43a1-aa5c-5d64a1d655d2} + Test.Loader + diff --git a/source/Test.Loader.LG/DvbsCleanup/TestDvbsCleanup.cs b/source/Test.Loader.LG/DvbsCleanup/TestDvbsCleanup.cs index 2775e06..e779dd7 100644 --- a/source/Test.Loader.LG/DvbsCleanup/TestDvbsCleanup.cs +++ b/source/Test.Loader.LG/DvbsCleanup/TestDvbsCleanup.cs @@ -35,9 +35,9 @@ namespace Test.Loader.LG private void ExecuteTest(string modelAndBaseName, bool generateReferenceFile = false) { // copy required input and assertion files - DeploymentItem("ChanSort.Loader.LG\\ChanSort.Loader.LG.ini"); - DeploymentItem("Test.Loader.LG\\" + modelAndBaseName + ".TLL.in"); - DeploymentItem("Test.Loader.LG\\" + modelAndBaseName + ".TLL.out"); + TestUtils.DeploymentItem("ChanSort.Loader.LG\\ChanSort.Loader.LG.ini"); + TestUtils.DeploymentItem("Test.Loader.LG\\" + modelAndBaseName + ".TLL.in"); + TestUtils.DeploymentItem("Test.Loader.LG\\" + modelAndBaseName + ".TLL.out"); var baseName = Path.GetFileNameWithoutExtension(modelAndBaseName); @@ -52,7 +52,7 @@ namespace Test.Loader.LG serializer.CleanUpChannelData(); serializer.Save(tempFile); if (generateReferenceFile) - File.Copy(tempFile, this.GetSolutionBaseDir() + "\\Test.Loader.LG\\" + modelAndBaseName + ".TLL.out", true); + File.Copy(tempFile, TestUtils.GetSolutionBaseDir() + "\\Test.Loader.LG\\" + modelAndBaseName + ".TLL.out", true); else AssertBinaryFileContent(tempFile, baseName + ".TLL.out"); } diff --git a/source/Test.Loader.LG/LM/TestLM.cs b/source/Test.Loader.LG/LM/TestLM.cs index 1e679c8..660bb1b 100644 --- a/source/Test.Loader.LG/LM/TestLM.cs +++ b/source/Test.Loader.LG/LM/TestLM.cs @@ -1,4 +1,7 @@ -using Microsoft.VisualStudio.TestTools.UnitTesting; +using System.Linq; +using ChanSort.Api; +using ChanSort.Loader.LG; +using Microsoft.VisualStudio.TestTools.UnitTesting; namespace Test.Loader.LG { @@ -37,5 +40,51 @@ namespace Test.Loader.LG this.ExecuteTest("LM/xxLM860V-ZB99998"); } + #region TestDeletingChannel + + [TestMethod] + public void TestDeletingChannel() + { + var tempFile = TestUtils.DeploymentItem("Test.Loader.LG\\LM\\xxLM620s-ZE00001.TLL.in"); + var plugin = new TllFileSerializerPlugin(); + var ser = plugin.CreateSerializer(tempFile); + ser.Load(); + var data = ser.DataRoot; + data.ValidateAfterLoad(); + data.ApplyCurrentProgramNumbers(); + + // Pr# 127 = ORF2 HD + + var dvbs = data.GetChannelList(SignalSource.DvbS); + var orf2 = dvbs.Channels.FirstOrDefault(ch => ch.Name == "ORF2 HD"); + Assert.AreEqual(127, orf2.OldProgramNr); + Assert.AreEqual(127, orf2.NewProgramNr); + Assert.IsFalse(orf2.IsDeleted); + + orf2.NewProgramNr = -1; + var editor = new Editor(); + editor.DataRoot = data; + editor.AutoNumberingForUnassignedChannels(UnsortedChannelMode.Delete); + + Assert.IsTrue(orf2.IsDeleted); + Assert.AreEqual(0, orf2.NewProgramNr); + + // save and reload + ser.Save(tempFile); + ser = plugin.CreateSerializer(tempFile); + ser.Load(); + data = ser.DataRoot; + data.ValidateAfterLoad(); + data.ApplyCurrentProgramNumbers(); + + dvbs = data.GetChannelList(SignalSource.DvbS); + orf2 = dvbs.Channels.FirstOrDefault(ch => ch.Name == "ORF2 HD"); + + Assert.IsTrue(orf2.IsDeleted); + Assert.AreEqual(-1, orf2.OldProgramNr); + Assert.AreEqual(-1, orf2.NewProgramNr); + } + #endregion + } } diff --git a/source/Test.Loader.LG/Test.Loader.LG.csproj b/source/Test.Loader.LG/Test.Loader.LG.csproj index 6b7eb56..958af35 100644 --- a/source/Test.Loader.LG/Test.Loader.LG.csproj +++ b/source/Test.Loader.LG/Test.Loader.LG.csproj @@ -11,7 +11,7 @@ Properties Test.Loader.LG Test.Loader.LG - v4.5.2 + v4.6 512 {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} @@ -107,6 +107,10 @@ {E972D8A1-2F5F-421C-AC91-CFF45E5191BE} ChanSort.Loader.LG + + {68cfcb2f-b52a-43a1-aa5c-5d64a1d655d2} + Test.Loader + diff --git a/source/Test.Loader.LG/TestBase.cs b/source/Test.Loader.LG/TestBase.cs index 41b4cc5..b5c5ef6 100644 --- a/source/Test.Loader.LG/TestBase.cs +++ b/source/Test.Loader.LG/TestBase.cs @@ -20,10 +20,10 @@ namespace Test.Loader.LG protected void ExecuteTest(string modelAndBaseName) { // copy required input and assertion files - DeploymentItem("ChanSort.Loader.LG\\ChanSort.Loader.LG.ini"); - DeploymentItem("Test.Loader.LG\\" + modelAndBaseName + ".TLL.in"); - DeploymentItem("Test.Loader.LG\\" + modelAndBaseName + ".csv.in"); - DeploymentItem("Test.Loader.LG\\" + modelAndBaseName + ".TLL.out"); + TestUtils.DeploymentItem("ChanSort.Loader.LG\\ChanSort.Loader.LG.ini"); + TestUtils.DeploymentItem("Test.Loader.LG\\" + modelAndBaseName + ".TLL.in"); + TestUtils.DeploymentItem("Test.Loader.LG\\" + modelAndBaseName + ".csv.in"); + TestUtils.DeploymentItem("Test.Loader.LG\\" + modelAndBaseName + ".TLL.out"); var baseName = Path.GetFileNameWithoutExtension(modelAndBaseName); @@ -35,6 +35,7 @@ namespace Test.Loader.LG // verify channel name, number, favorites, ... against a reference list var data = serializer.DataRoot; + data.ValidateAfterLoad(); data.ApplyCurrentProgramNumbers(); AssertRefListContent(data, baseName + ".csv.in"); @@ -78,7 +79,7 @@ namespace Test.Loader.LG { MemoryStream mem = new MemoryStream(); var writer = new StreamWriter(mem); - CsvRefListSerializer.Save(writer, dataRoot); + CsvRefListSerializer.Save(writer, dataRoot, false); // don't include deleted channels to maintain compatibility between new code and old test files writer.Flush(); mem.Seek(0, SeekOrigin.Begin); var actual = new StreamReader(mem).ReadToEnd(); @@ -115,47 +116,6 @@ namespace Test.Loader.LG } #endregion - #region DeploymentItem() - private string baseDir; - private string destDir; - - /// - /// DeploymentItemAttribute doesn't work with the combination of VS2010, ReSharper 7.1.3, Target Framework 3.5 - /// - protected void DeploymentItem(string file) - { - if (this.baseDir == null) - { - this.baseDir = this.GetSolutionBaseDir(); - this.destDir = Path.GetDirectoryName(this.GetType().Assembly.Location); - } - - File.Copy(baseDir + "\\" + file, destDir + "\\" + Path.GetFileName(file), true); - } - #endregion - - #region GetSolutionBaseDir() - protected string GetSolutionBaseDir() - { - var dir = Path.GetDirectoryName(this.GetType().Assembly.Location); - do - { - if (File.Exists(dir + "\\ChanSort.sln")) - return dir; - dir = Path.GetDirectoryName(dir); - } while (!string.IsNullOrEmpty(dir)); - - dir = Environment.CurrentDirectory; - do - { - if (File.Exists(dir + "\\ChanSort.sln")) - return dir; - dir = Path.GetDirectoryName(dir); - } while (!string.IsNullOrEmpty(dir)); - - throw new InvalidOperationException("Cannot determine base directory of ChanSort solution"); - } - #endregion #region TearDown() [TestCleanup] @@ -169,9 +129,8 @@ namespace Test.Loader.LG #region GenerateTestFiles() protected void GenerateTestFiles(string modelAndBaseName, bool moveChannels = true) { - DeploymentItem("ChanSort.Loader.LG\\ChanSort.Loader.LG.ini"); - string solutionDir = this.GetSolutionBaseDir(); - var testDataDir = solutionDir + "\\Test.Loader.LG\\" + Path.GetDirectoryName(modelAndBaseName); + TestUtils.DeploymentItem("ChanSort.Loader.LG\\ChanSort.Loader.LG.ini"); + var testDataDir = TestUtils.GetSolutionBaseDir() + "\\Test.Loader.LG\\" + Path.GetDirectoryName(modelAndBaseName); var basename = Path.GetFileNameWithoutExtension(modelAndBaseName); // copy .TLL.in diff --git a/source/Test.Loader.LG/app.config b/source/Test.Loader.LG/app.config index de82893..8935d57 100644 --- a/source/Test.Loader.LG/app.config +++ b/source/Test.Loader.LG/app.config @@ -1,3 +1,3 @@ - + diff --git a/source/Test.Loader.Panasonic/PanasonicSvlTest.cs b/source/Test.Loader.Panasonic/PanasonicSvlTest.cs index 3ec394e..d87be03 100644 --- a/source/Test.Loader.Panasonic/PanasonicSvlTest.cs +++ b/source/Test.Loader.Panasonic/PanasonicSvlTest.cs @@ -11,13 +11,6 @@ namespace Test.Loader.Panasonic [TestClass] public class PanasonicSvlTest { - private static readonly string filesDir; - - static PanasonicSvlTest() - { - filesDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\TestFiles\\"; - } - #region TestSatChannelsAddedToCorrectLists [TestMethod] public void TestSatChannelsAddedToCorrectLists() @@ -38,8 +31,9 @@ namespace Test.Loader.Panasonic #region TestChannelsAddedToCorrectList private void TestChannelsAddedToCorrectLists(string fileName, SignalSource signalSource, int expectedTotal, int expectedTv, int expectedRadio) { + var tempFile = TestUtils.DeploymentItem("Test.Loader.Panasonic\\TestFiles\\" + fileName); var plugin = new SerializerPlugin(); - var ser = plugin.CreateSerializer(filesDir + fileName); + var ser = plugin.CreateSerializer(tempFile); ser.Load(); var root = ser.DataRoot; @@ -55,5 +49,52 @@ namespace Test.Loader.Panasonic #endregion + #region TestDeletingChannel + + [TestMethod] + public void TestDeletingChannel() + { + var tempFile = TestUtils.DeploymentItem("Test.Loader.Panasonic\\TestFiles\\svl-sat.db"); + var plugin = new SerializerPlugin(); + var ser = plugin.CreateSerializer(tempFile); + ser.Load(); + var data = ser.DataRoot; + data.ValidateAfterLoad(); + data.ApplyCurrentProgramNumbers(); + + // Pr# 130 = ORF2E + + var dvbs = data.GetChannelList(SignalSource.DvbS); + var orf2e = dvbs.Channels.FirstOrDefault(ch => ch.Name == "ORF2E"); + Assert.IsNotNull(orf2e); + Assert.AreEqual(130, orf2e.OldProgramNr); + Assert.AreEqual(130, orf2e.NewProgramNr); + Assert.IsFalse(orf2e.IsDeleted); + + orf2e.NewProgramNr = -1; + var editor = new Editor(); + editor.DataRoot = data; + editor.AutoNumberingForUnassignedChannels(UnsortedChannelMode.Delete); + + Assert.IsTrue(orf2e.IsDeleted); + Assert.IsTrue(orf2e.NewProgramNr == 0); + Assert.AreEqual(1, dvbs.Channels.Count(ch => ch.NewProgramNr <= 0)); + + + // save and reload + ser.Save(tempFile); + ser = plugin.CreateSerializer(tempFile); + ser.Load(); + data = ser.DataRoot; + data.ValidateAfterLoad(); + data.ApplyCurrentProgramNumbers(); + + // channel was deleted from database + dvbs = data.GetChannelList(SignalSource.DvbS); + orf2e = dvbs.Channels.FirstOrDefault(ch => ch.Name == "ORF2E"); + Assert.IsNull(orf2e); + } + #endregion + } } diff --git a/source/Test.Loader.Panasonic/Test.Loader.Panasonic.csproj b/source/Test.Loader.Panasonic/Test.Loader.Panasonic.csproj index 9af19c3..1cfdf05 100644 --- a/source/Test.Loader.Panasonic/Test.Loader.Panasonic.csproj +++ b/source/Test.Loader.Panasonic/Test.Loader.Panasonic.csproj @@ -10,7 +10,7 @@ Properties Test.Loader.Panasonic Test.Loader.Panasonic - v4.8 + v4.6 512 {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 15.0 @@ -20,6 +20,7 @@ UnitTest + true @@ -40,7 +41,7 @@ true - bin\x86\Debug\ + ..\Debug\ DEBUG;TRACE full x86 @@ -72,12 +73,8 @@ - - Always - - - Always - + + @@ -89,6 +86,10 @@ {68da8072-3a29-4076-9f64-d66f38349585} ChanSort.Loader.Panasonic + + {68cfcb2f-b52a-43a1-aa5c-5d64a1d655d2} + Test.Loader + diff --git a/source/Test.Loader.PhilipsXml/PhilipsXmlTest.cs b/source/Test.Loader.PhilipsXml/PhilipsXmlTest.cs index 9f7932d..1cdc1ab 100644 --- a/source/Test.Loader.PhilipsXml/PhilipsXmlTest.cs +++ b/source/Test.Loader.PhilipsXml/PhilipsXmlTest.cs @@ -11,13 +11,6 @@ namespace Test.Loader.PhilipsXml [TestClass] public class PhilipsXmlTest { - private static readonly string filesDir; - - static PhilipsXmlTest() - { - filesDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\TestFiles\\"; - } - #region TestFormat1SatChannelsAddedToCorrectLists [TestMethod] public void TestFormat1SatChannelsAddedToCorrectLists() @@ -26,7 +19,6 @@ namespace Test.Loader.PhilipsXml } #endregion - #region TestFormat1CableChannelsAddedToCorrectLists [TestMethod] public void TestFormat1CableChannelsAddedToCorrectLists() @@ -48,8 +40,9 @@ namespace Test.Loader.PhilipsXml #region TestChannelsAddedToCorrectList private void TestChannelsAddedToCorrectLists(string fileName, SignalSource signalSource, int expectedTotal, int expectedTv, int expectedRadio) { + var tempFile = TestUtils.DeploymentItem("Test.Loader.PhilipsXml\\TestFiles\\" + fileName); var plugin = new SerializerPlugin(); - var ser = plugin.CreateSerializer(filesDir + fileName); + var ser = plugin.CreateSerializer(tempFile); ser.Load(); var root = ser.DataRoot; @@ -64,5 +57,52 @@ namespace Test.Loader.PhilipsXml } #endregion + #region TestDeletingChannel + + [TestMethod] + public void TestDeletingChannel() + { + var tempFile = TestUtils.DeploymentItem("Test.Loader.PhilipsXml\\TestFiles\\dvbs.xml"); + var plugin = new SerializerPlugin(); + var ser = plugin.CreateSerializer(tempFile); + ser.Load(); + var data = ser.DataRoot; + data.ValidateAfterLoad(); + data.ApplyCurrentProgramNumbers(); + + // Pr# 42 = NTV HD + + var dvbs = data.GetChannelList(SignalSource.DvbS); + var ntvHd = dvbs.Channels.FirstOrDefault(ch => ch.Name == "NTV HD"); + Assert.IsNotNull(ntvHd); + Assert.AreEqual(42, ntvHd.OldProgramNr); + Assert.AreEqual(42, ntvHd.NewProgramNr); + Assert.IsFalse(ntvHd.IsDeleted); + + ntvHd.NewProgramNr = -1; + var editor = new Editor(); + editor.DataRoot = data; + editor.AutoNumberingForUnassignedChannels(UnsortedChannelMode.Delete); + + Assert.IsTrue(ntvHd.IsDeleted); + Assert.IsTrue(ntvHd.NewProgramNr == 0); + Assert.AreEqual(1, dvbs.Channels.Count(ch => ch.NewProgramNr <= 0)); + + + // save and reload + ser.Save(tempFile); + ser = plugin.CreateSerializer(tempFile); + ser.Load(); + data = ser.DataRoot; + data.ValidateAfterLoad(); + data.ApplyCurrentProgramNumbers(); + + // channel was deleted from database + dvbs = data.GetChannelList(SignalSource.DvbS); + ntvHd = dvbs.Channels.FirstOrDefault(ch => ch.Name == "NTV HD"); + Assert.IsNull(ntvHd); + } + #endregion + } } diff --git a/source/Test.Loader.PhilipsXml/Test.Loader.PhilipsXml.csproj b/source/Test.Loader.PhilipsXml/Test.Loader.PhilipsXml.csproj index ed3df47..730c200 100644 --- a/source/Test.Loader.PhilipsXml/Test.Loader.PhilipsXml.csproj +++ b/source/Test.Loader.PhilipsXml/Test.Loader.PhilipsXml.csproj @@ -10,7 +10,7 @@ Properties Test.Loader.PhilipsXml Test.Loader.PhilipsXml - v4.8 + v4.6 512 {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 15.0 @@ -20,6 +20,7 @@ UnitTest + true @@ -40,7 +41,7 @@ true - bin\x86\Debug\ + ..\Debug\ DEBUG;TRACE full x86 @@ -82,18 +83,16 @@ {d7bafd55-50f5-46c3-a76b-2193bed5358f} ChanSort.Loader.PhilipsXml + + {68cfcb2f-b52a-43a1-aa5c-5d64a1d655d2} + Test.Loader + - - Always - - - Always - - - Always - + + + diff --git a/source/Test.Loader.Samsung/FileFormatDetectionTest.cs b/source/Test.Loader.Samsung/FileFormatDetectionTest.cs index c633ef4..e696501 100644 --- a/source/Test.Loader.Samsung/FileFormatDetectionTest.cs +++ b/source/Test.Loader.Samsung/FileFormatDetectionTest.cs @@ -8,41 +8,12 @@ namespace Test.Loader.Samsung [TestClass] public class FileFormatDetectionTest { - private static readonly string RootPath; - - static FileFormatDetectionTest() - { - RootPath = GetSolutionBaseDir() + @"\Test.Loader.Samsung\TestFiles\"; - } - - #region GetSolutionBaseDir() - protected static string GetSolutionBaseDir() - { - var dir = Path.GetDirectoryName(typeof(FileFormatDetectionTest).Assembly.Location); - do - { - if (File.Exists(dir + "\\ChanSort.sln")) - return dir; - dir = Path.GetDirectoryName(dir); - } while (!string.IsNullOrEmpty(dir)); - - dir = Environment.CurrentDirectory; - do - { - if (File.Exists(dir + "\\ChanSort.sln")) - return dir; - dir = Path.GetDirectoryName(dir); - } while (!string.IsNullOrEmpty(dir)); - - throw new InvalidOperationException("Cannot determine base directory of ChanSort solution"); - } - #endregion - [TestMethod] public void LoadFileWithExcessiveHighFrequency_1() { // this seems to be a corrupt file caused by a buffer-overflow from analog channel names into the frequency data bytes - var s = new ScmSerializer(RootPath + @"channel_list_UE55H6470_1201-Suchlauf-2015-04-26.scm"); + var tempFile = TestUtils.DeploymentItem("Test.Loader.Samsung\\TestFiles\\channel_list_UE55H6470_1201-Suchlauf-2015-04-26.scm"); + var s = new ScmSerializer(tempFile); s.Load(); } @@ -50,7 +21,8 @@ namespace Test.Loader.Samsung public void LoadFileWithExcessiveHighFrequency_2() { // this seems to be a corrupt file caused by a buffer-overflow from analog channel names into the frequency data bytes - var s = new ScmSerializer(RootPath + @"channel_list_UE55H6470_1201.scm"); + var tempFile = TestUtils.DeploymentItem("Test.Loader.Samsung\\TestFiles\\channel_list_UE55H6470_1201.scm"); + var s = new ScmSerializer(tempFile); s.Load(); } @@ -58,7 +30,8 @@ namespace Test.Loader.Samsung public void LoadRenamedFile_HE40Cxxx_1201() { // This file uses the 1201 format (E,F,H,J), but has a "C" in its model name - var s = new ScmSerializer(RootPath + @"E_format_with_C_model_name.scm"); + var tempFile = TestUtils.DeploymentItem("Test.Loader.Samsung\\TestFiles\\E_format_with_C_model_name.scm"); + var s = new ScmSerializer(tempFile); s.Load(); Assert.AreEqual("E", s.Series); } @@ -67,7 +40,8 @@ namespace Test.Loader.Samsung public void LoadRenamedFile_LT24B_1201() { // This file uses the 1201 format (E,F,H,J), but has a "B" in its model name - var s = new ScmSerializer(RootPath + @"E_format_with_C_model_name.scm"); + var tempFile = TestUtils.DeploymentItem("Test.Loader.Samsung\\TestFiles\\E_format_with_B_model_name.scm"); + var s = new ScmSerializer(tempFile); s.Load(); Assert.AreEqual("E", s.Series); } @@ -76,7 +50,8 @@ namespace Test.Loader.Samsung public void LoadJSeriesWithScm1201Format() { // J-series model with E-J series SCM format - var s = new ScmSerializer(RootPath + @"channel_list_UE32J5170_1201_orig.scm"); + var tempFile = TestUtils.DeploymentItem("Test.Loader.Samsung\\TestFiles\\channel_list_UE32J5170_1201_orig.scm"); + var s = new ScmSerializer(tempFile); s.Load(); Assert.AreEqual("E", s.Series); } diff --git a/source/Test.Loader.Samsung/SamsungTest.cs b/source/Test.Loader.Samsung/SamsungTest.cs index 18ad271..6c2e4dc 100644 --- a/source/Test.Loader.Samsung/SamsungTest.cs +++ b/source/Test.Loader.Samsung/SamsungTest.cs @@ -5,9 +5,10 @@ using System.IO; using System.Linq; using System.Text; using Microsoft.VisualStudio.TestTools.UnitTesting; +using ChanSort.Api; using ChanSort.Loader.Samsung; -namespace Test.Loader +namespace Test.Loader.Samsung { [TestClass] public class SamsungTest : LoaderTestBase @@ -142,5 +143,109 @@ namespace Test.Loader return fileName.StartsWith("channel_list_") ? fileName.Substring(13, fileName.IndexOf('_', 14) - 13) : fileName; } #endregion + + #region TestDeletingSatChannel + + [TestMethod] + public void TestDeletingSatChannel() + { + var tempFile = TestUtils.DeploymentItem("Test.Loader.Samsung\\TestFiles\\channel_list_T_J_ohne_smart_12.scm"); + var plugin = new ScmSerializerPlugin(); + var ser = plugin.CreateSerializer(tempFile); + ser.Load(); + var data = ser.DataRoot; + data.ValidateAfterLoad(); + data.ApplyCurrentProgramNumbers(); + + // Pr# 122 = ORF2W HD + + var dvbs = data.GetChannelList(SignalSource.DvbS); + var orf2w = dvbs.Channels.FirstOrDefault(ch => ch.Name == "ORF2W HD"); + Assert.AreEqual(122, orf2w.OldProgramNr); + Assert.AreEqual(122, orf2w.NewProgramNr); + Assert.IsFalse(orf2w.IsDeleted); + + orf2w.NewProgramNr = -1; + var editor = new Editor(); + editor.DataRoot = data; + editor.AutoNumberingForUnassignedChannels(UnsortedChannelMode.Delete); + + Assert.IsTrue(orf2w.IsDeleted); + Assert.AreNotEqual(-1, orf2w.NewProgramNr); + Assert.AreEqual(0, dvbs.Channels.Count(ch => ch.NewProgramNr <= 0)); + + + // save and reload + ser.Save(tempFile); + ser = plugin.CreateSerializer(tempFile); + ser.Load(); + data = ser.DataRoot; + data.ValidateAfterLoad(); + data.ApplyCurrentProgramNumbers(); + + + dvbs = data.GetChannelList(SignalSource.DvbS); + orf2w = dvbs.Channels.FirstOrDefault(ch => ch.Name == "ORF2W HD"); + + // For .scm sat-channels, there is no known "IsDeleted" flag. Instead, the "IsUsed" flag is set to false when saving a channel with IsDeleted==true + // When loading the file back, it can no longer be distinguished between a garbage record and a deleted record. The loader doesn't add IsUsed=false channels to the list + Assert.IsNull(orf2w); + //Assert.IsTrue(orf2w.IsDeleted); + //Assert.AreEqual(-1, orf2w.OldProgramNr); + } + #endregion + + #region TestDeletingCableChannel + + [TestMethod] + public void TestDeletingCableChannel() + { + var tempFile = TestUtils.DeploymentItem("Test.Loader.Samsung\\TestFiles\\Samsung_upcmini_EF_12.scm"); + var plugin = new ScmSerializerPlugin(); + var ser = plugin.CreateSerializer(tempFile); + ser.Load(); + var data = ser.DataRoot; + data.ValidateAfterLoad(); + data.ApplyCurrentProgramNumbers(); + + // Pr# 2 = ORF 2 Wien HD + + var dvbc = data.GetChannelList(SignalSource.DvbC); + var orf2w = dvbc.Channels.FirstOrDefault(ch => ch.Name == "ORF 2 Wien HD"); + Assert.IsNotNull(orf2w); + Assert.AreEqual(2, orf2w.OldProgramNr); + Assert.AreEqual(2, orf2w.NewProgramNr); + Assert.IsFalse(orf2w.IsDeleted); + + orf2w.NewProgramNr = -1; + var editor = new Editor(); + editor.DataRoot = data; + editor.AutoNumberingForUnassignedChannels(UnsortedChannelMode.Delete); + + Assert.IsTrue(orf2w.IsDeleted); + Assert.AreNotEqual(-1, orf2w.NewProgramNr); + Assert.AreEqual(0, dvbc.Channels.Count(ch => ch.NewProgramNr <= 0)); + + + // save and reload + ser.Save(tempFile); + ser = plugin.CreateSerializer(tempFile); + ser.Load(); + data = ser.DataRoot; + data.ValidateAfterLoad(); + data.ApplyCurrentProgramNumbers(); + + + dvbc = data.GetChannelList(SignalSource.DvbC); + orf2w = dvbc.Channels.FirstOrDefault(ch => ch.Name == "ORF 2 Wien HD"); + + // For .scm sat-channels, there is no known "IsDeleted" flag. Instead, the "IsUsed" flag is set to false when saving a channel with IsDeleted==true + // When loading the file back, it can no longer be distinguished between a garbage record and a deleted record. The loader doesn't add IsUsed=false channels to the list + Assert.IsNotNull(orf2w); + Assert.IsTrue(orf2w.IsDeleted); + Assert.AreEqual(-1, orf2w.OldProgramNr); + } + #endregion + } } diff --git a/source/Test.Loader.Samsung/Test.Loader.Samsung.csproj b/source/Test.Loader.Samsung/Test.Loader.Samsung.csproj index a7c90c1..9eded4a 100644 --- a/source/Test.Loader.Samsung/Test.Loader.Samsung.csproj +++ b/source/Test.Loader.Samsung/Test.Loader.Samsung.csproj @@ -8,7 +8,7 @@ Properties Test.Loader.Samsung Test.Loader.Samsung - v4.5.2 + v4.6 512 {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 10.0 @@ -16,6 +16,7 @@ $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages False UnitTest + true @@ -36,7 +37,7 @@ true - bin\x86\Debug\ + ..\Debug\ DEBUG;TRACE full x86 @@ -90,11 +91,13 @@ + + diff --git a/source/Test.Loader.Samsung/TestFiles/Channel_list_T_J_ohne_smart_12.scm b/source/Test.Loader.Samsung/TestFiles/Channel_list_T_J_ohne_smart_12.scm new file mode 100644 index 0000000000000000000000000000000000000000..65bf5d50c6f3088e71f36ad9f93b6016073e274f GIT binary patch literal 57186 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

|ekr~p|)xi7LOAZv=u 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¬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 literal 0 HcmV?d00001 diff --git a/source/Test.Loader.SamsungJ/SamsungZipTest.cs b/source/Test.Loader.SamsungJ/SamsungZipTest.cs index 1a5a596..9cb2980 100644 --- a/source/Test.Loader.SamsungJ/SamsungZipTest.cs +++ b/source/Test.Loader.SamsungJ/SamsungZipTest.cs @@ -11,13 +11,6 @@ namespace Test.Loader.SamsungJ [TestClass] public class SamsungZipTest { - private static readonly string filesDir; - - static SamsungZipTest() - { - filesDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\TestFiles\\"; - } - #region TestSatChannelsAddedToCorrectLists [TestMethod] public void TestSatChannelsAddedToCorrectLists() @@ -38,7 +31,7 @@ namespace Test.Loader.SamsungJ [TestMethod] public void TestAntennaChannelsAddedToCorrectLists() { - this.TestChannelsAddedToCorrectLists("Channel_list_T-KTSUDEUC-1007.1.zip", SignalSource.DvbT, 77, 71, 4, 3995, "Irdeto Code 4"); + this.TestChannelsAddedToCorrectLists("Channel_list_T-KTSUDEUC-1007.2.zip", SignalSource.DvbT, 77, 71, 4, 3995, "Irdeto Code 4"); } #endregion @@ -46,8 +39,9 @@ namespace Test.Loader.SamsungJ #region TestChannelsAddedToCorrectList private void TestChannelsAddedToCorrectLists(string fileName, SignalSource signalSource, int expectedTotal, int expectedTv, int expectedRadio, int dataProgramSid = 0, string dataProgramName = null) { + var tempFile = TestUtils.DeploymentItem("Test.Loader.SamsungJ\\TestFiles\\" + fileName); var plugin = new DbSerializerPlugin(); - var ser = plugin.CreateSerializer(filesDir + fileName); + var ser = plugin.CreateSerializer(tempFile); ser.Load(); var root = ser.DataRoot; @@ -67,5 +61,53 @@ namespace Test.Loader.SamsungJ } } #endregion + + #region TestDeletingChannel + + [TestMethod] + public void TestDeletingChannel() + { + var tempFile = TestUtils.DeploymentItem("Test.Loader.SamsungJ\\TestFiles\\Channel_list_T-KTSUDEUC-1007.3.zip"); + var plugin = new DbSerializerPlugin(); + var ser = plugin.CreateSerializer(tempFile); + ser.Load(); + var data = ser.DataRoot; + data.ValidateAfterLoad(); + data.ApplyCurrentProgramNumbers(); + + // Pr# 418 = ORF2E + + var dvbs = data.GetChannelList(SignalSource.DvbS); + var orf2e = dvbs.Channels.FirstOrDefault(ch => ch.Name == "ORF2E"); + Assert.IsNotNull(orf2e); + Assert.AreEqual(418, orf2e.OldProgramNr); + Assert.AreEqual(418, orf2e.NewProgramNr); + Assert.IsFalse(orf2e.IsDeleted); + + orf2e.NewProgramNr = -1; + var editor = new Editor(); + editor.DataRoot = data; + editor.AutoNumberingForUnassignedChannels(UnsortedChannelMode.Delete); + + Assert.IsTrue(orf2e.IsDeleted); + Assert.AreNotEqual(-1, orf2e.NewProgramNr); + Assert.AreEqual(1, dvbs.Channels.Count(ch => ch.NewProgramNr <= 0)); + + + // save and reload + ser.Save(tempFile); + ser = plugin.CreateSerializer(tempFile); + ser.Load(); + data = ser.DataRoot; + data.ValidateAfterLoad(); + data.ApplyCurrentProgramNumbers(); + + + dvbs = data.GetChannelList(SignalSource.DvbS); + orf2e = dvbs.Channels.FirstOrDefault(ch => ch.Name == "ORF2E"); + Assert.IsNull(orf2e); + } + #endregion + } } diff --git a/source/Test.Loader.SamsungJ/Test.Loader.SamsungJ.csproj b/source/Test.Loader.SamsungJ/Test.Loader.SamsungJ.csproj index 9b5f1c0..092ff14 100644 --- a/source/Test.Loader.SamsungJ/Test.Loader.SamsungJ.csproj +++ b/source/Test.Loader.SamsungJ/Test.Loader.SamsungJ.csproj @@ -10,7 +10,7 @@ Properties Test.Loader.SamsungJ Test.Loader.SamsungJ - v4.8 + v4.6 512 {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 15.0 @@ -20,6 +20,7 @@ UnitTest + true @@ -40,7 +41,7 @@ true - bin\x86\Debug\ + ..\Debug\ DEBUG;TRACE full x86 @@ -72,12 +73,10 @@ - - Always - - - Always - + + + + @@ -88,6 +87,10 @@ {33897002-0537-49a4-b963-a18d17311b3d} ChanSort.Loader.SamsungJ + + {68cfcb2f-b52a-43a1-aa5c-5d64a1d655d2} + Test.Loader + diff --git a/source/Test.Loader.SamsungJ/TestFiles/Channel_list_T-KTSUDEUC-1007.2.zip b/source/Test.Loader.SamsungJ/TestFiles/Channel_list_T-KTSUDEUC-1007.2.zip new file mode 100644 index 0000000000000000000000000000000000000000..c126e7fe58f814e131e55f9a45472fd2df75a332 GIT binary patch literal 117497 zcmY&fQ+ORtu#auqww;`~v7LWxx3N!b+fHM%v8~278Z~xu&h34;5BK3Wvx9GUXP*Y& zswqOl;6Ok?Ap8Ra1T{8&Y9Ri?yJKz3Df=-d514Bovg_?ul&T}F)kLswyO>8WeiPy5MuMY!6AMYMx~C^pP`jdwY1 zTv94)2q!!qDV)GU;+1%?_As;`ZLF6Zgu_<=m@{CL;A_;>#dX#KL9Y7UyS!z7l7C9| z`aUW~(1(g0(KBTWV$J)f1^Z(E=b$fBqbeL{rnxSV zF+a6W6yhL8JR9?;&uZkqR~8%I?`wPBc-Fd^w=;QHj(rsN9?mGtmZRdFcjw96BXn`3 ziTB992a-_dSHX(>;Ya&MMi>p;8vB(f`F|4FUMZp)|LUY?Wv$d(TeR)4ky_ywF2#nF zmUUBWRspLPqYpMo=3mMBBKBr#4xaUXm`Kh#0Mxs<>c68$0>uj9t#t_dbSHglYAUFO z{a-mg!*g^IiBLCc-2K^q{l1qukDo(fBpr?wfo%B=eYr&Z^c&~q2d#YC->uwT2Akd# z9}r(E*3{lGKUW|GkLl6xf-#E|IYs`&3L9C*tRTBu7k0GgUx#Woqp8>OS&@ea3PFC& z+zLgLmbPILeVR*(@tyM?M-^1j+^;sD0e!hHrej`@u$I~mTki?~X35FC zEi(EObp8W_W&l}X2}Ey36_Xq<{FOfMdULcX1Q7O=eTZnE4Ti6tWIuDT4R40_c00XI zF<|6SFxk64vESLBiHKFJ0_HhJ6=qHOOFb(8A);B`?-4Us*;A=VSP{b^HsY<}{z zH=b!)&aUGrx}=o8)YN<=e@&tDu4ZNRpsXi|%De?wt=y>6^En}O!qrhJo=UybZAx*Q zCU48#^X_;Pstx;2qS~PE3efSjusU(tG^@>1O5YptGNa99TC<;ST#Oy-E6rx2SGRKG zMm>iSulC2# zd5|HgndZZnMi>$1(AcXOqhuSxLHH}YM%c78f-Q~}LS_ucLSZtcv<$+ZxCx9?8Vm>? z|2wR#V}~Ql6QFGU=+9Tl+B})vk)ut>S`@`+x(IWtOX5wPS`X%Xg-8v_?^*3^D7&c z)FCEythhtDM_z~r2A`go{-edO=9qc@q?rEQ&lwnf%GgUj`hMC7WMPnwRAB_ z+B9Iko%|EWrN3*@BBNPhu+9K@Qzzg{xUN1co>_I^Xu31Ll+Q`Gz`#wJd9cXbYsIG# zh-h!!UiL-rEg6UWXCBv}5B!q4{`v5>hKAEy$?+!iWvau=b(_6-r6R7((ideyy#+3Y zqH4&zLQwcROJ@zVH&8)t4S}L`LqrED!SX&8p}a%Wa2^t2kz_t6uKTefJq<=Rf?u+q z%|>cpo~bpY1WZJY%jRnU9Z(IM${U?tE>Z^z;$1jGu)=2X7X9xM65dXx7?HK(v*|}1c8QJd5bvFIJte0tCho=h2@LtSNNHF9UhU{G zSm894Yc3RBTiDjo6CCX4Ul6__L;y(7MRPah;~ZadI07;Dpnk?yrm=yxWdYa`*t~5% zC8VOp{5Y4$>5NjV>CH+@OM=K>{Tk;z?jSh_69t++?85B(UdG=vYkKES9e`-hVwl9o zFUjRDUR1>Htszy4w@_w?yS_|v=XH9qp+KVjdOSa#k znL1{zv1c-!-xVii7;Srnt%`(!t1-52v3 zW3rv))RMdQnM+|g2RnCJPgW(;{!tp<#!+Y-X1(!q2hHPgJwy7Th@Eyk@G&zHitX6X z7hccK5ORi?_^EdtEP54Wa~z&?=rD-lF=ShwIup@3N{id?8lP zP8~Q!8sUkJ`zZ(eXsbi=J2o#&Xo{+w*?_e-*PL)rVQP;?sv0Ggep+yJA|PrYt0Y2D z#U(h|4t5sBx6}fa`dZd%SQb>l9t!N0@pJoT;Zkr~x}(#|k00c!)UwiSuqW~uQF+@E zZ22*!$Lgd+HOp9`*ZY)F33<*5PQDuX=Jv2qIuy4mli?DE>C`g6HXuE2pu~Fc0CmpA zMvturA6iw~Yt$;uJY&=Rs6@>=Y!HJr!pdY@#Ww`B8k@Er2cjv!aZGLVcp!^;i>_x!7 zR)gNRSkQuz!cWQ;%Err*$TmD$S*+Bo3KVPJ0wf)$Q{T0J__~9E)JXl=eY59rCaI?d|?%o0} zEOh#9vTuw!54EFu-q*e3pm;5Y}~a&3KrLd3e{=VbX& zzIl=M*0>7hi(U#F*O@h8`%%tV$M?$y3=(m^kubX~IJ=CVHJ)$GC-1d2`c|aQA2i(R zR?cr#88_@4CtR>6U+{{1VA*o0r0QMr~*pQ zsyc;j)BPEDus!5{DgYe&ehtgOAEW90YsBL%NuNjO0uhE^9o4yx&pszEZGaB*LMJzJ z+3K}i;cunMLOeG1#lYhCl7RRqAY#knepPdg#E+v3*;rpzb(6AQOSS$9 z!l%D-0g&MX1Rh!`RwPoF6tb5^o3}2HM7O;|!0@g?Ht*LodP(v?BbK5cB)=Tb{*xvO5*t7J7o5tBg!~ zM;(hngmm(kf)6kRV}Y@rXuCfnxdX8QuwpvG>9*7Xg4g+{TdXcCxg@l{aSWV3v&x;) z=Llay4zSWi(d&)L=1ihC`pTS&IEVEN-8ed9iW}qsTX6C7KaY}pjOu*g3 zFtRYR6fI6wGu2TWbl1?+ZSF%eu`};M!G%a;#sIgOil!4o6nI!T%Hg^y6ydva3gGv5 z*EjF>L?h}{FGl6JkIk0Vx$80uvAlcj1>9B_j?v4m+F_NRoXu#ihaLAb#mb2q6xhST z*mznVGFhWAwgh@_zgy3zwz8z4KJ2@-*A_NOsG>l+x$|-NpD2*3Nq`+I!B!&fa7Bm(eFTKa&x44W7K)#p~PR#NeReqS#X{9+X0opNq6ZTx_F16 zM}5aB{!8Iv&X@JTXx4+Sm2Ev&v8?y^yoLP)y%WW-neTJKe(oUu%G$N4w}Ib~5xS5C zx^>qdiGr2TF4O$3={~SY+*@JlhHt0c64%bBbIL;{=2&LpksnTbv(RvZ9fz@7aCj3> zqgDX-H@fi)fAn|f~|HFysS%n z$FCswGIhGZU_ZGSOp^hdS>?xKyi$fdZR6#mQD%?D8Blpz1+e0 zB-N0wTc`KU{E3;4o}e|H2zNiK8PL7>z{@m0Z00M-T5+`b&ox<*UC4;jGb#~^yy`~Z zot?7F;gDS)Ef>2hH2JT*yM5W&*_|c5!nc?e7-*FbsE=i@YlqY1)6u`HGkVAFRCU>u zavol$9bNNmV5l)9apBgHs%bHb=8Mc zX+`1cci#8Ai36vk|0wNbzRP`&dN0nucz-4H(wdj7_B-#EIYx;HHG2w*znHtpxpDp0 z22o`!GdM|5wkf=B_|=`y6qvh&yONrG(I7D-lhtt#;|Jqc32d1L)SdzNf}hxhc?%pt z3(*px@!NG0h;u-5wn@54slJnlM@=rq59 z3`3O$>lH%yo;F#oUm5ASU0qUN+vd75S0D`4+Cjv*^)ILmSk3kL@@|o+5N%NMh6>c zTo9wf=`72Vda_v_ghQUp*?wFvrYP_8%Qyo#594U=7b^G2GA7JqMSnTDgt`UE2jD5L z8#L_-Ra@~#;@#ZIJY@}GH%b5WmfPu&g+JuJ%}yK<`yoO5{6}hXV(u9P4{A?`Y6)$H zhxT};`h;KZS131@T+Tge4Klr>@WAkMSPt%#5JtECMkV*A=m)Z)8UZ5{7!KT6-E>S} zcxky`zgzfc3t!)tmJo09;u@m>Y?;m6dG6Ect(1x<#ZqU z3^@b-d$#pz5Xf#aaGCf88t*^70qTAC_fv!!_lnjy_{IX{wsJVKpfi;Du9UR-kv_p3 zyPtK4KX|uINm_4n{!d$pd>X1!CjDJR80(z6;67^KTZ}s7NWKCg!6uzbpnxrA-%_PCgAKt0(5=6PRb03S=@LGS~|H26;F0K=|AHAJQIoS9V9c?4!n8+ zZ@#{OQ!p2DQz^BgF&1Y3v7c0b?#Z1d`>Fl%MJLQ5T=iU)6Up_Npfaw?wF-V&vrvq# z(+mwTNW|QgAV43%GmgnZ!pY!i#G#f{9}FpnDjju z_K5wV`>otxVBS=C9o*;(A($cR+rKEdMVW&9KB^I?D?{*yQ<1YhmSZ6^!@P%TNSxg; zrb#(07}SAdQG)<2>c%)WO@;EfQBGheO+b*Y$jKLb3?MlH;uj7_{(yZC;E$#I@GV(f zi#rR8!9%EvE#pGU4KBD#ZK^^T#OTYWk{l#hphb#^tXF%S_)Uuhm(He!b!Uwg!!N^S zj)NjYT6&zLUabWZmbnMh{sq6>PQM})AhQ0oaf3Xzh2|J0p_EdC7Moa=;f6>tN5L^O zwWS#)pcp7Bl8=B?Nq~SJW@H?5#)N}2(1=@;As`5m=k$!`;FzQu^`319=bqzlH0SO7 z{OBj_Rg`h7F_ptvQ{)U}9vX-;iD}Xc3;qScIL1naGJ_?@>5OM)3KEZLk}Dg_(oZr+ z`6tdv#3a)X4LFA39L?}$0%Tga0;gm`$TaepM?2NRf-xI$j-W8%#>O<_2&quwa>@yo zUZ)XG2yId$_PxNI5;xtMqmFcOV6@OHQ%O70dG{@_b0AERkmUAY4S)iuPa+F z&RoSS;wW7S$WHRQiD}r8;h3uN$;JFAMSy;g)`%mPCdiUVF=zP~xwCxCk6yV%&P$rn zP5~nj(^;I$f!95g7!Efypep6LpGz*k`LATU(y^FPiK)RdEt0j8Q4vi_Rl?d77+UTB z_2=JzPSd{fLP9_c!2Dl--tDRv*;Hxm8PNBVErGRYADf|})n;qg`?07)L-tf#^k<10 z0rBGZTJLqf5*1=L4K`vl!r^rZ!xRk;K0d8BKK|%vIV-D-qT$}+asR4NqM!}g=$wvmDJafQHeOl3QU!JQhgej zZujcH&_cmTmqW4oZ)@1KGTu)Lx20Hs#DknqI&e04fW2xE4613aKYin3!FWrR|YUIPs>LqZ0e? z)P1)!-jCgtm2myk4h=NpIUwkP1}10u1T{t&rK98K38_$J=DPE?&0ix z`snv-tg6#sDlTKuiOh4WOpukY>9&O^$~M_*gTi|zqedp6?mY9ZypQCnfU%DZvX7zf z4rJ0JL<9d6j9*e)aK!(r9T;4AF#ZbJ7wK~Juj9{N8hK)ZszEZT;4voH;pTi)T+D|z zSFNSFZc>5Ts%>UvWpzt#oP%}nqM_|w<>@i42;vN9ble!?KFv(|v_R5cUsV03Z+xG~ z2xENld*D-}1gNBq(_VH9`@f#r5t#cwQcQ{~Ral8)YKjvrH6j$6#E~ zlTyA*2lvnar12+%1QyE6ug4!$Xkzgl?Nw-Ci3NXL4W@;y#4yEc6Vw+T>O}#`<$fF= zefcsbkbD~Qk0vL)+>H02jZ2PsaR(-oM*_fpU*LzXY3mvzK_Y`7NJoFaIdDc(+oQ^; z&U}3b+SQES37K<^?l1J7CF0$X)&G8Zd<{~yeWFLYfSCKo`VUO*vHH>*PGWt?RFBB- zJ6^woxPZxC`>MCHJ$UF=9qYKB8DFW_X1VK3e1#{CIL~6OdM?ejYMU62Y+b%2ql&Yxhg#QA_@8W@ES`t78D^+ z36DG|?jr;E{QvQD-a^6Fcd?o8`y^Tzu7Xn zoTJOsX$uD{>lx47**zTFc*Q2AH>zqIsUd|)KmfQ6&&j5d24D%e$DEH+Dg z_Ur&C=#7G~)QwzCO~&FQQN-L9fFNH08Jw>-mPShlO*i9Fw`Kwz{a@yCo%D*5&%)!i z;^+AT<~Mm`1P?G|A2wOfD1Wm?#^C#X#hbhGmOYKL8;g>tXKg;I5MwR91A2ZOnc4)CGm8Hphkm*q_g$!q{WdQu)8RWjYun}V_o|-$51wZz zoYt7(Tm!mlBe(5&&ZTrBp>#em#qL~hN6B@P(rTn$RD}DOI6bnkxyIzMq zf!7^4I~)4X1^mDcsh@mTB0(Mjq_4e?TTkQNgExK$FP|P~U{d6Mhbo`D4o^KW_X$9Y z`RnEh_!WM#H>Y@8Fd9H7?!heG2^lG%LPke3o443l`I zwCev2i*{LJb{9lr{sE1IL$AIJ{8=r)m~4LqP?z!$NG7WGTK+lu1`D_QEP%9~P?*0= zqFgrMN#DkeErQnZQP?kZ%UfPE?jd?Pee^3!t-Oi;x^XMHCoE-Y;z;BQ6zC#!z{4Z( zwRaB&d}vIA313f1+{KAAOxI$Uozw7=5nC=}Dqw;*YKg=v|S zbS?>cTjk9gTA_Q5nm!M@mTEeV_OCgE63Z#ZN*bbY$@f)Y(mrhEy5HnclwAz>$Y8xV z=GcnXngW|@R3n$Nru|J=Kk66(vtE&d0mmk|Iz<(CNk5yC&O{l%^{9?(^kOU9@$8YK z?+s2JatsU!G1E=BwS7|VA`msf)guP%`DJ?-z})FPTI(X1eR0N={RisKrzGigMt!uV zNe71Ga(a^WiGgld5<+xOnCz>RwV8D7)>|3p9WPniE@0M)2Ua1}ltf{4J#6X}w2Am! z=CD8f_7cL(R|yMhU>j>pIu&lYZa(a>7k4l*3Y4(ER97K%$^b>5npMPSy2kW_CT%OE z`UxsEtkx`TGkRD}Vt-VTb+K9Q%m`z`x_z(zIF;VY^Q1rQGZB?q>RH@Y&? zNs6hI5S0QL#f!We)8j+)^2G(oE6F+X>{D$AvI&mQ5#psBE_O?40S~<~$4>;dMlOp< z&T6U8T<(>KE2>#7$_K_Ki*pR`u|(x_O6Qt`r(W_Puc}d6n$9l6X>IH}gA7eq;0cK$ zZV@2%C`2qev@8+zI}oR5r!>#zci?RDRB*xX;4aU>T-QA+f?D+~CG4nR^TgtnJu!?( za7(fQv>hAOUDB!iz=583HB-v&=Sxxj)kF|1H$lAMX|xt(T*z7Kl#fH_YMZpPnoQ*D zF`cKyO37a2PoEPlBIJ%u!U8#1#_xe}n*I%JaJm87z<|ALTY)_IDvQO!44# zY8224dJ=1T8{*Cgq;_RT`ezQ%rG{G^^%gN)XFIEs-Mp9tQXORTP5FdZFW4F_Le0?V zE>{40fA4fpMfIw`B4lX{TnilvbP7jSwCb+LwR3X(mvYw6+K8Rh;9hu@$F%N0cVXeq z%0y2Il3|Gw(GXOs;;VW=0f-x(VnX9v=rWeJGxp~5rDtu5PH&vL$Ys){zxzJbiAfw1 zs8Ua-T>TbR}qUh9j4%|S zhPxK)8e(4_OAV8=qz&BXrn*I!^jrd7@1OwGYM6@ez7r4zq6x?v}KCM_qFG3PiLRB3ZE<`dN zRNo7jgJ8ovFH^fV>-tz0#~G;dNX>aEezCy1`VxOck=wla^P9|{J)nT-#bRF0FhBi3 z0u9qr2W>TaMdY$lA#Z|!;M)%h&#*mIISc4#F73h}TBaVt=rgHVrmMs{TPU+vM`sZR zvgl?_7p&kOaNyILRI4E=VUEzUVbbADb*X+u+|rDyS}L8^T0F(o73EAa;=*7|IDUkh zbU$w15e}wKi+#Jv+xUF-!6d{p)umzwn~SPnvhx#kbQK**CivNb_<9uruY5-cyJ070 zbw+{>d>yOXX2@>GgwSEk>0D(^m)Y_40eP)crqX$>SL<1WeMvZzK$FxK-M@iC(-xY% zY<%#^@JGUp*bq*87uPfIEB`AT|6$`ZKrGJdR9W9`HDCAWtV0lQO|FNyPNQ$4U}X}G z7uAYv^$fd7@@R!1V>~=k#ecj~f6H;{S8W(&lEm>4hiMQhgXhLTPuIsi~%+5CJEn2YmwbGA_tbK;Yos8 z$k}AmuZ8S_`10DZ=;x*^yI5yXX)Tr&5h6}t>xhz}d!T|DV5&8NCmKvO@*-x3@`swM z>(5p6yf1d?dh?@3xmx`Wq55pM@0CZ1)w2 z!FH{2FHH{1IkXMeiAr z;pV&bWK%)fTGO(fpd>6sgb*XAR!2g~R5r^tD2&3o&d?FohZ#NK$*K{@*p5_c7E6`dJF zIv)N@d57*`oV|ud-ci;6E##}vdT>T(*p(lERS`pCME--Hi(25!zdGwv@<+4mh_-!} z4nPn>`9L82ln8{vIpD{e>`uZPK}-+O2I>D?4yzPLXL2-b@S3gq@zK95Zf5vRUpn^y ztYH)$@L5Uw^Bm;QtFykBVW{xz4kqzMFt&GFNudL05lQBNtbR`_fwRce);GIZIIUz} zX?rj&2NSGLGhII|?4d^cwF~aBj?ZGLWW?pCHu9_~gC+v2%zIrKOdR`_sf1XFm-?5%0C43e|GZ0dF+_UnJb&b+JYk zziEJ-KZ{bq1h%VXV<65pwRQTB9@KhuaO!6jY!obO6m**&JZn(pC;kU?FGBj>5?Cq=-S1(CAdMGII<o`o|`yBPeZv z2@?CDJ-NT*jaQoN;z}UqFBxG3`)kaMf*l2LbpXY(!y2oV(=VXXSFv%f)$cMZ5PL7o z^(IQJxX!E15kye;@M5gNDOiI%>b#hKmL1XVMFX7aE1_C4%%`XXf;vaztZQ7RsrmOj zsGDWdiu4E6U>0xKDIj|6A={m*CirIRH+e>?IO+8F= z2yY*!nhaP!8X`qgP)H|PgypPx5%_82G+BnjGOYADzHRP%pD~`C(|a9aVOM1UGTB#K z9lxEMfxY;i#vir`Wc3<0eGQM93Y6M*M^X5x$CKQTR$8jF>r1*zRsQUQ-0J(oN-_5< z8i>nDloQpoTaWG%)Q$AH?8~LqmfDq5y15V55NQoSQ+(<=1|C=D3YNcR4;@I|iP z>}D;Ee*&?ON;nTpHy&c7eiA|1Y+?yPO7o~0G zg-)`k0HODVAtfU9>6bW_kdFZakT2kSo^43Dwh@Csi9? znd#XE3KK59$ehJrMS1yFljlw!)fB7LRnA1WijVC{_iDlf-#oGxPa7&x!K)u^(_%gg zZ;Eezzwok=+7~B|l%~X7M}qw#(%~8Rf2bjez0myUDy(Xyq0TZGbfg65RI~GK%l_r3 zdei2myui_}YiX3;E6U5yfE=E9s0)>jY0ZXDO5vSn3nZjG!bpx{RL)GwCt#B>jn~qxG z$fOpEsQjv7wO8G6M#Y*AAXH#A&ejs1f`+4FF1>scty4SAXniYg3Qq2lD=nkS&$`qy zfxLEuloA0}!z`#17n>(S)w2V~j6&3X??md!0M~lz?pDGUx7>RyT}fP88XlgodbM10 zO&l_)E*P+sq@$&zZ-mUczW#ZySF^n3w+c2xm7+FW9$m8GUF;6z?e{43QK#v7V}*|{7aN2fGj+N#b9tt|A5Yx;E5 z$A5%IQEz-^r^1UoGixxvv@y8zJeRZH9t@Ws&4Jn{%p-qIPXse=A4nLZ&~4R2UJ*>< zb>J-Q+*Ah~#f(n`B*h%UQEZsSMTE3c|@c)87wTaUCrB0d#PwNN+?XBx=SBDM)2^ z2{axNbM=@goRE7Yl*>xMOLzVYm-d_X`eBU6n)S=F#~CG6u=OP!@OTD znq646Xtgkd8Yi_egnMYO3B{7@c~5P7^T0!Z8J3V=>a9>QiCgVbi3?lC$`&QG;>Xx; zBp^Ru(iL>ntZyv}z^d4&Hv5CC=`PJDW1c!l=Tw2>4mOFSp0zt>%{7q)(%nqG%-!;wOccF2x117PC zp>uG|80h)%#lljY;mQ~3S_T_aCbZMApd#VOp{!8nP%YR2igb*N4vdr4M7>(qeSRCx z4|z#-@e6hdNLIMAV7WKHhCzFo!}ZEF ziVztQlGs;)XRPJC{J29W<`ztRqq@-#<)O}t_2Ow+j8Y-<9%TL1+!$~E3%;Va^j_nY z=IXHJooZMn{!CIs+F!r0lXp4)lWDVYf~2lxiQ_PCHLpxRBpj!kRJcPMAwc)1Kq5N4 z_+`!Bf~~@zU@WM74Oj(t5cqr%&J_j~f-UN;$<_#8uC%!;(Hmg?us)pid|90wJcsUA zD5Q!|8)ndf7vq%da&D~40+`hmi4uS^GjX9a`1kbF1(tF+*g zRJRUk)-kU2h!aZQU~fHTE%bjelG8uYR-<|)ER{x~O-spJB2s`a?!s4d#k7i!2;s}_ zR5j(;u=TY1G7y_o8G^sn@pBjzNW8RMO*>M|wAbT!Et=FDLPCweZP@{_n)1f!)}^!l zOkkZ1aTM9`Rn{mVNaRo*1XpJpFaHknbv&0uZOdi2fR&C%4%+;e${plIywR9jzpjFN z2@2IE2& zRl!|a)eRcU%uu6QL@jDzw9uIgwYHb12bZj+27DUe?_XscB}Lq)smC5g+kT?6jTMg@J` zuxj5(TpyglyqUbZLFsVUU=`v4e`pTYN)EF`pS07NGf|7Mm1?t-=BY3}TukCD_$27< zgvA+UB6Cr|h&UI_$aK)F$Z~?-4;07B6U!Apt!z{pvA)Ue%F#`|w8R_A)zzFYK{Vq{ zzFIAvX!E|U9L)g41MyRP)Z${>E_NtMY?mtg%5%?^i@p;;MiaXpOX2j^j>;Fid#{3+ zA~M!|rlFElKvrdO54?y-4kYZij^WV|i;t$~^-T-){597{%z6@U9jh~5114A6g6ERk z81=tD`k)zBQsWcod_pT-x*gXdQyi}1b|xjq05vaj?(nrtN`}RoMG^P(me#?iIJ`P; zBPA_b6-N1JH$9)^wjFt1EbP040Uqn>=~YuC4pj#D+n?F zc$Tzaj4tFg)zeQ{Rx*p_^7*8pdYd2d-;DgPU09x6ZdQ)e9U2$(cIVg|(HW*|vkW|) z)EwRQgQw7FXC6qnnJ@2K$S3-b*B9N-MxT?3K%9;IE9DK!70ZX~E2gr>rgqAiW%Si& z@t$G2-72pz&=q$J_T*+Ksjg--??|_#U}UiJFCQ)qWvd}&ZP%eH|G%Eth{wY_2}X=2 zw$YAEIjn0CO_;547tS5Ko%|;%y_p~Ns(a=1KeP{*SLt4jdJgl%G5#a*&T6alsOWo! z{?YH^3_c6~6h10wH1THt)Y5~7>Gah+e5Oyci^jgxzq_87IwXTUot%Hk_g(uS)ttN; zg@amS{O0k7>^d9BROrOZ&o10T>&A^$;xuot%=hghxE!G&+*VU%n(ieN>4+5NEw@>< z`V8p~q^AxSIsB?-_QK`K4h*w7iiFu5=HOqt|5mh3X=*dz7tzMia)+PF)1u$B^+WU| z&+&OX$hPn~`82X`@l)`mN19dQ4y5~QGCZ@|diGZuk^)y+-W%{N55IL7zcPwh0e=QO zxk^>9J6`Oo?zJD(zCd6PWhG)-Zf$=Z#DLea14mE~X8iMBTE_$|J|z40>&Il3>eWXB z68w~l%y|r=e|JxDZt{P<)yj>w^M$-W)cT@ITt99?tk!uoPk<{`s-IpMBYz_nZiccX zVM!IYWDS2iCLvYg%U8f+90PfIbqoJsowO`E1yvpOTjzCeK)q_RcP@-qM;g-DT9AoF zSqL#H>5OnEG08kMM9LE?5W3{0LiCgCVo#9Oxir}8>RP1sGWy4U&sTA}rg-G-r!+F% zE(mg%X}kRUMP>JLCXnOIbAknR32PZ+wf=8xED_<>p+&Ctqc4oKIn9)Lu1nx=t$w$) zlXRYS$```ZGR9dFC9A$ zY&s{iF7efF7{ z%IPUaI6@66X5PmE==7uuixhD`Auhdf)4|VP`?fxY6m)_d8X8*mA(&*L|9IGB&y z!hOn3yQ(=S4z*Unknj(i>{B;Bb?k_tOh}q5YgnR(mQL28TGX~Mqm23KMlF9!n%&jk zUwGa1#r9zo_0I2Lr;B^7^=^N2k(za@OL2i457?1(%rfSLHpUg+JdAYa=7o})U<*{f z^Kn5}6Nk5#72!e{_)8w;Y++l>oP%0oji*;<-F=b{<}`WhF!d*D7}jYWz zvdFK=c1=+fcU5K#t(iUG%u-E6PYT>`la?yKXZw>?wiOvwEmvreE1k`+a^8NIW*5k= zS4|S3jp@VtZTK%MyU3Xcv(xpyd@qlBPSrl7wyg+ZK37nShL@~4w_I1*G0ApEv2ykd z4Z~vBmSrx*ydehk!u1@N#TxhG?W5f`?sV6Z8_l zL&>DkqsDE(9C8Cw)@?vkZ`PFzE&gc#@BdGwdug2b8vAM7AKQ*dFzcra1PR_DD@>W5 zn`ikY@;d40V$m(?#5IRFv81u^QKf~$AxURMo@70EIyR#SW4rxPif9|Y%iS$hrewW$j z70^%ol2V~%_0JqBM-7C&ik~?6O$JbceQLk|x1m{KEL)u062;?o+C zfD%mWl*kf^2rN)n>ZyqSm3Oz~80^a|U@Ho+XPix=XAkQZ_3CB~bZPcnX$o{HNPt73 z<&`^zVo&Do)aOFj!LxP)^J&?#0^$)B;zzYH@dp)}W}<_;@q@|&0?X${nl7b`YFMt;_2OKtFc#*-wdEMX(Qg zj^vDT(*HX0O(;IEI>W*<&}R0TcZ=G*%jJ#S{%HEOr8W#TJb}{*{ps;Z07SsIS0-8q zkNs4|%{h%I+^$nz2d;ioA1ZFy2-)=Hv~-y;J}zJQFP?facw|E&8H(4y(+Y-)6LlSg0fZr8GuGg# zL8M(RKB-pDO^@A#q-D&~sXwWW#G(XVF6g>ED)ds$ z3Yi02ZxL*b+1y8Z2S+WtfQkOdv*i8V$gO?Z8u?e5sS`YJ`SR+F|M4bc_iVjZ-6C3t z(~P5?^zB#zwzJE{tzTa~HPVi$)Yg32ITi3+*}2uk5x}SF!jNXe4z9-%D6~{35;oqXXwP*?j&19t0wB4fZ$=WPMbUs1LdWZ-nw4bXQXTjOM8$G&5Lj zn04*mQ}>?2%Bk3Dpg5ZRBTY-xhs0uA3hWV+0HaMM^5Pw*olzHK4D4`1raxA|L#qu% z%#ZvwUjb%nqP~qmZ1a^pVj^PN*+{@sjr?(Oc{1V*tTqsFR$6i1^*HvpOTJ3f&01r{ zniS`|fOAhPUnkbuD!RJJJy|=~ZWQ?yAIpZ-L?_Z&9%RncFtm&YwN=n-U zN^BD}`8h~<9{u~VRpjCC8~!2xl6?P_kPpx+Ffup`ukB&;fx!2(O85V#D@<3)kpmgz zY_5yZdO+Y?wab%E?(QxaeLDzrG6ud7c-~kvP@iZcZwNFsyoIoTvT%yPnYaU=d`&dR z6IYb-4){b{3xFrj8H+;@Xm1$xL7;`Pc@zSV8Xg1~PHn2LZRoW}3^zy+_)7K5IrV%g zPeUBEPE@`8wNtG`Q*$xURy7$`{qnU@?afoj#Nm7l2;^*M_Ax|33HmIAw+zXMf|Gpl_1^4ljQz*l~r@-MPir^ADX)P>GBAkn)sK=5vYP#ul()yy= zee0X#|Mg4}rTPsDEGxon<(Q-HEn{xfy~*O z{DJLXGtQTWvt7{s_hPIUU&^23LbLwCudy_5c{o|OlIkxyZ@CZWEt^^9E&I~g1rJGn z9Qx#{6|H5yw1cIh{5RlcZ<54S#{NFs-o)>b?5$EYKj4l-+(%gp`_tZPIqW$LL)Eh~ zme10cyEUNXb&^1=qynID-U8&mmGNBo>Vv1?{Jtv&JKHH)RCD0gTC-)IJz znMRsTK`cN!yg+XdU(2U0l?3A5B!SfVzo&iI|HiTkM*`|>33`f!6{ z?*f6fQVYhO1p;fO7K&X9(kf2X$@lJE!*uz#XZ&-X&qwk$oU{FGHjBk0LCd*Rpq&e( zmRNye`vQR_R*jjap7hP`HJ9hpG5`<2%v)ZP!5jNOZ;*U7|GWT+mM)d#?EG`GBq!&e z79ctIPW=-G$?^FoWJ!+AKPpRdWd0#>l0RVmKhaYtxeA`RzEE-%JaKKIK+^?y5ip79ni0{<9($X%n1p0!~)D=`0A z*$FCER$6NnofX?0THpcjjYlYtAuHN`Y=EuI-ooAj5*Yfubt-fsAs(NSqIdO#=H>x$ zJ|cc(LTOHu=FRDtzX{qo!`fm*nZ5<&lGWxbhQN;`mFesXO^pNiJOp0>jdC0ep_-GC zFq#Q}MP_X(q`kVmIzoPDnPSp9@Y-~_C|n`Jt<(;fe%lLC$6f~^F8a3rzpwlk7M_sQ z(7A<2B`FFD4@pww7k(j0F|%-=Bt=f)Zb^#ig*zlE+=W{u?SFnQ+$2%{i=h1XVEkeD z`t1Sr(V(=N;VQ2YQ-ijJUNcP?W;6R6 z1h`>}-b)s9!vlc0zpTkCR+p|`u=E<~2zK2IrgFA+$~;-lmLkv~AI`c4;Os}sAR{zu z{+i4kgN+Fd8QZ2R3g3w9ga2jhKshZSCb`tl1*di-kTEkVu<{I8#fTNg z27%mrsEclPo4(QPH_mLfZN|#;c*1a{>$|XC66L1|F)BmmPo~L(F;EYWW(_p{@Mzi5 zG%{;xx7GfvHaX#|jQ#-GgMzoZu-i9 zIOEg#V{9)THvGq5uNw1R!L0s*WaL)N$optx53X+agp8bExAD%rGbBAsv1ZypLRpo5 zQ);s*plm^uds$nP(ygqAM%ZE8ilFkbGW{1XA7TifB0?=~E!jYUf!2ORVTiKLw95@q zmZx6}+NBC2{LP3`6KWdVU#D(oKu3V@nfMx0Zw$)6%q;(XfDd9H&T$5C>1_-7J({sN zQ>53$G2T6kuhFCR)AU)v=Ax4s-ElG_-?VXt7BehU8Gkpm2uoQaz|6WS31fRs3I>Sk zW@T*7*SoykOfbEP)8c8yG@U4?JunG#SPKobK26i@vVabPi1Sk->+aMsGoQ+NxaNDgFwtWED23}a=b8BhQ7qWb|2G~2x0`M6Ku)YtU zTW=NZljXA&0+t5l6SKFK59|ZJ^6!K4Z@@PF{`ub_#*&Uy)3u$WO<46hP|vG<7L(^( zMNK*m8Oy5H@Fx8gf?DZH^p!iJV?(PWu8l-8J{H77Jx8+%du z5sD{stG8bxhH?c_UiGeR*`qaYrd1y@$)7(6?f*vf|FIFYrpND-JGOq8^Os7=9U3WG zwAe_KLAX1=BQ?blcy58-2>%tEEtA=b1~qMmBoyx>4F!bbvNA5^n?|)_T%otCMjJG! zm#G%O?db#PJccL>oXM<6UD3KUZL1_4?|oZv;k*|4|7OKJkGEpC<^2z@*J$Z`sIlg4 z_)HMfRdm-EIn1&Si?)&40XAOEZRSmRU*mMsV19&xV4+XE$TuL1(Dh3{d$e|*MAb*E zeLVN!HLh%LWo$GpYN_9zc}TX@Uq{>_TB&bOi^dn{5wi}0RGTxoN=bNe?1x!bjBnk zf}@RW&AQ|hXb5@FF&&#gP1`8+-c#G&U$4?ySr=;h5b!RSK4B~7x&VODVzp)?)}ofZ zzdl(GvA4FU!W|Iv9Ci5rnqmIsJLgbduRX;12zn;3+Ye;bhczJYG&lz7SIz#iF-ou8 z(hI7xv&XeimL0S(t@)5IJ8jJJZwT^#hOsp~lRd)&?D`6NjUnDkicBs!#CS(zn7SiC zkhs+|hTQDM(%*@+4YVILT0Jc}VM^~v0^L=lPs)mo%K;SqkJlYW?yw?gGFEljqk7+q zWy36htt|4cnpJYr1)bVKhT)$!=`4zkwoP@%v+jV`iJ{PYSkT(~vbU$`qAYvpcD(Lz zgS~!+-;W{i8Nnu508Q$wj{jRi{m&aiwb!yjsmB}UhBD(+NMQ#|;fGM;M$-IRBt zBeVx@A)3jyGX{ZvbQP8PbulVn>Uk7HvZW}-X-8l}TV`R-v=N`m)sN1io3iB!XRqrf zP~|d-jva{64x5OC@)SYkDw_4Tz&>r3ztsNULif6o0-^oI;Vb{tkdeh-s@t(`me4*{ zZB1IGDVQa+kJUnxKTBwDx`k%uETO&W7Mh${LVMFKG}C7Z?M=7PxMvCNO}Efw%o5t0 zZt?$d22_c^z~|sc6ZXqkygzr%QHSzS3>%R z^u;bnyro!w3USZbDjBzJb;WT<52!HVffkC(OSrZZ7y-t5Q$L6zPjc<^>u^*MIi3j8Izo+{YJx}|VhKWwGnfBAgZ%Gj?0)_n zpNAhq{;CE{bLo>g4MovsAbJ#`qi6L99UJGKs!p&7e!Ex2!~tyRWU_T<1E9AKup9v< zS^$Os2XhX|0<0J0Kr1A!6S7$}Q;-7{Aj5T9761=DY~95Gh}HpCAb|P&7xpg6AIklg z@CQHorK)zm>zb@;7a(>|!fvhOevG*9d2#vED4LmbF3O4q4LDkNHyG=#1FS}XcYSki zrt6Aq&dnACfY*m*eV#Mtykz0Dp?OH_7rmlklXQqx2w^&$LoNR~u8XqeKVKLk96Ag( zR+F)sycPR9pT%bxk}q)mA}jehh}(v8i5tMJ`S)JaC*2 zvmRmoWKpk?05j(oNf_IwQZQ)$hv$FuH25ll&+op-+9R_d|4^wqPntjNqLifTL~uOG zy3yxqSKTrtci56Y2O;u&*-2Piv{>YmvoiDY^@g{bXykn{@)Cml9BBnR9_AW^3?QIDZoAYTKhY`8d-y`01VRCLF<>x_|?#wlZ~Xm4hH*b6d)-4 z#aK97t0pjjuR5C~b6(2I07^I(g*9XVe=@@U{O%lvU}vcOE&ydAq8ufUXR*|gRh>%f zXfxphXbzwAe_*t(@OF&1gMRtn;qxE4`cu`mK3^Y7))TEy(LH;k<4}S1W&^NGZmPsi zn7iZ{{f2zGzA{8lHRlOS!(Vu3kn8oA71VOg2Q`DLXVKWQnF{O}<{{J_h0jio}6i?yoeW)PnG2VvN<5~DIiB0XmZ%Lai+kr=q>Wxm*Dtk{0@)--0#aWq~XD7;b z;NQf^PeC5`WiMJHKkbcNOZn^+*~o_oq+E@Bb6T!!w!{deTs5TFmS);&Bo;aP%Wrgs z?7jNZdP*-AZ2$kit?j=Zl!QOTr?Rc^L+Fb4B(BMF%*@hr0FPpf!FwafQQfvot@7d> zMSbs`gVZ+zUXXYKIh>|%lIST4g6@nP zeP=1}SiSVq`htIE}1!lU*<EqR zCq*4+bYvj#69rbzC7NqA8sRVO|8 z+VVN%|7WB+oiyhc)nku0p{$NdGkvM|HJsvtzzAbz76R8PFnta=c8W3Pi-EZw#N6g$ ze2u?IfhBHC4(~~Uomopu%h~@+o}Yq!nvriQ)k)R`$I^=ZO;md~zkuNmRiyaJu~3rY ztV6(?hnFJBeR6?Az?(<4X>%?Z6ormlNec7`CPz`=5b)+TUh29@ojN zq)YR3-&!r3c@k7^R1MkgObIsLM2DUJxvjaoli&#`zDhVRNrA5Jrb=DrX9wX0C17R-x8A zw@O0c-iaE6{h(SSly-1#XsQ(o2wyLMZX@9OjNshH8^lPV({$Jb##SLCy^xVUevGt4 zM&5lF*+{V-Wfsmeq5t2M@tSNQYg&%~hw<1s+H%;V8#?q?g-h{cG`y~2*tC#}SFL%+-!HDu2`oPyvV+<~{=MQSB zHCRiPkjZLuI?2{@Xr;X;Z_b-zZPmb1J)X+mIMZzy$qHgA4{pm**vNxf6*%j?}> zW70{+6BBTVCy&Q}!Cuz zUt_{eW_NJa?F{V;<41v{V&Q*BdwbrFw?hom&f{JbcgYmPf=#SO*v`;`EnYkK$liYJ zSd8~kiw4wy{K`r*<<|hh+CSxVP(A`pr~?-I0E-{VTB|4O+1s;&@BzF>{Lg<6Wv#sJ ze=C{^7!|zzZ)P~37w_L-!=!oOuW*t@Z_6|qJbqY|ripPZwRpR%wV8P4vM^B-I$Ypz zqJT?cHfZz&F9{xKAWWjs;28!L_p>JdP^4ynb|SGTN`U@f1@fo;)Jd2w9$}15FJTeDkaRFSqG951^RMU5$P+g7pr>+4M$8}bLD zgxiN6R-M)m*Dn(?{3HSdZa zv#6t~^*KI$p=qVNZ-p&Vkk&6~i)3oOyRz4zWu3l4vSn3XtgvORoc+lk)F&81(Hxs1 z=baIvLGO(5agf9~=yqafa5DUwggzP-dwWc$vJ2B~^3E}kppHy2c^ni=F&cr#kI_z8 zjHOAZarXAgPz8@W3~O%f|0y65HjzIIIxshAsTaFoOt8(Jv?c`=2J&gA+p#EBKeVo` zb~c`-R8!8Ilu9W7aN|ULyqbSnj@glT*_*j#TNK zoN`T8I_Rk}ek^;R4F|crLG}(Pog5_x0Uxsf4h4kit0fVX?xF~{S^sP2w@Friczlgi z^`{*ZC`!}BI2T78MT6O#Byg00l^Z+`NRkB42$RhKJa$bk1MtWoQHpZq-`|tCGb{hA z9NpKBdJ?E6|KmvlUZ$<=>o)I=rdZ_Kb$1cWAv5(!6b>P$tHMw(tJmf_%xeJ zLI+JrO&J2stt5dyqj$;>&vi-?=rQW^fBXR$|F>Z5Bi4e?;H}E9-Y3&Ju1T4?1?+30 z=3QSwePnZzZ7RAZ7@~V{Va=K97GW}t>|<4jAPseQU!m5)>PYPvS-o->wl2GX@Cgw0 zlK?kK+mQb@oyU%T62>;vz59h*tz&__hC3rUlWf}@1ygWka}XsWHPd@2pI{=s!$c$j z=Y3dj+J4lsq3(L@PGA4e2$7tro7c4!h4>mF5?Q?F0{}f-PE<3xq3&5Q%*X!s_UeD_ zSOQVI6xPHzI6;_1qrrpPB+Orc;$V`%Q6UD326G@uU~0m|jdseKO!)_rU#|Q$xBHUp}yWi z?GjT{nlFFh#T*rd9MFr>G%?)bS4gp?Ea4)_|5NDy_h76CZ>8=2z3pox^@mSQF`bSg z*0JA;z149vNA7i96G;cPM5@kfs6Wopd2QI^rq2E>Hrdo47X~CViQ55WWSEa!o}D7M z(+#*pKlAZ#8N)xEm4BNJ(V_AYs)Yq=B*0AHC<&wVl!8&qe_P-4zecg(^*^4$n!etB zZEZ1?X5pi$fMiYaJXw;J#j|BemKW#Bk}N6CHj{)1kSr?B6hQGF83rWN=EX z;dvtGf1R)V)<*`(!Fe+0fAN{*|CzS{)#%5z-)`9-?MW!fF3QNkuGw(2`edipV2WB#5#yr5kBX@U?|$&GOTG>Q^bk1)-$gXR&uhwdM4&) z7O)N>Rww_{bi7DW*79#>9T=a^I`Bu>CnB<*S2PrSw%jI67XHJHiN`_`t^?kWexQ0zXaU2kTb1V8>YIT>(2W7 zn&4H@Mjv54yxBB_I9>0#={M(Bo<&%-?T?`0!Pvp%Qz8-+O!av<1b(%wW^aj6*C(hK zy-;fDaV4KH204OqKY~!54SnthS$T^%8VlVzO9|@wht&VOig(Lavpb7-$kv(Li?_;> zY%AU*K=Sp!`@|b0TZ%Wz^0K*joh*r`c(p7q8;V!RlB_RYDpCKlY$@f{AnCe z-ovT9{hF*zL-Q!n^7b!K$qsb9RwpQFQRM6~l10&$bS!oKs#GqkOa-8isaJOw3#IC1 z48dMX(Khk%ZrTKL`PB=+{u^N1u`X1T#8S~lNB-~9mNIoy?Ax`fR4uDY$o;H!3q%nQ z=*iloE{_rA^(25k3w(~F;rDPd0PRFcm_)}i#QD`TmCD{#YtnMSf^c{{VB}*wthaRo zom&47VeAXOn74u-7jbjn0r&a-p2U(Y*QJ@8EOUPq2C1n|xe_$h zfikr2c6O6e%{tKu&@ba@AQ6?Em7JJkW38@*V?Bw7r>D&<()VXa2{i@vA|7c35E1)m zLta1lk8ScG@)8+EM^Hb-+ElZ5_BIKdyj;CRTwP8vdEye11=Rn*ReLCQomd~_=$lI4 zVALl6ZcvJ>y9~1DwvGJ%j)7q#wv~ELcqY{~CGH zOR}aHE~XrP!IQox%XN0~yi&FNKgzg^*JaD$NAPPhR#vG=$z@WLzff771}#(+XawS^ zwwge-@g(++W*FH^bH_VT-RfIK+v*$EH$bP)c{pXGQSP|FfEeJv2Y6tuqvq5pN+B^H{QH#HIj8G3rk0I0|>wFdc~by1DFh;7j%2;9xhs?lIAsT*69~juiz@nb z9K_wrE0SRpuPbG?F?<$e;2Vs$GV4N}EFUGPqOEX*4Z=Kp(`Wu)*#D1K@ddH`v-p>p zd}ae9pEPUSSFg@JAwtu7@qL2~nw@ix%HkBc=URLd2lIXN_}3R6FlaL7ej!ccn!8V$ zX4>4{(ln`acSzGD&)q6P6Ao&xKw}P%-e-5?=XFoQ;jB%!W+qC_afC-G+d%zVltLZb z8&t3hIU*RZcDU^wb(`ujmbnzfNjWEp!*0mo@O<`a)}{+H|e$l7#pW{TAO52X8V827h^qjUANVVwWz2yFx& zpcWQquKyiS|JPyg?>pX=rF!kZUPazEyHn&&Hv``AbhF1p(CIkqL+xt=H7$U@n4yc~ zuwf?YEMXylGGid2ok`JWyTmMA01eMOdi)8ETSE`nGS$Jx2rp7ULhz&*o|=Uws{jE{ zg?qd%8vvR%5Mo}6hdP&q4fpdr1+f>W7_Npz(~qY@JzkH-$mp`8Hz0h(a56V+q(v77 zL)vGY51RHMx=<82?I!v2$Do3Eov{-3I-kxL@kOfi{}_1;_aq$4-tI{G#c0Ze^4!UO zgILBp3>~%%W$m5xeGKERG8jN`iBL$r(&21uo}q#V0pudeoVNo?%#q(N%&#x-mY1z_0k4 z=Xf#=22+jsVhE%d>je;)Ze%tDW)jYKxk$r9DDX`#v5-RvJv{ShDIbo0S%7Bl%r7ty zuIk(ja_r(Znofv-QDAQh&}?N|Uoq!gDU7%47`5EM6+|oJk3oEX73Cdo6>6uu4GEi6m_L?`bKZmYiFXH7;dAe52l=l@!wo% z{~uuN0sa`D$!A)7d~Xxq+fwy5C|1ZGH{8iN=;C{4p!T0k?uREDTU8rq4(V~oHwo_J z`c52mQ-|9-sr%wg-pL_78Gt|YkR-lx_>aMd*zU+ae_^IN7yqWJ1*vJ0<)15Ib9fip!d6|8S=R*y>=}hiINfhOR42sIj z*;H8+xB)0X_@K1XQ0O2)s{`;6Y85ES%eOKp;k+5h|5L_iz*nE&fBy3@qYjmE#SW>) zS(>pwnP+9Z{dz6!&_Y4t|6&;_BUtJ>NibgRHo$;%jH=5rX8*t$&IXOW4q$BoWC$BW zCjU6M5T`?>Bh-gpD6QC}u9k%2Ri&ZA*}tLxSD&#zv--R&PJPT^}@ z=Kd@J63*`i`7dRBDttZb_4*}pQ8l%BZtg|d8WGRr8+WH+sem>ZJ)n=$pY_#}soaCf zbotbXo9CvUm#q@T{qljM}W7wban4%ip#ti$3#d|_!` zSgkOno|A;-_x&!|aQ-mJzX;F&E&9FZzf*I(c}ea~*|r}?uH)`83CVkSMRz^n&tSsc zK5hTzC8@v2w*B>P0}Ly>?9GdEWx*7j#~63F0oD=VQ2EdjqK6LF62UTkIa`!^O_sB| zw*eN;J_Gp=W^Ax}{@3lueHh49R z*~{sSpzTgrwy6!6$0h?@UWz1~jo%g=!yToYUnU;cOw~cf4w(WT8zSg^0MVS`F-?PX zn0F8+#{x410P@l#0c?sOKsdhxJ`i%|VVfh!|$T_ZbNQbxv- zkxC31ZnU5|>5iI?}mnm-t*UF0j?_{^!*lSvuSxxHh|{f z4d59Foa+VFiqO<-Nnrla?*tBKTS5K<85_tS=Gnp4f5opih><;cuhHKvQ!Qg;5r&!| zL-h@Y`dB*N3LeH4HrrI{v)M?1$y+K3V+)mnQLE%_Q;H)knr+NAg1MJcbE=$f$BB z=!&Z)R(0+(&m!&jP`Nfr0@=bPfq<-f_U4j2ePpW2fA3V;Sq+?WFCEv|yw%?y{80oi z^p*eKyiKz5zvDK*)bc-ou>msezgk6~$~zjQiq`aF>JC|rcmi2y;!U=;kx^G)TQ^Mp zLQAXv7q22pXvAHTKtNV2d-L(UFD%`2wf#Rhb+>H$-xA@Q!oX|-?RkA)hmA(qMZWF- z!MuI4?f>0^0O4#C$o~b#UeLz>_b_#E`(2(stSfiiscFL0L$Zx^8%*Hi&@^H7+nTAn zJyi1_nvG}gs1sK#Mo;=IO!`uj>}Rt-m8XP3^QPwShE}ua>{RLTe_MoZscn3~#yWz% ztb=@uAj>SWhw=Z}JlXNTt(F9c>i>n#|Cud2|08p$CFSS5o2C8f*M&TNd@Xi%4zNW- z`8FC`tu==1Rgj?-zM>J-UUT$yF#5Jy^ldD;X1@zTR{DWVJufT&r=&qHO_k+@KaC*m zOdx$(A06a=1o_BU{>>O~#?$cgN6K7nHLvE$j+$*WM1RuQ9@H_wM7I5LWMs9M5wC(t z)|9wIXWTPTPI^H9U;v(!q5||pfHi&qQ-6`I>pKVnj3IyF(ZcUyff-Q)tRjFpBnyAJ_ zUNxox$EV5Da%Be`QHa&aD2P#Lo{zhz^zt$XfjnLyTFv@2X_`J!BfOdwi9iuBIO|47 zb#=$n|5S)4mK6RHdxEQjpZ|*%B#bl zPJUt>>q$7{-g36cJ0<3O7Q#4uBjH%GHr2yl656JBhr;$idgF}45~58uI=Ceyj(~3z zWg8_R`B$c4X8vUaqXi-+PyR;z~m*T=80Prdn3F}p!f zaq{ubk1IlD1I@Twd~r7y&6CA_1aapE!EF~9cbjkhFKqv>ZDJCz%Rigz`kLw_q;bv( zTEhmWDRi&9J}2l&4MESo{c%pFi0!+D=IWd@X`0J(f}VL4l;+Z$pyx6KrTMNP=*bg7 zX}&4&J4K=#8vXn))(-vtu+O2c!IQx9*{GQpz4cG1VRRQ78rsz3Q2op-OBZm>tepTs z6#tl8e6eB*i!YlE83NvqOs7l$$*Ob#k5M{_?qz39x`1mcgGi-WnJ(aH%FO?P<>>-m zrhHJ=X9#$6vY@QZ5b(^UQH0Z@QL_909k<-ul8a6U^O@4ti_@~!W9UC!B}pneAxq*c zIx0)zC^{rbvbD763t5s|Mf+q)el6N9OLC)Vt1QXSMLWbv!dV$SYi;Lk*a+5|m9Tt1 z8ohsUTLsczpLQ*nmw{k%S?Nj?NLZ)n!C$I{Il(bK%abYK%kbFrEzt(bhO}SA69%{2 z0#K6s@CKK#JJZ`xf2wDYpW;k`F@VO8O0hXpz-Od|VoRogV@i!89J+`htd+t_@%%rK z{*$bP?`N&hB-sCg5ylxcyF4xdCu^F&Oc+hJQ>k{jWPF(-FMBctPT2Eu4;X7)0&e*% z7~3)h9ENKclns@$N>s|dnF9XYEV9{^DR4M}g<^ZAfCF?(4oIjn$bTDC(CoJl+sT{p zX64lSLe~gS!iDVOWoi1#S(MPA?+zy)hvt?!#y~6*I-(P4&=&_9isOP2_K*2b{3l3r z*te!Rq-NwP2{4zZ$?a4F%<+gh!!-DtsQH>QkiN4_#T)^Y+2-}(PqjHkob3%C#{at%?%J^M;{8o$(*2bxj}L8 zEP8Powf^sA<5_GSZ_0X!m4E#jg$lcAdx5^dGSHK7$?Z6kp}EB1&4rw2-LajcON=Lc z9rIPveO5C|)flIOrs?w&-GnyCLMeG4OUb`2_HkBQseWvL{bT%KA-QhdC`%RcrXy)r zWGm!9A?ih=Y0l$ww15tU$Qr$z3}=8>%bR7>+y}cjU2C4 zMy~(@3ygJb2+T6}i~wR)3gqYFo@AD%?y1Q|-&Z`00q)aEQ$7}FEN%Z;I(@xP+UZN(-#|SVGvlT zF09X@z1)SWDN!D=eGdgr<{c`9+^nMxYi6HQ9f)CI$!zj;Hs7!e0h$`BJ|Of1W`3*N!L`UDE`L9QDZbiYe6N*;I-R z=>oply(IuBR;3FZ8e^eYnVu$7nt@_@dWs~)`gDPr3FGuP)=qx?SCz?nr@)+&+bl?_Wy_y&&zKXl%*G~zSqrlT}vqBo} z#Iz>H`DdaOaJRC1OB3VtF$pB?{8YIdz;kLvDYX8-!tLxJE9ChcGyr@5d{i?$zH5ui zbIs5||2yUAq&C0QPCW$7x!QM4s&N1s@5$!4Bpi(crY6Q=VRG`pV*)-^vT6`R=Z@3^5uaA0$)A#(cL z4Xe|}2H(jaskNLf4L__NrGL5{F4>%~wl@5#dgRccoE$uysd}ePfCtXq$*ZN)lq9c^ z;G0^$UCB#i%GZ;1BPZ!~)Vfmp&z$6W(tQpcZHbpp?f;J|#{S<8wu_~(KI~D;Xs`LP zs<=%RCePN#AxN_?S!C2!(=;@kU3sLa=@W&V!%>+tGLsV|%G}uS8s<^A50}Fq&8upC z!@H~`U&v9cWV<70x{^5L08Kni2n_cy|0}F1o&2}t0qi(Q0ENE&eyiL)m@G2NXuLXD z&+zUhnx>xNqfETru}Y{zSI_YDD1}A7F6F30@1=4n&{wD&Rp`%9E(Lm_6ipGraR09< zga1aM27u857MCmkX#b3i41VT5^N`qhJMKt>2TTw0BXHvXgc#}t9phKZ)R1(QpG4!7h|TuKp$8f!~&F-0J1qAdmb znUhO#HAP^RsipAE|FZqQzB}Vg_FJcm>lseL1W<1I~*SSf)2QWE#&f zs0{`;m_R{@N04cY768Lvk2mm}c}&+0k)0xo*FxntM@h(E+?EkcZ8cz(I!+3QNKOzdr7DV<)Ijw=bdmn z-_xMPykv()bVjH`BM@}B2Cy1F0MOe6=u2gB$6b~Ls3{5%0z$nXJZIrB$1lK7h5ega z$H}=)Qc>e-TR9Q;mt1OJyYwv-RxYw^Pd5`T9%e=+%Ma9g}seUXO!X0e7^YVLQ|DCgvMr#`%t)ugl! z*D48_@mZ22pbhMdy(S4mY|I-0SvtRx%(73pS%&7E+~~Y)Z4W2s#^*>vJnp;V)GUkQ z=SgOXwrMjCn^_LC^8W%;FznNt>>1u3KNa-*J@Fq%qN5L-85d0SF($g&)ON?e=d&ev z&k`L6%{WgxiWop`C`{jI?PMU2g7N!WC7~4{;NfFpF&`KV{2f*VP z#x}7S9*Ca`=YP3N?HFg{cS?4Q=dcz3WOj^ko_+01{5Huf8)B9}npuwZ%<_Ev$C6p1 zzp5EOn^}&xb>HPs@Pu^9EQk9pIK0pc3Z9TGnPrUcg5&znpVj3olSlAXtS`|wQ+>jMeEa`EL>piG8R}W z8@`J_ELp%NSioP+0#33?&_KV-kYB_k=zB|0ewo#tM$yhRl176B6uN?Ga8Uffo`yb`OooD zOU9eCL#&XEV=c9o;PBo5wJ|`mxt5?!vkaF@u{>Q|&s0sZG+kWF7XI42o?%WZn(B6X zMm@tsTCOx`11y&UO_b&IKcCn8KaKt{_D{h`Fj{TS_cj02H>~}nbQ(1?0KPy$zdETh zk-48-EuaaVT#DoABHBFG6i3s=H7)BIHpOx&&>UDUg-lCU$N!fZ-^!DCPyPt|j;(}o z>t(h>@9D&4=c&x!y|#7r>Deq9{W~?ynaom&G%YF3>CC@8)0C%m+KIfMqUrTmHop9F zlt(EZyGo{^<8RqCcz`Y5lb$yYqdn4ul~W^Sj-b*1OCW1xxBqU$^5D;2FQT;2ndvjm zx;IqDM&_Je949c2ef7lOqSSVL%~iZ9&9;s$*IO9TmEp?#MuaZSTZ)<{CG(_2Stw2V zADI_q)1$Y^~?BWc1QQcp*G|k?{aNP8<1Ogt?%lcl%$@tDbsP z7%#9l(`rxDkHlF_u{~a3hr*U(YrKHmWJ|FzUO;ZLrNFZ~xfCVw0(&5~6nJ=7VTxaW zSdyvso5t$tm>kBgc!7NuErmb)IRn4^@#`_;>nMEj?Y6)1A^I=n2_IjSm71)Rm#+-t zS7-f8P1f1VSB96rP4V)TVgHq*f0+cCe^b9QygcysH~QLG?w5bXub5vMdc_KV87X+E zQM;k~m(t#L>-jar_Qe9ceK98K|Kmt@+~Q?EXG5!h2~CevO|x*Bkk1fXnxbVwK11$* zqV>OwG=0C$)`16mA|d#(6xjr<)8X z1!>=DsH4Hn4nrh^*HokS7RTP*%2dIm6jAn@Mq_?xN- z1UHYmof}+-wq}t1e^a+}jqBre>7|ye(?3=%_A%?ZsikUQcm4DSUaLd3b18v>+m{%c z2h>IN2^nraGG-jO*=6VwK?b$x=D73YTVnISX7Q2hxp$?`Hy7gt)|*P-N$ZRm3i&UW z0uPYoWR3EKpBvqE6dN+lRl|BU2`-6hewQ&I^($u!qT|z$0sk6p7L`tqlSd zrucBl6F;dbv>q(Of7i!roC4ll44=tZ@;s-2mu0Qw>iK^y#uvief0Dh4`@Z_s&lom! zU-!CC^72lc?kHnbeP!Q244GV4gmAGj$2W`EC& zaf?AR<8LtIbsiZz%#24F`w+T&Cc!#6iy5!AZ%HsqutpV-cSk%w6R(f4YoP}K5ybl% z@z#*@r^zMRf8RuLDr{?PP*A#NrHA+zy0Q~`L zNPD?wSWCaAeocYgfcH^fq>e=)A9Fu3S67SgA)0$3=DwQrS{9+X0qa76$Hv3mbXEHw%9`(&kBF8i z4Ul#~`L*Z+%||U-`CrlauUQr6dfQc~hmy?UjR^u)aOMaFvd^Ie0c*a_-*)e9q}ZAu z?gw5?F(*O5{?DXpjr2&X37ZmBp`e!_;LS_JU^xDlWF!deF^BXx{g6)8N7oVrc8o(- zU;mcr`@d5daQqPRpS*tuU@NHajw^J<{g&)=MaAC2`G2?T!r9sDD=w4rWDC_c6H}a- zy;>&4uIzQY6J$K}V2TY1GM;vjs?)Pq$WY~$<_%yJZWWMxY;|>Nw!ki^t*#0a#J%OH z@n1fHg$!TBo3e7fK2?0Z;!arU%1q4CW42fgq@vvk2eUKIC+lt-YkGAN>^X+jDq(-Z z81@(jwTWaMYC0nPGW}3w51z;w_h0B}`3U+1fQGbMzJ;{G>TRM-$lTw@w;Dm?auVd0_7&*hB*irWOF0 zGzqhR!m9tbSR4Og+{ZCs3i*LQ?!*3bmuvTL#pVf$+CtCGeov-_!b*DAY=O0zmV!pX z@2@8c$mTW-+s?mVD1_k(IACMagV|m9H%Y?o(8lVnt|+M%e#>@x*^R z|Aik@XcoY8V1WzpPPx9nkti_Vm=r>an~4Iapw<*uorwZxv$hm*i2`G@wT)d(N)(te z<_?Z)Wnd&G3e>c%3bWB*ykMf$?8ULHy53N;@oxA=zRe#nv=|-gP(nzsCRk zG=cp;TTSPs2}r@V6q#uP`+v3+8EFD*Gh2#+G=Y6HTZ*)_lal-|OcRKiX2XzfF@nCT zn&$bx9{!nW=cVz7mfQTYiJZ&E?_cgyU&iNI?w;j7_1%1?S+mTizMIc9tCp3~cdIbX z@?}0X+`Obw{lBzjtSv9#^e3j*ylJB;kVz$=v2v>24a+z}JF!BKl}drqxfRXZk{Hk~BieWa%?t#AA=4+)p6_I( z(G&z}fw;5Hb@CX(JibB?W*jAoc?mJc*@8}VqXjv-vmDDtuow*y7ygwqOhlS@-%4At zT0?9QWC;UY9^!Y17)86-ud@G;hnY!iyb4kqzbd<|>;KP~!lrWgFC0I&$A6it2kk4C zI5i_yUQ@_f4==%x>2)cbO_Qpu6hEawGwlt7FJ;rR7hOvH%WN0|u`{@n;ih~&^esA- zHJ~U!wusYeG>w{$C+@#||7C=oVcD7QPsQ2e)C~Xm(}Kl$8F#hV0LVXoSFKKROeEhyajfyWN3yl6o_V;=I<&7MnE;(4|T4p)oWI- ziNvK@2VH_R907?!_PA|CNdL1dE-^_v^5*?HLUXy^AsY>AgDq021t-)7U)A*F2ixr6M|UixTszVj4NF!4!oBCW7QwS{L`)ce;4}y z^Nc;u)A;>7Pi7<^?~dD*edu_?5}iFlr>_oW4A9nO6}el(!_O)7txk`s6SQ#F+wc2I zYbs&rjG#p@VDWR-!Ei+Oq02Rj0uKIRV;&3N?eyVW$FkObtN2Ug`P- zDpz?B-peHcfdyM)ABk1e6A3FMQO6?cYT$4;)}44ANo{Hp&L}{G%6mXPTj?yKF6N8} z#u;ZBlJfs<*M{Xwwu#7>+K!}}X6ceL-oh(Pvv^4v|KJs-S-8ZfKX9LEikA5F2ktA) z`jtyoNT*r4#HY2G&oqmd__S~InI>) z4pB6)HdWdn*eZLUWNa9rITLhuG+}~h7|^yUhsuovguXBubN~sn4r_*0+PX?>#Cpe5 z{zLvxU_75q;LX`FVgBF7HP{_@Jo}?_3A!ULSkVZS%0J>w3=TL&8&~VlVhzgY_p2__ zerzuiNaUwnpKeXmmCBwFa+KolWO0CV-(aY{C{hY)#2WkkZjqWkF=x$w1mRB5U2};- z{1XudSrEc(2)j*$A?~;%*=uhk{O+^8c|}m(0EA~|v02ceMzNtZ2Ta!6+b<6+e_%P{ zY_rb)-^2PZh4D7jWlI<}O`+KcCm1#Q?(`A|F zM7W`rDs5^5-fLM%EMWcrS4yN+RbsMa#w@;qjN!Er(2_G{D+R=U(Uz?0|1@WOJAadR zET21czS6|q%GxH26L%@=1Bo=PDb3le zGCP~)N9>4V?O=rMrfOHHxM#A;M3pE9w<)DLl2s-;R^4)N+Y?`5Hc_eGl~pE2M0r&A zqHV58w66hFtKA^in)o5L{Y|D!k0$CnTxG*J zdz}xQEDbXqOWvVlwOzv*^lJdk=b9#E4Zq(*N<#?nuziM5OLHpm1KHBdM&Jn^r8(+3 z5}ZhUPd4KW%y_&<#-Dp;d^~ZzY{u!B@i>o+k68LYUjh988w1||4W@!b_7L%VggfqB z_QF3CcY0NE@`V?muq<46z5uL=Az>~GL@ZU<(&nJQs{K&y2c+S+NyA_QyOpR1Rxc~< z_yEgBu$Q1o_oa}x5%8}Lb3ZI*5$1$t;vtxui63h)Pm9915avY^RBa{sz1r^x@r5Uw zPA6`YWm6`yX`%<4j@f1cn7dBtp2x-KuForIv1w9Pmp|^?E~w8duG2>n zf03(CCqw1y8Y`hb8$x})s@G?!-*rD)7hm>h8H?f)56HHRImoh?jh4|9md2hf}_ zTKjg8}(qD8@t;~J|lqPs3;k-bCN4diZYIQ?}v6nm!n9E$7+a0DPN|2AofB~p$i z>Z;yi@t=VdRQ0a$4x0!o_(_^W`AMENeA5s8(*#|y_Wzo||Jn+x%?g13k9+X=6?fd# z>_w~I(q*RpV$_tN`@&oGqM=Ln^id(bfXE5k*Xh%5flxPsDB1AVe7V7}ge^x(`jP*5l@=7nx)=*UK#sjX z7Lk9p@gKm}y){pc|0Qf0g7x(P!@FK(;I7&Ge~_X7XYv2?qR0?X&pq4iN;t7dKttK^ zf`cgzE-IExv2T$;>=;{$J&OdQ`PfqIUL;`0U`tW5NZ>TzmSV>u0UZNditUR8v@2{W zwk{ITuFz71@V~?3$$oqx`+|nBZ|xk8cE??Foh&gHO?A15AIi>B(|(soBr)N`)k z@PpO*Ak6N_W@AP3w9pm+WQQx7`yXO0Rnd-y^k|2lGC~;vg$VYy%Xccurp#nnl#dYQ zLAzNHpr|H5!45kLq#0g*S$tGY1!b{~LVc(x8#DFIjE9Bx*a2i0g485{NY(+ehh;uy z?`QY88v-Jq0zx0m{14H`yoS2tZn}0}-131r`DzEyD!PyIl{|$G->Y7SfvyFO^Wi{5 zE8Od-;^={xwehQRP0PYOiN(8iZZFhNmSVUfVB;28;x`Y0&f3n_+tQvMo~@6heZB_T zDgkGJ>557K6d4Hkn@PZHRMPF~rIG~jf8HemAiG(vo$f;2q9EF;T~J;PTWF1uQ!ofNalkknWG8p&n~hA_4xf zWv96|6$3=S_eXA{B6s}vgJfaLjQce#*>U*`U@?SCZ z|F0Q;k$ugJ@uRV~zdPQQ{aNAyy~dvq>JveV-@AAog|;+NfQ(eMQ5*vii{sv7Ws6Je zz66o9;D9-|h(T;bh)9CK&EUQ|zzPJI;t7zFaZD0`&qaVX20&LGU?l>)QlOGn1YLzSm{)}3p?H?ja9 zAV7NqptlZyr^S`6sySL2=44!!WzX9P(ZPV|qeHAkh*!&$A>)E9K)!GpkpFWQ$O8De z1xpaZn}Pf{fw4o-CMWPl>|x6g-^U$4H~YZCB3;q$37cAH z>WU_5DU4R@P;oUJ1B1o|jYF6>%1C}g$}fobdMU3UCQC+8HLaSREVbN(+!tZ)U%*e_M5txqCRVyF>M-H)hl zK#HLlhIO>1cuPXWrFr)%ekNi~Tc>B^U7v4q>gU{8krkhF2P@sM9tV`E$0k^h{AKj>5OM4E!ZimXP&WtfzQ(=?|SCvT=B;j_&i zfzQ)2pJ|RPD04DYVVXk=R!gK&?Y|2dE99B{e)fP~pa0{IU*k$SlB5s)6QPY)JoE>b zu)WX*m3q+9$FrHV{L@`w$5!C7~x;;%0huu!w5 z_;I0t6`U=_)rA7qoVFC-Eflb0wWYYSP;%!p{?bCpozM7-3nh0x{f%|U?{+0#NxE!pi~5n1Py2%^5$sE7i^DK++*0RyO$)ji7l{E}C884^ zS6K!R+`PchQPXQUf=Yv^@ir+Vi;V}Q6m1(q7>VB_4F$dPV2=BAlD;8UR^QcYjg+v@ z0BTYLI{g_=BfwNr&>Ts7AH$)~PGzGVVM>1mHS&UAGJ9t~ti~M~?q7^WxX5@=CE}@C zI36Sc5+1~&rd^XN4zvF^wf6rV%mGp_{CAKS@TMZYzT#^L)zq0JeQ!uCCKlAxA*`u} zmYTwSA+lgG>*r;gq;yY?`_H+mysx5S#6n5b!-)EVp_r{lPHe!!Ow@1_br9lgaV8n( z)uK3f7&|H44>SUrsc#i+|8AyKv_>-(Y zKgfo#66RtzJb6m`EtyGK^Ca|J>KTq%BrF&;-zuUW4C)yUQY2FB&Mvr`B;Zj(OHtqO zYa_0^M7lkh&a5()kLBt1#L}t2boMGCrmf2IX#?p?^C>eW%cuP3&Hp#?zcu5ZLGK^U zn{ox(PZ4yv))n<}b*?#BEMT2#o1OL-3s_m(QtT@hurIf!h)XOMurIfza25;Lmuo4W zcF*4A`sL78YH{34J-^~3$-%A1WRvXQdRR8ezO4tulZ5a&F#g9fUXR7{d>Enb$~A<1 z#$_aFzMh8LZ+R;r1GW%_ora;TEzANDFcx=)b;Niwn!ypePoO?Ycd<{>T~v2-3Vs6g+t z;%g+)Jtujd&wBE~>VE;<9iX1N0L}f%P_8NR1^4sx!U$;2UCB#~tuhhsn1FT#y<;wf z`LP>RQzwG!O7nhKG?-GT5pW#&g9q9;6AWd`O}{mOaCaxKHuf0>anUvxmRC`<0f@U$ zli3sv4SfU#54O$!fKigHt6Vk^#rQX3EV5vbA(DoIdqBa1?DM~aJ;C@Z@bzDo>y4-5 zMv?pHJ;}N_7bPT$gha3(fs}?949)%Cnvne}@N}B$WYZC@#X1d+F^L*Nc>9x2N(pj+ z_bcN4%fM?71Ba#qW8zpMY>y+HeY#Pl(nS;pjVc>nG;n&7n^nVUC}H+weN9YDz}>9AxnMkZ-ecIyucV*N+s7OidSFtNoQeHC;bcEHX9Ok{m4F zE1P70@yD`B_7(4xO|qwWn{1NZ#UIEf*;V|WY?2+t>&27Y0sprbua+fkYw-%%B%6wt z$R^oXTr8VpUGaQ@B>(!h`$Qwj!s2wKhz4!|8L^ zuR%1(9!a;} zah_At!Q^jbr>5WKa3B?wXMgVRvgP?uZVC(m!QTPT;lCYxA&3Webb+97DyL*_vd)DU zgid%voM^{)Yf73%bz@KQ&k@P9c{Wl$)h_H0BfO#%{k*r8SS>l>U%< z$&t<9f%(s6eL%wPXXLN#WxeKQ{x{G6j<7+fXkPoD!uOm=if0WXkDl&Z_F&}C4{5KW}#WNbXtZtT(WA^U$@n(vBypO^Zg?R=4MA85YPoGbF}1I?1=(u&2MjWlPA zeEUH2g>$Az$o^legAg7H^M5|$DezSXJ|5R39Dgp~%+qJ@Xu%Oy!Be1_w_t3Ird4)V z3O$KC(d}rw?LsSVoX^`hB7;(bQgB?FX^u-8ZpwT~Tpn;|xRA^1IhU{GeI;Ao6Nr1m z3vOF76zxhT`8sY~P#ogE>RH|^hI1w1^7`EwZV1~A{2#*D5MH0>aUJ^?AUK%QdM*#o7 zWPA~PO@Yt<@->ud@yB`k8C{rY(SE|B{jOPcwWrMv)O47x7Yx-)gX7JDX+SC4B!TE$ zSOy3Sm9y>YJRRs^(Gub2*reY;{)`4j_0qFngxSZL*+)}3uBLn-nLQ5?%07f80so%{ znU4LNx5bYS#`Quvwx^}&0&q=HI_?8HCi|0bJ-uu3Wk|(amLA-ejmX)aGEX*hQKFTI8d;O8!0fA@NuyCvq~^$=E7Obw zR03(?m1=1k>1-N6&ih6ZQu+P1A)x)4nRZLPT+q(#`^Imc@EE!AJM&EgQ*4=rhIRmlSOLqK`czD zQJ9V}e05>nHS(2*k$j6=Rv>sZz|8we5=Qw;3T6bAW^sxR(@L~74n zbmD3ABHJeTK~1fiS1Kz^lu80YG6%_j+t;L&%F2JW5v+y*)``u)!x+^1(&1>+XO4&b zw|z~1f+Un5lZFc6je-9kF#a}tJ&%qc#jjVWMmFW^dsES(Wa8e`?CgFP4P#3%qSel`-2>i)9(}6hb~?Kt|BHe5?-h9>NrOHnZ*d zOJti_B`Fw;|NS5v25EUi_-7G+fqemz;46G2f0H7A-{g&W5I@L%V&~aDzLU*m+gLJN z2Q@U2_vIb6&qltC=Nr-^@9%cr$o_DX8sWN?5%Ldi#;B1t3J&AV5H%P`0fq?&iGgBQ z6i`s>fohnT0*YhZ+8TZPSv9yv!A`t+MvdE2KvBN?s=-eRFv>UYV??HcCtcO>K5t_v zZq`MOK$Jrn)Uy!E2N>~o;HIw{;3+HX78EPQoluyw%Qc6>clW2)N|GpzHPSg7rv{!V zAVM3cu^0-7g6G}Ni>}@0Gjs6f?{4S0>;=nbQysiOPyWnYa*Kb-no^ow=|sVEbhEX9 z;(t$6BUBV%&~e^S4WdziA)A<+30wuONpwFQQO&Ue!PRVitA{(F*wi(eINvX7EpbSx~kRWB`l$ZX!2 zxIV{*TjVK{?M_`UE0R5P8(@q?vXXpRFu%$OR@Vb;04ZdQ)xq{6*aFXzl^AAp!X>MJ z8($W3wU4`qmN*oNc*^kUiqQ^nXRR~EIYbMbmM|T))X4FB z3CUS(lB2<Ab*{4;8oK8I;%aF!MTmy1JP=^GqC?aGs zdHj9N^h%+Ug^J0+%PjMHD*GRR%|9&L{Hom%EM($POME6(7MeFf=!P0}W4rimiSw;N z<6&a(avSt(0GoeIw#4_}5o`#1o%yk94F0>oBk%)rFIK?CRDF}@Y0(O3j+8XkoUVn@ zk-EO3_WK2K-?1=w5iW5q=6@pz;`cWR5Jo$Hw1c|+k`cH-cn1{&7ff!VLFwCze*Z;~ zRVIj<{gu=Uve~!9?3-%Y>jJtX5VK!xE5lHrK3_I_zXyb<4`H7}{~yVKc_Zobzi_D& z+O<^K4GsQ07NMo##V?$Vr)Eu^Sg)_=ut4iA4QoD&&Ds8A{x7l(3r(gbw*aX*oD3&% z-e{+TJb@tVOc1q;{FwTaY!~^v1PCO7l3dM~1@WUzr{-FRHjm{Z^02|8yq?Sqo@Ry_jZl=kW0QJ0YO@7e;&<__J;}PIJtNiy2 zjQ=k%Uclaif4pA*WjuP&2WdfDd+T-7?>pvqa1j?@^w@1%K5A9tPT~ za|DZlb``RXs7+heJ57=&5jm&gf6;79dk9&4-lO1XGQq21x*2v1{UlcLD2GZ86I@)E!S}=O1RK>H7?VdXpu* z9m2IM8)gQ8X8O~q_EszZ(}4fW8NZ(`=W{LlfAP#6f6r5pYigISB@^NT#~folJ`JDjTK)BakiQYgE=80{A~db{f#>EY@j&!`M>-t%|&Qi19nY3kzY_qP1&HCdC{EYOnHtUaU z!+o%8#~)jAZVji>E>GVk)zF}{ld!ZoMrqq<4Sb^Ncfl;H)&DD#(*IiH%2-+C(+bk6 zUvz$6#=jWpBte?RMOo5mii(6{Ioi?`774|2w5CbFStJz8(U#`=0-;!rwlt>~2kVW*Hw{S6yjqGWGR!1JUe{p=X&qSo1XiDX;;Ir{vt) zKe#lQVE*v*@sFiQ$<%Gg$_7pJT8kz83oM00wV?F(FZHL)|1@i?KW3c%N9F~e^!v#8 z6w-f_j^;aPhM*wi_*eO<%1;RKUlSsRs%UwpscbF?aTFnPNVdVLb&R$TG?OH(KK_+U zD^qEHxAK1}^#2}=_k^#d^trREgWH*ybK-cM9=L`HOIGXhPDLSUfD85_JokklD8(8_;Y|2Ja15o-V3 zJ^h~whlrC!&I^*wxE~hluvt^XJeYBEqw}(4P4&ktzhsf5IjuTP?9IBF5HU7p1mv95 zfa2#%0zD}XG=dErDhHGxCooJ3gzY&g5M=M7wEJlu9;*TbXy>{BO;8W0?C_SM2r4yhgj78(fFBCg?(9xDaovDZ_!tY70m|86B_mC0VXBZB=#z z$*!y4cLC=D&LNre?fb895a65yUErE12pEHaspLf{k^m=@Pq~q{jbHPaSPSsw_g$rD zDm{Z_6xhiC;dqVf<2BAwiv++cv^Ki0WGIjkdP0l%ff7JpU`iLq19j^nNWN|U2Y_`6 z2|D+M%$e>h8HNBSZLuJ_&@yl)8^>Z4#{-x2|tZCC-Ge^d2bWUcH+0Rcx8@(8Vz@ z%5>;&7@kZ!yJM()HJQz#-Zu;WuBxq!WwAB4*Z<(d27#ni&uJyDAS?L1TcRLi->v6l>z6YY8XKiA`XH zuI8M9HSs!${~c`O4@`7^KSCar5X^E2+y{$#cw<72zEXywRy^8NQ$}J@zk~q*-9Mlf zR38=v#fhc(Ukg0Pe^~$hgU#ik@S}ojfT8bb_#+UQ1*=DJ3=8s5EG^r$Nzm`6|0;iU zejjwkKK)H4jFQ>{v7Gdq0t)KHu6lz3(wGOd{L5XHiJVA>) zEv5yn(heD8NMzF7QUM*imEB0km!9MQ-|haN7eRu*SJV>F3&eKUhU1Imyg)&cql@Ic zKtYlti$uIY4fr4$X9n`<_}0or+vI#eCSF}6>Bl~?=gY@Nx(NVb;I~q zM1em=;1|6DH>2UE8*4*%UE#Yo5zzt3(FwsW6&&I@{`W%@!2P^FFRHND3tnSL-Tco? zBaoHQI9j8Gqxa$&|0V5(aMq5t%k(gLs4dmoQHd>t50v5o`^ep=!glKovAlNc>HQl` z1yV9}gB&sM-;h5>sDG}FmVX`ZQV^gn!w8^c{wi zrUTWXqc<%!DnD0N{)hjDq2zB_2b8($yED$Y3J%Q`@-L%2*`hzmq?qQ&+{@Bwj?eu` zI?d6!-%F=Cn=5qwZ%cD#uF(0vEzRkIldbu%}DUOarCU(Q%eYX9tv#P0!9FSi- zd7v5DncEADzAg$Bfj~tdc6TF#^A2?WVjrk`X`q3xBIsTdbUan#_OuTqL3x)u01bgQ zp|Ast7sFRSGz7mp*I2_cOU5t{Y7iqpJXS*9Yr@HUjn!c?6-+M*dOQq1Xck3-OgkV6 z$$Q>5B*XA*S}y$d8C+(J(JOr2|YtfCDA~*|cRj)AmXN@E(EyA^cI` z|9Zx=;Y-r~cdTKGC&^Wcan}PQ?kc4cK4Um~;kU3XVy_`1O{8>1Eh- z%D7?y7-G(0@;?@7%lw3`3=d>yEiCxTWBk`Z(|(Zz<%0x3LwIZ8|6#@#z}Nqh{YQ*p zt}5fs0BViez?ZBeH0S~F@ilRuHjAS{rOSCvfVvtc4Fw5DWM^$C&^?@p1;~X`;o;U} zr)XgAK!;mhY!H^snf_Fo4QZv45PYaG1jc{D#UIawuaDq!m#(3z@p5{OtW1a-mydl- z%hz6{;?o&cfgOzDSuMa>8yk+RR??C(;ZS*?@!47Kg1=;2@el+$W2kp3@QrmM$`V!gpJVp|Tk+`vIe!8r<{i)0dyrWC-@b|h%hp@|-?64JoY6kU zvyb0j{eCo=35d4u(TpO5l5E{;wwV8EKzIQWzGa=%gL&F7>Ca->cpb0WwrblDuQzA@ z$`O99o{9%0x-lnn(;U6|iRm%+jZh*1FS0%j;EBK!h+>J)(uYcPG255| z#1ItaB`nc(sIxBQNqa0C0ksx;Kc4>t^s)25Dtm_UfARf%J)g^G^6vaO9?E`UXJBZE zgUX12$9Ub7uq*DJ6UY8);DB0zY@5((vv&>r^E)e!bi!jKa*-}fh0w|TH2TXdI@y8T@5kg>J4&8*;2u^_ z+Wj@+V<5pRZ~nDq5D`2UxZ4dLw!<_lKcAc5mC|&lPKhNURwKD9_bo21OXTVSOD2)d zz;G7x06yOQYhoh@)U4*jeI}VAVwgQhUk6`UyuI{I2ij6}p;$#@$RR^4X=C7PBOtel z_u-3$w>D07uzE~0)~cfhzN1I8Pp3R>dqise^eBDHzh1XJB1=ztlyc~B9owU>Myiyg zqT04c#;(qK3{P{Dsk-g3SfeK>!^(17r`uAH2<0))V zIMojVtor`v8?6YS7dah6+o#Sf5+AMpA>+VgdSq2ic?KD=dgr?zyg`i6H84h~Hd>+h zaN&DNO&siTMv4rRs98)VtXpx*YTB@-039Rf(O=&zd&Kq#ZQ)1KqkkVueAD)*Gd@D3 zRhJfg{x~6FPxYB8wd7}Tb~2D0k2{Hw9lKyZEChuTkXs@G>I zjeFORjVMi|+C}J(n?A{WUHfBa7RH)9ihq1};o1%kz_e*?^wjLfCh5DxSW&B%A3QOG zDk_@H-h0zA<777BL43IMgQYJySW89`6EWUn8;Y+xmVQsb!oPE6b3%10d{<2&m`DrZ z{a6*&Rss1hmOssdf#=8A4z_}2^2>ZWU&Elq6Wg)nulaY*!amgUd$XAO@P~EtYvK25 ztdzAEF0OAxl`@?=1Y)D%!F2X2c8ayT_uuSAouWI@-HX^foI01s>T(v#gf#OVGz!|A| z_p+E5QpS_XH_~)$RIy|+t z7%zd9sDLx*ej1BaD|YGf?zW1BT37e~-(l=`c9b9HOW8X-fsfS>L=x~Cxp>ks8EuB%a?k6b;q2XA+`J?P0I)Cak{`_KbyL+jjc zUuZyW$XfUT(3VlkZAbhZskX@LrDKSi2%2zUyrrf#RX>wg8}FH&10A^K83_$_6mjr1 zYO>uar)ktGk;aCoK8Kxf-RXDsbT&pSb&jIfuoJF3S$ZvkI$S- z>fx*F-&!~k4VXmA6~Y}Xgf&-qZQhmr#E!7_{2RWHPiD>8>wG=y#q+#z9P483s`Gyi zp}J628`~1;y;uiiz}k)9ov%p@FlYP`>Wt4Y3@aPJ2XB#!ONzX$N(Tsu(i}-Ff+k?wTxwrsf^gF_;2&u}84j zsq;67IoQi;S7}df+N1P=j@E8nu&u1!y!(hkZAI-#1V|6oTwmm;J-`&`*uEPM8EgKy zv|=m`84<(_cwA=GCY39_E1*pn6g~jI{L1|bwtsc@@-^kId>z%lc&M+hA+|5(U-oZz z>FbR<{8CA~(_FlM72e^ON?IXf>iA#E__w@-mGUJ#jlaVC@t6366^;7;Ph2P&tzW+U zN(f0t(WD+0L%!2S{(my7=?~iLDRQ&zDI!=;98}h?-@Nx8ZAh~Sb~vQb$-Nu#Hw>EltD^_7^Q}@~4@`5;0 zVQYS#VtwmfFL{lCw+1uoTN}K*6{E0KIe*yR@`5-_VekBO#roDJFK>-e*!p%4Sl?Rj z1#zgtR<7P)ed~QMZ;e;j#^-H_?|VTUr?7XIx@>fL$!jdU6UoP78m1|1yW@!MEiZXZRoJ#E!>n()z2xW zyp^ahx6{_*J{02rPA}B|6L@y4o|R{vEqMiLZ@Hi*vTUQoUN3oN0cRhyQNPymnVcD`(-;Xp*$QqNP^iY;-ambVUi zp)?=H#=*An?0}cI@*uB!ZQR)Jg|1v^mv7kWdB2yu<^pH0*yg2Ay}UI?VN182v%a;@ z3t~3B^^~puf9B<_`7q;zU$f;FN};mhzpvBLg;(o5Z}gMOB3 zo2gECpurI&hs4@S@;8~;xU z@$8fr#0?<5Y_-vK(o0_J;jKq)oV}a9>Ps(qZG`V43+s4+iB9_JC*;Ia!pWyrWR=$Rfgk@2C78HaMRUqTM5@U@z z;GLq~weA{(QmuB^qGK@1@p#7>Yu34H5DM)2!>++7m}?JPba(-8^>39V zI~}CO3zd`O*U>Wto;7qVhotKam=_xaCC9z5zZ^ai?$+uVwH^R>YxKL9@Yx#u&1QJF zTEA;E6z*0T>4wAIRwG?MxZ7gf^@TgPe%GcK+!?jg9iJJs(|r)!Z8Fjg#ykC42Sk5Q zf7W#<)}ujLry!K?^&0Piclxu&-GXr4rQbahgzGCk9XyL$XWR`%{y)UxxyntxfM@Y| zK9!H;y?IMsA4Y?Fp#HA23+xNFmu=x~p>+W7*=n``TLRz9+VKxSfDFbVNw4iTRWY8I ze%rV$-u5;iy9eR4s`Cw-%6|Q>5%ToYa^Bo$v=l7<9;1mpAA};Lo~{Yr8R?n?qe!R` z)9CL5gHZO<9@c9fgwmUK_k4T2GivdLAe8^~yH-Ic=UZ!kn|}A?Q%HAd~>f+ zj;0~d(f@HvZXAKC9zl8Xx0~Zp@VTW z)=Ghw^&U808HZu53hFgho(RSPS9{#x1?;R}>W>?>WT};Lq}A`6alarOQ}s$|7KCG` zPBD%NCk>>R9tpz1P_LBdgHe>wc^%#$7-a_i-Ed5L+-Ri{vnrz$prJnVJWCD28PllW zV4VH+tf)kXbP`*<#6R_D@j)ox>1o4*QKB_#BN#bxBkOoDdldWN;x9;Dm9fY-@4f1eO zDEExz9jJRDt8Ulbc%6`MzNKr7$A}`YM&upZ_IX1(9Mz73;MWP=u^*k5;Bnm;N1*O9 z?tVK3Q1+Xyo$hp9KP6ho@IJ7FzlnZ7&)5#7Iva8vaiLm?_%QtS+(=Q(xczc@qk$e{%WiFDy8IlG}wZy@*nzt0k6m2 z!=8P6SByJ8(RF-t#ynF$%8N;MkVgqBMew(v1l1p69f4BSJ^y5;+Fm=NH9x$S!#Ey7 zC`X=GNghv78!~j&!Y)Go5dkU@p&oz=nXH)sPl9TiK*zfcwe4LM7{k#ca3iyx#<=6- z=49{BG9m&Baj25QF$`gwSPO^hXuhkbnVfR;3MvgE#Ai*!L4>$3OIHULbN>T~zaipC zTYu<^?j{_)^m0Ap$^U)|&*$}_v+lTE{-ecTyes?Q*$mYdVt_k7CFjFyS$ba*^OIG{ z$#0?e;@2%6dx=?&z9Ah#Ism}|FI!dRh7-#5tWux)UOrGt5oM;uQ?7bat_905(ZWr% zk%aYQmabbS=7Sip{)3_UDgiW2O0$deAPe; zr$cDf(X@f{q9^}b!$ic>c^w)1udztsjyRXDY8@`txWc zghtqVz6zP-$}%?N|qbfoC-&%cn_#D&CCKC>B;}@IR3xLw$fSn9bLoR@fq2>Z@PSYE%!EyS3-%r z^j6r5q&K9h)J&%!MpGR9Vfk?#N3E8g-V+e%50~za{S_hGSU|!E@nO$<*x|;~c&zJ6 zqIytSNA3NaVf38JEzH{MNi9d}gtvt}+k2JJmok)|T50r5~d?4@Uw(%eGzUIo2 z8~;lbjIJ2gl4y=0<+m}ar(8hU2OmIb=E?uIj3+ZUNC3W~KUZ*#L0Uh_aIG-MMv<|g zM8P=kVQtA(tvV~#A|5C%n4+gh-!D-bVD>MOmQO56G_j;%qe?R)3`u7Mn_d&jb{IYYJj9d# zwHSA>LRO0>S-JWum3gj9UkeNttz(Sm7S<7Z*i>qR6Y0QuDybf+4&7Ap%pQJ8t@9V` zbv}gfU9R;$We6W*2}WHDYj2Y&sh2tKb=-?M&wH*s5GT{My4;nAmvROpPP;NA39di% z^477I7)p9lE$QFwC7nVPz6DGmGJ3`U0w>q_dpdcd-&M6q6T>S%ZtK0s$U@QI%@YH1vy7Pt(1 zQ&B!)l(w)gnlmI-F0KP3uc|kR>!UDe8}LEQmpSBpgrCwd2M}hFYpLS5UB~1k^AZKanT7QvJ(hmJqfUk@CB}Zj`a2IF zD1${tgOpXW51z@u*{2`jE_dk`nqn3ifLk4Lducssn$Z$3s5REsCYb}mV%K3g$-G3t z&~#xvNV9l2w1x?qMF8*$aK2?InN_xkgEaqtve0!vcK*K)ak|4)PU`Ze6L>&5$I!82 zWt;rBLG}Nb$sd7#eCm7n8Uxn2bU*lIcZz(_hk?n$@X#RE(D|I9d4jXGTytLNVB@ue zWXw-Cx^!D(G3RT5ToaM|lkz(%O?D;q&#ngAzu^OD9ZfV<%2?(4#^;FR0|}$lg<hz^j3Hy~`g7%>LibbNuhd_)^}SmB5cX zyT(!hwr|y!tx=+4651+<4Jl`cZekOiEFO&2S;6hnA-jmy89Lk#8&pPg>IF48nU+pC zVvmMey9yt`>|)ys0L;y!bFR-PtQ-d&<*DeA!KQRn7Qn{-q|LZb7 zgZr~w_~Ch}-RofXURj|F9e9V0Du=O6O~#I}3tehs+MoTgY-4JKn6c$xHa9UXPViN{ zec8SROCNX`bvSHfIe3jtJd1~ajI9QMd$RQv#~Y%17w8H|^w!4rNt(&gG-zGA zN3j_&s?{-Um(<|Eb+HAgI~W5!`QMju7k`57fgiVX*|&ai+KQzDp3RoCVuk`@2$8VK zwxg8pw2gr#JTZzo2cVsMY2{vKDb&^ZnQX)NnjRA!@{@)}WLf2-U;0DIUr`AlnqtxqaB^a++c@vnh`B**UT-e;g^FW@EW(G(@LXI!{I;;n61Hs-$r-ds`VvqXIaLnjJP3 zst8T;JCl>aC<@YNv6WXL(LZM8p`Oj)eD-?TW`JQI!d|hJusy(cWDzC#%17qA_S`<^G8kC`T29vIL4! zTlII@^JQB#27C#dL3YV8hHUBC{T=Aty0Rt0(`bUblC5tjhl|2JfpF7-*Bz+iTm6Ez zg-?4O5ZwS)?&Hb-ml<2Z=Rga1S+>^?rlJ2_hTbQh7IMWMr0{egxJe_L$1tK>H~2)= za13;WIzo}eG4?Gw+8_PoTDGBRy_0t3?W>{v;W)ryd{uS*{MxrJcjb6 zVfmhe2{o4X;Ol6!w0bb3&Dl`g0JRB>wyiB(`fi5!+5!+$5wRheclRb)&{Okbpx;fu zn}{~54FCPu%P{_L;PYhpKZ>Zmn4vR9%;N@7n}O6erqhJoSDZAVN5U%<8iD8PPTf}Xz<4^7@Grn|G?5fs+|9r6vI;MnyYwI znm(JN12}<-QFwcVJ5AQ);S@|oU;Qn&3<{V?NR_EBya zWxgTK2&5%6-GxTrw&RR^EA344gRWTPzxA~9-@zVZ>@j{1f0Jc;smK_&^OWoREAGQ( zq^_^3FxP|M)1cy2q?PyG-Zl)2PIQmBC2GH(u6%PPU3a zdME3@K3JBkiHZ80A?AM_%JMcwvru4oY=>TXfXY$ID5UbDy{;xv{&9)=UVPboULX0- z!~B_^KU1~tM$oQ&tai3Em3TA~qo$MwoiF289&nwB`ZC(gI!y;#Jb3vvy+7X&xq? zaWoJ05A{cs#wJR4Ldi%Bz^BkZ0!#Sdl2Dq@+PV4e1~}{lNyaNxTPoJo}_uQh@T+hV`UIM`U_hO zA3$v3$^YSuXYfa$4-CIMeSaAF#oRLoS2Dfn_pUj`KHIKWpPUg225pF3NaJ$nXRijH z2|NP?2Mn=~#%k_6=FFGPy)EWm%p#!Ab%or&3dG1b0fX&x%1Fw6>l~dQWl#TnqouB3F_pvlw!zrMn7K9oyJE?Ew83 z11}=|!|io8($dnTID~8F$R!{>#n5^{_nFrXm*;@?O(1G%1q}6Emm%80Ijeo5dF!8m zhVdREmusHV8o-KtJk2R%HMH}AsM8c+IU*cFNc-ok@F_X@Kcsm z-@`one+*+E@htuj{Aou<&f;!XBcn^&!joANm5T4X-f9C-YzUCH^Hp$anIMyf0tICh~kXi+AKN z@J9SGUV{g*o9rico_)dgv2AP}Ov!UuGEe7k@>lpsHVlS0_2N_A>2qBv&iub_!Obgp zll*7?_i)3$bSG@ejz9a>S9p_7&W(3u|AMcLbEhY|KKmo@cf1)(H%WPy@n#I(96XVC z5^qMk)8ky%cjOi0%_zFb$jic;SZsIyJ(G)B^O1D3FZW}-89_I@^Ahl8INj{X{Qz%b z=w?+eWj%~;QgWBz%}~5?XXFxXgN;TEH-n4;4{in;vm4xm8SbE=aP8a)D_v=;vgpYq zce=|JmzKW`Zzj6aGhB-g<`d2Yy4jJRgE!;pW>Y>Astj`{9L&x*pG@`U#N0AdvR32G zb9fVXDGQ6hCezKXEUJS>hP!omGKp?>r4t3usSf!IO7Y1=y4hUt`z^Kqzrxrnd_I4k zeSQ1=-xvn${oixw8eZ;Gp96M@vISbWGSu6WFs#t;ir*D%*q?hw1lM^eqZR;I+X3sI z0K#g-S}9?Lm|dm%2yxu(JCywgf8>_638*0ZZIFG)O)dMDdiE%O1{^c9A4u76&(+nw zo)*o1D`tO|vTuN{<^iO!4x%8)QP1&zjDyc-`*}0w)8ET&Txx$z%cG@HKcjCMzTXAT z38646p)j@EUwD?pqcAJ5Fp;!L-zMiukl zmAS{v>K73yN|a5A+M8^DCTKgfebjo<O7kw+##YSJp8Sty>;QDD=kUjEUgL=F zUAZVNO)#cd$!3A(?6rrMTX&7kn)}4lR0B~r=IX-v6GBF4fVv7%`?HSPrYSXwphH2Z zDjiT_w?I|ph3&cTnX{J|chEgT?IGGWT{tzriC!AuZtKnxLT%2~*HvLUK+~=6PR2QQi9}oC`HU9)VX>3rhAN# zN-3b?AxNz>k)u#mAgT!@Yz*0mBz(;o4~%oPG_(wnggJToPJG$ZSRW+diB_#t5fT7f zJ&g@G<9X(wZ*a-ze*!k1Yt<@-s%}qOUur;%&QS3UfRgU4D)3{lQ`@_#C0N7+>VEO+&B_n~_H zEl*D01?uq>*5ltPeZpijeE}DLnkLc znfZ68{7>iU(uvrC0OWrH^KYQ)t~R;h-@?BI=KQ0X^MDF##_On1LCttZFw{4`C0j9S z-d2kwW2u?6xNHF9O#{Fh1!E2=o&shqGHF^t9Vr96xsxZC|-9RNO?llQ&P zX6&QVPGf;OP&b*%#<3XEq6NVQiqQs7JWB(v+pBJnaeyGzVIq{T5$PYK`Z0x!afhlR zRFfN__k`YqNWYpDrk+fc ztWp6G8UgPZqGytzE!96jXGgrs854KPj9TA5awmYj}(| zhtl%oeCPq+&m!O7g8n}N<}+3Lm_@VZXMr^S|K`d6PK-azKH|CXha0&wDdJCBv>2Z$jQKySV6Ts)&3CGouBTrl6;_|gSJYAz>z4jmFQ}4 z{&?VV#CgzLE8Co(Y_>8HskFooy|Y!CU#4{JsZ7TLk0Dk~yZ9MHSljcnOe~Qxro<2Z z+*K+f;ZKe4*qM;RSr2X*TLK^QR@^56-vl+;|}hu+O9Ew=@yYp>~qO$D^Gf#_E$ zu#PAHJ2IZbo3KN7qW?Y1IN~On`Bw5BkG~>@e{~vvK`@iLiCdSOo*EZ9*m~j9w2Hj`{({X8cHdfiLPs>kx z9+hJDbMm#FS}xWrA$#;k7DSO?CsErQ#bN`drKZs@yr!^Ju7lgdf^m@job@r4fl+og@7ctG!zdw@CsUYA11Rb@gAw zx|)B|?1cjJF<_yiFa8_r2W5@MlTtufP;CJsG_W_S8HDg%zP_PQb|1VK-XrKy?}sP05fcR#9{Bkn^12|3krkOZ6mXKVut^R*psE~d`_Z2--#LTwh{;Vew! ze=x2&1Ize-9?sZqUc{fhTl&A&tDm9%CCMoCUc~=PP2oxWhFZE%4R=Wb8LAXacZ}aOL_j^NG&T*@ zUPnd!vKndy2U@iA)w=sF|AHxPh#{htA^!_X6i$P zyLc%nx%4)3ZffS-o9gan{!c#JosXQ+M;E`P(H_a7Aom}t{eZbQ@yxwEx_z`cA9R;qBoul}Xnp7VsLmmB>Sqh8Ygo=`wUn+}I8&MRat@hVXPfU~+wzgV@G@Jot z03oKmo$hnY@qvgAjud|~$?pmLiKf2N%fxGKTmJ(_%G=4Z80ghVanSJJos@u{vh&|! z<6_u<%;AmMk^hbHUmZ{8ygmQ_u=gf#HXd33cs;kf@4X#O5R*vK(Jcs)SXv{pkG6!w zz6G&08f}jyAOGxPF0;cbr#w61T&~Og6aCGI~~uvP&MyPbhl;ck13xmt(fyY znd!1CCMHmExM9|Gp?UL?72#Qn`VR<;GIcXYWj7-~2$<){;e!4Q&}7-9dOTyiUmdT+ z%*C?fg{glWPNKgzjgYzy_aoy5$hU#^w4MLYG9^uE%C^84na@ljwK(&AzZ#OCMG(`N zIcjR2@oJ$Kdmx4-TLNfEwf zssTZo#{9I*BEJf*A2iH&;HXf z{fAuklrmSTBhLH*-h`Z_bE#$e3fMp>Ex>^ChEYJ{Q#*mC$#kO!2b7SYT1ZS78K+F? zS0^LH*)^HE3&sG;Fa-M>hVlT+J@`~6Lr>do#MH-FI1N5#{pn6qq8BappcVzyVg>L6 z$ksHoE?DY;-vyq%UuItS$!~uI40HrMj~3Yfu@DfU!5!7%`rA5sE-iDHY)3Kc+f%z_ zJ6b9KXLrp1S(kZl*Zx0jC=S@Z;w-tmWiVjvpd+x0#&zIV+H~{`dENW8BNENtR2nL zHKm@Svi3)mwQp@Q&>Pm7?qoL!r-WCk;LN*#uR*189Jffk3Ee#CpQo&Tem@+@$F zG|=(;d_XNL_PqN`_A%oyCSW@o7!~k3ZfI}QW{Jo2-p?df`%|?)VJAHH;8{etk}c_5k88whO|+tRh)Kz~IwbkHUMqldDcg z)>Y>ZW}I-D;y^*$T<%F-ll_g9wmC39UEI zJtmOT#>~$>e)W7hOUN4=@QHO2)Je07kn-& zH^6-paUb%7t6u(M_7p^Y$n_ASrW&ZRgzC-Ktyf|trvUX0L=82W;X0Du*N!yKwwmD& zAn$SAgODi(Q$}Uk_j8 zKVymBZ8@epe}Pi~&>M&J*3(=RCsClhP45Si2e{B>(UoZr_Cm~xY+W()op#c0X$H(c zBj&>}9_o&Qei+m41(@!x?g*1%t;;fsV9K*~JIu49UBilyL3LqrN6}f#e9)np=<49= zfOzSZER2A+DcgUIIX`%BBVL$E+Pcve7Nr~00WrcAfrx3o;{Ts^u=m;1paV3L;JZ3F zJ983b2PYnhZQ#=!s*o-3dBP7PF?uI*zr(U@SgvOz z&X5r<%q{K8(k>h7=*NK=0^gG(m)#h^vFKz_LxAkAS`%3~tpzCPy;yh0vwi5$GYfy^ zTK0c{+nux6&}PKefY}K52${3hY-`;7i@kf@g_TELIR+5Me?P?L!Eaar%<Ec2P?4At|p1Alz41`wV zy$L&#iVKz!IkUV8Ydv!=<ff z2>a{&ECmm*@slV#Oy_nNc$miRYw$3Yn_Mt|bVWZ_La=1h+4T zSJV~Ncd(*vP$O8>VyO0CjDF1sC<(3vM9H)7|9#N@`v{!>``jMa)f^xL`8>K&Af}!2 zR~!MD6SzSG7@W4Go54bT&xIQBgEW^^@{$LP9XYFvol;gj_eQ!EmPNuzi znywQ9Vr~txk`)`HG@Q`3<-G5AtMh|~S)d!#)B0l^Wg|G&JvB)ED>AUuo^8pIvuFYq z=6`Mwt~q`6CbzF%bgb>9qgDT*Iwm=B725g#6l1Gl{eKw0hB z<4EB%G;$+bVKmTsxH@@8{l&`nF@(B1XT3?;R1^VJ%)#8?5!>kWgy}dypN98bc=c68 zEVZsND)0B_Y?kFcrebc;SVJ`RO-F-w1t8vXgBxn^_T+qMjHwtFX18w85Kx9w-S76K zL=UH|O5BwKq-|M^Wr(=U#DAqe=6?%dWvsoDq(t1xtXC!BM9wbb=q;cd0oBP!b%Y;@ z<;&$g7m(7Lm?hiwzCrmgLOq(J8;8YwLJdlhCbREYk4@%4USYiPv45El4r+{`0x%Qi>+LzXadk zn!TWTGmq2GQqw65&=?(&HnvUn`9B=AG&Wpm!76Tr|2O{h_a;<$=Emjg$3rpyk3mrZ z$FW0ktQ^$NAJ{o%Na!3#5Ejn8?)tgXUZAOWzSabP2FF41fzJR!LVYuKzokM&Zy> z{bW2?bQGS$QFu&CjgESkny6|fQ?nJuYSx$-eS{|9QP4fhVg~}`wM+Fga$iy8XA$`U z%8M|CDkG{Fjh3WbI_fCQKl@Y= zd*(6T-h@Pe`HPE%tE6@wcr#`^Y&`?! ze-zndduVmLP$!reR{Y@W58~8u=Ox)PwhrG+%QT?O9k^k zxfhz}|D%-uSxIHv*bt@p?XLFL&k*9l%0gX76w6`=^!Gp>d=8QnL#a|I@Qd?$Uf4YB zg~?<(kZ@KM>N=WOqzvG6N1Q`+T{2Sh|Bqo~0ORejw-Li+DTNkJI@@R#2T7!!cvD-Q z+#FP%lkZS*_?+{Z{92X(9k%=Ffj4plb=!CgzjECKvM+u)?LwzD>%1=llxd(q41 zm!|6;;XVIw6e)#e`eYj;%v++v~ z-F}8OJj_GaLhn%-_NbX%6xNn*mmRl%0>%TjapNdh3oN*)9c5+dR#}vNfO4NrtaX$i zjLrydV$uHqrMOfNITCX)02Hh>QBz&KEc{p3e^Zo6RXFtHZp!wtK1z-vVgK|0nL<>T zm1==A$^cQSF%!o_eDP9CLQeJ_7pV28%2@1Agnh)krF&&Z>;PbgnntXJWyDMo6Y%fd zxbFAocQukom}lY<6H=rF$rNLt&X%2}pUch`%$?G}GFx;ES3F{vDob$xzibeMI}-n| z-DasIcNQfXvpqE9BsYP*u)F4u-;?5H;cvAr)SQf6FuCQ&5ayv$&0j(hOPK+fm@?xr zK#2tbQ)6XOVS1g^Gju-~)8J$ccMUhfnIb0Ct@&W-H?mtZW&wHBH1nGnU2AZ%dU17h z%?dV!#=Js6`$~^V1+xMWCQ506o>wf933=58w0O+;c& zQ-k9JF%yV_MIkV2E)CivD;yUbcmWk`3d~Sd*HfjJWmQ+q0TKzX#S`st7OnH8R-;;t z5W*Cfp=#kLOD|N?|8D|;IX_z1m~X8A6k!%@ikzvc+(Z69Yz=Ft1>L_Sxib8C1Wt9<$syr7G&x7V|7L0(AL)a zV-6Rg15o_6sTw@|^LjT??1%E}d>QvlpaE@5t#@!5`jO+wbT(C|ae1-s(>VJ0#Vr8s@l6i~vpK(NGY8Jn?5~UIi7Oi)he59LD!HNlFz|cyv z>Xg%Mps7x7EP*Cx@tZ(VP_!Pl{)7)rSE`T^%f@M0rN*-u9g^~mjIv0^VD7S_*?&Y) z(W2FQH*EWO%Mh(sYtxawM5I_Vk_wcTwOJMjOvcrXTxz?Xj z@+Vw+V(2c2PZvr7GS-I#pa+vAQXfRx$9+!lme$lEN@X#@-l4p#y|OU95oWImrZ2j- z=rCBn%r)N5|2_$aZNUWMiWqRmhN6IR+t5V&>q)%zXhlr*|gQF zJR@{KG>^F^+4*0X^|>tn`y${!P5kd;p8v-XW}=<{U6`^&31=U`ms|b70e>*}`jaGi z5R&|bu`@Gt$?UC@d>TofZjd~JU{+`87qDXaQ2^!@ggI=1!Rqg*RCd?FP9fMd15Dl8 zR%V@(-P#5s*yn!vZduI!ji6HvP;~;mmvvfp0u4aW&v*}88pb~zit;B+@uB}OR33r( ze+Tq`l|5zIvt`*c42l1jg*^kw6Qnomq?1qK3p4Gr#G7?pR^)~v*ij2uZ}x%?a~5G{ z*kRUX$<-DCm>~#r!~)ZW_0?higD|h#RhqR~KgsT!gAwLS+XO;a}O0SER*AU z&CdTexc)!F){5tUpW;n8leFnjvcBI|jso%J)iEUAf%|Q<_u=S^DG$|}hpECv4>>>BsDs_}u2vZ#ns$4%zfWUo_OIwB zYwt<9ClwJ#TM<>pY|2iMWz2A7%rXC~Ka18GLkT9{w2R!v?0K>x7mbi#S!Ce_)=P&u zk1%hT_^;HV^&j;AE=q=S!~EYj`-~)+IG()MFJF9;9PdDtrP*qrLd^{xt%U_dGcA{S zleKq!ch_a)i%At5NN7isbtO|QI|87glG$t}<$QZX3(SO5IAAos3$GQN7B!qzGme78 z3Gr;Qz9ox!0sc9Ko%kS_}$L&(`Y1whZ?X1}bEt_4e zW&@gm)tTW5rJ~JUZLmKkJ#7?WT};+>&&t6_ey~vYZ00qu2Fw^kg;?j27tkEXxeaIwex?tn*VdSl6QME z-PeakYja$Rt`CYu13*tuA8fXTZ1P=bpY8?{{Bba5=5oGXDPIzd*0p3^4HUbJ2MkmL zn{DQKxmDlKE+mgJAbsPij6*b&zNE_f)#P7gWgRuaW}9ffk0j2=YN_E=X`gAxy6LFX zpT=%(imn7S7V-uKG*kkbZH4t;^{*t~f+lP4F1VXyd4`?;PcbEtJ*Cu#6+rkik!VXy z(L>a_it=>?(zXqDreREX66pXlE|#yly-*J@r1g!;+F#OUPl~BVwipLu5O)WKn~tZ8 z#aQx{_p`>oWt)qe7p0`g&c%_4xSfvT>WVgv{9G+_(WLT?C7k&w2|h>k2HZw1vsnez zwbN^>Owz`2Duvc+{I9jH);h$TY3F|@rWCMFN(<(_)maYv?iEksrfmNaGQOl?Xnep} zbh!$n9jXsA$4L;)Pgexoi`gNsyJlOXGA0vVdA4qWA0WgNz#ETvb-B;?L>_(Oqd*9t zKNj#9qQ7HV0RVYRwp`>9Adf@jaEi+sPrLqf!sQtN0qxNM%Fj5*Kto_^*%Pi{xi2jmFMw{VXPS*AJsH8An460>&HH zSS=|w>OeS0dJ=zdHGsM4c)9|K4R{g<=Us#Np#;7oTep#mS^ofh5`x#af#WTi281)y zHQxXlPC(nTKa|p70cauu)#K7_ivtIaHwkEhSo7@iRgt}3R=y@6*2A_=;rbfE(H;+Y z9MR_5`Ckw8KUPnv$yWPd@hk^Xv?p6XX-yZM+f$IDhLmF=ntSzgd57PPv{d-Uzlf&! z*BEGx2%vcN1na!-PqggMJ|MLt0xi>!md3E!cY_~eb%_j!L==-p^jn0mFIzvwzA8HY zQxT!j4STEZ`PP*N``Q8%IbC;|y#9v}6}z*yOYJ#8#j8lgBNX}HiJS{M>-YbF(>$O# z;w&(5F#fwP1#T;A?p*x$-@J*tJ?qXUZ^mHb)!xL4(=&g!4)sY5)&^ z@g^2~^4Aqp$?xU#P+ClNxtDnp3p`g(6jShYDLs5yOo81c^sug&g0ze2VP!D|X&2E$ zX)#soE~JONA}TGu6d!*5zKC!N=;3@3;pEf9jv|UC&-Er|cs9Scl)8}3r4Aml_>uH2|mJeV2f5!3=;p&Ni*F$uC zU^5WOyFc@9c7vxjEV53m;C;dS7?xZ%PlH5{XZ`oNTcxH!v?BmZFjoDgQdU8j1`m86 zTpC=8)4)`C4;J{VNncgu?3G*K%L7sX=ZQj7xO!Xqb36qyO{uju_r9Z>ni+XL}BbS!9|2O3r`b*G7q7EJ(J+t^PV9`%5KF zy4mgj`sJp-RMKw#@65j#tExN<^S?2J6}_=icmw~>H*s-{-(9RL0b=DHhC2c=$d{E` zvL7@j)4yJzu7egFkEsg#sYy~Cb+3}wEyduNs+Frt(CVdIWtX7lxC9-($r98OmY}bL z@#fcUvi86mYWs2r8p3xAnWYH^1b65*2lMhVAuZ!GB%K`{~K?x{!4!P6Ws@kcKM~-m(~b$qt;mG zEO4bG(A|Y~1-hpNPD8r?Zm*T5Z{9MtUO>Qgw9b#@irGo?`fo&6Wlbm*P$$+HFwY0# z!tM5&HwnZ$QFK6RlK?!_J?ngD;`obn1JFVJ6R^qx(Tm-^-m>ul*72gfveJcGXq}5D zEVZaYXTn(>xEgWRnfMRKzChOB0i5p-XTV4A6!!-b{TGY;=j8W8KPLREbH&0Nm>qSm z1~FK%fc7$j_F;taZP5|i%)BWEru?h(lLezKWgUSrgHif1@JB@2U|9nK2XVbo#?lXH zn3k>1FJ#AjiK-0rQBk2!wSsCP(nd4VNW!^P^o`W{4{$K!U!9*Vy?TjO7BwGiC&0Ta z=q|+j&_4gWGq!Am(!nV3>0-tfmF5t5zhV1M8^6 zVU`K^Rs&A$TVc_4*}nZ5;c8gmaLw;$7Jy$7tlSP(P$XAl5Wq0$V3@V?OApEe2b+uz z_8o%#!_NPw;7F*{VSkm${}aoP+cG{8Kqh9y3%k!kW(O^=zgo1ez0L+K!0I*?s~=5} zD~k0KsF)KTKw>JMuzM|#{fOrS39^$8h_*QQemmfM#fxPDF%4hXA1r`sIli_eZhdsX zdI-494!FEHK^72mDu&gv0CuDvstEvI&;jp9z>n?x@5GcOnExNZms|Wqb4!fm0*U$F z!XB(NQcq3gv#@svX{J)neZz~}z z6TZ-ACO5L#V|Z>t1m++MYhpX>MKE(Ua^FWi%7W|OZRc`D@m5(bV|uZ$hb<($Kq)u- z&@$7Vb=SuNb1l0M*e73k@pjqChZ&{9>Q);1F4{`ZXL~jR9y9>eVfGe(C_BuU?kglc=0M( z5-@{cSaTZ*Ek#Jc3k~-kI|)aN-z~>!7%18gS7`NB-50EiwmKvyi`UBz3Fh|;YhfFb)*?fK ziJ0B{EQh`Od>DL2@hb@_YeQ7v672f{3M}tI_O56_|>6`?axd&n8jew2Ja?7rL6eFWT4tUReL91>1Hf{J+QYdmI@r2B13=={~}< zBXv>Bags;YOwD3Py>LJ8eja;aD#|{bFxM38XXa-`F*6YJ3y#^2?CCM&e*nmU^_Uy) z|J|l)>;nmFMX_(o#tpF25$h1gilY33(*UEYyDDOssk3e{aOROgR6W^)rUwTlwO4A8{HyFd%0nU| z{LG^ke5A9hkP7;Xo&S>=+sh^^OO%$kHvfe_J-vx*ll$VY`QB9hoQP?^l$+-79TDZg zb7E8|3^7$_ySG{U$I+F=Szs>&ow(MMJvUX~yTwv-!RzsC=-dj!gen4e+PJ@2d*@as z`Ap>-WA-w?zvn(EigMFzk0avI_p?{R;$4()nswGDIACX=d$E~MWBLgQ}suIWe9-K ztF{{Evh7NlD+k!MT@^5l@ZPfX|7oTqC=al|z!xdL-y~6}FHVRj3bk@zG!D#$xa@4H z!#NBLIzm?aVcrQTz@u3h5)_4WG|Bij77j_0kA2>_p~RGZqFK$ zO}h{4t^rovg@C41tm6pqOt!u>iiMg2;1~pKsa;=ACncjD{l*Y8)%-t62Sxv1*DO2# z>HaqrP5|Y%F#r90hM=d{yVsHq_|#tfibs^AC9d>;=EX~Tt0h|=+oIG{>XF5)(k-y& zQ6{4a0#0khSp-XCM;Nq;qybLizM1GfITbK#DR@KY>}rfyf5OX3`rKIk#qe4o-a?M2 z_bOPS*sm^@(+nUiNV*_(ngImNFdg*{1+tGP-Dev0Dw^V1us4kqyh?NS@^SvlP#%Fl zZrT6a_zWWI*Cw6zJ3fB+{v=YLrBSa%!yxQ;3pHc{s+I zw8IV*S2l%3!zlGsdLm*^i(Uq3%agv5(#rs?4WgymIHD)C(9Y$6*iLDOh}{iDnmr5h zlJrxi*!@2sK7ojfO;X)n_eKSr+6ty&b$0VH|92~;$}{-oPJPC3A5fVn-I3)EOkh&= z?-VsLlFsDl-8Pvbnbg>c9{LtBs?tiZBk6~g$+LaV8^4J04y>U0?8{W6sXy_jFL_L~ zQ}G_3&kErO@Lsk@9UIZi=2WR;&gfz@VxbpdCTmYN=kLnb}=ZgADjj z07m6IO)A+40-ckhC&aB>a>NfP?#m8}Ge&iD63xdLW^y-ZTDunW~7#L zfDfcoaViKm$Ik!OOi5H~vQj3P|4o(Byc9jlrkHLF1fqA^-4+MtwsabMgEZAKj;6Jd zswxj7m8K|#;e?lyqUVhjbBO>v^d+oj!Q-Q^W7R+`Q&7=l!pca|vu^ek#X_&b5ZZ3X z!Q@kU-Gqf((5HeFjMR~%5ZM&-F_w_iQuNHVVg~>~Mvu}e7MyO(;{45GbWGy^d^`U~ zVfQL7bf#M9YWOgE{&AFrjIrriAf>HQ~D^aQ73SzqD(=yuiuqOGm+Cy3R`Ve_zG?-w|vNeEGdUy|G*ICsTMT3(;<&(=J;B#~On#Rp^{%irpJP zFF%o@pPGa@k6y>@ZWOQ?U#k?2klDrrZ((U~3$&_^EG4>Dma=RZ;4GtzfEYk=roOVzI;#A5RS2|Zw+ zd!DWY+VS@XDd=_VG}UGvNbkRzs@oUD?tkI^=nVSYb6P#Mj{4;WU<4|ZVI<3k{-2`M zW`7aY|KUt@*mL=-RNZ|`%sDS6-hu90p%+*bDRU#pHwCK`#ZZ$F z*eeLO)Xx8>newjEfc;hK{$~u*`Tg!xQyM;zgK@kAJv1M}3J5P#aXQt+hoy=qsgthR z@&`Y9kkp~&crFg-=i-TkxHDBZDfYD>`kfH*4)p(ir~!ywFADS-NEc&9j~M~jRm=@=)A)b> zY2r;h?#bGpN+JJyy$k1i;yjrYdA^4p=4MhP{ioiAah|PvGO5b@4sYT`&(4GC^st>C zcBfN?^KJO>$+dK`bQ$=M~<>^GSP?(Ytnb&!#aLg zf``BJ6Er-m<>nW7_<-Bopg&(@7v4FvjPeX@riZ!9kQ{c1dirH5zJRr%hl8mXuJQc8 z$;#u*dmH(G8Rq%Zhm7A@h%E@{vG`C^^7}^znkVRrmg?j+TV7{o9dg%M0ZV~$oG%4q z3F~0$UPH|k!$MEghaSavNXia)EH{WS_oeC)t(B`W z`oY8y=!Y6<6S5<1L^A>9olrWtzK1B)%{NmZJatD27ABwyIcOsfCf1t?&7^ma>Yo!}O zn7wD0rTE&8g8gm|<$)&wvu-O=5KvQ!q;25^il6KV!}3D&$;x$wlxLGgauA`NU#9D3 z5u#`(5Un*w>q;5gVp&Y{$*{2QKopa8u0LOqxWBat#qT(l2Y!Vp&vTTB=93-Ff$_6d z=J?|OP^J_r?b#{#Qk&0ZZDHhx9f3&uQ4R-sxjIX=jkV9)dHH6#z-4j+8`T>IPOO0Ubl{TROekNoW|;O#K__;%Al z6Z!8@A{o{G+Yh?p@AnzZH(u_WC!pbgNTG+NbCs5;FIKxmYvG7!gFOhu3SdsJWo81* z(bVg{X6B7x(0A3jl5S&r)BP_7PPSkzBiaO94Y-OZYJC3xEB!Fd|Go^k{~=ZYxg(rb zNk6}2vD8Khq!%IS>sTAEnfGFSBigt^U7<+!hm}qPfO2+;DP5u%N+F{Bog8B(vaxjh zRJX}D$Y!e5WsPX#^g6wWTV_=~)ZU#~GEcU5OA+^PRF1hHE&ZKYuZT8Ue7kdlbzvUN zbyi6!D^@*Otx^`LOBv-e-Dv0k5Jt6Mw!oJ=`svTLa9_Sa{?^@5y~88GNu$6 zbHuWhwP0N}#yGINtaFncX62G}S(p-p`P|0;2n~jj4)~Fs{~gi)Bb=?i)%cHL{OBcP za|145oyy4fY+TU%)nW9LP^rD{JZ;cBijelFeQ0QwVn|qgHS#Yuq;5PKL&Z~TaXU}h z@%E*ym&L;>tdYxYcpWLr?F5eZDqh`QcmCUsw>#|vSv)M48(C_@L&M4_-KY(CJsoso za?;NKKkEGdqb%n~@e{Zty;yHE@)I$BoU@P5rL&iy1xzT!NtY&BI{O^VLfA!(~e+T0K25|$8%=S3i;lPto%^3C) zdET{CH{q83U0=AcW|{LB>*hb4P`0J(o3NOz0Z>q*uQ>uX-#+A*-4^&UMYZ$;*5@uP z`R4rDx)o0*tcrA9;p-`ih5CKX;T+3vZoZcNm5B;v=D%X?Wq(56ly=?kSo)F%Kt|oa z=1@9ajv-q+-~q}MWeTGFWas~LnE&Hp_5pm6`i$e2IT@FApzjpY_h<6$Mh|7A5hKFz zdTca3O<=K(mi_6}jbXyhYX-?N1bQW1E<*x<;+eAMTQ(1gN#ySl!^UWEN*cobX26Xg zxQpq!A|_^z2RO7V)SN+g9b@drSiNsp+|p?Z02@tU-=@nY909Oz5bSlpn>T{w$fC}nkl_pigc6-fvDNIKk) zYuVpj$Bl`ZTn<#mhw&LQgwWQd^MEf=w9|-|4YJpll7I}<*BkfUZcH}hyl!0sNa%L% zOkXA|bpJt|5}N@7=RMZ6ouaWN1drt|#bC=&g7c>9u^?jizW{dz;d02886yxoY9SPz zb)Z2A#O(YZiRb?oZ1?X||78fb?E71*{dDGA?96*SCww^fX>Vc3gVS!nW2 zfb&0y^B0Obh$NiX=`w1#ff8h(sJ+>j{()?7&Lhflrj|C1COfxQ)5gFFwD)FD`YPGp zoI{*tw6jd1!|ix`ZvyQ6@50y$C4+TQ?!6s8_alnWr|Y`XLqguaK=F4-@j6_lFc~P& z`KX)n;0IeBeuvTfkEd_;J0gDGe*xdW8fJP|3ejys!ML3XslFRCV!B+`eRl@GhtYz8 z#l}9$aS8nu@AsJl+;6UPwuAk^&KG;{JM@45Tx)`H%76 zF1MZk-Ix-`x+%48H~wcBU1l9jKOo1UD986WZeuA3v>#clhN|WfwnMX9yF#q%aW8&t z=1PpaGMwIhDBV=&ON{$J;Je51i+9z99asC2q=oNL zo=`BQnX9US^%_aq+I0Q=6eEgt8L=MlBWXVK%!8a=fgixH6#onSPgNdgYj4;8e-OXf zEjLC# z%EA&(=_b1~wOn$zZf#OLtb}2HC|3>3oCMsg^lyxnUkvvO;(luD9m@L4fKv=VfK%Nr ze_y7X?q0-X`zMr%2~_ZxDj4AnD$V|IP1avhdL!1|cK&x_$|BJI*4=vkw~_pUTT1II z52yk(w?C%cjSeJTd5Sh~`Z@Xsx&l#Kan-Ze076b&Nteqv0-X2_IdRp-2}1&OnTu60 zPnPQsmfaW-kEdUjmF%mCc=1M(UCTgG`?WFsf^5HjMU<~Z`*n|%|3R!4W3`kV8<5Ae_(h)$cX`u0=}y7LD&a0*EI7)L-;^m9K=eS4W4 zc}Q074LIYd?m!nkS4X3JJqct-rmhm+FACBGK~9pbz6-v(s)KgU4#und)2queO`|0C z>c{cb|AJTd)$9U5Js>z8PDE&LAPgh~Z{{lFY$Jy77$O`cCs5o0R7-P9zzA}nkD;rb zeg02k%2MTNb{M|=zMrAo{YQ0Z7E=($#0Rvb0KS*C453{}qT8~bK{J#l3RTeQYL%`5 z1QegC?W@6J9{K=;*<(nijI(;s4DM*^GKFamBKBO#-0E{lxB+`G8GZGuV|vVwCDITwvHV>mUU2U`v>B72=*IlLn@WF(+AX5)R6FX)CW-AIie2J-5 z4$!52jNU!v2Z}awRf_+9PR;+iS=RpdIuV(bsmH-Yi;ny=7~{=L@u_Lv#*o^o2IZrn zJesab&{sY>Xa<{2S68mS_FGaUAT5&z$%qp0G=cLBu4`db{wli!JO>>@=BW4O zLt(*>3Yt;n(<+~0H(s_fNL>PQGJld?0-mJ+QJw}UXhzV?AoMqM^|Sl_EiCYSuqWqp zpC?;?n%P)K0D82AoaSCQz4fq`Kh)N|aa=3S`X8d~&N*P{e*%*pP|$-iq`%MrXAQ@2wfspS zc0h;AK_`$k=5rv@a46>+zy0+?17@2HIcMtc2ujy8p8Bile}A*+e}J<;$CPPO3XUZBwP$$+8eQgN-e^S`f}|9=B~xf36i@RK?E@vMQUKwvt^kV`NyG1?W`Bp~`O z2Ntbxt+Os%BM9R}j(#8$yOseAOaK}3olnogNXH-4C`qi6>-xJfN-Eg#oC~sGnEf&2 zqEE0EI#@n}t+j)Fm2*xO4AVY_T<{4Np@ZciSf%RQ*C4}X|mr9>kiJWh9^_y0) zNEjdo-JL>y^5eouL1`3r7sDFr#NpMO%T(YchM>>q%2jy)X!NuT`H@3+rXsjgxXPu$ zEkQU_m6u5bcQ!}AZS5%vhaPt!KbYnlo*z^X_VL<^Ox477;0y#dx%#O?d@AQx*&)WX zk0FysDi5$C_+tIQa=XHl5TC1?^edYuea__afWHA{ zj(=zhJjPqSLE4YLF-@YSPahZ@sF@G;XBXiI$lGaM@+Z*fe4nddz=}o2!04bST*xmz zMyCZ+FXQnkMjx46gf@9b#S-kLT>UCmEXECB(TOqSXP-=YiE?vJ)gf~ba-$vcVs3&g zBziQ4T=5C16*Jc%G5@ElQvIJgOqr|Hfj?~i|F04IOLKL7WUwgv*CP85XbbsBEx`_Y z+e{~Mh|%g5YG;%O`zr$!47zfCYE|o0{N=fy`xQT*15zIFcf>y^ijS+YL4zql`w+sP zpSxFXr!Noq0P!n)i9g^}Q>r13so23}!kLq+-!}~q#aV+m<$k6a<{2B#)B>3BcQCUtuj8MtZECP3SOXlTQ1&w4u^q)Ri*Lgg}5h3QA{F3Z*Rvbv)0 zUXSno7sJYIFOj;TzJCn9-;{uUIKAJSd&H~&h`fItzW=Dr!6jPNs5LCQSKVvpe|z-* zdz`JqgMj>J4AHwU_b2nRB|`5v|Pyd{Vr zZbZbBl$+CD{}FwWCcyt=SyK&_YBHOuPYxv1id#-O*B26Pf_24oS?@R}js0XzS@;QW7>t-QVXzy3&j zVou&XliIJ`G`BO*{tqbh+Na>gMs6QN?t9iOY*jaRRw&3Vo^D#PT zFBwI?k~-HXAnq5&2&vM2DfhapbZ|2HAx z|7g-}PNWgbCTdt%1;zEbo&W8a(wMDh?Ucp0z;MFipdMSzSShDT#%7rZmZ7o5@zhtfA%jQC0Ktv}J15p<$Cu zhaW&ZTFC$ehxEf`~b=ktHLwdyKuF~do)ij%kelzz&5mF zSu4VzA7BS^rNu1Aq2UNnbt8fvGx%?c|Gso9mES2Y{0-#`jQ>`2?=j_^ci~#k<=tfz zJpG+_q1Q9(Yynklzeo=!3MfSSTY5N{PZ7?ism+3X3WPp|5101jQy}!e>0w(wMTVcG zhmH9Z8U77Dtjwp#@DucqoKKPAU*kZ2cQ}uVryr+>6?s%V{TM!6yqHHgU*W@s#5}_J z7d_0$Bb=keiL-fx^Cf2sJbb~IIe0kC_da;|oGTshaER-!_5nFd4;5t;P5vKx*jPr< z*>&13A6N3$%gP4^=~R2h7LwIchuMZO zrdS~Ak@v^E4`h3Uu{qVAw#dgovOw$0^8MtNX$k`xN>JbDapzA_C=8sd_EhD113D09 zGj~;r{~5-VT%`>=V9w!jXFjofft6e>FkYuxM_cO7(b^V@8v9h8O-HdyrVyc52y#K* zcC(r;0*N6z)jDW(TKZD*1TJ!4BFI@g$o#ymvLG0zQ>{H|fIak8LI*jFAf{lT0R%EP zPrv&YOaBHS7*+>6hkPLNT4)Tm&x`Yp zne`44^v@B!mrwM{34m4XX^35^{@-&No zrc%!r0+s!$6We7w|9fNp$7bvw@a6VDBl$UupUnlFSjR;LU;t?7yRd7ixwG4{;ab5w zx;$gAhn`V>R5yY{H_ry^zLFP25Z5XsPm zH$u8u0>m-gP8@$VVV8_v^Kv;Zu&jFl8h89`7VD5p-=s|zNsK{S$=pbSk81)%i$a&I{bu}ZH;!0x)VN1STwp&2Jh|kah z5UKH0kTHhlKH;Vg?Gd^S>9~|2)FV z?nM0e5N^7aiChHIF?KR^S>?%SrrZ>{Hk@#F=bQ2*is4|iX((o>o5C&w55_UQP)85e z%Zz1;##EJzo%#A{|5;HijK&NtA&-NRY$kVa_JI~`@7a$0&9XhiIM>i(->Zxnt5W=D zC#?V0oNc=G{eL{S-t)7#*xrTln4uqQdl#x-Gl}vsq|HtwF;>rRXOwHoHKg7Yy*7qM z>R`Sp&!pH$VWej0dpDYy=J7JchN{xNKmUNNbYp~T=wB*NOfybZJI=oRy|OqM7aF>} z^4@9239<4&h}C6Ek*r;DC1G-QAVO4H{1MXd1tjD!i)1a};MIz?2{BV( zig_DA04vIL&9Q+fKt}{PM47r;(dn+a1;P~MruN~zvUJ%#bU=vDcpq9@08A07y$PVS zOxN7*7X@gK00*E4kv8gU*k4{;wpjM%?eOLM;pHva6PA}(xAVU?Q}UJP*l{*n&;J?C zuchp^?wf#iLC~*=D?@46@MkENc(sslzrBCnvQ@JEdkLYA68o*3scpQx550U{+56^~ z2ME0UMSS@YI<7@&FIWHPzRxaLYs;3&3RY))`tn9hh4zQ-INEV!k)D>&01>`}S{&#s(+4@TQ-%UWeBFHfUiS#@9 z9`M2cCCcOMli!E`ukg!n$r0;=ojIlEV${21=}28W=XaLvmF0YI1o=0CwDtiJZfDAl zvR$%F>4gv{ElfcRZ4V1jm;t0tm~Ca-WhYEe1o}psFp+*IOdUJ_yW#yG>VLPH|6vsO zD^SC*+6F5kwwd?<%*-&7vKF-^*QLHpOTkGun9XC9F$#J~x*Jq-1M+&}=H%<)r5%D5 z5vy%{0A^%xfSNg-s^q9PzdpPIP;b^g#?{`1DLLJ?sPz$q7@x1%>VrE}>Y-28#0Ow* z2ETyN)fne-=WztAXP4uDe8}{}R{jUD8BBSb{R)5l*FH13JBrG= zSm=m=ejASojIWL6l46N*fqr80_C^>fNK0%J)C^c-M+|l~1cQ3qjf}3(AQE=x>#?J; z!Ga`UvV~E8NoZjrAyOwnr2vC(+zky1)Ir#pe@=D~FkMQFUkV~j6hsgOE%+c{h>iOZ zJO3v#Wg7eL_pbh@a~&PNBs&bWUK{JT!>xITTT_QygT||Mxav;q@MHEd-=F`hED3P- zycX-1gjS|8f09UO&Pgao5*{^3n57U6`||Z@)tRC+VEU3VoCb3p@viXa42_nSCR(1b z(Xs_;X>8~JOm+VM_o{y}HiJ8-$<012n0sx4Up_o(5(TyIZM4}}l{S#3_W6IfV4f@m z3Q#cKF9mH(6tuEZFbXMXVwc531+yh(F^~ZTvX7zktgoQeenNJ?CO7& z|1-HGsAS)Rpzp8x>3f7}19*Z){|RFQsP-fFJ;E*kUlpXt3P2!`Fv%|o5hfBMh=dmU z2Jj40(A-YJ(SpUY6a)YT6a7-q+#~=`S}Ax6DQITb|LQYkmf~dj@WsdHRqnv6QaM1B zRlz{zbgd#4nmyG(0(C*0Ld}Fs(J1 zH3-wvfKhvRsvuvshc1AbYU*KUGVHzTqlc|D==Tsh(tw^$&?gJB^%NSS&`yA!VuJ2M zRrJ*Cl9l0GYVgYuzJ-1Mzs;04*){m%zx#Qe`hKZEGcqYLqJ76iQ!}~v8-w1BHKSxM z*50>Z5!woX+3(zKjNVTr0=_NKOi#*SQ35b)+3TEuXbLh6r`)@0QfWQ;9}fMKD)`;B z^*&*Mze(Wd3pCS|GC>slE&zYc#QAO%?_tVh?SubqG$J-35v}d~pU0HhiUa=m-}=x5 zob4$vD*K5Y90TvhW7Uou9jsWmdIsVLtf#GKNL2`bEcj4X2w^L|_NHwD4kuZdM2
  • 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
  • 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 d&@|K-SqOS>nZdXZc5J ch.Name == "ORF2E"); + Assert.IsNotNull(orf2e); + Assert.AreEqual(128, orf2e.OldProgramNr); + Assert.AreEqual(128, orf2e.NewProgramNr); + Assert.IsFalse(orf2e.IsDeleted); + + orf2e.NewProgramNr = -1; + var editor = new Editor(); + editor.DataRoot = data; + editor.AutoNumberingForUnassignedChannels(UnsortedChannelMode.Delete); + + Assert.IsTrue(orf2e.IsDeleted); + Assert.IsTrue(orf2e.NewProgramNr == 0); + Assert.AreEqual(1, dvbs.Channels.Count(ch => ch.NewProgramNr <= 0)); + + + // save and reload + ser.Save(tempFile); + ser = plugin.CreateSerializer(tempFile); + ser.Load(); + data = ser.DataRoot; + data.ValidateAfterLoad(); + data.ApplyCurrentProgramNumbers(); + + // channel was deleted from file + dvbs = data.GetChannelList(SignalSource.DvbS); + orf2e = dvbs.Channels.FirstOrDefault(ch => ch.Name == "ORF2E"); + Assert.IsNull(orf2e); + } + #endregion + } } diff --git a/source/Test.Loader.SilvaSchneider/Test.Loader.SilvaSchneider.csproj b/source/Test.Loader.SilvaSchneider/Test.Loader.SilvaSchneider.csproj index 5ca50fe..c16899d 100644 --- a/source/Test.Loader.SilvaSchneider/Test.Loader.SilvaSchneider.csproj +++ b/source/Test.Loader.SilvaSchneider/Test.Loader.SilvaSchneider.csproj @@ -10,7 +10,7 @@ Properties Test.Loader.SilvaSchneider Test.Loader.SilvaSchneider - v4.8 + v4.6 512 {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 15.0 @@ -20,6 +20,7 @@ UnitTest + true @@ -40,7 +41,7 @@ true - bin\x86\Debug\ + ..\Debug\ DEBUG;TRACE full x86 @@ -72,9 +73,7 @@ - - Always - + @@ -85,6 +84,10 @@ {e6279ff8-362a-41e6-ac0d-d0861d43f01c} ChanSort.Loader.SilvaSchneider + + {68cfcb2f-b52a-43a1-aa5c-5d64a1d655d2} + Test.Loader + diff --git a/source/Test.Loader.Sony/SonyXmlTest.cs b/source/Test.Loader.Sony/SonyXmlTest.cs index 720b142..779d5e2 100644 --- a/source/Test.Loader.Sony/SonyXmlTest.cs +++ b/source/Test.Loader.Sony/SonyXmlTest.cs @@ -1,7 +1,4 @@ -using System; -using System.IO; -using System.Linq; -using System.Reflection; +using System.Linq; using ChanSort.Api; using ChanSort.Loader.Sony; using Microsoft.VisualStudio.TestTools.UnitTesting; @@ -11,13 +8,6 @@ namespace Test.Loader.Sony [TestClass] public class SonyXmlTest { - private static readonly string filesDir; - - static SonyXmlTest() - { - filesDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\TestFiles\\"; - } - // Android OS seems to use the "FormateVer" XML element, KDL 2012 and 2014 use "FormatVer" #region TestAndroid ... ChannelsAddedToCorrectLists @@ -65,8 +55,9 @@ namespace Test.Loader.Sony #region TestChannelsAddedToCorrectList private void TestChannelsAddedToCorrectLists(string fileName, SignalSource signalSource, int expectedTotal, int expectedTv, int expectedRadio, int dataProgramSid = 0, string dataProgramName = null) { + var tempFile = TestUtils.DeploymentItem("Test.Loader.Sony\\TestFiles\\" + fileName); var plugin = new SerializerPlugin(); - var ser = plugin.CreateSerializer(filesDir + fileName); + var ser = plugin.CreateSerializer(tempFile); ser.Load(); var root = ser.DataRoot; @@ -86,5 +77,104 @@ namespace Test.Loader.Sony } } #endregion + + + #region TestAndroidDeletingChannel + + [TestMethod] + public void TestAndroidDeletingChannel() + { + var tempFile = TestUtils.DeploymentItem("Test.Loader.Sony\\TestFiles\\android_sdb-sat.xml"); + var plugin = new SerializerPlugin(); + var ser = plugin.CreateSerializer(tempFile); + ser.Load(); + var data = ser.DataRoot; + data.ValidateAfterLoad(); + data.ApplyCurrentProgramNumbers(); + + // Pr# 128 = ORF2E + + var dvbs = data.GetChannelList(SignalSource.DvbS); + var orf2e = dvbs.Channels.FirstOrDefault(ch => ch.Name == "ORF2E"); + Assert.IsNotNull(orf2e); + Assert.AreEqual(127, orf2e.OldProgramNr); + Assert.AreEqual(127, orf2e.NewProgramNr); + Assert.IsFalse(orf2e.IsDeleted); + + orf2e.NewProgramNr = -1; + var editor = new Editor(); + editor.DataRoot = data; + editor.AutoNumberingForUnassignedChannels(UnsortedChannelMode.Delete); + + Assert.IsTrue(orf2e.IsDeleted); + Assert.IsTrue(orf2e.NewProgramNr > 0); + Assert.AreEqual(0, dvbs.Channels.Count(ch => ch.NewProgramNr <= 0)); + + + // save and reload + ser.Save(tempFile); + ser = plugin.CreateSerializer(tempFile); + ser.Load(); + data = ser.DataRoot; + data.ValidateAfterLoad(); + data.ApplyCurrentProgramNumbers(); + + // channel was marked deleted + dvbs = data.GetChannelList(SignalSource.DvbS); + orf2e = dvbs.Channels.FirstOrDefault(ch => ch.Name == "ORF2E"); + Assert.IsNotNull(orf2e); + Assert.IsTrue(orf2e.IsDeleted); + Assert.AreEqual(-1, orf2e.NewProgramNr); + } + #endregion + + #region TestKdlDeletingChannel + + [TestMethod] + public void TestKdlDeletingChannel() + { + var tempFile = TestUtils.DeploymentItem("Test.Loader.Sony\\TestFiles\\kdl_sdb-cable-sat.xml"); + var plugin = new SerializerPlugin(); + var ser = plugin.CreateSerializer(tempFile); + ser.Load(); + var data = ser.DataRoot; + data.ValidateAfterLoad(); + data.ApplyCurrentProgramNumbers(); + + // Pr# 128 = ORF2E + + var dvbs = data.GetChannelList(SignalSource.DvbS); + var orf2e = dvbs.Channels.FirstOrDefault(ch => ch.Name == "ORF2E"); + Assert.IsNotNull(orf2e); + Assert.AreEqual(693, orf2e.OldProgramNr); + Assert.AreEqual(693, orf2e.NewProgramNr); + Assert.IsFalse(orf2e.IsDeleted); + + orf2e.NewProgramNr = -1; + var editor = new Editor(); + editor.DataRoot = data; + editor.AutoNumberingForUnassignedChannels(UnsortedChannelMode.Delete); + + Assert.IsTrue(orf2e.IsDeleted); + Assert.IsTrue(orf2e.NewProgramNr == 0); + + + // save and reload + ser.Save(tempFile); + ser = plugin.CreateSerializer(tempFile); + ser.Load(); + data = ser.DataRoot; + data.ValidateAfterLoad(); + data.ApplyCurrentProgramNumbers(); + + // channel was not assigned a number in the file + dvbs = data.GetChannelList(SignalSource.DvbS); + orf2e = dvbs.Channels.FirstOrDefault(ch => ch.Name == "ORF2E"); + Assert.IsNotNull(orf2e); + Assert.IsTrue(orf2e.IsDeleted); + Assert.AreEqual(-1, orf2e.NewProgramNr); + } + #endregion + } } diff --git a/source/Test.Loader.Sony/Test.Loader.Sony.csproj b/source/Test.Loader.Sony/Test.Loader.Sony.csproj index e0077c0..4f7a159 100644 --- a/source/Test.Loader.Sony/Test.Loader.Sony.csproj +++ b/source/Test.Loader.Sony/Test.Loader.Sony.csproj @@ -10,7 +10,7 @@ Properties Test.Loader.Sony Test.Loader.Sony - v4.8 + v4.6 512 {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 15.0 @@ -20,6 +20,7 @@ UnitTest + true @@ -40,7 +41,7 @@ true - bin\x86\Debug\ + ..\Debug\ DEBUG;TRACE full x86 @@ -82,21 +83,17 @@ {70e29c6b-b926-4859-9548-23375bf1e1b5} ChanSort.Loader.Sony + + {68cfcb2f-b52a-43a1-aa5c-5d64a1d655d2} + Test.Loader + - - Always - - - Always - - - Always - - - Always - + + + + diff --git a/source/Test.Loader.Toshiba/Test.Loader.Toshiba.csproj b/source/Test.Loader.Toshiba/Test.Loader.Toshiba.csproj index 29e81ef..0ea5284 100644 --- a/source/Test.Loader.Toshiba/Test.Loader.Toshiba.csproj +++ b/source/Test.Loader.Toshiba/Test.Loader.Toshiba.csproj @@ -10,7 +10,7 @@ Properties Test.Loader.Toshiba Test.Loader.Toshiba - v4.8 + v4.6 512 {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 15.0 @@ -20,6 +20,7 @@ UnitTest + true @@ -40,7 +41,7 @@ true - bin\x86\Debug\ + ..\Debug\ DEBUG;TRACE full x86 @@ -85,6 +86,10 @@ {f6f02792-07f1-48d5-9af3-f945ca5e3931} ChanSort.Loader.Toshiba + + {68cfcb2f-b52a-43a1-aa5c-5d64a1d655d2} + Test.Loader + diff --git a/source/Test.Loader.Toshiba/ToshibaChmgtDbTest.cs b/source/Test.Loader.Toshiba/ToshibaChmgtDbTest.cs index b1a56dd..213cc9b 100644 --- a/source/Test.Loader.Toshiba/ToshibaChmgtDbTest.cs +++ b/source/Test.Loader.Toshiba/ToshibaChmgtDbTest.cs @@ -1,7 +1,4 @@ -using System; -using System.IO; -using System.Linq; -using System.Reflection; +using System.Linq; using ChanSort.Api; using ChanSort.Loader.Toshiba; using Microsoft.VisualStudio.TestTools.UnitTesting; @@ -11,13 +8,6 @@ namespace Test.Loader.Toshiba [TestClass] public class ToshibaChmgtDbTest { - private static readonly string filesDir; - - static ToshibaChmgtDbTest() - { - filesDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\TestFiles\\"; - } - #region TestSatChannelsAddedToCorrectLists [TestMethod] @@ -43,8 +33,9 @@ namespace Test.Loader.Toshiba private void TestChannelsAddedToCorrectLists(string fileName, SignalSource signalSource, int expectedTv, int expectedRadio, int dataProgramSid = 0, string dataProgramName = null) { + var tempFile = TestUtils.DeploymentItem("Test.Loader.Toshiba\\TestFiles\\" + fileName); var plugin = new DbSerializerPlugin(); - var ser = plugin.CreateSerializer(filesDir + fileName); + var ser = plugin.CreateSerializer(tempFile); ser.Load(); var root = ser.DataRoot; @@ -73,5 +64,53 @@ namespace Test.Loader.Toshiba } #endregion + + + #region TestDeletingChannel + + [TestMethod] + public void TestDeletingChannel() + { + var tempFile = TestUtils.DeploymentItem("Test.Loader.Toshiba\\TestFiles\\Toshiba-SL863G.zip"); + var plugin = new DbSerializerPlugin(); + var ser = plugin.CreateSerializer(tempFile); + ser.Load(); + var data = ser.DataRoot; + data.ValidateAfterLoad(); + data.ApplyCurrentProgramNumbers(); + + // Pr# 128 = ORF2E + + var dvbs = data.GetChannelList(SignalSource.DvbS); + var orf2e = dvbs.Channels.FirstOrDefault(ch => ch.Name == "ORF2E"); + Assert.IsNotNull(orf2e); + Assert.AreEqual(336, orf2e.OldProgramNr); + Assert.AreEqual(336, orf2e.NewProgramNr); + Assert.IsFalse(orf2e.IsDeleted); + + orf2e.NewProgramNr = -1; + var editor = new Editor(); + editor.DataRoot = data; + editor.AutoNumberingForUnassignedChannels(UnsortedChannelMode.Delete); + + Assert.IsTrue(orf2e.IsDeleted); + Assert.IsTrue(orf2e.NewProgramNr == 0); + + + // save and reload + ser.Save(tempFile); + ser = plugin.CreateSerializer(tempFile); + ser.Load(); + data = ser.DataRoot; + data.ValidateAfterLoad(); + data.ApplyCurrentProgramNumbers(); + + // channel was deleted from database + dvbs = data.GetChannelList(SignalSource.DvbS); + orf2e = dvbs.Channels.FirstOrDefault(ch => ch.Name == "ORF2E"); + Assert.IsNull(orf2e); + } + #endregion + } } diff --git a/source/Test.Loader.VDR/LinuxVdrTest.cs b/source/Test.Loader.VDR/LinuxVdrTest.cs index bc3d708..7aaed8d 100644 --- a/source/Test.Loader.VDR/LinuxVdrTest.cs +++ b/source/Test.Loader.VDR/LinuxVdrTest.cs @@ -1,7 +1,4 @@ -using System; -using System.IO; -using System.Linq; -using System.Reflection; +using System.Linq; using ChanSort.Api; using ChanSort.Loader.VDR; using Microsoft.VisualStudio.TestTools.UnitTesting; @@ -11,13 +8,6 @@ namespace Test.Loader.VDR [TestClass] public class LinuxVdrTest { - private static readonly string filesDir; - - static LinuxVdrTest() - { - filesDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\TestFiles\\"; - } - #region TestAstraChannelsAddedToCorrectLists [TestMethod] public void TestAstraChannelsAddedToCorrectLists() @@ -29,8 +19,9 @@ namespace Test.Loader.VDR #region TestChannelsAddedToCorrectList private void TestChannelsAddedToCorrectLists(string fileName, int expectedTotal, int expectedTv, int expectedRadio) { + var tempFile = TestUtils.DeploymentItem("Test.Loader.VDR\\TestFiles\\channels.conf"); var plugin = new SerializerPlugin(); - var ser = plugin.CreateSerializer(filesDir + fileName); + var ser = plugin.CreateSerializer(tempFile); ser.Load(); var root = ser.DataRoot; @@ -46,5 +37,51 @@ namespace Test.Loader.VDR #endregion + #region TestDeletingChannel + + [TestMethod] + public void TestDeletingChannel() + { + var tempFile = TestUtils.DeploymentItem("Test.Loader.VDR\\TestFiles\\channels.conf"); + var plugin = new SerializerPlugin(); + var ser = plugin.CreateSerializer(tempFile); + ser.Load(); + var data = ser.DataRoot; + data.ValidateAfterLoad(); + data.ApplyCurrentProgramNumbers(); + + // Pr# 421 = ORF2E + + var dvbs = data.GetChannelList(SignalSource.DvbS); + var orf2e = dvbs.Channels.FirstOrDefault(ch => ch.Name == "ORF2E"); + Assert.IsNotNull(orf2e); + Assert.AreEqual(421, orf2e.OldProgramNr); + Assert.AreEqual(421, orf2e.NewProgramNr); + Assert.IsFalse(orf2e.IsDeleted); + + orf2e.NewProgramNr = -1; + var editor = new Editor(); + editor.DataRoot = data; + editor.AutoNumberingForUnassignedChannels(UnsortedChannelMode.Delete); + + Assert.IsTrue(orf2e.IsDeleted); + Assert.IsTrue(orf2e.NewProgramNr == 0); + + + // save and reload + ser.Save(tempFile); + ser = plugin.CreateSerializer(tempFile); + ser.Load(); + data = ser.DataRoot; + data.ValidateAfterLoad(); + data.ApplyCurrentProgramNumbers(); + + // channel was deleted from file + dvbs = data.GetChannelList(SignalSource.DvbS); + orf2e = dvbs.Channels.FirstOrDefault(ch => ch.Name == "ORF2E"); + Assert.IsNull(orf2e); + } + #endregion + } } diff --git a/source/Test.Loader.VDR/Test.Loader.VDR.csproj b/source/Test.Loader.VDR/Test.Loader.VDR.csproj index 3933e62..c321bd6 100644 --- a/source/Test.Loader.VDR/Test.Loader.VDR.csproj +++ b/source/Test.Loader.VDR/Test.Loader.VDR.csproj @@ -10,7 +10,7 @@ Properties Test.Loader.VDR Test.Loader.VDR - v4.8 + v4.6 512 {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 15.0 @@ -20,6 +20,7 @@ UnitTest + true @@ -40,7 +41,7 @@ true - bin\x86\Debug\ + ..\Debug\ DEBUG;TRACE full x86 @@ -85,6 +86,10 @@ {74a18c6f-09ff-413e-90d9-827066fa5b36} ChanSort.Loader.VDR + + {68cfcb2f-b52a-43a1-aa5c-5d64a1d655d2} + Test.Loader + diff --git a/source/Test.Loader/LoaderTestBase.cs b/source/Test.Loader/LoaderTestBase.cs index 91c43bd..3c0f72b 100644 --- a/source/Test.Loader/LoaderTestBase.cs +++ b/source/Test.Loader/LoaderTestBase.cs @@ -34,11 +34,11 @@ namespace Test.Loader { string path = this.GetTestFileDirectory(baseDir); List files = new List(); - this.FindAllTllFilesRecursively(path, mask, files); + this.GetFilesRecursively(path, mask, files); return files; } - private string GetTestFileDirectory(string baseDir) + protected string GetTestFileDirectory(string baseDir) { string exeDir = Assembly.GetExecutingAssembly().Location; while (!string.IsNullOrEmpty(exeDir)) @@ -51,11 +51,11 @@ namespace Test.Loader throw new FileNotFoundException("No 'TestFiles' directory found"); } - private void FindAllTllFilesRecursively(string path, string mask, List files) + private void GetFilesRecursively(string path, string mask, List files) { files.AddRange(Directory.GetFiles(path, mask)); foreach (var dir in Directory.GetDirectories(path)) - this.FindAllTllFilesRecursively(dir, mask, files); + this.GetFilesRecursively(dir, mask, files); } #endregion } diff --git a/source/Test.Loader/Test.Loader.csproj b/source/Test.Loader/Test.Loader.csproj index 000d5ef..28deedc 100644 --- a/source/Test.Loader/Test.Loader.csproj +++ b/source/Test.Loader/Test.Loader.csproj @@ -11,7 +11,7 @@ Properties Test.Loader Test.Loader - v4.5.2 + v4.6 512 {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} @@ -70,6 +70,7 @@ + diff --git a/source/Test.Loader/TestUtils.cs b/source/Test.Loader/TestUtils.cs new file mode 100644 index 0000000..048602a --- /dev/null +++ b/source/Test.Loader/TestUtils.cs @@ -0,0 +1,68 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace Test.Loader +{ + public class TestUtils + { + private static string solutionDir; + private static string executableDir; + + #region DeploymentItem() + + /// + /// DeploymentItemAttribute doesn't work with the combination of VS2010, ReSharper 7.1.3, Target Framework 3.5 + /// + public static string DeploymentItem(string file) + { + GetSolutionBaseDir(); + GetExecutableDir(); + + + var destFile = Path.Combine(executableDir, Path.GetFileName(file)); + File.Copy(Path.Combine(solutionDir, file), destFile, true); + return destFile; + } + #endregion + + #region GetSolutionBaseDir() + public static string GetSolutionBaseDir() + { + if (solutionDir != null) + return solutionDir; + + var dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + do + { + if (File.Exists(dir + "\\ChanSort.sln")) + return solutionDir = dir; + dir = Path.GetDirectoryName(dir); + } while (!string.IsNullOrEmpty(dir)); + + dir = Environment.CurrentDirectory; + do + { + if (File.Exists(dir + "\\ChanSort.sln")) + return solutionDir = dir; + dir = Path.GetDirectoryName(dir); + } while (!string.IsNullOrEmpty(dir)); + + throw new InvalidOperationException("Cannot determine base directory of ChanSort solution"); + } + #endregion + + #region GetExecutableDir() + public static string GetExecutableDir() + { + if (executableDir == null) + executableDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + return executableDir; + } + #endregion + } +} diff --git a/source/changelog.md b/source/changelog.md index 445556a..bac35f4 100644 --- a/source/changelog.md +++ b/source/changelog.md @@ -1,6 +1,13 @@ ChanSort Change Log =================== +2019-11-08 +- improved handling for deleting channels across all file formats: + Depending on what the actual file format supports, one of the following actions will be taken. + - channels are marked as deleted in the data records (so they will not be auto-added as new channels by the TV) + - channels are removed from the file (with the risk of the TV auto-adding them like new channels) + - appended at the end of the list, when possible marked as "hidden" + 2019-08-29 - fixed: some UHD channels did not show up in the list, which caused corrupted Panasonic channel lists - fixed: Samsung SCM DVB-T lists did not show radio channels