Version bump to 2.0.8

This commit is contained in:
chudov
2010-04-24 17:47:57 +00:00
parent 3f717d14c8
commit 071c45d8e2
42 changed files with 2294 additions and 1114 deletions

View File

@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2.0.7.0")]
[assembly: AssemblyFileVersion("2.0.7.0")]
[assembly: AssemblyVersion("2.0.8.0")]
[assembly: AssemblyFileVersion("2.0.8.0")]

View File

@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.0.7.0")]
[assembly: AssemblyFileVersion("2.0.7.0")]
[assembly: AssemblyVersion("2.0.8.0")]
[assembly: AssemblyFileVersion("2.0.8.0")]

View File

@@ -68,7 +68,7 @@
this.IsMdiContainer = true;
this.MainMenuStrip = this.menuStrip1;
this.Name = "frmCUEPlayer";
this.Text = "CUEPlayer 2.0.7";
this.Text = "CUEPlayer 2.0.8";
this.Load += new System.EventHandler(this.frmCUEPlayer_Load);
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmCUEPlayer_FormClosing);
this.menuStrip1.ResumeLayout(false);

View File

@@ -40,7 +40,7 @@
<CreateWebPageOnPublish>true</CreateWebPageOnPublish>
<WebPage>index.html</WebPage>
<ApplicationRevision>2</ApplicationRevision>
<ApplicationVersion>2.0.7.2</ApplicationVersion>
<ApplicationVersion>2.0.8.0</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<PublishWizardCompleted>true</PublishWizardCompleted>
<BootstrapperEnabled>true</BootstrapperEnabled>
@@ -87,6 +87,9 @@
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="frmCUERipper.de-DE.resx">
<DependentUpon>frmCUERipper.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmCUERipper.resx">
<SubType>Designer</SubType>
<DependentUpon>frmCUERipper.cs</DependentUpon>

View File

@@ -1,8 +1,11 @@
using System;
using System.Collections.Generic;
using System.Deployment.Application;
using System.Globalization;
using System.Runtime.InteropServices;
using System.Threading;
using System.Windows.Forms;
using CUETools.Processor;
namespace CUERipper
{
@@ -20,6 +23,11 @@ namespace CUERipper
string arch = Marshal.SizeOf(typeof(IntPtr)) == 8 ? "x64" : "Win32";
GetSatelliteAssemblies("Plugins (" + arch + ")");
CUEConfig config = new CUEConfig();
config.Load(new SettingsReader("CUERipper", "settings.txt", Application.ExecutablePath));
try { Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(config.language); }
catch { }
Application.Run(new frmCUERipper());
}

View File

