diff --git a/.idea/.idea.DiscImageChef/.idea/contentModel.xml b/.idea/.idea.DiscImageChef/.idea/contentModel.xml index 02005b768..9778e579e 100644 --- a/.idea/.idea.DiscImageChef/.idea/contentModel.xml +++ b/.idea/.idea.DiscImageChef/.idea/contentModel.xml @@ -315,6 +315,8 @@ + + @@ -1798,6 +1800,9 @@ + + + diff --git a/DiscImageChef.CommonTypes/Metadata/DeviceReport.cs b/DiscImageChef.CommonTypes/Metadata/DeviceReport.cs index 32bf4bb09..c82846cce 100644 --- a/DiscImageChef.CommonTypes/Metadata/DeviceReport.cs +++ b/DiscImageChef.CommonTypes/Metadata/DeviceReport.cs @@ -996,6 +996,38 @@ namespace DiscImageChef.CommonTypes.Metadata public string Organization { get; set; } public string Name { get; set; } public string Description { get; set; } + + [JsonIgnore] + [XmlIgnore] + public int BitsPerMmSql + { + get => (int)BitsPerMm; + set => BitsPerMm = (uint)value; + } + + [JsonIgnore] + [XmlIgnore] + public short WidthSql + { + get => (short)Width; + set => Width = (ushort)value; + } + + [JsonIgnore] + [XmlIgnore] + public short TracksSql + { + get => (short)Tracks; + set => Tracks = (ushort)value; + } + + [JsonIgnore] + [XmlIgnore] + public int CapacitySql + { + get => (int)Capacity; + set => Capacity = (uint)value; + } } public class SupportedMedia diff --git a/DiscImageChef.CommonTypes/Metadata/DeviceReportV2.cs b/DiscImageChef.CommonTypes/Metadata/DeviceReportV2.cs index f41102364..ea35d0b33 100644 --- a/DiscImageChef.CommonTypes/Metadata/DeviceReportV2.cs +++ b/DiscImageChef.CommonTypes/Metadata/DeviceReportV2.cs @@ -45,6 +45,7 @@ using DiscImageChef.Decoders.ATA; using DiscImageChef.Decoders.SCSI; using DiscImageChef.Decoders.SCSI.MMC; using Newtonsoft.Json; + // ReSharper disable VirtualMemberNeverOverridden.Global // ReSharper disable VirtualMemberCallInConstructor @@ -117,11 +118,11 @@ namespace DiscImageChef.CommonTypes.Metadata } [JsonIgnore] - public int Id { get; set; } + public int Id { get; set; } public virtual Usb USB { get; set; } public virtual FireWire FireWire { get; set; } public virtual Pcmcia PCMCIA { get; set; } - public bool CompactFlash { get; set; } + public bool CompactFlash { get; set; } public virtual Ata ATA { get; set; } public virtual Ata ATAPI { get; set; } public virtual Scsi SCSI { get; set; } @@ -156,6 +157,20 @@ namespace DiscImageChef.CommonTypes.Metadata public string Product { get; set; } public bool RemovableMedia { get; set; } public byte[] Descriptors { get; set; } + + [JsonIgnore] + public short VendorIDSql + { + get => (short)VendorID; + set => VendorID = (ushort)value; + } + + [JsonIgnore] + public short ProductIDSql + { + get => (short)ProductID; + set => ProductID = (ushort)value; + } } public class FireWire @@ -178,6 +193,20 @@ namespace DiscImageChef.CommonTypes.Metadata public string Manufacturer { get; set; } public string Product { get; set; } public bool RemovableMedia { get; set; } + + [JsonIgnore] + public int VendorIDSql + { + get => (int)VendorID; + set => VendorID = (uint)value; + } + + [JsonIgnore] + public int ProductIDSql + { + get => (int)ProductID; + set => ProductID = (uint)value; + } } public class Ata @@ -373,8 +402,8 @@ namespace DiscImageChef.CommonTypes.Metadata } [JsonIgnore] - public int Id { get; set; } - public byte[] Identify { get; set; } + public int Id { get; set; } + public byte[] Identify { get; set; } public virtual TestedMedia ReadCapabilities { get; set; } public virtual List RemovableMedias { get; set; } } @@ -395,6 +424,25 @@ namespace DiscImageChef.CommonTypes.Metadata public ushort Cylinders { get; set; } public ushort Heads { get; set; } public ushort Sectors { get; set; } + + [JsonIgnore] + public short CylindersSql + { + get => (short)Cylinders; + set => Cylinders = (ushort)value; + } + [JsonIgnore] + public short HeadsSql + { + get => (short)Heads; + set => Heads = (ushort)value; + } + [JsonIgnore] + public short SectorsSql + { + get => (short)Sectors; + set => Sectors = (ushort)value; + } } public class Scsi @@ -509,19 +557,19 @@ namespace DiscImageChef.CommonTypes.Metadata } [JsonIgnore] - public int Id { get; set; } - public byte[] InquiryData { get; set; } + public int Id { get; set; } + public byte[] InquiryData { get; set; } public virtual List EVPDPages { get; set; } - public bool SupportsModeSense6 { get; set; } - public bool SupportsModeSense10 { get; set; } - public bool SupportsModeSubpages { get; set; } + public bool SupportsModeSense6 { get; set; } + public bool SupportsModeSense10 { get; set; } + public bool SupportsModeSubpages { get; set; } public virtual ScsiMode ModeSense { get; set; } public virtual Mmc MultiMediaDevice { get; set; } public virtual TestedMedia ReadCapabilities { get; set; } public virtual List RemovableMedias { get; set; } public virtual Ssc SequentialDevice { get; set; } - public byte[] ModeSense6Data { get; set; } - public byte[] ModeSense10Data { get; set; } + public byte[] ModeSense6Data { get; set; } + public byte[] ModeSense10Data { get; set; } } public class ScsiMode @@ -551,14 +599,14 @@ namespace DiscImageChef.CommonTypes.Metadata } [JsonIgnore] - public int Id { get; set; } - public byte? MediumType { get; set; } - public bool WriteProtected { get; set; } + public int Id { get; set; } + public byte? MediumType { get; set; } + public bool WriteProtected { get; set; } public virtual List BlockDescriptors { get; set; } - public byte? Speed { get; set; } - public byte? BufferedMode { get; set; } - public bool BlankCheckEnabled { get; set; } - public bool DPOandFUA { get; set; } + public byte? Speed { get; set; } + public byte? BufferedMode { get; set; } + public bool BlankCheckEnabled { get; set; } + public bool DPOandFUA { get; set; } public virtual List ModePages { get; set; } } @@ -578,6 +626,19 @@ namespace DiscImageChef.CommonTypes.Metadata public byte Density { get; set; } public ulong? Blocks { get; set; } public uint? BlockLength { get; set; } + + [JsonIgnore] + public long? BlocksSql + { + get => (long?)Blocks; + set => Blocks = (ulong?)value; + } + [JsonIgnore] + public int? BlockLengthSql + { + get => (int?)BlockLength; + set => BlockLength = (uint?)value; + } } public class ScsiPage @@ -674,7 +735,7 @@ namespace DiscImageChef.CommonTypes.Metadata } [JsonIgnore] - public int Id { get; set; } + public int Id { get; set; } public virtual Modes.ModePage_2A ModeSense2A { get; set; } public virtual MmcFeatures Features { get; set; } public virtual List TestedMedia { get; set; } @@ -686,8 +747,8 @@ namespace DiscImageChef.CommonTypes.Metadata public MmcFeatures(mmcFeaturesType features) { - if(features.PhysicalInterfaceStandardSpecified) - PhysicalInterfaceStandard = features.PhysicalInterfaceStandard; + if(features.PhysicalInterfaceStandardSpecified && !features.PhysicalInterfaceStandardNumberSpecified) + PhysicalInterfaceStandardNumber = (uint?)features.PhysicalInterfaceStandard; if(features.PhysicalInterfaceStandardNumberSpecified) PhysicalInterfaceStandardNumber = features.PhysicalInterfaceStandardNumber; @@ -827,131 +888,156 @@ namespace DiscImageChef.CommonTypes.Metadata } [JsonIgnore] - public int Id { get; set; } - public byte? AACSVersion { get; set; } - public byte? AGIDs { get; set; } - public byte? BindingNonceBlocks { get; set; } - public ushort? BlocksPerReadableUnit { get; set; } - public bool BufferUnderrunFreeInDVD { get; set; } - public bool BufferUnderrunFreeInSAO { get; set; } - public bool BufferUnderrunFreeInTAO { get; set; } - public bool CanAudioScan { get; set; } - public bool CanEject { get; set; } - public bool CanEraseSector { get; set; } - public bool CanExpandBDRESpareArea { get; set; } - public bool CanFormat { get; set; } - public bool CanFormatBDREWithoutSpare { get; set; } - public bool CanFormatCert { get; set; } - public bool CanFormatFRF { get; set; } - public bool CanFormatQCert { get; set; } - public bool CanFormatRRM { get; set; } - public bool CanGenerateBindingNonce { get; set; } - public bool CanLoad { get; set; } - public bool CanMuteSeparateChannels { get; set; } - public bool CanOverwriteSAOTrack { get; set; } - public bool CanOverwriteTAOTrack { get; set; } - public bool CanPlayCDAudio { get; set; } - public bool CanPseudoOverwriteBDR { get; set; } - public bool CanReadAllDualR { get; set; } - public bool CanReadAllDualRW { get; set; } - public bool CanReadBD { get; set; } - public bool CanReadBDR { get; set; } - public bool CanReadBDRE1 { get; set; } - public bool CanReadBDRE2 { get; set; } - public bool CanReadBDROM { get; set; } - public bool CanReadBluBCA { get; set; } - public bool CanReadCD { get; set; } - public bool CanReadCDMRW { get; set; } - public bool CanReadCPRM_MKB { get; set; } - public bool CanReadDDCD { get; set; } - public bool CanReadDVD { get; set; } - public bool CanReadDVDPlusMRW { get; set; } - public bool CanReadDVDPlusR { get; set; } - public bool CanReadDVDPlusRDL { get; set; } - public bool CanReadDVDPlusRW { get; set; } - public bool CanReadDVDPlusRWDL { get; set; } - public bool CanReadDriveAACSCertificate { get; set; } - public bool CanReadHDDVD { get; set; } - public bool CanReadHDDVDR { get; set; } - public bool CanReadHDDVDRAM { get; set; } - public bool CanReadLeadInCDText { get; set; } - public bool CanReadOldBDR { get; set; } - public bool CanReadOldBDRE { get; set; } - public bool CanReadOldBDROM { get; set; } - public bool CanReadSpareAreaInformation { get; set; } - public bool CanReportDriveSerial { get; set; } - public bool CanReportMediaSerial { get; set; } - public bool CanTestWriteDDCDR { get; set; } - public bool CanTestWriteDVD { get; set; } - public bool CanTestWriteInSAO { get; set; } - public bool CanTestWriteInTAO { get; set; } - public bool CanUpgradeFirmware { get; set; } - public bool CanWriteBD { get; set; } - public bool CanWriteBDR { get; set; } - public bool CanWriteBDRE1 { get; set; } - public bool CanWriteBDRE2 { get; set; } - public bool CanWriteBusEncryptedBlocks { get; set; } - public bool CanWriteCDMRW { get; set; } - public bool CanWriteCDRW { get; set; } - public bool CanWriteCDRWCAV { get; set; } - public bool CanWriteCDSAO { get; set; } - public bool CanWriteCDTAO { get; set; } - public bool CanWriteCSSManagedDVD { get; set; } - public bool CanWriteDDCDR { get; set; } - public bool CanWriteDDCDRW { get; set; } - public bool CanWriteDVDPlusMRW { get; set; } - public bool CanWriteDVDPlusR { get; set; } - public bool CanWriteDVDPlusRDL { get; set; } - public bool CanWriteDVDPlusRW { get; set; } - public bool CanWriteDVDPlusRWDL { get; set; } - public bool CanWriteDVDR { get; set; } - public bool CanWriteDVDRDL { get; set; } - public bool CanWriteDVDRW { get; set; } - public bool CanWriteHDDVDR { get; set; } - public bool CanWriteHDDVDRAM { get; set; } - public bool CanWriteOldBDR { get; set; } - public bool CanWriteOldBDRE { get; set; } - public bool CanWritePackedSubchannelInTAO { get; set; } - public bool CanWriteRWSubchannelInSAO { get; set; } - public bool CanWriteRWSubchannelInTAO { get; set; } - public bool CanWriteRaw { get; set; } - public bool CanWriteRawMultiSession { get; set; } - public bool CanWriteRawSubchannelInTAO { get; set; } - public bool ChangerIsSideChangeCapable { get; set; } - public byte ChangerSlots { get; set; } - public bool ChangerSupportsDiscPresent { get; set; } - public byte? CPRMVersion { get; set; } - public byte? CSSVersion { get; set; } - public bool DBML { get; set; } - public bool DVDMultiRead { get; set; } - public bool EmbeddedChanger { get; set; } - public bool ErrorRecoveryPage { get; set; } - public virtual DateTime? FirmwareDate { get; set; } - public byte? LoadingMechanismType { get; set; } - public bool Locked { get; set; } - public uint? LogicalBlockSize { get; set; } - public bool MultiRead { get; set; } - public virtual PhysicalInterfaces? PhysicalInterfaceStandard { get; set; } - public uint? PhysicalInterfaceStandardNumber { get; set; } - public bool PreventJumper { get; set; } - public bool SupportsAACS { get; set; } - public bool SupportsBusEncryption { get; set; } - public bool SupportsC2 { get; set; } - public bool SupportsCPRM { get; set; } - public bool SupportsCSS { get; set; } - public bool SupportsDAP { get; set; } - public bool SupportsDeviceBusyEvent { get; set; } - public bool SupportsHybridDiscs { get; set; } - public bool SupportsModePage1Ch { get; set; } - public bool SupportsOSSC { get; set; } - public bool SupportsPWP { get; set; } - public bool SupportsSWPP { get; set; } - public bool SupportsSecurDisc { get; set; } - public bool SupportsSeparateVolume { get; set; } - public bool SupportsVCPS { get; set; } - public bool SupportsWriteInhibitDCB { get; set; } - public bool SupportsWriteProtectPAC { get; set; } - public ushort? VolumeLevels { get; set; } + public int Id { get; set; } + public byte? AACSVersion { get; set; } + public byte? AGIDs { get; set; } + public byte? BindingNonceBlocks { get; set; } + public ushort? BlocksPerReadableUnit { get; set; } + public bool BufferUnderrunFreeInDVD { get; set; } + public bool BufferUnderrunFreeInSAO { get; set; } + public bool BufferUnderrunFreeInTAO { get; set; } + public bool CanAudioScan { get; set; } + public bool CanEject { get; set; } + public bool CanEraseSector { get; set; } + public bool CanExpandBDRESpareArea { get; set; } + public bool CanFormat { get; set; } + public bool CanFormatBDREWithoutSpare { get; set; } + public bool CanFormatCert { get; set; } + public bool CanFormatFRF { get; set; } + public bool CanFormatQCert { get; set; } + public bool CanFormatRRM { get; set; } + public bool CanGenerateBindingNonce { get; set; } + public bool CanLoad { get; set; } + public bool CanMuteSeparateChannels { get; set; } + public bool CanOverwriteSAOTrack { get; set; } + public bool CanOverwriteTAOTrack { get; set; } + public bool CanPlayCDAudio { get; set; } + public bool CanPseudoOverwriteBDR { get; set; } + public bool CanReadAllDualR { get; set; } + public bool CanReadAllDualRW { get; set; } + public bool CanReadBD { get; set; } + public bool CanReadBDR { get; set; } + public bool CanReadBDRE1 { get; set; } + public bool CanReadBDRE2 { get; set; } + public bool CanReadBDROM { get; set; } + public bool CanReadBluBCA { get; set; } + public bool CanReadCD { get; set; } + public bool CanReadCDMRW { get; set; } + public bool CanReadCPRM_MKB { get; set; } + public bool CanReadDDCD { get; set; } + public bool CanReadDVD { get; set; } + public bool CanReadDVDPlusMRW { get; set; } + public bool CanReadDVDPlusR { get; set; } + public bool CanReadDVDPlusRDL { get; set; } + public bool CanReadDVDPlusRW { get; set; } + public bool CanReadDVDPlusRWDL { get; set; } + public bool CanReadDriveAACSCertificate { get; set; } + public bool CanReadHDDVD { get; set; } + public bool CanReadHDDVDR { get; set; } + public bool CanReadHDDVDRAM { get; set; } + public bool CanReadLeadInCDText { get; set; } + public bool CanReadOldBDR { get; set; } + public bool CanReadOldBDRE { get; set; } + public bool CanReadOldBDROM { get; set; } + public bool CanReadSpareAreaInformation { get; set; } + public bool CanReportDriveSerial { get; set; } + public bool CanReportMediaSerial { get; set; } + public bool CanTestWriteDDCDR { get; set; } + public bool CanTestWriteDVD { get; set; } + public bool CanTestWriteInSAO { get; set; } + public bool CanTestWriteInTAO { get; set; } + public bool CanUpgradeFirmware { get; set; } + public bool CanWriteBD { get; set; } + public bool CanWriteBDR { get; set; } + public bool CanWriteBDRE1 { get; set; } + public bool CanWriteBDRE2 { get; set; } + public bool CanWriteBusEncryptedBlocks { get; set; } + public bool CanWriteCDMRW { get; set; } + public bool CanWriteCDRW { get; set; } + public bool CanWriteCDRWCAV { get; set; } + public bool CanWriteCDSAO { get; set; } + public bool CanWriteCDTAO { get; set; } + public bool CanWriteCSSManagedDVD { get; set; } + public bool CanWriteDDCDR { get; set; } + public bool CanWriteDDCDRW { get; set; } + public bool CanWriteDVDPlusMRW { get; set; } + public bool CanWriteDVDPlusR { get; set; } + public bool CanWriteDVDPlusRDL { get; set; } + public bool CanWriteDVDPlusRW { get; set; } + public bool CanWriteDVDPlusRWDL { get; set; } + public bool CanWriteDVDR { get; set; } + public bool CanWriteDVDRDL { get; set; } + public bool CanWriteDVDRW { get; set; } + public bool CanWriteHDDVDR { get; set; } + public bool CanWriteHDDVDRAM { get; set; } + public bool CanWriteOldBDR { get; set; } + public bool CanWriteOldBDRE { get; set; } + public bool CanWritePackedSubchannelInTAO { get; set; } + public bool CanWriteRWSubchannelInSAO { get; set; } + public bool CanWriteRWSubchannelInTAO { get; set; } + public bool CanWriteRaw { get; set; } + public bool CanWriteRawMultiSession { get; set; } + public bool CanWriteRawSubchannelInTAO { get; set; } + public bool ChangerIsSideChangeCapable { get; set; } + public byte ChangerSlots { get; set; } + public bool ChangerSupportsDiscPresent { get; set; } + public byte? CPRMVersion { get; set; } + public byte? CSSVersion { get; set; } + public bool DBML { get; set; } + public bool DVDMultiRead { get; set; } + public bool EmbeddedChanger { get; set; } + public bool ErrorRecoveryPage { get; set; } + public DateTime? FirmwareDate { get; set; } + public byte? LoadingMechanismType { get; set; } + public bool Locked { get; set; } + public uint? LogicalBlockSize { get; set; } + public bool MultiRead { get; set; } + public PhysicalInterfaces? PhysicalInterfaceStandard => + (PhysicalInterfaces?)PhysicalInterfaceStandardNumber; + public uint? PhysicalInterfaceStandardNumber { get; set; } + public bool PreventJumper { get; set; } + public bool SupportsAACS { get; set; } + public bool SupportsBusEncryption { get; set; } + public bool SupportsC2 { get; set; } + public bool SupportsCPRM { get; set; } + public bool SupportsCSS { get; set; } + public bool SupportsDAP { get; set; } + public bool SupportsDeviceBusyEvent { get; set; } + public bool SupportsHybridDiscs { get; set; } + public bool SupportsModePage1Ch { get; set; } + public bool SupportsOSSC { get; set; } + public bool SupportsPWP { get; set; } + public bool SupportsSWPP { get; set; } + public bool SupportsSecurDisc { get; set; } + public bool SupportsSeparateVolume { get; set; } + public bool SupportsVCPS { get; set; } + public bool SupportsWriteInhibitDCB { get; set; } + public bool SupportsWriteProtectPAC { get; set; } + public ushort? VolumeLevels { get; set; } + [JsonIgnore] + public short? BlocksPerReadableUnitSql + { + get => (short?)BlocksPerReadableUnit; + set => BlocksPerReadableUnit = (ushort?)value; + } + [JsonIgnore] + public int? LogicalBlockSizeSql + { + get => (int?)LogicalBlockSize; + set => LogicalBlockSize = (uint?)value; + } + [JsonIgnore] + public int? PhysicalInterfaceStandardNumberSql + { + get => (int?)PhysicalInterfaceStandardNumber; + set => PhysicalInterfaceStandardNumber = (uint?)value; + } + [JsonIgnore] + public short? VolumeLevelsSql + { + get => (short?)VolumeLevels; + set => VolumeLevels = (ushort?)value; + } } public class TestedMedia @@ -1205,14 +1291,14 @@ namespace DiscImageChef.CommonTypes.Metadata public virtual Chs CHS { get; set; } public virtual Chs CurrentCHS { get; set; } - public uint? LBASectors { get; set; } - public ulong? LBA48Sectors { get; set; } - public ushort? LogicalAlignment { get; set; } - public ushort? NominalRotationRate { get; set; } - public uint? PhysicalBlockSize { get; set; } - public bool? SolidStateDevice { get; set; } - public ushort? UnformattedBPT { get; set; } - public ushort? UnformattedBPS { get; set; } + public uint? LBASectors { get; set; } + public ulong? LBA48Sectors { get; set; } + public ushort? LogicalAlignment { get; set; } + public ushort? NominalRotationRate { get; set; } + public uint? PhysicalBlockSize { get; set; } + public bool? SolidStateDevice { get; set; } + public ushort? UnformattedBPT { get; set; } + public ushort? UnformattedBPS { get; set; } public bool? SupportsReadDmaLba { get; set; } public bool? SupportsReadDmaRetryLba { get; set; } @@ -1231,6 +1317,67 @@ namespace DiscImageChef.CommonTypes.Metadata public bool? SupportsReadSectors { get; set; } public bool? SupportsReadLongRetry { get; set; } public bool? SupportsSeek { get; set; } + + [JsonIgnore] + public long? BlocksSql + { + get => (long?)Blocks; + set => Blocks = (ulong?)value; + } + [JsonIgnore] + public int? BlockSizeSql + { + get => (int?)BlockSize; + set => BlockSize = (uint?)value; + } + [JsonIgnore] + public int? LongBlockSizeSql + { + get => (int?)LongBlockSize; + set => LongBlockSize = (uint?)value; + } + [JsonIgnore] + public int? LBASectorsSql + { + get => (int?)LBASectors; + set => LBASectors = (uint?)value; + } + [JsonIgnore] + public long? LBA48SectorsSql + { + get => (long?)LBA48Sectors; + set => LBA48Sectors = (ulong?)value; + } + [JsonIgnore] + public short? LogicalAlignmentSql + { + get => (short?)LogicalAlignment; + set => LogicalAlignment = (ushort?)value; + } + [JsonIgnore] + public short? NominalRotationRateSql + { + get => (short?)NominalRotationRate; + set => NominalRotationRate = (ushort?)value; + } + [JsonIgnore] + public int? PhysicalBlockSizeSql + { + get => (int?)PhysicalBlockSize; + set => PhysicalBlockSize = (uint?)value; + } + [JsonIgnore] + public short? UnformattedBPTSql + { + get => (short?)UnformattedBPT; + set => UnformattedBPT = (ushort?)value; + } + [JsonIgnore] + public short? UnformattedBPSSql + { + get => (short?)UnformattedBPS; + set => UnformattedBPS = (ushort?)value; + } } public class Ssc @@ -1268,6 +1415,18 @@ namespace DiscImageChef.CommonTypes.Metadata public virtual List SupportedDensities { get; set; } public virtual List SupportedMediaTypes { get; set; } public virtual List TestedMedia { get; set; } + [JsonIgnore] + public int? MaxBlockLengthSql + { + get => (int?)MaxBlockLength; + set => MaxBlockLength = (uint?)value; + } + [JsonIgnore] + public int? MinBlockLengthSql + { + get => (int?)MinBlockLength; + set => MinBlockLength = (uint?)value; + } } public class TestedSequentialMedia @@ -1298,14 +1457,14 @@ namespace DiscImageChef.CommonTypes.Metadata } [JsonIgnore] - public int Id { get; set; } - public bool? CanReadMediaSerial { get; set; } - public byte? Density { get; set; } - public string Manufacturer { get; set; } - public bool MediaIsRecognized { get; set; } - public byte? MediumType { get; set; } - public string MediumTypeName { get; set; } - public string Model { get; set; } + public int Id { get; set; } + public bool? CanReadMediaSerial { get; set; } + public byte? Density { get; set; } + public string Manufacturer { get; set; } + public bool MediaIsRecognized { get; set; } + public byte? MediumType { get; set; } + public string MediumTypeName { get; set; } + public string Model { get; set; } public virtual List SupportedDensities { get; set; } public virtual List SupportedMediaTypes { get; set; } @@ -1338,6 +1497,18 @@ namespace DiscImageChef.CommonTypes.Metadata public ushort? CardCode { get; set; } public string Manufacturer { get; set; } public string ProductName { get; set; } + [JsonIgnore] + public short? ManufacturerCodeSql + { + get => (short?)ManufacturerCode; + set => ManufacturerCode = (ushort?)value; + } + [JsonIgnore] + public short? CardCodeSql + { + get => (short?)CardCode; + set => CardCode = (ushort?)value; + } } public class MmcSd @@ -1381,14 +1552,26 @@ namespace DiscImageChef.CommonTypes.Metadata } [JsonIgnore] - public int Id { get; set; } - public byte MediumType { get; set; } + public int Id { get; set; } + public byte MediumType { get; set; } public virtual List DensityCodes { get; set; } - public ushort Width { get; set; } - public ushort Length { get; set; } - public string Organization { get; set; } - public string Name { get; set; } - public string Description { get; set; } + public ushort Width { get; set; } + public ushort Length { get; set; } + public string Organization { get; set; } + public string Name { get; set; } + public string Description { get; set; } + [JsonIgnore] + public short WidthSql + { + get => (short)Width; + set => Width = (ushort)value; + } + [JsonIgnore] + public short LengthSql + { + get => (short)Length; + set => Length = (ushort)value; + } } public class DensityCode diff --git a/DiscImageChef.Core/Devices/Report/MMC.cs b/DiscImageChef.Core/Devices/Report/MMC.cs index 7dc143dbd..68fa74a88 100644 --- a/DiscImageChef.Core/Devices/Report/MMC.cs +++ b/DiscImageChef.Core/Devices/Report/MMC.cs @@ -61,12 +61,7 @@ namespace DiscImageChef.Core.Devices.Report Feature_0001? ftr0001 = Features.Decode_0001(desc.Data); if(ftr0001.HasValue) { - report.PhysicalInterfaceStandard = ftr0001.Value.PhysicalInterfaceStandard; - if((uint)ftr0001.Value.PhysicalInterfaceStandard > 0x8) - { - report.PhysicalInterfaceStandardNumber = (uint)ftr0001.Value.PhysicalInterfaceStandard; - report.PhysicalInterfaceStandard = PhysicalInterfaces.Unspecified; - } + report.PhysicalInterfaceStandardNumber = (uint)ftr0001.Value.PhysicalInterfaceStandard; report.SupportsDeviceBusyEvent = ftr0001.Value.DBE; } diff --git a/DiscImageChef.Database/DiscImageChef.Database.csproj b/DiscImageChef.Database/DiscImageChef.Database.csproj index faa6f1e87..1480af5f6 100644 --- a/DiscImageChef.Database/DiscImageChef.Database.csproj +++ b/DiscImageChef.Database/DiscImageChef.Database.csproj @@ -76,6 +76,8 @@ + + diff --git a/DiscImageChef.Database/Migrations/20181126222301_DeviceReportV2.Designer.cs b/DiscImageChef.Database/Migrations/20181126222301_DeviceReportV2.Designer.cs index 9f78a2b5d..2f3e18bf7 100644 --- a/DiscImageChef.Database/Migrations/20181126222301_DeviceReportV2.Designer.cs +++ b/DiscImageChef.Database/Migrations/20181126222301_DeviceReportV2.Designer.cs @@ -382,8 +382,6 @@ namespace DiscImageChef.Database.Migrations b.Property("MultiRead"); - b.Property("PhysicalInterfaceStandard"); - b.Property("PhysicalInterfaceStandardNumber"); b.Property("PreventJumper"); diff --git a/DiscImageChef.Database/Migrations/20181126222301_DeviceReportV2.cs b/DiscImageChef.Database/Migrations/20181126222301_DeviceReportV2.cs index f4b2c5df0..53933fcf8 100644 --- a/DiscImageChef.Database/Migrations/20181126222301_DeviceReportV2.cs +++ b/DiscImageChef.Database/Migrations/20181126222301_DeviceReportV2.cs @@ -138,7 +138,6 @@ namespace DiscImageChef.Database.Migrations Locked = table.Column(nullable: false), LogicalBlockSize = table.Column(nullable: true), MultiRead = table.Column(nullable: false), - PhysicalInterfaceStandard = table.Column(nullable: true), PhysicalInterfaceStandardNumber = table.Column(nullable: true), PreventJumper = table.Column(nullable: false), SupportsAACS = table.Column(nullable: false), diff --git a/DiscImageChef.Database/Migrations/20181127001622_AddDeviceBasicFields.Designer.cs b/DiscImageChef.Database/Migrations/20181127001622_AddDeviceBasicFields.Designer.cs index 4cc894a8b..5f340e68b 100644 --- a/DiscImageChef.Database/Migrations/20181127001622_AddDeviceBasicFields.Designer.cs +++ b/DiscImageChef.Database/Migrations/20181127001622_AddDeviceBasicFields.Designer.cs @@ -390,8 +390,6 @@ namespace DiscImageChef.Database.Migrations b.Property("MultiRead"); - b.Property("PhysicalInterfaceStandard"); - b.Property("PhysicalInterfaceStandardNumber"); b.Property("PreventJumper"); diff --git a/DiscImageChef.Database/Migrations/20181127013131_CorrectReportsDbSet.Designer.cs b/DiscImageChef.Database/Migrations/20181127013131_CorrectReportsDbSet.Designer.cs index 9060e68f3..e8a0b8df0 100644 --- a/DiscImageChef.Database/Migrations/20181127013131_CorrectReportsDbSet.Designer.cs +++ b/DiscImageChef.Database/Migrations/20181127013131_CorrectReportsDbSet.Designer.cs @@ -333,8 +333,6 @@ namespace DiscImageChef.Database.Migrations b.Property("MultiRead"); - b.Property("PhysicalInterfaceStandard"); - b.Property("PhysicalInterfaceStandardNumber"); b.Property("PreventJumper"); diff --git a/DiscImageChef.Database/Migrations/20181221015906_NameValueStatistics.Designer.cs b/DiscImageChef.Database/Migrations/20181221015906_NameValueStatistics.Designer.cs index 70a3c6270..407284b7d 100644 --- a/DiscImageChef.Database/Migrations/20181221015906_NameValueStatistics.Designer.cs +++ b/DiscImageChef.Database/Migrations/20181221015906_NameValueStatistics.Designer.cs @@ -333,8 +333,6 @@ namespace DiscImageChef.Database.Migrations b.Property("MultiRead"); - b.Property("PhysicalInterfaceStandard"); - b.Property("PhysicalInterfaceStandardNumber"); b.Property("PreventJumper"); diff --git a/DiscImageChef.Database/Migrations/20181221032605_MediaStatistics.Designer.cs b/DiscImageChef.Database/Migrations/20181221032605_MediaStatistics.Designer.cs index 6217052aa..ebc25f1b6 100644 --- a/DiscImageChef.Database/Migrations/20181221032605_MediaStatistics.Designer.cs +++ b/DiscImageChef.Database/Migrations/20181221032605_MediaStatistics.Designer.cs @@ -333,8 +333,6 @@ namespace DiscImageChef.Database.Migrations b.Property("MultiRead"); - b.Property("PhysicalInterfaceStandard"); - b.Property("PhysicalInterfaceStandardNumber"); b.Property("PreventJumper"); diff --git a/DiscImageChef.Database/Migrations/20181221034941_SeenDevicesStatistics.Designer.cs b/DiscImageChef.Database/Migrations/20181221034941_SeenDevicesStatistics.Designer.cs index 30669c9a3..90ff6be26 100644 --- a/DiscImageChef.Database/Migrations/20181221034941_SeenDevicesStatistics.Designer.cs +++ b/DiscImageChef.Database/Migrations/20181221034941_SeenDevicesStatistics.Designer.cs @@ -333,8 +333,6 @@ namespace DiscImageChef.Database.Migrations b.Property("MultiRead"); - b.Property("PhysicalInterfaceStandard"); - b.Property("PhysicalInterfaceStandardNumber"); b.Property("PreventJumper"); diff --git a/DiscImageChef.Database/Migrations/20181221040408_OperatingSystemStatistics.Designer.cs b/DiscImageChef.Database/Migrations/20181221040408_OperatingSystemStatistics.Designer.cs index 494e80b47..c08724b32 100644 --- a/DiscImageChef.Database/Migrations/20181221040408_OperatingSystemStatistics.Designer.cs +++ b/DiscImageChef.Database/Migrations/20181221040408_OperatingSystemStatistics.Designer.cs @@ -333,8 +333,6 @@ namespace DiscImageChef.Database.Migrations b.Property("MultiRead"); - b.Property("PhysicalInterfaceStandard"); - b.Property("PhysicalInterfaceStandardNumber"); b.Property("PreventJumper"); diff --git a/DiscImageChef.Database/Migrations/20181221041242_VersionStatistics.Designer.cs b/DiscImageChef.Database/Migrations/20181221041242_VersionStatistics.Designer.cs index d79117494..a17398eac 100644 --- a/DiscImageChef.Database/Migrations/20181221041242_VersionStatistics.Designer.cs +++ b/DiscImageChef.Database/Migrations/20181221041242_VersionStatistics.Designer.cs @@ -333,8 +333,6 @@ namespace DiscImageChef.Database.Migrations b.Property("MultiRead"); - b.Property("PhysicalInterfaceStandard"); - b.Property("PhysicalInterfaceStandardNumber"); b.Property("PreventJumper"); diff --git a/DiscImageChef.Database/Migrations/20181221125353_AddStatsCounters.Designer.cs b/DiscImageChef.Database/Migrations/20181221125353_AddStatsCounters.Designer.cs index 7d37fc89d..98104b59f 100644 --- a/DiscImageChef.Database/Migrations/20181221125353_AddStatsCounters.Designer.cs +++ b/DiscImageChef.Database/Migrations/20181221125353_AddStatsCounters.Designer.cs @@ -333,8 +333,6 @@ namespace DiscImageChef.Database.Migrations b.Property("MultiRead"); - b.Property("PhysicalInterfaceStandard"); - b.Property("PhysicalInterfaceStandardNumber"); b.Property("PreventJumper"); diff --git a/DiscImageChef.Database/Migrations/20181223183913_FixUnsignedFields.Designer.cs b/DiscImageChef.Database/Migrations/20181223183913_FixUnsignedFields.Designer.cs new file mode 100644 index 000000000..5fd035e0a --- /dev/null +++ b/DiscImageChef.Database/Migrations/20181223183913_FixUnsignedFields.Designer.cs @@ -0,0 +1,1475 @@ +// +using System; +using DiscImageChef.Database; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +namespace DiscImageChef.Database.Migrations +{ + [DbContext(typeof(DicContext))] + [Migration("20181223183913_FixUnsignedFields")] + partial class FixUnsignedFields + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "2.1.4-rtm-31024"); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Ata", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Identify"); + + b.Property("ReadCapabilitiesId"); + + b.HasKey("Id"); + + b.HasIndex("ReadCapabilitiesId"); + + b.ToTable("Ata"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.BlockDescriptor", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BlockLength"); + + b.Property("BlockLengthSql"); + + b.Property("Blocks"); + + b.Property("BlocksSql"); + + b.Property("Density"); + + b.Property("ScsiModeId"); + + b.HasKey("Id"); + + b.HasIndex("ScsiModeId"); + + b.ToTable("BlockDescriptor"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Chs", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Cylinders"); + + b.Property("CylindersSql"); + + b.Property("Heads"); + + b.Property("HeadsSql"); + + b.Property("Sectors"); + + b.Property("SectorsSql"); + + b.HasKey("Id"); + + b.ToTable("Chs"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.DensityCode", b => + { + b.Property("Code") + .ValueGeneratedOnAdd(); + + b.Property("SscSupportedMediaId"); + + b.HasKey("Code"); + + b.HasIndex("SscSupportedMediaId"); + + b.ToTable("DensityCode"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.FireWire", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Manufacturer"); + + b.Property("Product"); + + b.Property("ProductID"); + + b.Property("ProductIDSql"); + + b.Property("RemovableMedia"); + + b.Property("VendorID"); + + b.Property("VendorIDSql"); + + b.HasKey("Id"); + + b.ToTable("FireWire"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Mmc", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("FeaturesId"); + + b.Property("ModeSense2AId"); + + b.HasKey("Id"); + + b.HasIndex("FeaturesId"); + + b.HasIndex("ModeSense2AId"); + + b.ToTable("Mmc"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.MmcFeatures", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AACSVersion"); + + b.Property("AGIDs"); + + b.Property("BindingNonceBlocks"); + + b.Property("BlocksPerReadableUnit"); + + b.Property("BlocksPerReadableUnitSql"); + + b.Property("BufferUnderrunFreeInDVD"); + + b.Property("BufferUnderrunFreeInSAO"); + + b.Property("BufferUnderrunFreeInTAO"); + + b.Property("CPRMVersion"); + + b.Property("CSSVersion"); + + b.Property("CanAudioScan"); + + b.Property("CanEject"); + + b.Property("CanEraseSector"); + + b.Property("CanExpandBDRESpareArea"); + + b.Property("CanFormat"); + + b.Property("CanFormatBDREWithoutSpare"); + + b.Property("CanFormatCert"); + + b.Property("CanFormatFRF"); + + b.Property("CanFormatQCert"); + + b.Property("CanFormatRRM"); + + b.Property("CanGenerateBindingNonce"); + + b.Property("CanLoad"); + + b.Property("CanMuteSeparateChannels"); + + b.Property("CanOverwriteSAOTrack"); + + b.Property("CanOverwriteTAOTrack"); + + b.Property("CanPlayCDAudio"); + + b.Property("CanPseudoOverwriteBDR"); + + b.Property("CanReadAllDualR"); + + b.Property("CanReadAllDualRW"); + + b.Property("CanReadBD"); + + b.Property("CanReadBDR"); + + b.Property("CanReadBDRE1"); + + b.Property("CanReadBDRE2"); + + b.Property("CanReadBDROM"); + + b.Property("CanReadBluBCA"); + + b.Property("CanReadCD"); + + b.Property("CanReadCDMRW"); + + b.Property("CanReadCPRM_MKB"); + + b.Property("CanReadDDCD"); + + b.Property("CanReadDVD"); + + b.Property("CanReadDVDPlusMRW"); + + b.Property("CanReadDVDPlusR"); + + b.Property("CanReadDVDPlusRDL"); + + b.Property("CanReadDVDPlusRW"); + + b.Property("CanReadDVDPlusRWDL"); + + b.Property("CanReadDriveAACSCertificate"); + + b.Property("CanReadHDDVD"); + + b.Property("CanReadHDDVDR"); + + b.Property("CanReadHDDVDRAM"); + + b.Property("CanReadLeadInCDText"); + + b.Property("CanReadOldBDR"); + + b.Property("CanReadOldBDRE"); + + b.Property("CanReadOldBDROM"); + + b.Property("CanReadSpareAreaInformation"); + + b.Property("CanReportDriveSerial"); + + b.Property("CanReportMediaSerial"); + + b.Property("CanTestWriteDDCDR"); + + b.Property("CanTestWriteDVD"); + + b.Property("CanTestWriteInSAO"); + + b.Property("CanTestWriteInTAO"); + + b.Property("CanUpgradeFirmware"); + + b.Property("CanWriteBD"); + + b.Property("CanWriteBDR"); + + b.Property("CanWriteBDRE1"); + + b.Property("CanWriteBDRE2"); + + b.Property("CanWriteBusEncryptedBlocks"); + + b.Property("CanWriteCDMRW"); + + b.Property("CanWriteCDRW"); + + b.Property("CanWriteCDRWCAV"); + + b.Property("CanWriteCDSAO"); + + b.Property("CanWriteCDTAO"); + + b.Property("CanWriteCSSManagedDVD"); + + b.Property("CanWriteDDCDR"); + + b.Property("CanWriteDDCDRW"); + + b.Property("CanWriteDVDPlusMRW"); + + b.Property("CanWriteDVDPlusR"); + + b.Property("CanWriteDVDPlusRDL"); + + b.Property("CanWriteDVDPlusRW"); + + b.Property("CanWriteDVDPlusRWDL"); + + b.Property("CanWriteDVDR"); + + b.Property("CanWriteDVDRDL"); + + b.Property("CanWriteDVDRW"); + + b.Property("CanWriteHDDVDR"); + + b.Property("CanWriteHDDVDRAM"); + + b.Property("CanWriteOldBDR"); + + b.Property("CanWriteOldBDRE"); + + b.Property("CanWritePackedSubchannelInTAO"); + + b.Property("CanWriteRWSubchannelInSAO"); + + b.Property("CanWriteRWSubchannelInTAO"); + + b.Property("CanWriteRaw"); + + b.Property("CanWriteRawMultiSession"); + + b.Property("CanWriteRawSubchannelInTAO"); + + b.Property("ChangerIsSideChangeCapable"); + + b.Property("ChangerSlots"); + + b.Property("ChangerSupportsDiscPresent"); + + b.Property("DBML"); + + b.Property("DVDMultiRead"); + + b.Property("EmbeddedChanger"); + + b.Property("ErrorRecoveryPage"); + + b.Property("FirmwareDate"); + + b.Property("LoadingMechanismType"); + + b.Property("Locked"); + + b.Property("LogicalBlockSize"); + + b.Property("LogicalBlockSizeSql"); + + b.Property("MultiRead"); + + b.Property("PhysicalInterfaceStandardNumber"); + + b.Property("PhysicalInterfaceStandardNumberSql"); + + b.Property("PreventJumper"); + + b.Property("SupportsAACS"); + + b.Property("SupportsBusEncryption"); + + b.Property("SupportsC2"); + + b.Property("SupportsCPRM"); + + b.Property("SupportsCSS"); + + b.Property("SupportsDAP"); + + b.Property("SupportsDeviceBusyEvent"); + + b.Property("SupportsHybridDiscs"); + + b.Property("SupportsModePage1Ch"); + + b.Property("SupportsOSSC"); + + b.Property("SupportsPWP"); + + b.Property("SupportsSWPP"); + + b.Property("SupportsSecurDisc"); + + b.Property("SupportsSeparateVolume"); + + b.Property("SupportsVCPS"); + + b.Property("SupportsWriteInhibitDCB"); + + b.Property("SupportsWriteProtectPAC"); + + b.Property("VolumeLevels"); + + b.Property("VolumeLevelsSql"); + + b.HasKey("Id"); + + b.ToTable("MmcFeatures"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.MmcSd", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CID"); + + b.Property("CSD"); + + b.Property("ExtendedCSD"); + + b.Property("OCR"); + + b.Property("SCR"); + + b.HasKey("Id"); + + b.ToTable("MmcSd"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Pcmcia", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CIS"); + + b.Property("CardCode"); + + b.Property("CardCodeSql"); + + b.Property("Compliance"); + + b.Property("Manufacturer"); + + b.Property("ManufacturerCode"); + + b.Property("ManufacturerCodeSql"); + + b.Property("ProductName"); + + b.HasKey("Id"); + + b.ToTable("Pcmcia"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Scsi", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("InquiryData"); + + b.Property("ModeSense10Data"); + + b.Property("ModeSense6Data"); + + b.Property("ModeSenseId"); + + b.Property("MultiMediaDeviceId"); + + b.Property("ReadCapabilitiesId"); + + b.Property("SequentialDeviceId"); + + b.Property("SupportsModeSense10"); + + b.Property("SupportsModeSense6"); + + b.Property("SupportsModeSubpages"); + + b.HasKey("Id"); + + b.HasIndex("ModeSenseId"); + + b.HasIndex("MultiMediaDeviceId"); + + b.HasIndex("ReadCapabilitiesId"); + + b.HasIndex("SequentialDeviceId"); + + b.ToTable("Scsi"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.ScsiMode", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BlankCheckEnabled"); + + b.Property("BufferedMode"); + + b.Property("DPOandFUA"); + + b.Property("MediumType"); + + b.Property("Speed"); + + b.Property("WriteProtected"); + + b.HasKey("Id"); + + b.ToTable("ScsiMode"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.ScsiPage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ScsiId"); + + b.Property("ScsiModeId"); + + b.Property("page"); + + b.Property("subpage"); + + b.Property("value"); + + b.HasKey("Id"); + + b.HasIndex("ScsiId"); + + b.HasIndex("ScsiModeId"); + + b.ToTable("ScsiPage"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Ssc", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BlockSizeGranularity"); + + b.Property("MaxBlockLength"); + + b.Property("MaxBlockLengthSql"); + + b.Property("MinBlockLength"); + + b.Property("MinBlockLengthSql"); + + b.HasKey("Id"); + + b.ToTable("Ssc"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.SscSupportedMedia", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Description"); + + b.Property("Length"); + + b.Property("LengthSql"); + + b.Property("MediumType"); + + b.Property("Name"); + + b.Property("Organization"); + + b.Property("SscId"); + + b.Property("TestedSequentialMediaId"); + + b.Property("Width"); + + b.Property("WidthSql"); + + b.HasKey("Id"); + + b.HasIndex("SscId"); + + b.HasIndex("TestedSequentialMediaId"); + + b.ToTable("SscSupportedMedia"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.SupportedDensity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BitsPerMm"); + + b.Property("BitsPerMmSql"); + + b.Property("Capacity"); + + b.Property("CapacitySql"); + + b.Property("DefaultDensity"); + + b.Property("Description"); + + b.Property("Duplicate"); + + b.Property("Name"); + + b.Property("Organization"); + + b.Property("PrimaryCode"); + + b.Property("SecondaryCode"); + + b.Property("SscId"); + + b.Property("TestedSequentialMediaId"); + + b.Property("Tracks"); + + b.Property("TracksSql"); + + b.Property("Width"); + + b.Property("WidthSql"); + + b.Property("Writable"); + + b.HasKey("Id"); + + b.HasIndex("SscId"); + + b.HasIndex("TestedSequentialMediaId"); + + b.ToTable("SupportedDensity"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.TestedMedia", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AtaId"); + + b.Property("BlockSize"); + + b.Property("BlockSizeSql"); + + b.Property("Blocks"); + + b.Property("BlocksSql"); + + b.Property("CHSId"); + + b.Property("CanReadAACS"); + + b.Property("CanReadADIP"); + + b.Property("CanReadATIP"); + + b.Property("CanReadBCA"); + + b.Property("CanReadC2Pointers"); + + b.Property("CanReadCMI"); + + b.Property("CanReadCorrectedSubchannel"); + + b.Property("CanReadCorrectedSubchannelWithC2"); + + b.Property("CanReadDCB"); + + b.Property("CanReadDDS"); + + b.Property("CanReadDMI"); + + b.Property("CanReadDiscInformation"); + + b.Property("CanReadFirstTrackPreGap"); + + b.Property("CanReadFullTOC"); + + b.Property("CanReadHDCMI"); + + b.Property("CanReadLayerCapacity"); + + b.Property("CanReadLeadIn"); + + b.Property("CanReadLeadOut"); + + b.Property("CanReadMediaID"); + + b.Property("CanReadMediaSerial"); + + b.Property("CanReadPAC"); + + b.Property("CanReadPFI"); + + b.Property("CanReadPMA"); + + b.Property("CanReadPQSubchannel"); + + b.Property("CanReadPQSubchannelWithC2"); + + b.Property("CanReadPRI"); + + b.Property("CanReadRWSubchannel"); + + b.Property("CanReadRWSubchannelWithC2"); + + b.Property("CanReadRecordablePFI"); + + b.Property("CanReadSpareAreaInformation"); + + b.Property("CanReadTOC"); + + b.Property("CurrentCHSId"); + + b.Property("Density"); + + b.Property("IdentifyData"); + + b.Property("LBA48Sectors"); + + b.Property("LBA48SectorsSql"); + + b.Property("LBASectors"); + + b.Property("LBASectorsSql"); + + b.Property("LogicalAlignment"); + + b.Property("LogicalAlignmentSql"); + + b.Property("LongBlockSize"); + + b.Property("LongBlockSizeSql"); + + b.Property("Manufacturer"); + + b.Property("MediaIsRecognized"); + + b.Property("MediumType"); + + b.Property("MediumTypeName"); + + b.Property("MmcId"); + + b.Property("ModeSense10Data"); + + b.Property("ModeSense6Data"); + + b.Property("Model"); + + b.Property("NominalRotationRate"); + + b.Property("NominalRotationRateSql"); + + b.Property("PhysicalBlockSize"); + + b.Property("PhysicalBlockSizeSql"); + + b.Property("ScsiId"); + + b.Property("SolidStateDevice"); + + b.Property("SupportsHLDTSTReadRawDVD"); + + b.Property("SupportsNECReadCDDA"); + + b.Property("SupportsPioneerReadCDDA"); + + b.Property("SupportsPioneerReadCDDAMSF"); + + b.Property("SupportsPlextorReadCDDA"); + + b.Property("SupportsPlextorReadRawDVD"); + + b.Property("SupportsRead10"); + + b.Property("SupportsRead12"); + + b.Property("SupportsRead16"); + + b.Property("SupportsRead6"); + + b.Property("SupportsReadCapacity"); + + b.Property("SupportsReadCapacity16"); + + b.Property("SupportsReadCd"); + + b.Property("SupportsReadCdMsf"); + + b.Property("SupportsReadCdMsfRaw"); + + b.Property("SupportsReadCdRaw"); + + b.Property("SupportsReadDma"); + + b.Property("SupportsReadDmaLba"); + + b.Property("SupportsReadDmaLba48"); + + b.Property("SupportsReadDmaRetry"); + + b.Property("SupportsReadDmaRetryLba"); + + b.Property("SupportsReadLba"); + + b.Property("SupportsReadLba48"); + + b.Property("SupportsReadLong"); + + b.Property("SupportsReadLong16"); + + b.Property("SupportsReadLongLba"); + + b.Property("SupportsReadLongRetry"); + + b.Property("SupportsReadLongRetryLba"); + + b.Property("SupportsReadRetry"); + + b.Property("SupportsReadRetryLba"); + + b.Property("SupportsReadSectors"); + + b.Property("SupportsSeek"); + + b.Property("SupportsSeekLba"); + + b.Property("UnformattedBPS"); + + b.Property("UnformattedBPSSql"); + + b.Property("UnformattedBPT"); + + b.Property("UnformattedBPTSql"); + + b.HasKey("Id"); + + b.HasIndex("AtaId"); + + b.HasIndex("CHSId"); + + b.HasIndex("CurrentCHSId"); + + b.HasIndex("MmcId"); + + b.HasIndex("ScsiId"); + + b.ToTable("TestedMedia"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.TestedSequentialMedia", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CanReadMediaSerial"); + + b.Property("Density"); + + b.Property("Manufacturer"); + + b.Property("MediaIsRecognized"); + + b.Property("MediumType"); + + b.Property("MediumTypeName"); + + b.Property("ModeSense10Data"); + + b.Property("ModeSense6Data"); + + b.Property("Model"); + + b.Property("SscId"); + + b.HasKey("Id"); + + b.HasIndex("SscId"); + + b.ToTable("TestedSequentialMedia"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Usb", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Descriptors"); + + b.Property("Manufacturer"); + + b.Property("Product"); + + b.Property("ProductID"); + + b.Property("ProductIDSql"); + + b.Property("RemovableMedia"); + + b.Property("VendorID"); + + b.Property("VendorIDSql"); + + b.HasKey("Id"); + + b.ToTable("Usb"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.Command", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("Name"); + + b.Property("Synchronized"); + + b.HasKey("Id"); + + b.ToTable("Commands"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.Device", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ATAId"); + + b.Property("ATAPIId"); + + b.Property("CompactFlash"); + + b.Property("FireWireId"); + + b.Property("LastSynchronized"); + + b.Property("Manufacturer"); + + b.Property("Model"); + + b.Property("MultiMediaCardId"); + + b.Property("PCMCIAId"); + + b.Property("Revision"); + + b.Property("SCSIId"); + + b.Property("SecureDigitalId"); + + b.Property("Type"); + + b.Property("USBId"); + + b.HasKey("Id"); + + b.HasIndex("ATAId"); + + b.HasIndex("ATAPIId"); + + b.HasIndex("FireWireId"); + + b.HasIndex("MultiMediaCardId"); + + b.HasIndex("PCMCIAId"); + + b.HasIndex("SCSIId"); + + b.HasIndex("SecureDigitalId"); + + b.HasIndex("USBId"); + + b.ToTable("Devices"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.DeviceStat", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Bus"); + + b.Property("Manufacturer"); + + b.Property("Model"); + + b.Property("Revision"); + + b.Property("Synchronized"); + + b.HasKey("Id"); + + b.ToTable("SeenDevices"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.Filesystem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("Name"); + + b.Property("Synchronized"); + + b.HasKey("Id"); + + b.ToTable("Filesystems"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.Filter", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("Name"); + + b.Property("Synchronized"); + + b.HasKey("Id"); + + b.ToTable("Filters"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.Media", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("Real"); + + b.Property("Synchronized"); + + b.Property("Type"); + + b.HasKey("Id"); + + b.ToTable("Medias"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.MediaFormat", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("Name"); + + b.Property("Synchronized"); + + b.HasKey("Id"); + + b.ToTable("MediaFormats"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.OperatingSystem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("Name"); + + b.Property("Synchronized"); + + b.Property("Version"); + + b.HasKey("Id"); + + b.ToTable("OperatingSystems"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.Partition", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("Name"); + + b.Property("Synchronized"); + + b.HasKey("Id"); + + b.ToTable("Partitions"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.Report", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ATAId"); + + b.Property("ATAPIId"); + + b.Property("CompactFlash"); + + b.Property("Created"); + + b.Property("FireWireId"); + + b.Property("Manufacturer"); + + b.Property("Model"); + + b.Property("MultiMediaCardId"); + + b.Property("PCMCIAId"); + + b.Property("Revision"); + + b.Property("SCSIId"); + + b.Property("SecureDigitalId"); + + b.Property("Type"); + + b.Property("USBId"); + + b.Property("Uploaded"); + + b.HasKey("Id"); + + b.HasIndex("ATAId"); + + b.HasIndex("ATAPIId"); + + b.HasIndex("FireWireId"); + + b.HasIndex("MultiMediaCardId"); + + b.HasIndex("PCMCIAId"); + + b.HasIndex("SCSIId"); + + b.HasIndex("SecureDigitalId"); + + b.HasIndex("USBId"); + + b.ToTable("Reports"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.Version", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("Synchronized"); + + b.Property("Value"); + + b.HasKey("Id"); + + b.ToTable("Versions"); + }); + + modelBuilder.Entity("DiscImageChef.Decoders.SCSI.Modes+ModePage_2A", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AccurateCDDA"); + + b.Property("AudioPlay"); + + b.Property("BCK"); + + b.Property("BUF"); + + b.Property("BufferSize"); + + b.Property("C2Pointer"); + + b.Property("CDDACommand"); + + b.Property("CMRSupported"); + + b.Property("Composite"); + + b.Property("CurrentSpeed"); + + b.Property("CurrentWriteSpeed"); + + b.Property("CurrentWriteSpeedSelected"); + + b.Property("DeinterlaveSubchannel"); + + b.Property("DigitalPort1"); + + b.Property("DigitalPort2"); + + b.Property("Eject"); + + b.Property("ISRC"); + + b.Property("LSBF"); + + b.Property("LeadInPW"); + + b.Property("Length"); + + b.Property("LoadingMechanism"); + + b.Property("Lock"); + + b.Property("LockState"); + + b.Property("MaxWriteSpeed"); + + b.Property("MaximumSpeed"); + + b.Property("Method2"); + + b.Property("Mode2Form1"); + + b.Property("Mode2Form2"); + + b.Property("MultiSession"); + + b.Property("PS"); + + b.Property("PreventJumper"); + + b.Property("RCK"); + + b.Property("ReadBarcode"); + + b.Property("ReadCDR"); + + b.Property("ReadCDRW"); + + b.Property("ReadDVDR"); + + b.Property("ReadDVDRAM"); + + b.Property("ReadDVDROM"); + + b.Property("RotationControlSelected"); + + b.Property("SCC"); + + b.Property("SDP"); + + b.Property("SSS"); + + b.Property("SeparateChannelMute"); + + b.Property("SeparateChannelVolume"); + + b.Property("Subchannel"); + + b.Property("SupportedVolumeLevels"); + + b.Property("TestWrite"); + + b.Property("UPC"); + + b.Property("WriteCDR"); + + b.Property("WriteCDRW"); + + b.Property("WriteDVDR"); + + b.Property("WriteDVDRAM"); + + b.HasKey("Id"); + + b.ToTable("ModePage_2A"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Ata", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.TestedMedia", "ReadCapabilities") + .WithMany() + .HasForeignKey("ReadCapabilitiesId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.BlockDescriptor", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.ScsiMode") + .WithMany("BlockDescriptors") + .HasForeignKey("ScsiModeId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.DensityCode", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.SscSupportedMedia") + .WithMany("DensityCodes") + .HasForeignKey("SscSupportedMediaId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Mmc", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcFeatures", "Features") + .WithMany() + .HasForeignKey("FeaturesId"); + + b.HasOne("DiscImageChef.Decoders.SCSI.Modes+ModePage_2A", "ModeSense2A") + .WithMany() + .HasForeignKey("ModeSense2AId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Scsi", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.ScsiMode", "ModeSense") + .WithMany() + .HasForeignKey("ModeSenseId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Mmc", "MultiMediaDevice") + .WithMany() + .HasForeignKey("MultiMediaDeviceId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.TestedMedia", "ReadCapabilities") + .WithMany() + .HasForeignKey("ReadCapabilitiesId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ssc", "SequentialDevice") + .WithMany() + .HasForeignKey("SequentialDeviceId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.ScsiPage", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Scsi") + .WithMany("EVPDPages") + .HasForeignKey("ScsiId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.ScsiMode") + .WithMany("ModePages") + .HasForeignKey("ScsiModeId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.SscSupportedMedia", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ssc") + .WithMany("SupportedMediaTypes") + .HasForeignKey("SscId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.TestedSequentialMedia") + .WithMany("SupportedMediaTypes") + .HasForeignKey("TestedSequentialMediaId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.SupportedDensity", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ssc") + .WithMany("SupportedDensities") + .HasForeignKey("SscId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.TestedSequentialMedia") + .WithMany("SupportedDensities") + .HasForeignKey("TestedSequentialMediaId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.TestedMedia", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ata") + .WithMany("RemovableMedias") + .HasForeignKey("AtaId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Chs", "CHS") + .WithMany() + .HasForeignKey("CHSId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Chs", "CurrentCHS") + .WithMany() + .HasForeignKey("CurrentCHSId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Mmc") + .WithMany("TestedMedia") + .HasForeignKey("MmcId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Scsi") + .WithMany("RemovableMedias") + .HasForeignKey("ScsiId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.TestedSequentialMedia", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ssc") + .WithMany("TestedMedia") + .HasForeignKey("SscId"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.Device", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ata", "ATA") + .WithMany() + .HasForeignKey("ATAId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ata", "ATAPI") + .WithMany() + .HasForeignKey("ATAPIId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.FireWire", "FireWire") + .WithMany() + .HasForeignKey("FireWireId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcSd", "MultiMediaCard") + .WithMany() + .HasForeignKey("MultiMediaCardId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Pcmcia", "PCMCIA") + .WithMany() + .HasForeignKey("PCMCIAId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Scsi", "SCSI") + .WithMany() + .HasForeignKey("SCSIId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcSd", "SecureDigital") + .WithMany() + .HasForeignKey("SecureDigitalId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Usb", "USB") + .WithMany() + .HasForeignKey("USBId"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.Report", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ata", "ATA") + .WithMany() + .HasForeignKey("ATAId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ata", "ATAPI") + .WithMany() + .HasForeignKey("ATAPIId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.FireWire", "FireWire") + .WithMany() + .HasForeignKey("FireWireId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcSd", "MultiMediaCard") + .WithMany() + .HasForeignKey("MultiMediaCardId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Pcmcia", "PCMCIA") + .WithMany() + .HasForeignKey("PCMCIAId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Scsi", "SCSI") + .WithMany() + .HasForeignKey("SCSIId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcSd", "SecureDigital") + .WithMany() + .HasForeignKey("SecureDigitalId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Usb", "USB") + .WithMany() + .HasForeignKey("USBId"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/DiscImageChef.Database/Migrations/20181223183913_FixUnsignedFields.cs b/DiscImageChef.Database/Migrations/20181223183913_FixUnsignedFields.cs new file mode 100644 index 000000000..4658fd9de --- /dev/null +++ b/DiscImageChef.Database/Migrations/20181223183913_FixUnsignedFields.cs @@ -0,0 +1,146 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace DiscImageChef.Database.Migrations +{ + public partial class FixUnsignedFields : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn("ProductIDSql", "Usb", nullable: false, defaultValue: (short)0); + + migrationBuilder.AddColumn("VendorIDSql", "Usb", nullable: false, defaultValue: (short)0); + + migrationBuilder.AddColumn("BlockSizeSql", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("BlocksSql", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("LBA48SectorsSql", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("LBASectorsSql", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("LogicalAlignmentSql", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("LongBlockSizeSql", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("NominalRotationRateSql", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("PhysicalBlockSizeSql", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("UnformattedBPSSql", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("UnformattedBPTSql", "TestedMedia", nullable: true); + + migrationBuilder.AddColumn("BitsPerMmSql", "SupportedDensity", nullable: false, defaultValue: 0); + + migrationBuilder.AddColumn("CapacitySql", "SupportedDensity", nullable: false, defaultValue: 0); + + migrationBuilder.AddColumn("TracksSql", "SupportedDensity", nullable: false, defaultValue: (short)0); + + migrationBuilder.AddColumn("WidthSql", "SupportedDensity", nullable: false, defaultValue: (short)0); + + migrationBuilder.AddColumn("LengthSql", "SscSupportedMedia", nullable: false, + defaultValue: (short)0); + + migrationBuilder.AddColumn("WidthSql", "SscSupportedMedia", nullable: false, defaultValue: (short)0); + + migrationBuilder.AddColumn("MaxBlockLengthSql", "Ssc", nullable: true); + + migrationBuilder.AddColumn("MinBlockLengthSql", "Ssc", nullable: true); + + migrationBuilder.AddColumn("CardCodeSql", "Pcmcia", nullable: true); + + migrationBuilder.AddColumn("ManufacturerCodeSql", "Pcmcia", nullable: true); + + migrationBuilder.AddColumn("BlocksPerReadableUnitSql", "MmcFeatures", nullable: true); + + migrationBuilder.AddColumn("LogicalBlockSizeSql", "MmcFeatures", nullable: true); + + migrationBuilder.AddColumn("PhysicalInterfaceStandardNumberSql", "MmcFeatures", nullable: true); + + migrationBuilder.AddColumn("VolumeLevelsSql", "MmcFeatures", nullable: true); + + migrationBuilder.AddColumn("ProductIDSql", "FireWire", nullable: false, defaultValue: 0); + + migrationBuilder.AddColumn("VendorIDSql", "FireWire", nullable: false, defaultValue: 0); + + migrationBuilder.AddColumn("CylindersSql", "Chs", nullable: false, defaultValue: (short)0); + + migrationBuilder.AddColumn("HeadsSql", "Chs", nullable: false, defaultValue: (short)0); + + migrationBuilder.AddColumn("SectorsSql", "Chs", nullable: false, defaultValue: (short)0); + + migrationBuilder.AddColumn("BlockLengthSql", "BlockDescriptor", nullable: true); + + migrationBuilder.AddColumn("BlocksSql", "BlockDescriptor", nullable: true); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn("ProductIDSql", "Usb"); + + migrationBuilder.DropColumn("VendorIDSql", "Usb"); + + migrationBuilder.DropColumn("BlockSizeSql", "TestedMedia"); + + migrationBuilder.DropColumn("BlocksSql", "TestedMedia"); + + migrationBuilder.DropColumn("LBA48SectorsSql", "TestedMedia"); + + migrationBuilder.DropColumn("LBASectorsSql", "TestedMedia"); + + migrationBuilder.DropColumn("LogicalAlignmentSql", "TestedMedia"); + + migrationBuilder.DropColumn("LongBlockSizeSql", "TestedMedia"); + + migrationBuilder.DropColumn("NominalRotationRateSql", "TestedMedia"); + + migrationBuilder.DropColumn("PhysicalBlockSizeSql", "TestedMedia"); + + migrationBuilder.DropColumn("UnformattedBPSSql", "TestedMedia"); + + migrationBuilder.DropColumn("UnformattedBPTSql", "TestedMedia"); + + migrationBuilder.DropColumn("BitsPerMmSql", "SupportedDensity"); + + migrationBuilder.DropColumn("CapacitySql", "SupportedDensity"); + + migrationBuilder.DropColumn("TracksSql", "SupportedDensity"); + + migrationBuilder.DropColumn("WidthSql", "SupportedDensity"); + + migrationBuilder.DropColumn("LengthSql", "SscSupportedMedia"); + + migrationBuilder.DropColumn("WidthSql", "SscSupportedMedia"); + + migrationBuilder.DropColumn("MaxBlockLengthSql", "Ssc"); + + migrationBuilder.DropColumn("MinBlockLengthSql", "Ssc"); + + migrationBuilder.DropColumn("CardCodeSql", "Pcmcia"); + + migrationBuilder.DropColumn("ManufacturerCodeSql", "Pcmcia"); + + migrationBuilder.DropColumn("BlocksPerReadableUnitSql", "MmcFeatures"); + + migrationBuilder.DropColumn("LogicalBlockSizeSql", "MmcFeatures"); + + migrationBuilder.DropColumn("PhysicalInterfaceStandardNumberSql", "MmcFeatures"); + + migrationBuilder.DropColumn("VolumeLevelsSql", "MmcFeatures"); + + migrationBuilder.DropColumn("ProductIDSql", "FireWire"); + + migrationBuilder.DropColumn("VendorIDSql", "FireWire"); + + migrationBuilder.DropColumn("CylindersSql", "Chs"); + + migrationBuilder.DropColumn("HeadsSql", "Chs"); + + migrationBuilder.DropColumn("SectorsSql", "Chs"); + + migrationBuilder.DropColumn("BlockLengthSql", "BlockDescriptor"); + + migrationBuilder.DropColumn("BlocksSql", "BlockDescriptor"); + } + } +} \ No newline at end of file diff --git a/DiscImageChef.Database/Migrations/DicContextModelSnapshot.cs b/DiscImageChef.Database/Migrations/DicContextModelSnapshot.cs index d7cf20b4b..6ec76b294 100644 --- a/DiscImageChef.Database/Migrations/DicContextModelSnapshot.cs +++ b/DiscImageChef.Database/Migrations/DicContextModelSnapshot.cs @@ -35,8 +35,12 @@ namespace DiscImageChef.Database.Migrations b.Property("BlockLength"); + b.Property("BlockLengthSql"); + b.Property("Blocks"); + b.Property("BlocksSql"); + b.Property("Density"); b.Property("ScsiModeId"); @@ -54,10 +58,16 @@ namespace DiscImageChef.Database.Migrations b.Property("Cylinders"); + b.Property("CylindersSql"); + b.Property("Heads"); + b.Property("HeadsSql"); + b.Property("Sectors"); + b.Property("SectorsSql"); + b.HasKey("Id"); b.ToTable("Chs"); @@ -86,10 +96,14 @@ namespace DiscImageChef.Database.Migrations b.Property("ProductID"); + b.Property("ProductIDSql"); + b.Property("RemovableMedia"); b.Property("VendorID"); + b.Property("VendorIDSql"); + b.HasKey("Id"); b.ToTable("FireWire"); @@ -124,6 +138,8 @@ namespace DiscImageChef.Database.Migrations b.Property("BlocksPerReadableUnit"); + b.Property("BlocksPerReadableUnitSql"); + b.Property("BufferUnderrunFreeInDVD"); b.Property("BufferUnderrunFreeInSAO"); @@ -320,12 +336,14 @@ namespace DiscImageChef.Database.Migrations b.Property("LogicalBlockSize"); + b.Property("LogicalBlockSizeSql"); + b.Property("MultiRead"); - b.Property("PhysicalInterfaceStandard"); - b.Property("PhysicalInterfaceStandardNumber"); + b.Property("PhysicalInterfaceStandardNumberSql"); + b.Property("PreventJumper"); b.Property("SupportsAACS"); @@ -364,6 +382,8 @@ namespace DiscImageChef.Database.Migrations b.Property("VolumeLevels"); + b.Property("VolumeLevelsSql"); + b.HasKey("Id"); b.ToTable("MmcFeatures"); @@ -396,12 +416,16 @@ namespace DiscImageChef.Database.Migrations b.Property("CardCode"); + b.Property("CardCodeSql"); + b.Property("Compliance"); b.Property("Manufacturer"); b.Property("ManufacturerCode"); + b.Property("ManufacturerCodeSql"); + b.Property("ProductName"); b.HasKey("Id"); @@ -498,8 +522,12 @@ namespace DiscImageChef.Database.Migrations b.Property("MaxBlockLength"); + b.Property("MaxBlockLengthSql"); + b.Property("MinBlockLength"); + b.Property("MinBlockLengthSql"); + b.HasKey("Id"); b.ToTable("Ssc"); @@ -513,6 +541,8 @@ namespace DiscImageChef.Database.Migrations b.Property("Length"); + b.Property("LengthSql"); + b.Property("MediumType"); b.Property("Name"); @@ -525,6 +555,8 @@ namespace DiscImageChef.Database.Migrations b.Property("Width"); + b.Property("WidthSql"); + b.HasKey("Id"); b.HasIndex("SscId"); @@ -540,8 +572,12 @@ namespace DiscImageChef.Database.Migrations b.Property("BitsPerMm"); + b.Property("BitsPerMmSql"); + b.Property("Capacity"); + b.Property("CapacitySql"); + b.Property("DefaultDensity"); b.Property("Description"); @@ -562,8 +598,12 @@ namespace DiscImageChef.Database.Migrations b.Property("Tracks"); + b.Property("TracksSql"); + b.Property("Width"); + b.Property("WidthSql"); + b.Property("Writable"); b.HasKey("Id"); @@ -583,8 +623,12 @@ namespace DiscImageChef.Database.Migrations b.Property("BlockSize"); + b.Property("BlockSizeSql"); + b.Property("Blocks"); + b.Property("BlocksSql"); + b.Property("CHSId"); b.Property("CanReadAACS"); @@ -657,12 +701,20 @@ namespace DiscImageChef.Database.Migrations b.Property("LBA48Sectors"); + b.Property("LBA48SectorsSql"); + b.Property("LBASectors"); + b.Property("LBASectorsSql"); + b.Property("LogicalAlignment"); + b.Property("LogicalAlignmentSql"); + b.Property("LongBlockSize"); + b.Property("LongBlockSizeSql"); + b.Property("Manufacturer"); b.Property("MediaIsRecognized"); @@ -681,8 +733,12 @@ namespace DiscImageChef.Database.Migrations b.Property("NominalRotationRate"); + b.Property("NominalRotationRateSql"); + b.Property("PhysicalBlockSize"); + b.Property("PhysicalBlockSizeSql"); + b.Property("ScsiId"); b.Property("SolidStateDevice"); @@ -755,8 +811,12 @@ namespace DiscImageChef.Database.Migrations b.Property("UnformattedBPS"); + b.Property("UnformattedBPSSql"); + b.Property("UnformattedBPT"); + b.Property("UnformattedBPTSql"); + b.HasKey("Id"); b.HasIndex("AtaId"); @@ -815,10 +875,14 @@ namespace DiscImageChef.Database.Migrations b.Property("ProductID"); + b.Property("ProductIDSql"); + b.Property("RemovableMedia"); b.Property("VendorID"); + b.Property("VendorIDSql"); + b.HasKey("Id"); b.ToTable("Usb"); diff --git a/DiscImageChef.Server/DiscImageChef.Server.csproj b/DiscImageChef.Server/DiscImageChef.Server.csproj index b2e6333d3..25a8c0047 100644 --- a/DiscImageChef.Server/DiscImageChef.Server.csproj +++ b/DiscImageChef.Server/DiscImageChef.Server.csproj @@ -209,6 +209,10 @@ 201812221606592_LinkDeviceStatsToReport.cs + + + 201812231612080_FixUnsignedFields.cs + @@ -298,6 +302,9 @@ 201812221606592_LinkDeviceStatsToReport.cs + + 201812231612080_FixUnsignedFields.cs + 10.0 diff --git a/DiscImageChef.Server/Migrations/201812231612080_FixUnsignedFields.Designer.cs b/DiscImageChef.Server/Migrations/201812231612080_FixUnsignedFields.Designer.cs new file mode 100644 index 000000000..7d34e147d --- /dev/null +++ b/DiscImageChef.Server/Migrations/201812231612080_FixUnsignedFields.Designer.cs @@ -0,0 +1,29 @@ +// +namespace DiscImageChef.Server.Migrations +{ + using System.CodeDom.Compiler; + using System.Data.Entity.Migrations; + using System.Data.Entity.Migrations.Infrastructure; + using System.Resources; + + [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] + public sealed partial class FixUnsignedFields : IMigrationMetadata + { + private readonly ResourceManager Resources = new ResourceManager(typeof(FixUnsignedFields)); + + string IMigrationMetadata.Id + { + get { return "201812231612080_FixUnsignedFields"; } + } + + string IMigrationMetadata.Source + { + get { return null; } + } + + string IMigrationMetadata.Target + { + get { return Resources.GetString("Target"); } + } + } +} diff --git a/DiscImageChef.Server/Migrations/201812231612080_FixUnsignedFields.cs b/DiscImageChef.Server/Migrations/201812231612080_FixUnsignedFields.cs new file mode 100644 index 000000000..1133b9de4 --- /dev/null +++ b/DiscImageChef.Server/Migrations/201812231612080_FixUnsignedFields.cs @@ -0,0 +1,81 @@ +using System.Data.Entity.Migrations; + +namespace DiscImageChef.Server.Migrations +{ + public partial class FixUnsignedFields : DbMigration + { + public override void Up() + { + AddColumn("dbo.TestedMedias", "BlocksSql", c => c.Long()); + AddColumn("dbo.TestedMedias", "BlockSizeSql", c => c.Int()); + AddColumn("dbo.TestedMedias", "LongBlockSizeSql", c => c.Int()); + AddColumn("dbo.TestedMedias", "LBASectorsSql", c => c.Int()); + AddColumn("dbo.TestedMedias", "LBA48SectorsSql", c => c.Long()); + AddColumn("dbo.TestedMedias", "LogicalAlignmentSql", c => c.Short()); + AddColumn("dbo.TestedMedias", "NominalRotationRateSql", c => c.Short()); + AddColumn("dbo.TestedMedias", "PhysicalBlockSizeSql", c => c.Int()); + AddColumn("dbo.TestedMedias", "UnformattedBPTSql", c => c.Short()); + AddColumn("dbo.TestedMedias", "UnformattedBPSSql", c => c.Short()); + AddColumn("dbo.Chs", "CylindersSql", c => c.Short(false)); + AddColumn("dbo.Chs", "HeadsSql", c => c.Short(false)); + AddColumn("dbo.Chs", "SectorsSql", c => c.Short(false)); + AddColumn("dbo.FireWires", "VendorIDSql", c => c.Int(false)); + AddColumn("dbo.FireWires", "ProductIDSql", c => c.Int(false)); + AddColumn("dbo.Pcmcias", "ManufacturerCodeSql", c => c.Short()); + AddColumn("dbo.Pcmcias", "CardCodeSql", c => c.Short()); + AddColumn("dbo.BlockDescriptors", "BlocksSql", c => c.Long()); + AddColumn("dbo.BlockDescriptors", "BlockLengthSql", c => c.Int()); + AddColumn("dbo.MmcFeatures", "BlocksPerReadableUnitSql", c => c.Short()); + AddColumn("dbo.MmcFeatures", "LogicalBlockSizeSql", c => c.Int()); + AddColumn("dbo.MmcFeatures", "PhysicalInterfaceStandardNumberSql", c => c.Int()); + AddColumn("dbo.MmcFeatures", "VolumeLevelsSql", c => c.Short()); + AddColumn("dbo.Sscs", "MaxBlockLengthSql", c => c.Int()); + AddColumn("dbo.Sscs", "MinBlockLengthSql", c => c.Int()); + AddColumn("dbo.SupportedDensities", "BitsPerMmSql", c => c.Int(false)); + AddColumn("dbo.SupportedDensities", "WidthSql", c => c.Short(false)); + AddColumn("dbo.SupportedDensities", "TracksSql", c => c.Short(false)); + AddColumn("dbo.SupportedDensities", "CapacitySql", c => c.Int(false)); + AddColumn("dbo.SscSupportedMedias", "WidthSql", c => c.Short(false)); + AddColumn("dbo.SscSupportedMedias", "LengthSql", c => c.Short(false)); + AddColumn("dbo.Usbs", "VendorIDSql", c => c.Short(false)); + AddColumn("dbo.Usbs", "ProductIDSql", c => c.Short(false)); + } + + public override void Down() + { + DropColumn("dbo.Usbs", "ProductIDSql"); + DropColumn("dbo.Usbs", "VendorIDSql"); + DropColumn("dbo.SscSupportedMedias", "LengthSql"); + DropColumn("dbo.SscSupportedMedias", "WidthSql"); + DropColumn("dbo.SupportedDensities", "CapacitySql"); + DropColumn("dbo.SupportedDensities", "TracksSql"); + DropColumn("dbo.SupportedDensities", "WidthSql"); + DropColumn("dbo.SupportedDensities", "BitsPerMmSql"); + DropColumn("dbo.Sscs", "MinBlockLengthSql"); + DropColumn("dbo.Sscs", "MaxBlockLengthSql"); + DropColumn("dbo.MmcFeatures", "VolumeLevelsSql"); + DropColumn("dbo.MmcFeatures", "PhysicalInterfaceStandardNumberSql"); + DropColumn("dbo.MmcFeatures", "LogicalBlockSizeSql"); + DropColumn("dbo.MmcFeatures", "BlocksPerReadableUnitSql"); + DropColumn("dbo.BlockDescriptors", "BlockLengthSql"); + DropColumn("dbo.BlockDescriptors", "BlocksSql"); + DropColumn("dbo.Pcmcias", "CardCodeSql"); + DropColumn("dbo.Pcmcias", "ManufacturerCodeSql"); + DropColumn("dbo.FireWires", "ProductIDSql"); + DropColumn("dbo.FireWires", "VendorIDSql"); + DropColumn("dbo.Chs", "SectorsSql"); + DropColumn("dbo.Chs", "HeadsSql"); + DropColumn("dbo.Chs", "CylindersSql"); + DropColumn("dbo.TestedMedias", "UnformattedBPSSql"); + DropColumn("dbo.TestedMedias", "UnformattedBPTSql"); + DropColumn("dbo.TestedMedias", "PhysicalBlockSizeSql"); + DropColumn("dbo.TestedMedias", "NominalRotationRateSql"); + DropColumn("dbo.TestedMedias", "LogicalAlignmentSql"); + DropColumn("dbo.TestedMedias", "LBA48SectorsSql"); + DropColumn("dbo.TestedMedias", "LBASectorsSql"); + DropColumn("dbo.TestedMedias", "LongBlockSizeSql"); + DropColumn("dbo.TestedMedias", "BlockSizeSql"); + DropColumn("dbo.TestedMedias", "BlocksSql"); + } + } +} \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201812231612080_FixUnsignedFields.resx b/DiscImageChef.Server/Migrations/201812231612080_FixUnsignedFields.resx new file mode 100644 index 000000000..30fac7b72 --- /dev/null +++ b/DiscImageChef.Server/Migrations/201812231612080_FixUnsignedFields.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + H4sIAAAAAAAEAO1923LcONLm/UbsOyh0OTu/ZHl6Oro77P+PEkuya1plsYs67J2CYkESxyyymmSprd7YJ9uLfaR9hQXAE44kTqwquRUddrsI4EMikUicMhP/7//83w//9W2VHDyDvIiz9OPhydG7wwOQRtkyTh8/Hm7Kh//46fC//vO//7cPZ8vVt4ObJt8/UD5YMi0+Hj6V5fqX4+MiegKrsDhaxVGeFdlDeRRlq+NwmR2/f/fu5+OTk2MAIQ4h1sHBh8UmLeMVwD/gTy9LI7AuN2Eyz5YgKervMCXAqAdfwhUo1mEEPh5O4yKarcJH4D2Bh6MA5JD4o6rY4cEkiUNIUgCSh8ODME2zMiwhwb9cFyAo8yx9DNbwQ5hcvawBzPcQJgWoG/JLl121Te/eozYddwUbqGhTlNlKE/DkHzWTjtniRqw+bJkI2XgG2V2+oFZjVn489LIVrGB5eMDW9YuX5ChfL6OP6uJ/PxBl+nsrJ++O8H9/P/A2SbnJwccUbMo8TP5+4G/ukzj6FbxcZV9B+jHdJAlJMCQZplEf4Cc/z9YgL18W4KFuxgy24Jgud8wWbIsRZaoWztLyH+8PD77AysP7BLTyQHAjKLMcfAIpyMMSLP2wLEGeIgyAOcrVztSF/m5qgwIIB9XhwTz8dgHSx/Lp4yH85+HBefwNLJsvNQXXaQzHICxU5hswVImXwdFEtOnHHwRtIiE+HHfy0CslU/AcR8BUSKrSbzIy0H2T5RIsb59A2lQ5hTBXMRKc3l4UCcIK6sjyPAmLpwbsNMsSEKbaWPMw3TxAMNgj+egSjAVm9FoWUB4LrE5HrgjBt5XAqageCdXnoX74Ej7Hj1iwWDm5mhweLECC04qneE2B3+Hk8zxbLbKkHbro612QbXI0iq8yLukqzB9BqUWDPxugAmUQ0eHPeiiBibq0nMc5uIV/+sjp8nAUNUkyotp0XbrmUI/Fc7CMQy/Ml33UsTk5GukMMkqZXLr0+t7cm/WKVpODo69KkNFVp+rSE3hBr4hV6Rwt6LOMEpymTQeIoPKbxo9xGSa9BNEZecrIdCmJVCZdWq+D0z4KcTJHF/wqowYliWhQXjlMylB92YBWk1mK1+RHc1CGy7AMjyACu3Qg8nXrhx+O/nn0889HJz/+/I+/7hqiyvfw0s76cRrmL2pTm6qMLUC49MJ1eB8ncRmDQihwsNfu+Iyd6InSOSEUZtIdEguwyp4Ru7Fm7KOWyccSSyVLaKXzWI2cK1BACcBIliOIQHobSbojCS7CQwejiV2hhykS7MnEC7gFulrJ6cw3LHllWvLUm5gV9N77WZxC/heG5eczw4JZnoMIdn+wuY+eoHB0uwtroNu4fPLem8FNvVPDglNDeZmashDri/Qhy1f1EZQJyDkcp1eXnlnhz1Pj/r8IX0COZo8Ij3gj0uO8KK/yMPrqQ3USrg0JgX9mhsxDZS83pVlhrPVnU4vCAcjj0HDY+BPDPvfPDXvcnxvqKP83Wx1BItgoB39h2PbFrW0TSASbJixAlOVLNDMbd2SwDnMwyUForXz0Fc8UpAWpMF7KPTsmw4O6QFx+TOM/wZJrn+4hHwTcrMjjKqU2t6W2cry9ncPBYLNeZ3lZfL6YXgVXWJjDP6Y3uhq0gfly5uH1w3Sqq5caBB8KPgC5W5R5cG4KlIBvcGVtS06HYsVeBHDyzqawroajCv9oUdimbLOksSLAcF1EQfCaR6fwvHiwKg9Fx7Z+O4iLLH206gMEoFkcqcEATlDgx3G2pi3+ybtxKgiyJF4GcJcOmmtFY/ZNV+HFfWgHsABl/mKHYlfaBQFQjOwRLAkJAPhq3RsQ4Ief7LrCqjwkwYE42UqDRfkARHBi1T1oEYqChRxoFj1NsuhrEfzeLu9q6wWFUgFc/9IF0cFgf0HUQvPCp5OaxwYlf/hJWHa4rRfZYxyFySSJH9MVSEu6PJqDBgxQshVU4MmiPh1dQO2rC+E/vRSIBmPOXdc7uRIsT/0r3eqp0sFgael9gPc5EN4BEKfkdzhPd/7PJHFn/2y67hWFt8lz2KdKlBFZJQS2Ofrp7LJZXVN4T4Xl9QREeLuWUL2W8F6SOF0CVoGgAaC55/8MVb09ilCdDeIoS1dnt2ElYg3Mm5ypytlWz7Pgz+UmKkevh76ftT00uwHpMstnU34a1ASqm6+NpDyK5qso0DDxFQ4hjPE2fpT1NHHn4u7WOBgB9NJbjLDHHwP07FsJhxxYOmCD8tDxo1VkbYBRgbwNHvXBE4wweLLVOonDNNrCTcUOJs/tXMEQDfPQOaHmHg7ZpQ6XUx6cQVTElkMTQbwNTGWjqPT3TZyPZBPVnB91B9y2KzQOUXBVZAO5uV9DmeHP2nRvX1/dib70JOPsxp/6FU8EBxlosN0RWboDDDqFO7hgkrUt8RsGyKkisjBUtSliqrpkc/+A5h5EShyXk6WRySAhlc2lb0qrYPmLq+oz/RVmEFO8FePfuiap9a8oXUbusP1vH7UB+H2DFHGYDEkEn5Ohl80gJpjLZXUUiCDRAHUwJSOYt2lZdVpeY6aThjuaM1BRzWQ6xj/PYbIBW9uGIZlAmtaBaCGYN9FSPgc0sgy7zeMSwG8ltpm2XnOtAQGiUP3p5uEB5GBZSYxGuSRMv0KBiL6epYg+a8qn/mWYLs+veTMpY+9PfPs2BUWUx+vqolcyR6DG3/G56XlCmEk4V4hzmqzE+teHuB4im4DeNlVOaJfFakZj2mupfRi0NyWkqoSE9riaQ9HCxKCawPpvu3XO4u1P4t9ERyo6cjdxECIOiDUP5Oldl6HTOeR3TttQicZ70vdil2sETuWhiSKShHSR6bqkUZ6HEtKoPDRppJWBiDQy3Uo7Q7Cuz2yHVIP0NrSU45VMvKBmiM4ia/JpNi20VmVxiqJQfUGxoSotrr8WvEY2E/kmPc8BmKUie3Pd6UQAG0wux4C9sof1wnSyWcZZEIW8E40+1tm/QcT7oxng5GEBKgsSF2jf1nCxfTpdnLW+Qw5Qz7HRmTMgRB7yrMo2JabSGbAHPzoDO1/w7iGmWL85pWyxmDvAapQeqVocwF5kofWWEcLMNyUcFVA6IIVe5YxnfccAYS+fQf4H2phDPYUdWl1iXrnD9JPwxZtifeUCrQCbZdbSCcefA1DsR58k002YuIa7dYR3aj3FtUCumoh034lDLN51yxjr0oVWwVjJRhQmwQzMc9WH3nTuTLA8fzG/m//KBzAwg5tOnbXSwbKuQ/KTTeGOaTWgq5HUwE0vHAO6bu+tOwrz+BmgLQdaTsQPcRSWLqbsKsCEO8nBWK66uQKbuNJNVRAKb3oFvrlYkCHIy8Th/FCBnTlFc6bYleIRmEAjcxIs3JJAG6aYfcE79DHRoQ2+1UH62kWHd4BOxl4L52QbTgO62YBfrx/zcAnO43z1h5uN3221oHWH5KJfGygnK70WzMVSrwLbFGdplL+skRsZfZhkiexqjVWDucXyJjfu4NwMsBrMzeCqwIJgHqbhI3C0EnSq7zowZx3rdJVKIrprr8t1KoXovMluVqoNpEsOuuWeO845W+oSaE7WuhjP2cqUQHOxNK1MY8LoKxlL0NUaA4OTQbxcrYYEwC4pFgRhMYfCZq4BKAo3K/QG1nXbIdYjyGdFEC9B9QNbuib2K8MKOUiykrkpMwSqTd7RvaifgwKk9rtHfzE3uDqEE7xBqenp3FqBQt2ExQrtBG2xzlb3AD31ULPXGi7PUSCtKHsG+YtPWnEaAjY7lClxwtI9RdFfFt2AxOnjHKChEhfahoMXGVKMti1w1lVQ3J+huP9rs1rbd1QzjoRBfw2xuu2MA2XXgAqiPpoi+fbXdS1W4Ixr0wkfAdkUCtvNw254OXt2oBjb6IMv93mMY+9a709JjyWkHk486zdhGsjLIOBDaxpi+bfO+iS49d1hoecYUD+4A6wudm+yZLOy1tUN6o3nOxsd9anXU3wfl6JA1TawfmUTLooLbGTP6VchLVG56zTWjopUR1UyjmjUhESaoeDmD2EEgjJMl2G+/LKBk3yuC1fJxAWccxJBRBUzG7l61N8hE0JVG7kpQC7BeXGE3kvBr3gV/4MAYk3kmuxv9nG0cFiPSJc7GdR/75ENjfXk3iJZn/BiGw9k7mELNAsW1grl2reGaN85sN5uAAyThM+gJ6S3tiJ2hTSJ4KSIjJNEAYB1eQYx2kco7aDYzYfV5teJjaPT/QPaG+GwqS6ArIWJtk9DJmuOId0skOagfMqW1jqvMqKxPzutcWxhnN0RNUDWCqt6r8yHCz1rXhNY9neI2WqdFbED4XSw+5xa70oqTyQrvXYRnFrb9i68X62X7/YQ7Q29i0F5GuYR6S1qAeXmHqNBcoVjbwjT3iDZN87ZNVll0uRb68HAs9+QXtuPq3rn4WVpmWdJABLaf3p4vKs71Be2bogQ4c1XSnUv2J4wfMpD2MYw135e5puyK6qgdJzqlJbHJ6mOcsCycsiVRoApojtRVsKVW5iDd+cWZ9MOq9JAYJM4LJ7DdJN5JYR3WfopJ/K5dsVE9UhcMZkkIYnOXDGZXnqx1S0M3JuiUT50yuNVmL94XOQL7c1YlKGTTHskNNe7uNaebtaJE6vvKXgIoXSwQQUM0S7zxzCN/6TsgUeLv4j+Hr2SJkLFNhp0GpfoDH++sg6ifBsv2anNIJw59mGzj4rePK00VkBnqLvp2cV+LUfjvSlc2wBJb2pki2rEzeAXLY9VYKSrt3qKQVOodMVJj7s7ugi1muvJKVrc9WW3WusRSJZqh0DaH4VTtUtX5ZDLJNdKR/PJ+C6oo7vH4xnM/emtfZ8erF9SfnuL9q/7Fu13FBha8ehIqG0GDpNUy0iew1IoONaB0wAB4iMo5UK67R04plKeha6Le8s5ByK8zTBvLzUhhjl5qYkKgOpaiYqfgTLYfvjiZ6DcPaZW2SojExL18QnXLM8gxzaASXHUIbDjs8rXDc13R/i/t2G5nUXYVpYjC9j7xVZOBTeF+zp63ghA859wgu7k/a7J1U3EXCI34fI5rCbW8zgBxQucw1em47dDeBu/+3BG5mWbzmekDkjsRtfDnsZ2qMZyUgIuQPWbjHxfMoLXVk18SzNBISDepOUvIC1WcvImIUO3j8Sh14irOAcBoUaTsss14h1seWC10GFg3iRvH3QT47v/CnWgH+bwC26DmVy2AG8SuQ8SOZ6kXK+TLFyCZbNtNBMXGuVNZoZc+Gp23T6BVst0kSsMXEfCqDxPwsLaYf7tMMi8ImpR1B3KVJ+NTTMmV+JnV+gRd4ezdUc+fCp35iPIont9BMv4M0XqUMY++vyZAoUwky6N53EObmMUxnKYzC6vlNImyxCxbT7zx1bRG9QqVLMlpLTTGYdawOTWbYfvzb2Zkug2OaV0VxmG6K1zaV+BeoGSCFf5pDSi5CEKcR79p1YjqIxrV0MlQukCcorJfIOkU5l123AdnKpQjrNJ6YWpQ1SiLFYH1+3C32wVVBd/W/4M7a/IJ1lfw5q5MtihbieraX1WwGXXY9HCmVgTIPiCWCyMZFFwgB9rSl4gs8l+plk4BygcTDNs069p9gccDbi/Ph6+4zhOZcdLkDrryWBWtB6oM/OOXVTmSvPWef8xkJdWfnUh/vVEqtB87rVZ/9mf9cvNHLR5BaFuKkEhP06KIotiLAy8q9Sd9zlgeuAsXR6QVjBtvk75dStMyqMKT9jI9QSK8MfDv3ENkSM3OpNA9p4KFvHd0dEJ22KidRqN3uQ5VBTKbW+zj8WCroItcGJShvyr8zIyRZlFXJiUWq0Xwgra3sNcBzygH7Lvp1XyqH0vB3gSB4H1ePA3YwbUr9gjlSkjr8siam6VqtPnBJ6glUrsM2ogVPTDJJG7PzeNJLaK4zez3TgO0MXvHh00lttqEqDdjtZ9o5l95wCVss2nAwZIdqoE9HwVBcsxeFDvXQcIZDewDtrM7HYJSD9aRY7VNXqt/O7sxp9WT53LSKOziZqLcmhqaQZU0GCUowon7Eo7y1+l76Ny4Il6muA5dsPR5kT/4/ZEHdyD8M55075cP8yU7pH7EbjRgW9NNrpHq/vHQptNdSz0DXwGUdJYNU5qtJd6cFxGm/j1cUr/6jRV+F45Dde9p+24reRT5n30Cd81t2qx6CV0EpEMkOq40eQat49EYZiO3kYPjGLZM+tjr7+rwdSuG+ppuH/oMbndjWkWWCzx7md05V2oMLez9u9yI1oToLYTFWV2ucrZ1WZUEgZJSutATCSCEYWuPhgIpERic4F8HLKjz9e9h3Qlx3eKPWxwDF1mqfjOU9sNwiN+FPEhXAGV+ljkBehMgASOgjrsN2eJsndo//GkjqsoqyM453otNmp7nG5lZKq7oRq2q18at8DYnUksG5+tb3wNrALNBq3SKnCA95brwQ5dZT3I5na2HuKAxZIwxnEWvmobOHmiLR0cHGVRZhHayyiDRlJ3hEPEia0kXDRbaFKxjUNLZGcxQBxlbOGgsaRlBoGHPfCdN5B0g+ynS+gTyTa38kPWbbLImXKQk1aNF1gEykjsMw8keocxDVZnQY9t4YiXMUKjQ3USxXdQLpmwnTspmVGjIp19d1TOmLH1O6t+m0lFqofvsJwxaBd3WmK7TEWC5Xdczniy1TsvkfmnIp2yFZIzRmxtxdRrWqpK7NAKyh1btr+iEliwKhIrWWE5Y8YoK67KPhJF/Q/jtDWKm8ZRZeKKEsA3kRPRdQFqS8iiNt5km4GAA1B2Pi3ooaXi8KAzyWzssZo3mDhO0BDVCkuE0Ky9BgDgvCwqjafrgaLEZlYEQZ3iDkBh8zOeCejrQMlmHhWV7+bYARA8ZEQI9VgaKF4pZlH5RmUPACCVJipeqTqFwtUVtRiguhlWAJlXUU6FIHNRGE4WhDMk4LG4G/vhnpH0i0rR7v5UhNClDiGRl5I8Epk6xOZC2Bx80DFUVBB1jwfiTiWHCaIP2yTksSdyg2qJjJsr0E3ECb2SlmHOxOT6hjs8G4CHU4UIDM8gSroXbYHl+rfaVg/qsCYOkFiLdXGGhoFKIBx3TQCaIUnvAogIBw0ZokQFSgoyWJwJGSAC4oITDKnpxttbqKk7X/IBmGrpIRQaZlkzAFR7OYiQWhcdBoJYsQjnYWxqf0Dk4udi3hpfcHTP2+O3xLPz/rE6VrNSI7BEU/wx3UpdDnR290OMkFjoy9vA2+hbs4W3ynfOHaEtvoA3wzb7VDN6rfaJRlQrzB5+9NrpKzLYmC20UYSUKz22E4K2iI0n9HkitpQYjyWEwb6AEzJzftFROHnYStDbbld6mi4w4R/gnFVLkYtWX1vZ01UJrcS5qnF7iZPT0Vrc7YmkjRafpYpo5k5RzZrOnZMSMMT+zhULWFdyKSP6zk9F7ZCcnJoxRXI2SoA1u1ZXfGlc1KX8EJ2VikhnTknN2s+cgxIg7XbbuuGMyb+g5X1OAfylNu8WQJBdb/J7Wi7xAmAwalqdNF5s/y/hg4KzANecfncBpmX1AcQAh/q9AwhIvl3ueNb5BfQxS+I9IG4S7z9gzh7eXWBEISIcBWQjSOJKwEs/70ygP4J49wEVRho0nvIaEDRd7lVAES30K6D1fH+rhZ4ENID0rMus1aT/gKThUhcDjnSRk4Fu80VuBSRGzxmdGQeo020xB6SWZhz1IlszXQ6ITMvG2ymIXQukw7/XB0EwgmVeCAbKQOZ3MMBfU56obLQV/BL4hqhstRV5soPNttAFQc4a1e12r7OCCWO2veOWPc4s4IyC/wLdon4PBpI7xYB+GXBYIKEEbXHBpN53+YTMUvZuYFuq4t9AM4+7QelnpYo7A7VnItvqVuLIN40GRE5mdy4XFIGdubHQCUzGtfrA+FBZ5fEr2TGzrmuE4JRYwzmCU1L8ndngobSGL8TYg17jNS5t/ivJsr4Xxag9sIMRwD1nL1YRautcmU+FrkpQWucOMd50BcM5T8iWMP1eFvzKQ+pnob+IkXpWDHDa/OCwil0mPTbkrQpF532UPaHZkSFlMTjEOIvm0uHX5O2WGxIKqReaEBpyQmgkOOLZMY5qKeUEZzEoopm0FTRrNWkNSCBUJh6OWkq9PiVrsNQ3Q0C1yDuDa35tZDLIApE/xjAvDZghCszMc2PIWYNqQY+7BtGE1vqihxc9jhnu79XEQaBVeNF7s9jruWHNj1FvGqXxpgeZonDzOOTHYceabd1EDgS3HmSU8s2kmm+HHdO2eFMpCao9yK/Bm8t+Pw87/mzjJlMYx3uQLQMrsz6PDzuWjL1S648WPswXxZWbkhOIJae2tpITxSkf5FT/yq7HG8SOK25Wek0o7NbVo037cBxET2AV1h8+HMMsEViXG7ihxFHQm4R5uF7H6WPRlay/HATrMIKEe/8RHB58WyVp8fHwqSzXvxwfFxi6OFrFUZ4V2UN5FGWr43CZHb9/9+7n45OT41WFcRxR5xOsY0pbU5nl4SNgUpF7yRLASaso0Wvy9yG6nvWWKy4b59hCs69lb1Md47vC91ljy9oUQP9ufGjkYeUbjxcGr+PoOWzkCm5scXsBaSUpKwnLBlGYhLkgCryXJZtVKosk31ca/U2Xr76oI9Qx20mI+hOP8eGYaT7L72OO4Yz4sx2o1L3NTsFV74pPQRQ6V1ZwnL6dLNv3ikgQ4rNOL5MvFtGdTaaoI9LvFpGIdIoGYvU4EQVVfVLH6J4eImG6r+pISJRolOrL3owKvEFyNSSQi53+eBCWGmcwVA9dPLywGM3XvekW6k7WVff0nGordFNv6XG7C8324i6rUjQ0WJgiU4HJxAsYBUYm6ONNZ74YDyfo413J8K6M8E69iRAOf9dG8977WZxWblkCUDJZH3s+E4Oi7/poWZ6DCN2ebO6jpzBN2amhL5+L2m7j8sl7r1pnk1u75ql3KqwDf9dHm4oHB/6ujybp0alRj2L9lj5ghz1uhpbl0a7lfJMkV5eeEL1N00b9PJVJd52ijXgRvsBNTgiXXnH5IkRmcuhzAu22rvIw+urn4FO4FrOEy6TfEvhnJu7OJskI83LDbkuYNG1UPAPOpkLUNs0MFU7XcSjWUFS6Nro/Ecsy/q6Pdi6WYvxdH20unpvwd3203wZUPZ3BCr9HuYuy6de1kPB5YcLnxe0AZ+gMVvg9nBFl068LRFm+RGaNMllkcmjXEKzDHExyEA5NNuKM2vXJZhvNmaYNkkBCSSIn9OGMsC/HqrFA/fKYxn8CZmMgSNbDrl5w40Gb7yZo/LkYm7bdc4naHqr4fDG9Cq6wmId/TG+YuUieS7+mL2ceXqtOpxNxJVQGfXwfjhYA8v46uEzW9cyDc6WqcD6D2hLwDe6eB1rFZrKqp08QBNn060KlT96JK2jSDFHf96BqzQ5UyR97UH80Re0BNcZsVud9FJN57GoZrsO4hmUPtpY+p0vOi4c+YJxsig3HQx82TragewC+yWFWw0WWPvbJTJNujt6PrTv7YWe2H/mzPDbNAPXkXQ9sk6jBhyyJl8jwDDQ2sRQfuFQzDk9X4cV9KOdxk26MvgBl/jJURZfJUE768C1wh4m3phzKcD/1TQZz/OFW0Ln0awoA+CqtoE20kdAffhqSUZTDWHr64K2wIW29hNuOrOFhZSX7A4Jvih2AqIocIENvM1hKvYLIm8q7XNh1EHEwhSL4ndmVEZ81sQK4bxXDtSnqiIhJclQ+VQP5dFL3MQ9LJ2lh/vBTDyqdqMOFxxh+nyTxY4puJQWMEGTQsHzJVnEaJos63u0CTupcFbI86rX4Ty8FolLen+Ic6jVc14dPJVie+lccvCDZEDvoxw4k2Du6RkfR5pxZc/FYKpZcolLj3JZ7L0mcLoFgANIp6oifobLm0bqvGtpbohr6tcKOpKYzi3clOzIvAAUBkhcdR4rcn/zCn8tNxFzDtR91rLLIUAasbRadpo56A9Jlls+mnGhSCdqtFQDSKXsj7bW1tStRr+KL68u5pNxIqpK7v9W8tA3Y8oFW+UtvQZfHHzTUKVs+0Ct/9q2E0g2WXDuohL0R0capxJWM1jHs9YVUVnAsKWXtcGZ6BjjZap3EYcoeYJHf92BiQD+EmrJKMKMQeQpwGliYQeeqNl8KcamEvRk1leeRqzGDH27QHzHiYuOMl1n6+ybORdaiZIL+kUN3QC0+eCDTLdBlt2tUBkP8zf26Co8oraDN8doP9Xc42mSBMc1HHH7pxGzUiYuOM/LW+EEWsvxa8ERLH0JRyR8N0n5Ux3kOkw2DUn/aK0mZS4J2mUsKfs7GTFLERUfaXjo11bnN4xLAbyU2pKYR2TQNzbkGLFj9SeNAePPwAHKwrF4Zog6EqRSdI+Yw/Qo7P/p6lqKdLkOhIFnDbMy/DNPl+TVjqkJ83pvRoxCt2WwQse846Y+lQYRxhpQrmz/n9yEXIH0sn8SARNreiBYOmurwHMTsFMS12OyOmT2Boo15KsNU46289DhDE7mTtQ8fkTBUggbep9mUWcTXnzSGZpwuIZu+IPf/amwzw1OQrjvvXaPbhnyTnucAzFLOMFGaya6eYHI5XA/OZFfPlUo9V3r1eGE62SzjDCbyduZEihbi2b8Be+7efdVDysMCVJc1PB6Zpof6bQ3XF6fTxVlrRc+ji/Jo1dK87sYAix99U8JC1CDfhWxTYqIk2Hw2g7o8kMtor5IMMM8X5xJInGKA+FsPmb8Z07lYzCWYOEUL8RNI0dt6gFRvHLg4k1Y9F1m45HCrj1o4800JBxUUG0iOV7nL8O624kxa9VzC+fUPtFWCihG78HGVCHKY1XA1WMOVWQ1+Er54U6wlOWwqTQ+1AJtl1tIGRzMPLsii7fozSZLpJkx4dDrRGPe2F/jWAPlU7P14auL4KGJr+90E7exEhnd2Yogo9mSrU0wQL3m9RqToIyYbqYd/naSN6Yn72DPpY286l0hhnaKP6C/md/NfxV7vXaI27nQqaXeVoI/HLn3J7yZofrIpZMwkk02xxYOxSzTGnV70IqNkY+xedlhx43aA7FszuvP4GaAtIFoZxQ9xBKdvcTXCjNr1fZ7K5LBOMUMUy0qTZIg5EavGLlEbt4of4E2vUCQ4ETadQRv/MpFOYk2SIeZZD+iZMapk8ukStXG36yyN7izxwJCGS+ByGNTQH5CBy6FVAwqlhK8n0KzCSw6bbIgtGPJ0ohmu4JxFkGyKzZ2tCJK1sK/Xj3mIo0au/hBt1bl0LfTbatnPobbfTdB4ibg12100xQRLYjLJDJNfFJNJBpib4iyN8pc1MiQXnEv25dOvTbwkJZNMMOWQ5oje5EYOihNNcEVjmEwywRSNXTLJADMI5mEaPgLhQlqURb8OsQ421r9dQYksNGkGqPLlP5dujC5jhdkOgCorWEtz6ebo/Uyx44loG8BnMMKX89uU1318NudxD3/NeCvZQlBppqiCTQSTqo8sWeZTaaao/EKfTtTH9cPoKxlaULyy6suqXycZ2km8SpRls61L2jZBNoO62CgOVIIRHn5gIgAFfzMszWRUjxqTBPk0aoPlHkE+K4J4Caof+CXWhF1r9+TTri1IspJdH1Ip+oi1MSyyP/BzUAAunnlPPo3a/MVcaBFAJeh4oogNDMjvGqZEp3Nm7qi+aCDcTLHYot0+g0SlaPiqrO4BClZe85/xV2ETNXDzHMVEirJnkL/4nO2pIFkdu9lNTrmDPTpFHRHdIMbp4xygYRoXAgtKcQ6dGtA0wGJW3zTsO8Wdb9TzcHg9w+H1r81qzfY7k6RvFc9HgKZT9BG7fSk3GCVZ9OtgYyqS3w3QfPZ+nU4xQAwkTMUJ+njTiS/GwwkGeDhgD+yGl7NnTsFLM+nX8/nlPo9xHGKJywWVQR8f2cMhnXTiPYnxqQz6+JdB4ImBqxR9RP9W0pM4QR8vuPUlgFWKASJ6lgj1iAS2SzbBrmw0bhAwG05Kkke/lhvPlwy/KkUfsT51fYrv45KLMS7NZFiPX9nqc7GKpZl0TZv9KrAjWnJepzEfS0SeS2cWfeyP9CHMoDEn1oFCZijA/kOI38dMl2G+/LKBS6FcGlikL7967ZVsXsC5N+ENxbnE/bFFrrXh3XvRg3mGtshyzAMFW+S+0jLu29kis7pBTyPIN6ymu1TEgvfImo9Z05DfDdBOJGha9xzYXAxZjjG21t1ndaxZsGAUWvVFHeHaZwDwB409YvMgB7NF7D5r7O8ALpKEz0AWTlySRWdWEAOboU0iOHEj+0guEi+dosFPmL95oY3mKJlgvrfr39dp7XF5A3Bt6+8xdmFoX4kjaPLbzfqzHhYPoyVvtAUtMqplBE+UwRhfuAgUZ9HQf6B8ypasKm0+quNURnnsYX/3VRtJCKSDI7laNbpXbQqJobT0YPV8qQ8XpgzT6RQjxBMpot5tfbZaZ0XM2ZZ1nzVkmNvZa+7op+x2baq1S6v8BZlxXn/TQAlOGc+H6ouGVHu/MhKNPmjsRNjyp3rlW1sYGoX4rDdCT8M84lyUqQQ9PNHtG/ldH02MZYLEGr6R3zV1iKiZVIIBngRNb5QgS0b/lh0nzVeN8eqxu3BPb8d9zQw0/EGjz+pom+gF3zxLApAIXPylmfZm5xkUDl2KIZhJhAdRqXG2mO2hxqc8TDcwnXNLF+fQWOaE3/pcywXJGthx2ovNJ++PmFVHZGBZuf3HLmOL0NAvJhI4CDHSiUcer8L8xePmNypBZx0fZejsTIDIJOlpf/6uvPuqsX7crBOBJwHxWWeX/xBuklISWYJOU0e9zB/hDvZPgXk4naKOiP6mkaovOi2twnVwJFEJGiowLtEJ8nzFny5TKRoSEi8F2qj7qrF2RK6V/Lkt8VnHxqR6LEYQC49I2B8FWUStFnL8qjIHbTZHD2GMoyLdhmP6Kwxwd8NRss7Yx/VFrew9p1HLCFCDIdNbWn4iwk7csvl6p+++B+D3DXrfPExGeQGegTd+C34QZxyd5Y36Yu7bC5r288D+vqD5FrKUUDbXxb071QLBDBSJsNRIS52/2MMGZIxE4cJH85Gnv/xDCZVdILqfdLkGajCNlkDywq9lDLlQ6gvIB94upfuqsXvfsMHwNsIxsrOHaRJQvMCl18rl0zQNptHjNPLC40ig/YbQyzaca0f1aZ/6uQQOQ9tWeGb9Kyz41rfGfYvn8SqIncPAqB2oiTFiX+m3rrbrasedbNq92+pYfgupu3mEe/eEnck1I6zsv2hcrlGcSfg7cDydM8AG4jKIsK8aQegHaeJSuf/i44c5/A7b5fBNrAbS5Fksedl9FZZX0MlVlCmHJzTrJAuXYFnhmhzWDACM09dNrbdPgBnbdIqeXSTcqp4nYfHEigCZ8rYv1p/VdzRWajXvbrA084b+KJGWHGd43PAPHt3IHjx6DcpwUhRZFOOLYsntGF7P3nmfg0OtWy+imPg6S7hOhgK0FJjgEnB3V2H+CET6VKm3EYKoxxGf2pr1iQqyTR6J7lWNRbCXIC9Ll3gFcDArvmyS5OPhQ5gU7F2rsKkfjoVdbigVmzyHMmkqHERphzLSotqKSgfkWmI65L0UnL6GW8vPpAzvsF8KikYTJ5X5pKL0iMuysgNzKciMCMtSYjg4B3IjJHMfpUah8Y5kh7yi0xQdpqid1hFAWvYMQnQmMzRhdpI9jsiIm2stJdVF3d3kaqIqHGQJ8bWfgjh0IJbMRggOpICgZx/1hbiVDjvfn+l3PyrjQAD8mb0IQAynQgDx9lQMhC11JQjncQ5uYxRpWksWumK24tAgWUpEC+NOKFrIfZSLnva6Eg0cSgNPj+hFeU0BYQvbigmNZyksDJg7kWGA91FwBtvuSnx8b+7NdJcYTSFbcalwLMWkBnEnHjXgPoqFtK3W4oDe9L47u/Gn1Xv0Go+Ik6VU35QXMJ+GsuQ+BnMgEQxR+7j9kDTViUCgXr7jHs/WfGBeAKD5CLakY4TgDgQH4zoSHjGN+ypHkpa7k6UmhJm+EBElLZUMDbeP8tIR91cUlLvW+UFrFiJKiQREdQZqYWwXry2Oq2moQ9zHlUlfe63FYr6K7tpn2NXffSfKCN51V5AIEsN259vAOBAHiqx9FIaexjqRhVbY3ivvXLhi5hJBwLhSEu+d7F9Y4vZRNPqb7EQ6yPsPDemgitndqTBwlh2B0BxJB0nUPq4txE11tKxoj1TqYwqt1QVX2GqRwaA5Oyir4ZwtOVjgvdQow613I0Cm9/2SwjYC9Aqu/MV07qMAbePOv+aG0aW/uKzdDCXC3Kczt9dw8T/ayVsR3QmCs6mHFhKW1g2wJuoZIbSt2BROVjcS2vZSboQtdiE2dDyoOyoCj2lkKgZFI6SOuJd60O0liQF3I1d9FOvJl2ooIScyNsgLt4oK14JkzExTkcW1I50N6YMOfA+VFUHcX0hbCaNBWUx76ngOJkLVyiylTVyNMzNuBfr3USBVuTK2iOorPA1AFypQubpXKqZ7rji3JqdIQxuceXLFjAL2SWY3d6efDqfcfT/9HGtjgPapXTcanH7yhW0Or1g0y77g4FydQXDA+3h4pdB6V6aCgRfoGqNXRWzNBBGKrZAgCHcmghhuL8VB3E5nIoAeNAX120K6skCXtRYKEs5ahZBYDsWEwt1LeRlouSvBuQ5ONcUFl7AVEghiKRoIwZ1AILR9FANxKx11Pgo2eVfH/9AOcdkWVA9kKWU/gWd9YYZBnAkGSdk+yoe0vdYiQseH0XF3FJXUiz4j6A4edD/cIAV07aOcjOQOybde3S1SXHYEQdkfd0khbXsqLuO4TTIc0HWflBZ3LTZ76FYpo3Af5WdM90qGD2ZulgMgrsVpz90v+6ndRwEb3w2T4YmeO6aksGux2jM3TTF1+yg+47lrMjzQOZoTFnUtMnt0ZCeibB+FZayjO7b9Jkd4/RjOhWefj/Z6ad1LuRr7iI/hiMZRn6ika2HamyNAAV37KC6mR4FNjE70rnYYpyBns7RBQOsv7e+i+YC6HgpKJRxduSB6AqsQM6FYhxGorObg2r8o0eNY92EBqiyHB7Dlz/ES5HDlhh4TPULpR/ifXhIDFJy0yTEP0/gBFOVV9hWkHw//efTPw4NJEocFGjDJw+HBt1WSFr9Em6LMVmGa1q+Gfzx8Ksv1L8fHBa6xOFrFUZ4V2UN5FGWr43CZHb9/d/KP45OTY7BcHbPFa1gllHc/NyhFsUxIISEC1LaGhStYy5KWpA+/Ak4EGtFYgIcDmRR9OGYLfhBIIqr942GcNkezn0CKYsCDpR+WJchTlAtgOg8PkLAhY+5W4I574dHfTQVJlj6W4FtJgpQ5H6qWxahj0VYg91D5peUAHWQQ2l5miy4hXi2vJ8s2GHZVyxLiljHqAD8HEY76/PHwnTYuHRW77oYsS7SB6GDYdkJRR8O2A+liYdvhVNGwia7V7bn6rJVAYNXNL7N0Cb59PPxfuMgvB7P/eVeV+vvBZQ6V4C8H7w7+ty7d3aGdds24nE3d1IGPXvVEURsKBCcCenRwADbUEBtMPSragja1tzsWvbrrYlY1c2taTRKY8ja0NAsmPQqqUur1Ks9OXNzgVzs1VQUfXkhFe59k9/oKW+Dfp9dbAogRuk7qwvfqu7B6xNauG+snmicTL5AtKHRgpjPfBcyVE5hTb+IAxXvvZ7AbQROjyw5sPnOBkuVwFYnMiDf30RMcY936yy3qbVw+ee8dYE+9UxcoUxdCOnXSB/gEJn3Ab/UR61YLxHNY6OrSc4D0eepGzi7CF5AjDR1hNWXfQnS6cJWH0Ve4C/oUrl2QCP/MXHAfAV1uSgdI1fPvU1dIAcjj0MX49icuZMs/dyFZ/tyFavZ/c6oASThnms9fuODX4tZpS0k4Zy1dgCjLl6iYGxkJ1mEOJjkI3apZSxXb+DPWEJsyTl+YgwalHa/LAxiscArE/8c0/hMsZe1TOxqCaJsVeY5i3MYWycXZo5NjptrNrfh8Mb0KrrDUhn9Mb6yUdYP55czDy6jp1Eq3NXA+FHcA8hEh58G5E9QEdkTmltAO0l3/ILSTd86QrFQmhfSjKyRnQM2azx1pLlaRFJ5UyekjzYsHd2BQXp1S5hDvAipNdz2K0Gyw2piFP7o4x2jRTt65gAuyJF4i/wFAOnbaM226Ci/uQ4doC1DmLw4hHUI5Jw32pWM4lyQGAHx127cQ7YefHHasO7DpyrkMO5U6V2ABiLrg/A5FzpW82eDg+PlF8Hu3n+Tu85VhArjrIJAMYBBrXEGdTup+s8b54SceyYxNF9ljHIXJJIkfU/RWLwFYrMIkMYD8kq3iNEwW9QXLAk5WDlD9p5cCUeqoM67rvXsJlqf+lQP6KMDAAWDzlqne3VVVyuaGk3lKVbN6srCV3UH9zqKm1QEuZXXjX8ck1rzmx6Ws7rib8JKaV9tVsRGuJ72n4ju5lvRe4PCD3CkGBqUS2Gc4XToB4hW4IpRyD7aObN9HN7o8mYQ/l5uotIWh49ZanW7egHSZ5bOpfFZTgqkbpomjLFJQzwXfi92p112FGRspBNYQl97C+kzAHuLsWwnlDyy1G6QsOX60ir4bQxdvFliLTrZaJ3GYdkc4xvcP7vWik2sRgixkwe9iRRzmSyMoZSnlA5u9Whmdpb9v4tyJLVazs+9ORq2mOg5Ofvmhj7e5X3cvzpneNO7zCTD99JbmNoUo68YsmghDp0kKD2FD0a6tPkXre0GoPs3NHQ8xwkZP/KDiq9V7aPj3GQgogRSVGrE1NHgOkw2w1r5bOhkQ19y+/ahfe110JJGdc28QvFqRdWfZcpvHJYDfSmwvazerrkGHYErP6ebhAeRgiTvLFisJ06/eE4i+nqWolF3zpv5lmC7Pr6VmITbb5N4Xjl+tmCpYmCnhuLzguQBwd/JkdxWwt2qOe6Ty1YoO9USoHouJolZLVuYlSsOF83s9Lzqdrm6fr/0+uhx57tyAnPSdNdX8k0+zaWE9fcTpMk4fv2RpBCoN5GZyu0ZXC/kmPc8BmKU9JoFqulGAGUwunWNeWWJ6YTrZLOMsiEKp7bMq0Nm/QXcUbwySo8AQ+E7FGurbGi4NTqeLs9bS2xbyHF8Nu0FBhCHb+GxTYvrcoHogd0Tf+UJqvasH9Js7mhaLuS1QoxpJPWKLeZGFdqtYiDHflFDuoSBA2rzKc8Lu9AtiXj6D/A+0lYCqB7tFOQO8cgToJ+GLN8UqyBqqAJtl1lIIh5ctInYVTZLpJkycYt26ADu1m6BaFCctQ7rsxBWQ1PBdE+jSWldgoGTT4+erg+Q56TFvOncjQJ6/mN/Nf5X6zepgTaduGme77Opg/GRTOGJUjeZkoDRY0wuXaE6beeuItjx+BmjzgGb/+CGO4LzmAvfz1JGQYCAnnVohTZyom8rf2Jte4atae7zLxJWOr5DO3EG50c86XpzquOgiEktwv3e0HqCCu7UqIAo6gg+Jkea17t4OzX5otVj2G14azcFW93r9mIc4COHqDwc7rttqnekIxroXGxz7lViLZL0Uq5A2xVka5S9rZFNNHdlYwTpZCdVIDoG8yY0jLAfjp0ZyMHYqpCCYh2n4CFys1Nzprw7JTTe6Wz+ScI6a6WwFScG5bamDNWSD54xrDjnmiFtuVqAElP0SFIO5WTMSUNaLxuo+PIy+ksGjnCwJMDIZrsTJskWA6oxWub+2Lg623QpAUThYMjeYTpsMgR5BPiuCeAmqH9iwK7FcuVWwQZKVvXdHWmC17SKK2uXnoACp5e7NX8wd3brBOdsR0vR0bqdCoY7CMof2bVZAZ6t7gEIg19y3w8pzFAkkyp5B/uIT1mJGaM3eYkocdwwHZ1bz8AzRhcUcoPEVF07sjC4ypFLtjGyddChkzDMcM//arNaW3dmMxL6Ik1pA3e7FVk02iPJoWHowvuVtWAsUuOHUdCKNqqmHg61kId9fzp5tFWkbkOnlPo9xUEW7zSdppI6UxYlnFyi9wbsMAmnYMC0g/9ZNJwS3viMgFLUZMd4RWnVFeoMev7BT1Q3kjee7kf/6oOopvo/LnoCk+ph+ZQnaE2BRw2DPrwJ0oXLXaewiUEAde8CRR38TIGCGYuI+hPiZ3XQZ5ssvGzjr53bgldhcwMkmGXLZtbECq5XD3fvJd2IFZjlCnO00EGffI1sQuym0hbE7KsV2C8iEwQplFizsxvW1b1e+jUBtt7gHGCMJn8FwLFFFHegEZhLBCQhZ1fQED1TjEwRo3uyxwWFX8tabUHvLO3frb7SlwIHNrFHsZIc2pULWVS7xHCw/5qB8ypZ2eqwyCLE8jqxBrDDcXKM0KHZ6qHofxIerJzvmEkCWN2rZap0Vsa0E2u7Spnbr+cpFw1pXXQSndnalC+9Xu1WwZfn2Stp60J2GeUQ4VBnjODj6b2CcgFgadrS3LJZtcnODVBnk+HaKLfAsd27XlmOmdolBzzzmWRKAhHIsVBzM6n6dxffi8NTuaT/lYbpJwtxJaPZvznze5nFqiKXemdVJBFg2foPfR8/6ebwK8xdvwKNVcXEYZeiIwg0a0lvWl1zTzTqxt7mcgocQbt0Zj1EjqMv8EW52/qTs80xj0qC/bTEat14H5JzGJTpVm68sg37dxktqDBvHpMOuGU6i2zVh1S1bBicEE6/cwjYaY/U2Wxd/A1tgGlAiwxkjJkIRtRr3e3pUTi04wl9dlThTAdyCwDzA5dvYVX9jGs+TnmFIk2r1oDtuyTXHKCOX00hm4sBhjPYWJ9PX34kCdftm29szU1p07dkzU3sd2W47E4ayTrgu7r8TDfB9R07u4iwVthIoCMJsvPzxBZGYXUf4rgye0K3Zm6SOozAXkMOFi63+prAnBS2DjAJb1gVHUJLncQKKF7h4Wn0nEuhiqvayDWF9yAU3sxnxkN/I3uKN11vgNZ6a6sg9bwzfFsO/E1aTGwhzjW/r8D1eX12uEafi9DF40/7sIjJ3sWIYse/8MIdfEI1vvbYFdl+vkyxcgmW1DvtOeN406vYJtKI+7K+kbPYE9wDnSVjY+Uh8t7sJcnIx2ZtOrkyCoFalrB51u5r4M7OacTmbupvXsExC0HZF3byagB4ysXozoQawocb35t7MRAzaglah5b3ARBDqYnbvMkRQH9Q2mkaPMtDlbWi5Dk4NKKhKjbCZb1Yu38cMdcM+vrDbZcGkKLIoxn1KXTpVt1re54Bh+1m6PFhkqBL0EmNNQQCShyP8G+sCZKoDq4KT7NHRCdeUDoGoiUKivtOIf+PgYGeDvLoe87K0KPMQMoOXjDiN4nWYELQzeRTlB3GyRWNTpmCN3itLS0EDVaprHjflq2yRGWEeav2HY6KDNfq9fS/1rfu32P30E7c7kQL0VC375JBUBgx6cEAmJiWNhH+PIgO6nWMpC6ghKtUIX4zaoSSQ92FyQVDotr1VBqo9s2Vl0Lw0vZO+rx/2ghucEbu8qoQCaT695o6u26DUx/WGd8d97M/eenncXq6PF3bZz5Jnt7uOajOQXdV93OtOFzdu5z1PHe7ssvPpIxqpCFTvaJO9Vn/Z684XvP69854XHKrtsv+rwzFpv9evYJM91nza654Xvd69864nTjB30uX4hc2zG3/q4xeHZX2F35Qme6r6oNXf7RutLE71cZQ+59/CHqfHxe/PSupqH0PdWY/j5/6YBx77O598/LLtuOqjlhCwr0qSkFzaaCLBv7s6jlj0vqHZIx3tS467lZAmlNN2RGNX+mFbwqCtI3YvBd2bkVuTgMFZ5pX2vNpCkHjbfkfdDtfHd5JXPKmlf5uH2QB037W6Hj0TyyCNtwEQt2+cvufev5VUQ70uu7OeJ96IlXc+EeCP6jLy+752viw44W47n33Yd2f9Lz131uutvT2+V+2QLR/fI9bveKJvjyBEm1envb/NWX5L/a0+wTNs3nGv7/DudptSsOXbW2Vp2J/r21oa1O5vXRwG7W4K2NaRkK7Q7fhUqIjumGBXffogKOhZAP/WG/9sZC0KjkscRxTYUG3jSEJ/EDGZOBS7XBJwESuI6B69UsGE72FkhE3VvC/oAozQlwbE97HkpC8s0ThSI42nIhcYQaSS3SsTTAvqrlG1iZ3kvTJ9YiSOO1Uo4jhEGhOOOLgNv3Lgcry6SUkhjM9IYmUyTckDVe2jnCnooi0J2l7oq92JmpEG2zNZQwpV5bzMfnZzJJOva5YzF87dLp3RNq6jeuA0zcHKZ5t3Zlta36ju0Fk279xyCrn2jXpssm2bqW0dlmhYTLVelzvtaNKB8s1CcvxO5xxed9n718GptM9RxD2yq/Dvve5vLkbgznu7cSneYR+jeHR3wmAXBh2l1OE4Ah6PVX0epeM1esRJ3/Mx/iS1EVHidiICdLCTkR2bmMgqlO5gkl6zC0xfABlJjTt1eOJlYFTHpzcp6JGCXTpEMXKwVceoXQvFNh2lDCRj9w5TjHBs1XFq18KxtW2CgWTsi0MVIx9bcqzatWRsz9HKQDR27XDFiMToJ0a7FoZtnSAZiMJuT5JYQdjiidKuZWKfp449OWlipGPcE6ddy8OWTqAMpGGLJ1FnOOIaeqQUlgB5G7ttCeA6tyjR4yT3ocARC5UKQNnmr59oP2sDuNU92aYE0RNYhR8Pl/cZ7OoqBlydWAiEhMZvDrg4+CZBhF6lDYPjbTOHjL+KYGHCMCZlUMphU6miOogMw3XhqGY849FXIdOfhiG7nSOH2yWJwJvU4SrqGYTDr7+LwHHSMHKzeuWgmwQRdpU2DF6thTjo6rMIGKWowVYOp0LoKkkGXznLqlRReUcKq6iSZFXMsQXmUBWcKzVXE5dDVCHnIq4gS2JJksqREmbnVCjC7lIldXQZhqoiXdj4qshUYVVkhiEhKEScwl+FXV8ocIq3UOMr4LIIa+MN8xTaw9osiVrH5pG0lc6mMi0RNsCCuYlIFU9QhHWz2ozC2dpI5hYun3yWYbIOU4JXely9+KuoFpigOsFXt06SSb5KlE/0KF1lZmtf3RHNbV2ieHZr0pUqQs/NCCvBCZIKYJqCxiDeVxFoDDJVqDG6DIp1yWrpwR8EZt/B4KvgcogqYzIprA/aNxwES4QuTbhKaJIVRgmzheEHDJNBOHaoPMOVtg9ocLW1KaJq6kQen9g0CNe2OPjyAZGLX+Dy8ZmpTSCxeIU1CFenVH7BwhqXo74zrTimm6HbxC7O8FBLJRGJX0GDhSF1Bc0dDr1rSzx/w0mUw78dNZb2OpS2tcc5UZfUHfQrESRV0EJZCFWrhtF7dVyk+eSwOf6sv0Hstfm+N6nbVktbJbsXFV4DE6R2H3fbROaeUt7QvgtN0bk0QXP9ZbcNrS/c5A0U3cgJ7+QIIptPO2oaE7FP0La+mH6C+yWCyOpDT8PY05G2VPXRSePEwekk7VSIZMc1gDx7aRswF7w/T5WUHKlgAC7NHSO6GGx9HJBEanPU9G30OhFqTCbSkmBkDhs5OBgMGkcF1BI0TR5wi9Ww7ClYo2dlx1tsebaco8aRMaMk7ZOGlaJJ5E/fKlLlx2pbaiK1FBQ3sSfcgx6JO1ibiiMASYdhb6ggq+aONQbFwW5kDdzitmrkBg/urIbjvlguGLYkwOLoJaIGK8Q5oZtc0CKMf/f1qOQMvirMJbpoel+oDjELlIN7sKwQH/E3jGFTe1fI3IF9vUwmvruVC8L5e0gwZH7idpJhxz7jwzOFqAvS4zTdiA2CsS+5KCG0AJdjj4aXekABfR4qSdkoTNy6JLK+8pIBqLaI0h14jlhoOg1zzuCyebjfa9xO94y0ziD9nuWnLLyRq+WqYgtHR7Q9Zk/b5Habr+GEDBkWyhvHmR1S5BHXz5g2/HunzSG9NqWtkrp2mhErKEXenhMlq8/WTRV4JwraOuTDaHUML75SrYSASRqhueIbh2GHvdfa5L4bCSX3NEc3EztkwfCNhYYrlrVe3iEj5DcaCr5GDm42dth02SJj0KPGcrGxyyYPLULUnUhes9BLFilDPhJWi5Uxmts8q94a+bdpH44ra6D6A/xZZnn4CNDRd1Lgrx+OFxtYelU9yP5hCor4sYP4ADFTEFFOBW2eWfqQNb4NDEVNFubJ+Dkow2VYhpO8jB/CqITJESiKOH08PMBv0n88PFvdg+UsvdyU600JmwxW9wm140Y+En31fzjmaP5wucY2XS6aAMmMYRPAZXq6iZNlS/e54Ll7CQQ6hfoEUmzVBvuyhP8Hjy8t0pcsVQSq2df6jFyB1TqBYMVlGoTPwIS26wJcgMcweoHfn+MlsmOUgQx3BM32D9M4fMzDVVFjdOXhTyjDy9W3//z/gU42XescAwA= + + + dbo + + \ No newline at end of file diff --git a/DiscImageChef.sln.DotSettings b/DiscImageChef.sln.DotSettings index 5cf64c537..1235e3f99 100644 --- a/DiscImageChef.sln.DotSettings +++ b/DiscImageChef.sln.DotSettings @@ -176,4 +176,5 @@ </Entry> </TypePattern> </Patterns> - True \ No newline at end of file + True + True \ No newline at end of file