From d1a9e5ec802426bf42d313b50aa814e26602e96b Mon Sep 17 00:00:00 2001
From: t0815 <10379828+t0815@users.noreply.github.com>
Date: Fri, 18 Oct 2024 15:19:48 +0200
Subject: [PATCH] collect metadata validation errors for displaying them al
together, replace flow-layout pane
---
MyCBZ/Data/DataValidation.cs | 59 ++-
.../Events/UpdatePageListViewSortingEvent.cs | 2 +
MyCBZ/Forms/MainForm.Designer.cs | 259 +++++++------
MyCBZ/Forms/MainForm.cs | 278 +++++++-------
MyCBZ/Forms/MainForm.resx | 346 +++++++++---------
MyCBZ/List/ListViewSorter.cs | 2 +
MyCBZ/Models/ProjectModel.cs | 12 +-
MyCBZ/Tasks/ProcessImagesTask.cs | 2 -
MyCBZ/Win_CBZ.csproj | 26 +-
9 files changed, 531 insertions(+), 455 deletions(-)
diff --git a/MyCBZ/Data/DataValidation.cs b/MyCBZ/Data/DataValidation.cs
index 1b57f6c4..2e39b4b1 100644
--- a/MyCBZ/Data/DataValidation.cs
+++ b/MyCBZ/Data/DataValidation.cs
@@ -1,4 +1,6 @@
-using System;
+using Microsoft.IdentityModel.Protocols.WsTrust;
+using SharpCompress.Common;
+using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
@@ -7,6 +9,7 @@
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
+using System.Windows.Controls;
using System.Windows.Forms;
using Win_CBZ.Events;
using static Win_CBZ.Handler.AppEventHandler;
@@ -114,35 +117,61 @@ public bool ValidateMetaDataInvalidKeys(ref ArrayList metaDataEntryErrors, bool
{
bool error = false;
- foreach (MetaDataEntry entryA in Program.ProjectModel.MetaData.Values)
+ foreach (MetaDataEntry entry in Program.ProjectModel.MetaData.Values)
{
- if (Program.ProjectModel.MetaData.ProtectedKeys.IndexOf(entryA.Key.ToLower()) != -1 ||
- entryA.Key.Length == 0)
+ try
{
- metaDataEntryErrors.Add(entryA.Key);
- error = true;
- }
+ if (Program.ProjectModel.MetaData.ProtectedKeys.IndexOf(entry.Key.ToLower()) != -1)
+ {
+ throw new MetaDataValidationException(entry, null, "Key with name ['" + entry.Key + "'] is not allowed!", showError);
+ }
- if (cancellationToken != null)
- {
- if (cancellationToken.Value.IsCancellationRequested)
+ //Regex re = Regex.("/[a-z]+$/gi");
+
+ if (entry != null && !Regex.IsMatch(entry.Key, @"^[a-z]+$", RegexOptions.IgnoreCase))
{
- break;
+ throw new MetaDataValidationException(entry, null, "Key with name ['" + entry.Key + "'] must contain only values between ['a-zA-Z']!", showError);
}
+
+
+ if (cancellationToken != null)
+ {
+ if (cancellationToken.Value.IsCancellationRequested)
+ {
+ break;
+ }
+ }
+ }
+ catch (MetaDataValidationException ex)
+ {
+ metaDataEntryErrors.Add(ex.Message);
+ error = true;
}
}
+ string[] duplicates = ValidateDuplicateStrings(Program.ProjectModel.MetaData.Values.ToArray().Select(s => s.Key).ToArray());
+
+ if (duplicates.Length > 0)
+ {
+ metaDataEntryErrors.Add("Duplicate keys ['" + String.Join(",", duplicates) + "'] not allowed!");
+ error = true;
+ }
+
if (error)
{
String lines = string.Join("\r\n", metaDataEntryErrors.ToArray());
- String errorText = string.Join(", ", metaDataEntryErrors.ToArray());
+
if (showError)
{
- MessageLogger.Instance.Log(LogMessageEvent.LOGMESSAGE_TYPE_WARNING, "Metadata Validation failed! Invalid Keys [" + errorText + "] found.");
- DialogResult r = ApplicationMessage.ShowWarning("Metadata Validation failed! The folliwing keys are no allowed:\r\n\r\n" + lines, "Metadata Validation Error", ApplicationMessage.DialogType.MT_WARNING, ApplicationMessage.DialogButtons.MB_OK);
+ MessageLogger.Instance.Log(LogMessageEvent.LOGMESSAGE_TYPE_WARNING, "Metadata validation failed!");
-
+ foreach (String errorText in metaDataEntryErrors)
+ {
+ MessageLogger.Instance.Log(LogMessageEvent.LOGMESSAGE_TYPE_WARNING, errorText);
+ }
+
+ DialogResult r = ApplicationMessage.ShowWarning("Metadata validation failed!\r\nThe following keys are not valid:\r\n\r\n" + lines, "Metadata Validation Error", ApplicationMessage.DialogType.MT_WARNING, ApplicationMessage.DialogButtons.MB_OK);
}
}
diff --git a/MyCBZ/Events/UpdatePageListViewSortingEvent.cs b/MyCBZ/Events/UpdatePageListViewSortingEvent.cs
index b8c9207e..ca81f8a9 100644
--- a/MyCBZ/Events/UpdatePageListViewSortingEvent.cs
+++ b/MyCBZ/Events/UpdatePageListViewSortingEvent.cs
@@ -1,12 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Runtime.Versioning;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Win_CBZ.Events
{
+ [SupportedOSPlatform("windows")]
internal class UpdatePageListViewSortingEvent
{
public int SortColumn { get; set; } = 1; // sort by index by default
diff --git a/MyCBZ/Forms/MainForm.Designer.cs b/MyCBZ/Forms/MainForm.Designer.cs
index 567c694c..4848cf16 100644
--- a/MyCBZ/Forms/MainForm.Designer.cs
+++ b/MyCBZ/Forms/MainForm.Designer.cs
@@ -216,19 +216,19 @@ private void InitializeComponent()
propertiesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
PageSmallIcons = new System.Windows.Forms.ImageList(components);
MetadataPanel = new System.Windows.Forms.TableLayoutPanel();
- MetadataEditorHeaderFlowLayoutPanel = new System.Windows.Forms.FlowLayoutPanel();
- LabelMetadataPanel = new System.Windows.Forms.Label();
- TextBoxMetaDataFilename = new System.Windows.Forms.TextBox();
- TextBoxMetadataKeys = new System.Windows.Forms.Label();
- TextBoxCountKeys = new System.Windows.Forms.TextBox();
- BtnAddMetaData = new System.Windows.Forms.Button();
- SmallIconsImages = new System.Windows.Forms.ImageList(components);
+ tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
BtnRemoveMetaData = new System.Windows.Forms.Button();
+ SmallIconsImages = new System.Windows.Forms.ImageList(components);
+ BtnAddMetaData = new System.Windows.Forms.Button();
+ TextBoxCountKeys = new System.Windows.Forms.TextBox();
+ TextBoxMetadataKeys = new System.Windows.Forms.Label();
+ TextBoxMetaDataFilename = new System.Windows.Forms.TextBox();
ButtonFilter = new System.Windows.Forms.Button();
+ ButtonConfigureKeyFilter = new System.Windows.Forms.Button();
+ LabelMetadataPanel = new System.Windows.Forms.Label();
ButtonSelectFilter = new System.Windows.Forms.Button();
ContextMenuUserFilterList = new System.Windows.Forms.ContextMenuStrip(components);
requiredToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- ButtonConfigureKeyFilter = new System.Windows.Forms.Button();
MetaDataTableActionsPanel = new System.Windows.Forms.FlowLayoutPanel();
AddMetaDataRowBtn = new System.Windows.Forms.Button();
RemoveMetadataRowBtn = new System.Windows.Forms.Button();
@@ -311,7 +311,7 @@ private void InitializeComponent()
SplitBoxItemsList.SuspendLayout();
PageListContextMenu.SuspendLayout();
MetadataPanel.SuspendLayout();
- MetadataEditorHeaderFlowLayoutPanel.SuspendLayout();
+ tableLayoutPanel2.SuspendLayout();
ContextMenuUserFilterList.SuspendLayout();
MetaDataTableActionsPanel.SuspendLayout();
((System.ComponentModel.ISupportInitialize)MetaDataGrid).BeginInit();
@@ -2352,7 +2352,7 @@ private void InitializeComponent()
MetadataPanel.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
MetadataPanel.ColumnCount = 1;
MetadataPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
- MetadataPanel.Controls.Add(MetadataEditorHeaderFlowLayoutPanel, 0, 0);
+ MetadataPanel.Controls.Add(tableLayoutPanel2, 0, 0);
MetadataPanel.Controls.Add(MetaDataTableActionsPanel, 0, 2);
MetadataPanel.Controls.Add(MetaDataGrid, 0, 1);
MetadataPanel.Dock = System.Windows.Forms.DockStyle.Fill;
@@ -2360,89 +2360,84 @@ private void InitializeComponent()
MetadataPanel.Margin = new System.Windows.Forms.Padding(2);
MetadataPanel.Name = "MetadataPanel";
MetadataPanel.RowCount = 3;
- MetadataPanel.RowStyles.Add(new System.Windows.Forms.RowStyle());
- MetadataPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
+ MetadataPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 18.8073387F));
+ MetadataPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 81.19266F));
MetadataPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 45F));
MetadataPanel.Size = new System.Drawing.Size(932, 264);
MetadataPanel.TabIndex = 10;
+ MetadataPanel.Paint += MetadataPanel_Paint;
+ //
+ // tableLayoutPanel2
+ //
+ tableLayoutPanel2.ColumnCount = 10;
+ tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 59F));
+ tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 51F));
+ tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 162F));
+ tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 180F));
+ tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 40F));
+ tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 60F));
+ tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 135F));
+ tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 33F));
+ tableLayoutPanel2.Controls.Add(BtnRemoveMetaData, 5, 0);
+ tableLayoutPanel2.Controls.Add(BtnAddMetaData, 4, 0);
+ tableLayoutPanel2.Controls.Add(TextBoxCountKeys, 3, 0);
+ tableLayoutPanel2.Controls.Add(TextBoxMetadataKeys, 2, 0);
+ tableLayoutPanel2.Controls.Add(TextBoxMetaDataFilename, 1, 0);
+ tableLayoutPanel2.Controls.Add(ButtonFilter, 6, 0);
+ tableLayoutPanel2.Controls.Add(ButtonConfigureKeyFilter, 7, 0);
+ tableLayoutPanel2.Controls.Add(LabelMetadataPanel, 0, 0);
+ tableLayoutPanel2.Controls.Add(ButtonSelectFilter, 8, 0);
+ tableLayoutPanel2.Location = new System.Drawing.Point(3, 3);
+ tableLayoutPanel2.Name = "tableLayoutPanel2";
+ tableLayoutPanel2.RowCount = 1;
+ tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+ tableLayoutPanel2.Size = new System.Drawing.Size(885, 35);
+ tableLayoutPanel2.TabIndex = 16;
//
- // MetadataEditorHeaderFlowLayoutPanel
- //
- MetadataEditorHeaderFlowLayoutPanel.Controls.Add(LabelMetadataPanel);
- MetadataEditorHeaderFlowLayoutPanel.Controls.Add(TextBoxMetaDataFilename);
- MetadataEditorHeaderFlowLayoutPanel.Controls.Add(TextBoxMetadataKeys);
- MetadataEditorHeaderFlowLayoutPanel.Controls.Add(TextBoxCountKeys);
- MetadataEditorHeaderFlowLayoutPanel.Controls.Add(BtnAddMetaData);
- MetadataEditorHeaderFlowLayoutPanel.Controls.Add(BtnRemoveMetaData);
- MetadataEditorHeaderFlowLayoutPanel.Controls.Add(ButtonFilter);
- MetadataEditorHeaderFlowLayoutPanel.Controls.Add(ButtonSelectFilter);
- MetadataEditorHeaderFlowLayoutPanel.Controls.Add(ButtonConfigureKeyFilter);
- MetadataEditorHeaderFlowLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
- MetadataEditorHeaderFlowLayoutPanel.Location = new System.Drawing.Point(5, 5);
- MetadataEditorHeaderFlowLayoutPanel.Margin = new System.Windows.Forms.Padding(5);
- MetadataEditorHeaderFlowLayoutPanel.Name = "MetadataEditorHeaderFlowLayoutPanel";
- MetadataEditorHeaderFlowLayoutPanel.Padding = new System.Windows.Forms.Padding(0, 2, 0, 0);
- MetadataEditorHeaderFlowLayoutPanel.Size = new System.Drawing.Size(922, 38);
- MetadataEditorHeaderFlowLayoutPanel.TabIndex = 9;
- //
- // LabelMetadataPanel
- //
- LabelMetadataPanel.Location = new System.Drawing.Point(2, 2);
- LabelMetadataPanel.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
- LabelMetadataPanel.Name = "LabelMetadataPanel";
- LabelMetadataPanel.Padding = new System.Windows.Forms.Padding(0, 7, 0, 0);
- LabelMetadataPanel.Size = new System.Drawing.Size(78, 29);
- LabelMetadataPanel.TabIndex = 1;
- LabelMetadataPanel.Text = "Metadata";
- //
- // TextBoxMetaDataFilename
- //
- AutoCompleteItems.SetAutocompleteMenu(TextBoxMetaDataFilename, null);
- TextBoxMetaDataFilename.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 0);
- TextBoxMetaDataFilename.Location = new System.Drawing.Point(84, 5);
- TextBoxMetaDataFilename.Margin = new System.Windows.Forms.Padding(2, 3, 2, 2);
- TextBoxMetaDataFilename.Name = "TextBoxMetaDataFilename";
- TextBoxMetaDataFilename.ReadOnly = true;
- TextBoxMetaDataFilename.Size = new System.Drawing.Size(169, 27);
- TextBoxMetaDataFilename.TabIndex = 9;
- //
- // TextBoxMetadataKeys
+ // BtnRemoveMetaData
//
- TextBoxMetadataKeys.AutoSize = true;
- TextBoxMetadataKeys.Location = new System.Drawing.Point(263, 2);
- TextBoxMetadataKeys.Margin = new System.Windows.Forms.Padding(8, 0, 2, 0);
- TextBoxMetadataKeys.Name = "TextBoxMetadataKeys";
- TextBoxMetadataKeys.Padding = new System.Windows.Forms.Padding(0, 7, 5, 0);
- TextBoxMetadataKeys.Size = new System.Drawing.Size(47, 27);
- TextBoxMetadataKeys.TabIndex = 10;
- TextBoxMetadataKeys.Text = "Keys:";
+ BtnRemoveMetaData.Dock = System.Windows.Forms.DockStyle.Top;
+ BtnRemoveMetaData.Enabled = false;
+ BtnRemoveMetaData.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ BtnRemoveMetaData.ImageIndex = 1;
+ BtnRemoveMetaData.ImageList = SmallIconsImages;
+ BtnRemoveMetaData.Location = new System.Drawing.Point(529, 2);
+ BtnRemoveMetaData.Margin = new System.Windows.Forms.Padding(2);
+ BtnRemoveMetaData.Name = "BtnRemoveMetaData";
+ BtnRemoveMetaData.Padding = new System.Windows.Forms.Padding(3, 0, 0, 0);
+ BtnRemoveMetaData.RightToLeft = System.Windows.Forms.RightToLeft.No;
+ BtnRemoveMetaData.Size = new System.Drawing.Size(176, 33);
+ BtnRemoveMetaData.TabIndex = 8;
+ BtnRemoveMetaData.Text = "Remove Metadata";
+ BtnRemoveMetaData.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ BtnRemoveMetaData.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
+ BtnRemoveMetaData.UseMnemonic = false;
+ BtnRemoveMetaData.UseVisualStyleBackColor = true;
+ BtnRemoveMetaData.Click += BtnRemoveMetaData_Click;
//
- // TextBoxCountKeys
+ // SmallIconsImages
//
- AutoCompleteItems.SetAutocompleteMenu(TextBoxCountKeys, null);
- TextBoxCountKeys.BackColor = System.Drawing.SystemColors.Control;
- TextBoxCountKeys.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 0);
- TextBoxCountKeys.Location = new System.Drawing.Point(315, 5);
- TextBoxCountKeys.Margin = new System.Windows.Forms.Padding(3, 3, 9, 3);
- TextBoxCountKeys.Name = "TextBoxCountKeys";
- TextBoxCountKeys.ReadOnly = true;
- TextBoxCountKeys.Size = new System.Drawing.Size(36, 27);
- TextBoxCountKeys.TabIndex = 12;
- TextBoxCountKeys.Text = "0";
- TextBoxCountKeys.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+ SmallIconsImages.ColorDepth = System.Windows.Forms.ColorDepth.Depth24Bit;
+ SmallIconsImages.ImageStream = (System.Windows.Forms.ImageListStreamer)resources.GetObject("SmallIconsImages.ImageStream");
+ SmallIconsImages.TransparentColor = System.Drawing.Color.Transparent;
+ SmallIconsImages.Images.SetKeyName(0, "add.png");
+ SmallIconsImages.Images.SetKeyName(1, "delete.png");
//
// BtnAddMetaData
//
- BtnAddMetaData.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right;
+ BtnAddMetaData.Dock = System.Windows.Forms.DockStyle.Top;
BtnAddMetaData.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
BtnAddMetaData.ImageIndex = 0;
BtnAddMetaData.ImageList = SmallIconsImages;
- BtnAddMetaData.Location = new System.Drawing.Point(362, 4);
+ BtnAddMetaData.Location = new System.Drawing.Point(367, 2);
BtnAddMetaData.Margin = new System.Windows.Forms.Padding(2);
BtnAddMetaData.Name = "BtnAddMetaData";
BtnAddMetaData.Padding = new System.Windows.Forms.Padding(3, 0, 0, 0);
BtnAddMetaData.RightToLeft = System.Windows.Forms.RightToLeft.No;
- BtnAddMetaData.Size = new System.Drawing.Size(174, 30);
+ BtnAddMetaData.Size = new System.Drawing.Size(158, 33);
BtnAddMetaData.TabIndex = 7;
BtnAddMetaData.Text = "Add Metadata";
BtnAddMetaData.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -2450,61 +2445,94 @@ private void InitializeComponent()
BtnAddMetaData.UseVisualStyleBackColor = true;
BtnAddMetaData.Click += BtnAddMetaData_Click;
//
- // SmallIconsImages
+ // TextBoxCountKeys
//
- SmallIconsImages.ColorDepth = System.Windows.Forms.ColorDepth.Depth24Bit;
- SmallIconsImages.ImageStream = (System.Windows.Forms.ImageListStreamer)resources.GetObject("SmallIconsImages.ImageStream");
- SmallIconsImages.TransparentColor = System.Drawing.Color.Transparent;
- SmallIconsImages.Images.SetKeyName(0, "add.png");
- SmallIconsImages.Images.SetKeyName(1, "delete.png");
+ TextBoxCountKeys.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left;
+ AutoCompleteItems.SetAutocompleteMenu(TextBoxCountKeys, null);
+ TextBoxCountKeys.BackColor = System.Drawing.SystemColors.Control;
+ TextBoxCountKeys.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 0);
+ TextBoxCountKeys.Location = new System.Drawing.Point(317, 4);
+ TextBoxCountKeys.Margin = new System.Windows.Forms.Padding(3, 4, 9, 3);
+ TextBoxCountKeys.Name = "TextBoxCountKeys";
+ TextBoxCountKeys.ReadOnly = true;
+ TextBoxCountKeys.Size = new System.Drawing.Size(36, 27);
+ TextBoxCountKeys.TabIndex = 12;
+ TextBoxCountKeys.Text = "0";
+ TextBoxCountKeys.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
- // BtnRemoveMetaData
+ // TextBoxMetadataKeys
//
- BtnRemoveMetaData.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right;
- BtnRemoveMetaData.Enabled = false;
- BtnRemoveMetaData.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
- BtnRemoveMetaData.ImageIndex = 1;
- BtnRemoveMetaData.ImageList = SmallIconsImages;
- BtnRemoveMetaData.Location = new System.Drawing.Point(540, 4);
- BtnRemoveMetaData.Margin = new System.Windows.Forms.Padding(2);
- BtnRemoveMetaData.Name = "BtnRemoveMetaData";
- BtnRemoveMetaData.Padding = new System.Windows.Forms.Padding(3, 0, 0, 0);
- BtnRemoveMetaData.RightToLeft = System.Windows.Forms.RightToLeft.No;
- BtnRemoveMetaData.Size = new System.Drawing.Size(173, 30);
- BtnRemoveMetaData.TabIndex = 8;
- BtnRemoveMetaData.Text = "Remove Metadata";
- BtnRemoveMetaData.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- BtnRemoveMetaData.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
- BtnRemoveMetaData.UseMnemonic = false;
- BtnRemoveMetaData.UseVisualStyleBackColor = true;
- BtnRemoveMetaData.Click += BtnRemoveMetaData_Click;
+ TextBoxMetadataKeys.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left;
+ TextBoxMetadataKeys.AutoSize = true;
+ TextBoxMetadataKeys.Location = new System.Drawing.Point(263, 0);
+ TextBoxMetadataKeys.Margin = new System.Windows.Forms.Padding(8, 0, 2, 0);
+ TextBoxMetadataKeys.Name = "TextBoxMetadataKeys";
+ TextBoxMetadataKeys.Padding = new System.Windows.Forms.Padding(0, 7, 5, 0);
+ TextBoxMetadataKeys.Size = new System.Drawing.Size(47, 41);
+ TextBoxMetadataKeys.TabIndex = 10;
+ TextBoxMetadataKeys.Text = "Keys:";
+ //
+ // TextBoxMetaDataFilename
+ //
+ TextBoxMetaDataFilename.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left;
+ AutoCompleteItems.SetAutocompleteMenu(TextBoxMetaDataFilename, null);
+ TextBoxMetaDataFilename.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 0);
+ TextBoxMetaDataFilename.Location = new System.Drawing.Point(84, 4);
+ TextBoxMetaDataFilename.Margin = new System.Windows.Forms.Padding(2, 4, 2, 2);
+ TextBoxMetaDataFilename.Name = "TextBoxMetaDataFilename";
+ TextBoxMetaDataFilename.ReadOnly = true;
+ TextBoxMetaDataFilename.Size = new System.Drawing.Size(169, 27);
+ TextBoxMetaDataFilename.TabIndex = 9;
//
// ButtonFilter
//
ButtonFilter.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center;
ButtonFilter.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
ButtonFilter.Image = Properties.Resources.funnel;
- ButtonFilter.Location = new System.Drawing.Point(717, 4);
+ ButtonFilter.Location = new System.Drawing.Point(709, 2);
ButtonFilter.Margin = new System.Windows.Forms.Padding(2);
ButtonFilter.Name = "ButtonFilter";
- ButtonFilter.Size = new System.Drawing.Size(36, 29);
+ ButtonFilter.Size = new System.Drawing.Size(36, 31);
ButtonFilter.TabIndex = 13;
ButtonFilter.TextImageRelation = System.Windows.Forms.TextImageRelation.TextBeforeImage;
ButtonFilter.UseMnemonic = false;
ButtonFilter.UseVisualStyleBackColor = true;
ButtonFilter.Click += ButtonFilter_Click;
//
+ // ButtonConfigureKeyFilter
+ //
+ ButtonConfigureKeyFilter.Image = Properties.Resources.funnel_gearwheels_16;
+ ButtonConfigureKeyFilter.Location = new System.Drawing.Point(749, 2);
+ ButtonConfigureKeyFilter.Margin = new System.Windows.Forms.Padding(2);
+ ButtonConfigureKeyFilter.Name = "ButtonConfigureKeyFilter";
+ ButtonConfigureKeyFilter.Size = new System.Drawing.Size(36, 33);
+ ButtonConfigureKeyFilter.TabIndex = 15;
+ ButtonConfigureKeyFilter.UseVisualStyleBackColor = true;
+ ButtonConfigureKeyFilter.Click += ButtonConfigureKeyFilter_Click;
+ //
+ // LabelMetadataPanel
+ //
+ LabelMetadataPanel.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left;
+ LabelMetadataPanel.Location = new System.Drawing.Point(2, 0);
+ LabelMetadataPanel.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ LabelMetadataPanel.Name = "LabelMetadataPanel";
+ LabelMetadataPanel.Padding = new System.Windows.Forms.Padding(0, 7, 0, 0);
+ LabelMetadataPanel.Size = new System.Drawing.Size(78, 41);
+ LabelMetadataPanel.TabIndex = 1;
+ LabelMetadataPanel.Text = "Metadata";
+ //
// ButtonSelectFilter
//
+ ButtonSelectFilter.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left;
ButtonSelectFilter.AutoEllipsis = true;
ButtonSelectFilter.ContextMenuStrip = ContextMenuUserFilterList;
ButtonSelectFilter.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
ButtonSelectFilter.Image = Properties.Resources.dropdown_arrow;
ButtonSelectFilter.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
- ButtonSelectFilter.Location = new System.Drawing.Point(756, 4);
+ ButtonSelectFilter.Location = new System.Drawing.Point(808, 2);
ButtonSelectFilter.Margin = new System.Windows.Forms.Padding(1, 2, 2, 2);
ButtonSelectFilter.Name = "ButtonSelectFilter";
- ButtonSelectFilter.Size = new System.Drawing.Size(113, 29);
+ ButtonSelectFilter.Size = new System.Drawing.Size(34, 37);
ButtonSelectFilter.TabIndex = 14;
ButtonSelectFilter.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
ButtonSelectFilter.TextImageRelation = System.Windows.Forms.TextImageRelation.TextBeforeImage;
@@ -2525,17 +2553,6 @@ private void InitializeComponent()
requiredToolStripMenuItem.Size = new System.Drawing.Size(138, 24);
requiredToolStripMenuItem.Text = "Required";
//
- // ButtonConfigureKeyFilter
- //
- ButtonConfigureKeyFilter.Image = Properties.Resources.funnel_gearwheels_16;
- ButtonConfigureKeyFilter.Location = new System.Drawing.Point(873, 4);
- ButtonConfigureKeyFilter.Margin = new System.Windows.Forms.Padding(2);
- ButtonConfigureKeyFilter.Name = "ButtonConfigureKeyFilter";
- ButtonConfigureKeyFilter.Size = new System.Drawing.Size(36, 30);
- ButtonConfigureKeyFilter.TabIndex = 15;
- ButtonConfigureKeyFilter.UseVisualStyleBackColor = true;
- ButtonConfigureKeyFilter.Click += ButtonConfigureKeyFilter_Click;
- //
// MetaDataTableActionsPanel
//
MetaDataTableActionsPanel.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right;
@@ -2602,7 +2619,7 @@ private void InitializeComponent()
dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
MetaDataGrid.DefaultCellStyle = dataGridViewCellStyle3;
MetaDataGrid.Dock = System.Windows.Forms.DockStyle.Fill;
- MetaDataGrid.Location = new System.Drawing.Point(2, 50);
+ MetaDataGrid.Location = new System.Drawing.Point(2, 43);
MetaDataGrid.Margin = new System.Windows.Forms.Padding(2);
MetaDataGrid.MultiSelect = false;
MetaDataGrid.Name = "MetaDataGrid";
@@ -2617,7 +2634,7 @@ private void InitializeComponent()
MetaDataGrid.RowHeadersWidth = 51;
MetaDataGrid.RowTemplate.Height = 26;
MetaDataGrid.RowTemplate.Resizable = System.Windows.Forms.DataGridViewTriState.False;
- MetaDataGrid.Size = new System.Drawing.Size(928, 167);
+ MetaDataGrid.Size = new System.Drawing.Size(928, 173);
MetaDataGrid.TabIndex = 12;
MetaDataGrid.CellClick += MetaDataGrid_CellClick;
MetaDataGrid.CellContentClick += MetaDataGrid_CellContentClick;
@@ -3023,8 +3040,8 @@ private void InitializeComponent()
PageListContextMenu.ResumeLayout(false);
MetadataPanel.ResumeLayout(false);
MetadataPanel.PerformLayout();
- MetadataEditorHeaderFlowLayoutPanel.ResumeLayout(false);
- MetadataEditorHeaderFlowLayoutPanel.PerformLayout();
+ tableLayoutPanel2.ResumeLayout(false);
+ tableLayoutPanel2.PerformLayout();
ContextMenuUserFilterList.ResumeLayout(false);
MetaDataTableActionsPanel.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)MetaDataGrid).EndInit();
@@ -3183,7 +3200,6 @@ private void InitializeComponent()
private System.Windows.Forms.TextBox RenamerExcludePages;
private System.Windows.Forms.Button btnGetExcludesFromSelectedPages;
private System.Windows.Forms.TableLayoutPanel MainPanelTableLayout;
- private System.Windows.Forms.FlowLayoutPanel MetadataEditorHeaderFlowLayoutPanel;
private System.Windows.Forms.TableLayoutPanel GlobalAlertTableLayout;
private System.Windows.Forms.Label LabelGlobalActionStatusMessage;
private System.Windows.Forms.Button ExecuteCurrentGlobalAction;
@@ -3275,6 +3291,7 @@ private void InitializeComponent()
private System.Windows.Forms.ToolStripMenuItem requiredToolStripMenuItem;
private System.Windows.Forms.ImageList ComboIcons;
private System.Windows.Forms.ToolTip DataGridErrorTooltip;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
}
}
diff --git a/MyCBZ/Forms/MainForm.cs b/MyCBZ/Forms/MainForm.cs
index 7026c25b..31326416 100644
--- a/MyCBZ/Forms/MainForm.cs
+++ b/MyCBZ/Forms/MainForm.cs
@@ -33,6 +33,7 @@
using Microsoft.VisualBasic.Devices;
using Win_CBZ.Extensions;
using Win_CBZ.List;
+using System.Collections;
namespace Win_CBZ
{
@@ -816,16 +817,16 @@ private void PageChanged(object sender, PageChangedEvent e)
{
if (!e.Page.Closed && !e.Page.Deleted)
{
- Task.Factory.StartNew(() =>
+ Task.Factory.StartNew(() =>
+ {
+ PageThumbsListBox.Invoke(new Action(() =>
{
- PageThumbsListBox.Invoke(new Action(() =>
- {
- CreatePagePreviewFromItem(e.Page, e.OldValue as Page);
+ CreatePagePreviewFromItem(e.Page, e.OldValue as Page);
- return;
- }));
+ return;
+ }));
- });
+ });
}
}
}
@@ -1229,7 +1230,7 @@ private void HandleListviewSorting(object sender, UpdatePageListViewSortingEvent
Program.ProjectModel.Pages.Sort((x, y) => x.Index.CompareTo(y.Index));
PagesList.ListViewItemSorter = new ListViewSorter(e.SortColumn);
-
+
PagesList.Sorting = e.Order;
PagesList.Sort();
PagesList.Sorting = SortOrder.None;
@@ -1239,7 +1240,7 @@ private void HandleListviewSorting(object sender, UpdatePageListViewSortingEvent
PageThumbsListBox.Sort(e.Order);
}
-
+
});
}
}
@@ -3571,7 +3572,7 @@ private void MetaDataGrid_CellPainting(object sender, DataGridViewCellPaintingEv
DataGridView grid = sender as DataGridView;
Color sortIconColor = Color.Gold;
- if (e.ColumnIndex > - 1 && e.RowIndex == -1)
+ if (e.ColumnIndex > -1 && e.RowIndex == -1)
{
DataGridViewColumnHeaderCell headerCell = MetaDataGrid.Columns[e.ColumnIndex].HeaderCell;
@@ -3593,7 +3594,7 @@ private void MetaDataGrid_CellPainting(object sender, DataGridViewCellPaintingEv
//MetaDataGrid.ColumnHeadersDefaultCellStyle.
if (Program.ProjectModel.MetaData.IsColumnFiltered(e.ColumnIndex))
- {
+ {
e.Graphics.DrawImage(Properties.Resources.funnel, e.CellBounds.Right - 32, e.CellBounds.Y + 4, 16, 16);
}
//e.Graphics.DrawString(MetaDataGrid.Columns[e.ColumnIndex].HeaderText, MetaDataGrid.ColumnHeadersDefaultCellStyle.Font, new SolidBrush(Color.Black), new PointF(e.CellBounds.X, e.CellBounds.Y + 5));
@@ -3609,12 +3610,13 @@ private void MetaDataGrid_CellPainting(object sender, DataGridViewCellPaintingEv
{
e.PaintBackground(e.CellBounds, false);
e.Paint(e.CellBounds, DataGridViewPaintParts.Background | DataGridViewPaintParts.SelectionBackground | DataGridViewPaintParts.Border);
-
+
if (fieldType.FieldType == MetaDataFieldType.METADATA_FIELD_TYPE_RATING)
{
-
- } else
+
+ }
+ else
{
e.PaintContent(e.CellBounds);
}
@@ -4068,9 +4070,15 @@ private void MetaDataEntryChanged(object sender, MetaDataEntryChangedEvent e)
{
if (e.Index > -1)
{
- if (ToolBarSearchInput.Text.Length == 0)
+ if (ToolBarSearchInput.Text.Length == 0 && !ApplyUserKeyFilter)
{
- MetaDataGrid.Rows.RemoveAt(e.Index);
+ try
+ {
+ MetaDataGrid.Rows.RemoveAt(e.Index);
+ } catch (Exception e)
+ {
+ AppEventHandler.OnMessageLogged(sender, new LogMessageEvent(LogMessageEvent.LOGMESSAGE_TYPE_WARNING, "MainForm::MetaDataEntryChanged(), Error removing row! [" + e.Message + "]"));
+ }
}
}
else
@@ -5837,6 +5845,17 @@ private void TextboxSpecialPageRenamingPattern_TextChanged_1(object sender, Even
private void ToolStripButtonShowRawMetadata_Click(object sender, EventArgs e)
{
+ DataValidation dataValidation = new DataValidation();
+ ArrayList messages = new ArrayList();
+
+ bool metaDataValidationFailed = dataValidation.ValidateMetaDataInvalidKeys(ref messages);
+ if (metaDataValidationFailed)
+ {
+ AppEventHandler.OnApplicationStateChanged(this, new ApplicationStatusEvent(null, ApplicationStatusEvent.STATE_READY));
+
+ return;
+ }
+
try
{
MetaDataForm metaDataDialog = new MetaDataForm(Program.ProjectModel.MetaData, Win_CBZSettings.Default.WriteXmlPageIndex);
@@ -6257,7 +6276,7 @@ private void UpdateImageAdjustments(object sender, string selected, bool dontUpd
ComboBoxTaskOrderRotation.Tag = dontUpdate;
ComboBoxTaskOrderSplit.Tag = dontUpdate;
- ComboBoxTaskOrderConversion.SelectedIndex = ((int)selectedImageTasks.TaskOrder.Convert);
+ ComboBoxTaskOrderConversion.SelectedIndex = ((int)selectedImageTasks.TaskOrder.Convert);
ComboBoxTaskOrderResize.SelectedIndex = ((int)selectedImageTasks.TaskOrder.Resize);
ComboBoxTaskOrderRotation.SelectedIndex = ((int)selectedImageTasks.TaskOrder.Rotate);
ComboBoxTaskOrderSplit.SelectedIndex = ((int)selectedImageTasks.TaskOrder.Split);
@@ -6369,120 +6388,120 @@ private void HandleImageAdjustmentsChanged(object sender, ImageAdjustmentsChange
if (updateCtls)
{
- bool dontUpdate = true;
+ bool dontUpdate = true;
//ImageQualityTrackBar.Value = selectedTask.ImageAdjustments.Quality;
switch (selectedImageTasks.ImageAdjustments.ResizeMode)
- {
- case 0:
- RadioButtonResizeNever.Tag = dontUpdate;
- RadioButtonResizeNever.Checked = true;
- break;
- case 1:
- RadioButtonResizeIfLarger.Tag = dontUpdate;
- RadioButtonResizeIfLarger.Checked = true;
- break;
- case 2:
- RadioButtonResizeTo.Tag = dontUpdate;
- RadioButtonResizeTo.Checked = true;
- break;
- case 3:
- RadioButtonResizePercent.Tag = dontUpdate;
- RadioButtonResizePercent.Checked = true;
- break;
-
- }
-
- ComboBoxTaskOrderConversion.Tag = dontUpdate;
- ComboBoxTaskOrderResize.Tag = dontUpdate;
- ComboBoxTaskOrderRotation.Tag = dontUpdate;
- ComboBoxTaskOrderSplit.Tag = dontUpdate;
-
- ComboBoxTaskOrderConversion.SelectedIndex = ((int)selectedImageTasks.TaskOrder.Convert);
- ComboBoxTaskOrderResize.SelectedIndex = ((int)selectedImageTasks.TaskOrder.Resize);
- ComboBoxTaskOrderRotation.SelectedIndex = ((int)selectedImageTasks.TaskOrder.Rotate);
- ComboBoxTaskOrderSplit.SelectedIndex = ((int)selectedImageTasks.TaskOrder.Split);
- //PropertyGridTaskOrder.SelectedObject = selectedImageTasks.TaskOrder;
-
- switch (selectedImageTasks.ImageAdjustments.RotateMode)
- {
- case 0:
- RadioButtonRotateNone.Tag = dontUpdate;
- RadioButtonRotateNone.Checked = true;
- break;
- case 1:
- RadioButtonRotate90.Tag = dontUpdate;
- RadioButtonRotate90.Checked = true;
- break;
- case 2:
- RadioButtonRotate180.Tag = dontUpdate;
- RadioButtonRotate180.Checked = true;
- break;
- case 3:
- RadioButtonRotate270.Tag = dontUpdate;
- RadioButtonRotate270.Checked = true;
- break;
-
- }
-
- CheckBoxSplitDoublePages.Tag = dontUpdate;
- TextBoxSplitPageAt.Tag = dontUpdate;
- ComboBoxSplitAtType.Tag = dontUpdate;
- TextBoxResizePageIndexReference.Tag = dontUpdate;
- TextBoxResizeW.Tag = dontUpdate;
- TextBoxResizeH.Tag = dontUpdate;
- ComboBoxConvertPages.Tag = dontUpdate;
- CheckBoxDontStretch.Tag = dontUpdate;
- TextboxResizePercentage.Tag = dontUpdate;
- CheckboxKeepAspectratio.Tag = dontUpdate;
- PictureBoxColorSelect.Tag = dontUpdate;
- CheckBoxSplitOnlyIfDoubleSize.Tag = dontUpdate;
- CheckBoxSplitDoublepagesFirst.Tag = dontUpdate;
+ {
+ case 0:
+ RadioButtonResizeNever.Tag = dontUpdate;
+ RadioButtonResizeNever.Checked = true;
+ break;
+ case 1:
+ RadioButtonResizeIfLarger.Tag = dontUpdate;
+ RadioButtonResizeIfLarger.Checked = true;
+ break;
+ case 2:
+ RadioButtonResizeTo.Tag = dontUpdate;
+ RadioButtonResizeTo.Checked = true;
+ break;
+ case 3:
+ RadioButtonResizePercent.Tag = dontUpdate;
+ RadioButtonResizePercent.Checked = true;
+ break;
+ }
- CheckBoxSplitDoublePages.Checked = selectedImageTasks.ImageAdjustments.SplitPage;
- TextBoxSplitPageAt.Text = selectedImageTasks.ImageAdjustments.SplitPageAt.ToString();
- ComboBoxSplitAtType.SelectedIndex = selectedImageTasks.ImageAdjustments.SplitType;
- TextBoxResizePageIndexReference.Text = selectedImageTasks.ImageAdjustments.ResizeToPageNumber.ToString();
- TextBoxResizeW.Text = selectedImageTasks.ImageAdjustments.ResizeTo.X.ToString();
- TextBoxResizeH.Text = selectedImageTasks.ImageAdjustments.ResizeTo.Y.ToString();
- ComboBoxConvertPages.SelectedIndex = selectedImageTasks.ImageAdjustments.ConvertType;
- CheckBoxDontStretch.Checked = selectedImageTasks.ImageAdjustments.DontStretch;
- TextboxResizePercentage.Text = selectedImageTasks.ImageAdjustments.ResizeToPercentage.ToString();
- CheckboxKeepAspectratio.Checked = selectedImageTasks.ImageAdjustments.KeepAspectRatio;
- PictureBoxColorSelect.BackColor = selectedImageTasks.ImageAdjustments.DetectSplitAtColor;
- CheckBoxSplitOnlyIfDoubleSize.Checked = selectedImageTasks.ImageAdjustments.SplitOnlyDoublePages;
- CheckBoxSplitDoublepagesFirst.Checked = selectedImageTasks.ImageAdjustments.SplitDoublePagesFirstResizingToPage;
+ ComboBoxTaskOrderConversion.Tag = dontUpdate;
+ ComboBoxTaskOrderResize.Tag = dontUpdate;
+ ComboBoxTaskOrderRotation.Tag = dontUpdate;
+ ComboBoxTaskOrderSplit.Tag = dontUpdate;
- RadioButtonResizeNever.Tag = false;
- RadioButtonResizeIfLarger.Tag = false;
- RadioButtonResizeTo.Tag = false;
- RadioButtonResizePercent.Tag = false;
+ ComboBoxTaskOrderConversion.SelectedIndex = ((int)selectedImageTasks.TaskOrder.Convert);
+ ComboBoxTaskOrderResize.SelectedIndex = ((int)selectedImageTasks.TaskOrder.Resize);
+ ComboBoxTaskOrderRotation.SelectedIndex = ((int)selectedImageTasks.TaskOrder.Rotate);
+ ComboBoxTaskOrderSplit.SelectedIndex = ((int)selectedImageTasks.TaskOrder.Split);
+ //PropertyGridTaskOrder.SelectedObject = selectedImageTasks.TaskOrder;
- RadioButtonRotateNone.Tag = false;
- RadioButtonRotate90.Tag = false;
- RadioButtonRotate180.Tag = false;
- RadioButtonRotate270.Tag = false;
+ switch (selectedImageTasks.ImageAdjustments.RotateMode)
+ {
+ case 0:
+ RadioButtonRotateNone.Tag = dontUpdate;
+ RadioButtonRotateNone.Checked = true;
+ break;
+ case 1:
+ RadioButtonRotate90.Tag = dontUpdate;
+ RadioButtonRotate90.Checked = true;
+ break;
+ case 2:
+ RadioButtonRotate180.Tag = dontUpdate;
+ RadioButtonRotate180.Checked = true;
+ break;
+ case 3:
+ RadioButtonRotate270.Tag = dontUpdate;
+ RadioButtonRotate270.Checked = true;
+ break;
+ }
- ComboBoxTaskOrderConversion.Tag = false;
- ComboBoxTaskOrderResize.Tag = false;
- ComboBoxTaskOrderRotation.Tag = false;
- ComboBoxTaskOrderSplit.Tag = false;
+ CheckBoxSplitDoublePages.Tag = dontUpdate;
+ TextBoxSplitPageAt.Tag = dontUpdate;
+ ComboBoxSplitAtType.Tag = dontUpdate;
+ TextBoxResizePageIndexReference.Tag = dontUpdate;
+ TextBoxResizeW.Tag = dontUpdate;
+ TextBoxResizeH.Tag = dontUpdate;
+ ComboBoxConvertPages.Tag = dontUpdate;
+ CheckBoxDontStretch.Tag = dontUpdate;
+ TextboxResizePercentage.Tag = dontUpdate;
+ CheckboxKeepAspectratio.Tag = dontUpdate;
+ PictureBoxColorSelect.Tag = dontUpdate;
+ CheckBoxSplitOnlyIfDoubleSize.Tag = dontUpdate;
+ CheckBoxSplitDoublepagesFirst.Tag = dontUpdate;
+
+
+ CheckBoxSplitDoublePages.Checked = selectedImageTasks.ImageAdjustments.SplitPage;
+ TextBoxSplitPageAt.Text = selectedImageTasks.ImageAdjustments.SplitPageAt.ToString();
+ ComboBoxSplitAtType.SelectedIndex = selectedImageTasks.ImageAdjustments.SplitType;
+ TextBoxResizePageIndexReference.Text = selectedImageTasks.ImageAdjustments.ResizeToPageNumber.ToString();
+ TextBoxResizeW.Text = selectedImageTasks.ImageAdjustments.ResizeTo.X.ToString();
+ TextBoxResizeH.Text = selectedImageTasks.ImageAdjustments.ResizeTo.Y.ToString();
+ ComboBoxConvertPages.SelectedIndex = selectedImageTasks.ImageAdjustments.ConvertType;
+ CheckBoxDontStretch.Checked = selectedImageTasks.ImageAdjustments.DontStretch;
+ TextboxResizePercentage.Text = selectedImageTasks.ImageAdjustments.ResizeToPercentage.ToString();
+ CheckboxKeepAspectratio.Checked = selectedImageTasks.ImageAdjustments.KeepAspectRatio;
+ PictureBoxColorSelect.BackColor = selectedImageTasks.ImageAdjustments.DetectSplitAtColor;
+ CheckBoxSplitOnlyIfDoubleSize.Checked = selectedImageTasks.ImageAdjustments.SplitOnlyDoublePages;
+ CheckBoxSplitDoublepagesFirst.Checked = selectedImageTasks.ImageAdjustments.SplitDoublePagesFirstResizingToPage;
+
+ RadioButtonResizeNever.Tag = false;
+ RadioButtonResizeIfLarger.Tag = false;
+ RadioButtonResizeTo.Tag = false;
+ RadioButtonResizePercent.Tag = false;
+
+ RadioButtonRotateNone.Tag = false;
+ RadioButtonRotate90.Tag = false;
+ RadioButtonRotate180.Tag = false;
+ RadioButtonRotate270.Tag = false;
+
+
+ ComboBoxTaskOrderConversion.Tag = false;
+ ComboBoxTaskOrderResize.Tag = false;
+ ComboBoxTaskOrderRotation.Tag = false;
+ ComboBoxTaskOrderSplit.Tag = false;
+
+ CheckBoxSplitDoublePages.Tag = false;
+ TextBoxSplitPageAt.Tag = false;
+ ComboBoxSplitAtType.Tag = false;
+ TextBoxResizePageIndexReference.Tag = false;
+ TextBoxResizeW.Tag = false;
+ TextBoxResizeH.Tag = false;
+ ComboBoxConvertPages.Tag = false;
+ CheckBoxDontStretch.Tag = false;
+ TextboxResizePercentage.Tag = false;
+ CheckboxKeepAspectratio.Tag = false;
+ PictureBoxColorSelect.Tag = false;
+ CheckBoxSplitOnlyIfDoubleSize.Tag = false;
+ CheckBoxSplitDoublepagesFirst.Tag = false;
- CheckBoxSplitDoublePages.Tag = false;
- TextBoxSplitPageAt.Tag = false;
- ComboBoxSplitAtType.Tag = false;
- TextBoxResizePageIndexReference.Tag = false;
- TextBoxResizeW.Tag = false;
- TextBoxResizeH.Tag = false;
- ComboBoxConvertPages.Tag = false;
- CheckBoxDontStretch.Tag = false;
- TextboxResizePercentage.Tag = false;
- CheckboxKeepAspectratio.Tag = false;
- PictureBoxColorSelect.Tag = false;
- CheckBoxSplitOnlyIfDoubleSize.Tag = false;
- CheckBoxSplitDoublepagesFirst.Tag = false;
-
}
});
}
@@ -6548,7 +6567,7 @@ private void PictureBoxColorSelect_Click(object sender, EventArgs e)
}
if (page != null && selectedImageTasks.PageId == page.Id)
- {
+ {
AppEventHandler.OnPageChanged(this, new PageChangedEvent(page, null, PageChangedEvent.IMAGE_STATUS_CHANGED, true));
}
@@ -6625,7 +6644,7 @@ private void CheckBoxSplitDoublepagesFirst_CheckedChanged(object sender, EventAr
{
selectedImageTasks.ImageAdjustments.SplitDoublePagesFirstResizingToPage = CheckBoxSplitDoublepagesFirst.Checked;
}
-
+
if (CheckBoxSplitDoublepagesFirst.Checked)
{
@@ -6683,7 +6702,7 @@ private void CheckBoxSplitOnlyIfDoubleSize_CheckedChanged(object sender, EventAr
if (page != null && selectedImageTasks.PageId == page.Id)
{
-
+
if (!dontUpdate)
{
AppEventHandler.OnPageChanged(this, new PageChangedEvent(page, null, PageChangedEvent.IMAGE_STATUS_CHANGED, true));
@@ -6902,7 +6921,7 @@ private void TextBoxResizeW_TextChanged(object sender, EventArgs e)
if (page != null && selectedImageTasks.PageId == page.Id)
{
-
+
if (!dontUpdate)
{
AppEventHandler.OnPageChanged(this, new PageChangedEvent(page, null, PageChangedEvent.IMAGE_STATUS_CHANGED, true));
@@ -7200,7 +7219,7 @@ private void CheckBoxSplitDoublePages_CheckedChanged(object sender, EventArgs e)
if (oldValue.Value != selectedImageTasks.ImageAdjustments.SplitPage)
{
if (selectedImageTasks.PageId == "" && !dontUpdate)
- {
+ {
Program.ProjectModel.GlobalImageTask = selectedImageTasks;
}
@@ -8014,5 +8033,10 @@ private void ComboBox_DrawItem(object sender, DrawItemEventArgs e)
e.Graphics.DrawString(((ComboBox)sender).Items[e.Index].ToString(), font, new SolidBrush(Color.Black), new PointF(e.Bounds.X + 1, e.Bounds.Y + 1));
}
}
+
+ private void MetadataPanel_Paint(object sender, PaintEventArgs e)
+ {
+
+ }
}
}
diff --git a/MyCBZ/Forms/MainForm.resx b/MyCBZ/Forms/MainForm.resx
index 5acef61c..b249302c 100644
--- a/MyCBZ/Forms/MainForm.resx
+++ b/MyCBZ/Forms/MainForm.resx
@@ -140,7 +140,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAbgoAAAJNU0Z0AUkBTAIBAQMB
- AAEIAS8BCAEvARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMAAUADAAEQAwABAQEAAQgG
+ AAGwAS8BsAEvARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMAAUADAAEQAwABAQEAAQgG
AAEEGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEAAfABygGmAQABMwUAATMB
AAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEAAYABfAH/AQACUAH/AQAB
kwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFmAwABmQMAAcwCAAEzAwAC
@@ -198,7 +198,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAIkMAAAJNU0Z0AUkBTAIBARIB
- AAEIAS8BCAEvARgBAAEYAQAE/wEZAQAI/wFCAU0BNgcAATYDAAEoAwABYAMAAXgDAAEBAQABGAYAAYeE
+ AAGwAS8BsAEvARgBAAEYAQAE/wEZAQAI/wFCAU0BNgcAATYDAAEoAwABYAMAAXgDAAEBAQABGAYAAYeE
AANnEiUDZ/8ACQADJRIAAyXnAB4lAwADnAP+A1wDcAkAAyWZAALUAdUDJzYlAycD1QwAAyUDfQG9Ar4B
vQK+Ab0CvgG9Ar4BvQK+Ab0CvgG9A74CvwMAA90DYQYlA3gGAAMlmQADvQMlNr0DJQO+DAADJQG9Ar4B
pAHmAfMBaAHdAfMBaAHdAfMBaAHdAfMBaAHdAfMBaAHdAfMBaAHdAfMBzQHtAfMD/wNkCSUDJwN+AwAD
@@ -520,174 +520,174 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu
- SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAIicAAAJNU0Z0AUkBTAIBAQ8B
- AAFgAQ8BYAEPARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAAUADAAEBAQABIAYAAUD/
- ABsAA0wBkAMlAf8DYgHhCAADJAE0AyUB/wMlAf8DKgE/YAABVQJXAbEBXAJlAecBKwJ+AfwBKwJ+AfwB
- XAJlAecBVQJXAbFkAAMyAU8DJQH/AyUB/wMaASQEAAQCA1kB7wMlAf8DRgGAJAADBgEIA0EBcgNbAc0D
- XAH4A1wB+ANbAc0DQQFyAwYBCBwAAUACQQFxAQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8B
- QAJBAXFgAAMQARUDGwEmA0AB/QMlAf8DQAFvAxABFQMQARUDWAG6AyUB/wNaAcQDEAEVAw8BExgAAxYB
- HQNbAdMDVQGuAykBPQMHAQkDJQH/AyUB/wMlAf8DWwHTAxYBHRwAAT8CQAFuAy4BSAMuAUgBPwJAAW4D
- LQFFA00BkgNbAeQDJgH7AyYB+wNbAeQDVQG0AzEBTUQAA1wB2QMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB
- /wMlAf8DJQH/AyUB/wMlAf8DKwH8Aw4BEhAAAwYBCANbAdMDQQFzDAADJQH/AyUB/wMlAf8DJQH/A1sB
- 0wMGAQgYAAM2AVkBWgJjAekBWgJjAekDNgFZAy0BRgMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wNBAflE
- AANOAZcDJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMzAVEQAANBAXID
- VQGuEAADJQH/AyUB/wMlAf8DJQH/AyUB/wNBAXIYAAFaAmMB6QEAAdIB+gH/AQAB0gH6Af8BWgJjAekD
- HQEpAyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/A2AB4EQAAxQBGwMqAT8DQAFxAyUB/wMlAf8DOwFkAyoB
- PwMqAT8DYQHrAyUB/wNTAaoDKgE/AxYBHhAAA1sBzQMpAT0QAAMlAf8DJQH/AyUB/wMlAf8DJQH/A1sB
- zQwAAzEBTQNVAbQDHAEnAVoCYwHpAQAB0gH6Af8BAAHSAfoB/wFaAmMB6QMbASYDWwHKA0QBegMuAUgD
- MAFLA0QBegNbAcoDPAFmTAADCgENA00B+gMlAf8DPgFqCAADVAGrAyUB/wNZAcYYAANcAfgDBwEJEAAD
- JQH/AyUB/wMlAf8DJQH/AyUB/wNcAfgMAANBAfkDJQH/Az0BZwMzAVABWgJjAekBWgJjAekDMwFQAzUB
- VgMXAR8DNgFXA1oBxANaAcQDOQFeAxgBIFQAA1kBxgMlAf8DVAGrCAADPgFqAyUB/wNNAfoDCgENFAAD
- XAH4AwcBCRAAAyUB/wMlAf8DJQH/AyUB/wMlAf8DXAH4DAADYAHgAyUB/wNhAeYDPQFnAyMBMwMjATMD
- NgFYA2AB4AM9AWkDgAH+AyUB/wMlAf8DgAH+Az0BaUwAAxYBHgMqAT8DUwGqAyUB/wNhAesDKgE/AyoB
- PwM7AWQDJQH/AyUB/wNAAXEDKgE/AxQBGwwAA1sBzQMpAT0QAAMlAf8DJQH/AyUB/wMlAf8DJQH/A1sB
- zQwAAzwBZgNbAcoDRAF6Ay4BSAMwAUsDRAF6A1sBygM8AWYDYQHmAyUB/wMlAf8DJQH/AyUB/wNhAeZM
- AAMzAVEDJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wNOAZcMAANBAXID
- VQGuEAADJQH/AyUB/wMlAf8DJQH/AyUB/wNBAXIQAAMXAR8DNgFXA1oBxANaAcQDOQFeAxgBIAQAA1oB
- 9QMlAf8DJQH/AyUB/wMlAf8DWgH1TAADDgESAysB/AMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8D
- JQH/AyUB/wMlAf8DXAHZDAADBgEIA1sB0wNBAXMMAAMlAf8DJQH/AyUB/wMlAf8DWwHTAwYBCBAAAz0B
- aQOAAf4DJQH/AyUB/wOAAf4DPQFpBAADUQGeAyUB/wMlAf8DJQH/AyUB/wNRAZ5QAAMPARMDEAEVA1oB
- xAMlAf8DWAG6AxABFQMQARUDQAFvAyUB/wNAAf0DGwEmAxABFRAAAxYBHQNbAdMDVQGuAykBPQMHAQkD
- JQH/AyUB/wMlAf8DWwHTAxYBHRQAA2EB5gMlAf8DJQH/AyUB/wMlAf8DYQHmBAADCAEKA04BmANlAfED
- ZQHxA04BmAMIAQpYAANGAYADJQH/A1kB7wQCBAADGgEkAyUB/wMlAf8DMgFPGAADBgEIA0EBcgNbAc0D
- XAH4A1wB+ANbAc0DQQFyAwYBCBgAA1oB9QMlAf8DJQH/AyUB/wMlAf8DWgH1dAADKgE/AyUB/wMlAf8D
- JAE0CAADYgHhAyUB/wNMAZBQAANRAZ4DJQH/AyUB/wMlAf8DJQH/A1EBnugAAwgBCgNOAZgDZQHxA2UB
- 8QNOAZgDCAEK/wB1AAMYASEDUAGcA1oB8gNQAZwDGAEhOAADOAFdAzABSgMEAQUkAAMTARoDSQGIA10B
- 1ANBAfkDQQH5A10B1ANJAYgDEwEaIAADEwEaA0kBiANdAdQDQQH5A0EB+QNdAdQDSQGIAxMBGhwAAxgB
- IANPAZkDWgHyA1EBogMlAf8DUQGiA1oB8gNPAZkDGAEgMAADOgFiA00B+gNdAdwDJAE0HAADNwFaA2IB
- 7gNLAY0DIwEyAwYBBwMGAQcDIwEyA0sBjQNdAeoDNwFaGAADNwFaA2AB8wNNAfoDWAG3A0kBhwNJAYcD
- WAG3A00B+gNgAfMDNwFaEAADFQEcA04BlgNaAfIDUQGeAxoBIwMIAQoDJQH/AwgBCgMaASMDUQGeA1oB
- 8gNOAZYDFQEcKAADQgF0A1MBqgMzAVEDYAHoAxcBHxQAAzcBWgNbAeQDXQHOAwMBBBAAAzQBUwM2AVcD
- YAHgAzcBWhAAAzcBWgOAAf4DWgG/AxgBIRAAAxgBIQNaAb8DgAH+AzcBWgwAA18B5QNRAaQDGwElCAAD
- CAEKAyUB/wMIAQoIAAMbASUDUQGkA18B5RgAAysBQQNRAaEDXgHdA00B+gNfAdUDHQEoBAADRgF+A1AB
- nBAAAxMBGgNdAeoDPQFnAyUB/wNaAb8DBAEFDAADXAHWAyYB+wMoATsDXQHqAxMBGggAAxMBGgNgAfMD
- WgG/AwUBBhgAAwUBBgNaAb8DYAHzAxMBGggAAyUB/wMQARUMAAMIAQoDJQH/AwgBCgwAAxABFQMlAf8Q
- AAMOARIDVgGzA1sB2AM/AW0DHQEoAwUBBgwAAxUBHANhAesDDwETDAADSQGIA0IBdANXAcIDJQH/AyUB
- /wMlATcMAANeAe0DJQH/A0QBeANLAY0DSQGICAADSQGIA00B+gMYASEgAAMYASEDTQH6A0kBiAgAAyUB
- /wMQARUMAAMIAQoDJQH/AwgBCgwAAxABFQMlAf8MAAMIAQoDXQHPA0oBiwMEAQUcAANHAYIDXQHPAwgB
- CggAA10B1AM6AWIDJQH/A0AB/QNLAYwDBgEHBAADCwEOAyYBOQMlAf8DJQH/A1oBxwMdASgDXQHUCAAD
- XQHUA1gBtygAA1gBtwNdAdQIAAMlAf8DEAEVBAADFwEfAxEBFgMIAQoDJQH/AwgBCgwAAxABFQMlAf8M
- AANHAYIDUgGjCQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/CAAD
- UwGmA0cBgggAA0EB+QNMAZEDXgHwAzsBZAgAAxYBHgNlAfEDJQH/AyUB/wMlAf8DJQH/AysEQQH5CAAD
- QQH5A0kBhxEAAdIB+gH/AQAB0gH6Af8QAANJAYcDQQH5CAADJQH/AxABFQNYAbgBQAK+Af0DIQEvA0sB
- jwMlAf8DSwGPAxIBGAgAAxABFQMlAf8MAANdAd8DHgEqKAADHgEqA10B3wgAA0EB+QNbAcoDCwEODAAD
- MwFSAyUB/wMlAf8DJQH/AyUB/wMlAf8DPgFrA0EB+QgAA0EB+QNJAYcMAAMEAQUBSAJjAfYBSAJjAfYB
- XAJhAdkDMwFSCAADSQGHA0EB+QgAAyUB/wMQARUBUwJoAfQBAAHSAfoB/wFAAkEBcQNFAXwDLgFIA1IB
- qANeAfADSgGLAxEBFgMQARUDJQH/DAADQAH9AwIBAwkAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB
- +gH/AQAB0gH6Af8BAAHSAfoB/wgAAwIBAwNAAf0IAANdAdQDWQHvAxoBIwwAAxYBHQNgAfMDJQH/A1EB
- 9wNbAeQDSAH2A4AB/gNdAdQIAANdAdQDWAG3DAADSwGNAVoCXAHEAyUBNwNFAXwDYgHuAzUBVQQAA1gB
- twNdAdQIAAMlAf8DOgFgAVsCXQHKAQAB0gH6Af8BAAHSAfoB/wFbAmEB3gM0AVMEAgMgAS4DVAGrA14B
- 8ANOAZcDJQH/DAADXQHfAx4BKigAAx4BKgNdAd8IAANJAYgDJQH/A10B3wMeASoMAAM3AVoDUQGhAzAB
- SgNLAY0DYgHuAyUB/wNJAYgIAANJAYgDTQH6AxgBIQQAAxEBFgNiAe4DHAEnCAADCQELAxABFQMYASED
- TQH6A0kBiAgAA18B5QNbAcUDGwEmAUoCSwGKAV4CZQHiA4AB/gOAAf4BXgJlAd0DMwFQBAEDNAFTA00B
- +gNfAeUMAANHAYIDUgGlCQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB
- +gH/CAADUgGlA0cBgggAAxMBGgNgAfMDJQH/A4AB/gMxAU4IAAM2AVgDWgG/A1oB8gMlAf8DJQH/A2AB
- 8wMTARoIAAMTARoDYAHzA1oBvwMFAQYBWwJdAcoDSwGNEAADBQEGA1oBvwNgAfMDEwEaCAADFQEcA0QB
- eANaAfIDRgF+AxcBHwM4AVsBYAJlAeMDgAH+AQAB0gH6Af8BYAJkAdsBOgI7AWIDQwF2AxUBHAwAAwgB
- CgNdAc8DSwGNAwQBBRgAAwQBBQNLAY0DXQHPAwgBCgwAAzcBWgOAAf4DJQH/AysBQgNTAakDTgGYAycB
- OgMjATMDXgHSA0oBiwMrAfwDNwFaEAADNwFaA4AB/gNaAb8BQAJBAXADDAEPDAADGAEhA1oBvwOAAf4D
- NwFaFAADGAEgA0QBegNaAfIDRQF8Ax0BKAFPAlABmwFbAmEB3gNVAawDEAEVGAADDgESA1YBswNeAdcD
- PgFrAxsBJgMEAQUDBAEFAxsBJgM+AWsDXgHXA1YBswMOARIUAAM3AVoDYAHzA10B1ANZAe8DJQH/A1cB
- uQMYASADQAFxA10B6gM3AVoYAAM3AVoDYAHzA00B+gNYAbcDSQGHA0kBhwNYAbcDTQH6A2AB8wM3AVog
- AAMYASEDRgF9A1oB8gNLAY0EAigAAysBQQNRAaEDXgHdA00B+gNNAfoDXgHdA1EBoQMrAUEgAAMTARoD
- SQGIA10B1ANBAfkDQQH5A10B1ANJAYgDEwEaIAADEwEaA0kBiANdAdQDQQH5A0EB+QNdAdQDSQGIAxMB
- Gv8A/wAeAAMzAVADWgHpAyUB/wMlAf8DJQH/AyUB/wMlAf8DXAHIGAADMQFNA1UBtANbAeQDJgH7AyYB
- +wNbAeQDVQG0AzEBTSQAAzMBUANaAekDJQH/BQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8B
- AAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BWQJcAcFUAANaAekDJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8D
- JQH/GAADQQH5AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/A0EB+SQAA1oB6QMlAf8DJQH/BQAB0gH6Af8B
- AAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/zAAAxcB
- HwNJAYcDXAHWA1wB+ANTAaoQAAMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/GAADYAHgAyUB
- /wMlAf8DJQH/AyUB/wMlAf8DJQH/A2AB4CQAAyUB/wMlAf8DJQH/BQAB0gH6Af8BAAHSAfoB/wEAAdIB
- +gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/yQAAwkEDAEPA00BkwNNAfoD
- JQH/AyUB/wMlAf8DYAHzEAADJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMzAVIBAAHSAfoB
- /wFcAl8ByAwAAzwBZgNbAcoDRAF6Ay4BSAMwAUsDRAF6A1sBygM8AWYkAAMlAf8DJQH/AyUB/wUAAdIB
- +gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8c
- AAE7AjwBZQNVAa8DNgFYA1wB5wNgAeADPgFqAzoEYAHoAyUB/wNVAa4QAAMlAf8DJQH/AyUB/wMlAf8D
- JQH/AyUB/wMlAf8DJQH/AzMBUgEAAdIB+gH/AQAB0gH6Af8QAAMXAR8DNgFXA1oBxANaAcQDOQFeAxgB
- IAMbASYBTAJNAZEBIQJfAfsBIQJfAfsBWwJjAeQBVQJXAbQDMQFNDAADJQH/AyUB/wMlAf8FAAHSAfoB
- /wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/GAAB
- JgInATkBVQJWAa4DRAF6A1oB9QM5AV8DPQFnAWACaQHoAyABLgNXAbkDJgH7AyEBMBAAAyUB/wMlAf8D
- JQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DMwFSAQAB0gH6Af8BAAHSAfoB/xAAAz0BaQOAAf4DJQH/AyUB
- /wOAAf4DPQFpAxkBIgEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BQQJqAfkM
- AAMlAf8DJQH/AyUB/wUAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB
- /wEAAdIB+gH/AQAB0gH6Af8YAAMyAU8DQgF1A2AB2wM1AVYBXgJlAeIBAAHSAfoB/wEAAdIB+gH/AVAC
- UQGdA0wBkQNGAYAUAAMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AzMBUgEAAdIB+gH/AQAB
- 0gH6Af8QAANhAeYDJQH/AyUB/wMlAf8DJQH/A2EB5gMeASoBAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8B
- AAHSAfoB/wEAAdIB+gH/AWACZgHgDAADJQH/AyUB/wMlAf8FAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8B
- AAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/FAADBwEJA0oBigNdAc8DOgFgAU0C
- fQH6AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/ASsCfgH8AykBPQQCFAADJQH/AyUB/wMlAf8DJQH/AyUB
- /wMlAf8DJQH/A1wByAMzAVIBAAHSAfoB/wEAAdIB+gH/EAADWgH1AyUB/wMlAf8DJQH/AyUB/wNaAfUD
- KwFCA0QBegMuAUgDMAFLA0QBegFbAl0BygM8AWYMAAMlAf8DJQH/AyUB/wUAAdIB+gH/AQAB0gH6Af8B
- AAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8QAAQCA0sBjwNgAeAD
- NQFWA4AB/gEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/ASsCfgH8AwQBBRgAAyUB/wMlATcU
- AAM7AWUDMwFSAQAB0gH6Af8BAAHSAfoB/xAAA1EBngMlAf8DJQH/AyUB/wMlAf8DUQGeAxcBHwM2AVcB
- WgJcAcQBWgJcAcQDOQFeAxgBIBAAAyUB/wMlAf8DJQH/BQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB
- 0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/xAAA0EBcwMlAf8DNgFYAWACZgHgAQAB
- 0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wFZAlwBwRwAA1oB6QMlATcQAAMLAQ4D
- JQH/AzMBUgEAAdIB+gH/AQAB0gH6Af8QAAMIAQoDTgGYA2UB8QNlAfEDTgGYAwgBCgM0AVQDgAH+AQAB
- 0gH6Af8BAAHSAfoB/wOAAf4BPQI+AWkQAAMlAf8DJQH/AyUB/wUAAdIB+gH/AQAB0gH6Af8BAAHSAfoB
- /wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8MAAMcAScDJgH7A10BzgMbASUB
- QQJqAfkBAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wFBAmoB+QEmAicBORwAAzMBUANaAekD
- JQH/AyUB/wMlAf8DJQH/AyUB/wNbAcoDRgF+AQAB0gH6Af8BXAJfAcgoAAFhAmoB5gEAAdIB+gH/AQAB
- 0gH6Af8BAAHSAfoB/wEAAdIB+gH/AWECagHmEAADJQH/AyUB/wMlAf8EAAOAAf4DgAH+A4AB/gOAAf4D
- gAH+AQAB0gH6Af8BAAHSAfoB/wFGAkcBgAwAA1UBrgMlAf8DYAHoAzoBYAMwAUsBWAJaAb0BAAHSAfoB
- /wEAAdIB+gH/A14B0gMqAT8sAAM8AWYDBQEGFAADRgF+KAABWgJuAfUBAAHSAfoB/wEAAdIB+gH/AQAB
- 0gH6Af8BAAHSAfoB/wFaAm4B9RAAAyUB/wMlATc0AANgAfMDJQH/AyUB/wMlAf8DWgHyAygBPAMRARYD
- EQEWNAABWgJjAekDJQE3EAADCwEOAQAB0gH6Af8oAANRAZ4BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8B
- AAHSAfoB/wNRAZ4QAANaAekDJQE3IAADCwEOAQAB0gH6Af8MAANTAaoDXAH4A1wB1gNJAYcDFwEfQAAD
- MwFQAVoCYwHpAQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wFbAl0ByigAAwgB
- CgNOAZgBZQJwAfEBZQJwAfEDTgGYAwgBChAAAzMBUANaAekDJQH/BQAB0gH6Af8BAAHSAfoB/wEAAdIB
- +gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BUQJTAaL/AP8AYgADFwEfAyUB/wMlAf8D
- CAEKJAADHQEpAz8BbgMGAQgQAAMGAQgDPwFuAx0BKRgAAxMBGQNHAYIDWQHDA1oB6QMrAfwDKwH8A1oB
- 6QNZAcMDRgGBAxMBGWAAAxcBHwMlAf8DPAFmA04BlwMlAf8DCAEKIAADUgGoAyUB/wNbAdADHQEoCAAD
- HQEoA1sB0AMlAf8DUgGoGAADWwHkAyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DWwHkXAAD
- FgEeAyUB/wM7AWUEAAQBA04BlwMlAf8DCAEKHAADPwFsAyUB/wMlAf8DUwH0AzsBYwM7AWMDUwH0AyUB
- /wMlAf8DPwFsGAADUQH3AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DUQH3EAABXAJfAcgB
- AAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB
- +gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BXAJfAcgQAAMWAR4DJQH/AzwBZgwABAED
- TgGXAyUB/wMIAQoYAAMUARsDQAH9AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/A0AB/QMUARsYAANbAc0D
- JQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wNbAc0RAAHSAfoB/zEAAdIB+gH/DAADFgEeAyUB
- /wM8AWYUAAQBA04BmAMlAf8cAANZAcYDJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DWQHGHAADNQFWA4AB
- /gMlAf8DYQHmA10BzwNdAc8DYQHmAyUB/wOAAf4DNQFWEQAB0gH6Af8EAAMlAf8EAAMlAf8DPAFmAyUB
- /wMlAf8EAAMlAf8DPAFmAyUB/wUAAdIB+gH/CAADFgEeAyUB/wM8AWYcAAM2AVkDJQH/BAEUAAQBA1QB
- qwMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wNUAasEARwAAzABTAMqAT8DGwElAw0BEQMNAREDHQEpAyoB
- PwMwAUwVAAHSAfoB/wQAAyUB/wQAAyUB/wM8AWYDJQH/AyUB/wQAAyUB/wM8AWYDJQH/BQAB0gH6Af8I
- AAMlAf8DUgGgHAADNgFXAyUB/wMdASkBVgJYAbMQAAMQARUDVgG1AyUB/wMlAf8DJQH/AyUB/wMlAf8D
- JQH/AyUB/wMlAf8DVgG1AxABFRwAAxYBHgM5AV8DWgHHA1oBxwM5AV8DFgEeGQAB0gH6Af8EAAMlAf8E
- AAMlAf8DPAFmAyUB/wMlAf8EAAMlAf8DPAFmAyUB/wUAAdIB+gH/CAADJQH/AysB/AM5AV4UAAM2AVcD
- JQH/Aw8BEwM9AWgBAAHSAfoB/wwAAysBQgNhAeYDJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB
- /wMlAf8DJQH/A2EB5gMrAUIUAAMdASkDXgHwAyUB/wMlAf8DJQH/AyUB/wNeAfADHQEpFQAB0gH6Af8E
- AAMlAf8EAAMlAf8DPAFmAyUB/wMlAf8EAAMlAf8DPAFmAyUB/wUAAdIB+gH/CAADJQH/AyUB/wMrAfwD
- OQFeDAADNQFWAyUB/wMPARQDPAFmAQAB0gH6Af8DFgEeDAADWgHyAyUB/wMlAf8DJQH/AyUB/wMlAf8D
- JQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/A1oB8hQAA1UBsQMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB
- /wNVAbEVAAHSAfoB/wQAAyUB/wQAAyUB/wM8AWYDJQH/AyUB/wQAAyUB/wM8AWYDJQH/BQAB0gH6Af8I
- AAMlAf8DRgGBA1YBsgMrAfwDOAFdBAADNQFWAyUB/wMPARQDPAFmAQAB0gH6Af8DFgEeEAADPQFpA1AB
- nANPAZsDTwGbA1MBpwMlAf8DJQH/AyUB/wMlAf8DUwGnA08BmwNPAZsDUAGcAz0BaRQAA1MB9AMlAf8D
- JQH/AyUB/wMlAf8DJQH/AyUB/wNTAfQVAAHSAfoB/wQAAyUB/wQAAyUB/wM8AWYDJQH/AyUB/wQAAyUB
- /wM8AWYDJQH/BQAB0gH6Af8IAAOAAf4DGgEjA0IBdQMlAf8DKwH8A04BlgMlAf8DDwEUAzwBZgEAAdIB
- +gH/AxYBHigAA14B1wMlAf8DJQH/A14B1ygAA1MB9AMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wNTAfQV
- AAHSAfoB/zEAAdIB+gH/CAADTgGVA00B+gMrAfwDJQH/AyUB/wMlAf8DCwEOATsCPAFlAQAB0gH6Af8D
- FgEeLAADSQGFAyUB/wMlAf8DSQGGKAADVQGxAyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/A1UBsRQAAVwC
- XwHIAQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8B
- AAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AVwCXwHICAADBQEGA0cBggMNARED
- KwFBAyoBQAE7AjwBZQNSAaABAAHSAfoB/wMXAR8wAAMkATQDJQH/AyUB/wMkATQoAAMdASkDXgHwAyUB
- /wMlAf8DJQH/AyUB/wNeAfADHQEpVAAEAQNNAZIDgAH+AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB
- 0gH6Af8DFwEfNAAEAQNcAcgDXAHIBAEsAAMdASkDVQGxA1MB9ANTAfQDVQGxAx0BKf8AVQABQgFNAT4H
- AAE+AwABKAMAAUADAAFAAwABAQEAAQEGAAECFgAD/wEABv8CAAHGAR8C/wHgAX8CAAHCAR8B8AEPAeAB
- fwIAAYABBwHgAQcB8AMAAYABAwHHAQMB8AMAAYABAwHPAQMB8AMAAYABAwHPAQMBgAMAAeEBjwHPAQMB
- gAEBAgAB8QGHAc8BAwGAAQECAAHAAQEBzwEDAYABAQIAAcABAQHPAQMBwAGBAgABwAEBAccBAwHAAYEC
- AAHgAQEB4AEHAcABgQIAAfgBQwHwAQ8BwAH/AgAB+AFjAv8BwAH/AgAE/wHAAf8CAAj/AfgBPwH/AR8B
- 8AEPAfABDwHgAQ8B/wEPAeABBwHgAQcBgAEDAf8BBwTDAYwBYwHwAScBgQHBAYcB4QGcAXMBwAHjAYEB
- wQGPAfEBnAFzAYcB8QGBAQEBnwH5AZABcwGYARkBhgEBAZ4BeQGAATMBnwH5AY4BAQGcARkBgAEDAZgB
- GQGOAQEBnAEJAYABAwGfAfkBhwEBAYgBwQGAAQMBmAEZAYMBAQGBAeEBgAEDAYcB4QHAAQMBwQHDAeAB
- DwHAAQMB4AEHAeABBwH4AT8B8AEPAfABDwHwAQ8Q/wHgAR8BgAF/AcQBAwL/AeABHwGAAX8BxAEDAf8B
- wQHgAR8BgAF/AcQBAwH+AQEB4AEDAYABfwHEAQMB+AEBAeABAwHAAQEBxAEDAfABAQHgAQMBwAEBAcQB
- AwHwAQMB4AEDAcABAQHEAQMB4AEDAeABAwHAAQEBxAEDAcABBwHnAcMBwAEDAcQBAwHAAQ8B5wGDAcAB
- AwHEAQMBgAEPAeABAwH/AQMBxAEDAYABHwH8AfsB/wEDAc8B/wGAAX8B/AHzAf8BAwHPAfMBgwH/AfwB
- AwH/AQMBxAEDEv8B/AE/AeMBxwHgAQcC/wH4AR8B4QGHAeABBwL/AfEBDwHgAQcB4AEHAYABAQHjAYcB
- 4AEHAeABBwG/Af0CxwHwAQ8B4AEHAagBRQGPAeMB4AEHAfABDwGoAUUBnwHDAcABAwH4AR8BqAFFAY8B
- gwGAAQEB8AEPAagBRQGHAQMBgAEBAfABDwGoAUUBggEHAYABAQHwAQ8BqAFFAYABDwH8AT8B8AEPAb8B
- /QGAAR8B/AE/AfABDwGAAQEBgAE/AfwBPwHwAQ8C/wGAAX8B/AE/AfgBHwr/Cw==
+ SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAICcAAAJNU0Z0AUkBTAIBAQ8B
+ AAEIARABCAIQAQABEAEABP8BIQEACP8BQgFNATYHAAE2AwABKAMAAUADAAFAAwABAQEAASAGAAFA/wAb
+ AANMAZADJQH/A2IB4QgAAyQBNAMlAf8DJQH/AyoBP2AAAVUCVwGxAVwCZQHnASsCfgH8ASsCfgH8AVwC
+ ZQHnAVUCVwGxZAADMgFPAyUB/wMlAf8DGgEkBAAEAgNZAe8DJQH/A0YBgCQAAwYBCANBAXIDWwHNA1wB
+ +ANcAfgDWwHNA0EBcgMGAQgcAAFAAkEBcQEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AUAC
+ QQFxYAADEAEVAxsBJgNAAf0DJQH/A0ABbwMQARUDEAEVA1gBugMlAf8DWgHEAxABFQMPARMYAAMWAR0D
+ WwHTA1UBrgMpAT0DBwEJAyUB/wMlAf8DJQH/A1sB0wMWAR0cAAE/AkABbgMuAUgDLgFIAT8CQAFuAy0B
+ RQNNAZIDWwHkAyYB+wMmAfsDWwHkA1UBtAMxAU1EAANcAdkDJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8D
+ JQH/AyUB/wMlAf8DJQH/AysB/AMOARIQAAMGAQgDWwHTA0EBcwwAAyUB/wMlAf8DJQH/AyUB/wNbAdMD
+ BgEIGAADNgFZAVoCYwHpAVoCYwHpAzYBWQMtAUYDJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DQQH5RAAD
+ TgGXAyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DMwFREAADQQFyA1UB
+ rhAAAyUB/wMlAf8DJQH/AyUB/wMlAf8DQQFyGAABWgJjAekBAAHSAfoB/wEAAdIB+gH/AVoCYwHpAx0B
+ KQMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wNgAeBEAAMUARsDKgE/A0ABcQMlAf8DJQH/AzsBZAMqAT8D
+ KgE/A2EB6wMlAf8DUwGqAyoBPwMWAR4QAANbAc0DKQE9EAADJQH/AyUB/wMlAf8DJQH/AyUB/wNbAc0M
+ AAMxAU0DVQG0AxwBJwFaAmMB6QEAAdIB+gH/AQAB0gH6Af8BWgJjAekDGwEmA1sBygNEAXoDLgFIAzAB
+ SwNEAXoDWwHKAzwBZkwAAwoBDQNNAfoDJQH/Az4BaggAA1QBqwMlAf8DWQHGGAADXAH4AwcBCRAAAyUB
+ /wMlAf8DJQH/AyUB/wMlAf8DXAH4DAADQQH5AyUB/wM9AWcDMwFQAVoCYwHpAVoCYwHpAzMBUAM1AVYD
+ FwEfAzYBVwNaAcQDWgHEAzkBXgMYASBUAANZAcYDJQH/A1QBqwgAAz4BagMlAf8DTQH6AwoBDRQAA1wB
+ +AMHAQkQAAMlAf8DJQH/AyUB/wMlAf8DJQH/A1wB+AwAA2AB4AMlAf8DYQHmAz0BZwMjATMDIwEzAzYB
+ WANgAeADPQFpA4AB/gMlAf8DJQH/A4AB/gM9AWlMAAMWAR4DKgE/A1MBqgMlAf8DYQHrAyoBPwMqAT8D
+ OwFkAyUB/wMlAf8DQAFxAyoBPwMUARsMAANbAc0DKQE9EAADJQH/AyUB/wMlAf8DJQH/AyUB/wNbAc0M
+ AAM8AWYDWwHKA0QBegMuAUgDMAFLA0QBegNbAcoDPAFmA2EB5gMlAf8DJQH/AyUB/wMlAf8DYQHmTAAD
+ MwFRAyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DTgGXDAADQQFyA1UB
+ rhAAAyUB/wMlAf8DJQH/AyUB/wMlAf8DQQFyEAADFwEfAzYBVwNaAcQDWgHEAzkBXgMYASAEAANaAfUD
+ JQH/AyUB/wMlAf8DJQH/A1oB9UwAAw4BEgMrAfwDJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB
+ /wMlAf8DJQH/A1wB2QwAAwYBCANbAdMDQQFzDAADJQH/AyUB/wMlAf8DJQH/A1sB0wMGAQgQAAM9AWkD
+ gAH+AyUB/wMlAf8DgAH+Az0BaQQAA1EBngMlAf8DJQH/AyUB/wMlAf8DUQGeUAADDwETAxABFQNaAcQD
+ JQH/A1gBugMQARUDEAEVA0ABbwMlAf8DQAH9AxsBJgMQARUQAAMWAR0DWwHTA1UBrgMpAT0DBwEJAyUB
+ /wMlAf8DJQH/A1sB0wMWAR0UAANhAeYDJQH/AyUB/wMlAf8DJQH/A2EB5gQAAwgBCgNOAZgDZQHxA2UB
+ 8QNOAZgDCAEKWAADRgGAAyUB/wNZAe8EAgQAAxoBJAMlAf8DJQH/AzIBTxgAAwYBCANBAXIDWwHNA1wB
+ +ANcAfgDWwHNA0EBcgMGAQgYAANaAfUDJQH/AyUB/wMlAf8DJQH/A1oB9XQAAyoBPwMlAf8DJQH/AyQB
+ NAgAA2IB4QMlAf8DTAGQUAADUQGeAyUB/wMlAf8DJQH/AyUB/wNRAZ7oAAMIAQoDTgGYA2UB8QNlAfED
+ TgGYAwgBCv8AdQADGAEhA1ABnANaAfIDUAGcAxgBITgAAzgBXQMwAUoDBAEFJAADEwEaA0kBiANdAdQD
+ QQH5A0EB+QNdAdQDSQGIAxMBGiAAAxMBGgNJAYgDXQHUA0EB+QNBAfkDXQHUA0kBiAMTARocAAMYASAD
+ TwGZA1oB8gNRAaIDJQH/A1EBogNaAfIDTwGZAxgBIDAAAzoBYgNNAfoDXQHcAyQBNBwAAzcBWgNiAe4D
+ SwGNAyMBMgMGAQcDBgEHAyMBMgNLAY0DXQHqAzcBWhgAAzcBWgNgAfMDTQH6A1gBtwNJAYcDSQGHA1gB
+ twNNAfoDYAHzAzcBWhAAAxUBHANOAZYDWgHyA1EBngMaASMDCAEKAyUB/wMIAQoDGgEjA1EBngNaAfID
+ TgGWAxUBHCgAA0IBdANTAaoDMwFRA2AB6AMXAR8UAAM3AVoDWwHkA10BzgMDAQQQAAM0AVMDNgFXA2AB
+ 4AM3AVoQAAM3AVoDgAH+A1oBvwMYASEQAAMYASEDWgG/A4AB/gM3AVoMAANfAeUDUQGkAxsBJQgAAwgB
+ CgMlAf8DCAEKCAADGwElA1EBpANfAeUYAAMrAUEDUQGhA14B3QNNAfoDXwHVAx0BKAQAA0YBfgNQAZwQ
+ AAMTARoDXQHqAz0BZwMlAf8DWgG/AwQBBQwAA1wB1gMmAfsDKAE7A10B6gMTARoIAAMTARoDYAHzA1oB
+ vwMFAQYYAAMFAQYDWgG/A2AB8wMTARoIAAMlAf8DEAEVDAADCAEKAyUB/wMIAQoMAAMQARUDJQH/EAAD
+ DgESA1YBswNbAdgDPwFtAx0BKAMFAQYMAAMVARwDYQHrAw8BEwwAA0kBiANCAXQDVwHCAyUB/wMlAf8D
+ JQE3DAADXgHtAyUB/wNEAXgDSwGNA0kBiAgAA0kBiANNAfoDGAEhIAADGAEhA00B+gNJAYgIAAMlAf8D
+ EAEVDAADCAEKAyUB/wMIAQoMAAMQARUDJQH/DAADCAEKA10BzwNKAYsDBAEFHAADRwGCA10BzwMIAQoI
+ AANdAdQDOgFiAyUB/wNAAf0DSwGMAwYBBwQAAwsBDgMmATkDJQH/AyUB/wNaAccDHQEoA10B1AgAA10B
+ 1ANYAbcoAANYAbcDXQHUCAADJQH/AxABFQQAAxcBHwMRARYDCAEKAyUB/wMIAQoMAAMQARUDJQH/DAAD
+ RwGCA1IBowkAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wgAA1MB
+ pgNHAYIIAANBAfkDTAGRA14B8AM7AWQIAAMWAR4DZQHxAyUB/wMlAf8DJQH/AyUB/wMrBEEB+QgAA0EB
+ +QNJAYcRAAHSAfoB/wEAAdIB+gH/EAADSQGHA0EB+QgAAyUB/wMQARUDWAG4AUACvgH9AyEBLwNLAY8D
+ JQH/A0sBjwMSARgIAAMQARUDJQH/DAADXQHfAx4BKigAAx4BKgNdAd8IAANBAfkDWwHKAwsBDgwAAzMB
+ UgMlAf8DJQH/AyUB/wMlAf8DJQH/Az4BawNBAfkIAANBAfkDSQGHDAADBAEFAUgCYwH2AUgCYwH2AVwC
+ YQHZAzMBUggAA0kBhwNBAfkIAAMlAf8DEAEVAVMCaAH0AQAB0gH6Af8BQAJBAXEDRQF8Ay4BSANSAagD
+ XgHwA0oBiwMRARYDEAEVAyUB/wwAA0AB/QMCAQMJAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB
+ /wEAAdIB+gH/AQAB0gH6Af8IAAMCAQMDQAH9CAADXQHUA1kB7wMaASMMAAMWAR0DYAHzAyUB/wNRAfcD
+ WwHkA0gB9gOAAf4DXQHUCAADXQHUA1gBtwwAA0sBjQFaAlwBxAMlATcDRQF8A2IB7gM1AVUEAANYAbcD
+ XQHUCAADJQH/AzoBYAFbAl0BygEAAdIB+gH/AQAB0gH6Af8BWwJhAd4DNAFTBAIDIAEuA1QBqwNeAfAD
+ TgGXAyUB/wwAA10B3wMeASooAAMeASoDXQHfCAADSQGIAyUB/wNdAd8DHgEqDAADNwFaA1EBoQMwAUoD
+ SwGNA2IB7gMlAf8DSQGICAADSQGIA00B+gMYASEEAAMRARYDYgHuAxwBJwgAAwkBCwMQARUDGAEhA00B
+ +gNJAYgIAANfAeUDWwHFAxsBJgFKAksBigFeAmUB4gOAAf4DgAH+AV4CZQHdAzMBUAQBAzQBUwNNAfoD
+ XwHlDAADRwGCA1IBpQkAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB
+ /wgAA1IBpQNHAYIIAAMTARoDYAHzAyUB/wOAAf4DMQFOCAADNgFYA1oBvwNaAfIDJQH/AyUB/wNgAfMD
+ EwEaCAADEwEaA2AB8wNaAb8DBQEGAVsCXQHKA0sBjRAAAwUBBgNaAb8DYAHzAxMBGggAAxUBHANEAXgD
+ WgHyA0YBfgMXAR8DOAFbAWACZQHjA4AB/gEAAdIB+gH/AWACZAHbAToCOwFiA0MBdgMVARwMAAMIAQoD
+ XQHPA0sBjQMEAQUYAAMEAQUDSwGNA10BzwMIAQoMAAM3AVoDgAH+AyUB/wMrAUIDUwGpA04BmAMnAToD
+ IwEzA14B0gNKAYsDKwH8AzcBWhAAAzcBWgOAAf4DWgG/AUACQQFwAwwBDwwAAxgBIQNaAb8DgAH+AzcB
+ WhQAAxgBIANEAXoDWgHyA0UBfAMdASgBTwJQAZsBWwJhAd4DVQGsAxABFRgAAw4BEgNWAbMDXgHXAz4B
+ awMbASYDBAEFAwQBBQMbASYDPgFrA14B1wNWAbMDDgESFAADNwFaA2AB8wNdAdQDWQHvAyUB/wNXAbkD
+ GAEgA0ABcQNdAeoDNwFaGAADNwFaA2AB8wNNAfoDWAG3A0kBhwNJAYcDWAG3A00B+gNgAfMDNwFaIAAD
+ GAEhA0YBfQNaAfIDSwGNBAIoAAMrAUEDUQGhA14B3QNNAfoDTQH6A14B3QNRAaEDKwFBIAADEwEaA0kB
+ iANdAdQDQQH5A0EB+QNdAdQDSQGIAxMBGiAAAxMBGgNJAYgDXQHUA0EB+QNBAfkDXQHUA0kBiAMTARr/
+ AP8AHgADMwFQA1oB6QMlAf8DJQH/AyUB/wMlAf8DJQH/A1wByBgAAzEBTQNVAbQDWwHkAyYB+wMmAfsD
+ WwHkA1UBtAMxAU0kAAMzAVADWgHpAyUB/wUAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB
+ 0gH6Af8BAAHSAfoB/wEAAdIB+gH/AVkCXAHBVAADWgHpAyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB
+ /xgAA0EB+QMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wNBAfkkAANaAekDJQH/AyUB/wUAAdIB+gH/AQAB
+ 0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8wAAMXAR8D
+ SQGHA1wB1gNcAfgDUwGqEAADJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/xgAA2AB4AMlAf8D
+ JQH/AyUB/wMlAf8DJQH/AyUB/wNgAeAkAAMlAf8DJQH/AyUB/wUAAdIB+gH/AQAB0gH6Af8BAAHSAfoB
+ /wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8kAAMJBAwBDwNNAZMDTQH6AyUB
+ /wMlAf8DJQH/A2AB8xAAAyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DMwFSAQAB0gH6Af8B
+ XAJfAcgMAAM8AWYDWwHKA0QBegMuAUgDMAFLA0QBegNbAcoDPAFmJAADJQH/AyUB/wMlAf8FAAHSAfoB
+ /wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/HAAB
+ OwI8AWUDVQGvAzYBWANcAecDYAHgAz4BagM6BGAB6AMlAf8DVQGuEAADJQH/AyUB/wMlAf8DJQH/AyUB
+ /wMlAf8DJQH/AyUB/wMzAVIBAAHSAfoB/wEAAdIB+gH/EAADFwEfAzYBVwNaAcQDWgHEAzkBXgMYASAD
+ GwEmAUwCTQGRASECXwH7ASECXwH7AVsCYwHkAVUCVwG0AzEBTQwAAyUB/wMlAf8DJQH/BQAB0gH6Af8B
+ AAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/xgAASYC
+ JwE5AVUCVgGuA0QBegNaAfUDOQFfAz0BZwFgAmkB6AMgAS4DVwG5AyYB+wMhATAQAAMlAf8DJQH/AyUB
+ /wMlAf8DJQH/AyUB/wMlAf8DJQH/AzMBUgEAAdIB+gH/AQAB0gH6Af8QAAM9AWkDgAH+AyUB/wMlAf8D
+ gAH+Az0BaQMZASIBAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AUECagH5DAAD
+ JQH/AyUB/wMlAf8FAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8B
+ AAHSAfoB/wEAAdIB+gH/GAADMgFPA0IBdQNgAdsDNQFWAV4CZQHiAQAB0gH6Af8BAAHSAfoB/wFQAlEB
+ nQNMAZEDRgGAFAADJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMzAVIBAAHSAfoB/wEAAdIB
+ +gH/EAADYQHmAyUB/wMlAf8DJQH/AyUB/wNhAeYDHgEqAQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB
+ 0gH6Af8BAAHSAfoB/wFgAmYB4AwAAyUB/wMlAf8DJQH/BQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB
+ 0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/xQAAwcBCQNKAYoDXQHPAzoBYAFNAn0B
+ +gEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wErAn4B/AMpAT0EAhQAAyUB/wMlAf8DJQH/AyUB/wMlAf8D
+ JQH/AyUB/wNcAcgDMwFSAQAB0gH6Af8BAAHSAfoB/xAAA1oB9QMlAf8DJQH/AyUB/wMlAf8DWgH1AysB
+ QgNEAXoDLgFIAzABSwNEAXoBWwJdAcoDPAFmDAADJQH/AyUB/wMlAf8FAAHSAfoB/wEAAdIB+gH/AQAB
+ 0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/EAAEAgNLAY8DYAHgAzUB
+ VgOAAf4BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wErAn4B/AMEAQUYAAMlAf8DJQE3FAAD
+ OwFlAzMBUgEAAdIB+gH/AQAB0gH6Af8QAANRAZ4DJQH/AyUB/wMlAf8DJQH/A1EBngMXAR8DNgFXAVoC
+ XAHEAVoCXAHEAzkBXgMYASAQAAMlAf8DJQH/AyUB/wUAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB
+ +gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8QAANBAXMDJQH/AzYBWAFgAmYB4AEAAdIB
+ +gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BWQJcAcEcAANaAekDJQE3EAADCwEOAyUB
+ /wMzAVIBAAHSAfoB/wEAAdIB+gH/EAADCAEKA04BmANlAfEDZQHxA04BmAMIAQoDNAFUA4AB/gEAAdIB
+ +gH/AQAB0gH6Af8DgAH+AT0CPgFpEAADJQH/AyUB/wMlAf8FAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8B
+ AAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/DAADHAEnAyYB+wNdAc4DGwElAUEC
+ agH5AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BQQJqAfkBJgInATkcAAMzAVADWgHpAyUB
+ /wMlAf8DJQH/AyUB/wMlAf8DWwHKA0YBfgEAAdIB+gH/AVwCXwHIKAABYQJqAeYBAAHSAfoB/wEAAdIB
+ +gH/AQAB0gH6Af8BAAHSAfoB/wFhAmoB5hAAAyUB/wMlAf8DJQH/BAADgAH+A4AB/gOAAf4DgAH+A4AB
+ /gEAAdIB+gH/AQAB0gH6Af8BRgJHAYAMAANVAa4DJQH/A2AB6AM6AWADMAFLAVgCWgG9AQAB0gH6Af8B
+ AAHSAfoB/wNeAdIDKgE/LAADPAFmAwUBBhQAA0YBfigAAVoCbgH1AQAB0gH6Af8BAAHSAfoB/wEAAdIB
+ +gH/AQAB0gH6Af8BWgJuAfUQAAMlAf8DJQE3NAADYAHzAyUB/wMlAf8DJQH/A1oB8gMoATwDEQEWAxEB
+ FjQAAVoCYwHpAyUBNxAAAwsBDgEAAdIB+gH/KAADUQGeAQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB
+ 0gH6Af8DUQGeEAADWgHpAyUBNyAAAwsBDgEAAdIB+gH/DAADUwGqA1wB+ANcAdYDSQGHAxcBH0AAAzMB
+ UAFaAmMB6QEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BWwJdAcooAAMIAQoD
+ TgGYAWUCcAHxAWUCcAHxA04BmAMIAQoQAAMzAVADWgHpAyUB/wUAAdIB+gH/AQAB0gH6Af8BAAHSAfoB
+ /wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AVECUwGi/wD/AGIAAxcBHwMlAf8DJQH/AwgB
+ CiQAAx0BKQM/AW4DBgEIEAADBgEIAz8BbgMdASkYAAMTARkDRwGCA1kBwwNaAekDKwH8AysB/ANaAekD
+ WQHDA0YBgQMTARlgAAMXAR8DJQH/AzwBZgNOAZcDJQH/AwgBCiAAA1IBqAMlAf8DWwHQAx0BKAgAAx0B
+ KANbAdADJQH/A1IBqBgAA1sB5AMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/A1sB5FwAAxYB
+ HgMlAf8DOwFlBAAEAQNOAZcDJQH/AwgBChwAAz8BbAMlAf8DJQH/A1MB9AM7AWMDOwFjA1MB9AMlAf8D
+ JQH/Az8BbBgAA1EB9wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/A1EB9xAAAVwCXwHIAQAB
+ 0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB
+ /wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AVwCXwHIEAADFgEeAyUB/wM8AWYMAAQBA04B
+ lwMlAf8DCAEKGAADFAEbA0AB/QMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wNAAf0DFAEbGAADWwHNAyUB
+ /wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DWwHNEQAB0gH6Af8xAAHSAfoB/wwAAxYBHgMlAf8D
+ PAFmFAAEAQNOAZgDJQH/HAADWQHGAyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/A1kBxhwAAzUBVgOAAf4D
+ JQH/A2EB5gNdAc8DXQHPA2EB5gMlAf8DgAH+AzUBVhEAAdIB+gH/BAADJQH/BAADJQH/AzwBZgMlAf8D
+ JQH/BAADJQH/AzwBZgMlAf8FAAHSAfoB/wgAAxYBHgMlAf8DPAFmHAADNgFZAyUB/wQBFAAEAQNUAasD
+ JQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DVAGrBAEcAAMwAUwDKgE/AxsBJQMNAREDDQERAx0BKQMqAT8D
+ MAFMFQAB0gH6Af8EAAMlAf8EAAMlAf8DPAFmAyUB/wMlAf8EAAMlAf8DPAFmAyUB/wUAAdIB+gH/CAAD
+ JQH/A1IBoBwAAzYBVwMlAf8DHQEpAVYCWAGzEAADEAEVA1YBtQMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB
+ /wMlAf8DJQH/A1YBtQMQARUcAAMWAR4DOQFfA1oBxwNaAccDOQFfAxYBHhkAAdIB+gH/BAADJQH/BAAD
+ JQH/AzwBZgMlAf8DJQH/BAADJQH/AzwBZgMlAf8FAAHSAfoB/wgAAyUB/wMrAfwDOQFeFAADNgFXAyUB
+ /wMPARMDPQFoAQAB0gH6Af8MAAMrAUIDYQHmAyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8D
+ JQH/AyUB/wNhAeYDKwFCFAADHQEpA14B8AMlAf8DJQH/AyUB/wMlAf8DXgHwAx0BKRUAAdIB+gH/BAAD
+ JQH/BAADJQH/AzwBZgMlAf8DJQH/BAADJQH/AzwBZgMlAf8FAAHSAfoB/wgAAyUB/wMlAf8DKwH8AzkB
+ XgwAAzUBVgMlAf8DDwEUAzwBZgEAAdIB+gH/AxYBHgwAA1oB8gMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB
+ /wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wNaAfIUAANVAbEDJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8D
+ VQGxFQAB0gH6Af8EAAMlAf8EAAMlAf8DPAFmAyUB/wMlAf8EAAMlAf8DPAFmAyUB/wUAAdIB+gH/CAAD
+ JQH/A0YBgQNWAbIDKwH8AzgBXQQAAzUBVgMlAf8DDwEUAzwBZgEAAdIB+gH/AxYBHhAAAz0BaQNQAZwD
+ TwGbA08BmwNTAacDJQH/AyUB/wMlAf8DJQH/A1MBpwNPAZsDTwGbA1ABnAM9AWkUAANTAfQDJQH/AyUB
+ /wMlAf8DJQH/AyUB/wMlAf8DUwH0FQAB0gH6Af8EAAMlAf8EAAMlAf8DPAFmAyUB/wMlAf8EAAMlAf8D
+ PAFmAyUB/wUAAdIB+gH/CAADgAH+AxoBIwNCAXUDJQH/AysB/ANOAZYDJQH/Aw8BFAM8AWYBAAHSAfoB
+ /wMWAR4oAANeAdcDJQH/AyUB/wNeAdcoAANTAfQDJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DUwH0FQAB
+ 0gH6Af8xAAHSAfoB/wgAA04BlQNNAfoDKwH8AyUB/wMlAf8DJQH/AwsBDgE7AjwBZQEAAdIB+gH/AxYB
+ HiwAA0kBhQMlAf8DJQH/A0kBhigAA1UBsQMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wNVAbEUAAFcAl8B
+ yAEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB
+ 0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wFcAl8ByAgAAwUBBgNHAYIDDQERAysB
+ QQMqAUABOwI8AWUDUgGgAQAB0gH6Af8DFwEfMAADJAE0AyUB/wMlAf8DJAE0KAADHQEpA14B8AMlAf8D
+ JQH/AyUB/wMlAf8DXgHwAx0BKVQABAEDTQGSA4AB/gEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB
+ +gH/AxcBHzQABAEDXAHIA1wByAQBLAADHQEpA1UBsQNTAfQDUwH0A1UBsQMdASn/AFUAAUIBTQE+BwAB
+ PgMAASgDAAFAAwABQAMAAQEBAAEBBgABAhYAA/8BAAb/AgABxgEfAv8B4AF/AgABwgEfAfABDwHgAX8C
+ AAGAAQcB4AEHAfADAAGAAQMBxwEDAfADAAGAAQMBzwEDAfADAAGAAQMBzwEDAYADAAHhAY8BzwEDAYAB
+ AQIAAfEBhwHPAQMBgAEBAgABwAEBAc8BAwGAAQECAAHAAQEBzwEDAcABgQIAAcABAQHHAQMBwAGBAgAB
+ 4AEBAeABBwHAAYECAAH4AUMB8AEPAcAB/wIAAfgBYwL/AcAB/wIABP8BwAH/AgAI/wH4AT8B/wEfAfAB
+ DwHwAQ8B4AEPAf8BDwHgAQcB4AEHAYABAwH/AQcEwwGMAWMB8AEnAYEBwQGHAeEBnAFzAcAB4wGBAcEB
+ jwHxAZwBcwGHAfEBgQEBAZ8B+QGQAXMBmAEZAYYBAQGeAXkBgAEzAZ8B+QGOAQEBnAEZAYABAwGYARkB
+ jgEBAZwBCQGAAQMBnwH5AYcBAQGIAcEBgAEDAZgBGQGDAQEBgQHhAYABAwGHAeEBwAEDAcEBwwHgAQ8B
+ wAEDAeABBwHgAQcB+AE/AfABDwHwAQ8B8AEPEP8B4AEfAYABfwHEAQMC/wHgAR8BgAF/AcQBAwH/AcEB
+ 4AEfAYABfwHEAQMB/gEBAeABAwGAAX8BxAEDAfgBAQHgAQMBwAEBAcQBAwHwAQEB4AEDAcABAQHEAQMB
+ 8AEDAeABAwHAAQEBxAEDAeABAwHgAQMBwAEBAcQBAwHAAQcB5wHDAcABAwHEAQMBwAEPAecBgwHAAQMB
+ xAEDAYABDwHgAQMB/wEDAcQBAwGAAR8B/AH7Af8BAwHPAf8BgAF/AfwB8wH/AQMBzwHzAYMB/wH8AQMB
+ /wEDAcQBAxL/AfwBPwHjAccB4AEHAv8B+AEfAeEBhwHgAQcC/wHxAQ8B4AEHAeABBwGAAQEB4wGHAeAB
+ BwHgAQcBvwH9AscB8AEPAeABBwGoAUUBjwHjAeABBwHwAQ8BqAFFAZ8BwwHAAQMB+AEfAagBRQGPAYMB
+ gAEBAfABDwGoAUUBhwEDAYABAQHwAQ8BqAFFAYIBBwGAAQEB8AEPAagBRQGAAQ8B/AE/AfABDwG/Af0B
+ gAEfAfwBPwHwAQ8BgAEBAYABPwH8AT8B8AEPAv8BgAF/AfwBPwH4AR8K/ws=
@@ -712,7 +712,7 @@ Note: If writing XML-Pageindex is set to FALSE, this option will be forced and c
AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAlgYAAAJNU0Z0AUkBTAIBAQIB
- AAG4AQ4BuAEOARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAARADAAEBAQABIAYAARD/
+ AAFgAQ8BYAEPARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAARADAAEBAQABIAYAARD/
ACcAAxgBIQNQAZwDWgHyA1ABnAMYASHkAAMYASADTwGZA1oB8gNRAaIDJQH/A1EBogNaAfIDTwGZAxgB
IBQAA1kBwANZAcADWQHAA1kBwANZAcADWQHAA1kBwANZAcADWQHAA1kBwANZAcADWQHAA1kBwAMlAf8D
KgFAhAADFQEcA04BlgNaAfIDUQGeAxoBIwMIAQoDJQH/AwgBCgMaASMDUQGeA1oB8gNOAZYDFQEcDAAD
@@ -750,7 +750,7 @@ Note: If writing XML-Pageindex is set to FALSE, this option will be forced and c
AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAACgMAAAJNU0Z0AUkBTAIBAQIB
- AAF4AS4BeAEuARABAAEQAQAE/wEZAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAARADAAEBAQABGAYAAQwh
+ AAEgAS8BIAEvARABAAEQAQAE/wEZAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAARADAAEBAQABGAYAAQwh
AAP3A9kDxAO/A9ID7QP+pQAD/gO5AywPJQN/A/0SAAPnAVIBVAFVA/oPAAO4AbYCuG8AA/sDhgYlA0kD
qwOtA38GJQNEA+MMAAPmA1ADJQN9A/oGAAP9A7QDKwMlA7ppAAP+A2MJJQObBgAD3wklA0QD/QYAA+cM
JQNGA/oDAAO0DCUBtgK4ZgAD1AwlA5sGAAPfDCUDfwP+AwAD6AM1DCUDfQO0AysJJQMrA7hmAAOGDCUD
@@ -779,7 +779,7 @@ Note: If writing XML-Pageindex is set to FALSE, this option will be forced and c
AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAuAsAAAJNU0Z0AUkBTAIBAQQB
- AAGgAQwBoAEMARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAASADAAEBAQABIAYAASD/
+ AAFIAQ0BSAENARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAASADAAEBAQABIAYAASD/
AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/ADYAAxgBIAM4AVsDRAF4A0YBfgM8AWYDJQE3AwQB
BdwAAwQBBQNJAYUDTQH6A1wB5wNRAaQDTgGWA10BzAMlAf8DWAG9AwcBCVwAAxMBGgNJAYgBXQJhAdQB
RQFoAWoB+QFFAWgBagH5AV0CYQHUA0kBiAMTARowAAM4AV0DMAFKAwQBBRwAAw4BEgNVAbQDVQGsAy0B
diff --git a/MyCBZ/List/ListViewSorter.cs b/MyCBZ/List/ListViewSorter.cs
index 1c0661d1..5e08ae88 100644
--- a/MyCBZ/List/ListViewSorter.cs
+++ b/MyCBZ/List/ListViewSorter.cs
@@ -2,12 +2,14 @@
using System.Collections;
using System.Collections.Generic;
using System.Linq;
+using System.Runtime.Versioning;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Win_CBZ.List
{
+ [SupportedOSPlatform("windows")]
internal class ListViewSorter : IComparer
{
private int col;
diff --git a/MyCBZ/Models/ProjectModel.cs b/MyCBZ/Models/ProjectModel.cs
index 2bd87a50..3367cab4 100644
--- a/MyCBZ/Models/ProjectModel.cs
+++ b/MyCBZ/Models/ProjectModel.cs
@@ -795,7 +795,7 @@ protected void OpenArchiveProc(object threadParams)
OpenArchiveThreadParams tParams = threadParams as OpenArchiveThreadParams;
ArrayList missingPages = new ArrayList();
- long itemSize = 0;
+
int index = 0;
long totalSize = 0;
MetaDataPageIndexMissingData = false;
@@ -1097,6 +1097,7 @@ public bool SaveAs(String path, ZipArchiveMode mode, MetaData.PageIndexVersion m
}
}
+ /*
metaDataValidationFailed = Validation.ValidateMetaDataDuplicateKeys(ref invalidKeys);
if (metaDataValidationFailed)
{
@@ -1104,6 +1105,7 @@ public bool SaveAs(String path, ZipArchiveMode mode, MetaData.PageIndexVersion m
return false;
}
+ */
metaDataValidationFailed = Validation.ValidateMetaDataInvalidKeys(ref invalidKeys);
if (metaDataValidationFailed)
@@ -1115,6 +1117,7 @@ public bool SaveAs(String path, ZipArchiveMode mode, MetaData.PageIndexVersion m
if (Program.ProjectModel.MetaData.Exists())
{
+ /*
string defaultKeys = String.Join("", Program.ProjectModel.MetaData.Values.Select(k => k.Key).ToArray());
if (!Regex.IsMatch(defaultKeys, @"^[a-z]+$", RegexOptions.IgnoreCase))
{
@@ -1126,6 +1129,7 @@ public bool SaveAs(String path, ZipArchiveMode mode, MetaData.PageIndexVersion m
return false;
}
+ */
foreach (MetaDataEntry entry in MetaData.Values)
{
@@ -1804,7 +1808,7 @@ public void ValidateProc(object threadParams)
{
foreach (String key in invalidKeys)
{
- problems.Add("Metadata->Values: invalid Key '" + key + "'");
+ problems.Add("Metadata->Values: " + key + "'");
}
}
@@ -1926,9 +1930,9 @@ public void CancelAllThreads()
public Page AddPageFromFile(LocalFile localFile, PageIndexVersion version, int insertAt = -1)
{
int pageStatus = 0;
- bool pageError = false;
+
FileInfo targetPath;
- FileInfo localPath;
+
int realNewIndex = Pages.Count;
Page page;
Page insertPage = null;
diff --git a/MyCBZ/Tasks/ProcessImagesTask.cs b/MyCBZ/Tasks/ProcessImagesTask.cs
index a42982af..b7a8db19 100644
--- a/MyCBZ/Tasks/ProcessImagesTask.cs
+++ b/MyCBZ/Tasks/ProcessImagesTask.cs
@@ -32,8 +32,6 @@ public static Task ProcessImages(List pages, ImageTask gl
};
Page taskPage = null;
- Page secondPage = null;
- string convertFormatName = null;
AppEventHandler.OnApplicationStateChanged(null, new ApplicationStatusEvent(Program.ProjectModel, ApplicationStatusEvent.STATE_PROCESSING));
diff --git a/MyCBZ/Win_CBZ.csproj b/MyCBZ/Win_CBZ.csproj
index 0823e48c..08d89528 100644
--- a/MyCBZ/Win_CBZ.csproj
+++ b/MyCBZ/Win_CBZ.csproj
@@ -110,32 +110,32 @@
-
+
-
-
-
-
-
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+