@@ -100,6 +100,11 @@ namespace CUERipper
//
// statusStrip1
//
this.statusStrip1.AccessibleDescription = null;
this.statusStrip1.AccessibleName = null;
resources.ApplyResources(this.statusStrip1, "statusStrip1");
this.statusStrip1.BackgroundImage = null;
this.statusStrip1.Font = null;
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripStatusLabel1,
this.toolStripStatusLabelMusicBrainz,
@@ -107,69 +112,90 @@ namespace CUERipper
this.toolStripStatusAr,
this.toolStripProgressBar1,
this.toolStripStatusLabel2});
resources.ApplyResources(this.statusStrip1, "statusStrip1");
this.statusStrip1.Name = "statusStrip1";
this.statusStrip1.ShowItemToolTips = true;
this.statusStrip1.SizingGrip = false;
this.toolTip1.SetToolTip(this.statusStrip1, resources.GetString("statusStrip1.ToolTip"));
//
// toolStripStatusLabel1
//
this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
this.toolStripStatusLabel1.AccessibleDescription = null;
this.toolStripStatusLabel1.AccessibleName = null;
resources.ApplyResources(this.toolStripStatusLabel1, "toolStripStatusLabel1");
this.toolStripStatusLabel1.BackgroundImage = null;
this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
this.toolStripStatusLabel1.Spring = true;
//
// toolStripStatusLabelMusicBrainz
//
this.toolStripStatusLabelMusicBrainz.AccessibleDescription = null;
this.toolStripStatusLabelMusicBrainz.AccessibleName = null;
resources.ApplyResources(this.toolStripStatusLabelMusicBrainz, "toolStripStatusLabelMusicBrainz");
this.toolStripStatusLabelMusicBrainz.BackgroundImage = null;
this.toolStripStatusLabelMusicBrainz.BorderSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)((((System.Windows.Forms.ToolStripStatusLabelBorderSides.Left | System.Windows.Forms.ToolStripStatusLabelBorderSides.Top)
| System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)
| System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom)));
this.toolStripStatusLabelMusicBrainz.BorderStyle = System.Windows.Forms.Border3DStyle.SunkenInner;
this.toolStripStatusLabelMusicBrainz.Image = global::CUERipper.Properties.Resources.musicbrainz;
this.toolStripStatusLabelMusicBrainz.Name = "toolStripStatusLabelMusicBrainz";
resources.ApplyResources(this.toolStripStatusLabelMusicBrainz, "toolStripStatusLabelMusicBrainz");
this.toolStripStatusLabelMusicBrainz.Click += new System.EventHandler(this.toolStripStatusLabelMusicBrainz_Click);
//
// toolStripStatusCTDB
//
this.toolStripStatusCTDB.AccessibleDescription = null;
this.toolStripStatusCTDB.AccessibleName = null;
resources.ApplyResources(this.toolStripStatusCTDB, "toolStripStatusCTDB");
this.toolStripStatusCTDB.BackgroundImage = null;
this.toolStripStatusCTDB.BorderSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)((((System.Windows.Forms.ToolStripStatusLabelBorderSides.Left | System.Windows.Forms.ToolStripStatusLabelBorderSides.Top)
| System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)
| System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom)));
this.toolStripStatusCTDB.BorderStyle = System.Windows.Forms.Border3DStyle.SunkenInner;
this.toolStripStatusCTDB.Image = global::CUERipper.Properties.Resources.cdrepair;
this.toolStripStatusCTDB.Name = "toolStripStatusCTDB";
resources.ApplyResources(this.toolStripStatusCTDB, "toolStripStatusCTDB");
//
// toolStripStatusAr
//
this.toolStripStatusAr.AccessibleDescription = null;
this.toolStripStatusAr.AccessibleName = null;
resources.ApplyResources(this.toolStripStatusAr, "toolStripStatusAr");
this.toolStripStatusAr.BackgroundImage = null;
this.toolStripStatusAr.BorderSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)((((System.Windows.Forms.ToolStripStatusLabelBorderSides.Left | System.Windows.Forms.ToolStripStatusLabelBorderSides.Top)
| System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)
| System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom)));
this.toolStripStatusAr.BorderStyle = System.Windows.Forms.Border3DStyle.SunkenInner;
resources.ApplyResources(this.toolStripStatusAr, "toolStripStatusAr");
this.toolStripStatusAr.Name = "toolStripStatusAr";
//
// toolStripProgressBar1
//
this.toolStripProgressBar1.AccessibleDescription = null;
this.toolStripProgressBar1.AccessibleName = null;
resources.ApplyResources(this.toolStripProgressBar1, "toolStripProgressBar1");
this.toolStripProgressBar1.AutoToolTip = true;
this.toolStripProgressBar1.MarqueeAnimationSpeed = 500;
this.toolStripProgressBar1.Name = "toolStripProgressBar1";
resources.ApplyResources(this.toolStripProgressBar1, "toolStripProgressBar1");
this.toolStripProgressBar1.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
//
// toolStripStatusLabel2
//
this.toolStripStatusLabel2.AccessibleDescription = null;
this.toolStripStatusLabel2.AccessibleName = null;
resources.ApplyResources(this.toolStripStatusLabel2, "toolStripStatusLabel2");
this.toolStripStatusLabel2.BackgroundImage = null;
this.toolStripStatusLabel2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.toolStripStatusLabel2.Name = "toolStripStatusLabel2";
resources.ApplyResources(this.toolStripStatusLabel2, "toolStripStatusLabel2");
//
// listTracks
//
this.listTracks.AccessibleDescription = null;
this.listTracks.AccessibleName = null;
resources.ApplyResources(this.listTracks, "listTracks");
this.listTracks.BackgroundImage = null;
this.listTracks.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.Title,
this.TrackNo,
this.Start,
this.Length});
this.listTracks.Font = null;
this.listTracks.FullRowSelect = true;
this.listTracks.GridLines = true;
this.listTracks.LabelEdit = true;
@@ -201,42 +227,69 @@ namespace CUERipper
//
// buttonGo
//
this.buttonGo.AccessibleDescription = null;
this.buttonGo.AccessibleName = null;
resources.ApplyResources(this.buttonGo, "buttonGo");
this.buttonGo.BackColor = System.Drawing.Color.Transparent;
this.buttonGo.BackgroundImage = null;
this.buttonGo.Font = null;
this.buttonGo.Name = "buttonGo";
this.toolTip1.SetToolTip(this.buttonGo, resources.GetString("buttonGo.ToolTip"));
this.buttonGo.UseVisualStyleBackColor = false;
this.buttonGo.Click += new System.EventHandler(this.buttonGo_Click);
//
// buttonAbort
//
this.buttonAbort.AccessibleDescription = null;
this.buttonAbort.AccessibleName = null;
resources.ApplyResources(this.buttonAbort, "buttonAbort");
this.buttonAbort.BackgroundImage = null;
this.buttonAbort.Font = null;
this.buttonAbort.Name = "buttonAbort";
this.toolTip1.SetToolTip(this.buttonAbort, resources.GetString("buttonAbort.ToolTip"));
this.buttonAbort.UseVisualStyleBackColor = true;
this.buttonAbort.Click += new System.EventHandler(this.buttonAbort_Click);
//
// buttonPause
//
this.buttonPause.AccessibleDescription = null;
this.buttonPause.AccessibleName = null;
resources.ApplyResources(this.buttonPause, "buttonPause");
this.buttonPause.BackgroundImage = null;
this.buttonPause.Font = null;
this.buttonPause.Name = "buttonPause";
this.toolTip1.SetToolTip(this.buttonPause, resources.GetString("buttonPause.ToolTip"));
this.buttonPause.UseVisualStyleBackColor = true;
this.buttonPause.Click += new System.EventHandler(this.buttonPause_Click);
//
// contextMenuStripRelease
//
this.contextMenuStripRelease.AccessibleDescription = null;
this.contextMenuStripRelease.AccessibleName = null;
resources.ApplyResources(this.contextMenuStripRelease, "contextMenuStripRelease");
this.contextMenuStripRelease.BackgroundImage = null;
this.contextMenuStripRelease.Font = null;
this.contextMenuStripRelease.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.editToolStripMenuItem});
this.contextMenuStripRelease.Name = "contextMenuStripRelease";
resources.ApplyResources(this.contextMenuStripRelease, "contextMenuStripRelease");
this.toolTip1.SetToolTip(this.contextMenuStripRelease, resources.GetString("contextMenuStripRelease.ToolTip"));
//
// editToolStripMenuItem
//
this.editToolStripMenuItem.Name = "editToolStripMenuItem";
this.editToolStripMenuItem.AccessibleDescription = null;
this.editToolStripMenuItem.AccessibleName = null;
resources.ApplyResources(this.editToolStripMenuItem, "editToolStripMenuItem");
this.editToolStripMenuItem.BackgroundImage = null;
this.editToolStripMenuItem.Name = "editToolStripMenuItem";
this.editToolStripMenuItem.ShortcutKeyDisplayString = null;
this.editToolStripMenuItem.Click += new System.EventHandler(this.editToolStripMenuItem_Click);
//
// numericWriteOffset
//
this.numericWriteOffset.AccessibleDescription = null;
this.numericWriteOffset.AccessibleName = null;
resources.ApplyResources(this.numericWriteOffset, "numericWriteOffset");
this.numericWriteOffset.Font = null;
this.numericWriteOffset.Maximum = new decimal(new int[] {
99999,
0,
@@ -248,21 +301,35 @@ namespace CUERipper
0,
-2147483648});
this.numericWriteOffset.Name = "numericWriteOffset";
this.toolTip1.SetToolTip(this.numericWriteOffset, resources.GetString("numericWriteOffset.ToolTip"));
//
// lblWriteOffset
//
this.lblWriteOffset.AccessibleDescription = null;
this.lblWriteOffset.AccessibleName = null;
resources.ApplyResources(this.lblWriteOffset, "lblWriteOffset");
this.lblWriteOffset.Font = null;
this.lblWriteOffset.Name = "lblWriteOffset";
this.toolTip1.SetToolTip(this.lblWriteOffset, resources.GetString("lblWriteOffset.ToolTip"));
//
// checkBoxEACMode
//
this.checkBoxEACMode.AccessibleDescription = null;
this.checkBoxEACMode.AccessibleName = null;
resources.ApplyResources(this.checkBoxEACMode, "checkBoxEACMode");
this.checkBoxEACMode.BackgroundImage = null;
this.checkBoxEACMode.Font = null;
this.checkBoxEACMode.Name = "checkBoxEACMode";
this.toolTip1.SetToolTip(this.checkBoxEACMode, resources.GetString("checkBoxEACMode.ToolTip"));
this.checkBoxEACMode.UseVisualStyleBackColor = true;
this.checkBoxEACMode.CheckedChanged += new System.EventHandler(this.checkBoxEACMode_CheckedChanged);
//
// groupBoxSettings
//
this.groupBoxSettings.AccessibleDescription = null;
this.groupBoxSettings.AccessibleName = null;
resources.ApplyResources(this.groupBoxSettings, "groupBoxSettings");
this.groupBoxSettings.BackgroundImage = null;
this.groupBoxSettings.Controls.Add(this.bnComboBoxLosslessOrNot);
this.groupBoxSettings.Controls.Add(this.bnComboBoxEncoder);
this.groupBoxSettings.Controls.Add(this.labelSecureMode);
@@ -276,22 +343,27 @@ namespace CUERipper
this.groupBoxSettings.Controls.Add(this.lblWriteOffset);
this.groupBoxSettings.Controls.Add(this.checkBoxEACMode);
this.groupBoxSettings.Controls.Add(this.numericWriteOffset);
resources.ApplyResources(this.groupBoxSettings, "groupBoxSettings");
this.groupBoxSettings.Font = null;
this.groupBoxSettings.Name = "groupBoxSettings";
this.groupBoxSettings.TabStop = false;
this.toolTip1.SetToolTip(this.groupBoxSettings, resources.GetString("groupBoxSettings.ToolTip"));
//
// bnComboBoxLosslessOrNot
//
this.bnComboBoxLosslessOrNot.AccessibleDescription = null;
this.bnComboBoxLosslessOrNot.AccessibleName = null;
resources.ApplyResources(this.bnComboBoxLosslessOrNot, "bnComboBoxLosslessOrNot");
this.bnComboBoxLosslessOrNot.BackColor = System.Drawing.Color.White;
this.bnComboBoxLosslessOrNot.BackgroundImage = null;
this.bnComboBoxLosslessOrNot.DataSource = this.losslessOrNotBindingSource;
this.bnComboBoxLosslessOrNot.DropDownHeight = 200;
this.bnComboBoxLosslessOrNot.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.bnComboBoxLosslessOrNot.DropDownWidth = 80;
this.bnComboBoxLosslessOrNot.Font = null;
this.bnComboBoxLosslessOrNot.ForeColor = System.Drawing.SystemColors.ControlText;
this.bnComboBoxLosslessOrNot.ImageKeyMember = "ImageKey";
this.bnComboBoxLosslessOrNot.ImageList = null;
this.bnComboBoxLosslessOrNot.IsDroppedDown = false;
resources.ApplyResources(this.bnComboBoxLosslessOrNot, "bnComboBoxLosslessOrNot");
this.bnComboBoxLosslessOrNot.MaxDropDownItems = 8;
this.bnComboBoxLosslessOrNot.MinimumSize = new System.Drawing.Size(40, 21);
this.bnComboBoxLosslessOrNot.Name = "bnComboBoxLosslessOrNot";
@@ -299,6 +371,7 @@ namespace CUERipper
this.bnComboBoxLosslessOrNot.SelectedIndex = -1;
this.bnComboBoxLosslessOrNot.SelectedItem = null;
this.bnComboBoxLosslessOrNot.Sorted = false;
this.toolTip1.SetToolTip(this.bnComboBoxLosslessOrNot, resources.GetString("bnComboBoxLosslessOrNot.ToolTip"));
this.bnComboBoxLosslessOrNot.SelectedIndexChanged += new System.EventHandler(this.bnComboBoxLosslessOrNot_SelectedIndexChanged);
//
// losslessOrNotBindingSource
@@ -312,15 +385,19 @@ namespace CUERipper
//
// bnComboBoxEncoder
//
this.bnComboBoxEncoder.AccessibleDescription = null;
this.bnComboBoxEncoder.AccessibleName = null;
resources.ApplyResources(this.bnComboBoxEncoder, "bnComboBoxEncoder");
this.bnComboBoxEncoder.BackColor = System.Drawing.Color.White;
this.bnComboBoxEncoder.BackgroundImage = null;
this.bnComboBoxEncoder.DataSource = this.encodersBindingSource;
this.bnComboBoxEncoder.DropDownHeight = 200;
this.bnComboBoxEncoder.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.bnComboBoxEncoder.DropDownWidth = 80;
this.bnComboBoxEncoder.Font = null;
this.bnComboBoxEncoder.ForeColor = System.Drawing.SystemColors.ControlText;
this.bnComboBoxEncoder.ImageList = null;
this.bnComboBoxEncoder.IsDroppedDown = false;
resources.ApplyResources(this.bnComboBoxEncoder, "bnComboBoxEncoder");
this.bnComboBoxEncoder.MaxDropDownItems = 8;
this.bnComboBoxEncoder.MinimumSize = new System.Drawing.Size(40, 21);
this.bnComboBoxEncoder.Name = "bnComboBoxEncoder";
@@ -328,6 +405,7 @@ namespace CUERipper
this.bnComboBoxEncoder.SelectedIndex = -1;
this.bnComboBoxEncoder.SelectedItem = null;
this.bnComboBoxEncoder.Sorted = false;
this.toolTip1.SetToolTip(this.bnComboBoxEncoder, resources.GetString("bnComboBoxEncoder.ToolTip"));
this.bnComboBoxEncoder.SelectedIndexChanged += new System.EventHandler(this.comboBoxEncoder_SelectedIndexChanged);
//
// encodersBindingSource
@@ -337,21 +415,29 @@ namespace CUERipper
//
// labelSecureMode
//
this.labelSecureMode.AccessibleDescription = null;
this.labelSecureMode.AccessibleName = null;
resources.ApplyResources(this.labelSecureMode, "labelSecureMode");
this.labelSecureMode.Font = null;
this.labelSecureMode.Name = "labelSecureMode";
this.toolTip1.SetToolTip(this.labelSecureMode, resources.GetString("labelSecureMode.ToolTip"));
//
// bnComboBoxFormat
//
this.bnComboBoxFormat.AccessibleDescription = null;
this.bnComboBoxFormat.AccessibleName = null;
resources.ApplyResources(this.bnComboBoxFormat, "bnComboBoxFormat");
this.bnComboBoxFormat.BackColor = System.Drawing.Color.White;
this.bnComboBoxFormat.BackgroundImage = null;
this.bnComboBoxFormat.DataSource = this.formatsBindingSource;
this.bnComboBoxFormat.DropDownHeight = 200;
this.bnComboBoxFormat.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.bnComboBoxFormat.DropDownWidth = 80;
this.bnComboBoxFormat.Font = null;
this.bnComboBoxFormat.ForeColor = System.Drawing.SystemColors.ControlText;
this.bnComboBoxFormat.ImageKeyMember = "DotExtension";
this.bnComboBoxFormat.ImageList = null;
this.bnComboBoxFormat.IsDroppedDown = false;
resources.ApplyResources(this.bnComboBoxFormat, "bnComboBoxFormat");
this.bnComboBoxFormat.MaxDropDownItems = 8;
this.bnComboBoxFormat.MinimumSize = new System.Drawing.Size(40, 21);
this.bnComboBoxFormat.Name = "bnComboBoxFormat";
@@ -359,6 +445,7 @@ namespace CUERipper
this.bnComboBoxFormat.SelectedIndex = -1;
this.bnComboBoxFormat.SelectedItem = null;
this.bnComboBoxFormat.Sorted = false;
this.toolTip1.SetToolTip(this.bnComboBoxFormat, resources.GetString("bnComboBoxFormat.ToolTip"));
this.bnComboBoxFormat.SelectedIndexChanged += new System.EventHandler(this.bnComboBoxFormat_SelectedIndexChanged);
//
// formatsBindingSource
@@ -368,20 +455,27 @@ namespace CUERipper
//
// labelEncoderMinMode
//
this.labelEncoderMinMode.AccessibleDescription = null;
this.labelEncoderMinMode.AccessibleName = null;
resources.ApplyResources(this.labelEncoderMinMode, "labelEncoderMinMode");
this.labelEncoderMinMode.Name = "labelEncoderMinMode";
this.toolTip1.SetToolTip(this.labelEncoderMinMode, resources.GetString("labelEncoderMinMode.ToolTip"));
//
// bnComboBoxImage
//
this.bnComboBoxImage.AccessibleDescription = null;
this.bnComboBoxImage.AccessibleName = null;
resources.ApplyResources(this.bnComboBoxImage, "bnComboBoxImage");
this.bnComboBoxImage.BackColor = System.Drawing.Color.White;
this.bnComboBoxImage.BackgroundImage = null;
this.bnComboBoxImage.DataSource = this.cUEStylesBindingSource;
this.bnComboBoxImage.DropDownHeight = 200;
this.bnComboBoxImage.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.bnComboBoxImage.DropDownWidth = 80;
this.bnComboBoxImage.Font = null;
this.bnComboBoxImage.ForeColor = System.Drawing.SystemColors.ControlText;
this.bnComboBoxImage.ImageList = null;
this.bnComboBoxImage.IsDroppedDown = false;
resources.ApplyResources(this.bnComboBoxImage, "bnComboBoxImage");
this.bnComboBoxImage.MaxDropDownItems = 8;
this.bnComboBoxImage.MinimumSize = new System.Drawing.Size(40, 21);
this.bnComboBoxImage.Name = "bnComboBoxImage";
@@ -389,6 +483,7 @@ namespace CUERipper
this.bnComboBoxImage.SelectedIndex = -1;
this.bnComboBoxImage.SelectedItem = null;
this.bnComboBoxImage.Sorted = false;
this.toolTip1.SetToolTip(this.bnComboBoxImage, resources.GetString("bnComboBoxImage.ToolTip"));
//
// cUEStylesBindingSource
//
@@ -397,27 +492,43 @@ namespace CUERipper
//
// labelEncoderMaxMode
//
this.labelEncoderMaxMode.AccessibleDescription = null;
this.labelEncoderMaxMode.AccessibleName = null;
resources.ApplyResources(this.labelEncoderMaxMode, "labelEncoderMaxMode");
this.labelEncoderMaxMode.Name = "labelEncoderMaxMode";
this.toolTip1.SetToolTip(this.labelEncoderMaxMode, resources.GetString("labelEncoderMaxMode.ToolTip"));
//
// labelEncoderMode
//
this.labelEncoderMode.AccessibleDescription = null;
this.labelEncoderMode.AccessibleName = null;
resources.ApplyResources(this.labelEncoderMode, "labelEncoderMode");
this.labelEncoderMode.Name = "labelEncoderMode";
this.toolTip1.SetToolTip(this.labelEncoderMode, resources.GetString("labelEncoderMode.ToolTip"));
//
// trackBarEncoderMode
//
this.trackBarEncoderMode.AccessibleDescription = null;
this.trackBarEncoderMode.AccessibleName = null;
resources.ApplyResources(this.trackBarEncoderMode, "trackBarEncoderMode");
this.trackBarEncoderMode.BackgroundImage = null;
this.trackBarEncoderMode.Font = null;
this.trackBarEncoderMode.LargeChange = 1;
this.trackBarEncoderMode.Name = "trackBarEncoderMode";
this.toolTip1.SetToolTip(this.trackBarEncoderMode, resources.GetString("trackBarEncoderMode.ToolTip"));
this.trackBarEncoderMode.Scroll += new System.EventHandler(this.trackBarEncoderMode_Scroll);
//
// trackBarSecureMode
//
this.trackBarSecureMode.AccessibleDescription = null;
this.trackBarSecureMode.AccessibleName = null;
resources.ApplyResources(this.trackBarSecureMode, "trackBarSecureMode");
this.trackBarSecureMode.BackgroundImage = null;
this.trackBarSecureMode.Font = null;
this.trackBarSecureMode.LargeChange = 3;
this.trackBarSecureMode.Maximum = 2;
this.trackBarSecureMode.Name = "trackBarSecureMode";
this.toolTip1.SetToolTip(this.trackBarSecureMode, resources.GetString("trackBarSecureMode.ToolTip"));
this.trackBarSecureMode.Scroll += new System.EventHandler(this.trackBarSecureMode_Scroll);
//
// imageListChecked
@@ -431,15 +542,23 @@ namespace CUERipper
//
// toolStripMenuItem1
//
this.toolStripMenuItem1.AccessibleDescription = null;
this.toolStripMenuItem1.AccessibleName = null;
resources.ApplyResources(this.toolStripMenuItem1, "toolStripMenuItem1");
this.toolStripMenuItem1.BackgroundImage = null;
this.toolStripMenuItem1.Image = global::CUERipper.Properties.Resources.cddb;
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
resources.ApplyResources(this.toolStripMenuItem1, "toolStripMenuItem1");
this.toolStripMenuItem1.ShortcutKeyDisplayString = null;
//
// progressBarErrors
//
this.progressBarErrors.AccessibleDescription = null;
this.progressBarErrors.AccessibleName = null;
resources.ApplyResources(this.progressBarErrors, "progressBarErrors");
this.progressBarErrors.BackgroundImage = null;
this.progressBarErrors.BackgroundPainter = this.plainBackgroundPainter1;
this.progressBarErrors.BorderPainter = this.styledBorderPainter1;
resources.ApplyResources(this.progressBarErrors, "progressBarErrors");
this.progressBarErrors.Font = null;
this.progressBarErrors.MarqueePercentage = 25;
this.progressBarErrors.MarqueeSpeed = 30;
this.progressBarErrors.MarqueeStep = 1;
@@ -450,6 +569,7 @@ namespace CUERipper
this.progressBarErrors.ProgressPainter = this.plainProgressPainter1;
this.progressBarErrors.ProgressType = ProgressODoom.ProgressType.Smooth;
this.progressBarErrors.ShowPercentage = false;
this.toolTip1.SetToolTip(this.progressBarErrors, resources.GetString("progressBarErrors.ToolTip"));
this.progressBarErrors.Value = 10;
//
// plainBackgroundPainter1
@@ -480,9 +600,13 @@ namespace CUERipper
//
// progressBarCD
//
this.progressBarCD.AccessibleDescription = null;
this.progressBarCD.AccessibleName = null;
resources.ApplyResources(this.progressBarCD, "progressBarCD");
this.progressBarCD.BackgroundImage = null;
this.progressBarCD.BackgroundPainter = this.plainBackgroundPainter1;
this.progressBarCD.BorderPainter = this.styledBorderPainter1;
resources.ApplyResources(this.progressBarCD, "progressBarCD");
this.progressBarCD.Font = null;
this.progressBarCD.MarqueePercentage = 25;
this.progressBarCD.MarqueeSpeed = 30;
this.progressBarCD.MarqueeStep = 1;
@@ -493,6 +617,7 @@ namespace CUERipper
this.progressBarCD.ProgressPainter = this.plainProgressPainter2;
this.progressBarCD.ProgressType = ProgressODoom.ProgressType.Smooth;
this.progressBarCD.ShowPercentage = true;
this.toolTip1.SetToolTip(this.progressBarCD, resources.GetString("progressBarCD.ToolTip"));
this.progressBarCD.Value = 10;
//
// plainProgressPainter2
@@ -504,7 +629,11 @@ namespace CUERipper
//
// txtOutputPath
//
this.txtOutputPath.AccessibleDescription = null;
this.txtOutputPath.AccessibleName = null;
resources.ApplyResources(this.txtOutputPath, "txtOutputPath");
this.txtOutputPath.BackgroundImage = null;
this.txtOutputPath.Font = null;
this.txtOutputPath.Name = "txtOutputPath";
this.txtOutputPath.ReadOnly = true;
this.toolTip1.SetToolTip(this.txtOutputPath, resources.GetString("txtOutputPath.ToolTip"));
@@ -512,17 +641,21 @@ namespace CUERipper
//
// bnComboBoxRelease
//
this.bnComboBoxRelease.AccessibleDescription = null;
this.bnComboBoxRelease.AccessibleName = null;
resources.ApplyResources(this.bnComboBoxRelease, "bnComboBoxRelease");
this.bnComboBoxRelease.BackColor = System.Drawing.SystemColors.ControlLightLight;
this.bnComboBoxRelease.BackgroundImage = null;
this.bnComboBoxRelease.ContextMenuStrip = this.contextMenuStripRelease;
this.bnComboBoxRelease.DataSource = this.releasesBindingSource;
this.bnComboBoxRelease.DropDownHeight = 200;
this.bnComboBoxRelease.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.bnComboBoxRelease.DropDownWidth = 552;
this.bnComboBoxRelease.Font = null;
this.bnComboBoxRelease.ForeColor = System.Drawing.SystemColors.ControlText;
this.bnComboBoxRelease.ImageKeyMember = "ImageKey";
this.bnComboBoxRelease.ImageList = this.imageListMetadataSource;
this.bnComboBoxRelease.IsDroppedDown = false;
resources.ApplyResources(this.bnComboBoxRelease, "bnComboBoxRelease");
this.bnComboBoxRelease.MaxDropDownItems = 8;
this.bnComboBoxRelease.MinimumSize = new System.Drawing.Size(61, 21);
this.bnComboBoxRelease.Name = "bnComboBoxRelease";
@@ -547,16 +680,20 @@ namespace CUERipper
//
// bnComboBoxDrives
//
this.bnComboBoxDrives.AccessibleDescription = null;
this.bnComboBoxDrives.AccessibleName = null;
resources.ApplyResources(this.bnComboBoxDrives, "bnComboBoxDrives");
this.bnComboBoxDrives.BackColor = System.Drawing.SystemColors.ControlLightLight;
this.bnComboBoxDrives.BackgroundImage = null;
this.bnComboBoxDrives.DataSource = this.drivesBindingSource;
this.bnComboBoxDrives.DropDownHeight = 200;
this.bnComboBoxDrives.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.bnComboBoxDrives.DropDownWidth = 552;
this.bnComboBoxDrives.Font = null;
this.bnComboBoxDrives.ForeColor = System.Drawing.SystemColors.ControlText;
this.bnComboBoxDrives.ImageKeyMember = "ImageKey";
this.bnComboBoxDrives.ImageList = this.imageListMetadataSource;
this.bnComboBoxDrives.IsDroppedDown = false;
resources.ApplyResources(this.bnComboBoxDrives, "bnComboBoxDrives");
this.bnComboBoxDrives.MaxDropDownItems = 8;
this.bnComboBoxDrives.MinimumSize = new System.Drawing.Size(61, 21);
this.bnComboBoxDrives.Name = "bnComboBoxDrives";
@@ -564,6 +701,7 @@ namespace CUERipper
this.bnComboBoxDrives.SelectedIndex = -1;
this.bnComboBoxDrives.SelectedItem = null;
this.bnComboBoxDrives.Sorted = false;
this.toolTip1.SetToolTip(this.bnComboBoxDrives, resources.GetString("bnComboBoxDrives.ToolTip"));
this.bnComboBoxDrives.SelectedIndexChanged += new System.EventHandler(this.bnComboBoxDrives_SelectedIndexChanged);
//
// drivesBindingSource
@@ -573,14 +711,18 @@ namespace CUERipper
//
// bnComboBoxOutputFormat
//
this.bnComboBoxOutputFormat.AccessibleDescription = null;
this.bnComboBoxOutputFormat.AccessibleName = null;
resources.ApplyResources(this.bnComboBoxOutputFormat, "bnComboBoxOutputFormat");
this.bnComboBoxOutputFormat.BackColor = System.Drawing.SystemColors.ControlLightLight;
this.bnComboBoxOutputFormat.BackgroundImage = null;
this.bnComboBoxOutputFormat.DropDownHeight = 200;
this.bnComboBoxOutputFormat.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDown;
this.bnComboBoxOutputFormat.DropDownWidth = 552;
this.bnComboBoxOutputFormat.Font = null;
this.bnComboBoxOutputFormat.ForeColor = System.Drawing.SystemColors.ControlText;
this.bnComboBoxOutputFormat.ImageList = null;
this.bnComboBoxOutputFormat.IsDroppedDown = false;
resources.ApplyResources(this.bnComboBoxOutputFormat, "bnComboBoxOutputFormat");
this.bnComboBoxOutputFormat.MaxDropDownItems = 8;
this.bnComboBoxOutputFormat.MinimumSize = new System.Drawing.Size(40, 21);
this.bnComboBoxOutputFormat.Name = "bnComboBoxOutputFormat";
@@ -588,6 +730,7 @@ namespace CUERipper
this.bnComboBoxOutputFormat.SelectedIndex = -1;
this.bnComboBoxOutputFormat.SelectedItem = null;
this.bnComboBoxOutputFormat.Sorted = false;
this.toolTip1.SetToolTip(this.bnComboBoxOutputFormat, resources.GetString("bnComboBoxOutputFormat.ToolTip"));
this.bnComboBoxOutputFormat.DroppedDown += new System.EventHandler(this.bnComboBoxOutputFormat_DroppedDown);
this.bnComboBoxOutputFormat.Leave += new System.EventHandler(this.bnComboBoxOutputFormat_Leave);
this.bnComboBoxOutputFormat.MouseLeave += new System.EventHandler(this.bnComboBoxOutputFormat_MouseLeave);
@@ -595,8 +738,11 @@ namespace CUERipper
//
// frmCUERipper
//
this.AccessibleDescription = null;
this.AccessibleName = null;
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackgroundImage = null;
this.Controls.Add(this.txtOutputPath);
this.Controls.Add(this.bnComboBoxRelease);
this.Controls.Add(this.bnComboBoxDrives);
@@ -609,11 +755,13 @@ namespace CUERipper
this.Controls.Add(this.statusStrip1);
this.Controls.Add(this.buttonAbort);
this.Controls.Add(this.buttonPause);
this.Font = null;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.KeyPreview = true;
this.MaximizeBox = false;
this.Name = "frmCUERipper";
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
this.toolTip1.SetToolTip(this, resources.GetString("$this.ToolTip"));
this.Load += new System.EventHandler(this.frmCUERipper_Load);
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.frmCUERipper_FormClosed);
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.frmCUERipper_KeyDown);

