diff --git a/StatisticsAnalysisTool/StatisticsAnalysisTool/App.xaml b/StatisticsAnalysisTool/StatisticsAnalysisTool/App.xaml
index cde73635f..e2d3df421 100644
--- a/StatisticsAnalysisTool/StatisticsAnalysisTool/App.xaml
+++ b/StatisticsAnalysisTool/StatisticsAnalysisTool/App.xaml
@@ -73,6 +73,11 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
@@ -495,8 +577,8 @@
-
-
+
@@ -525,6 +607,87 @@
+
+
+
+
+
+
diff --git a/StatisticsAnalysisTool/StatisticsAnalysisTool/ItemWindow.xaml b/StatisticsAnalysisTool/StatisticsAnalysisTool/ItemWindow.xaml
index c0e45d139..5056e17ea 100644
--- a/StatisticsAnalysisTool/StatisticsAnalysisTool/ItemWindow.xaml
+++ b/StatisticsAnalysisTool/StatisticsAnalysisTool/ItemWindow.xaml
@@ -5,7 +5,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:fa="http://schemas.fontawesome.io/icons/"
mc:Ignorable="d"
- Title="ItemWindow" Height="335" Width="1180" AllowsTransparency="True" Style="{StaticResource PrimaryWindow}" FontSize="{StaticResource BaseFontSize}" WindowStyle="None" WindowStartupLocation="CenterScreen" ResizeMode="NoResize">
+ Title="ItemWindow" MinHeight="335" Height="335" MinWidth="900" Width="1180" AllowsTransparency="True" Style="{StaticResource PrimaryWindow}" FontSize="{StaticResource BaseFontSize}" WindowStyle="None" WindowStartupLocation="CenterScreen" ResizeMode="CanResizeWithGrip">
@@ -19,22 +19,117 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -50,9 +145,6 @@
Albion Online Data Project
-
-
-
diff --git a/StatisticsAnalysisTool/StatisticsAnalysisTool/ItemWindow.xaml.cs b/StatisticsAnalysisTool/StatisticsAnalysisTool/ItemWindow.xaml.cs
index 00b3b2c50..d0ad3e51a 100644
--- a/StatisticsAnalysisTool/StatisticsAnalysisTool/ItemWindow.xaml.cs
+++ b/StatisticsAnalysisTool/StatisticsAnalysisTool/ItemWindow.xaml.cs
@@ -5,10 +5,14 @@
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
using System.Windows.Input;
using System.Windows.Media;
using StatisticsAnalysisTool.Models;
using StatisticsAnalysisTool.Utilities;
+using Color = System.Windows.Media.Color;
+using ColorConverter = System.Windows.Media.ColorConverter;
+using Image = System.Windows.Controls.Image;
namespace StatisticsAnalysisTool
{
@@ -34,21 +38,21 @@ public ItemWindow(Item item)
Translation();
InitializeItemData(item);
}
-
+
private void Translation()
{
ChbShowVillages.Content = LanguageController.Translation("SHOW_VILLAGES");
ChbAutoUpdateData.Content = LanguageController.Translation("AUTO_UPDATE_DATA");
LblLastUpdate.ToolTip = LanguageController.Translation("LAST_UPDATE");
- LblCityTitel.Content = LanguageController.Translation("CITY");
- LblSellPriceMin.Content = LanguageController.Translation("SELL_PRICE_MIN");
- LblSellPriceMinDate.Content = LanguageController.Translation("SELL_PRICE_MIN_DATE");
- LblSellPriceMax.Content = LanguageController.Translation("SELL_PRICE_MAX");
- LblSellPriceMaxDate.Content = LanguageController.Translation("SELL_PRICE_MAX_DATE");
- LblBuyPriceMin.Content = LanguageController.Translation("BUY_PRICE_MIN");
- LblBuyPriceMinDate.Content = LanguageController.Translation("BUY_PRICE_MIN_DATE");
- LblBuyPriceMax.Content = LanguageController.Translation("BUY_PRICE_MAX");
- LblBuyPriceMaxDate.Content = LanguageController.Translation("BUY_PRICE_MAX_DATE");
+ GvcCityTitel.Header = LanguageController.Translation("CITY");
+ GvcSellPriceMin.Header = LanguageController.Translation("SELL_PRICE_MIN");
+ GvcSellPriceMinDate.Header = LanguageController.Translation("SELL_PRICE_MIN_DATE");
+ GvcSellPriceMax.Header = LanguageController.Translation("SELL_PRICE_MAX");
+ GvcSellPriceMaxDate.Header = LanguageController.Translation("SELL_PRICE_MAX_DATE");
+ GvcBuyPriceMin.Header = LanguageController.Translation("BUY_PRICE_MIN");
+ GvcBuyPriceMinDate.Header = LanguageController.Translation("BUY_PRICE_MIN_DATE");
+ GvcBuyPriceMax.Header = LanguageController.Translation("BUY_PRICE_MAX");
+ GvcBuyPriceMaxDate.Header = LanguageController.Translation("BUY_PRICE_MAX_DATE");
LblDifCalcName.Content = $"{LanguageController.Translation("DIFFERENT_CALCULATION")}:";
}
@@ -59,43 +63,46 @@ private async void InitializeItemData(Item item)
_uniqueName = item.UniqueName;
+ if (Dispatcher == null)
+ return;
+
await Dispatcher.InvokeAsync(() =>
{
FaLoadIcon.Visibility = Visibility.Visible;
-
Icon = item.Icon;
});
StartAutoUpdater();
var itemDataTaskResult = await StatisticsAnalysisManager.GetItemDataFromJsonAsync(item);
-
+
if (itemDataTaskResult == null)
{
LblItemName.Content = LanguageController.Translation("ERROR_PRICES_CAN_NOT_BE_LOADED");
- Dispatcher.Invoke(() =>
- {
- FaLoadIcon.Visibility = Visibility.Hidden;
- });
+ Dispatcher?.Invoke(() => { FaLoadIcon.Visibility = Visibility.Hidden; });
return;
}
_itemData = itemDataTaskResult;
-
+
+ if (Dispatcher == null)
+ return;
+
await Dispatcher.InvokeAsync(() =>
- {
- Title = $"{_itemData.LocalizedName} (T{_itemData.Tier})";
- LblItemName.Content = $"{_itemData.LocalizedName} (T{_itemData.Tier})";
- LblItemId.Content = _itemData.UniqueName;
- ImgItemImage.Source = item.Icon;
+ {
+ Title = $"{_itemData.LocalizedName} (T{_itemData.Tier})";
+ LblItemName.Content = $"{_itemData.LocalizedName} (T{_itemData.Tier})";
+ LblItemId.Content = _itemData.UniqueName;
+ ImgItemImage.Source = item.Icon;
- FaLoadIcon.Visibility = Visibility.Hidden;
- });
+ FaLoadIcon.Visibility = Visibility.Hidden;
+ });
+
}
- private void StartAutoUpdater()
+ private async void StartAutoUpdater()
{
- Task.Run(async () => {
+ await Task.Run(async () => {
if (_isAutoUpdateActive)
return;
@@ -103,9 +110,9 @@ private void StartAutoUpdater()
while (_runUpdate)
{
await Task.Delay(500);
- if (Dispatcher.Invoke(() => !ChbAutoUpdateData.IsChecked ?? false))
+ if (Dispatcher != null && Dispatcher.Invoke(() => !ChbAutoUpdateData.IsChecked ?? false))
continue;
- GetPriceStats(_uniqueName, Dispatcher.Invoke(() => ChbShowVillages.IsChecked ?? false));
+ GetPriceStats(_uniqueName, Dispatcher != null && Dispatcher.Invoke(() => ChbShowVillages.IsChecked ?? false));
await Task.Delay(StatisticsAnalysisManager.RefreshRate - 500);
}
_isAutoUpdateActive = false;
@@ -119,66 +126,71 @@ private async void GetPriceStats(string uniqueName, bool showVillages = false)
await Task.Run(async () =>
{
- _statsPricesTotalList.Clear();
var statPricesList = await StatisticsAnalysisManager.GetItemPricesFromJsonAsync(uniqueName, showVillages);
if (statPricesList == null)
return;
- Dispatcher.Invoke(() =>
- {
- foreach (var stats in statPricesList)
- {
- if (_statsPricesTotalList.Exists(s => Locations.GetName(s.City) == stats.City))
- {
- var spt = _statsPricesTotalList.Find(s => Locations.GetName(s.City) == stats.City);
- if (stats.SellPriceMin < spt.SellPriceMin)
- spt.SellPriceMin = stats.SellPriceMin;
-
- if (stats.SellPriceMax > spt.SellPriceMax)
- spt.SellPriceMax = stats.SellPriceMax;
-
- if (stats.BuyPriceMin < spt.BuyPriceMin)
- spt.BuyPriceMin = stats.BuyPriceMin;
-
- if (stats.BuyPriceMax > spt.BuyPriceMax)
- spt.BuyPriceMax = stats.BuyPriceMax;
- }
- else
- {
- var newSpt = new MarketResponseTotal()
- {
- City = Locations.GetName(stats.City),
- SellPriceMin = stats.SellPriceMin,
- SellPriceMax = stats.SellPriceMax,
- BuyPriceMin = stats.BuyPriceMin,
- BuyPriceMax = stats.BuyPriceMax,
- SellPriceMinDate = stats.SellPriceMinDate,
- SellPriceMaxDate = stats.SellPriceMaxDate,
- BuyPriceMinDate = stats.BuyPriceMinDate,
- BuyPriceMaxDate = stats.BuyPriceMaxDate,
- };
-
- _statsPricesTotalList.Add(newSpt);
- }
- }
-
- FindBestPrice(ref _statsPricesTotalList);
-
- SpStats.Children.Clear();
- foreach (var spt in _statsPricesTotalList)
- {
- CreateGridElement(spt);
- }
+ var statsPricesTotalList = PriceUpdate(statPricesList);
- SetDifferenceCalculationText(_statsPricesTotalList);
+ FindBestPrice(ref statsPricesTotalList);
+ var marketCurrentPricesItemList = new List();
+ foreach (var item in statsPricesTotalList)
+ marketCurrentPricesItemList.Add(new MarketCurrentPricesItem(item));
+
+ Dispatcher?.Invoke(() =>
+ {
+ ListViewPrices.ItemsSource = marketCurrentPricesItemList;
+ SetDifferenceCalculationText(statsPricesTotalList);
LblLastUpdate.Content = Utility.DateFormat(DateTime.Now, 0);
});
-
});
}
+ private List PriceUpdate(List statPricesList)
+ {
+ var statsPricesTotalList = new List();
+
+ foreach (var stats in statPricesList)
+ {
+ if (statsPricesTotalList.Exists(s => Locations.GetName(s.City) == stats.City))
+ {
+ var spt = statsPricesTotalList.Find(s => Locations.GetName(s.City) == stats.City);
+ if (stats.SellPriceMin < spt.SellPriceMin)
+ spt.SellPriceMin = stats.SellPriceMin;
+
+ if (stats.SellPriceMax > spt.SellPriceMax)
+ spt.SellPriceMax = stats.SellPriceMax;
+
+ if (stats.BuyPriceMin < spt.BuyPriceMin)
+ spt.BuyPriceMin = stats.BuyPriceMin;
+
+ if (stats.BuyPriceMax > spt.BuyPriceMax)
+ spt.BuyPriceMax = stats.BuyPriceMax;
+ }
+ else
+ {
+ var newSpt = new MarketResponseTotal()
+ {
+ City = Locations.GetName(stats.City),
+ SellPriceMin = stats.SellPriceMin,
+ SellPriceMax = stats.SellPriceMax,
+ BuyPriceMin = stats.BuyPriceMin,
+ BuyPriceMax = stats.BuyPriceMax,
+ SellPriceMinDate = stats.SellPriceMinDate,
+ SellPriceMaxDate = stats.SellPriceMaxDate,
+ BuyPriceMinDate = stats.BuyPriceMinDate,
+ BuyPriceMaxDate = stats.BuyPriceMaxDate,
+ };
+
+ statsPricesTotalList.Add(newSpt);
+ }
+ }
+
+ return statsPricesTotalList;
+ }
+
private void FindBestPrice(ref List list)
{
if (list.Count == 0)
@@ -225,184 +237,6 @@ private void FindBestPrice(ref List list)
}
- private void CreateGridElement(MarketResponseTotal stats)
- {
- var textColor = new SolidColorBrush(Colors.Gainsboro);
-
- var bestPriceLabelStyle = FindResource("BestPriceLabel") as Style;
-
- var grid = new Grid
- {
- VerticalAlignment = VerticalAlignment.Top, Height = 30, Margin = new Thickness(0, 0, 0, 0)
- };
-
- var lblCity = new Label
- {
- Content = stats.City,
- Foreground = textColor,
- HorizontalAlignment = HorizontalAlignment.Left,
- VerticalAlignment = VerticalAlignment.Top,
- Width = 150,
- Height = 28,
- Margin = new Thickness(10, 0, 0, 0)
- };
-
- switch(stats.City)
- {
- case Location.Caerleon:
- lblCity.Style = FindResource("CaerleonStyle") as Style;
- break;
- case Location.Thetford:
- lblCity.Style = FindResource("ThetfordStyle") as Style;
- break;
- case Location.Bridgewatch:
- lblCity.Style = FindResource("BridgewatchStyle") as Style;
- break;
- case Location.Martlock:
- lblCity.Style = FindResource("MartlockStyle") as Style;
- break;
- case Location.Lymhurst:
- lblCity.Style = FindResource("LymhurstStyle") as Style;
- break;
- case Location.FortSterling:
- lblCity.Style = FindResource("FortSterlingStyle") as Style;
- break;
- default:
- lblCity.Style = FindResource("DefaultCityStyle") as Style;
- break;
- }
-
- List silverImages = new List();
-
- var lblSellPriceMin = new Label
- {
- Content = string.Format(LanguageController.DefaultCultureInfo, "{0:n0}", stats.SellPriceMin),
- Foreground = DateTimeToOld(stats.SellPriceMinDate),
- HorizontalAlignment = HorizontalAlignment.Left,
- VerticalAlignment = VerticalAlignment.Top,
- HorizontalContentAlignment = HorizontalAlignment.Left,
- Width = 85,
- Height = 28,
- Margin = new Thickness(194, 0, 0, 0)
- };
- lblSellPriceMin.Style = (stats.BestSellMinPrice && stats.SellPriceMin != 0) ? bestPriceLabelStyle : lblSellPriceMin.Style;
- silverImages.Add(new Image
- {
- Margin = new Thickness(168, 0, 0, 0),
- Style = FindResource("Image.Price.Silver") as Style
- });
-
- var lblSellPriceMax = new Label
- {
- Content = string.Format(LanguageController.DefaultCultureInfo, "{0:n0}", stats.SellPriceMax),
- Foreground = DateTimeToOld(stats.SellPriceMaxDate),
- HorizontalAlignment = HorizontalAlignment.Left,
- VerticalAlignment = VerticalAlignment.Top,
- HorizontalContentAlignment = HorizontalAlignment.Left,
- Width = 85,
- Height = 28,
- Margin = new Thickness(444, 0, 0, 0)
- };
- silverImages.Add(new Image
- {
- Margin = new Thickness(418, 0, 0, 0),
- Style = FindResource("Image.Price.Silver") as Style
- });
-
- var lblBuyPriceMin = new Label
- {
- Content = string.Format(LanguageController.DefaultCultureInfo, "{0:n0}", stats.BuyPriceMin),
- Foreground = DateTimeToOld(stats.BuyPriceMinDate),
- HorizontalAlignment = HorizontalAlignment.Left,
- VerticalAlignment = VerticalAlignment.Top,
- HorizontalContentAlignment = HorizontalAlignment.Left,
- Width = 85,
- Height = 28,
- Margin = new Thickness(694, 0, 0, 0)
- };
- silverImages.Add(new Image
- {
- Margin = new Thickness(668, 0, 0, 0),
- Style = FindResource("Image.Price.Silver") as Style
- });
-
- var lblBuyPriceMax = new Label
- {
- Content = string.Format(LanguageController.DefaultCultureInfo, "{0:n0}", stats.BuyPriceMax),
- Foreground = DateTimeToOld(stats.BuyPriceMaxDate),
- HorizontalAlignment = HorizontalAlignment.Left,
- VerticalAlignment = VerticalAlignment.Top,
- HorizontalContentAlignment = HorizontalAlignment.Left,
- Width = 85,
- Height = 28,
- Margin = new Thickness(944, 0, 0, 0)
- };
- lblBuyPriceMax.Style = (stats.BestBuyMaxPrice && stats.BuyPriceMax != 0) ? bestPriceLabelStyle : lblBuyPriceMax.Style;
- silverImages.Add(new Image
- {
- Margin = new Thickness(918, 0, 0, 0),
- Style = FindResource("Image.Price.Silver") as Style
- });
-
- var lblSellPriceMinDate = new Label
- {
- Content = Utility.DateFormat(stats.SellPriceMinDate, 2),
- Foreground = DateTimeToOld(stats.SellPriceMinDate),
- HorizontalAlignment = HorizontalAlignment.Left,
- VerticalAlignment = VerticalAlignment.Top,
- Width = 120,
- Height = 28,
- Margin = new Thickness(293, 0, 0, 0)
- };
-
- var lblSellPriceMaxDate = new Label
- {
- Content = Utility.DateFormat(stats.SellPriceMaxDate, 2),
- Foreground = DateTimeToOld(stats.SellPriceMaxDate),
- HorizontalAlignment = HorizontalAlignment.Left,
- VerticalAlignment = VerticalAlignment.Top,
- Width = 120,
- Height = 28,
- Margin = new Thickness(543, 0, 0, 0)
- };
-
- var lblBuyPriceMinDate = new Label
- {
- Content = Utility.DateFormat(stats.BuyPriceMinDate, 2),
- Foreground = DateTimeToOld(stats.BuyPriceMinDate),
- HorizontalAlignment = HorizontalAlignment.Left,
- VerticalAlignment = VerticalAlignment.Top,
- Width = 120,
- Height = 28,
- Margin = new Thickness(793, 0, 0, 0)
- };
-
- var lblBuyPriceMaxDate = new Label
- {
- Content = Utility.DateFormat(stats.BuyPriceMaxDate, 2),
- Foreground = DateTimeToOld(stats.BuyPriceMaxDate),
- HorizontalAlignment = HorizontalAlignment.Left,
- VerticalAlignment = VerticalAlignment.Top,
- Width = 120,
- Height = 28,
- Margin = new Thickness(1043, 0, 0, 0)
- };
-
- SpStats.Children.Add(grid);
- grid.Children.Add(lblCity);
- grid.Children.Add(lblSellPriceMin);
- grid.Children.Add(lblSellPriceMax);
- grid.Children.Add(lblBuyPriceMin);
- grid.Children.Add(lblBuyPriceMax);
- grid.Children.Add(lblSellPriceMinDate);
- grid.Children.Add(lblSellPriceMaxDate);
- grid.Children.Add(lblBuyPriceMinDate);
- grid.Children.Add(lblBuyPriceMaxDate);
- foreach (var image in silverImages)
- grid.Children.Add(image);
-
- }
-
private void SetDifferenceCalculationText(List statsPricesTotalList)
{
ulong? bestBuyMaxPrice = 0UL;
@@ -489,6 +323,6 @@ private void Hyperlink_RequestNavigate(object sender, System.Windows.Navigation.
{
Process.Start(e.Uri.AbsoluteUri);
}
-
+
}
}
\ No newline at end of file
diff --git a/StatisticsAnalysisTool/StatisticsAnalysisTool/Models/MarketOrder.cs b/StatisticsAnalysisTool/StatisticsAnalysisTool/Models/MarketOrder.cs
index 2a1ad45ab..9eb212a0f 100644
--- a/StatisticsAnalysisTool/StatisticsAnalysisTool/Models/MarketOrder.cs
+++ b/StatisticsAnalysisTool/StatisticsAnalysisTool/Models/MarketOrder.cs
@@ -1,4 +1,5 @@
using System;
+using System.Windows;
using Newtonsoft.Json;
namespace StatisticsAnalysisTool.Models
@@ -100,4 +101,67 @@ public class MarketResponseTotal
public bool BestBuyMinPrice { get; set; }
public bool BestBuyMaxPrice { get; set; }
}
+
+ public class MarketCurrentPricesItem
+ {
+
+ public MarketCurrentPricesItem(MarketResponseTotal marketResponseTotal)
+ {
+ ItemTypeId = marketResponseTotal.ItemTypeId;
+ City = marketResponseTotal.City;
+ QualityLevel = marketResponseTotal.QualityLevel;
+ SellPriceMin = marketResponseTotal.SellPriceMin;
+ SellPriceMinDate = marketResponseTotal.SellPriceMinDate;
+ SellPriceMax = marketResponseTotal.SellPriceMax;
+ SellPriceMaxDate = marketResponseTotal.SellPriceMaxDate;
+ BuyPriceMin = marketResponseTotal.BuyPriceMin;
+ BuyPriceMinDate = marketResponseTotal.BuyPriceMinDate;
+ BuyPriceMax = marketResponseTotal.BuyPriceMax;
+ BuyPriceMaxDate = marketResponseTotal.BuyPriceMaxDate;
+ BestSellMinPrice = marketResponseTotal.BestSellMinPrice;
+ BestSellMaxPrice = marketResponseTotal.BestSellMaxPrice;
+ BestBuyMinPrice = marketResponseTotal.BestBuyMinPrice;
+ BestBuyMaxPrice = marketResponseTotal.BestBuyMaxPrice;
+ }
+
+ public string ItemTypeId { get; set; }
+ public Location City { get; set; }
+ public byte QualityLevel { get; set; }
+ public ulong SellPriceMin { get; set; }
+ public DateTime SellPriceMinDate { get; set; }
+ public ulong SellPriceMax { get; set; }
+ public DateTime SellPriceMaxDate { get; set; }
+ public ulong BuyPriceMin { get; set; }
+ public DateTime BuyPriceMinDate { get; set; }
+ public ulong BuyPriceMax { get; set; }
+ public DateTime BuyPriceMaxDate { get; set; }
+
+ public bool BestSellMinPrice { get; set; }
+ public bool BestSellMaxPrice { get; set; }
+ public bool BestBuyMinPrice { get; set; }
+ public bool BestBuyMaxPrice { get; set; }
+
+ public Style CityStyle {
+ get {
+ switch (City)
+ {
+ case Location.Caerleon:
+ return Application.Current.FindResource("CaerleonStyle") as Style;
+ case Location.Thetford:
+ return Application.Current.FindResource("ThetfordStyle") as Style;
+ case Location.Bridgewatch:
+ return Application.Current.FindResource("BridgewatchStyle") as Style;
+ case Location.Martlock:
+ return Application.Current.FindResource("MartlockStyle") as Style;
+ case Location.Lymhurst:
+ return Application.Current.FindResource("LymhurstStyle") as Style;
+ case Location.FortSterling:
+ return Application.Current.FindResource("FortSterlingStyle") as Style;
+ default:
+ return Application.Current.FindResource("DefaultCityStyle") as Style;
+ }
+ }
+ }
+
+ }
}
\ No newline at end of file
diff --git a/StatisticsAnalysisTool/StatisticsAnalysisTool/Properties/AssemblyInfo.cs b/StatisticsAnalysisTool/StatisticsAnalysisTool/Properties/AssemblyInfo.cs
index b76134b37..c8d49b2f6 100644
--- a/StatisticsAnalysisTool/StatisticsAnalysisTool/Properties/AssemblyInfo.cs
+++ b/StatisticsAnalysisTool/StatisticsAnalysisTool/Properties/AssemblyInfo.cs
@@ -49,5 +49,5 @@
// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
// indem Sie "*" wie unten gezeigt eingeben:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.1.1.*")]
-[assembly: AssemblyFileVersion("1.1.1.0")]
+[assembly: AssemblyVersion("1.1.2.*")]
+[assembly: AssemblyFileVersion("1.1.2.0")]