diff --git a/Results/Entities/TestRslt.cs b/Results/Entities/TestRslt.cs index 1c40d85ed..60d1f5739 100644 --- a/Results/Entities/TestRslt.cs +++ b/Results/Entities/TestRslt.cs @@ -168,6 +168,8 @@ namespace Results.Entities VolumeCTV = src.VolumeCTV; VolumeMaster = src.VolumeMaster; ErrorMaster = src.ErrorMaster; + DiverterStart = src.DiverterStart; + DiverterEnd = src.DiverterEnd; ErrorFlags = src.ErrorFlags; ErrorFlagsMd = src.ErrorFlagsMd; RefEnergy = src.RefEnergy; @@ -252,7 +254,7 @@ namespace Results.Entities public virtual string ToString(int i) { - return string.Format("TestRslt: Part={0} RepetitionNr={1} TestDone={2} Remark={3} StartTime={4} EndTime={5} FlowSetTime={6} TestTime={7} PulsesMaster={8} ConstMaster={9} MassStartRaw={10} MassStart={11} MassEndRaw={12} MassEnd={13} DensityIn={14} DensityOut={15} DensityDiv={16} Buoyancy={17} FlowMass={18} FlowVolume={19} VolumeCTV={20} VolumeMaster={21} ErrorMaster={22} ErrorFlags={23} ErrorFlagsMd={24} AmbTempMean={25} AmbTempStart={26} AmbTempEnd={27} AmbTempMin={28} AmbTempMax={29} AmbPressMean={30} AmbPressStart={31} AmbPressEnd={32} AmbPressMin={33} AmbPressMax={34} AmbHumiMean={35} AmbHumiStart={36} AmbHumiEnd={37} AmbHumiMin={38} AmbHumiMax={39} PressUpMean={40} PressUpStart={41} PressUpEnd={42} PressUpMin={43} PressUpMax={44} PressDownMean={45} PressDownStart={46} PressDownEnd={47} PressDownMin={48} PressDownMax={49} PressDeltaMean={50} PressDeltaStart={51} PressDeltaEnd={52} PressDeltaMin={53} PressDeltaMax={54} TempUpMean={55} TempUpStart={56} TempUpEnd={57} TempUpMin={58} TempUpMax={59} TempDownMean={60} TempDownStart={61} TempDownEnd={62} TempDownMin={63} TempDownMax={64} TempDivMean={65} TempDivStart={66} TempDivEnd={67} TempDivMin={68} TempDivMax={69} FlowMean={70} FlowStart={71} FlowEnd={72} FlowMin={73} FlowMax={74} Custom1={75} Custom2={76} Custom3={77} Custom4={78} Custom5={79} Custom6={80} Custom7={81} Custom8={82} Custom9={83} Custom10={84}", + return string.Format("TestRslt: Part={0} RepetitionNr={1} TestDone={2} Remark={3} StartTime={4} EndTime={5} FlowSetTime={6} TestTime={7} PulsesMaster={8} ConstMaster={9} MassStartRaw={10} MassStart={11} MassEndRaw={12} MassEnd={13} DensityIn={14} DensityOut={15} DensityDiv={16} Buoyancy={17} FlowMass={18} FlowVolume={19} VolumeCTV={20} VolumeMaster={21} ErrorMaster={22} DiverterStart={85} DiverterEnd={86} ErrorFlags={23} ErrorFlagsMd={24} AmbTempMean={25} AmbTempStart={26} AmbTempEnd={27} AmbTempMin={28} AmbTempMax={29} AmbPressMean={30} AmbPressStart={31} AmbPressEnd={32} AmbPressMin={33} AmbPressMax={34} AmbHumiMean={35} AmbHumiStart={36} AmbHumiEnd={37} AmbHumiMin={38} AmbHumiMax={39} PressUpMean={40} PressUpStart={41} PressUpEnd={42} PressUpMin={43} PressUpMax={44} PressDownMean={45} PressDownStart={46} PressDownEnd={47} PressDownMin={48} PressDownMax={49} PressDeltaMean={50} PressDeltaStart={51} PressDeltaEnd={52} PressDeltaMin={53} PressDeltaMax={54} TempUpMean={55} TempUpStart={56} TempUpEnd={57} TempUpMin={58} TempUpMax={59} TempDownMean={60} TempDownStart={61} TempDownEnd={62} TempDownMin={63} TempDownMax={64} TempDivMean={65} TempDivStart={66} TempDivEnd={67} TempDivMin={68} TempDivMax={69} FlowMean={70} FlowStart={71} FlowEnd={72} FlowMin={73} FlowMax={74} Custom1={75} Custom2={76} Custom3={77} Custom4={78} Custom5={79} Custom6={80} Custom7={81} Custom8={82} Custom9={83} Custom10={84}", Part, RepetitionNr, TestDone, Remark, StartTime, EndTime, FlowSetTime, TestTime, PulsesMaster, ConstMaster, MassStartRaw, MassStart, MassEndRaw, MassEnd, DensityIn, DensityOut, DensityDiv, Buoyancy, FlowMass, FlowVolume, @@ -267,7 +269,8 @@ namespace Results.Entities TempDownMean, TempDownStart, TempDownEnd, TempDownMin, TempDownMax, TempDivMean, TempDivStart, TempDivEnd, TempDivMin, TempDivMax, FlowMean, FlowStart, FlowEnd, FlowMin, FlowMax, - Custom1, Custom2, Custom3, Custom4, Custom5, Custom6, Custom7, Custom8, Custom9, Custom10); + Custom1, Custom2, Custom3, Custom4, Custom5, Custom6, Custom7, Custom8, Custom9, Custom10, + DiverterStart, DiverterEnd); } } } diff --git a/Results/Entities/WaterMeter.cs b/Results/Entities/WaterMeter.cs index d4a2da483..ff59dcdd8 100644 --- a/Results/Entities/WaterMeter.cs +++ b/Results/Entities/WaterMeter.cs @@ -174,6 +174,8 @@ namespace Results.Entities { #if PUCHONG_PT200 return Passed ? "OK|Green" : "NG|Red"; +#elif LANG_PL + return Passed ? "+|Green" : "-|Red"; #else return Passed ? "OK|Green" : "NOK|Red"; #endif @@ -263,6 +265,7 @@ namespace Results.Entities EndStateAux = src.EndStateAux; QRise = src.QRise; QFall = src.QFall; + ErrorFlags = src.ErrorFlags; Passed = src.Passed; ResultCode = src.ResultCode; ArchivePath = src.ArchivePath; diff --git a/Results/ItemID.cs b/Results/ItemID.cs index ffe49ed10..d2fa62ab0 100644 --- a/Results/ItemID.cs +++ b/Results/ItemID.cs @@ -174,8 +174,12 @@ namespace Results User_description, /// 154 Legalizator, /// 155 - Passed_meters_count, /// 156B - Failed_meters_count, + Passed_meters_count, /// 156 + Failed_meters_count, /// 157 + Passed_seals_count, /// 158 + + Diverter_start_time, /// 159 + Diverter_end_time, /// 160 Count, } diff --git a/Results/Output/Printers/Zapiska/ZapiskaPrintDocument.cs b/Results/Output/Printers/Zapiska/ZapiskaPrintDocument.cs index 6b77b48b1..c3141e43c 100644 --- a/Results/Output/Printers/Zapiska/ZapiskaPrintDocument.cs +++ b/Results/Output/Printers/Zapiska/ZapiskaPrintDocument.cs @@ -250,11 +250,11 @@ namespace Results.Output.Printers.Zapiska /// This variable represents the top coordinate of the area where WM results are printed /// and it is updated (increased by) the value returned by PrintXyzWM() - the section size. - int nextWmTop = (pageNr == 1) ? BodyTop : cfg.TopMargin; + int nextTableTop = (pageNr == 1) ? BodyTop : cfg.TopMargin; if (tablesOnFirstPage > 0 || pageNr == 2) { - PrintWMs(e, batch.WaterMeters, nextWmTop); + nextTableTop += PrintWMs(e, batch.WaterMeters, nextTableTop); } e.HasMorePages = (nrPages > 1) && (pageNr == 1); @@ -298,8 +298,8 @@ namespace Results.Output.Printers.Zapiska /// Write aligned columns for (int i = 0; i < Math.Min(leftColumn.Length, rightColumn.Length); i++) { - PrintAt(e, lMargin, nextWmTop + SpacingOne * i, leftColumn[i]); - PrintAt(e, lMargin + leftColWidth + GapBetweenCommonColumns, nextWmTop + SpacingOne * i, rightColumn[i]); + PrintAt(e, lMargin, nextTableTop + SpacingOne * i, leftColumn[i]); + PrintAt(e, lMargin + leftColWidth + GapBetweenCommonColumns, nextTableTop + SpacingOne * i, rightColumn[i]); } } diff --git a/Results/Properties/AssemblyInfo.cs b/Results/Properties/AssemblyInfo.cs index bd8cd28ed..d119c2bb4 100644 --- a/Results/Properties/AssemblyInfo.cs +++ b/Results/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.17.674.0")] -[assembly: AssemblyFileVersion("2.17.674.0")] +[assembly: AssemblyVersion("2.17.675.0")] +[assembly: AssemblyFileVersion("2.17.675.0")] diff --git a/Results/WMeterRsltItemSpec.cs b/Results/WMeterRsltItemSpec.cs index c74600c8d..e64686cb6 100644 --- a/Results/WMeterRsltItemSpec.cs +++ b/Results/WMeterRsltItemSpec.cs @@ -57,26 +57,33 @@ namespace Results } public string Print(WaterMeter waterMeterResult, string testId) { - string str = printDlgt(waterMeterResult, testId, Units, Format, Precision); - if (str == null) str = string.Empty; + try + { + string str = printDlgt(waterMeterResult, testId, Units, Format, Precision); + if (str == null) str = string.Empty; - int len = str.Length; - if (Width == 0 || len >= Width) - { - return str; + int len = str.Length; + if (Width == 0 || len >= Width) + { + return str; + } + else if (Alignment == Config.Entities.Alignment.Left) + { + return str + new string(' ', Width - len); + } + else if (Alignment == Config.Entities.Alignment.Right) + { + return new string(' ', Width - len) + str; + } + else // Alignment.Center or Alignment.Justified + { + int nrSpaces = Width - len; + return new string(' ', nrSpaces / 2) + str + new string(' ', nrSpaces - (nrSpaces / 2)); + } } - else if (Alignment == Config.Entities.Alignment.Left) + catch (Exception) { - return str + new string(' ', Width - len); - } - else if (Alignment == Config.Entities.Alignment.Right) - { - return new string(' ', Width - len) + str; - } - else // Alignment.Center or Alignment.Justified - { - int nrSpaces = Width - len; - return new string(' ', nrSpaces / 2) + str + new string(' ', nrSpaces - (nrSpaces / 2)); + return string.Empty; } } @@ -122,7 +129,7 @@ namespace Results /// Common AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_name, Strings.Test + "()", Quantity.String, ItemCategory.TestData, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).Name())); AllItems.Add(new WMeterRsltItemSpec(ItemID.Procedure_name, Strings.Procedure, Quantity.String, ItemCategory.Other, (w, t, u, f, p) => w.ProcedureName())); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Batch_number, Strings.Batch_nr, Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => w.BatchNr().ToString())); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Batch_number, Strings.Batch_nr, Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => FormatInt(f, w.BatchNr()))); AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_method, Strings.Test_method + "()", Quantity.String, ItemCategory.TestData, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).Method())); /// @@ -156,11 +163,17 @@ namespace Results AllItems.Add(new WMeterRsltItemSpec(ItemID.Density_correction, Strings.Density_correction + " ()", Quantity.Density, ItemCategory.TestResult, (w, t, u, f, p) => DblFormat(u, f, p, "V3", (w.Batch.DensityCorr)))); /// - /// Time (duration), date and time + /// Date and time /// AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_start_time, Strings.T_start + "()", Quantity.DateTime, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : (string.IsNullOrEmpty(f) ? w.GetTestRslt(t).StartTime.ToString() : string.Format(f, w.GetTestRslt(t).StartTime)))); AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_end_time, Strings.T_end + "()", Quantity.DateTime, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : (string.IsNullOrEmpty(f) ? w.GetTestRslt(t).EndTime.ToString() : string.Format(f, w.GetTestRslt(t).EndTime)))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_time, Strings.T_s + "()", Quantity.Time, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : DblFormat(u, f, p, "V3", w.GetTestRslt(t).TestTime))); + + /// + /// Time (duration) + /// + AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_time, Strings.T_s + "()", Quantity.Time, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : DblFormat(u, f, p, "V3", w.GetTestRslt(t).TestTime))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Diverter_start_time, "Diverter start time ()", Quantity.Time, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : DblFormat(u, f, p, "F0", 1000.0 * w.GetTestRslt(t).DiverterStart))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Diverter_end_time, "Diverter end time ()", Quantity.Time, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : DblFormat(u, f, p, "F0", 1000.0 * w.GetTestRslt(t).DiverterEnd))); /// /// Flow @@ -269,8 +282,8 @@ namespace Results /// Water meters results AllItems.Add(new WMeterRsltItemSpec(ItemID.Serial_Nr, Strings.sn, Strings.Tooltip_sn, Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => w.SerialNr)); AllItems.Add(new WMeterRsltItemSpec(ItemID.Purchase_order, Strings.PO, Quantity.String, ItemCategory.Other, (w, t, u, f, p) => w.PurchaseOrder)); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Year_of_production, Strings.Year, Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => w.YearOfProduction.ToString())); - AllItems.Add(new WMeterRsltItemSpec(ItemID.WM_Position, Strings.Pos, Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => w.WMPosition.ToString())); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Year_of_production, Strings.Year, Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => FormatInt(f, w.YearOfProduction))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.WM_Position, Strings.Pos, Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => FormatInt(f, w.WMPosition))); /// Water meters results (single) AllItems.Add(new WMeterRsltItemSpec(ItemID.End_state, Strings.End_state, Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => w.EndState)); @@ -289,7 +302,7 @@ namespace Results /// Batch info AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_bench_ID, Strings.Bench, Quantity.String, ItemCategory.Other, (w, t, u, f, p) => w.Batch.TestBenchId.ToString())); AllItems.Add(new WMeterRsltItemSpec(ItemID.Program_version, Strings.Ver, Quantity.String, ItemCategory.Other, (w, t, u, f, p) => w.Batch.ProgramVersion)); - AllItems.Add(new WMeterRsltItemSpec(ItemID.User_nr, Strings.User_nr, Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => w.Batch.UserNumber.ToString())); + AllItems.Add(new WMeterRsltItemSpec(ItemID.User_nr, Strings.User_nr, Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => FormatInt(f, w.Batch.UserNumber))); AllItems.Add(new WMeterRsltItemSpec(ItemID.User_name, Strings.User, Quantity.String, ItemCategory.Other, (w, t, u, f, p) => Users.Entities.User.EncodedStrToUserName(w.Batch.UserName))); AllItems.Add(new WMeterRsltItemSpec(ItemID.User_description, Strings.User_description, Quantity.String, ItemCategory.Other, (w, t, u, f, p) => Users.Entities.User.EncodedStrToFullName(w.Batch.UserName))); AllItems.Add(new WMeterRsltItemSpec(ItemID.Legalizator, Strings.Legalizator, Quantity.String, ItemCategory.Other, (w, t, u, f, p) => Users.Entities.User.EncodedStrToLegalizator(w.Batch.UserName))); @@ -298,11 +311,12 @@ namespace Results AllItems.Add(new WMeterRsltItemSpec(ItemID.Batch_start_time, Strings.Start, Quantity.DateTime, ItemCategory.Other, (w, t, u, f, p) => string.IsNullOrEmpty(f) ? w.Batch.StartTime.ToString() : string.Format(f, w.Batch.StartTime))); AllItems.Add(new WMeterRsltItemSpec(ItemID.Batch_end_time, Strings.End, Quantity.DateTime, ItemCategory.Other, (w, t, u, f, p) => string.IsNullOrEmpty(f) ? w.Batch.EndTime.ToString() : string.Format(f, w.Batch.EndTime))); AllItems.Add(new WMeterRsltItemSpec(ItemID.Lite_per_pulse_Read, "1 / PlsPerLtr_Read", Quantity.PulsePerLtr, ItemCategory.Other, (w, t, u, f, p) => DblFormat(u, f, p, "V4", (w.WaterMeterData.PulsesPerLtr != 0) ? 1/w.WaterMeterData.PulsesPerLtr : 0))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Passed_meters_count, Strings.Passed_meters_count, Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => w.Batch.PassedMetersCount().ToString())); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Failed_meters_count, Strings.Failed_meters_count, Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => w.Batch.FailedMetersCount().ToString())); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Passed_meters_count, Strings.Passed_meters_count, Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => FormatInt(f, w.Batch.PassedMetersCount()))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Failed_meters_count, Strings.Failed_meters_count, Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => FormatInt(f, w.Batch.FailedMetersCount()))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Passed_seals_count, "Seals count of passed meters", Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => FormatInt(f, w.Batch.PassedMetersCount() * int.Parse(w.WaterMeterData.Text5)))); /// Extra water meter data - AllItems.Add(new WMeterRsltItemSpec(ItemID.Result_code, Strings.Result_code, Quantity.Number, ItemCategory.MeterResult, (w, t, u, f, p) => string.IsNullOrEmpty(f) ? w.ResultCode.ToString() : string.Format(f, w.ResultCode))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Result_code, Strings.Result_code, Quantity.Number, ItemCategory.MeterResult, (w, t, u, f, p) => FormatInt(f, w.ResultCode))); AllItems.Add(new WMeterRsltItemSpec(ItemID.Remark, Strings.Remark, Quantity.String, ItemCategory.TestResult, (w, t, u, f, p) => w.Batch.Remark)); AllItems.Add(new WMeterRsltItemSpec(ItemID.Meter_type, Strings.Meter_type, Quantity.String, ItemCategory.Other, (w, t, u, f, p) => w.WaterMeterData.Compound ? Strings.Compound : (w.WaterMeterData.HeatMeter ? Strings.Heat_meter : Strings.Single))); @@ -351,6 +365,18 @@ namespace Results public static int TableColumnNr; + public static string FormatInt(string format, int value) + { + if (string.IsNullOrEmpty(format)) + { + return value.ToString(); + } + else + { + return string.Format(format, value.ToString()); + } + } + public static string DblFormat(Config.Unit units, string format, string precisionOrEmpty, string dfltPrecision, double value) { return DblFormat(units, format, precisionOrEmpty, dfltPrecision, value, CultureInfo.CurrentCulture); diff --git a/TestBenchFramework/BenchControl/Output/Printers/Zapiska/Printer.cs b/TestBenchFramework/BenchControl/Output/Printers/Zapiska/Printer.cs index 7f57e61ae..9ebefa714 100644 --- a/TestBenchFramework/BenchControl/Output/Printers/Zapiska/Printer.cs +++ b/TestBenchFramework/BenchControl/Output/Printers/Zapiska/Printer.cs @@ -191,13 +191,20 @@ namespace TBF.BenchControl.Output.Printers.Zapiska GoodOnly = printerCfg.GoodOnly, CultureInfo = culture, Header = printerCfg.Header, - ColW1Pct = printerCfg.ColW1Pct, + ColW0Pct = printerCfg.ColW0Pct, + ColW1Pct = printerCfg.ColW1Pct, ColW2Pct = printerCfg.ColW2Pct, CommonItems1 = printerCfg.CommonItems1, CommonItems2 = printerCfg.CommonItems2, CommonItems3 = printerCfg.CommonItems3, SelectedItems = printerCfg.SelectedItems, - Footer = printerCfg.Footer, + BelowW0Pct = printerCfg.BelowW0Pct, + BelowW1Pct = printerCfg.BelowW1Pct, + BelowW2Pct = printerCfg.BelowW2Pct, + BelowItems1 = printerCfg.BelowItems1, + BelowItems2 = printerCfg.BelowItems2, + BelowItems3 = printerCfg.BelowItems3, + Footer = printerCfg.Footer, }; new Results.Output.Printers.Zapiska.ZapiskaPrintDocument(batch, cfg).Print(); diff --git a/TestBenchFramework/BenchControl/Sequences/MainSeq.cs b/TestBenchFramework/BenchControl/Sequences/MainSeq.cs index e0ab72bf1..0784a2e52 100644 --- a/TestBenchFramework/BenchControl/Sequences/MainSeq.cs +++ b/TestBenchFramework/BenchControl/Sequences/MainSeq.cs @@ -1389,11 +1389,13 @@ namespace TBF.BenchControl.Sequences for (int i = 0; i < batchResults.WaterMeters.Length; i++) { WaterMeter wm = batchResults.WaterMeters[i]; + wm.Disabled = true; foreach (var wm2 in oriBatch.WaterMeters) { if (wm.WMPosition == wm2.WMPosition) { wm.CopyContentFrom(wm2); + wm.Disabled = false; break; } } diff --git a/TestBenchFramework/Properties/AssemblyInfo.cs b/TestBenchFramework/Properties/AssemblyInfo.cs index 6e6d03508..f4684b7a7 100644 --- a/TestBenchFramework/Properties/AssemblyInfo.cs +++ b/TestBenchFramework/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Runtime.InteropServices; // Build Number // Revision // -[assembly: AssemblyVersion("2.17.674.1")] -[assembly: AssemblyFileVersion("2.17.674.1")] +[assembly: AssemblyVersion("2.17.675.1")] +[assembly: AssemblyFileVersion("2.17.675.1")]