View File

@@ -542,7 +542,7 @@ namespace CUERipper
cueSheet.Action = CUEAction.Encode;
this.BeginInvoke((MethodInvoker)delegate() { toolStripStatusLabel1.Text = Properties.Resources.LookingUpVia + " CTDB..."; });
cueSheet.UseCUEToolsDB(true, "CUERipper 2.0.7: " + selectedDriveInfo.drive.ARName);
cueSheet.UseCUEToolsDB(true, "CUERipper 2.0.8: " + selectedDriveInfo.drive.ARName);
cueSheet.CTDB.UploadHelper.onProgress += new EventHandler<Krystalware.UploadHelper.UploadProgressEventArgs>(UploadProgress);
this.BeginInvoke((MethodInvoker)delegate() { toolStripStatusLabel1.Text = Properties.Resources.LookingUpVia + " AccurateRip..."; });
cueSheet.UseAccurateRip();
@@ -575,7 +575,7 @@ namespace CUERipper
m_freedb.UserName = "gchudov";
m_freedb.Hostname = "gmail.com";
m_freedb.ClientName = "CUERipper";
m_freedb.Version = "2.0.7";
m_freedb.Version = "2.0.8";
m_freedb.SetDefaultSiteAddress(Properties.Settings.Default.MAIN_FREEDB_SITEADDRESS);
QueryResult queryResult;
@@ -626,6 +626,9 @@ namespace CUERipper
releases.Add(CreateCUESheet(audioSource, null, null));
}
_workThread = null;
// have to cache results.Count, because it sometimes hangs in it,
// and we don't want UI thread to hang.
int mbresults_count = results.Count;
this.BeginInvoke((MethodInvoker)delegate()
{
SetupControls();
@@ -639,9 +642,9 @@ namespace CUERipper
toolStripStatusCTDB.Text = cueSheet.CTDB.DBStatus == null ? cueSheet.CTDB.Total.ToString() : "";
toolStripStatusCTDB.ToolTipText = "CUETools DB: " + (cueSheet.CTDB.DBStatus ?? "found") + ".";
toolStripStatusLabelMusicBrainz.Enabled = true;
toolStripStatusLabelMusicBrainz.BorderStyle = results.Count > 0 ? Border3DStyle.SunkenInner : Border3DStyle.RaisedInner;
toolStripStatusLabelMusicBrainz.Text = results.Count > 0 ? results.Count.ToString() : "";
toolStripStatusLabelMusicBrainz.ToolTipText = "Musicbrainz: " + (results.Count > 0 ? results.Count.ToString() + " entries found." : "click to submit.");
toolStripStatusLabelMusicBrainz.BorderStyle = mbresults_count > 0 ? Border3DStyle.SunkenInner : Border3DStyle.RaisedInner;
toolStripStatusLabelMusicBrainz.Text = mbresults_count > 0 ? mbresults_count.ToString() : "";
toolStripStatusLabelMusicBrainz.ToolTipText = "Musicbrainz: " + (mbresults_count > 0 ? mbresults_count.ToString() + " entries found." : "click to submit.");
});
}

View File

@@ -187,6 +187,6 @@
<value>Rechtsklick zum Ändern der CD-Informationen</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>CUERipper 2.0.7</value>
<value>CUERipper 2.0.8</value>
</data>
</root>

File diff suppressed because it is too large Load Diff

View File

@@ -118,9 +118,6 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="listTracks.ToolTip" xml:space="preserve">
<value>Редактирование названий треков начинается двойным кликом мыши</value>
</data>
<data name="Title.Text" xml:space="preserve">
<value>Название</value>
</data>
@@ -130,6 +127,9 @@
<data name="Length.Text" xml:space="preserve">
<value>Длина</value>
</data>
<data name="listTracks.ToolTip" xml:space="preserve">
<value>Редактирование названий треков начинается двойным кликом мыши</value>
</data>
<data name="buttonGo.Text" xml:space="preserve">
<value>Поехали</value>
</data>

View File

@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Build Number
// Revision
//
[assembly: AssemblyVersion("2.0.7.0")]
[assembly: AssemblyFileVersion("2.0.7.0")]
[assembly: AssemblyVersion("2.0.8.0")]
[assembly: AssemblyFileVersion("2.0.8.0")]

View File

@@ -4,6 +4,7 @@ using System.Globalization;
using System.IO;
using System.Net;
using System.Text;
using CUETools.Parity;
using CUETools.CDImage;
using CUETools.Codecs;
@@ -18,9 +19,10 @@ namespace CUETools.AccurateRip
_accDisks = new List<AccDisk>();
//_crc32 = new Crc32();
_hasLogCRC = false;
_finalSampleCount = _toc.AudioLength * 588;
_CRCLOG = new uint[_toc.AudioTracks + 1];
_CRCMASK = new uint[_toc.AudioTracks + 1];
_CRCMASK[0] = 0xffffffff ^ Crc32.Combine(0xffffffff, 0, (int)_toc.AudioLength * 588 * 4);
_CRCMASK[0] = 0xffffffff ^ Crc32.Combine(0xffffffff, 0, (int)_finalSampleCount * 4);
for (int iTrack = 1; iTrack <= _toc.AudioTracks; iTrack++)
_CRCMASK[iTrack] = 0xffffffff ^ Crc32.Combine(0xffffffff, 0, (int)_toc[iTrack + _toc.FirstAudio - 1].Length * 588 * 4);
Init();
@@ -316,30 +318,53 @@ namespace CUETools.AccurateRip
_CRCLOG[iTrack] = value;
}
private ushort[,] syndrome = new ushort[1,1];
private byte[] parity = new byte[1];
private ushort[] expTbl = new ushort[1];
private ushort[] logTbl = new ushort[1];
private int stride = 1, stridecount, npar;
internal ushort[,] syndrome;
internal byte[] parity;
internal ushort[] leadin;
internal ushort[] leadout;
private int stride = 1, laststride = 1, stridecount = 1, npar = 1;
private bool calcSyn = false;
private bool calcParity = false;
public void CalcSyndrome(ushort[] expTbl, ushort[] logTbl, ushort[,] syndrome, byte[] parity, int stride, int stridecount, int npar, bool calcParity, bool calcSyn)
internal void InitCDRepair(int stride, int laststride, int stridecount, int npar, bool calcSyn, bool calcParity)
{
if (npar != 8)
throw new NotSupportedException();
this.syndrome = syndrome;
this.parity = parity;
this.logTbl = logTbl;
this.expTbl = expTbl;
throw new NotSupportedException("npar != 8");
this.stride = stride;
this.laststride = laststride;
this.stridecount = stridecount;
this.npar = npar;
this.calcSyn = calcSyn;
this.calcParity = calcParity;
Init();
}
private unsafe static void CalcSyn8(ushort* exp, ushort* log, ushort* syn, uint lo, uint n)
internal unsafe uint CTDBCRC(int actualOffset)
{
fixed (uint* crct = Crc32.table)
{
// calculate leadin CRC
uint crc0 = 0;
for (int off = 0; off < stride - 2 * actualOffset; off++)
{
ushort dd = leadin[off];
crc0 = (crc0 >> 8) ^ crct[(byte)(crc0 ^ dd)];
crc0 = (crc0 >> 8) ^ crct[(byte)(crc0 ^ (dd >> 8))];
}
// calculate leadout CRC
uint crc2 = 0;
for (int off = laststride + 2 * actualOffset - 1; off >= 0; off--)
{
ushort dd = leadout[off];
crc2 = (crc2 >> 8) ^ crct[(byte)(crc2 ^ dd)];
crc2 = (crc2 >> 8) ^ crct[(byte)(crc2 ^ (dd >> 8))];
}
return GetCRC32(crc0, (stride - 2 * actualOffset) * 2, crc2, (laststride + 2 * actualOffset) * 2);
}
}
private unsafe static void CalcSyn8(ushort* exp, ushort* log, ushort* syn, uint lo, uint n, int npar)
{
syn[0] ^= (ushort)lo;
uint idx = log[lo] + n; syn[1] ^= exp[(idx & 0xffff) + (idx >> 16)];
@@ -349,6 +374,17 @@ namespace CUETools.AccurateRip
idx += n; syn[5] ^= exp[(idx & 0xffff) + (idx >> 16)];
idx += n; syn[6] ^= exp[(idx & 0xffff) + (idx >> 16)];
idx += n; syn[7] ^= exp[(idx & 0xffff) + (idx >> 16)];
//for (int i = 8; i < npar; i += 8)
//{
// idx += n; syn[i] ^= exp[(idx & 0xffff) + (idx >> 16)];
// idx += n; syn[i + 1] ^= exp[(idx & 0xffff) + (idx >> 16)];
// idx += n; syn[i + 2] ^= exp[(idx & 0xffff) + (idx >> 16)];
// idx += n; syn[i + 3] ^= exp[(idx & 0xffff) + (idx >> 16)];
// idx += n; syn[i + 4] ^= exp[(idx & 0xffff) + (idx >> 16)];
// idx += n; syn[i + 5] ^= exp[(idx & 0xffff) + (idx >> 16)];
// idx += n; syn[i + 6] ^= exp[(idx & 0xffff) + (idx >> 16)];
// idx += n; syn[i + 7] ^= exp[(idx & 0xffff) + (idx >> 16)];
//}
}
#if alternateSynCalc
@@ -452,7 +488,7 @@ namespace CUETools.AccurateRip
int pk = ((int)(lo << 16)) >> 16;
peak = Math.Max(peak, (pk << 1) ^ (pk >> 31));
if (doSyn && lo != 0) CalcSyn8(exp, log, syn + i * 16, lo, n);
if (doSyn && lo != 0) CalcSyn8(exp, log, syn + i * 16, lo, n, npar);
if (doPar) CalcPar8(exp, log, wr + i * 16, lo);
uint hi = sample >> 16;
@@ -468,7 +504,7 @@ namespace CUETools.AccurateRip
pk = ((int)(hi << 16)) >> 16;
peak = Math.Max(peak, (pk << 1) ^ (pk >> 31));
if (doSyn && hi != 0) CalcSyn8(exp, log, syn + i * 16 + 8, hi, n);
if (doSyn && hi != 0) CalcSyn8(exp, log, syn + i * 16 + 8, hi, n, npar);
if (doPar) CalcPar8(exp, log, wr + i * 16 + 8, hi);
}
@@ -513,7 +549,7 @@ namespace CUETools.AccurateRip
int pos = 0;
fixed (uint* t = Crc32.table)
fixed (ushort* exp = expTbl, log = logTbl, synptr1 = syndrome)
fixed (ushort* exp = Galois16.instance.ExpTbl, log = Galois16.instance.LogTbl, synptr1 = syndrome)
fixed (byte* pSampleBuff = &sampleBuffer.Bytes[0], bpar = parity)
while (pos < sampleBuffer.Length)
{
@@ -527,6 +563,19 @@ namespace CUETools.AccurateRip
int currentPart = ((int)_sampleCount * 2) % stride;
ushort* synptr = synptr1 + npar * currentPart;
ushort* wr = ((ushort*)bpar) + npar * currentPart;
int currentStride = ((int)_sampleCount * 2) / stride;
if (currentStride < 2 && leadin != null)
for (int i = 0; i < copyCount * 2; i++)
leadin[_sampleCount * 2 + i] = ((ushort*)samples)[i];
if (currentStride >= stridecount && leadout != null)
for (int i = 0; i < copyCount * 2; i++)
{
int remaining = (int)(_finalSampleCount - _sampleCount) * 2 - i - 1;
if (remaining < stride + laststride)
leadout[remaining] = ((ushort*)samples)[i];
}
if (currentSector < 10)
CalculateCRCs(t, exp, log, synptr, wr, samples, copyCount, currentOffset, currentOffset);
@@ -609,6 +658,18 @@ namespace CUETools.AccurateRip
_CacheCRCWN = new uint[_toc.AudioTracks + 1, 31 * 588];
_CRCNL = new int[_toc.AudioTracks + 1, 31 * 588];
_Peak = new int[_toc.AudioTracks + 1];
syndrome = new ushort[calcSyn ? stride : 1, npar];
parity = new byte[stride * npar * 2];
if (calcSyn || calcParity)
{
leadin = new ushort[stride * 2];
leadout = new ushort[stride + laststride];
}
else
{
leadin = null;
leadout = null;
}
_currentTrack = 0;
Position = _toc[_toc.FirstAudio][0].Start * 588;
}
@@ -741,11 +802,14 @@ namespace CUETools.AccurateRip
public long FinalSampleCount
{
get
{
return _finalSampleCount;
}
set
{
if (value < 0) // != _toc.Length?
if (value != _finalSampleCount)
throw new Exception("invalid FinalSampleCount");
_finalSampleCount = value;
}
}

View File

@@ -0,0 +1,642 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using CUETools.CDImage;
using CUETools.Codecs;
using CUETools.Parity;
using CUETools.AccurateRip;
namespace CUETools.AccurateRip
{
public class CDRepair
{
protected int sampleCount;
protected int finalSampleCount;
internal Galois galois;
protected RsDecode rs;
//protected uint crc;
protected int[] encodeGx;
internal int stride;
internal int laststride;
internal int stridecount;
internal int npar;
public CDRepair(int finalSampleCount, int stride, int npar)
{
this.npar = npar;
this.stride = stride;
this.finalSampleCount = finalSampleCount;
sampleCount = 0;
galois = Galois16.instance;
rs = new RsDecode16(npar, galois);
//crc32 = new Crc32();
//crc = 0xffffffff;
encodeGx = galois.makeEncodeGxLog(npar);
laststride = stride + (finalSampleCount * 2) % stride;
stridecount = (finalSampleCount * 2) / stride - 2; // minus one for leadin and one for leadout
if ((finalSampleCount * 2 + stride - 1) / stride + npar > galois.Max)
throw new Exception("invalid stride");
}
public CDRepair(CDRepair src)
: this(src.finalSampleCount, src.stride, src.npar)
{
}
//public unsafe void Write(AudioBuffer sampleBuffer)
//{
// throw new Exception("unsupported");
//}
//public unsafe void Close()
//{
// if (sampleCount != finalSampleCount)
// throw new Exception("sampleCount != finalSampleCount");
//}
public long FinalSampleCount
{
set
{
if (value < 0) // != _toc.Length?
throw new Exception("invalid FinalSampleCount");
finalSampleCount = (int)value;
}
}
public int NPAR
{
get
{
return npar;
}
}
}
public class CDRepairEncode : CDRepair
{
internal bool verify;
internal bool encode;
protected AccurateRipVerify ar;
public CDRepairEncode(AccurateRipVerify ar, int stride, int npar, bool verify, bool encode)
: base ((int)ar.FinalSampleCount, stride, npar)
{
this.ar = ar;
this.verify = verify;
this.encode = encode;
ar.InitCDRepair(stride, laststride, stridecount, npar, verify, encode);
}
//private unsafe void ProcessStride(int currentStride, int currentPart, int count, ushort* data)
//{
// fixed (uint* crct = Crc32.table)
// fixed (byte* bpar = parity)
// fixed (ushort* exp = galois.ExpTbl, log = galois.LogTbl, synptr = syndrome)
// fixed (int* gx = encodeGx)
// for (int pos = 0; pos < count; pos++)
// {
// ushort* par = (ushort*)bpar;
// int part = currentPart + pos;
// ushort* wr = ((ushort*)par) + part * npar;
// ushort dd = data[pos];
// //crc = (crc >> 8) ^ crct[(byte)(crc ^ dd)];
// //crc = (crc >> 8) ^ crct[(byte)(crc ^ (dd >> 8))];
// if (verify)
// {
// ushort* syn = synptr + part * npar;
// syn[0] ^= dd; // wk += data
// for (int i = 1; i < npar; i++)
// syn[i] = (ushort)(dd ^ galois.mulExp(syn[i], i)); // wk = data + wk * α^i
// }
// int ib = wr[0] ^ dd;
// if (ib != 0)
// {
// ushort* myexp = exp + log[ib];
// for (int i = 0; i < npar - 1; i++)
// wr[i] = (ushort)(wr[i + 1] ^ myexp[gx[i]]);
// wr[npar - 1] = myexp[gx[npar - 1]];
// }
// else
// {
// for (int i = 0; i < npar - 1; i++)
// wr[i] = wr[i + 1];
// wr[npar - 1] = 0;
// }
// }
//}
//private unsafe void ProcessStride16(int currentStride, int currentPart, int count, ushort* data)
//{
// fixed (uint* crct = Crc32.table)
// fixed (byte* bpar = parity)
// fixed (ushort* exp = galois.ExpTbl, log = galois.LogTbl, synptr = syndrome)
// for (int pos = 0; pos < count; pos++)
// {
// ushort* par = (ushort*)bpar;
// int part = currentPart + pos;
// ushort* wr = par + part * 16;
// ushort dd = data[pos];
// //crc = (crc >> 8) ^ crct[(byte)(crc ^ dd)];
// //crc = (crc >> 8) ^ crct[(byte)(crc ^ (dd >> 8))];
// int ib = wr[0] ^ dd;
// if (ib != 0)
// {
// ushort* myexp = exp + log[ib];
// wr[0] = (ushort)(wr[1] ^ myexp[0x000059f1]);
// wr[1] = (ushort)(wr[2] ^ myexp[0x0000608f]);
// wr[2] = (ushort)(wr[3] ^ myexp[0x0000918b]);
// wr[3] = (ushort)(wr[4] ^ myexp[0x00004487]);
// wr[4] = (ushort)(wr[5] ^ myexp[0x0000a151]);
// wr[5] = (ushort)(wr[6] ^ myexp[0x0000c074]);
// wr[6] = (ushort)(wr[7] ^ myexp[0x00004178]);
// wr[7] = (ushort)(wr[8] ^ myexp[0x00004730]);
// wr[8] = (ushort)(wr[9] ^ myexp[0x00004187]);
// wr[9] = (ushort)(wr[10] ^ myexp[0x0000c092]);
// wr[10] = (ushort)(wr[11] ^ myexp[0x0000a17e]);
// wr[11] = (ushort)(wr[12] ^ myexp[0x000044c3]);
// wr[12] = (ushort)(wr[13] ^ myexp[0x000091d6]);
// wr[13] = (ushort)(wr[14] ^ myexp[0x000060e9]);
// wr[14] = (ushort)(wr[15] ^ myexp[0x00005a5a]);
// wr[15] = myexp[0x00000078];
// }
// else
// {
// wr[0] = wr[1];
// wr[1] = wr[2];
// wr[2] = wr[3];
// wr[3] = wr[4];
// wr[4] = wr[5];
// wr[5] = wr[6];
// wr[6] = wr[7];
// wr[7] = wr[8];
// wr[8] = wr[9];
// wr[9] = wr[10];
// wr[10] = wr[11];
// wr[11] = wr[12];
// wr[12] = wr[13];
// wr[13] = wr[14];
// wr[14] = wr[15];
// wr[15] = 0;
// }
// // syn[i] += data[pos] * α^(n*i)
// if (verify && dd != 0)
// {
// int n = stridecount - currentStride;
// ushort* syn = synptr + part * 16;
// syn[0] ^= dd;
// int idx = log[dd];
// idx += n; syn[1] ^= exp[(idx & 0xffff) + (idx >> 16)];
// idx += n; syn[2] ^= exp[(idx & 0xffff) + (idx >> 16)];
// idx += n; syn[3] ^= exp[(idx & 0xffff) + (idx >> 16)];
// idx += n; syn[4] ^= exp[(idx & 0xffff) + (idx >> 16)];
// idx += n; syn[5] ^= exp[(idx & 0xffff) + (idx >> 16)];
// idx += n; syn[6] ^= exp[(idx & 0xffff) + (idx >> 16)];
// idx += n; syn[7] ^= exp[(idx & 0xffff) + (idx >> 16)];
// idx += n; syn[8] ^= exp[(idx & 0xffff) + (idx >> 16)];
// idx += n; syn[9] ^= exp[(idx & 0xffff) + (idx >> 16)];
// idx += n; syn[10] ^= exp[(idx & 0xffff) + (idx >> 16)];
// idx += n; syn[11] ^= exp[(idx & 0xffff) + (idx >> 16)];
// idx += n; syn[12] ^= exp[(idx & 0xffff) + (idx >> 16)];
// idx += n; syn[13] ^= exp[(idx & 0xffff) + (idx >> 16)];
// idx += n; syn[14] ^= exp[(idx & 0xffff) + (idx >> 16)];
// idx += n; syn[15] ^= exp[(idx & 0xffff) + (idx >> 16)];
// }
// }
//}
//new public unsafe void Write(AudioBuffer sampleBuffer)
//{
// if (!verify && !encode)
// return;
// sampleBuffer.Prepare(this);
// if ((sampleBuffer.ByteLength & 1) != 0 || sampleCount + sampleBuffer.Length > finalSampleCount)
// throw new Exception("sampleCount > finalSampleCount");
// fixed (byte* bytes = sampleBuffer.Bytes)
// {
// int offs = 0;
// while (offs < sampleBuffer.Length)
// {
// int currentPart = (sampleCount * 2) % stride;
// int currentStride = (sampleCount * 2) / stride;
// // Process no more than there is in the buffer, and no more than up to a stride boundary.
// int copyCount = Math.Min((sampleBuffer.Length - offs) * 2, stride - currentPart);
// ushort* data = ((ushort*)bytes) + offs * 2;
// if (currentStride < 2)
// for (int pos = 0; pos < copyCount; pos++)
// leadin[sampleCount * 2 + pos] = data[pos];
// if (currentStride >= stridecount)
// for (int pos = 0; pos < copyCount; pos++)
// {
// int remaining = (finalSampleCount - sampleCount) * 2 - pos - 1;
// if (remaining < stride + laststride)
// leadout[remaining] = data[pos];
// }
// if (currentStride >= 1 && currentStride <= stridecount)
// {
// if (npar == 16)
// ProcessStride16(currentStride, currentPart, copyCount, data);
// else if (npar != 8)
// ProcessStride(currentStride, currentPart, copyCount, data);
// }
// sampleCount += copyCount >> 1;
// offs += copyCount >> 1;
// }
// }
//}
public unsafe CDRepairFix VerifyParity(byte[] parity2, int actualOffset)
{
return VerifyParity(npar, parity2, 0, parity2.Length, actualOffset);
}
public uint CRC
{
get
{
return ar.CTDBCRC(0);
}
}
public unsafe bool FindOffset(int npar2, byte[] parity2, int pos, uint expectedCRC, out int actualOffset, out bool hasErrors)
{
if (npar2 != npar)
throw new Exception("npar mismatch");
if (!verify)
throw new Exception("verify was not enabled");
if (ar.Position != ar.FinalSampleCount)
throw new Exception("ar.Position != ar.FinalSampleCount");
// find offset
fixed (byte* par2ptr = &parity2[pos])
{
ushort* par2 = (ushort*)par2ptr;
int* _sigma = stackalloc int[npar];
int* _errpos = stackalloc int[npar];
int* syn = stackalloc int[npar];
bool foundOffset = false;
for (int allowed_errors = 0; allowed_errors < npar / 2 && !foundOffset; allowed_errors++)
{
int part2 = 0;
ushort* wr = par2 + part2 * npar;
// We can only use offset if Abs(offset * 2) < stride,
// else we might need to add/remove more than one sample
// from syndrome calculations, and that would be too difficult
// and will probably require longer leadin/leadout.
for (int offset = 1 - stride / 2; offset < stride / 2; offset++)
{
int err = 0;
int part = (part2 + stride - offset * 2) % stride;
for (int i = 0; i < npar; i++)
{
int synI = ar.syndrome[part, i];
// offset < 0
if (part < -offset * 2)
{
synI ^= galois.mulExp(ar.leadin[stride + part], (i * (stridecount - 1)) % galois.Max);
synI = ar.leadout[laststride - part - 1] ^ galois.mulExp(synI, i);
}
// offset > 0
if (part >= stride - offset * 2)
{
synI = galois.divExp(synI ^ ar.leadout[laststride + stride - part - 1], i);
synI ^= galois.mulExp(ar.leadin[part], (i * (stridecount - 1)) % galois.Max);
}
for (int j = 0; j < npar; j++)
synI = wr[j] ^ galois.mulExp(synI, i);
syn[i] = synI;
err |= synI;
}
int err_count = err == 0 ? 0 : rs.calcSigmaMBM(_sigma, syn);
if (err_count == allowed_errors && (err_count == 0 || rs.chienSearch(_errpos, stridecount + npar, err_count, _sigma)))
{
actualOffset = offset;
hasErrors = err_count != 0 || ar.CTDBCRC(offset) != expectedCRC;
return true;
}
}
}
}
actualOffset = 0;
hasErrors = true;
return false;
}
public unsafe CDRepairFix VerifyParity(int npar2, byte[] parity2, int pos, int len, int actualOffset)
{
if (len != stride * npar * 2)
throw new Exception("wrong size");
CDRepairFix fix = new CDRepairFix(this);
fix.actualOffset = actualOffset;
fix.correctableErrors = 0;
fix.hasErrors = false;
fix.canRecover = true;
fix.sigma = new int[stride, npar / 2 + 2];
fix.omega = new int[stride, npar / 2 + 1];
fix.errpos = new int[stride, npar / 2];
//fix.erroff = new int[stride, npar / 2];
fix.errors = new int[stride];
fixed (byte* par = &parity2[pos])
fixed (ushort* exp = galois.ExpTbl, log = galois.LogTbl)
{
int* syn = stackalloc int[npar];
int offset = fix.actualOffset;
for (int part = 0; part < stride; part++)
{
int part2 = (part + offset * 2 + stride) % stride;
ushort* wr = (ushort*)par + part2 * npar;
int err = 0;
for (int i = 0; i < npar; i++)
{
syn[i] = ar.syndrome[part, i];
// offset < 0
if (part < -offset * 2)
{
syn[i] ^= galois.mulExp(ar.leadin[stride + part], (i * (stridecount - 1)) % galois.Max);
syn[i] = ar.leadout[laststride - part - 1] ^ galois.mulExp(syn[i], i);
}
// offset > 0
if (part >= stride - offset * 2)
{
syn[i] = galois.divExp(syn[i] ^ ar.leadout[laststride + stride - part - 1], i);
syn[i] ^= galois.mulExp(ar.leadin[part], (i * (stridecount - 1)) % galois.Max);
}
//syn[i] = galois.mulExp(syn[i], i * npar);
for (int j = 0; j < npar; j++)
syn[i] = wr[j] ^ galois.mulExp(syn[i], i); // wk = data + wk * α^i
err |= syn[i];
}
//for (int j = 0; j < npar; j++)
// if (wr[j] != 0)
// {
// ushort* myexp = exp + log[wr[j]];
// syn[0] ^= wr[j];
// for (int i = 1; i < npar; i++)
// syn[i] ^= myexp[(npar - j - 1) * i];
// }
//for (int i = 0; i < npar; i++)
// err |= syn[i];
if (err != 0)
{
fixed (int* s = &fix.sigma[part, 0], o = &fix.omega[part, 0], e = &fix.errpos[part, 0])
{
fix.errors[part] = rs.calcSigmaMBM(s, syn);
fix.hasErrors = true;
fix.correctableErrors += fix.errors[part];
if (fix.errors[part] <= 0 || !rs.chienSearch(e, stridecount + npar, fix.errors[part], s))
fix.canRecover = false;
else
galois.mulPoly(o, s, syn, npar / 2 + 1, npar, npar);
}
}
else
fix.errors[part] = 0;
}
}
return fix;
}
public byte[] Parity
{
get
{
return ar.parity;
}
}
}
public class CDRepairFix : CDRepair, IAudioDest
{
internal bool hasErrors = false, canRecover = true;
internal int actualOffset = 0;
internal int correctableErrors = 0;
internal int[,] sigma;
internal int[,] omega;
internal int[,] errpos;
internal int[] erroffsorted;
internal ushort[] forneysorted;
internal int erroffcount;
internal int[] errors;
private BitArray affectedSectorArray;
private int nexterroff;
uint crc = 0;
internal CDRepairFix(CDRepairEncode decode)
: base(decode)
{
}
public string AffectedSectors
{
get
{
StringBuilder sb = new StringBuilder();
SortErrors();
for (int i = 0; i < erroffcount; i++)
{
int j;
for (j = i + 1; j < erroffcount; j++)
if (erroffsorted[j] - erroffsorted[j - 1] > 2 * 588 * 5)
break;
uint sec1 = (uint)erroffsorted[i] / 2 / 588;
uint sec2 = (uint)erroffsorted[j - 1] / 2 / 588;
if (sb.Length != 0) sb.Append(",");
sb.Append(CDImageLayout.TimeToString(sec1));
if (sec1 != sec2) sb.Append("-");
if (sec1 != sec2) sb.Append(CDImageLayout.TimeToString(sec2));
i = j - 1;
}
return sb.ToString();
}
}
public BitArray AffectedSectorArray
{
get
{
if (affectedSectorArray == null)
{
affectedSectorArray = new BitArray(finalSampleCount / 588 + 1);
SortErrors();
for (int i = 0; i < erroffcount; i++)
affectedSectorArray[erroffsorted[i] / 2 / 588] = true;
}
return affectedSectorArray;
}
}
private int GetErrOff(int part, int i)
{
return (2 + galois.toPos(stridecount + npar, errpos[part, i]) - (stride + part + ActualOffset * 2) / stride) * stride + part;
}
private unsafe void SortErrors()
{
if (erroffsorted != null)
return;
erroffcount = 0;
erroffsorted = new int[errpos.GetLength(0) * errpos.GetLength(1)];
forneysorted = new ushort[errpos.GetLength(0) * errpos.GetLength(1)];
for (int part = 0; part < stride; part++)
{
fixed (int* s = &sigma[part, 0], o = &omega[part, 0])
for (int i = 0; i < errors[part]; i++)
{
erroffsorted[erroffcount] = GetErrOff(part, i);
if (erroffsorted[erroffcount] >= 0 && erroffsorted[erroffcount] < finalSampleCount * 2)
{
forneysorted[erroffcount] = (ushort)rs.doForney(errors[part], errpos[part, i], s, o);
erroffcount++;
}
}
}
Array.Sort<int, ushort>(erroffsorted, forneysorted, 0, erroffcount);
// assert erroffcount == CorrectableErrors
nexterroff = 0;
}
public unsafe void Write(AudioBuffer sampleBuffer)
{
sampleBuffer.Prepare(this);
if ((sampleBuffer.ByteLength & 1) != 0)
throw new Exception("never happens");
int firstPos = Math.Max(0, stride - sampleCount * 2 - ActualOffset * 2);
int lastPos = Math.Min(sampleBuffer.ByteLength >> 1, (finalSampleCount - sampleCount) * 2 - laststride - ActualOffset * 2);
SortErrors();
fixed (byte* bytes = sampleBuffer.Bytes)
fixed (uint* t = Crc32.table)
{
ushort* data = (ushort*)bytes;
for (int pos = firstPos; pos < lastPos; pos++)
{
if (sampleCount * 2 + pos == erroffsorted[nexterroff] && nexterroff < erroffsorted.Length)
data[pos] ^= forneysorted[nexterroff++];
ushort dd = data[pos];
crc = (crc >> 8) ^ t[(byte)(crc ^ dd)];
crc = (crc >> 8) ^ t[(byte)(crc ^ (dd >> 8))];
}
}
sampleCount += sampleBuffer.Length;
}
public unsafe void Close()
{
if (sampleCount != finalSampleCount)
throw new Exception("sampleCount != finalSampleCount");
}
public bool HasErrors
{
get
{
return hasErrors;
}
}
public bool CanRecover
{
get
{
return canRecover;
}
}
public int CorrectableErrors
{
get
{
return correctableErrors;
}
}
public int ActualOffset
{
get
{
return actualOffset;
}
}
public uint CRC
{
get
{
return 0xffffffff ^ Crc32.Combine(0xffffffff, crc, stride * stridecount * 2);
}
}
public void Delete()
{
throw new Exception("unsupported");
}
public int CompressionLevel
{
get { return 0; }
set { }
}
public string Options
{
set
{
if (value == null || value == "") return;
throw new Exception("Unsupported options " + value);
}
}
public AudioPCMConfig PCM
{
get { return AudioPCMConfig.RedBook; }
}
public long BlockSize
{
set { throw new Exception("unsupported"); }
}
public string Path
{
get { throw new Exception("unsupported"); }
}
}
}

View File

@@ -44,6 +44,7 @@
</ItemGroup>
<ItemGroup>
<Compile Include="AccurateRip.cs" />
<Compile Include="CDRepair.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
@@ -55,6 +56,10 @@
<Project>{1DD41038-D885-46C5-8DDE-E0B82F066584}</Project>
<Name>CUETools.CDImage</Name>
</ProjectReference>
<ProjectReference Include="..\CUETools.Parity\CUETools.Parity.csproj">
<Project>{ECEB839C-171B-4535-958F-9899310A0342}</Project>
<Name>CUETools.Parity</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.

View File

@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2.0.7.0")]
[assembly: AssemblyFileVersion("2.0.7.0")]
[assembly: AssemblyVersion("2.0.8.0")]
[assembly: AssemblyFileVersion("2.0.8.0")]

View File

@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2.0.7.0")]
[assembly: AssemblyFileVersion("2.0.7.0")]
[assembly: AssemblyVersion("2.0.8.0")]
[assembly: AssemblyFileVersion("2.0.8.0")]

View File

@@ -55,10 +55,6 @@
<Project>{1DD41038-D885-46C5-8DDE-E0B82F066584}</Project>
<Name>CUETools.CDImage</Name>
</ProjectReference>
<ProjectReference Include="..\CUETools.CDRepair\CUETools.CDRepair.csproj">
<Project>{C4869B37-EBB1-47BB-9406-B1209BEAB84B}</Project>
<Name>CUETools.CDRepair</Name>
</ProjectReference>
<ProjectReference Include="..\CUETools.Codecs\CUETools.Codecs.csproj">
<Project>{6458A13A-30EF-45A9-9D58-E5031B17BEE2}</Project>
<Name>CUETools.Codecs</Name>

View File

@@ -9,7 +9,6 @@ using System.Xml;
using System.Text;
using CUETools.CDImage;
using CUETools.AccurateRip;
using CUETools.CDRepair;
using Krystalware.UploadHelper;
namespace CUETools.CTDB
@@ -370,7 +369,7 @@ namespace CUETools.CTDB
int npar = 8;
foreach (DBEntry entry in entries)
npar = Math.Max(npar, entry.npar);
verify = new CDRepairEncode(length, 10 * 588 * 2, npar, entries.Count > 0, encode, ar);
verify = new CDRepairEncode(ar, 10 * 588 * 2, npar, entries.Count > 0, encode);
}
public int Total

View File

@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2.0.7.0")]
[assembly: AssemblyFileVersion("2.0.7.0")]
[assembly: AssemblyVersion("2.0.8.0")]
[assembly: AssemblyFileVersion("2.0.8.0")]

View File

@@ -97,8 +97,8 @@ namespace CUETools { namespace Codecs { namespace FLAC {
if (!FLAC__stream_decoder_set_metadata_respond (_decoder, FLAC__METADATA_TYPE_VORBIS_COMMENT))
throw gcnew Exception("unable to setup the decoder");
//if (!FLAC__stream_decoder_set_disable_asm(_decoder, disableAsm))
// throw gcnew Exception("unable to setup the decoder");
if (!FLAC__stream_decoder_set_disable_asm(_decoder, true))//disableAsm))
throw gcnew Exception("unable to setup the decoder");
FLAC__StreamDecoderInitStatus st = FLAC__stream_decoder_init_stream(_decoder,
(FLAC__StreamDecoderReadCallback)Marshal::GetFunctionPointerForDelegate(_readDel).ToPointer(),

View File

@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2.0.7.0")]
[assembly: AssemblyFileVersion("2.0.7.0")]
[assembly: AssemblyVersion("2.0.8.0")]
[assembly: AssemblyFileVersion("2.0.8.0")]

View File

@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2.0.7.0")]
[assembly: AssemblyFileVersion("2.0.7.0")]
[assembly: AssemblyVersion("2.0.8.0")]
[assembly: AssemblyFileVersion("2.0.8.0")]

View File

@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2.0.7.0")]
[assembly: AssemblyFileVersion("2.0.7.0")]
[assembly: AssemblyVersion("2.0.8.0")]
[assembly: AssemblyFileVersion("2.0.8.0")]

View File

@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2.0.7.0")]
[assembly: AssemblyFileVersion("2.0.7.0")]
[assembly: AssemblyVersion("2.0.8.0")]
[assembly: AssemblyFileVersion("2.0.8.0")]

View File

@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2.0.7.0")]
[assembly: AssemblyFileVersion("2.0.7.0")]
[assembly: AssemblyVersion("2.0.8.0")]
[assembly: AssemblyFileVersion("2.0.8.0")]

View File

@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2.0.7.0")]
[assembly: AssemblyFileVersion("2.0.7.0")]
[assembly: AssemblyVersion("2.0.8.0")]
[assembly: AssemblyFileVersion("2.0.8.0")]

View File

@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Build Number
// Revision
//
[assembly: AssemblyVersion("2.0.7.0")]
[assembly: AssemblyFileVersion("2.0.7.0")]
[assembly: AssemblyVersion("2.0.8.0")]
[assembly: AssemblyFileVersion("2.0.8.0")]

View File

@@ -76,10 +76,6 @@
<Compile Include="UserDefined.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\CUETools.CDRepair\CUETools.CDRepair.csproj">
<Project>{C4869B37-EBB1-47BB-9406-B1209BEAB84B}</Project>
<Name>CUETools.CDRepair</Name>
</ProjectReference>
<ProjectReference Include="..\CUETools.Codecs\CUETools.Codecs.csproj">
<Project>{6458A13A-30EF-45A9-9D58-E5031B17BEE2}</Project>
<Name>CUETools.Codecs</Name>

View File

@@ -1608,6 +1608,8 @@ string status = processor.Go();
private uint? _minDataTrackLength;
private string _accurateRipId;
private string _eacLog;
private string _defaultLog;
private List<CUEToolsSourceFile> _logFiles;
private string _inputPath, _inputDir;
private string _outputPath;
private string[] _destPaths;
@@ -1796,7 +1798,7 @@ string status = processor.Go();
m_freedb.UserName = "gchudov";
m_freedb.Hostname = "gmail.com";
m_freedb.ClientName = "CUETools";
m_freedb.Version = "2.0.7";
m_freedb.Version = "2.0.8";
m_freedb.SetDefaultSiteAddress("freedb.org");
QueryResult queryResult;
@@ -2087,7 +2089,7 @@ string status = processor.Go();
foreach (string f in _archive.Contents)
_archiveContents.Add(f);
List<CUEToolsSourceFile> logFiles = new List<CUEToolsSourceFile>();
_logFiles = new List<CUEToolsSourceFile>();
List<CUEToolsSourceFile> cueFiles = new List<CUEToolsSourceFile>();
foreach (string s in _archiveContents)
{
@@ -2099,14 +2101,13 @@ string status = processor.Go();
if (Path.GetExtension(s).ToLower() == ".cue")
cueFiles.Add(sourceFile);
else
logFiles.Add(sourceFile);
_logFiles.Add(sourceFile);
}
}
CUEToolsSourceFile selectedCUEFile = ChooseFile(cueFiles, null, true);
if (selectedCUEFile == null || selectedCUEFile.contents == "")
throw new Exception("Input archive doesn't contain a usable cue sheet.");
CUEToolsSourceFile selectedLogFile = ChooseFile(logFiles, Path.GetFileNameWithoutExtension(selectedCUEFile.path), true);
_eacLog = selectedLogFile != null ? selectedLogFile.contents : null;
_defaultLog = Path.GetFileNameWithoutExtension(selectedCUEFile.path);
_archiveCUEpath = Path.GetDirectoryName(selectedCUEFile.path);
string cueText = selectedCUEFile.contents;
if (_config.autoCorrectFilenames)
@@ -2115,6 +2116,8 @@ string status = processor.Go();
cueText = CorrectAudioFilenames(_config, _archiveCUEpath, cueText, false, _archiveContents, out extension);
}
sr = new StringReader(cueText);
if (_logFiles.Count == 1)
_eacLog = _logFiles[0].contents;
}
else if (Path.GetExtension(pathIn).ToLower() == ".cue")
{
@@ -2123,12 +2126,11 @@ string status = processor.Go();
else
sr = new StreamReader(pathIn, CUESheet.Encoding);
List<CUEToolsSourceFile> logFiles = new List<CUEToolsSourceFile>();
_logFiles = new List<CUEToolsSourceFile>();
_defaultLog = Path.GetFileNameWithoutExtension(pathIn);
foreach (string logPath in Directory.GetFiles(_inputDir, "*.log"))
try { logFiles.Add(new CUEToolsSourceFile(logPath, new StreamReader(logPath, CUESheet.Encoding))); }
try { _logFiles.Add(new CUEToolsSourceFile(logPath, new StreamReader(logPath, CUESheet.Encoding))); }
catch { }
CUEToolsSourceFile selectedLogFile = ChooseFile(logFiles, Path.GetFileNameWithoutExtension(pathIn), false);
_eacLog = selectedLogFile != null ? selectedLogFile.contents : null;
}
else
{
@@ -2160,12 +2162,10 @@ string status = processor.Go();
if (cueSheet == null)
throw new Exception("Input file doesn't seem to contain a cue sheet or be part of an album.");
sr = new StringReader(cueSheet);
List<CUEToolsSourceFile> logFiles = new List<CUEToolsSourceFile>();
_logFiles = new List<CUEToolsSourceFile>();
foreach (string logPath in Directory.GetFiles(_inputDir, "*.log"))
try { logFiles.Add(new CUEToolsSourceFile(logPath, new StreamReader(logPath, CUESheet.Encoding))); }
try { _logFiles.Add(new CUEToolsSourceFile(logPath, new StreamReader(logPath, CUESheet.Encoding))); }
catch { }
CUEToolsSourceFile selectedLogFile = ChooseFile(logFiles, null, false);
_eacLog = selectedLogFile != null ? selectedLogFile.contents : null;
}
}
@@ -2527,6 +2527,19 @@ string status = processor.Go();
if (_accurateRipId == null)
_accurateRipId = GetCommonMiscTag("ACCURATERIPID");
if (_eacLog == null && _logFiles != null && _logFiles.Count == 1)
{
CDImageLayout tocFromLog1 = TocFromLog(_logFiles[0].contents);
if (tocFromLog1 != null && tocFromLog1.TOCID == _toc.TOCID)
_eacLog = _logFiles[0].contents;
}
if (_eacLog == null && _logFiles != null)
{
CUEToolsSourceFile selectedLogFile = ChooseFile(_logFiles, _defaultLog, false);
_eacLog = selectedLogFile != null ? selectedLogFile.contents : null;
}
CDImageLayout tocFromLog = _eacLog == null ? null : TocFromLog(_eacLog);
// use pregaps from log
@@ -3576,8 +3589,8 @@ string status = processor.Go();
entry.toc.Pregap != _toc.Pregap ? string.Format("Has pregap length {0}", CDImageLayout.TimeToString(entry.toc.Pregap)) :
entry.toc.AudioLength != _toc.AudioLength ? string.Format("Has audio length {0}", CDImageLayout.TimeToString(entry.toc.AudioLength)) :
((entry.toc.TrackOffsets != _toc.TrackOffsets) ? dataTrackInfo + ", " : "") +
//((!entry.hasErrors) ? "Accurately ripped" :
((!entry.hasErrors) ? string.Format("Accurately ripped, offset {0}", -entry.offset) :
((!entry.hasErrors) ? "Accurately ripped" :
//((!entry.hasErrors) ? string.Format("Accurately ripped, offset {0}", -entry.offset) :
entry.canRecover ? string.Format("Differs in {0} samples @{1}", entry.repair.CorrectableErrors, entry.repair.AffectedSectors) :
(entry.httpStatus == 0 || entry.httpStatus == HttpStatusCode.OK) ? "No match" :
entry.httpStatus.ToString());
@@ -4347,10 +4360,11 @@ string status = processor.Go();
int diskLength = 588 * (int)_toc.AudioLength;
int diskOffset = 0;
if (_useAccurateRip)
_arVerify.Init();
// we init CTDB before AR so that AR gets inited with correct CTDB settings
if (_useCUEToolsDB && !_useCUEToolsDBFix)
_CUEToolsDB.Init(_useCUEToolsDBSibmit, _arVerify);
if (_useAccurateRip)
_arVerify.Init();
ShowProgress(String.Format("{2} track {0:00} ({1:00}%)...", 0, 0, noOutput ? "Verifying" : "Writing"), 0.0, null, null);
@@ -4433,15 +4447,10 @@ string status = processor.Go();
}
copyCount = audioSource.Read(sampleBuffer, copyCount);
if (_useCUEToolsDB)
{
if (_useCUEToolsDBFix)
_CUEToolsDB.SelectedEntry.repair.Write(sampleBuffer);
else
_CUEToolsDB.Verify.Write(sampleBuffer);
}
// we use AR after CTDB, so that we can verify what we fixed
if (_useAccurateRip)
if (_useCUEToolsDB && _useCUEToolsDBFix)
_CUEToolsDB.SelectedEntry.repair.Write(sampleBuffer);
// we use AR after CTDB fix, so that we can verify what we fixed
if (_useAccurateRip || _useCUEToolsDB)
_arVerify.Write(sampleBuffer);
if (!discardOutput)
{
@@ -4508,10 +4517,12 @@ string status = processor.Go();
ApplyWriteOffset();
hdcdDecoder = null;
if (_useAccurateRip)
_arVerify.Init();
// we init CTDB before AR so that AR gets inited with correct CTDB settings
if (_useCUEToolsDB && !_useCUEToolsDBFix)
_CUEToolsDB.Init(_useCUEToolsDBSibmit, _arVerify);
if (_useAccurateRip)
_arVerify.Init();
ShowProgress(String.Format("Verifying ({0:00}%)...", 0), 0.0, null, null);
@@ -4524,7 +4535,7 @@ string status = processor.Go();
int nThreads = 1;// _isCD || !_config.separateDecodingThread || _useCUEToolsDB || _config.detectHDCD ? 1 : Environment.ProcessorCount;
int diskLength = 588 * (int)_toc.AudioLength;
tasks.Add(new CUEToolsVerifyTask(this, 0, diskLength / nThreads, _arVerify, _CUEToolsDB));
tasks.Add(new CUEToolsVerifyTask(this, 0, diskLength / nThreads, _arVerify));
for (int iThread = 1; iThread < nThreads; iThread++)
tasks.Add(new CUEToolsVerifyTask(this, iThread * diskLength / nThreads, (iThread + 1) * diskLength / nThreads));
@@ -5470,7 +5481,7 @@ string status = processor.Go();
}
case "repair":
{
UseCUEToolsDB(false, "CUETools 2.0.7");
UseCUEToolsDB(false, "CUETools 2.0.8");
Action = CUEAction.Verify;
if (CTDB.DBStatus != null)
return CTDB.DBStatus;
@@ -5899,16 +5910,15 @@ string status = processor.Go();
public int start { get; private set; }
public int end { get; private set; }
public AccurateRipVerify ar { get; private set; }
public CUEToolsDB ctdb { get; private set; }
public IAudioDest hdcd { get; private set; }
public CUEToolsVerifyTask(CUESheet cueSheet, int start, int end)
: this(cueSheet, start, end, cueSheet._useAccurateRip ? new AccurateRipVerify(cueSheet.TOC, null) : null, null, null)
: this(cueSheet, start, end, cueSheet._useAccurateRip || cueSheet._useCUEToolsDB ? new AccurateRipVerify(cueSheet.TOC, null) : null, null)
{
}
public CUEToolsVerifyTask(CUESheet cueSheet, int start, int end, AccurateRipVerify ar, CUEToolsDB ctdb)
: this(cueSheet, start, end, ar, ctdb, null)
public CUEToolsVerifyTask(CUESheet cueSheet, int start, int end, AccurateRipVerify ar)
: this(cueSheet, start, end, ar, null)
{
if (cueSheet.Config.detectHDCD && CUEProcessorPlugins.hdcd != null)
{
@@ -5917,7 +5927,7 @@ string status = processor.Go();
}
}
private CUEToolsVerifyTask(CUESheet cueSheet, int start, int end, AccurateRipVerify ar, CUEToolsDB ctdb, IAudioDest hdcd)
private CUEToolsVerifyTask(CUESheet cueSheet, int start, int end, AccurateRipVerify ar, IAudioDest hdcd)
{
this.cueSheet = cueSheet;
this.start = start;
@@ -5927,7 +5937,6 @@ string status = processor.Go();
this.source = new AudioPipe(this.source, 0x10000);
this.source.Position = start;
this.ar = cueSheet._useAccurateRip ? ar : null;
this.ctdb = cueSheet._useCUEToolsDB ? ctdb : null;
this.hdcd = hdcd;
if (this.ar != null)
this.ar.Position = start;
@@ -5961,9 +5970,6 @@ string status = processor.Go();
int copyCount = source.Read(sampleBuffer, Remaining);
if (copyCount == 0)
return 0;
if (ctdb != null) // !_useCUEToolsDBFix
ctdb.Verify.Write(sampleBuffer);
if (ar != null)
ar.Write( sampleBuffer);
if (hdcd != null)

View File

@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2.0.7.0")]
[assembly: AssemblyFileVersion("2.0.7.0")]
[assembly: AssemblyVersion("2.0.8.0")]
[assembly: AssemblyFileVersion("2.0.8.0")]

View File

@@ -89,7 +89,7 @@ namespace CUETools.ConsoleRipper
static void Main(string[] args)
{
Console.SetOut(Console.Error);
Console.WriteLine("CUERipper v2.0.7 Copyright (C) 2008-10 Gregory S. Chudov");
Console.WriteLine("CUERipper v2.0.8 Copyright (C) 2008-10 Gregory S. Chudov");
Console.WriteLine("This is free software under the GNU GPLv3+ license; There is NO WARRANTY, to");
Console.WriteLine("the extent permitted by law. <http://www.gnu.org/licenses/> for details.");

View File

@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2.0.7.0")]
[assembly: AssemblyFileVersion("2.0.7.0")]
[assembly: AssemblyVersion("2.0.8.0")]
[assembly: AssemblyFileVersion("2.0.8.0")]

View File

@@ -1180,7 +1180,7 @@ namespace CUETools.Ripper.SCSI
{
get
{
return "CUERipper v2.0.7 Copyright (C) 2008-10 Gregory S. Chudov";
return "CUERipper v2.0.8 Copyright (C) 2008-10 Gregory S. Chudov";
// ripper.GetName().Name + " " + ripper.GetName().Version;
}
}

View File

@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2.0.7.0")]
[assembly: AssemblyFileVersion("2.0.7.0")]
[assembly: AssemblyVersion("2.0.8.0")]
[assembly: AssemblyFileVersion("2.0.8.0")]

View File

@@ -1,5 +1,4 @@
using System;
using CUETools.CDRepair;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using CUETools.Codecs;
using CUETools.CDImage;
@@ -68,12 +67,11 @@ namespace CUETools.TestParity
wav2[(int)(rnd.NextDouble() * (wav2.Length - 1))] = (byte)(rnd.NextDouble() * 255);
AudioBuffer buff = new AudioBuffer(AudioPCMConfig.RedBook, 0);
CDRepairEncode encode = new CDRepairEncode(finalSampleCount, stride, npar, false, true, ar);
CDRepairEncode encode = new CDRepairEncode(ar, stride, npar, false, true);
buff.Prepare(wav, finalSampleCount);
encode.Write(buff);
encode.Close();
ar.Init();
ar.Write(buff);
ar.Close();
parity = encode.Parity;
crc = encode.CRC;
}
@@ -106,12 +104,11 @@ namespace CUETools.TestParity
public void CDRepairDecodeOriginalTest()
{
AudioBuffer buff = new AudioBuffer(AudioPCMConfig.RedBook, 0);
CDRepairEncode decode = new CDRepairEncode(finalSampleCount, stride, npar, true, false, ar);
CDRepairEncode decode = new CDRepairEncode(ar, stride, npar, true, false);
buff.Prepare(wav, finalSampleCount);
decode.Write(buff);
decode.Close();
ar.Init();
ar.Write(buff);
ar.Close();
int actualOffset;
bool hasErrors;
Assert.IsTrue(decode.FindOffset(npar, parity, 0, crc, out actualOffset, out hasErrors));
@@ -126,12 +123,11 @@ namespace CUETools.TestParity
public void CDRepairDecodeModifiedTest()
{
AudioBuffer buff = new AudioBuffer(AudioPCMConfig.RedBook, 0);
CDRepairEncode decode = new CDRepairEncode(finalSampleCount, stride, npar, true, false, ar);
CDRepairEncode decode = new CDRepairEncode(ar, stride, npar, true, false);
buff.Prepare(wav2, finalSampleCount);
decode.Write(buff);
decode.Close();
ar.Init();
ar.Write(buff);
ar.Close();
int actualOffset;
bool hasErrors;
Assert.IsTrue(decode.FindOffset(npar, parity, 0, crc, out actualOffset, out hasErrors));
@@ -149,13 +145,12 @@ namespace CUETools.TestParity
public void CDRepairDecodePositiveOffsetTest()
{
AudioBuffer buff = new AudioBuffer(AudioPCMConfig.RedBook, 0);
CDRepairEncode decode = new CDRepairEncode(finalSampleCount, stride, npar, true, false, ar);
CDRepairEncode decode = new CDRepairEncode(ar, stride, npar, true, false);
Array.Copy(wav, offset * 4, wav3, 0, (finalSampleCount - offset) * 4);
buff.Prepare(wav3, finalSampleCount);
ar.Init();
ar.Write(buff);
decode.Write(buff);
decode.Close();
ar.Close();
int actualOffset;
bool hasErrors;
Assert.IsTrue(decode.FindOffset(npar, parity, 0, crc, out actualOffset, out hasErrors));
@@ -170,15 +165,13 @@ namespace CUETools.TestParity
public void CDRepairDecodeNegativeOffsetTest()
{
AudioBuffer buff = new AudioBuffer(AudioPCMConfig.RedBook, 0);
CDRepairEncode decode = new CDRepairEncode(finalSampleCount, stride, npar, true, false, ar);
CDRepairEncode decode = new CDRepairEncode(ar, stride, npar, true, false);
ar.Init();
buff.Prepare(new byte[offset * 4], offset);
ar.Write(buff);
decode.Write(buff);
buff.Prepare(wav, finalSampleCount - offset);
ar.Write(buff);
decode.Write(buff);
decode.Close();
ar.Close();
int actualOffset;
bool hasErrors;
Assert.IsTrue(decode.FindOffset(npar, parity, 0, crc, out actualOffset, out hasErrors));
@@ -193,13 +186,12 @@ namespace CUETools.TestParity
public void CDRepairDecodePositiveOffsetErrorsTest()
{
AudioBuffer buff = new AudioBuffer(AudioPCMConfig.RedBook, 0);
CDRepairEncode decode = new CDRepairEncode(finalSampleCount, stride, npar, true, false, ar);
CDRepairEncode decode = new CDRepairEncode(ar, stride, npar, true, false);
Array.Copy(wav2, offset * 4, wav3, 0, (finalSampleCount - offset) * 4);
buff.Prepare(wav3, finalSampleCount);
ar.Init();
ar.Write(buff);
decode.Write(buff);
decode.Close();
ar.Close();
int actualOffset;
bool hasErrors;
Assert.IsTrue(decode.FindOffset(npar, parity, 0, crc, out actualOffset, out hasErrors));
@@ -217,15 +209,13 @@ namespace CUETools.TestParity
public void CDRepairDecodeNegativeOffsetErrorsTest()
{
AudioBuffer buff = new AudioBuffer(AudioPCMConfig.RedBook, 0);
CDRepairEncode decode = new CDRepairEncode(finalSampleCount, stride, npar, true, false, ar);
buff.Prepare(new byte[offset * 4], offset);
CDRepairEncode decode = new CDRepairEncode(ar, stride, npar, true, false);
ar.Init();
buff.Prepare(new byte[offset * 4], offset);
ar.Write(buff);
decode.Write(buff);
buff.Prepare(wav2, finalSampleCount - offset);
ar.Write(buff);
decode.Write(buff);
decode.Close();
ar.Close();
int actualOffset;
bool hasErrors;
Assert.IsTrue(decode.FindOffset(npar, parity, 0, crc, out actualOffset, out hasErrors));

View File

@@ -1,5 +1,4 @@
using System;
using CUETools.CDRepair;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using CUETools.AccurateRip;
using CUETools.CDImage;
@@ -96,12 +95,11 @@ namespace CUETools.TestParity
public void CDRepairEncodeWriteTest()
{
AudioBuffer buff = new AudioBuffer(AudioPCMConfig.RedBook, 0);
CDRepairEncode encode = new CDRepairEncode(finalSampleCount, stride, npar, false, true, ar);
CDRepairEncode encode = new CDRepairEncode(ar, stride, npar, false, true);
buff.Prepare(wav, finalSampleCount);
ar.Init();
ar.Write(buff);
encode.Write(buff);
encode.Close();
ar.Close();
Assert.AreEqual<byte>(8, encode.Parity[0]);
Assert.AreEqual<uint>(2278257733, encode.CRC);
}

View File

@@ -1,6 +1,5 @@
using System;
using CUETools.Codecs;
using CUETools.CDRepair;
using CUETools.AccurateRip;
using CUETools.CDImage;
using Microsoft.VisualStudio.TestTools.UnitTesting;
@@ -32,7 +31,7 @@ namespace CUETools.TestParity
static CDRepairFix fix;
static CDRepairFix fix2;
const int offset = 48;
static AccurateRipVerify ar, ar2;
static AccurateRipVerify ar, ar2, ar3;
static CDImageLayout toc;
/// <summary>
@@ -62,6 +61,7 @@ namespace CUETools.TestParity
toc = new CDImageLayout(1, 1, 1, string.Format("0 {0}", (finalSampleCount / 588).ToString()));
ar = new AccurateRipVerify(toc, null);
ar2 = new AccurateRipVerify(toc, null);
ar3 = new AccurateRipVerify(toc, null);
new Random(2423).NextBytes(wav);
new Random(2423).NextBytes(wav2);
@@ -70,34 +70,32 @@ namespace CUETools.TestParity
wav2[(int)(rnd.NextDouble() * (wav2.Length - 1))] = (byte)(rnd.NextDouble() * 255);
AudioBuffer buff = new AudioBuffer(AudioPCMConfig.RedBook, 0);
CDRepairEncode encode = new CDRepairEncode(finalSampleCount, stride, npar, false, true, ar);
CDRepairEncode encode = new CDRepairEncode(ar, stride, npar, false, true);
buff.Prepare(wav, finalSampleCount);
ar.Init();
ar.Write(buff);
encode.Write(buff);
encode.Close();
ar.Close();
parity = encode.Parity;
crc = encode.CRC;
decode = new CDRepairEncode(finalSampleCount, stride, npar, true, false, ar);
decode = new CDRepairEncode(ar2, stride, npar, true, false);
buff.Prepare(wav2, finalSampleCount);
decode.Write(buff);
decode.Close();
ar2.Init();
ar2.Write(buff);
ar2.Close();
int actualOffset;
bool hasErrors;
decode.FindOffset(npar, parity, 0, crc, out actualOffset, out hasErrors);
fix = decode.VerifyParity(parity, actualOffset);
decode2 = new CDRepairEncode(finalSampleCount, stride, npar, true, false, ar2);
decode2 = new CDRepairEncode(ar3, stride, npar, true, false);
ar3.Init();
buff.Prepare(new byte[offset * 4], offset);
ar2.Init();
ar2.Write(buff);
decode2.Write(buff);
ar3.Write(buff);
buff.Prepare(wav2, finalSampleCount - offset);
ar2.Write(buff);
decode2.Write(buff);
decode2.Close();
ar3.Write(buff);
ar3.Close();
decode2.FindOffset(npar, parity, 0, crc, out actualOffset, out hasErrors);
fix2 = decode2.VerifyParity(parity, actualOffset);
}

View File

@@ -58,10 +58,6 @@
<Project>{1DD41038-D885-46C5-8DDE-E0B82F066584}</Project>
<Name>CUETools.CDImage</Name>
</ProjectReference>
<ProjectReference Include="..\..\CUETools.CDRepair\CUETools.CDRepair.csproj">
<Project>{C4869B37-EBB1-47BB-9406-B1209BEAB84B}</Project>
<Name>CUETools.CDRepair</Name>
</ProjectReference>
<ProjectReference Include="..\..\CUETools.Codecs\CUETools.Codecs.csproj">
<Project>{6458A13A-30EF-45A9-9D58-E5031B17BEE2}</Project>
<Name>CUETools.Codecs</Name>

View File

@@ -149,8 +149,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CUETools.Parity", "..\CUETo
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CUETools.TestParity", "CUETools.TestParity\CUETools.TestParity.csproj", "{6C74652F-1EF4-459E-84F4-99D93D3D17DA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CUETools.CDRepair", "..\CUETools.CDRepair\CUETools.CDRepair.csproj", "{C4869B37-EBB1-47BB-9406-B1209BEAB84B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CUETools.CTDB", "..\CUETools.CTDB\CUETools.CTDB.csproj", "{AA2A9A7E-45FB-4632-AD85-85B0E556F818}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProgressODoom", "..\ProgressODoom\ProgressODoom.csproj", "{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}"
@@ -175,470 +173,672 @@ Global
EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|Mixed Platforms = Debug|Mixed Platforms
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Release|Any CPU = Release|Any CPU
Release|Mixed Platforms = Release|Mixed Platforms
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{EF351583-A9CD-4530-92C3-20AC02136BC2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EF351583-A9CD-4530-92C3-20AC02136BC2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EF351583-A9CD-4530-92C3-20AC02136BC2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{EF351583-A9CD-4530-92C3-20AC02136BC2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{EF351583-A9CD-4530-92C3-20AC02136BC2}.Debug|Win32.ActiveCfg = Debug|Any CPU
{EF351583-A9CD-4530-92C3-20AC02136BC2}.Debug|x64.ActiveCfg = Debug|Any CPU
{EF351583-A9CD-4530-92C3-20AC02136BC2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EF351583-A9CD-4530-92C3-20AC02136BC2}.Release|Any CPU.Build.0 = Release|Any CPU
{EF351583-A9CD-4530-92C3-20AC02136BC2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{EF351583-A9CD-4530-92C3-20AC02136BC2}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{EF351583-A9CD-4530-92C3-20AC02136BC2}.Release|Win32.ActiveCfg = Release|Any CPU
{EF351583-A9CD-4530-92C3-20AC02136BC2}.Release|x64.ActiveCfg = Release|Any CPU
{E70FA90A-7012-4A52-86B5-362B699D1540}.Debug|Any CPU.ActiveCfg = Debug|x64
{E70FA90A-7012-4A52-86B5-362B699D1540}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{E70FA90A-7012-4A52-86B5-362B699D1540}.Debug|Mixed Platforms.Build.0 = Debug|x64
{E70FA90A-7012-4A52-86B5-362B699D1540}.Debug|Win32.ActiveCfg = Debug|Win32
{E70FA90A-7012-4A52-86B5-362B699D1540}.Debug|Win32.Build.0 = Debug|Win32
{E70FA90A-7012-4A52-86B5-362B699D1540}.Debug|x64.ActiveCfg = Debug|x64
{E70FA90A-7012-4A52-86B5-362B699D1540}.Debug|x64.Build.0 = Debug|x64
{E70FA90A-7012-4A52-86B5-362B699D1540}.Release|Any CPU.ActiveCfg = Release|x64
{E70FA90A-7012-4A52-86B5-362B699D1540}.Release|Mixed Platforms.ActiveCfg = Release|x64
{E70FA90A-7012-4A52-86B5-362B699D1540}.Release|Mixed Platforms.Build.0 = Release|x64
{E70FA90A-7012-4A52-86B5-362B699D1540}.Release|Win32.ActiveCfg = Release|Win32
{E70FA90A-7012-4A52-86B5-362B699D1540}.Release|Win32.Build.0 = Release|Win32
{E70FA90A-7012-4A52-86B5-362B699D1540}.Release|x64.ActiveCfg = Release|x64
{E70FA90A-7012-4A52-86B5-362B699D1540}.Release|x64.Build.0 = Release|x64
{9AE965C4-301E-4C01-B90F-297AF341ACC6}.Debug|Any CPU.ActiveCfg = Debug|x64
{9AE965C4-301E-4C01-B90F-297AF341ACC6}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{9AE965C4-301E-4C01-B90F-297AF341ACC6}.Debug|Mixed Platforms.Build.0 = Debug|x64
{9AE965C4-301E-4C01-B90F-297AF341ACC6}.Debug|Win32.ActiveCfg = Debug|Win32
{9AE965C4-301E-4C01-B90F-297AF341ACC6}.Debug|Win32.Build.0 = Debug|Win32
{9AE965C4-301E-4C01-B90F-297AF341ACC6}.Debug|x64.ActiveCfg = Debug|x64
{9AE965C4-301E-4C01-B90F-297AF341ACC6}.Debug|x64.Build.0 = Debug|x64
{9AE965C4-301E-4C01-B90F-297AF341ACC6}.Release|Any CPU.ActiveCfg = Release|x64
{9AE965C4-301E-4C01-B90F-297AF341ACC6}.Release|Mixed Platforms.ActiveCfg = Release|x64
{9AE965C4-301E-4C01-B90F-297AF341ACC6}.Release|Mixed Platforms.Build.0 = Release|x64
{9AE965C4-301E-4C01-B90F-297AF341ACC6}.Release|Win32.ActiveCfg = Release|Win32
{9AE965C4-301E-4C01-B90F-297AF341ACC6}.Release|Win32.Build.0 = Release|Win32
{9AE965C4-301E-4C01-B90F-297AF341ACC6}.Release|x64.ActiveCfg = Release|x64
{9AE965C4-301E-4C01-B90F-297AF341ACC6}.Release|x64.Build.0 = Release|x64
{CC2E74B6-534A-43D8-9F16-AC03FE955000}.Debug|Any CPU.ActiveCfg = Debug|x64
{CC2E74B6-534A-43D8-9F16-AC03FE955000}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{CC2E74B6-534A-43D8-9F16-AC03FE955000}.Debug|Mixed Platforms.Build.0 = Debug|x64
{CC2E74B6-534A-43D8-9F16-AC03FE955000}.Debug|Win32.ActiveCfg = Debug|Win32
{CC2E74B6-534A-43D8-9F16-AC03FE955000}.Debug|Win32.Build.0 = Debug|Win32
{CC2E74B6-534A-43D8-9F16-AC03FE955000}.Debug|x64.ActiveCfg = Debug|x64
{CC2E74B6-534A-43D8-9F16-AC03FE955000}.Debug|x64.Build.0 = Debug|x64
{CC2E74B6-534A-43D8-9F16-AC03FE955000}.Release|Any CPU.ActiveCfg = Release|Win32
{CC2E74B6-534A-43D8-9F16-AC03FE955000}.Release|Mixed Platforms.ActiveCfg = Release|x64
{CC2E74B6-534A-43D8-9F16-AC03FE955000}.Release|Mixed Platforms.Build.0 = Release|x64
{CC2E74B6-534A-43D8-9F16-AC03FE955000}.Release|Win32.ActiveCfg = Release|Win32
{CC2E74B6-534A-43D8-9F16-AC03FE955000}.Release|Win32.Build.0 = Release|Win32
{CC2E74B6-534A-43D8-9F16-AC03FE955000}.Release|x64.ActiveCfg = Release|x64
{CC2E74B6-534A-43D8-9F16-AC03FE955000}.Release|x64.Build.0 = Release|x64
{0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Debug|Any CPU.ActiveCfg = Debug|x64
{0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Debug|Mixed Platforms.Build.0 = Debug|x64
{0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Debug|Win32.ActiveCfg = Debug|Win32
{0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Debug|Win32.Build.0 = Debug|Win32
{0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Debug|x64.ActiveCfg = Debug|x64
{0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Debug|x64.Build.0 = Debug|x64
{0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Release|Any CPU.ActiveCfg = Release|x64
{0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Release|Mixed Platforms.ActiveCfg = Release|x64
{0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Release|Mixed Platforms.Build.0 = Release|x64
{0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Release|Win32.ActiveCfg = Release|Win32
{0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Release|Win32.Build.0 = Release|Win32
{0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Release|x64.ActiveCfg = Release|x64
{0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Release|x64.Build.0 = Release|x64
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|Any CPU.ActiveCfg = Debug|x64
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|Mixed Platforms.Build.0 = Debug|x64
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|Win32.ActiveCfg = Debug|Win32
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|Win32.Build.0 = Debug|Win32
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|x64.ActiveCfg = Debug|x64
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|x64.Build.0 = Debug|x64
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|Any CPU.ActiveCfg = Release|x64
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|Mixed Platforms.ActiveCfg = Release|x64
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|Mixed Platforms.Build.0 = Release|x64
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|Win32.ActiveCfg = Release|Win32
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|Win32.Build.0 = Release|Win32
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|x64.ActiveCfg = Release|x64
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|x64.Build.0 = Release|x64
{5CCCB9CF-0384-458F-BA08-72B73866840F}.Debug|Any CPU.ActiveCfg = Debug|x64
{5CCCB9CF-0384-458F-BA08-72B73866840F}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{5CCCB9CF-0384-458F-BA08-72B73866840F}.Debug|Mixed Platforms.Build.0 = Debug|x64
{5CCCB9CF-0384-458F-BA08-72B73866840F}.Debug|Win32.ActiveCfg = Debug|Win32
{5CCCB9CF-0384-458F-BA08-72B73866840F}.Debug|Win32.Build.0 = Debug|Win32
{5CCCB9CF-0384-458F-BA08-72B73866840F}.Debug|x64.ActiveCfg = Debug|x64
{5CCCB9CF-0384-458F-BA08-72B73866840F}.Debug|x64.Build.0 = Debug|x64
{5CCCB9CF-0384-458F-BA08-72B73866840F}.Release|Any CPU.ActiveCfg = Release|x64
{5CCCB9CF-0384-458F-BA08-72B73866840F}.Release|Mixed Platforms.ActiveCfg = Release|x64
{5CCCB9CF-0384-458F-BA08-72B73866840F}.Release|Mixed Platforms.Build.0 = Release|x64
{5CCCB9CF-0384-458F-BA08-72B73866840F}.Release|Win32.ActiveCfg = Release|Win32
{5CCCB9CF-0384-458F-BA08-72B73866840F}.Release|Win32.Build.0 = Release|Win32
{5CCCB9CF-0384-458F-BA08-72B73866840F}.Release|x64.ActiveCfg = Release|x64
{5CCCB9CF-0384-458F-BA08-72B73866840F}.Release|x64.Build.0 = Release|x64
{A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Debug|Win32.ActiveCfg = Debug|Any CPU
{A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Debug|x64.ActiveCfg = Debug|Any CPU
{A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Release|Any CPU.Build.0 = Release|Any CPU
{A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Release|Win32.ActiveCfg = Release|Any CPU
{A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Release|x64.ActiveCfg = Release|Any CPU
{4911BD82-49EF-4858-8B51-5394F86739A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4911BD82-49EF-4858-8B51-5394F86739A4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4911BD82-49EF-4858-8B51-5394F86739A4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{4911BD82-49EF-4858-8B51-5394F86739A4}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{4911BD82-49EF-4858-8B51-5394F86739A4}.Debug|Win32.ActiveCfg = Debug|Any CPU
{4911BD82-49EF-4858-8B51-5394F86739A4}.Debug|x64.ActiveCfg = Debug|Any CPU
{4911BD82-49EF-4858-8B51-5394F86739A4}.Debug|x64.Build.0 = Debug|Any CPU
{4911BD82-49EF-4858-8B51-5394F86739A4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4911BD82-49EF-4858-8B51-5394F86739A4}.Release|Any CPU.Build.0 = Release|Any CPU
{4911BD82-49EF-4858-8B51-5394F86739A4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{4911BD82-49EF-4858-8B51-5394F86739A4}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{4911BD82-49EF-4858-8B51-5394F86739A4}.Release|Win32.ActiveCfg = Release|Any CPU
{4911BD82-49EF-4858-8B51-5394F86739A4}.Release|x64.ActiveCfg = Release|Any CPU
{32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
{32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Debug|Mixed Platforms.Build.0 = Debug|x86
{32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Debug|Win32.ActiveCfg = Debug|Any CPU
{32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Debug|x64.ActiveCfg = Debug|x64
{32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Debug|x64.Build.0 = Debug|x64
{32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Release|Any CPU.Build.0 = Release|Any CPU
{32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Release|Mixed Platforms.ActiveCfg = Release|x86
{32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Release|Mixed Platforms.Build.0 = Release|x86
{32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Release|Win32.ActiveCfg = Release|Any CPU
{32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Release|x64.ActiveCfg = Release|Any CPU
{6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Debug|Win32.ActiveCfg = Debug|Any CPU
{6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Debug|x64.ActiveCfg = Debug|Any CPU
{6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Debug|x64.Build.0 = Debug|Any CPU
{6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Release|Any CPU.Build.0 = Release|Any CPU
{6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Release|Win32.ActiveCfg = Release|Any CPU
{6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Release|x64.ActiveCfg = Release|Any CPU
{F2EC7193-D5E5-4252-9803-5CEB407E910F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F2EC7193-D5E5-4252-9803-5CEB407E910F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F2EC7193-D5E5-4252-9803-5CEB407E910F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{F2EC7193-D5E5-4252-9803-5CEB407E910F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{F2EC7193-D5E5-4252-9803-5CEB407E910F}.Debug|Win32.ActiveCfg = Debug|Any CPU
{F2EC7193-D5E5-4252-9803-5CEB407E910F}.Debug|x64.ActiveCfg = Debug|Any CPU
{F2EC7193-D5E5-4252-9803-5CEB407E910F}.Debug|x64.Build.0 = Debug|Any CPU
{F2EC7193-D5E5-4252-9803-5CEB407E910F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F2EC7193-D5E5-4252-9803-5CEB407E910F}.Release|Any CPU.Build.0 = Release|Any CPU
{F2EC7193-D5E5-4252-9803-5CEB407E910F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{F2EC7193-D5E5-4252-9803-5CEB407E910F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{F2EC7193-D5E5-4252-9803-5CEB407E910F}.Release|Win32.ActiveCfg = Release|Any CPU
{F2EC7193-D5E5-4252-9803-5CEB407E910F}.Release|x64.ActiveCfg = Release|Any CPU
{8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Debug|Win32.ActiveCfg = Debug|Any CPU
{8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Debug|x64.ActiveCfg = Debug|Any CPU
{8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Release|Win32.ActiveCfg = Release|Any CPU
{8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Release|x64.ActiveCfg = Release|Any CPU
{8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Debug|Win32.ActiveCfg = Debug|Any CPU
{8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Debug|x64.ActiveCfg = Debug|Any CPU
{8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Debug|x64.Build.0 = Debug|Any CPU
{8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Release|Any CPU.Build.0 = Release|Any CPU
{8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Release|Win32.ActiveCfg = Release|Any CPU
{8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Release|x64.ActiveCfg = Release|Any CPU
{A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Debug|Win32.ActiveCfg = Debug|Any CPU
{A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Debug|x64.ActiveCfg = Debug|Any CPU
{A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Release|Any CPU.Build.0 = Release|Any CPU
{A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Release|Win32.ActiveCfg = Release|Any CPU
{A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Release|x64.ActiveCfg = Release|Any CPU
{B75FA7AD-968E-4990-B342-1B4B17C850DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B75FA7AD-968E-4990-B342-1B4B17C850DF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B75FA7AD-968E-4990-B342-1B4B17C850DF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{B75FA7AD-968E-4990-B342-1B4B17C850DF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{B75FA7AD-968E-4990-B342-1B4B17C850DF}.Debug|Win32.ActiveCfg = Debug|Any CPU
{B75FA7AD-968E-4990-B342-1B4B17C850DF}.Debug|x64.ActiveCfg = Debug|Any CPU
{B75FA7AD-968E-4990-B342-1B4B17C850DF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B75FA7AD-968E-4990-B342-1B4B17C850DF}.Release|Any CPU.Build.0 = Release|Any CPU
{B75FA7AD-968E-4990-B342-1B4B17C850DF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{B75FA7AD-968E-4990-B342-1B4B17C850DF}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{B75FA7AD-968E-4990-B342-1B4B17C850DF}.Release|Win32.ActiveCfg = Release|Any CPU
{B75FA7AD-968E-4990-B342-1B4B17C850DF}.Release|x64.ActiveCfg = Release|Any CPU
{F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Debug|Win32.ActiveCfg = Debug|Any CPU
{F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Debug|x64.ActiveCfg = Debug|Any CPU
{F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Release|Any CPU.Build.0 = Release|Any CPU
{F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Release|Win32.ActiveCfg = Release|Any CPU
{F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Release|x64.ActiveCfg = Release|Any CPU
{A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Debug|Win32.ActiveCfg = Debug|Any CPU
{A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Debug|x64.ActiveCfg = Debug|Any CPU
{A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Release|Any CPU.Build.0 = Release|Any CPU
{A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Release|Win32.ActiveCfg = Release|Any CPU
{A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Release|x64.ActiveCfg = Release|Any CPU
{8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Debug|Win32.ActiveCfg = Debug|Any CPU
{8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Debug|x64.ActiveCfg = Debug|Any CPU
{8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Release|Any CPU.Build.0 = Release|Any CPU
{8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Release|Win32.ActiveCfg = Release|Any CPU
{8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Release|x64.ActiveCfg = Release|Any CPU
{9253A314-1821-42BF-B02F-2BF986B1765D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9253A314-1821-42BF-B02F-2BF986B1765D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9253A314-1821-42BF-B02F-2BF986B1765D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{9253A314-1821-42BF-B02F-2BF986B1765D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{9253A314-1821-42BF-B02F-2BF986B1765D}.Debug|Win32.ActiveCfg = Debug|Any CPU
{9253A314-1821-42BF-B02F-2BF986B1765D}.Debug|x64.ActiveCfg = Debug|Any CPU
{9253A314-1821-42BF-B02F-2BF986B1765D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9253A314-1821-42BF-B02F-2BF986B1765D}.Release|Any CPU.Build.0 = Release|Any CPU
{9253A314-1821-42BF-B02F-2BF986B1765D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{9253A314-1821-42BF-B02F-2BF986B1765D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{9253A314-1821-42BF-B02F-2BF986B1765D}.Release|Win32.ActiveCfg = Release|Any CPU
{9253A314-1821-42BF-B02F-2BF986B1765D}.Release|x64.ActiveCfg = Release|Any CPU
{1DD41038-D885-46C5-8DDE-E0B82F066584}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1DD41038-D885-46C5-8DDE-E0B82F066584}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1DD41038-D885-46C5-8DDE-E0B82F066584}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{1DD41038-D885-46C5-8DDE-E0B82F066584}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{1DD41038-D885-46C5-8DDE-E0B82F066584}.Debug|Win32.ActiveCfg = Debug|Any CPU
{1DD41038-D885-46C5-8DDE-E0B82F066584}.Debug|x64.ActiveCfg = Debug|Any CPU
{1DD41038-D885-46C5-8DDE-E0B82F066584}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1DD41038-D885-46C5-8DDE-E0B82F066584}.Release|Any CPU.Build.0 = Release|Any CPU
{1DD41038-D885-46C5-8DDE-E0B82F066584}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{1DD41038-D885-46C5-8DDE-E0B82F066584}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{1DD41038-D885-46C5-8DDE-E0B82F066584}.Release|Win32.ActiveCfg = Release|Any CPU
{1DD41038-D885-46C5-8DDE-E0B82F066584}.Release|x64.ActiveCfg = Release|Any CPU
{5802C7E9-157E-4124-946D-70B5AE48A5A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5802C7E9-157E-4124-946D-70B5AE48A5A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5802C7E9-157E-4124-946D-70B5AE48A5A1}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{5802C7E9-157E-4124-946D-70B5AE48A5A1}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{5802C7E9-157E-4124-946D-70B5AE48A5A1}.Debug|Win32.ActiveCfg = Debug|Any CPU
{5802C7E9-157E-4124-946D-70B5AE48A5A1}.Debug|x64.ActiveCfg = Debug|Any CPU
{5802C7E9-157E-4124-946D-70B5AE48A5A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5802C7E9-157E-4124-946D-70B5AE48A5A1}.Release|Any CPU.Build.0 = Release|Any CPU
{5802C7E9-157E-4124-946D-70B5AE48A5A1}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{5802C7E9-157E-4124-946D-70B5AE48A5A1}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{5802C7E9-157E-4124-946D-70B5AE48A5A1}.Release|Win32.ActiveCfg = Release|Any CPU
{5802C7E9-157E-4124-946D-70B5AE48A5A1}.Release|x64.ActiveCfg = Release|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Debug|Any CPU.Build.0 = Debug|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Debug|Win32.ActiveCfg = Debug|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Debug|x64.ActiveCfg = Debug|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Debug|x64.Build.0 = Debug|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Release|Any CPU.ActiveCfg = Release|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Release|Any CPU.Build.0 = Release|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Release|Win32.ActiveCfg = Release|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Release|x64.ActiveCfg = Release|Any CPU
{39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Debug|Win32.ActiveCfg = Debug|Any CPU
{39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Debug|x64.ActiveCfg = Debug|Any CPU
{39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Release|Any CPU.Build.0 = Release|Any CPU
{39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Release|Win32.ActiveCfg = Release|Any CPU
{39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Release|x64.ActiveCfg = Release|Any CPU
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Debug|Win32.ActiveCfg = Debug|Any CPU
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Debug|x64.ActiveCfg = Debug|Any CPU
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Debug|x64.Build.0 = Debug|Any CPU
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Release|Any CPU.Build.0 = Release|Any CPU
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Release|Win32.ActiveCfg = Release|Any CPU
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Release|x64.ActiveCfg = Release|Any CPU
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Debug|Any CPU.ActiveCfg = Debug|Win32
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Debug|Mixed Platforms.Build.0 = Debug|x64
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Debug|Win32.ActiveCfg = Debug|Win32
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Debug|Win32.Build.0 = Debug|Win32
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Debug|x64.ActiveCfg = Debug|x64
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Debug|x64.Build.0 = Debug|x64
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Release|Any CPU.ActiveCfg = Release|Win32
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Release|Mixed Platforms.ActiveCfg = Release|x64
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Release|Mixed Platforms.Build.0 = Release|x64
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Release|Win32.ActiveCfg = Release|Win32
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Release|Win32.Build.0 = Release|Win32
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Release|x64.ActiveCfg = Release|x64
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Release|x64.Build.0 = Release|x64
{1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Debug|Any CPU.ActiveCfg = Debug|Win32
{1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Debug|Mixed Platforms.Build.0 = Debug|x64
{1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Debug|Win32.ActiveCfg = Debug|Win32
{1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Debug|Win32.Build.0 = Debug|Win32
{1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Debug|x64.ActiveCfg = Debug|x64
{1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Debug|x64.Build.0 = Debug|x64
{1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Release|Any CPU.ActiveCfg = Release|Win32
{1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Release|Mixed Platforms.ActiveCfg = Release|x64
{1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Release|Mixed Platforms.Build.0 = Release|x64
{1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Release|Win32.ActiveCfg = Release|Win32
{1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Release|Win32.Build.0 = Release|Win32
{1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Release|x64.ActiveCfg = Release|x64
{1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Release|x64.Build.0 = Release|x64
{115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Debug|Any CPU.Build.0 = Debug|Any CPU
{115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Debug|Win32.ActiveCfg = Debug|Any CPU
{115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Debug|x64.ActiveCfg = Debug|Any CPU
{115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Release|Any CPU.ActiveCfg = Release|Any CPU
{115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Release|Any CPU.Build.0 = Release|Any CPU
{115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Release|Win32.ActiveCfg = Release|Any CPU
{115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Release|x64.ActiveCfg = Release|Any CPU
{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Debug|Win32.ActiveCfg = Debug|Any CPU
{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Debug|x64.ActiveCfg = Debug|Any CPU
{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Release|Any CPU.Build.0 = Release|Any CPU
{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Release|Win32.ActiveCfg = Release|Any CPU
{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Release|x64.ActiveCfg = Release|Any CPU
{082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Debug|Win32.ActiveCfg = Debug|Any CPU
{082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Debug|x64.ActiveCfg = Debug|Any CPU
{082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Debug|x64.Build.0 = Debug|Any CPU
{082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Release|Any CPU.Build.0 = Release|Any CPU
{082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Release|Win32.ActiveCfg = Release|Any CPU
{082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Release|x64.ActiveCfg = Release|Any CPU
{2379BAAF-A406-4477-BF53-2D6A326C24C8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2379BAAF-A406-4477-BF53-2D6A326C24C8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2379BAAF-A406-4477-BF53-2D6A326C24C8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{2379BAAF-A406-4477-BF53-2D6A326C24C8}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{2379BAAF-A406-4477-BF53-2D6A326C24C8}.Debug|Win32.ActiveCfg = Debug|Any CPU
{2379BAAF-A406-4477-BF53-2D6A326C24C8}.Debug|x64.ActiveCfg = Debug|Any CPU
{2379BAAF-A406-4477-BF53-2D6A326C24C8}.Debug|x64.Build.0 = Debug|Any CPU
{2379BAAF-A406-4477-BF53-2D6A326C24C8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2379BAAF-A406-4477-BF53-2D6A326C24C8}.Release|Any CPU.Build.0 = Release|Any CPU
{2379BAAF-A406-4477-BF53-2D6A326C24C8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{2379BAAF-A406-4477-BF53-2D6A326C24C8}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{2379BAAF-A406-4477-BF53-2D6A326C24C8}.Release|Win32.ActiveCfg = Release|Any CPU
{2379BAAF-A406-4477-BF53-2D6A326C24C8}.Release|x64.ActiveCfg = Release|Any CPU
{8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Debug|Win32.ActiveCfg = Debug|Any CPU
{8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Debug|x64.ActiveCfg = Debug|Any CPU
{8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Release|Any CPU.Build.0 = Release|Any CPU
{8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Release|Win32.ActiveCfg = Release|Any CPU
{8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Release|x64.ActiveCfg = Release|Any CPU
{DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Debug|Win32.ActiveCfg = Debug|Any CPU
{DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Debug|x64.ActiveCfg = Debug|Any CPU
{DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Debug|x64.Build.0 = Debug|Any CPU
{DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Release|Any CPU.Build.0 = Release|Any CPU
{DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Release|Win32.ActiveCfg = Release|Any CPU
{DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Release|x64.ActiveCfg = Release|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Debug|Win32.ActiveCfg = Debug|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Debug|x64.ActiveCfg = Debug|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Debug|x64.Build.0 = Debug|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Release|Any CPU.Build.0 = Release|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Release|Win32.ActiveCfg = Release|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Release|x64.ActiveCfg = Release|Any CPU
{DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Debug|Win32.ActiveCfg = Debug|Any CPU
{DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Debug|x64.ActiveCfg = Debug|Any CPU
{DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Release|Any CPU.Build.0 = Release|Any CPU
{DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Release|Win32.ActiveCfg = Release|Any CPU
{DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Release|x64.ActiveCfg = Release|Any CPU
{FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Debug|Win32.ActiveCfg = Debug|Any CPU
{FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Debug|x64.ActiveCfg = Debug|Any CPU
{FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Release|Any CPU.Build.0 = Release|Any CPU
{FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Release|Win32.ActiveCfg = Release|Any CPU
{FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Release|x64.ActiveCfg = Release|Any CPU
{04945FB2-8410-4F14-8262-2ED18DCDACD6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{04945FB2-8410-4F14-8262-2ED18DCDACD6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{04945FB2-8410-4F14-8262-2ED18DCDACD6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{04945FB2-8410-4F14-8262-2ED18DCDACD6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{04945FB2-8410-4F14-8262-2ED18DCDACD6}.Debug|Win32.ActiveCfg = Debug|Any CPU
{04945FB2-8410-4F14-8262-2ED18DCDACD6}.Debug|x64.ActiveCfg = Debug|Any CPU
{04945FB2-8410-4F14-8262-2ED18DCDACD6}.Debug|x64.Build.0 = Debug|Any CPU
{04945FB2-8410-4F14-8262-2ED18DCDACD6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{04945FB2-8410-4F14-8262-2ED18DCDACD6}.Release|Any CPU.Build.0 = Release|Any CPU
{04945FB2-8410-4F14-8262-2ED18DCDACD6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{04945FB2-8410-4F14-8262-2ED18DCDACD6}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{04945FB2-8410-4F14-8262-2ED18DCDACD6}.Release|Win32.ActiveCfg = Release|Any CPU
{04945FB2-8410-4F14-8262-2ED18DCDACD6}.Release|x64.ActiveCfg = Release|Any CPU
{A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Debug|Win32.ActiveCfg = Debug|Any CPU
{A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Debug|x64.ActiveCfg = Debug|Any CPU
{A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Release|Any CPU.Build.0 = Release|Any CPU
{A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Release|Win32.ActiveCfg = Release|Any CPU
{A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Release|x64.ActiveCfg = Release|Any CPU
{14EE067E-C218-4625-9540-2361AB27C4A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{14EE067E-C218-4625-9540-2361AB27C4A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{14EE067E-C218-4625-9540-2361AB27C4A6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{14EE067E-C218-4625-9540-2361AB27C4A6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{14EE067E-C218-4625-9540-2361AB27C4A6}.Debug|Win32.ActiveCfg = Debug|Any CPU
{14EE067E-C218-4625-9540-2361AB27C4A6}.Debug|x64.ActiveCfg = Debug|Any CPU
{14EE067E-C218-4625-9540-2361AB27C4A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{14EE067E-C218-4625-9540-2361AB27C4A6}.Release|Any CPU.Build.0 = Release|Any CPU
{14EE067E-C218-4625-9540-2361AB27C4A6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{14EE067E-C218-4625-9540-2361AB27C4A6}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{14EE067E-C218-4625-9540-2361AB27C4A6}.Release|Win32.ActiveCfg = Release|Any CPU
{14EE067E-C218-4625-9540-2361AB27C4A6}.Release|x64.ActiveCfg = Release|Any CPU
{EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Debug|Win32.ActiveCfg = Debug|Any CPU
{EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Debug|x64.ActiveCfg = Debug|Any CPU
{EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Release|Any CPU.Build.0 = Release|Any CPU
{EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Release|Win32.ActiveCfg = Release|Any CPU
{EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Release|x64.ActiveCfg = Release|Any CPU
{D2700165-3E77-4B28-928D-551F5FC11954}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D2700165-3E77-4B28-928D-551F5FC11954}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D2700165-3E77-4B28-928D-551F5FC11954}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{D2700165-3E77-4B28-928D-551F5FC11954}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{D2700165-3E77-4B28-928D-551F5FC11954}.Debug|Win32.ActiveCfg = Debug|Any CPU
{D2700165-3E77-4B28-928D-551F5FC11954}.Debug|x64.ActiveCfg = Debug|Any CPU
{D2700165-3E77-4B28-928D-551F5FC11954}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D2700165-3E77-4B28-928D-551F5FC11954}.Release|Any CPU.Build.0 = Release|Any CPU
{D2700165-3E77-4B28-928D-551F5FC11954}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{D2700165-3E77-4B28-928D-551F5FC11954}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{D2700165-3E77-4B28-928D-551F5FC11954}.Release|Win32.ActiveCfg = Release|Any CPU
{D2700165-3E77-4B28-928D-551F5FC11954}.Release|x64.ActiveCfg = Release|Any CPU
{5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Debug|Win32.ActiveCfg = Debug|Any CPU
{5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Debug|x64.ActiveCfg = Debug|Any CPU
{5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Release|Any CPU.Build.0 = Release|Any CPU
{5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Release|Win32.ActiveCfg = Release|Any CPU
{5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Release|x64.ActiveCfg = Release|Any CPU
{ECEB839C-171B-4535-958F-9899310A0342}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{ECEB839C-171B-4535-958F-9899310A0342}.Debug|Any CPU.Build.0 = Debug|Any CPU
{ECEB839C-171B-4535-958F-9899310A0342}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{ECEB839C-171B-4535-958F-9899310A0342}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{ECEB839C-171B-4535-958F-9899310A0342}.Debug|Win32.ActiveCfg = Debug|Any CPU
{ECEB839C-171B-4535-958F-9899310A0342}.Debug|x64.ActiveCfg = Debug|Any CPU
{ECEB839C-171B-4535-958F-9899310A0342}.Release|Any CPU.ActiveCfg = Release|Any CPU
{ECEB839C-171B-4535-958F-9899310A0342}.Release|Any CPU.Build.0 = Release|Any CPU
{ECEB839C-171B-4535-958F-9899310A0342}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{ECEB839C-171B-4535-958F-9899310A0342}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{ECEB839C-171B-4535-958F-9899310A0342}.Release|Win32.ActiveCfg = Release|Any CPU
{ECEB839C-171B-4535-958F-9899310A0342}.Release|x64.ActiveCfg = Release|Any CPU
{6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Debug|Win32.ActiveCfg = Debug|Any CPU
{6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Debug|x64.ActiveCfg = Debug|Any CPU
{6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Release|Any CPU.Build.0 = Release|Any CPU
{6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Release|Win32.ActiveCfg = Release|Any CPU
{6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Release|x64.ActiveCfg = Release|Any CPU
{C4869B37-EBB1-47BB-9406-B1209BEAB84B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C4869B37-EBB1-47BB-9406-B1209BEAB84B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C4869B37-EBB1-47BB-9406-B1209BEAB84B}.Debug|Win32.ActiveCfg = Debug|Any CPU
{C4869B37-EBB1-47BB-9406-B1209BEAB84B}.Debug|x64.ActiveCfg = Debug|Any CPU
{C4869B37-EBB1-47BB-9406-B1209BEAB84B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C4869B37-EBB1-47BB-9406-B1209BEAB84B}.Release|Any CPU.Build.0 = Release|Any CPU
{C4869B37-EBB1-47BB-9406-B1209BEAB84B}.Release|Win32.ActiveCfg = Release|Any CPU
{C4869B37-EBB1-47BB-9406-B1209BEAB84B}.Release|x64.ActiveCfg = Release|Any CPU
{AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Debug|Win32.ActiveCfg = Debug|Any CPU
{AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Debug|x64.ActiveCfg = Debug|Any CPU
{AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Release|Any CPU.Build.0 = Release|Any CPU
{AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Release|Win32.ActiveCfg = Release|Any CPU
{AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Release|x64.ActiveCfg = Release|Any CPU
{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Debug|Win32.ActiveCfg = Debug|Any CPU
{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Debug|x64.ActiveCfg = Debug|Any CPU
{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Release|Any CPU.Build.0 = Release|Any CPU
{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Release|Win32.ActiveCfg = Release|Any CPU
{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Release|x64.ActiveCfg = Release|Any CPU
{04E59836-0C5A-4B9B-8899-848D56911758}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{04E59836-0C5A-4B9B-8899-848D56911758}.Debug|Any CPU.Build.0 = Debug|Any CPU
{04E59836-0C5A-4B9B-8899-848D56911758}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{04E59836-0C5A-4B9B-8899-848D56911758}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{04E59836-0C5A-4B9B-8899-848D56911758}.Debug|Win32.ActiveCfg = Debug|Any CPU
{04E59836-0C5A-4B9B-8899-848D56911758}.Debug|x64.ActiveCfg = Debug|Any CPU
{04E59836-0C5A-4B9B-8899-848D56911758}.Release|Any CPU.ActiveCfg = Release|Any CPU
{04E59836-0C5A-4B9B-8899-848D56911758}.Release|Any CPU.Build.0 = Release|Any CPU
{04E59836-0C5A-4B9B-8899-848D56911758}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{04E59836-0C5A-4B9B-8899-848D56911758}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{04E59836-0C5A-4B9B-8899-848D56911758}.Release|Win32.ActiveCfg = Release|Any CPU
{04E59836-0C5A-4B9B-8899-848D56911758}.Release|x64.ActiveCfg = Release|Any CPU
{FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Debug|Win32.ActiveCfg = Debug|Any CPU
{FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Debug|x64.ActiveCfg = Debug|Any CPU
{FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Release|Any CPU.Build.0 = Release|Any CPU
{FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Release|Win32.ActiveCfg = Release|Any CPU
{FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Release|x64.ActiveCfg = Release|Any CPU
{1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Debug|Win32.ActiveCfg = Debug|Any CPU
{1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Debug|x64.ActiveCfg = Debug|Any CPU
{1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Release|Any CPU.Build.0 = Release|Any CPU
{1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Release|Win32.ActiveCfg = Release|Any CPU
{1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Release|x64.ActiveCfg = Release|Any CPU
{5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Debug|Win32.ActiveCfg = Debug|Any CPU
{5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Debug|x64.ActiveCfg = Debug|Any CPU
{5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Release|Any CPU.Build.0 = Release|Any CPU
{5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Release|Win32.ActiveCfg = Release|Any CPU
{5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Release|x64.ActiveCfg = Release|Any CPU
{AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Debug|Win32.ActiveCfg = Debug|Any CPU
{AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Debug|x64.ActiveCfg = Debug|Any CPU
{AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Release|Any CPU.Build.0 = Release|Any CPU
{AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Release|Win32.ActiveCfg = Release|Any CPU
{AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Release|x64.ActiveCfg = Release|Any CPU
{A6303861-CA06-4C2C-A104-BA9291538F6F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A6303861-CA06-4C2C-A104-BA9291538F6F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A6303861-CA06-4C2C-A104-BA9291538F6F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{A6303861-CA06-4C2C-A104-BA9291538F6F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{A6303861-CA06-4C2C-A104-BA9291538F6F}.Debug|Win32.ActiveCfg = Debug|Any CPU
{A6303861-CA06-4C2C-A104-BA9291538F6F}.Debug|x64.ActiveCfg = Debug|Any CPU
{A6303861-CA06-4C2C-A104-BA9291538F6F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A6303861-CA06-4C2C-A104-BA9291538F6F}.Release|Any CPU.Build.0 = Release|Any CPU
{A6303861-CA06-4C2C-A104-BA9291538F6F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{A6303861-CA06-4C2C-A104-BA9291538F6F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{A6303861-CA06-4C2C-A104-BA9291538F6F}.Release|Win32.ActiveCfg = Release|Any CPU
{A6303861-CA06-4C2C-A104-BA9291538F6F}.Release|x64.ActiveCfg = Release|Any CPU
{8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Debug|Win32.ActiveCfg = Debug|Any CPU
{8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Debug|x64.ActiveCfg = Debug|Any CPU
{8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Release|Any CPU.Build.0 = Release|Any CPU
{8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Release|Win32.ActiveCfg = Release|Any CPU
{8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Release|x64.ActiveCfg = Release|Any CPU
EndGlobalSection

View File

@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Build Number
// Revision
//
[assembly: AssemblyVersion("2.0.7.0")]
[assembly: AssemblyFileVersion("2.0.7.0")]
[assembly: AssemblyVersion("2.0.8.0")]
[assembly: AssemblyFileVersion("2.0.8.0")]

View File

@@ -738,7 +738,7 @@ namespace JDP {
if (useAR || useCUEToolsDB)
cueSheet.DataTrackLengthMSF = txtDataTrackLength.Text;
if (useCUEToolsDB)
cueSheet.UseCUEToolsDB(false, "CUETools 2.0.7");
cueSheet.UseCUEToolsDB(false, "CUETools 2.0.8");
if (useAR)
cueSheet.UseAccurateRip();

View File

@@ -256,7 +256,7 @@
<value>fileSystemTreeView1</value>
</data>
<data name="&gt;&gt;fileSystemTreeView1.Type" xml:space="preserve">
<value>CUEControls.FileSystemTreeView, CUEControls, Version=2.0.7.0, Culture=neutral, PublicKeyToken=null</value>
<value>CUEControls.FileSystemTreeView, CUEControls, Version=2.0.8.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;fileSystemTreeView1.Parent" xml:space="preserve">
<value>grpInput</value>
@@ -1204,7 +1204,7 @@
<value>fileSystemTreeView1</value>
</data>
<data name="&gt;&gt;fileSystemTreeView1.Type" xml:space="preserve">
<value>CUEControls.FileSystemTreeView, CUEControls, Version=2.0.7.0, Culture=neutral, PublicKeyToken=null</value>
<value>CUEControls.FileSystemTreeView, CUEControls, Version=2.0.8.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;fileSystemTreeView1.Parent" xml:space="preserve">
<value>grpInput</value>
@@ -3275,7 +3275,7 @@
<value>700, 538</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>CUETools 2.0.7</value>
<value>CUETools 2.0.8</value>
</data>
<data name="&gt;&gt;toolStripStatusLabel1.Name" xml:space="preserve">
<value>toolStripStatusLabel1</value>