From 453586516bb19c45466f7c289cf8fb95e46b1768 Mon Sep 17 00:00:00 2001 From: Ioseba Palop Date: Fri, 11 Oct 2019 12:19:40 +0200 Subject: [PATCH] Improve exif extraction (#84) * Improve exif extraction --- FOCA/FormMain.Designer.cs | 1 + FOCA/FormMain.cs | 29 +- FOCA/FormMain.resx | 4818 +++++++++-------- FOCA/PanelMetadataSearch.cs | 9 + MetadataExtractCore/Diagrams/FileMetadata.cs | 4 + MetadataExtractCore/Diagrams/GeoLocation.cs | 17 + .../Metadata/DocumentExtractor.cs | 5 +- .../EXIF/codec/jpeg/JPEGDecodeParam.cs | 359 -- .../EXIF/codec/jpeg/JPEGHuffmanTable.cs | 251 - .../Metadata/EXIF/codec/jpeg/JPEGQTable.cs | 148 - .../drew/imaging/jpg/JpegMetadataReader.cs | 168 - .../imaging/jpg/JpegProcessingException.cs | 37 - .../EXIF/drew/imaging/jpg/JpegSegmentData.cs | 200 - .../drew/imaging/jpg/JpegSegmentReader.cs | 349 -- .../drew/imaging/tiff/TiffMetadataReader.cs | 68 - .../imaging/tiff/TiffProcessingException.cs | 40 - .../EXIF/drew/lang/CompoundException.cs | 36 - .../Metadata/EXIF/drew/lang/Rational.cs | 268 - .../EXIF/drew/metadata/AbstractDirectory.cs | 795 --- .../drew/metadata/AbstractMetadataReader.cs | 84 - .../drew/metadata/AbstractTagDescriptor.cs | 40 - .../EXIF/drew/metadata/IMetadataReader.cs | 22 - .../Metadata/EXIF/drew/metadata/Metadata.cs | 80 - .../EXIF/drew/metadata/MetadataException.cs | 39 - .../Metadata/EXIF/drew/metadata/Tag.cs | 130 - .../exif/AbstractCasioTypeDirectory.cs | 24 - .../exif/AbstractNikonTypeDirectory.cs | 18 - .../drew/metadata/exif/CanonDescriptor.cs | 1124 ---- .../EXIF/drew/metadata/exif/CanonDirectory.cs | 713 --- .../metadata/exif/CasioType1Descriptor.cs | 389 -- .../drew/metadata/exif/CasioType1Directory.cs | 40 - .../metadata/exif/CasioType2Descriptor.cs | 640 --- .../drew/metadata/exif/CasioType2Directory.cs | 175 - .../EXIF/drew/metadata/exif/ExifDescriptor.cs | 1572 ------ .../EXIF/drew/metadata/exif/ExifDirectory.cs | 606 --- .../metadata/exif/ExifInteropDescriptor.cs | 72 - .../metadata/exif/ExifInteropDirectory.cs | 25 - .../metadata/exif/ExifProcessingException.cs | 37 - .../EXIF/drew/metadata/exif/ExifReader.cs | 973 ---- .../drew/metadata/exif/FujifilmDescriptor.cs | 425 -- .../drew/metadata/exif/FujifilmDirectory.cs | 38 - .../EXIF/drew/metadata/exif/GpsDescriptor.cs | 277 - .../EXIF/drew/metadata/exif/GpsDirectory.cs | 127 - .../drew/metadata/exif/KodakDescriptor.cs | 34 - .../EXIF/drew/metadata/exif/KodakDirectory.cs | 20 - .../drew/metadata/exif/KyoceraDescriptor.cs | 68 - .../drew/metadata/exif/KyoceraDirectory.cs | 21 - .../metadata/exif/NikonType1Descriptor.cs | 285 - .../drew/metadata/exif/NikonType1Directory.cs | 28 - .../metadata/exif/NikonType2Descriptor.cs | 229 - .../drew/metadata/exif/NikonType2Directory.cs | 419 -- .../drew/metadata/exif/OlympusDescriptor.cs | 184 - .../drew/metadata/exif/OlympusDirectory.cs | 170 - .../drew/metadata/exif/PanasonicDescriptor.cs | 104 - .../drew/metadata/exif/PanasonicDirectory.cs | 35 - .../drew/metadata/exif/PentaxDescriptor.cs | 298 - .../drew/metadata/exif/PentaxDirectory.cs | 116 - .../EXIF/drew/metadata/exif/SonyDescriptor.cs | 33 - .../EXIF/drew/metadata/exif/SonyDirectory.cs | 20 - .../EXIF/drew/metadata/iptc/IptcDescriptor.cs | 66 - .../EXIF/drew/metadata/iptc/IptcDirectory.cs | 44 - .../metadata/iptc/IptcProcessingException.cs | 40 - .../EXIF/drew/metadata/iptc/IptcReader.cs | 209 - .../metadata/jpeg/JpegCommentDescriptor.cs | 31 - .../metadata/jpeg/JpegCommentDirectory.cs | 23 - .../drew/metadata/jpeg/JpegCommentReader.cs | 49 - .../EXIF/drew/metadata/jpeg/JpegComponent.cs | 107 - .../EXIF/drew/metadata/jpeg/JpegDescriptor.cs | 99 - .../EXIF/drew/metadata/jpeg/JpegDirectory.cs | 105 - .../EXIF/drew/metadata/jpeg/JpegReader.cs | 100 - .../Metadata/EXIF/utils/Utils.cs | 87 - .../utils/bundle/AbstractResourceBundle.cs | 131 - .../EXIF/utils/bundle/IResourceBundle.cs | 88 - .../utils/bundle/MissingResourceException.cs | 41 - .../EXIF/utils/bundle/ResourceBundle.cs | 148 - .../utils/bundle/ResourceBundleFactory.cs | 108 - .../utils/bundle/ResourceBundleWithManager.cs | 103 - .../utils/bundle/SpecialResourceWriter.cs | 48 - .../utils/xml/IOutPutTextStreamHandler.cs | 35 - .../EXIF/utils/xml/TxtOutPutStreamHandler.cs | 149 - .../utils/xml/XmlNewOutPutStreamHandler.cs | 565 -- .../EXIF/utils/xml/XmlOutPutStreamHandler.cs | 423 -- MetadataExtractCore/Metadata/EXIFDocument.cs | 149 +- MetadataExtractCore/Metadata/Office972003.cs | 17 +- MetadataExtractCore/Metadata/OfficeOpenXML.cs | 32 +- MetadataExtractCore/Metadata/OleDocument.cs | 124 +- .../Metadata/OpenOfficeDocument.cs | 121 +- .../MetadataExtractCore.csproj | 83 +- 88 files changed, 2741 insertions(+), 17920 deletions(-) create mode 100644 MetadataExtractCore/Diagrams/GeoLocation.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/codec/jpeg/JPEGDecodeParam.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/codec/jpeg/JPEGHuffmanTable.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/codec/jpeg/JPEGQTable.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/imaging/jpg/JpegMetadataReader.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/imaging/jpg/JpegProcessingException.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/imaging/jpg/JpegSegmentData.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/imaging/jpg/JpegSegmentReader.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/imaging/tiff/TiffMetadataReader.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/imaging/tiff/TiffProcessingException.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/lang/CompoundException.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/lang/Rational.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/AbstractDirectory.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/AbstractMetadataReader.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/AbstractTagDescriptor.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/IMetadataReader.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/Metadata.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/MetadataException.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/Tag.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/AbstractCasioTypeDirectory.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/AbstractNikonTypeDirectory.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/CanonDescriptor.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/CanonDirectory.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/CasioType1Descriptor.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/CasioType1Directory.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/CasioType2Descriptor.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/CasioType2Directory.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/ExifDescriptor.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/ExifDirectory.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/ExifInteropDescriptor.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/ExifInteropDirectory.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/ExifProcessingException.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/ExifReader.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/FujifilmDescriptor.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/FujifilmDirectory.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/GpsDescriptor.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/GpsDirectory.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/KodakDescriptor.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/KodakDirectory.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/KyoceraDescriptor.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/KyoceraDirectory.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/NikonType1Descriptor.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/NikonType1Directory.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/NikonType2Descriptor.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/NikonType2Directory.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/OlympusDescriptor.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/OlympusDirectory.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/PanasonicDescriptor.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/PanasonicDirectory.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/PentaxDescriptor.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/PentaxDirectory.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/SonyDescriptor.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/SonyDirectory.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/iptc/IptcDescriptor.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/iptc/IptcDirectory.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/iptc/IptcProcessingException.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/iptc/IptcReader.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/jpeg/JpegCommentDescriptor.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/jpeg/JpegCommentDirectory.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/jpeg/JpegCommentReader.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/jpeg/JpegComponent.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/jpeg/JpegDescriptor.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/jpeg/JpegDirectory.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/drew/metadata/jpeg/JpegReader.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/utils/Utils.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/utils/bundle/AbstractResourceBundle.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/utils/bundle/IResourceBundle.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/utils/bundle/MissingResourceException.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/utils/bundle/ResourceBundle.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/utils/bundle/ResourceBundleFactory.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/utils/bundle/ResourceBundleWithManager.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/utils/bundle/SpecialResourceWriter.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/utils/xml/IOutPutTextStreamHandler.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/utils/xml/TxtOutPutStreamHandler.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/utils/xml/XmlNewOutPutStreamHandler.cs delete mode 100644 MetadataExtractCore/Metadata/EXIF/utils/xml/XmlOutPutStreamHandler.cs diff --git a/FOCA/FormMain.Designer.cs b/FOCA/FormMain.Designer.cs index e8e9a6e..9ea4298 100644 --- a/FOCA/FormMain.Designer.cs +++ b/FOCA/FormMain.Designer.cs @@ -219,6 +219,7 @@ private void InitializeComponent() this.imgIcons.Images.SetKeyName(119, "Software.png"); this.imgIcons.Images.SetKeyName(120, "Emails.png"); this.imgIcons.Images.SetKeyName(121, "Passwords.png"); + this.imgIcons.Images.SetKeyName(122, "iconfinder_advantage_nearby_1034361.png"); // // menuStripMain // diff --git a/FOCA/FormMain.cs b/FOCA/FormMain.cs index a5186c7..edb862d 100644 --- a/FOCA/FormMain.cs +++ b/FOCA/FormMain.cs @@ -20,6 +20,7 @@ using System.ComponentModel; using System.Diagnostics; using System.Drawing; +using System.Globalization; using System.IO; using System.Linq; using System.Net; @@ -733,6 +734,7 @@ public int GetImageToExtension(string extension) case ".crw": case ".jpg": case ".jpeg": + case ".png": return 32; case ".svg": case ".svgz": @@ -980,6 +982,12 @@ public void TreeViewProjectAfterSelect(object sender, TreeViewEventArgs e) NewItemListView("Modified date", f.ModificationDate.ToString(), "Dates"); } + if (e.Node.Nodes["GPS"] != null && e.Node.Nodes["GPS"].Tag is FileMetadata fmd && fmd != null) + { + panelInformation.lvwInformation.Groups.Add("GPS location", "GPS location"); + + NewItemListView("Location", fmd.GPS.Value, "GPS"); + } SetOtherMetaParentNode(e); @@ -1139,7 +1147,7 @@ public void TreeViewProjectAfterSelect(object sender, TreeViewEventArgs e) { InitializePanelInformation(); - var ed = e.Node.Tag as FileMetadata; + FileMetadata ed = e.Node.Tag as FileMetadata; if (ed != null) { var dicExif = ed.Makernotes; @@ -1156,7 +1164,7 @@ public void TreeViewProjectAfterSelect(object sender, TreeViewEventArgs e) try { - var pc = new PictureBox(); + PictureBox pc = new PictureBox(); using (var ms = new MemoryStream(ed.Thumbnail)) { pc.Image = new Bitmap(ms); @@ -1182,6 +1190,23 @@ public void TreeViewProjectAfterSelect(object sender, TreeViewEventArgs e) } } } + else if (e.Node.Text == "GPS" && IsDocumentNode(e.Node.Parent)) + { + InitializePanelInformation(); + + FileMetadata ed = e.Node.Tag as FileMetadata; + if (ed != null) + { + panelInformation.lvwInformation.Groups.Add("GPS location", "GPS location"); + NewItemListView("DMS", ed.GPS.Value, "GPS location"); + string longitude = ed.GPS.Longitude.ToString("0.000000", CultureInfo.InvariantCulture); + string latitude = ed.GPS.Latitude.ToString("0.000000", CultureInfo.InvariantCulture); + NewItemListView("Longitude", longitude, "GPS location"); + NewItemListView("Latitude", latitude, "GPS location"); + NewItemListView("Altitude", ed.GPS.Altitude, "GPS location"); + NewItemListView("Google maps url", $"https://www.google.com/maps/search/?api=1&query={latitude},{longitude}", "GPS location"); + } + } else if (e.Node == TreeView.Nodes[UpdateGUI.TreeViewKeys.KProject.ToString()].Nodes[UpdateGUI.TreeViewKeys.KMetadata.ToString()].Nodes["Metadata Summary"].Nodes["Users"]) { InitializeInformationPanel(); diff --git a/FOCA/FormMain.resx b/FOCA/FormMain.resx index 9a3bb88..0294035 100644 --- a/FOCA/FormMain.resx +++ b/FOCA/FormMain.resx @@ -124,2412 +124,2432 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACW - MwIAAk1TRnQBSQFMAgEBegEAAVwBJwFcAScBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA - AwAB8AEBAgABAQEAASAGAAHwAQH/AP8AFwADGgElAU8BTAFXAaYBUQFLAVsBrwFRAUsBWwGvAVEBSwFb - Aa8BUQFLAVsBrwFRAUsBWwGvAVEBSwFbAa8BUQFLAVsBrwFRAUsBWwGvAVEBSwFbAa8BUQFLAVsBrwFR - AUwBWgGsAzEBTsgAAU4BSwFSAZsBLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/ - AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BOgEW - AYMB9RQAAwwBEAMMARADBAEFEAADDAEQAwwBEAMJAQwDAAEBiAABUQFNAVoBqwEvAQEBiwH/AS8BAQGL - Af8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEv - AQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/DAADCAELAUsBRAFbAaMBRgEtAXgB2wFGAS0BeAHb - AUwBPgFpAb8DGAEiDAABRgEtAXgB2wFGAS0BeAHbAUwBRAFdAagDBQEHiAABUQFNAVoBqwEvAQEBiwH/ - AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEB - AYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/CAADDQERAUoBOAFvAcsBMAECAYsB/wEw - AQIBiwH/ATABAgGLAf8BMAECAYsB/wE0ARABhAH2AyABLggAATABAgGLAf8BMAECAYsB/wFMATwBawHD - AwYBCIgAAVEBTQFaAasBLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGL - Af8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wgA - AUABPgFDAXEBMAECAYsB/wEwAQIBiwH/ATsBFwGCAfABRgErAXgB3AEwAQIBiwH/ATABAgGLAf8BSwE8 - AWoBwgFDAUABRwF4AUMBQAFHAXgBMAECAYsB/wEwAQIBiwH/AUMBKQF5Ad8BQwFBAUgBfIgAAVEBTQFa - AasBLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wE4ARABiAH5AU8BSwFXAaUBSAFHAUkBhAE/ - ASABgAHxAS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wgAAUkBRAFSAY8BMAEC - AYsB/wEwAQIBiwH/AxoBJAMFAQcBSwE2AXEBzgEwAQIBiwH/ATABAgGLAf8BMAECAYsB/wEwAQIBiwH/ - ATABAgGLAf8BMAECAYsB/wEwAQIBiwH/ATABAgGLAf+IAAFRAU0BWgGrAS8BAQGLAf8BLwEBAYsB/wEy - AQQBhgH+ATsBGQGCAfMDMQFOAx4BKwMzAVMDFAEcAVEBRwFkAcQBLwEHAYIB/AEvAQEBiwH/AS8BAQGL - Af8BLwEBAYsB/wgAAUgBQwFQAY0BMAECAYsB/wEwAQIBiwH/AjMBNAFTAxQBGwE9ARwBgQHtATABAgGL - Af8BMAEGAYUB/AE2ARABiAH3ATYBEAGIAfcBNgEQAYgB9wE2ARABiAH3ATYBEAGIAfcBNgEQAYgB94gA - AVEBTQFaAasBLwEBAYsB/wE4ARABiAH5AUgBRwFKAYcDIQEwAU0BSwFTAZ0BNQEUAYAB9gEwAQcBgwH8 - AVEBRwFkAcQDMAFLAzcBWgFIATMBcwHiAS8BAQGLAf8BLwEBAYsB/wgAAy4BSAEwAQIBiwH/ATABAgGL - Af8BMgEIAYkB+wE2ARABiAH3ATABAgGLAf8BMAECAYsB/wFGAUIBTgGHAyEBMAMhATADIQEwAyEBMAMh - ATADIQEwiAABUQFNAVoBqwE8AR0BgQHyAywBRAMzAVMBQAEiAXwB7gEvAQEBiwH/AS8BAQGLAf8BLwEB - AYsB/wEvAQEBiwH/AS8BAQGLAf8BSAFHAUkBhgMYASEBUAFLAWABuwEvAQEBiwH/DAABSQFEAVIBjgE5 - ARUBhAHyATABAgGLAf8BMAECAYsB/wE4AQ4BhQH4AU0BQQFiAbADBQEHoAABUQFNAVoBqwE6ARYBgwH1 - AVEBRQFlAccBOAEQAYgB+QEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEB - AYsB/wEyAQQBhQH+AU0BOgFvAdkBUAFGAWYBxgEvAQEBiwH/DAADAgEDAyABLgE8ATsBPgFnAT8BPgFC - AXADKQE+AwQBBqQAAkMBRAF4ATIBCgGIAfsBLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEv - AQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wE1AQcBiwH9AVEBRQFo - AcrIAAMFAQcDFgEeAxcBIAMXASADFwEgAxcBIAMXASADFwEgAxcBIAMXASADFwEgAxcBIAMWAR8DCgEO - /wD/AP8ApwADDQESZAADBAEFAwYBCAMGAQgDBgEIAwYBCAMGAQgDBgEIAwYBCAMGAQgDBgEIAwYBCAMF - AQcDAAEBFAADEwEaAxcBIAMXASADFwEgAxcBIAMXASADFwEgAxcBIAMGAQgcAAMLAQ8DOwFjAU8BQAFu - AdQBLwEBAYsB/wEvAQEBiwH/AS8BBwGCAfwBTAFKAU8BkwMbASYDAgEDUAADKQE+AVABSwFgAbsBUQFJ - AWUBwwFRAUkBZQHDAVEBSQFlAcMBUQFJAWUBwwFRAUkBZQHDAVEBSQFlAcMBUQFJAWUBwwFRAUkBZQHD - AVEBSQFlAcMBUQFJAWUBwwFRAUgBYwHAAkMBRAF4FAABUAFBAWoB0AEvAQEBiwH/AS8BAQGLAf8BLwEB - AYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AyoBQBgAAywBRAFPAUABbgHUATUBBwGL - Af0BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AT8BIAGBAfEBSAFHAUkBhRAA - AUsBSQFOAY8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wMyAVABUQFMAV0BtAEvAQEBiwH/ - AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/CAABTwFMAVcBpgEv - AQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGL - Af8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AxUBHRAAAVABQQFqAdABUQFM - AVoBrAMhATADIQEwAyEBMAMhATACQAFBAXEBLwEBAYsB/wMqAUAUAAMcAScBSAEwAXkB5QEvAQEBiwH/ - AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEB - AYsB/wFIAUcBSQGFAwIBAwgAAUsBSQFOAY8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wMy - AVABUQFMAV0BtAEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEv - AQEBiwH/CAABUQFNAVoBqwEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEB - AYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/ - AxoBJAQAAjUBNgFYAU4BSwFTAZwBTgFLAVMBnAFCASUBfQHtAU0BSgFRAZgQAAMyAVABLwEBAYsB/wFS - AUoBXQG1AU4BSwFTAZwBTgFLAVMBnAwAAU8BRAFpAcwBLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BUgFJ - AWMBvwExATABMQFNAygBPQJHAUkBhAE6ARYBgwH1AS8BAQGLAf8BLwEBAYsB/wE/ASABgQHxAxsBJggA - AzYBWQEyAQ0BggH6AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AUkBSAFLAYkDIQEwAUwBPQFwAdgBLwEB - AYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wFCASgBfAHsAUgBRwFKAYgIAAFRAU0BWgGrAS8BAQGL - Af8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEv - AQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8DGgEkBAABSwFJAU4BjwEvAQEBiwH/ - AS8BAQGLAf8BLwEBAYsB/wFNAUoBUQGYEAADMgFQAS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGL - Af8IAAMuAUcBLwEBAYsB/wEvAQEBiwH/ATABBwGDAfwBTgFLAVMBnAMEAQYLAAEBAzYBWQE1ARQBfwH2 - AS8BAQGLAf8BLwEBAYsB/wFMAUoBUAGUCAADAQECAx8BLQFPAUABbgHVAS8BAQGLAf8BLwEBAYsB/wE6 - ARYBgwH1Ay4BRwMHAQoDKgFAAUUBRAFGAX0BSAFHAUoBiAM3AVsDCgENAwEBAggAAVEBTQFaAasBLwEB - AYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/ - AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wMaASQEAAFLAUkBTgGPAS8BAQGL - Af8BLwEBAYsB/wEvAQEBiwH/AUgBMwF2AeEBUQFMAV0BtAFRAUwBXQG0AVEBTAFdAbQBUQFMAV0BtAFP - AUUBaQHMAS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8IAAFIAUcBSQGFAS8BAQGLAf8BLwEB - AYsB/wFNAToBbwHZAw8BFBMAAQEBSAFHAUkBhQEvAQEBiwH/AS8BAQGLAf8BLwEHAYIB/BQAAxcBIAMp - AT8DKgFAAx0BKgcAAQEDIwEzAy8BSQMHAQoQAAFRAU0BWgGrAS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/ - AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEB - AYsB/wEvAQEBiwH/AS8BAQGLAf8DGgEkBAABSwFJAU4BjwEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEv - AQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/ATIBDQGC - AfoBLwEBAYsB/wEvAQEBiwH/CAABSwFJAU4BjwEvAQEBiwH/AS8BAQGLAf8BUQFJAWUBwwMCAQMEAAMz - AVMBTAFKAVABlAgAAygBPQEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wMUARsQAAMHAQkBQgFBAUIBdAJG - AUgBggMYASIDAAEBAyMBMwE4ARABiAH5AS8BAQGLAf8BTQFKAVEBmRAAAVEBTQFaAasBLwEBAYsB/wEv - AQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGL - Af8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wMaASQEAAFLAUkBTgGPAS8BAQGLAf8BLwEB - AYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/ - AS8BAQGLAf8CQwFEAXgBUAFIAWQBwgEyAQQBhgH+CAABSwFJAU4BjwEvAQEBiwH/AS8BAQGLAf8BUgFH - AWcByAMFAQcEAAMKAQ4DMwFTCAABMQEwATEBTQEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wMNAREQAAFM - AUoBTwGTATIBBAGGAf4BLwEBAYsB/wE/ASABfgHvAxsBJgFIAUcBSgGIAS8BAQGLAf8BLwEBAYsB/wFF - ASoBeQHoEAABUQFNAVoBqwEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEB - AYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/ - AxoBJAQAAzQBVAEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEv - AQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/ATYBFAF/AfYBLwEBAYsB/wFRAUwBWgGsCAACQAFB - AXEBLwEBAYsB/wEvAQEBiwH/AUMBKgF9AesDHQEpEAADBAEGAVIBSQFjAb8BLwEBAYsB/wEvAQEBiwH/ - AUsBOAFxAd0UAAFSAUQBagHOAS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AzcBWgMbASYBRQEqAXkB6AE/ - ASABgAHxAUgBRwFKAYgQAAFRAU0BWgGrAS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEB - AYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/ - AS8BAQGLAf8DGAEiCAADMAFMAU4BSwFTAZwBUAFMAVwBsAFRAUwBXQG0AVEBTAFdAbQBUQFMAV0BtAFR - AUwBXQG0AVEBTAFdAbQBUQFMAV0BtAFRAUwBXQG0AU8BSwFWAaIBRgFFAUgBgAMGAQgIAAMfASwBMgEN - AYIB+gEvAQEBiwH/AS8BAQGLAf8BTAE3AXMB4AMdASkDBQEHAwIBAwMPARQBTgFLAVMBnAEvAQEBiwH/ - AS8BAQGLAf8BMgEEAYYB/gI8AT0BZxQAAUgBRwFJAYUBLwEBAYsB/wEvAQEBiwH/AToBFgGDAfUDFAEc - AwABAQMYASIDHwEtAwYBCBAAAVEBTQFaAasBLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEv - AQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGL - Af8BTwFMAVUBoQMFAQcQAAFRAUsBXQG2AUoBNgFzAd8BSgE2AXMB3wFKATYBcwHfAUoBNgFzAd8BSgE2 - AXMB3wFKATYBcwHfAUoBNgFzAd8DJgE4FAABSAFHAUkBhgEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wFD - ASoBfQHrAVIBRwFnAcgBUQFJAWUBwwFNAToBbwHZATABBwGDAfwBLwEBAYsB/wEvAQEBiwH/AU8BQAFu - AdUDDgETFAADCgEOAkIBQwF2AUYBRQFIAYADHAEnJAABSgFIAUwBjQEvAQEBiwH/AS8BAQGLAf8BLwEB - AYsB/wEvAQEBiwH/ATUBBwGLAf0BUQFMAWABuAMNAREsAAFQAUEBagHQAS8BAQGLAf8BLwEBAYsB/wEv - AQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8DKgFAFAADCQEMAVEBSwFdAbYBLwEB - AYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/ - AUUBKAF5AekDMAFMTAADCAELAykBPwI1ATYBWAI1ATYBWAI1ATYBWAExATABMQFNAwcBCTAAAVABQQFq - AdABLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wMq - AUAYAAMJAQwBSAFHAUkBhQEyAQ0BggH6AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEB - AYsB/wFPAUQBaQHMAx0BKeAAAx8BLAJAAUEBcQFLAUkBTgGPAUsBSQFOAY8BSgFIAUwBjQMuAUf/AP8A - WgADBwEJAxIBGAMSARgDEgEYAxIBGAMSARgDEgEYAxIBGAMSARgDEgEYAxIBGAMSARgDEgEYAxIBGAMA - AQEQAAMNAREBUgFKAWMBvgEyAQoBiAH7AS8BBwGCAfwBLwEHAYIB/AEvAQcBggH8AS8BBwGCAfwBLwEH - AYIB/AEyAQ0BgwH6AUsBSQFOAY4DBAEFCAABSAFHAUoBhwE5ARMBgwH4ATkBEwGDAfgBPwEgAYEB8QMd - ASkUAAFIATMBdgHhATkBEwGDAfgBOQETAYMB+AE/ASABgQHxCAADOgFiAVMBTwFYAa8BUwFPAVgBrwFT - AU8BWAGvAVMBTwFYAa8BUwFPAVgBrwFTAU8BWAGvAVMBTwFYAa8BUwFPAVgBrwFTAU8BWAGvAVMBTwFY - Aa8BUwFPAVgBrwFTAU8BWAGvAVMBTwFYAa8DEgEZBAADHQEpAUgBMwF5AesBSAEzAXkB6wFIATMBeQHr - AUgBMwF5AesBSAEzAXkB6wFIATMBeQHrAUgBMwF5AesBSAEzAXkB6wFIATMBeQHrAUgBMwF5AesBSAEz - AXkB6wFIATMBeQHrAVQBUAFZAbIDAgEDEAADIQEwATsBGQGCAfMBSwFKAU4BkQI/AUABbgI/AUABbgI/ - AUABbgI/AUABbgM/AW0BTwFMAVcBqAFOAT0BbwHWAwwBEAgAAUkBSAFMAYsBLwEBAYsB/wEvAQEBiwH/ - ATkBEwGCAfgDHQEqFAABRgEuAXkB5wEvAQEBiwH/AS8BAQGLAf8BOQETAYMB+AgAAksBTQGPAUYBLwF5 - AewDKgFAAS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGL - Af8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wMaASQIAAJKAUsBjAEyAQQBhAH+AS4BAAGL - Af8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BUAFFAWsB2wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEu - AQABiwH/AUEBJQF6AfADGgElFAADIQEwATsBGQGCAfMDKQE+FAADOgFhAU4BPQFvAdYDDAEQCAABSgFI - AUwBjAEvAQEBiwH/AS8BAQGLAf8BMgEKAYkB+wE+AT0BPgFrAwQBBQsAAQEDIwEzAT0BGAF/AfQBLwEB - AYsB/wEvAQEBiwH/ATcBEAGIAfkIAAJLAU0BjwE2ARgBfQH2AVABTwFTAaQBLgEAAYsB/wEuAQABiwH/ + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABI + OAIAAk1TRnQBSQFMAgEBewEAAWQBJwFkAScBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA + AwAB8AEBAgABAQEAASAGAAHwAQH/AJoAAUEBswF7Af8BQQGzAXsB/wFBAbMBewH/AUEBswF7Af8BgQHV + Aa4B/wGBAdUBrgH/AYEB1QGuAf8BmQHUAZUB/wHTAdEBWwH/AdwB2AHPAf8B3AHYAc8B/wHcAdgBzwH/ + AdwB2AHPAf9IAAMaASUBUQFPAVUBpgFTAU8BWAGvAVMBTwFYAa8BUwFPAVgBrwFTAU8BWAGvAVMBTwFY + Aa8BUwFPAVgBrwFTAU8BWAGvAVMBTwFYAa8BUwFPAVgBrwFTAU8BWAGvAVMBUAFYAawDMQFOTAABQQGz + AXsB/wGcAZABdwH/AZwBkAF3Af8BnAGQAXcB/wGBAdUBrgH/AYEB1QGuAf8BgQHVAa4B/wHhAdABTAH/ + AYEB1QGuAf8B3AHYAc8B/wGrAakBpAH/AcABvQG2Af8B3AHYAc8B/0gAAU8BTgFRAZsBLgEAAYsB/wEu + AQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGL + Af8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BPQEaAYEB9RQAAwwBEAMMARADBAEFEAADDAEQAwwBEAMJ + AQwDAAEBDAABQQGzAXsB/wGcAZABdwH/AZwBkAF3Af8BnAGQAXcB/wHFAb4BsAH/AYEB1QGuAf8BzwHR + AV8B/wGBAdUBrgH/AYEB1QGuAf8B3AHYAc8B/wHcAdgBzwH/AdwB2AHPAf8B3AHYAc8B/0gAAVIBUQFX + AasBLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEu + AQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wwAAwgBCwFOAUsBVQGj + AUwBOwFxAdsBTAE7AXEB2wFSAUkBYwG/AxgBIgwAAUwBOwFxAdsBTAE7AXEB2wFPAUwBVwGoAwUBBwwA + AUEBswF7Af8BnAGQAXcB/wGcAZABdwH/AToBPQHfAf8BNAE4AeUB/wFuAbABuwH/AbAB0gF+Af8BgQHV + Aa4B/wGBAdUBrgH/AdwB2AHPAf8BmgGZAZUB/wGlAaMBnwH/AbsBuAGyAf9IAAFSAVEBVwGrAS4BAAGL + Af8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEu + AQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8IAAMNAREBUAFFAWgBywEvAQEBiwH/ + AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/ATUBFAGAAfYDIAEuCAABLwEBAYsB/wEvAQEBiwH/AVEBSQFl + AcMDBgEIDAAB5QGbAQIB/wHlAZsBAgH/AUQBRgHUAf8BNAE4AeUB/wE0ATgB5QH/ATQBOAHlAf8BlwHN + AZcB/wGBAdUBrgH/AYEB1QGuAf8B3AHYAc8B/wGTAZIBjwH/AaIBoQGdAf8B3AHYAc8B/0gAAVIBUQFX + AasBLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEu + AQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wgAAkABQQFxAS8BAQGL + Af8BLwEBAYsB/wE/AR8BfQHwAUwBNwFzAdwBLwEBAYsB/wEvAQEBiwH/AVABSAFkAcICQwFEAXgCQwFE + AXgBLwEBAYsB/wEvAQEBiwH/AUoBNgFzAd8CRAFFAXwMAAGKAZ8BYQH/AeUBmwECAf8BNAE4AeUB/wE0 + ATgB5QH/ATQBOAHlAf8BNAE4AeUB/wE0ATgB5QH/AeEB0AFMAf8BwgHRAWwB/wHcAdgBzwH/AY0BjAGK + Af8BlQGUAZEB/wGxAa4BqQH/SAABUgFRAVcBqwEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/ + AToBFAGHAfkCTwFUAaUDSAGEAUMBJgF+AfEBLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEu + AQABiwH/CAABSwFJAU4BjwEvAQEBiwH/AS8BAQGLAf8DGgEkAwUBBwFSAUQBagHOAS8BAQGLAf8BLwEB + AYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wEvAQEBiwH/AS8BAQGLAf8BLwEBAYsB/wwAAZwBkAF3 + Af8BNAE4AeUB/wE0ATgB5QH/ATQBOAHlAf8BNAE4AeUB/wE0ATgB5QH/ATQBOAHlAf8BRAFPAdgB/wHh + AdABTAH/AdwB2AHPAf8CiAGGAf8B3AHYAc8B/wHcAdgBzwH/SAABUgFRAVcBqwEuAQABiwH/AS4BAAGL + Af8BMgEEAYQB/gE9ASABgAHzAzEBTgMeASsDMwFTAxQBHAFUAU8BYAHEAS4BCAF/AfwBLgEAAYsB/wEu + AQABiwH/AS4BAAGLAf8IAAFKAUgBTAGNAS8BAQGLAf8BLwEBAYsB/wMzAVMDFAEbAUIBJQF9Ae0BLwEB + AYsB/wEvAQcBggH8ATcBFQGHAfcBNwEVAYcB9wE3ARUBhwH3ATcBFQGHAfcBNwEVAYcB9wE3ARUBhwH3 + DAABxQG+AbAB/wE0ATgB5QH/ATQBOAHlAf8B3QHNAVkB/wHjAZsBBQH/AeUBmwECAf8BNAE4AeUB/wE0 + ATgB5QH/AUEBswF7Af8B8QHvAewB/wHxAe8B7AH/AfEB7wHsAf8B8QHvAewB/0gAAVIBUQFXAasBLgEA + AYsB/wE6ARQBhwH5AkgBSQGHAyEBMAFPAU0BUAGdATYBGAF9AfYBLwEIAYAB/AFUAU8BYAHEAzABSwM3 + AVoBTQE8AW8B4gEuAQABiwH/AS4BAAGLAf8IAAMuAUgBLwEBAYsB/wEvAQEBiwH/ATIBCgGIAfsBNwEV + AYcB9wEvAQEBiwH/AS8BAQGLAf8BSAFHAUoBhwMhATADIQEwAyEBMAMhATADIQEwAyEBMAwAAYEB1QGu + Af8BNAE4AeUB/wHBAbsBsQH/AcUBvgGwAf8BnAGQAXcB/wGcAZABdwH/ATQBOAHlAf8BNAE4AeUB/wFB + AbMBewH/AfEB7wHsAf8B8QHvAewB/wHxAe8B7AH/AfEB7wHsAf9IAAFSAVEBVwGrAUABJAF9AfIDLAFE + AzMBUwFEASoBeQHuAS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wNIAYYDGAEh + AVQBUAFcAbsBLgEAAYsB/wwAAUsBSQFOAY4BPAEdAYAB8gEvAQEBiwH/AS8BAQGLAf8BOQETAYIB+AFQ + AUsBXAGwAwUBByQAAYEB1QGuAf8BNAE4AeUB/wFDAVQB2wH/AbEBxQGvAf8BQQGzAXsB/wGcAZABdwH/ + ATQBOAHlAf8BNAE4AeUB/wFdAagBegH/AfEB7wHsAf8B8QHvAewB/wHxAe8B7AH/AfEB7wHsAf9IAAFS + AVEBVwGrAT0BGgGBAfUBUwFNAWEBxwE6ARQBhwH5AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGL + Af8BLgEAAYsB/wEuAQABiwH/ATIBBAGDAf4BUgFDAWkB2QFTAU4BYAHGAS4BAAGLAf8MAAMCAQMDIAEu + AjwBPQFnAUABPwFAAXADKQE+AwQBBigAAYEB1QGuAf8BNAE4AeUB/wE0ATgB5QH/AUIBVAHbAf8BQAGw + AX0B/wE0ATgB5QH/ATQBOAHlAf8BPQE/AdwB/wFUAasBegH/AfEB7wHsAf8ByQLIAf8BvwK+Af8B2AHX + AdUB/0gAA0MBeAEyAQwBhwH7AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEu + AQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BNgEIAYsB/QFUAU4BYwHKTAABgQHV + Aa4B/wGBAdUBrgH/ATQBOAHlAf8BNAE4AeUB/wE0ATgB5QH/ATQBOAHlAf8BNAE4AeUB/wGcAZABdwH/ + AUQBsgF7Af8B8QHvAewB/wLKAckB/wHkAeIB4AH/AfEB7wHsAf9IAAMFAQcDFgEeAxcBIAMXASADFwEg + AxcBIAMXASADFwEgAxcBIAMXASADFwEgAxcBIAMWAR8DCgEOTAABgQHVAa4B/wGBAdUBrgH/AYEB1QGu + Af8BgQHVAa4B/wFBAbMBewH/AUEBswF7Af8BQQGzAXsB/wFBAbMBewH/AUEBswF7Af8B8QHvAewB/wHx + Ae8B7AH/AfEB7wHsAf8B8QHvAewB/8wAAR8BIQEgASgBSAFWAVABaAFnAYsBewGoAXsBwQGfAegBTAGN + AW0BwAE4AUYBPwFaFAABUQJQAV0B0gHQAcsB4f8A/wAmAAMNARJkAAMEAQUDBgEIAwYBCAMGAQgDBgEI + AwYBCAMGAQgDBgEIAwYBCAMGAQgDBgEIAwUBBwMAAQEUAAMTARoDFwEgAxcBIAMXASADFwEgAxcBIAMX + ASADFwEgAwYBCBwAAwsBDwM7AWMBVAFIAWkB1AEuAQABiwH/AS4BAAGLAf8BLgEIAX8B/AJMAU4BkwMb + ASYDAgEDUAADKQE+AVQBUAFcAbsBVQFQAV8BwwFVAVABXwHDAVUBUAFfAcMBVQFQAV8BwwFVAVABXwHD + AVUBUAFfAcMBVQFQAV8BwwFVAVABXwHDAVUBUAFfAcMBVQFQAV8BwwFUAU4BXwHAA0MBeBQAAVMBSQFl + AdABLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wMq + AUAYAAMsAUQBVAFIAWkB1AE2AQgBiwH9AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEA + AYsB/wFDASYBfwHxA0gBhRAAAksBTQGPAS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8DMgFQ + AVIBUQFaAbQBLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEA + AYsB/wgAAVEBTwFVAaYBLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGL + Af8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wMV + AR0QAAFTAUkBZQHQAVMBUAFYAawDIQEwAyEBMAMhATADIQEwA0ABcQEuAQABiwH/AyoBQBQAAxwBJwFN + ATkBdgHlAS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGL + Af8BLgEAAYsB/wEuAQABiwH/A0gBhQMCAQMIAAJLAU0BjwEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEu + AQABiwH/AzIBUAFSAVEBWgG0AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEu + AQABiwH/AS4BAAGLAf8IAAFSAVEBVwGrAS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEA + AYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/ + AS4BAAGLAf8DGgEkBAACNQE2AVgBTwFOAVEBnAFPAU4BUQGcAUUBLAF5Ae0BTgFNAU8BmBAAAzIBUAEu + AQABiwH/AVMBUAFZAbUBTwFOAVEBnAFPAU4BUQGcDAABUgFMAWQBzAEuAQABiwH/AS4BAAGLAf8BLgEA + AYsB/wFVAVABXgG/ATEBMAExAU0DKAE9A0gBhAE9ARoBgQH1AS4BAAGLAf8BLgEAAYsB/wFDASYBfwHx + AxsBJggAAzYBWQEyARABfwH6AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AkkBSgGJAyEBMAFRAUYBawHY + AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BRgEvAXkB7AJIAUkBiAgAAVIBUQFXAasBLgEA + AYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/ + AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wMaASQEAAJLAU0BjwEuAQABiwH/ + AS4BAAGLAf8BLgEAAYsB/wFOAU0BTwGYEAADMgFQAS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGL + Af8IAAMuAUcBLgEAAYsB/wEuAQABiwH/AS8BCAGAAfwBTwFOAVEBnAMEAQYLAAEBAzYBWQE2ARgBfQH2 + AS4BAAGLAf8BLgEAAYsB/wFNAUwBTgGUCAADAQECAx8BLQFUAUkBaQHVAS4BAAGLAf8BLgEAAYsB/wE9 + ARoBgQH1Ay4BRwMHAQoDKgFAA0UBfQJIAUkBiAM3AVsDCgENAwEBAggAAVIBUQFXAasBLgEAAYsB/wEu + AQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGL + Af8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wMaASQEAAJLAU0BjwEuAQABiwH/AS4BAAGL + Af8BLgEAAYsB/wFOATwBcQHhAVIBUQFaAbQBUgFRAVoBtAFSAVEBWgG0AVIBUQFaAbQBUgFMAWQBzAEu + AQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/CAADSAGFAS4BAAGLAf8BLgEAAYsB/wFSAUMBaQHZ + Aw8BFBMAAQEDSAGFAS4BAAGLAf8BLgEAAYsB/wEuAQgBfwH8FAADFwEgAykBPwMqAUADHQEqBwABAQMj + ATMDLwFJAwcBChAAAVIBUQFXAasBLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/ AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEA - AYsB/wEuAQABiwH/AxoBJAgAAxABFQFOAUEBbAHeAS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGL - Af8DLwFJAS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8CTwFUAaUDAgEDDAADGgElAyABLwMh - ATABOwEZAYIB8wMqAUEUAAM7AWUBTgE9AW8B1gMMARAIAAFFAUQBRwF/AUYBLgF5AecBRgEuAXkB5wE8 - AR0BgAHyATUBFAF/AfYCQAFBAXEDAQECBAADGQEjAUwBPQFuAdcBLwEHAYIB/AFFASgBeQHpAUYBLgF5 - AecBSAEyAXMB4ggAAx8BLQMyAVADMgFQAzIBUAMyAVADMgFQAzIBUAMyAVADMgFQAzIBUAMyAVADMgFQ - AzIBUAMyAVADCAELDAADQAFxAS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEu - AQABiwH/AS4BAAGLAf8BLgEAAYsB/wFFASwBegHtAxQBHBAAAUsBSQFOAY8BUQFMAVsBrQMgAS8BOwEZ - AYIB8wMqAUEUAAM7AWUBTgE9AW8B1gMMARAUAAMfASwBTwFAAW4B1QE/AR8BfQHwAzIBUAMeASsBTwE6 - AXIB2gE/AR8BfQHwAz8BbQMDAQQQAAM7AWUBUgFRAVoBtAFSAVEBWgG0AVIBUQFaAbQBUgFRAVoBtAFS - AVEBWgG0AVIBUQFaAbQBUgFRAVoBtAFSAVEBWgG0AVIBUQFaAbQBUgFRAVoBtAFSAVEBWgG0AVIBUQFa - AbQBUgFRAVoBtAMSARkMAAMCAQMBUwFHAWcB0wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wMwAUwBLgEA - AYsB/wEuAQABiwH/AS4BAAGLAf8COQE6AWAUAAFKAUgBTAGNAVEBTAFaAawDIAEvATsBGQGCAfMDKgFB - FAADOwFlAU4BPQFvAdYDDAEQGAADFAEcAU0BOgFvAdkBMgENAYIB+gFIATMBcwHiATIBCgGIAfsDOAFe - AwABARQAAksBTQGPAUUBLAF6Ae0DMQFPAS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEA - AYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wMaASQQAAMp - AT4BPQEaAYEB9QEuAQABiwH/AS4BAAGLAf8DKgFAAS4BAAGLAf8BLgEAAYsB/wFRAUYBawHYAw8BFBQA - AUoBSAFMAY0BUQFMAVoBrAMgAS8BOwEZAYIB8wMqAUEUAAM7AWUBTgE9AW8B1gMMARAcAAMgAS8BRwEx - AXQB5AE1ARQBfwH2AzsBZQMEAQUYAANKAY0BQQElAXoB8ANKAY0BMgEMAYcB+wEyAQwBhwH7ATIBDAGH - AfsBMgEMAYcB+wEyAQwBhwH7ATIBDAGHAfsBMgEMAYcB+wEyAQwBhwH7ATIBDAGHAfsBMgEMAYcB+wEy - AQwBhwH7AxkBIxAAAwMBBAFVAVABXgG/AS4BAAGLAf8BLgEAAYsB/wNEAXkBLgEAAYsB/wE2AQgBiwH9 - Ay8BSRgAAUoBSAFMAY0BUQFMAVoBrAMgAS8BOwEZAYIB8wMqAUEUAAM7AWUBTgE9AW8B1gMMARAgAAFR - AUoBXwG6AUkBMgF2AeMgAAMdASkDLgFIAy4BSAMuAUgDLgFIAy4BSAMuAUgDLgFIAy4BSAMuAUgDLgFI - Ay4BSAMuAUgDLgFIAwcBChQAAxUBHQFFASwBeQHtAS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AVEBUAFW - AaocAAFKAUgBTAGNAVEBTAFaAawDIAEvATsBGQGCAfMDKgFBFAADOwFlAU4BPQFvAdYDDAEQIAABUQFK - AV8BugFJATIBdgHjIAACNAE1AVUBTgFNAU8BlwNKAY0BTgFNAU8BmAFOAU0BTwGYAU4BTQFPAZgBTgFN - AU8BmAFOAU0BTwGYAU4BTQFPAZgBTgFNAU8BmAFOAU0BTwGYAU4BTQFPAZgBTgFNAU8BmAFOAU0BTwGY - AxABFRgAA0QBewEyAQQBgwH+AS4BAAGLAf8BNgEYAX0B9gMmATgcAAFKAUgBTAGNAVEBTAFaAawDIQEw - ATsBGQGCAfMDOQFfAx4BKwMeASsDHgErAx4BKwMeASsBRQFEAUYBfQFOAT0BbwHWAwwBEBwAAjQBNQFV - AT8BHwF9AfABMgENAYMB+gFOAUsBUwGaAwoBDhgAAksBTQGPAUYBLwF5AewDKgFAAS4BAAGLAf8BLgEA + AYsB/wMaASQEAAJLAU0BjwEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEA + AYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/ATIBEAF/AfoBLgEAAYsB/wEuAQABiwH/ + CAACSwFNAY8BLgEAAYsB/wEuAQABiwH/AVUBUAFfAcMDAgEDBAADMwFTAU0BTAFOAZQIAAMoAT0BLgEA + AYsB/wEuAQABiwH/AS4BAAGLAf8DFAEbEAADBwEJA0IBdANHAYIDGAEiAwABAQMjATMBOgEUAYcB+QEu + AQABiwH/AU4BTQFQAZkQAAFSAVEBVwGrAS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEA AYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/ - AS4BAAGLAf8BLgEAAYsB/wMaASQYAAMTARoBRwEyAXYB6QEuAQABiwH/AkwBTgGTAwIBAxwAAUoBSAFM - AY0BUQFMAVoBrAMUARwBTwFAAW4B1QE7ARkBggHzATwBHQGAAfIBPAEdAYAB8gE8AR0BgAHyATwBHQGA - AfIBPAEdAYAB8gE9ARgBfwH0AVEBSgFdAbQDBwEJGAADEAEVAU8BOgFyAdoBLwEBAYsB/wEvAQEBiwH/ - ATABBwGCAfwDNwFaGAACSwFNAY8BPQEgAYAB8wNIAYYBLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEA + AS4BAAGLAf8DGgEkBAACSwFNAY8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/ + AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wNDAXgBVAFPAV4BwgEyAQQBhAH+ + CAACSwFNAY8BLgEAAYsB/wEuAQABiwH/AVUBTwFjAcgDBQEHBAADCgEOAzMBUwgAATEBMAExAU0BLgEA + AYsB/wEuAQABiwH/AS4BAAGLAf8DDQEREAACTAFOAZMBMgEEAYQB/gEuAQABiwH/AUIBKAF6Ae8DGwEm + AkgBSQGIAS4BAAGLAf8BLgEAAYsB/wFKATIBdAHoEAABUgFRAVcBqwEuAQABiwH/AS4BAAGLAf8BLgEA AYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/ - AxoBJBwAAzUBVwFQAUYBaQHXAwcBCiAAAUoBSAFMAY0BUQFLAVsBrwMNAREDGAEhAygBPAMnAToDJwE6 - AycBOgMmATkDIwE0AyQBNgMKAQ4cAAMYASIBPwEgAYAB8QEvAQEBiwH/AS8BAQGLAf8BNQEHAYsB/QJA - AUEBcRgAAw0BEgMXASADFwEgAxcBIAMXASADFwEgAxcBIAMXASADFwEgAxcBIAMXASADFwEgAxcBIAMX - ASADBAEFHAADAQECAx0BKSQAAUkBSAFMAYsBPwEfAXwB8AFSAUQBagHOAVEBQwFsAc8BUgFEAWoBzgFS - AUQBagHOAVIBRAFqAc4BUgFEAWoBzgFSAUsBXwG5AwkBDCQAAwMBBAFRAUwBWwGtAS8BAQGLAf8BLwEB - AYsB/wE3ARUBhwH3ASIBIQEiATGcAAMUARsBRgFFAUgBgQFLAUkBTgGPAUsBSQFOAY8BSwFJAU4BjwFL - AUkBTgGPAUsBSQFOAY8BSwFJAU4BjwFGAUUBSAGBAwYBCCgAAxIBGAFEAUMBRQF5AkcBSQGEAyQBNgMB - AQL/AP8AGgACSAFJAYcBPAEdAX0B+AE8AR0BfQH4AUcBMwF5AfEDHQEpFAABVAFJAWkB4QE8AR0BfQH4 - ATwBHQF9AfgBRwEzAXkB8RQAAw0BEQJWAVsBvgEyARABhQH7ASwBCgF9AfwBLAEKAX0B/AEsAQoBfQH8 - ASwBCgF9AfwBLAEKAX0B/AEyARYBfQH6A0sBjgMEAQUIAAMcASgBWQFPAWYB2gE8AR0BfQH4ATwBHQF9 - AfgBPAEdAX0B+AE8AR0BfQH4ATwBHQF9AfgBPAEdAX0B+AE8AR0BfQH4ATwBHQF9AfgBPAEdAX0B+AE8 - AR0BfQH4AUkBNgFyAe4DNgFZGAADGgEkAjUBNgFYAjUBNgFYAjUBNgFYAjUBNgFYAygBPRgAA0oBiwEs - AQABiwH/ASwBAAGLAf8BPAEdAX0B+AMdASoUAAFRAUQBbgHnASwBAAGLAf8BLAEAAYsB/wE8AR0BfQH4 - FAADIQEwAUEBKQF7AfMCTAFNAZECPwFAAW4CPwFAAW4CPwFAAW4CPwFAAW4DPwFtAlIBUwGoAVcBUgFj - AdYDDAEQCAACSAFJAYcBLAEAAYsB/wEsAQABiwH/ASwBAAGLAf8BLAEAAYsB/wEsAQABiwH/ASwBAAGL - Af8BLAEAAYsB/wEsAQABiwH/ASwBAAGLAf8BLAEAAYsB/wEsAQABiwH/ASwBAAGLAf8BRwEzAXcB8RgA - AjwBPQFoAS0BAAGLAf8BLQEAAYsB/wEtAQABiwH/AS0BAAGLAf8BUwFSAVYBsBgAA0oBjAEsAQABiwH/ - ASwBAAGLAf8BMgEQAYYB+wM+AWsDBAEFCwABAQMjATMBQAEoAXkB9AEsAQABiwH/ASwBAAGLAf8BPQEa - AYUB+RQAAyEBMAFBASkBewHzAykBPhQAAzoBYQFXAVIBYwHWAwwBEAgAA0oBiwEsAQABiwH/ASwBAAGL - Af8BLAEAAYsB/wEsAQABiwH/AUcBLwF5AfICUAFSAaQDTAGTAVQBSgFmAd8BLAEAAYsB/wEsAQABiwH/ - ASwBAAGLAf8BLAEAAYsB/wE8AR0BfQH4DAADDAEQAwwBEAMMARADDAEQAygBPQE7ARoBfgH4AS0BAAGL - Af8CRgFHAYEDDAEQAwwBEAMMARADDAEQAwEBAggAAkUBRgF/AVEBRAFuAecBUQFEAW4B5wFHAS8BeQHy - ATgBHgF5AfYDQAFxAwEBAgQAAxkBIwFWAVABYwHXASwBCgF9AfwBTwFAAW4B6QFRAUQBbgHnAVMBSAFo - AeIMAAMaASUDIAEvAyEBMAFBASkBewHzAyoBQRQAAzsBZQFXAVIBYwHWAwwBEAgAA0oBiwEsAQABiwH/ - ASwBAAGLAf8BLAEAAYsB/wEsAQABiwH/A0ABcAMEAQYDAwEEAxYBHwFUAU4BZgHeASwBAAGLAf8BLAEA - AYsB/wEsAQABiwH/ATwBHQF9AfgIAAM5AV8BVAFLAWgB2wFUAUsBaAHbAVQBSwFoAdsBVAFLAWgB2wFQ - AUMBagHiATIBBAGBAf4BLQEAAYsB/wFKATYBdgHsAVQBSwFoAdsBVAFLAWgB2wFUAUsBaAHbAVQBSwFo - AdsBVAFSAVYBrxQAAx8BLAFZAVQBYwHVAUUBMAF0AfADMgFQAx4BKwFZAU8BZgHaAUUBMAF0AfADPwFt - AwMBBBQAAksBTAGPAlMBVQGtAyABLwFBASkBewHzAyoBQRQAAzsBZQFXAVIBYwHWAwwBEAgAA0oBiwEy - ARYBfQH6AVUBVAFWAbQDUgGpAlEBUgGhAxYBHggAAwIBAwNCAXYBUwFSAVMBqgJPAVMBpQFTAUgBaQHi - ATwBHQF9AfgIAAJLAUwBjwFHATABdgHuA0MBeANDAXgDQwF4A0MBeANDAXgDQwF4A0MBeANDAXgDQwF4 - A0MBeAJQAVIBowEtAQABiwH/GAADFAEcAVYBTQFjAdkBMgEWAX0B+gFTAUgBaAHiATIBEAGFAfsDOAFe - AwABARgAA0oBjQJTAVQBrAMgAS8BQQEpAXsB8wMqAUEUAAM7AWUBVwFSAWMB1gMMARAIAANKAYsBSQEz - AXIB7wMeASsDAwEEAwMBBAMAAQEMAAMCBAMBBAMDAQQDUgGpATwBHQF9AfgIAAJLAUwBjwFRAUQBaQHf - KAADMgFQAS0BAAGLAf8cAAMgAS8BUQFGAWkB5AE4AR4BeQH2AzsBZQMEAQUcAANKAY0CUwFUAawDIAEv - AUEBKQF7AfMDKgFBFAADOwFlAVcBUgFjAdYDDAEQCAADSgGLAUUBMAF0AfADHQEqJAABVAFTAVYBqwE8 - AR0BfQH4CAACSwFMAY8BUQFEAWkB3ygAAzIBUAEtAQABiwH/IAACVQFYAboBUwFJAWkB4yQAA0oBjQJT - AVQBrAMgAS8BQQEpAXsB8wMqAUEUAAM7AWUBVwFSAWMB1gMMARAIAANKAYsBRQEwAXQB8AMdASokAAFU - AVMBVgGrATwBHQF9AfgIAAJLAUwBjwFRAUQBaQHfKAADMgFQAS0BAAGLAf8gAAJVAVgBugFTAUkBaQHj - JAADSgGNAlMBVAGsAyABLwFBASkBewHzAyoBQRQAAzsBZQFXAVIBYwHWAwwBEAgAA0oBiwFFATABdAHw - Ax0BKiQAAVQBUwFWAasBPAEdAX0B+AgAAksBTAGPAVEBRAFpAd8oAAMyAVABLQEAAYsB/xwAAjQBNQFV - AUUBMAF0AfABMgEWAX0B+gNQAZoDCgEOHAADSgGNAlMBVAGsAyEBMAFBASkBewHzAzkBXwMeASsDHgEr - Ax4BKwMeASsDHgErA0UBfQFXAVIBYwHWAwwBEAgAA0oBiwFFATABdAHwAx0BKiQAAVQBUwFWAasBPAEd - AX0B+AgAAksBTAGPAVEBRAFpAd8oAAMyAVABLQEAAYsB/xgAAxABFQFZAU8BZgHaASwBAAGLAf8BLAEA - AYsB/wEtAQoBfQH8AzcBWhwAA0oBjQJTAVQBrAMUARwBWQFUAWMB1QFBASkBewHzAUcBLwF5AfIBRwEv - AXkB8gFHAS8BeQHyAUcBLwF5AfIBRwEvAXkB8gFAASgBeQH0AVUBVAFWAbQDBwEJCAADSgGLAUUBMAF0 - AfADHQEqJAABVAFTAVYBqwE8AR0BfQH4CAACSwFMAY8BUQFEAWkB3ygAAzIBUAEtAQABiwH/GAADGAEi - AUcBMwF3AfEBLAEAAYsB/wEsAQABiwH/ATgBCgGLAf0DQAFxHAADSgGNAVQBUwFUAa8DDQERAxgBIQMo - ATwDJwE6AycBOgMnAToDJgE5AyMBNAMkATYDCgEODAADSgGMAUcBMwF5AfEDLwFKAx0BKgMdASoDHQEq - Ax0BKgMdASoDHQEqAx0BKgMdASoDHQEqAVUBVAFWAbQBMgEWAX0B+ggAAksBTAGPAUwBOgFyAekDMgFQ - AzIBUAMyAVADMgFQAzIBUAMyAVADMgFQAzIBUAMyAVADMgFQAkgBSQGHAS0BAAGLAf8YAAMDAQQCUwFV - Aa0BLAEAAYsB/wEsAQABiwH/AToBHwGEAfcBIgEhASIBMRwAA0oBiwFFATABcgHwAVkBVQFfAc4BWQFW - AWEBzwFZAVUBXwHOAVkBVQFfAc4BWQFVAV8BzgFZAVUBXwHOAVYBVAFYAbkDCQEMFAADRAF5ATIBBAGA - Af4BRwEvAXkB8gFFATABdAHwAUUBMAF0AfABRQEwAXQB8AFFATABdAHwAUUBMAF0AfABRQEwAXQB8AFF - ATABdAHwAUUBMAF0AfABRQEwAXQB8AEyARYBfQH6AVYBTQFmAdwIAAM6AWEBLQEAAYsB/wEtAQABiwH/ - AS0BAAGLAf8BLQEAAYsB/wEtAQABiwH/AS0BAAGLAf8BLQEAAYsB/wEtAQABiwH/AS0BAAGLAf8BLQEA - AYsB/wEtAQABiwH/AS0BAAGLAf8BVAFTAVgBthwAAxIBGANEAXkDSAGEAyQBNgMBAQIcAAMUARsCRgFH - AYECSwFMAY8CSwFMAY8CSwFMAY8CSwFMAY8CSwFMAY8CSwFMAY8CRgFHAYEDBgEIFAADDAEQA0MBeANK - AYsDSgGLA0oBiwNKAYsDSgGLA0oBiwNKAYsDSgGLA0oBiwNKAYsDSAGEAxwBKAwAAw8BFAMaASQDGgEk - AxoBJAMaASQDGgEkAxoBJAMaASQDGgEkAxoBJAMaASQDGAEhAwIBA/8ABQADUQGfA1EBnwNRAZ8DUQGf - A1EBnwNRAZ8DUQGfAVABUQFQAZ8DUQGfA1EBnwNRAZ8DUQGfA1EBnwNRAZ8DUQGfAzsBYwgAA+IB/wPL - Af8DyQH/A8kB/wPJAf8DyQH/A8kB/wPJAf8DyQH/A8kB/wPJAf8DyQH/A8wB/wPiAf+AABD/AfoB/QH6 - Af8B3QHvAd0B/wEBAbUBAgH/AQABrAEAAf8BhgHFAYcB/wHSAekB0xX/A1EBnwgAA8sB/wP5Af8D/AH/ - A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/kB/wPMAf8EAAMEAQYDCQEMAwIBAwQA - AwQBBgMJAQwDAgEDAwABAQMCAQMDBAEGAwQBBgMFAQcDCQEMAwQBBhQAAw0BEgM5AV8BWAFWAV8BzAE8 - AR0BfQH4ATwBHQF9AfgBUQFEAW4B5wJIAUkBiAMZASMDAgEDDAAQ/wH+Af8B/gH/AeUB8gHlAf8BCQG4 - AQoB/wEFAbcBBwH/AbEB2gGyAf8B4gHxAeMV/wNRAZ8IAAPJAf8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8 - Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8DyQH/AwQBBgMtAUYDOwFkAxwBKAMFAQcDKQE/AzsBZAMc - ASgDEgEYAzcBWgNHAYEDSgGLA0UBfAMvAUoDBQEHEAADJwE6AVgBVAFgAdEBLAEKAX0B/AFVAVQBWAG8 - AVgBVgFhAc8BLAEAAYsB/wEsAQABiwH/ASwBAAGLAf8BUQFGAW4B5gNAAXEDAAEBCAAQ/wH1AfoB9QH/ - AdQB6gHVAf8BAQG1AQIB/wEAAaoBAAH/AQ0BuwEOAf8BvAHgAb0B/wHnAfQB5wH/Ad4B8AHfAf8B2QHt - AdoB/wHbAe4B2wH/AfUB+gH1Af8DUQGfCAADyQH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D+wH/A/sB/wP7 - Af8D+wH/A/sB/wP7Af8D/AH/A8kB/wMbASYDWgHNA1QB7gNOAZkDIQEwA1cBwgNdAe0DUQGcA0IBdANe - AeUCMwExAfoBMQEyATAB+gNRAfcDWQHPAzQBVAMAAQEIAAMaASUBVAFOAWYB3gFUAU0BZQHdAzEBTgMS - ARkCUAFSAaMBLAEAAYsB/wEsAQABiwH/ASwBAAGLAf8BLAEAAYsB/wEyAQQBfwH+A0ABcAMCAQMEAAHx - AfgB8QH/Ae4B9wHuAf8B7AH2Ae0B/wHuAfcB7gH/AdgB7AHZAf8BsAHaAbIB/wEAAbABAAH/AQABnAEA - Af8BAAGYAQAB/wGGAcYBhwH/AbkB3gG6Af8BqgHXAasB/wGhAdMBogH/AaUB1AGlAf8B2QHtAdkB/wNR - AZ8EAAH1Au8B/wG3ApsB/wG3AYUBhAH/AZ0BGAEWAf8BmgETAREB/wGaARMBEQH/AZoBEwERAf8BnQEY - ARYB/wG3AYUBgwH/AdUBuQG4Af8B8gHsAesB/wP6Af8D+gH/A/wB/wPJAf8DMgFQA0AB/QGJAocB/wNZ - AdcDOgFiA00B+gGfAZ0BngH/A1gB3QNbAdkBtQGzAbQB/wHjAuIB/wHrAuoB/wO9Af8BFQEUARUB/wNa - AdUDJgE4BAADBgEIAlYBWAG7AU8BQAFuAekDIQEwAwABAQNRAaIBMgEQAYUB+wEsAQABiwH/ASwBAAGL - Af8BMQEWAX0B+gFRAUYBbAHmAVkBVQFfAc4BUQFGAW4B5gMYASIEAAGsAdcBrQH/AZgBzgGZAf8BjwHK - AZEB/wGWAc0BlwH/ARoBwQEcAf8BAAG0AQEB/wEAAbEBAAH/AQABqAEAAf8BAAGbAQAB/wEAAaYBAAH/ - AQABqwEAAf8BAAGpAQAB/wEAAagBAAH/AQABrAEAAf8BgwHEAYQB/wNRAZ8B9QLuAf8BuQGIAYcB/wHm - AdQB0wH/AZoBEwERAf8BmgETAREB/wGaARMBEQH/AZoBEwERAf8BmgETAREB/wHmAdQB0wH/AZoBEwER - Af8BmgETAREB/wG4AYcBhQH/Ae8C6AH/A/gB/wP8Af8DyQH/AzUBVgGVAZEBkgH/Aa0BqgGrAf8DWAHd - Az4BagOoAf0B0ALOAf8DXwHgA10B7QH4AvYB/wNcAfgDWQH1A/oB/wP3Af8DTQH6A0MBeAQAASwBKwEs - AUMBMgEQAYUB+wI9AT4BagQAAwcBCQFYAVYBXgHJASwBAAGLAf8BLAEAAYsB/wEyARYBfQH6AzwBZgMb - ASYDHAEoAU8BQAFuAekCSAFJAYgEAAEFAbcBBgH/AQABrwEAAf8BAAGsAQAB/wEAAa4BAAH/AQABpwEA - Af8BAAGgAQAB/wEAAacBAAH/AQABpAEAAf8BAAGaAQAB/wEAAZgBAAH/AQABlwEAAf8BAAGXAQAB/wEA - AZcBAAH/AQABmwEAAf8BAAGsAQAB/wNRAZ8BwAGUAZMB/wGaARMBEQH/AfkC9AH/AeYB1AHTAf8BzAGp - AagB/wHTArMB/wGaARMBEQH/AdMCswH/AfkC9AH/AeYB1AHTAf8BzAGpAagB/wGaARMBEQH/Ab4BkgGR - Af8D+AH/A/wB/wPJAf8DNAFUAYwBiQGKAf8BowGfAaAB/wNaAdsDPgFqAaICoAH9AcUBwgHDAf8DWgHe - A1IBpwNMAZMDIQEwA0UBfANNAfoE/wOHAf0DRwGBBAACRgFHAYEBSQEzAXIB7wMdASkDBQEHA1ABngE4 - AQoBiwH9ASwBAAGLAf8BLAEAAYsB/wE+ARoBhQH5AycBOgcAAQECUgFTAagBTwFBAW4B6AUAAZcBAAH/ - AQABlwEAAf8BAAGXAQAB/wEAAZcBAAH/AQABlwEAAf8BAAGXAQAB/wEAAZcBAAH/AQABlwEAAf8BAAGX - AQAB/wEAAZcBAAH/AQABlwEAAf8BAAGXAQAB/wEAAZcBAAH/AQABmAEAAf8BAAGfAQAB/wFQAVEBUAGf - AZoBFAESAf8BmgETAREB/wHmAdQB0wH/AZoBEwERAf8B3wHJAcgB/wHqAtwB/wGaARMBEQH/AeYB1AHT - Af8B5gHUAdMB/wGaARMBEQH/Ad8ByQHIAf8BrQEzATIB/wGaARQBEgH/A/YB/wP8Af8DyQH/AzQBVAGJ - AoYB/wGeAZoBmwH/A1oB2wM9AWcBnwKdAf0BvgG7AbwB/wNfAeADEgEZAxQBHANSAacDTAHzA8cF/wNZ - AfUDLAFEBAADSwGOAU0BPgFuAeoDFwEgAksBTAGQAVYBTQFjAdkBVwFWAVkBvwFXAVUBWgHAAVYBVQFa - AcEBVAFTAVQBrgMVAR0IAAJLAUwBkAE4AQoBiwH9BQABswEAAf8BAAGiAQAB/wEAAZcBAAH/AQABlwEA - Af8BAAGXAQAB/wEAAZcBAAH/AQABlwEAAf8BAAGXAQAB/wEAAZcBAAH/AQABlwEAAf8BAAGXAQAB/wEA - AZcBAAH/AQABlwEAAf8BAAGbAQAB/wEAAa8BAAH/A1EBnwGgARwBGwH/AZoBEwERAf8B7AHfAd4B/wGg - AR4BHAH/Ad8ByQHIAf8B8QHnAeYB/wGgAR4BHAH/AewB3wHeAf8B7AHfAd4B/wGgAR4BHAH/Ad8ByQHI - Af8BswE+AT0B/wGfARwBGgH/A/IB/wP8Af8DyQH/AzQBVAGHAYMBhAH/AZoClgH/A1oB2wM7AWUBnAKa - Af0BuAK1Af8DXwHgAzQBVANZAckDQwH/Ad4B3QHcBf8DqAH9A0oBiQMCAQMEAANLAY4BTwFAAW4B6QFT - AVIBUwGqATgBCgGLAf0DQAFxAwQBBgMAAQEUAANMAZIBMgEEAX8B/gQAAYMBwwGEAf8BAAGoAQAB/wEA + AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AxoBJAQAAzQBVAEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEu + AQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/ATcBGAF9 + AfYBLgEAAYsB/wFTAVABWAGsCAADQAFxAS4BAAGLAf8BLgEAAYsB/wFIATMBeQHrAx0BKRAAAwQBBgFV + AVABXgG/AS4BAAGLAf8BLgEAAYsB/wFPAUIBbAHdFAABVQFNAWYBzgEuAQABiwH/AS4BAAGLAf8BLgEA + AYsB/wM3AVoDGwEmAUoBMgF0AegBQwEmAX4B8QJIAUkBiBAAAVIBUQFXAasBLgEAAYsB/wEuAQABiwH/ + AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEA + AYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wMYASIIAAMwAUwBTwFOAVEBnAFSAVABWAGwAVIBUQFa + AbQBUgFRAVoBtAFSAVEBWgG0AVIBUQFaAbQBUgFRAVoBtAFSAVEBWgG0AVIBUQFaAbQBUAFPAVQBogJG + AUcBgAMGAQgIAAMfASwBMgEQAX8B+gEuAQABiwH/AS4BAAGLAf8BUQE/AW4B4AMdASkDBQEHAwIBAwMP + ARQBTwFOAVEBnAEuAQABiwH/AS4BAAGLAf8BMgEEAYQB/gI8AT0BZxQAA0gBhQEuAQABiwH/AS4BAAGL + Af8BPQEaAYEB9QMUARwDAAEBAxgBIgMfAS0DBgEIEAABUgFRAVcBqwEuAQABiwH/AS4BAAGLAf8BLgEA + AYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/ + AS4BAAGLAf8BLgEAAYsB/wFRAU8BUwGhAwUBBxAAAVMBUQFZAbYBTwE+AW4B3wFPAT4BbgHfAU8BPgFu + Ad8BTwE+AW4B3wFPAT4BbgHfAU8BPgFuAd8BTwE+AW4B3wMmATgUAANIAYYBLgEAAYsB/wEuAQABiwH/ + AS4BAAGLAf8BSAEzAXkB6wFVAU8BYwHIAVUBUAFfAcMBUgFDAWkB2QEvAQgBgAH8AS4BAAGLAf8BLgEA + AYsB/wFUAUkBaQHVAw4BExQAAwoBDgNCAXYCRgFHAYADHAEnJAADSgGNAS4BAAGLAf8BLgEAAYsB/wEu + AQABiwH/AS4BAAGLAf8BNgEIAYsB/QFUAVEBXAG4Aw0BESwAAVMBSQFlAdABLgEAAYsB/wEuAQABiwH/ + AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wMqAUAUAAMJAQwBUwFRAVkBtgEu + AQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGL + Af8BSAEyAXYB6QMwAUxMAAMIAQsDKQE/AjUBNgFYAjUBNgFYAjUBNgFYATEBMAExAU0DBwEJMAABUwFJ + AWUB0AEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/ + AyoBQBgAAwkBDANIAYUBMgEQAX8B+gEuAQABiwH/AS4BAAGLAf8BLgEAAYsB/wEuAQABiwH/AS4BAAGL + Af8BUgFMAWQBzAMdASngAAMfASwDQAFxAksBTQGPAksBTQGPA0oBjQMuAUf/AP8AWgADBwEJAxIBGAMS + ARgDEgEYAxIBGAMSARgDEgEYAxIBGAMSARgDEgEYAxIBGAMSARgDEgEYAxIBGAMAAQEQAAMNAREBVAFQ + AV8BvgEyAQwBhwH7AS4BCAF/AfwBLgEIAX8B/AEuAQgBfwH8AS4BCAF/AfwBLgEIAX8B/AEyARABgAH6 + AksBTAGOAwQBBQgAAkgBSQGHAToBFwGAAfgBOgEXAYAB+AFDASYBfwHxAx0BKRQAAU4BPAFxAeEBOgEX + AYAB+AE6ARcBgAH4AUMBJgF/AfEIAAM6AWIBVAFSAVYBrwFUAVIBVgGvAVQBUgFWAa8BVAFSAVYBrwFU + AVIBVgGvAVQBUgFWAa8BVAFSAVYBrwFUAVIBVgGvAVQBUgFWAa8BVAFSAVYBrwFUAVIBVgGvAVQBUgFW + Aa8BVAFSAVYBrwMSARkEAAMdASkBSwE5AXcB6wFLATkBdwHrAUsBOQF3AesBSwE5AXcB6wFLATkBdwHr + AUsBOQF3AesBSwE5AXcB6wFLATkBdwHrAUsBOQF3AesBSwE5AXcB6wFLATkBdwHrAUsBOQF3AesBVQFT + AVYBsgMCAQMQAAMhATABPQEgAYAB8wFMAUsBTQGRAj8BQAFuAj8BQAFuAj8BQAFuAj8BQAFuAz8BbQFQ + AU8BVQGoAVIBRgFpAdYDDAEQCAABSgFJAUoBiwEuAQABiwH/AS4BAAGLAf8BOgEXAX8B+AMdASoUAAFK + ATcBdgHnAS4BAAGLAf8BLgEAAYsB/wE6ARcBgAH4CAACSwFMAY8BSgE2AXYB7AMqAUABLQEAAYsB/wEt + AQABiwH/AS0BAAGLAf8BLQEAAYsB/wEtAQABiwH/AS0BAAGLAf8BLQEAAYsB/wEtAQABiwH/AS0BAAGL + Af8BLQEAAYsB/wEtAQABiwH/AxoBJAgAA0oBjAEyAQQBggH+AS0BAAGLAf8BLQEAAYsB/wEtAQABiwH/ + AS0BAAGLAf8BVAFLAWgB2wEtAQABiwH/AS0BAAGLAf8BLQEAAYsB/wEtAQABiwH/AUMBLAF3AfADGgEl + FAADIQEwAT0BIAGAAfMDKQE+FAADOgFhAVIBRgFpAdYDDAEQCAACSgFLAYwBLgEAAYsB/wEuAQABiwH/ + ATIBDAGIAfsDPgFrAwQBBQsAAQEDIwEzAT4BHgF9AfQBLgEAAYsB/wEuAQABiwH/ATkBFAGHAfkIAAJL + AUwBjwE3ARsBewH2AlABUgGkAS0BAAGLAf8BLQEAAYsB/wEtAQABiwH/AS0BAAGLAf8BLQEAAYsB/wEt + AQABiwH/AS0BAAGLAf8BLQEAAYsB/wEtAQABiwH/AS0BAAGLAf8BLQEAAYsB/wMaASQIAAMQARUBUgFI + AWgB3gEtAQABiwH/AS0BAAGLAf8BLQEAAYsB/wEtAQABiwH/Ay8BSQEtAQABiwH/AS0BAAGLAf8BLQEA + AYsB/wEtAQABiwH/Ak8BUwGlAwIBAwwAAxoBJQMgAS8DIQEwAT0BIAGAAfMDKgFBFAADOwFlAVIBRgFp + AdYDDAEQCAACRQFGAX8BSgE3AXYB5wFKATcBdgHnAUABJAF9AfIBNgEYAX0B9gNAAXEDAQECBAADGQEj + AVABRgFpAdcBLgEIAX8B/AFIATIBdgHpAUoBNwF2AecBTQE7AW8B4ggAAx8BLQMyAVADMgFQAzIBUAMy + AVADMgFQAzIBUAMyAVADMgFQAzIBUAMyAVADMgFQAzIBUAMyAVADCAELDAADQAFxAS0BAAGLAf8BLQEA + AYsB/wEtAQABiwH/AS0BAAGLAf8BLQEAAYsB/wEtAQABiwH/AS0BAAGLAf8BLQEAAYsB/wFIATMBdQHt + AxQBHBAAAksBTQGPAVMBUQFYAa0DIAEvAT0BIAGAAfMDKgFBFAADOwFlAVIBRgFpAdYDDAEQFAADHwEs + AVQBSQFpAdUBQQElAXoB8AMyAVADHgErAVQBRAFtAdoBQQElAXoB8AM/AW0DAwEEEAADOwFlAVQBUgFY + AbQBVAFSAVgBtAFUAVIBWAG0AVQBUgFYAbQBVAFSAVgBtAFUAVIBWAG0AVQBUgFYAbQBVAFSAVgBtAFU + AVIBWAG0AVQBUgFYAbQBVAFSAVgBtAFUAVIBWAG0AVQBUgFYAbQDEgEZDAADAgEDAVYBTgFiAdMBLQEA + AYsB/wEtAQABiwH/AS0BAAGLAf8DMAFMAS0BAAGLAf8BLQEAAYsB/wEtAQABiwH/AjkBOgFgFAADSgGN + AVMBUAFYAawDIAEvAT0BIAGAAfMDKgFBFAADOwFlAVIBRgFpAdYDDAEQGAADFAEcAVIBQwFpAdkBMgEQ + AX8B+gFNATwBbwHiATIBDAGHAfsDOAFeAwABARQAAksBTAGPAUgBMwF1Ae0DMQFPAS0BAAGLAf8BLQEA + AYsB/wEtAQABiwH/AS0BAAGLAf8BLQEAAYsB/wEtAQABiwH/AS0BAAGLAf8BLQEAAYsB/wEtAQABiwH/ + AS0BAAGLAf8BLQEAAYsB/wMaASQQAAMpAT4BQAEfAX8B9QEtAQABiwH/AS0BAAGLAf8DKgFAAS0BAAGL + Af8BLQEAAYsB/wFVAUsBZwHYAw8BFBQAA0oBjQFTAVABWAGsAyABLwE9ASABgAHzAyoBQRQAAzsBZQFS + AUYBaQHWAwwBEBwAAyABLwFLAToBcAHkATYBGAF9AfYDOwFlAwQBBRgAA0oBjQFDASwBdwHwA0oBjQEy + AQ4BhgH7ATIBDgGGAfsBMgEOAYYB+wEyAQ4BhgH7ATIBDgGGAfsBMgEOAYYB+wEyAQ4BhgH7ATIBDgGG + AfsBMgEOAYYB+wEyAQ4BhgH7ATIBDgGGAfsDGQEjEAADAwEEAVcBVAFbAb8BLQEAAYsB/wEtAQABiwH/ + A0QBeQEtAQABiwH/ATcBCQGLAf0DLwFJGAADSgGNAVMBUAFYAawDIAEvAT0BIAGAAfMDKgFBFAADOwFl + AVIBRgFpAdYDDAEQIAABUwFQAVsBugFOATwBcAHjIAADHQEpAy4BSAMuAUgDLgFIAy4BSAMuAUgDLgFI + Ay4BSAMuAUgDLgFIAy4BSAMuAUgDLgFIAy4BSAMHAQoUAAMVAR0BSAEzAXUB7QEtAQABiwH/AS0BAAGL + Af8BLQEAAYsB/wFSAVEBVAGqHAADSgGNAVMBUAFYAawDIAEvAT0BIAGAAfMDKgFBFAADOwFlAVIBRgFp + AdYDDAEQIAABUwFQAVsBugFOATwBcAHjIAACNAE1AVUCTgFPAZcDSgGNA04BmANOAZgDTgGYA04BmANO + AZgDTgGYA04BmANOAZgDTgGYA04BmANOAZgDEAEVGAADRAF7ATIBBAGBAf4BLQEAAYsB/wE3ARsBewH2 + AyYBOBwAA0oBjQFTAVABWAGsAyEBMAE9ASABgAHzAzkBXwMeASsDHgErAx4BKwMeASsDHgErA0UBfQFS + AUYBaQHWAwwBEBwAAjQBNQFVAUEBJQF6AfABMgEQAYAB+gFPAU4BUQGaAwoBDhgAAksBTAGPAUoBNgF2 + AewDKgFAAS0BAAGLAf8BLQEAAYsB/wEtAQABiwH/AS0BAAGLAf8BLQEAAYsB/wEtAQABiwH/AS0BAAGL + Af8BLQEAAYsB/wEtAQABiwH/AS0BAAGLAf8BLQEAAYsB/wMaASQYAAMTARoBSwE6AXIB6QEtAQABiwH/ + AkwBTQGTAwIBAxwAA0oBjQFTAVABWAGsAxQBHAFUAUkBaQHVAT0BIAGAAfMBQAEkAX0B8gFAASQBfQHy + AUABJAF9AfIBQAEkAX0B8gFAASQBfQHyAT4BHgF9AfQBUgFQAVoBtAMHAQkYAAMQARUBVAFEAW0B2gEu + AQABiwH/AS4BAAGLAf8BLwEIAX8B/AM3AVoYAAJLAUwBjwE/ASUBfgHzA0gBhgEtAQABiwH/AS0BAAGL + Af8BLQEAAYsB/wEtAQABiwH/AS0BAAGLAf8BLQEAAYsB/wEtAQABiwH/AS0BAAGLAf8BLQEAAYsB/wEt + AQABiwH/AS0BAAGLAf8DGgEkHAADNQFXAVMBTAFmAdcDBwEKIAADSgGNAVMBTwFYAa8DDQERAxgBIQMo + ATwDJwE6AycBOgMnAToDJgE5AyMBNAMkATYDCgEOHAADGAEiAUMBJgF+AfEBLgEAAYsB/wEuAQABiwH/ + ATYBCAGLAf0DQAFxGAADDQESAxcBIAMXASADFwEgAxcBIAMXASADFwEgAxcBIAMXASADFwEgAxcBIAMX + ASADFwEgAxcBIAMEAQUcAAMBAQIDHQEpJAABSgFJAUoBiwFBASUBeQHwAVUBTQFmAc4BVQFMAWgBzwFV + AU0BZgHOAVUBTQFmAc4BVQFNAWYBzgFVAU0BZgHOAVQBUAFbAbkDCQEMJAADAwEEAVMBUQFYAa0BLgEA + AYsB/wEuAQABiwH/ATgBGQGGAfcBIgEhASIBMZwAAxQBGwJGAUcBgQJLAU0BjwJLAU0BjwJLAU0BjwJL + AU0BjwJLAU0BjwJLAU0BjwJGAUcBgQMGAQgoAAMSARgDRAF5A0gBhAMkATYDAQEC/wD/ABoAAkgBSQGH + AT0BHwF8AfgBPQEfAXwB+AFJATcBdQHxAx0BKRQAAVYBTgFnAeEBPQEfAXwB+AE9AR8BfAH4AUkBNwF1 + AfEUAAMNARECVgFaAb4BMgESAYQB+wErAQsBfAH8ASsBCwF8AfwBKwELAXwB/AErAQsBfAH8ASsBCwF8 + AfwBMgEZAXwB+gNLAY4DBAEFCAADHAEoAVoBVAFjAdoBPQEfAXwB+AE9AR8BfAH4AT0BHwF8AfgBPQEf + AXwB+AE9AR8BfAH4AT0BHwF8AfgBPQEfAXwB+AE9AR8BfAH4AT0BHwF8AfgBPQEfAXwB+AFLAToBbgHu + AzYBWRgAAxoBJAI1ATYBWAI1ATYBWAI1ATYBWAI1ATYBWAMoAT0YAANKAYsBKwEAAYsB/wErAQABiwH/ + AT0BHwF8AfgDHQEqFAABUwFJAWwB5wErAQABiwH/ASsBAAGLAf8BPQEfAXwB+BQAAyEBMAFEAS0BdwHz + AkwBTQGRAj8BQAFuAj8BQAFuAj8BQAFuAj8BQAFuAz8BbQJSAVMBqAFYAVYBYAHWAwwBEAgAAkgBSQGH + ASsBAAGLAf8BKwEAAYsB/wErAQABiwH/ASsBAAGLAf8BKwEAAYsB/wErAQABiwH/ASsBAAGLAf8BKwEA + AYsB/wErAQABiwH/ASsBAAGLAf8BKwEAAYsB/wErAQABiwH/AUkBNwF0AfEYAAI8AT0BaAEsAQABiwH/ + ASwBAAGLAf8BLAEAAYsB/wEsAQABiwH/AlMBVQGwGAADSgGMASsBAAGLAf8BKwEAAYsB/wEyARIBhQH7 + Az4BawMEAQULAAEBAyMBMwFBASsBdwH0ASsBAAGLAf8BKwEAAYsB/wE/ARwBhAH5FAADIQEwAUQBLQF3 + AfMDKQE+FAADOgFhAVgBVgFgAdYDDAEQCAADSgGLASsBAAGLAf8BKwEAAYsB/wErAQABiwH/ASsBAAGL + Af8BSAE0AXcB8gJQAVIBpANMAZMBVgFPAWMB3wErAQABiwH/ASsBAAGLAf8BKwEAAYsB/wErAQABiwH/ + AT0BHwF8AfgMAAMMARADDAEQAwwBEAMMARADKAE9ATwBHQF9AfgBLAEAAYsB/wJGAUcBgQMMARADDAEQ + AwwBEAMMARADAQECCAACRQFGAX8BUwFJAWwB5wFTAUkBbAHnAUgBNAF3AfIBOQEiAXcB9gNAAXEDAQEC + BAADGQEjAVkBUwFhAdcBKwELAXwB/AFRAUUBbAHpAVMBSQFsAecBVgFNAWUB4gwAAxoBJQMgAS8DIQEw + AUQBLQF3AfMDKgFBFAADOwFlAVgBVgFgAdYDDAEQCAADSgGLASsBAAGLAf8BKwEAAYsB/wErAQABiwH/ + ASsBAAGLAf8DQAFwAwQBBgMDAQQDFgEfAVUBUgFkAd4BKwEAAYsB/wErAQABiwH/ASsBAAGLAf8BPQEf + AXwB+AgAAzkBXwFWAVABZAHbAVYBUAFkAdsBVgFQAWQB2wFWAVABZAHbAVMBSAFoAeIBMgEEAX8B/gEs + AQABiwH/AU0BPAFyAewBVgFQAWQB2wFWAVABZAHbAVYBUAFkAdsBVgFQAWQB2wFUAVMBVAGvFAADHwEs + AVoBVgFiAdUBSAE0AXAB8AMyAVADHgErAVoBVAFjAdoBSAE0AXAB8AM/AW0DAwEEFAACSwFMAY8CUwFV + Aa0DIAEvAUQBLQF3AfMDKgFBFAADOwFlAVgBVgFgAdYDDAEQCAADSgGLATIBGQF8AfoCVQFWAbQDUgGp + AlEBUgGhAxYBHggAAwIBAwNCAXYDUwGqAk8BUwGlAVYBTQFmAeIBPQEfAXwB+AgAAksBTAGPAUkBNgFy + Ae4DQwF4A0MBeANDAXgDQwF4A0MBeANDAXgDQwF4A0MBeANDAXgDQwF4AlABUgGjASwBAAGLAf8YAAMU + ARwBVwFSAWAB2QEyARkBfAH6AVYBTQFlAeIBMgESAYQB+wM4AV4DAAEBGAADSgGNAlMBVAGsAyABLwFE + AS0BdwHzAyoBQRQAAzsBZQFYAVYBYAHWAwwBEAgAA0oBiwFKATgBcAHvAx4BKwMDAQQDAwEEAwABAQwA + AwIEAwEEAwMBBANSAakBPQEfAXwB+AgAAksBTAGPAVQBSgFmAd8oAAMyAVABLAEAAYsB/xwAAyABLwFT + AUsBZwHkATkBIgF3AfYDOwFlAwQBBRwAA0oBjQJTAVQBrAMgAS8BRAEtAXcB8wMqAUEUAAM7AWUBWAFW + AWAB1gMMARAIAANKAYsBSAE0AXAB8AMdASokAAJUAVYBqwE9AR8BfAH4CAACSwFMAY8BVAFKAWYB3ygA + AzIBUAEsAQABiwH/IAACVQFXAboBVgFOAWYB4yQAA0oBjQJTAVQBrAMgAS8BRAEtAXcB8wMqAUEUAAM7 + AWUBWAFWAWAB1gMMARAIAANKAYsBSAE0AXAB8AMdASokAAJUAVYBqwE9AR8BfAH4CAACSwFMAY8BVAFK + AWYB3ygAAzIBUAEsAQABiwH/IAACVQFXAboBVgFOAWYB4yQAA0oBjQJTAVQBrAMgAS8BRAEtAXcB8wMq + AUEUAAM7AWUBWAFWAWAB1gMMARAIAANKAYsBSAE0AXAB8AMdASokAAJUAVYBqwE9AR8BfAH4CAACSwFM + AY8BVAFKAWYB3ygAAzIBUAEsAQABiwH/HAACNAE1AVUBSAE0AXAB8AEyARkBfAH6A1ABmgMKAQ4cAANK + AY0CUwFUAawDIQEwAUQBLQF3AfMDOQFfAx4BKwMeASsDHgErAx4BKwMeASsDRQF9AVgBVgFgAdYDDAEQ + CAADSgGLAUgBNAFwAfADHQEqJAACVAFWAasBPQEfAXwB+AgAAksBTAGPAVQBSgFmAd8oAAMyAVABLAEA + AYsB/xgAAxABFQFaAVQBYwHaASsBAAGLAf8BKwEAAYsB/wEsAQsBfAH8AzcBWhwAA0oBjQJTAVQBrAMU + ARwBWgFWAWIB1QFEAS0BdwHzAUgBNAF3AfIBSAE0AXcB8gFIATQBdwHyAUgBNAF3AfIBSAE0AXcB8gFB + ASsBdwH0AlUBVgG0AwcBCQgAA0oBiwFIATQBcAHwAx0BKiQAAlQBVgGrAT0BHwF8AfgIAAJLAUwBjwFU + AUoBZgHfKAADMgFQASwBAAGLAf8YAAMYASIBSQE3AXQB8QErAQABiwH/ASsBAAGLAf8BOQELAYsB/QNA + AXEcAANKAY0DVAGvAw0BEQMYASEDKAE8AycBOgMnAToDJwE6AyYBOQMjATQDJAE2AwoBDgwAA0oBjAFJ + ATcBdQHxAy8BSgMdASoDHQEqAx0BKgMdASoDHQEqAx0BKgMdASoDHQEqAx0BKgJVAVYBtAEyARkBfAH6 + CAACSwFMAY8BTwFAAW4B6QMyAVADMgFQAzIBUAMyAVADMgFQAzIBUAMyAVADMgFQAzIBUAMyAVACSAFJ + AYcBLAEAAYsB/xgAAwMBBAJTAVUBrQErAQABiwH/ASsBAAGLAf8BOwEiAYMB9wEiASEBIgExHAADSgGL + AUgBNAFuAfABWgFYAV4BzgFZAVgBYAHPAVoBWAFeAc4BWgFYAV4BzgFaAVgBXgHOAVoBWAFeAc4BVgFV + AVgBuQMJAQwUAANEAXkBMgEEAX8B/gFIATQBdwHyAUgBNAFwAfABSAE0AXAB8AFIATQBcAHwAUgBNAFw + AfABSAE0AXAB8AFIATQBcAHwAUgBNAFwAfABSAE0AXAB8AFIATQBcAHwATIBGQF8AfoBVwFRAWMB3AgA + AzoBYQEsAQABiwH/ASwBAAGLAf8BLAEAAYsB/wEsAQABiwH/ASwBAAGLAf8BLAEAAYsB/wEsAQABiwH/ + ASwBAAGLAf8BLAEAAYsB/wEsAQABiwH/ASwBAAGLAf8BLAEAAYsB/wFVAVQBVwG2HAADEgEYA0QBeQNI + AYQDJAE2AwEBAhwAAxQBGwJGAUcBgQJLAUwBjwJLAUwBjwJLAUwBjwJLAUwBjwJLAUwBjwJLAUwBjwJG + AUcBgQMGAQgUAAMMARADQwF4A0oBiwNKAYsDSgGLA0oBiwNKAYsDSgGLA0oBiwNKAYsDSgGLA0oBiwNI + AYQDHAEoDAADDwEUAxoBJAMaASQDGgEkAxoBJAMaASQDGgEkAxoBJAMaASQDGgEkAxoBJAMYASEDAgED + /wAFAANRAZ8DUQGfA1EBnwNRAZ8DUQGfA1EBnwNRAZ8BUAFRAVABnwNRAZ8DUQGfA1EBnwNRAZ8DUQGf + A1EBnwNRAZ8DOwFjCAAD4gH/A8sB/wPJAf8DyQH/A8kB/wPJAf8DyQH/A8kB/wPJAf8DyQH/A8kB/wPJ + Af8DzAH/A+IB/4AAEP8B+gH9AfoB/wHdAe8B3QH/AQABtQEBAf8BAAGsAQAB/wGGAcUBhwH/AdIB6QHT + Ff8DUQGfCAADywH/A/kB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D+QH/ + A8wB/wQAAwQBBgMJAQwDAgEDBAADBAEGAwkBDAMCAQMDAAEBAwIBAwMEAQYDBAEGAwUBBwMJAQwDBAEG + FAADDQESAzkBXwFZAVgBXgHMAT0BHwF8AfgBPQEfAXwB+AFTAUkBbAHnAkgBSQGIAxkBIwMCAQMMABD/ + Af4B/wH+Af8B5QHyAeUB/wEIAbgBCQH/AQQBtwEGAf8BsQHaAbIB/wHiAfEB4xX/A1EBnwgAA8kB/wP8 + Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wPJAf8DBAEGAy0BRgM7 + AWQDHAEoAwUBBwMpAT8DOwFkAxwBKAMSARgDNwFaA0cBgQNKAYsDRQF8Ay8BSgMFAQcQAAMnAToBWAFX + AV8B0QErAQsBfAH8AVYBVQFYAbwBWQFYAWABzwErAQABiwH/ASsBAAGLAf8BKwEAAYsB/wFTAUoBagHm + A0ABcQMAAQEIABD/AfUB+gH1Af8B1AHqAdUB/wEAAbUBAQH/AQABqgEAAf8BDAG7AQ0B/wG8AeABvQH/ + AecB9AHnAf8B3gHwAd8B/wHZAe0B2gH/AdsB7gHbAf8B9QH6AfUB/wNRAZ8IAAPJAf8D/AH/A/wB/wP8 + Af8D/AH/A/wB/wP7Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wP8Af8DyQH/AxsBJgNaAc0DVAHuA04BmQMh + ATADVwHCA10B7QNRAZwDQgF0A14B5QIzATEB+gExATIBMAH6A1EB9wNZAc8DNAFUAwABAQgAAxoBJQFV + AVIBZAHeAVcBUgFkAd0DMQFOAxIBGQJQAVIBowErAQABiwH/ASsBAAGLAf8BKwEAAYsB/wErAQABiwH/ + ATIBBAF/Af4DQAFwAwIBAwQAAfEB+AHxAf8B7gH3Ae4B/wHsAfYB7QH/Ae4B9wHuAf8B2AHsAdkB/wGw + AdoBsgH/AQABsAEAAf8BAAGcAQAB/wEAAZgBAAH/AYYBxgGHAf8BuQHeAboB/wGqAdcBqwH/AaEB0wGi + Af8BpQHUAaUB/wHZAe0B2QH/A1EBnwQAAfUC7wH/AbcCmwH/AbcBhQGEAf8BnQEXARUB/wGaARIBEAH/ + AZoBEgEQAf8BmgESARAB/wGdARcBFQH/AbcBhQGDAf8B1QG5AbgB/wHyAewB6wH/A/oB/wP6Af8D/AH/ + A8kB/wMyAVADQAH9AYkChwH/A1kB1wM6AWIDTQH6AZ8BnQGeAf8DWAHdA1sB2QG1AbMBtAH/AeMC4gH/ + AesC6gH/A70B/wEUARMBFAH/A1oB1QMmATgEAAMGAQgCVgFYAbsBUQFFAWwB6QMhATADAAEBA1EBogEy + ARIBhAH7ASsBAAGLAf8BKwEAAYsB/wExARkBfAH6AVMBSgFqAeYBWgFYAV4BzgFTAUoBagHmAxgBIgQA + AawB1wGtAf8BmAHOAZkB/wGPAcoBkQH/AZYBzQGXAf8BGQHBARsB/wEAAbQBAAH/AQABsQEAAf8BAAGo + AQAB/wEAAZsBAAH/AQABpgEAAf8BAAGrAQAB/wEAAakBAAH/AQABqAEAAf8BAAGsAQAB/wGDAcQBhAH/ + A1EBnwH1Au4B/wG5AYgBhwH/AeYB1AHTAf8BmgESARAB/wGaARIBEAH/AZoBEgEQAf8BmgESARAB/wGa + ARIBEAH/AeYB1AHTAf8BmgESARAB/wGaARIBEAH/AbgBhwGFAf8B7wLoAf8D+AH/A/wB/wPJAf8DNQFW + AZUBkQGSAf8BrQGqAasB/wNYAd0DPgFqA6gB/QHQAs4B/wNfAeADXQHtAfgC9gH/A1wB+ANZAfUD+gH/ + A/cB/wNNAfoDQwF4BAABLAErASwBQwEyARIBhAH7Aj0BPgFqBAADBwEJAVkBWAFcAckBKwEAAYsB/wEr + AQABiwH/ATIBGQF8AfoDPAFmAxsBJgMcASgBUQFFAWwB6QJIAUkBiAQAAQQBtwEFAf8BAAGvAQAB/wEA + AawBAAH/AQABrgEAAf8BAAGnAQAB/wEAAaABAAH/AQABpwEAAf8BAAGkAQAB/wEAAZoBAAH/AQABmAEA + Af8BAAGXAQAB/wEAAZcBAAH/AQABlwEAAf8BAAGbAQAB/wEAAawBAAH/A1EBnwHAAZQBkwH/AZoBEgEQ + Af8B+QL0Af8B5gHUAdMB/wHMAakBqAH/AdMCswH/AZoBEgEQAf8B0wKzAf8B+QL0Af8B5gHUAdMB/wHM + AakBqAH/AZoBEgEQAf8BvgGSAZEB/wP4Af8D/AH/A8kB/wM0AVQBjAGJAYoB/wGjAZ8BoAH/A1oB2wM+ + AWoBogKgAf0BxQHCAcMB/wNaAd4DUgGnA0wBkwMhATADRQF8A00B+gT/A4cB/QNHAYEEAAJGAUcBgQFK + ATgBcAHvAx0BKQMFAQcDUAGeATkBCwGLAf0BKwEAAYsB/wErAQABiwH/AUABHAGEAfkDJwE6BwABAQJS + AVMBqAFSAUUBagHoBQABlwEAAf8BAAGXAQAB/wEAAZcBAAH/AQABlwEAAf8BAAGXAQAB/wEAAZcBAAH/ + AQABlwEAAf8BAAGXAQAB/wEAAZcBAAH/AQABlwEAAf8BAAGXAQAB/wEAAZcBAAH/AQABlwEAAf8BAAGY + AQAB/wEAAZ8BAAH/AVABUQFQAZ8BmgETAREB/wGaARIBEAH/AeYB1AHTAf8BmgESARAB/wHfAckByAH/ + AeoC3AH/AZoBEgEQAf8B5gHUAdMB/wHmAdQB0wH/AZoBEgEQAf8B3wHJAcgB/wGtATIBMQH/AZoBEwER + Af8D9gH/A/wB/wPJAf8DNAFUAYkChgH/AZ4BmgGbAf8DWgHbAz0BZwGfAp0B/QG+AbsBvAH/A18B4AMS + ARkDFAEcA1IBpwNMAfMDxwX/A1kB9QMsAUQEAANLAY4BUAFDAWsB6gMXASACSwFMAZABVwFSAWAB2QJX + AVkBvwFYAVcBWgHAAlYBWAHBA1QBrgMVAR0IAAJLAUwBkAE5AQsBiwH9BQABswEAAf8BAAGiAQAB/wEA AZcBAAH/AQABlwEAAf8BAAGXAQAB/wEAAZcBAAH/AQABlwEAAf8BAAGXAQAB/wEAAZcBAAH/AQABlwEA - Af8BAAGXAQAB/wEAAZcBAAH/AQABlwEAAf8BAAGeAQAB/wEbAcEBHAH/A1EBnwHTArMB/wGaARMBEQH/ - Ad8ByQHIAf8B5gHUAdMB/wHTArMB/wHyAukB/wHmAdQB0wH/AdMCswH/Ad8ByQHIAf8B5gHUAdMB/wHT - ArMB/wGaARMBEQH/AcoCqgH/A+0B/wP8Af8DyQH/AzQBVAGFAoEB/wGWAZEBkgH/A1oB2wM7AWUBmQGW - AZcB/QG0AbEBsgH/A1oB3gNWAbEBpgKlAf8B6wLpAf8B4QHfAeAB/wNiAekDOgFiDAADQQFyATgBCgGL - Af0BMgEEAYAB/gEsAQABiwH/AVcBTAFpAeABVgFVAVoBwQMmATkQAAMFAQcCVgFbAb4BWAFWAV8BzAQA - AYMBwwGEAf8BAAGoAQAB/wEAAZcBAAH/AQABlwEAAf8BAAGXAQAB/wEAAZcBAAH/AQABlwEAAf8BAAGX - AQAB/wEAAZcBAAH/AQABlwEAAf8BAAGXAQAB/wEAAZcBAAH/AQABlwEAAf8BAAGhAQAB/wGrAdcBqwH/ - A1EBnwH8AvoB/wHRAbABrwH/AZoBEwERAf8BmgETAREB/wGaARMBEQH/AeYB1AHTAf8BmgETAREB/wGa - ARMBEQH/AZoBEwERAf8BmgETAREB/wGaARMBEQH/AccBpwGmAf8B6ALmAf8D5gH/A/wB/wPJAf8DNAFU - AYMBSgFLAf8BkgGNAY4B/wNaAdsDOwFlAZYBkgGTAf0BrQGpAaoB/wNaAd4DZAHnAdwB2QHaAf8BtAKz - Af8DWgHbAysBQgMnAToDIgEyAwUBBwQAAx0BKQE4AR4BeQH2ASwBAAGLAf8BLAEAAYsB/wEsAQABiwH/ - ASwBAAGLAf8DRQF9AwoBDQMGAQgHAAEBAzEBTgE8AR0BfQH4AzgBXgQAAcEB4QHCAf8BDQG7AQ4B/wEA - AaABAAH/AQABmQEAAf8BAAGXAQAB/wEAAZcBAAH/AQABlwEAAf8BAAGXAQAB/wEAAZcBAAH/AQABlwEA - Af8BAAGXAQAB/wEAAZcBAAH/AQABmgEAAf8BAAGoAQAB/wHCAeIBwgH/A1EBnwQAA/0B/wHGAsEB/wHN - AasBqgH/AaoBLgEtAf8BrQEzATIB/wGaARMBEQH/AZoBEwERAf8BqQEuASwB/wHIAaYBpQH/AeYC4QH/ - A/sB/wP8Af8D/AH/A/wB/wPJAf8DNAFUAYEBSAFJAf8BjgGJAYoB/wNaAdsDOwFlAZECjgH9AacBpAGl - Af8DWAHdA2IB6QHVAtMB/wGAAUsBgAH/A1QB7gNYAd0DVQHqA1YBtgMUARwEAAMCAQMCRgFHAYABMgEE - AX8B/gEsAQABiwH/ASwBAAGLAf8BLAEAAYsB/wFRAUYBbAHmAVgBVAFgAdEBVgFUAVgBuQMRARcDIAEv - AVQBTgFmAd4BWQFWAWEBzwMNARIEAAT/AZ8B0QGgAf8BAAGtAQAB/wEAAZsBAAH/AQABlwEAAf8BAAGX - AQAB/wEAAZcBAAH/AQABlwEAAf8BAAGXAQAB/wEAAZcBAAH/AQABlwEAAf8BAAGXAQAB/wEAAaABAAH/ - AQABsgEAAf8B0gHpAdIB/wNRAZ8IAAPJAf8D/AH/A/cB/wP5Af8D9wH/A/cB/wPzAf8D8AH/A+oB/wP8 - Af8D9gH/A/QB/wPFAf8D3wH/Ay8BSgFJAUQBRQH/AYsBhQGGAf8DWwHQAzUBVgGOAosB/QGjAZ4BnwH/ - A1kBzwNRAZ8BzwLMAf8BwQK+Af8BkAKPAf8BmAKWAf8B0QLPAf8DWwHZAxQBHAgAAwgBCwJTAVQBrAEy - AQQBgAH+ASwBAAGLAf8BLAEAAYsB/wEsAQABiwH/ASwBAAGLAf8BMgEQAYYB+wJRAVIBoQFRAUYBbgHm - AVQBSgFmAd8DJwE6CAAE/wHFAeMBxgH/AYMBwwGEAf8BAAGfAQAB/wEAAZcBAAH/AQABlwEAAf8BAAGX - AQAB/wEAAZcBAAH/AQABlwEAAf8BAAGXAQAB/wEAAZcBAAH/AQABlwEAAf8BAAGsAQAB/wGMAcgBjQH/ - Ad4B8AHfAf8DUQGfCAADyQH/A/sB/wP0Af8D9QH/A/UB/wP1Af8D8QH/A+8B/wPpAf8D/AH/A+cB/wPD - Af8D3wH/A/0B/wMaASQDbQH3AaQCoQH/A0oBiwMYASIDXwHzAbICrwH/A0sBjgMEAQYDUwSoAf0B1QHS - AdMB/wHdAtsB/wOoAf0DSgGNAwIBAwwAAwgBCwJGAUcBgQE4AR4BeQH2ASwBAAGLAf8BLAEAAYsB/wEs - AQABiwH/ASwBAAGLAf8BMgEEAYAB/gFVAVQBWAG8AxoBJQwABP8B4QHwAeEB/wGvAdgBrwH/AQABsgEA - Af8BAAGkAQAB/wEAAZ0BAAH/AQABnAEAAf8BAAGcAQAB/wEAAZ4BAAH/AQABngEAAf8BAAGlAQAB/wEC - AbUBAwH/AZMBzAGUAf8BwgHiAcMB/wHuAfcB7gH/A1EBnwgAA8wB/wP4Af8D+wH/A/wB/wP8Af8D/AH/ - A/wB/wP8Af8D/AH/A/gB/wPCAf8D3wH/A/0B/wcAAQEDIAEuAycBOgMKAQ4EAAMdASoDJwE6AwsBDwgA - AyEBMAM9AWcDPgFqAykBPwMEAQYUAAMCAQMDHAEoA0EBcgNKAYoDSgGLA0gBhAMsAUQDBgEIEAAE/wH2 - AfsB9gH/AdkB7QHZAf8BnAHQAZ0B/wELAboBDAH/AQABqAEAAf8BAAGkAQAB/wEAAaUBAAH/AQABqQEA - Af8BAAGpAQAB/wEOAbsBEAH/AdAB6AHQAf8B8QH4AfEJ/wNRAZ8IAAPjAf8DzAH/A8kB/wPJAf8DyQH/ - A8kB/wPJAf8DyQH/A8kB/wPJAf8D3wH/A/0B/4gAA2IB7wNYAe8DWAHvA1gB7wNYAe8DWAHvA1gB7wNi - Ae8DYgHvA2IB7wNiAe8DYgHvA2IB7wNiAe8DYgHvA18B4AwAA1kBwgNiAe8BYgFYAWIB7wNYAe8BWAFi - AVgB7wNYAe8DWAHvAlgBYgHvA1gB7wJiAVgB7wJYAWIB7wJYAWAB7wNfAeACUQFQAZ8CUQFQAZ8CUQFQ - AZ8CUQFQAZ8CUQFQAZ8CUQFQAZ8CUQFQAZ8CUQFQAZ8CUQFQAZ8CUQFQAZ8DQwF3Aw8BFCAAAzIEUAGf - A1ABnwNQAZ8DUAGfA1ABnwNDAXcDDwEUEAADkAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A48d/wNi - Ae8MAANcAc8DqQH/Ab8BuwG/Af8BuwG9AbsB/wG9Ab8BvQH/A7wB/wO8Af8CvQG/Af8CuwG9Af8CvwG7 - Af8CvgG/Af8BrgGpAbMB/wFiAVgBYAHvAcQBCgEAAf8CXQFZAdcCWQFXAb8CWQFXAb8CWQFXAb8CWQFX - Ab8CWQFXAb8CWQFXAb8CWQFXAb8CZAFcAecCWQFXAb8DFwEgGAADDAEQAyYBOANRAaADAAH/AwAB/wMA - Af8DAAH/AwAB/wJZAVwBzwM2AVgDFwEgDAADgAH/A+EB/wO7Af8DtAH/A7QB/wOQAf8DAAH/A48d/wNi - Ae8MAANcAc8D0gH/A/UB/wH1AdsB9QH/Ad4B5AHeAf8BzALhAf8C3gH1Af8B5gH1AeYB/wHMAegB2QH/ - AcwB1wHrAf8BzAHtAcwB/wG/Ab4BvwH/AWIBWAFiAe8BxAEKAQAB/wNCAXQDFwEgAxcBIAMXASADFwEg - AxcBIAMXASADFwEgAlYBVAGrAlkBVwG/AxcBIBgAAyYBOANZAcMCWAFiAe8BmgEAAd8B/wGaAQAB3wH/ - AZoBAAHfAf8BmgEAAd8B/wGaAQAB3wH/AW0BUQFtAfcDWAHjA0ABcAwAA4AB/wP3Af8DngH/AwAB/wOc - Af8DlAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A2IB7wwAA1wBzwPZBv8B9wL/ - AfgB+gH4Af8B8gHmAfkB/wHnAeIB7wH/AeIB8QHiAf8B5gHhAeoB/wHMAewB3wH/AcwB1gHrAf8DvwH/ - A2IB7wHEAQoBAAH/AzoBYBwAAlEBUAGfAlkBVwG/AxcBIBQAAzIBUANRAaACWAFiAe8BhAEAAcAB/wGw - AQAC/wGwAQAC/wGwAQAC/wGwAQAC/wGwAQAC/wGaAQAB3wH/AgABkAH/AVgCWgHAA0ABcAMXASAEAAOA - Af8D9wH/A9wB/wMAAf8DpgH/A5QB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wNY - Ae8MAANcAc8D2Q3/AagBoAGoAf8BgwEAAYMB/wHMAc0BzAH/AeIB9AHiAf8B5gHyAeoB/wLMAdkB/wO/ - Af8DYgHvAcQBCgEAAf8DOgFgCAADDAEQAxQBHAMGAQgIAAJRAVABnwJZAVcBvwMXASAQAAMXASABVAJW - AasDAAH/AZ0BAAHjAf8BsAEAAv8BsAEAAv8BsAEAAv8BsAEAAv8BsAEAAv8BsAEAAv8BsAEAAv8BsAEA - Av8CAAGQAf8DWAHjAzYBWAMPARQDgAH/A/cB/wPdAf8DsQH/A7oB/wOUAf8DAAH/AwAB/wOoAf8DlwH/ - A4AB/wOAAf8DigH/A6EB/wMAAf8DWAHvDAADXAHPA9kF/wPrAf8D8QH/A8AB/wGqAaMBqgH/AeMB4QHj - Af8B6AH1AegB/wHaAuIB/wHMAuYB/wG/ArsB/wFiAlgB7wHEAQoBAAH/AzoBYAgAAzoBYAJSAVEBpwMh - ATAIAAJRAVABnwJZAVcBvwMXASAQAANXAb8BYgFcAWQB5wGPAQABzwH/AasBAAH3Af8BsAEAAv8BsAEA - Av8BsAEAAv8BsAEAAv8BsAEAAv8BsAEAAv8BsAEAAv8BsAEAAv8BmgEAAd8B/wFtAVEBbQH3AlkBXAHP - A0MBdwOAAf8DtAH/AwAB/wOPAf8DAAH/AwAB/wMAAf8DgAH/A+MB/wPXAf8DxwH/A8cB/wPOAf8D0QH/ - AwAB/wNYAe8MAANcAc8D2QX/A/EB/wH1AeUB9QH/Ab4BsAG+Af8BkwKbAf8BwgLOAf8D5AH/AeEB5wHu - Af8BzAHeAfUB/wG/ArwB/wFiAlgB7wHEAQoBAAH/AzoBYAgAAzIBUAJPAU4BlwNAAXADKAE8BAADOwFj - A0MBdwMPARQTAAH/AQoBAAGfAf8BsAEAAv8BsAEAAv8BsAEAAv8BsgEAAv8BugEMAv8BvQETAf4B/wG9 - ARMB/gH/AbUBAgL/AbABAAL/AbABAAL/AbABAAL/AZoBAAHfAf8DAAH/A1ABnwOAAf8DvAH/AwAB/wOo - Af8DAAH/AwAB/wMAAf8DAAH/A4AB/wOAAf8DgAH/A4AB/wOAAf8DgAH/AwAB/wNYAe8MAANcAc8D2Qr/ - AfEC/wG7Aa4BuwH/AwAB/wEAAoMB/wPVAf8B3wLmAf8BzALhAf8DvwH/A2IB7wHEAQoBAAH/AzoBYAwA - AxcBIAJZAVcBvwJRAVABnyMAAf8BCgEAAZ8B/wGwAQAC/wGwAQAC/wGwAQAC/wG0AQAC/wHKAZMB/gH/ - AdMBpQH9Af8B0wGlAf0B/wG9ARMB/gH/AbABAAL/AbABAAL/AbABAAL/AZoBAAHfAf8DAAH/A1ABnwOA - Af8DwwH/AwAB/wOvAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wNi - Ae8MAANcAc8D2Q3/A+kB/wOYAf8DAAH/AZQCmwH/AcwB5AHiAf8BzAHjAd4B/wK/AbwB/wJiAVgB7wHE - AQoBAAH/AzoBYAwAAwkBDAMuAUgDQwF4AlEBUAGfAygBPAgAAzIBUANKAYsDHAEoBwAB/wEKAQABnwH/ - AbYBAwL/AcMBhAH+Af8BxgGJAf4B/wHHAY0B/gH/AdABngH9Af8B0wGlAf0B/wHTAaUB/QH/AcsBlAH9 - Af8BxgGJAf4B/wHGAYkB/gH/AbsBDgH+Af8BmgEAAd8B/wMAAf8DUAGfA4AB/wOtAf8DAAH/A5gB/wMA - Af8DAAH/AwAB/wMAAf8BqAIAAf8BqAIAAf8BqAIAAf8BsAKPAf8DsAH/AwAB/wMAAf8DYgHvDAADXAHP - A9kF/wPZAf8DvAH/A9sB/wPgAf8DAAH/AwAB/wHRAd0B5QH/AsgB4gH/Aq8BqwH/AmIBWAHvAcQBCgEA - Af8DSQGIAyoBQAMqAUADKgFAAyYBOAMMARADLgFIAlkBVwG/A0ABcAMhATADBgEIA0cBgAJcAVcB3wMq - AUAHAAH/AQoBAAGfAf8BtwEFAv8BxwGMAf4B/wHKAZMB/gH/AcUBkAH2Af8BqQGCAc4B/wGvAYQB1gH/ - AcoBkwH+Af8B0AGeAf0B/wHTAaUB/QH/AdMBpQH9Af8BwgGAAf4B/wGaAQAB3wH/AwAB/wNQAZ8DgAH/ - A/cB/wOzAf8D7wH/A74B/wONAf8DAAH/AwAB/wGoAgAB/wGoAgAB/wGZAgAB/wGUAgAB/wOwAf8DAAH/ - AwAB/wNiAe8MAANcAc8D2QX/A7MB/wMAAf8DAAH/A7QB/wMAAf8DAAH/AdICuwH/A7IB/wGFAoMB/wFi - AlgB7wHEAQoBAAH/AmABWQHrAlwBVwHfAlwBVwHfAlwBVwHfAlsBWQHDAyYBOAMJAQwDFwEgAk8BTgGX - AlIBUQGnAxQBHANHAYACXAFXAd8DKgFABwAB/wEKAQABnwH/AbEBAAL/AbQBAAL/AbQBAAL/AaEBAAHj - Af8DAAH/AgABEAH/AbQBAAL/AcgBjQH+Af8B0wGlAf0B/wHTAaUB/QH/AcIBgAH+Af8BmgEAAd8B/wMA - Af8DUAGfA4AB/wPZAf8D3wH/A98B/wPfAf8DngH/AwAB/wGPAgAC/wIAAv8CAAH/Ac8CAAH/AZQCAAH/ - A7AB/wMAAf8DAAH/A2IB7wwAA1wBzwPZBf8D8AH/A4cB/wMAAf8DAAH/AwAB/wEAAoMB/wOmAf8DAAH/ - AwAB/wNYAe8DRwGAA0cBgANHAYADRwGAA0cBgANAAXADFwEgCAADMgFQA0cBgANHAYACWgFYAcACXAFX - Ad8DKgFABAABRgJHAYABWQJcAc8CAAGAAf8CAAGAAf8CAAGAAf8CAAEVAf8DAAH/AwAB/wIAAYAB/wGa - AQABzwH/AcIBgAH+Af8BwgGAAf4B/wGNAQABvwH/AlgBYgHvA1EBoAMyAVADmAH/A5gB/wOYAf8DmAH/ - A4YB/wOQAf8DAAH/AwAB/wHPAgAB/wHPAgAB/wGoAgAB/wGEAgAB/wOwAf8DAAH/AwAB/wNiAe8MAANc - Ac8D2Qn/A/gB/wPSAf8DwQH/AdcC5wH/AbYC0gH/AwAB/wMAAf8DQQH5A1kBwhwAAwkBDAMXASADFwEg - AzYBWAJfAVgB4wHEAQoBAAH/AlwBVwHfAyoBQAgAA0oBiwNXAd8DVwHfA1cB3wNYAeMBYwFtAWkB9wFV - AV8BXgHzA1cB3wFfAUwBXwHzAZoBAAHfAf8BmgEAAd8B/wJYAWIB7wNZAcMDJgE4BAAQ/wOgAf8D1wH/ - AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A7AB/wMAAf8DAAH/A2IB7wwAA1wBzwPbGf8D3wH/Aa4BrQGu - Af8DagH5A1sBwyAAAy4BSAJZAVcBvwJZAVcBvwJcAVkBzwJtAVEB9wHEAQoBAAH/AlwBVwHfAyoBQAgA - AxwBKAMqAUADKgFAAyoBQAM2AVgBWQJcAc8BVQJXAbcDKgFAAVUCVwG3AwAB/wMAAf8DUQGgAyYBOAMM - ARAEABD/A6YB/wPUAf8D9wH/A/cB/wP3Af8D9wH/A/cB/wPkAf8DrQH/AwAB/wMAAf8DYgHvDAADXAHP - A98B/wP4Af8B9wH5AfcB/wP3Af8D9wH/A/cB/wP3Af8B2AHbAdgB/wNfAfsDWQHCJAADKAE8AlEBUAGf - AlEBUAGfAlEBUAGfAlEBUAGfAlEBUAGfA0oBiwMcASgUAAMhATADPQFoAUsCTAGPAzsBYwQAAzsBYwFQ - AlEBnwFQAlEBnwMyAVAMABT/A6gB/wOAAf8DgAH/A4AB/wOAAf8DgAH/A4AB/wOAAf8DmAX/A2IB7wwA - A1wBzwMAAf8DiQH/AQABmQEAAf8BgwEAAYMB/wOAAf8BAAGDAQAB/wGGAQABhgH/AQABmQEAAf8DWQG/ - XAABRgJHAYADVwHfAyoBQCwAAykBPwJGAUcBgQM7AWQDJAE2AlwBWAHRAcMBhAEAAf8B0wGLAQAB/wHh - AY8BAAH/AdwBjQEAAf8B2gGLAQAB/wHXAYoBAAH/Ac0BiwEAAf8BqwIAAf8BpgIAAf8IAAMpAT8CRgFH - AYEDOwFkAyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDRAF7A1wB+AEAAYoBugH/JAADBwEJ - Ax8BLAMmATgDAwEEDAACWAFiAe8CWAFiAe8CWAFiAe8CWAFiAe8CWAFiAe8CWAFiAe8CWAFiAe8CWAFi - Ae8CWAFiAe8CWAFiAe8CWAFiAe8CWAFiAe8CWAFiAe8CWAFiAe8CWAFiAe8DXwHgAwQBBgMYASECAAGl - Af8CAAGvAf8CAAGrAf8D3AH/AcYBgwEAAf8B7wHOAboB/wHdA/8BhwHuAccB/wGiAfQB1wH/AaIB9gHX - Af8BjAHuAccB/wHgA/8B3QGiAYUB/wGrAgAB/wMEAQYDGAEhAgABpQH/AgABrwH/AgABqwH/A9wB/wPY - Af8D1AH/A9IB/wPRAf8D0wH/A9EB/wGYAa0BwQH/AQABmwHJAf8BkgG5Ad4B/wFRAm0B9xwAAwoBDgM6 - AWEDVgG2AV0CYgHpA0gB9gM6AWIOAAGAAf8C0QHoAf8C3wHvAf8C3wHvAf8C3wHvAf8C3wHvAf8C3wHv - Af8C3wHvAf8C3wHvAf8C3wHvAf8C3wHvAf8C3wHvAf8C3wHvAf8C3wHvAf8CwwHhAf8CWAFiAe8DIAEu - A2UB9AHEAcYBygH/AcABxgHMAf8CAAGsAf8D/QH/AcMCAAH/Ae8BtgGaAf8B6gHzAegB/wEAAb8BhAH/ - AQAByQGYAf8BAAHJAZkB/wEAAb8BhAH/AeQB9AHpAf8B3QGcAQAB/wGqAgAB/wMgAS4DZQH0AcQBxgHK - Af8BwAHGAcwB/wIAAawB/wP9Af8D+wH/AfUB7wHrAf8B6gHXAccB/wHmAcYBqwH/AeYBxQGpAf8B3wG6 - AZwB/wG2AaMBlwH/AZwBuAHTAf8BAAGaAcsB/wNEAXsYAAMjATQDVQG6AQABigGPAf8BvwHKAc8B/wHG - AcwBzgH/AwAB/wNfAdsDDQERCgABgAH/Au8B9wH/AgABpQH/AgABmAH/AgABmAH/AgABmAH/AgABmAH/ - AgABmAH/AgABmAH/AgABmAH/AgABmAH/AgABmAH/AgABmAH/AgABqwH/At8B7wH/AlgBYgHvAwQBBgM6 - AWACAAGzAf8BAAGPAb8B/wIAAa4B/wP6Af8BxAGBAQAB/wHqAbYBlwH/AvMB6gH/Ae0B8QHmAf8B7wHx - AeYB/wHvAfAB5gH/Ae0B8QHlAf8B8wH1Ae0B/wHVAZwBAAH/AbACAAH/AwQBBgM6AWACAAGzAf8BAAGP - Ab8B/wIAAa4B/wP6Af8D+gH/AeYB0QHAAf8B8gHcAckB/wH4AeMBzgH/AfcB4AHHAf8B+AHiAcsB/wHz - AdEBswH/AbIBowGZAf8BtwHNAeMB/wMkATYUAAM7AWQBXAFgAWQB5wGvAb0BwwH/Ab0BzAHQAf8B4wHr - Ae0B/wGOAZMBlgH/AwAB/wHdAeQB5wH/Ay8BSQoAAYAB/wLvAfcB/wIAAZAB/wKbAc0B/wK/Ad8B/wK/ - Ad8B/wK/Ad8B/wK/Ad8B/wK/Ad8B/wK/Ad8B/wK/Ad8B/wK/Ad8B/wKPAccB/wIAAZgB/wLfAe8B/wJY - AWIB7wMgAS4DZQH0AcQBxgHKAf8BwAHGAcwB/wIAAa4B/wP6Af8ByQGLAQAB/wHmAbUBkgH/AeIBpwGB - Af8B4QGnAYEB/wHeAaMBAAH/AdwBoQEAAf8B2wGfAQAB/wHZAZ4BAAH/AdQBmgEAAf8BuwIAAf8DIAEu - A2UB9AHEAcYBygH/AcABxgHMAf8CAAGuAf8D+gH/A/oB/wHlAcQBqAH/AfUB5QHWAf8B9AHaAcEB/wHz - AdgBvQH/AfMB2AG9Af8B+AHjAcwB/wHZAbYBmgH/A/wB/wMkATYQAAM5BF8B+wHEAdEB1wH/AawBuAHC - Af8BmgGnAbgB/wGZAaUBtQH/AwAB/wGAAYoBjAH/Ae4B+AH8Af8DSAGECgABgAH/Au8B9wH/AgABkAH/ - As8B5xH/AqgB1AH/AgABqAH/AgABqAH/AocBwwH/Ar8B3wH/AgABmAH/At8B7wH/AlgBYgHvAwQBBgM6 - AWACAAGzAf8BAAGSAcEB/wIAAa8B/wP5Af8BygGNAQAB/wHqAbgBmQH/Ad0BpQEAAf8B3QGmAYAB/wHb - AaMBAAH/AdkBoAEAAf8B2QGgAQAB/wHYAZ8BAAH/AdgBngEAAf8BvwGEAQAB/wMEAQYDOgFgAgABswH/ - AQABkgHBAf8CAAGvAf8D+QH/A/kB/wHgAb0BngH/AfgB6gHcAf8B9AHdAcYB/wH0AdwBxAH/AfMB2AG9 - Af8B+AHiAc0B/wHkAcEBpAH/A+gB/wMkATYMAAMRARcBWgFdAWAB3gGXAaUBqwH/AQABgQGFAf8BigGP - AZUB/wMAAf8DAAH/AYsBkQGsAf8BlQGfAbQB/wHDAdEB2QH/A1UBsgoAAYAB/wLvAfcB/wIAAZAB/wLP - AecR/wLPAecB/wKfAc8B/wKfAc8B/wK9Ad4B/wK/Ad8B/wIAAZgB/wLfAe8B/wJYAWIB7wMgAS4DZQH0 - AcQBxgHKAf8BwAHGAc0B/wIAAbEB/wP6Af8ByAGIAQAB/wHvAb8BoQH/Af0B/AH6Af8B/gH8AfsB/wH+ - Av0B/wH+Af0B/AH/Af0B+wH6Af8B/QH8AfsB/wHdAagBhQH/AcECAAH/AyABLgNlAfQBxAHGAcoB/wHA - AcYBzQH/AgABsQH/A/oB/wP5Af8B5gHGAaoB/wHzAeQB1gH/AfYB4AHKAf8B9QHeAcYB/wH1Ad4BxQH/ - AfgB5gHTAf8B4AHCAagB/wPRAf8DJgE4AwQBBgMlATcDNAFVA1EBogEAAYwBkgH/AaMBrgG1Af8BkgGe - AaYB/wG2AcABxQH/AwAB/wMAAf8DAAH/AwAB/wGSAZ0BqAH/A14B0AMKAQ0GAAGAAf8C7wH3Af8CAAGQ - Af8CAAGtAf8CAAG4Af8CAAG4Af8CAAG4Af8CwAHgAf8CuAHcAf8CAAG4Af8CAAG4Af8CAAG4Af8CAAGq - Af8CAAGYAf8C3wHvAf8CWAFiAe8DBAEGAzoBYAIAAbUB/wEAAZQBwgH/AgABsgH/A/oB/wHHAYYBAAH/ - Ae8BwAGeBf8BzAGTAQAK/wH7AfcC/wH4AfEB/wHkAa8BjAH/AccBigEAAf8DBAEGAzoBYAIAAbUB/wEA - AZQBwgH/AgABsgH/A/oB/wP4Af8B2wG9AaIB/wHpAc0BtAH/AfUB5wHbAf8B+AHsAd8B/wHyAd0ByQH/ - AesB0AG4Af8B3gHKAbkB/wPsAf8DJAE2AzcBWwMAAf8CIQEyAfsDKwH8AcgB0gHXAf8B5gHsAv8BzQHX - AewB/wG/AckBzwH/AaMBrAGvAf8BgAGIAYsB/wMAAf8B1gHdAd4B/wEAAYEBgwH/A1wB3wMSARgGAAGA - Af8C7wH3Af8CAAGQAf8CAAGAAf8CAAGwAf8CgAHAAf8CgAHAAf8CxwHjAf8CwAHgAf8CgAHAAf8CgAHA - Af8CAAGsAf8CAAGAAf8CAAGYAf8C3wHvAf8CWAFiAe8DIAEuA2UB9AHEAcYBygH/AcABxwHNAf8CAAGy - Af8D+wH/AcwBjQEAAf8B8wHNAbAF/wHjAccBsxH/AeoBvwGhAf8ByQGJAQAB/wMgAS4DZQH0AcQBxgHK - Af8BwAHHAc0B/wIAAbIB/wP7Af8D+gH/AfcC+AH/AeEB0gHBAf8B2gHGAawB/wHhAb8BoAH/AeUBxAGn - Af8B4wHNAbYB/wHpAe0B7wH/A2UB9AMjATMDKgFAAlABUgGjA1sB2QEAAYUBiQH/AaQCqAH9A18B+wHu - AfIC/wHjAekB7QH/AeIB6AHrAf8B/gP/Ac4B1wHaAf8BtAHAAcUB/wEAAYEBhgH/A10B1wMMARAGAAGA - Af8C7wH3Af8CAAGQAf8CAAGAAf8CvwHfAf8CsgHZAf8CjwHHAf8CjwHHAf8CjwHHAf8CjwHHAf8CuQHc - Af8CrwHXAf8CAAGAAf8CAAGYAf8C3wHvAf8CWAFiAe8DBAEGAzoBYAEAAYIBtQH/AQABlgHDAf8CAAG0 - Af8D+gH/AdQBlwEAAf8B1AGeAQAB/wHQAZgBAAH/AdYBpAGCAf8BzQGOAQAB/wHNAZABAAH/AdABmgEA - Af8B0QGZAQAB/wHIAYsBAAH/AzoBYQMEAQYDOgFgAQABggG1Af8BAAGWAcMB/wIAAbQB/wP6Af8D+gH/ - AeABogEAAf8B4AGgAQAB/wHgAaABAAH/Ad8BngEAAf8B3AGcAQAB/wHcAZsBAAH/A/IB/wOoAf0DJAE2 - CAADUAGfAgABgQH/A38B/gNiAfYDTQH6AcYB0AHVAf8B3gHkAeYB/wHfAeYB6AH/AfAB9QH5Af8B3gHl - AfMB/wHKAdQB4QH/A1UBsgoAAYAB/wLvAfcB/wIAAZAB/wIAAYAB/wK/Ad8B/wIAAagB/wIAAYAB/wIA - AYAB/wIAAYAB/wIAAYAB/wIAAbAB/wKvAdcB/wIAAYAB/wIAAZgB/wLfAe8B/wJYAWIB7wMgAS4DZQH0 - AcQBxgHKAf8BwAHHAc0B/wIAAbUB/wP5Af8D+QH/AeEBowEAAf8B6gHAAaMB/wHqAcABogH/AeoBvwGh - Af8B6gG+AaAB/wHfAZ4BAAH/A/QB/wP3Af8DJAE2AyABLgNlAfQBxAHGAcoB/wHAAccBzQH/AgABtQH/ - A/kB/wP5Af8B4QGjAQAB/wHqAcABowH/AeoBwAGiAf8B6gG/AaEB/wHqAb4BoAH/Ad8BngEAAf8D9AH/ - A/cB/wMkATYEAAMHAQkDXQHSAYYBkQGWAf8BlQGbAZ0B/wG5AcABwgH/AQABiQGOAf8BrAG2AboB/wHe - AeUB5wH/AakBtAG5Af8DXwH7AeUB6AH4Af8B9QH6Av8DQgFzCgABgAH/Au8B9wH/AgABkAH/AgABgAH/ - Ar8B3wH/AgABqAH/AgABgAH/AgABgAH/AgABgAH/AgABgAH/AgABsAH/Aq8B1wH/AgABgAH/AgABmAH/ - At8B7wH/AlgBYgHvAwQBBgM6AWABAAGDAbcB/wEAAZkBxAH/AgABtwH/A/gB/wP4Af8B4QGlAQAB/wHh - AaMBAAH/AeEBowEAAf8B4AGiAQAB/wHgAaABAAH/AeABoAEAAf8D9AH/A/oB/wMkATYDBAEGAzoBYAEA - AYMBtwH/AQABmQHEAf8CAAG3Af8D+AH/A/gB/wHhAaUBAAH/AeEBowEAAf8B4QGjAQAB/wHgAaIBAAH/ - AeABoAEAAf8B4AGgAQAB/wP0Af8D+gH/AyQBNgQAAwoBDQNfAeAB0AHeAeQB/wGoAbIBtgH/AZQBmQGc - Af8BmwGgAaIB/wHjAeoB7AH/AY8BlQGXAf8BgwGOAZMB/wNqAfkBAAGFAY8B/wNdAfADFgEfCgABgAH/ - Au8B9wH/AgABkAH/AgABgAH/Ar8B3wH/AgABvgH/AgABoAH/AgABoAH/AgABoAH/AgABoAH/AogBxAH/ - Aq8B1wH/AgABgAH/AgABmAH/At8B7wH/AlgBYgHvAyABLgNlAfQBxAHHAcoB/wHAAccBzQH/AgABtwH/ - A/cB/wP3Af8D9wH/A/cB/wP3Af8D9QH/A/UB/wP1Af8D8wH/A/oB/wMkATYDIAEuA2UB9AHEAccBygH/ - AcABxwHNAf8CAAG3Af8D9wH/A/cB/wP3Af8D9wH/A/cB/wP1Af8D9QH/A/UB/wPzAf8D+gH/AyQBNggA - A0gBhgHsAfgB/QH/Ae0B9AH4Af8B+QH9Af4B/wH+A/8B/QP/Ab8BxwHKAf8DAAH/AbUBuwG9Af8BwwHQ - AdUB/wNRAZwOAAGAAf8C7wH3Af8CAAGQAf8CAAGAAf8CmwHNAf8CzwHnAf8CzwHnAf8CzwHnAf8CzwHn - Af8CzwHnAf8CzwHnAf8CjgHHAf8CAAGAAf8CAAGYAf8C3wHvAf8CWAFiAe8DBAEGAzoBYAEAAYcBuQH/ - AQABmgHFAf8CAAG4Af8D9wH/A/cB/wP3Af8D9wH/A/UB/wP0Af8D9AH/A/QB/wPyAf8D+wH/AyQBNgME - AQYDOgFgAQABhwG5Af8BAAGaAcUB/wIAAbgB/wP3Af8D9wH/A/cB/wP3Af8D9QH/A/QB/wP0Af8D9AH/ - A/IB/wP7Af8DJAE2CwABAQNEAXkDXAH4AfsB/AH9Af8B+wH8Af0B/wH5AvsB/wHzAfgB+gH/Ab0BxgHK - Af8BAAGDAYYB/wGoAbABswH/AysBQg4AAYAB/wLvAfcB/wIAAZ4B/wIAAZAB/wIAAZAB/wIAAZAB/wIA - AZAB/wIAAZAB/wIAAZAB/wIAAZAB/wIAAZAB/wIAAZAB/wIAAZAB/wIAAaUB/wLfAe8B/wJYAWIB7wMg - AS4DZQH0AcQBxwHKAf8BwQHHAc0B/wIAAbgB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/ - A/wB/wP8Af8DJAE2AyABLgNlAfQBxAHHAcoB/wHBAccBzQH/AgABuAH/A/wB/wP8Af8D/AH/A/wB/wP8 - Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wMkATYQAAMdASoDUwGlA1kB9QH5AfoB+wH/AfoB+wH8Af8B+gH9 - Af4B/wHoAfAB8wH/A1MBpRIAAYAB/wLgAfAB/wLvAfcB/wLvAfcB/wLvAfcB/wLvAfcB/wLvAfcB/wLv - AfcB/wLvAfcB/wLvAfcB/wLvAfcB/wLvAfcB/wLvAfcB/wLvAfcB/wLRAegB/wJYAWIB7wQAAy4BSAEA - AYsBwgH/AgABvgH/AgABugH/AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMX - ASAEAAMuAUgBAAGLAcIB/wIAAb4B/wIAAboB/wMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2 - AyQBNgMkATYDFwEgGAADFgEfA0ABcQNVAbUDYQHkA1sBwwMOARMSAAGAAf8CAAGAAf8CAAGAAf8CAAGA + Af8BAAGXAQAB/wEAAZcBAAH/AQABlwEAAf8BAAGbAQAB/wEAAa8BAAH/A1EBnwGgARsBGgH/AZoBEgEQ + Af8B7AHfAd4B/wGgAR0BGwH/Ad8ByQHIAf8B8QHnAeYB/wGgAR0BGwH/AewB3wHeAf8B7AHfAd4B/wGg + AR0BGwH/Ad8ByQHIAf8BswE9ATwB/wGfARsBGQH/A/IB/wP8Af8DyQH/AzQBVAGHAYMBhAH/AZoClgH/ + A1oB2wM7AWUBnAKaAf0BuAK1Af8DXwHgAzQBVANZAckDQgH/Ad4B3QHcBf8DqAH9A0oBiQMCAQMEAANL + AY4BUQFFAWwB6QNTAaoBOQELAYsB/QNAAXEDBAEGAwABARQAA0wBkgEyAQQBfwH+BAABgwHDAYQB/wEA + AagBAAH/AQABlwEAAf8BAAGXAQAB/wEAAZcBAAH/AQABlwEAAf8BAAGXAQAB/wEAAZcBAAH/AQABlwEA + Af8BAAGXAQAB/wEAAZcBAAH/AQABlwEAAf8BAAGXAQAB/wEAAZ4BAAH/ARoBwQEbAf8DUQGfAdMCswH/ + AZoBEgEQAf8B3wHJAcgB/wHmAdQB0wH/AdMCswH/AfIC6QH/AeYB1AHTAf8B0wKzAf8B3wHJAcgB/wHm + AdQB0wH/AdMCswH/AZoBEgEQAf8BygKqAf8D7QH/A/wB/wPJAf8DNAFUAYUCgQH/AZYBkQGSAf8DWgHb + AzsBZQGZAZYBlwH9AbQBsQGyAf8DWgHeA1YBsQGmAqUB/wHrAukB/wHhAd8B4AH/A2IB6QM6AWIMAANB + AXIBOQELAYsB/QEyAQQBfwH+ASsBAAGLAf8BWQFRAWYB4AJWAVgBwQMmATkQAAMFAQcCVgFaAb4BWQFY + AV4BzAQAAYMBwwGEAf8BAAGoAQAB/wEAAZcBAAH/AQABlwEAAf8BAAGXAQAB/wEAAZcBAAH/AQABlwEA + Af8BAAGXAQAB/wEAAZcBAAH/AQABlwEAAf8BAAGXAQAB/wEAAZcBAAH/AQABlwEAAf8BAAGhAQAB/wGr + AdcBqwH/A1EBnwH8AvoB/wHRAbABrwH/AZoBEgEQAf8BmgESARAB/wGaARIBEAH/AeYB1AHTAf8BmgES + ARAB/wGaARIBEAH/AZoBEgEQAf8BmgESARAB/wGaARIBEAH/AccBpwGmAf8B6ALmAf8D5gH/A/wB/wPJ + Af8DNAFUAYMBSQFKAf8BkgGNAY4B/wNaAdsDOwFlAZYBkgGTAf0BrQGpAaoB/wNaAd4DZAHnAdwB2QHa + Af8BtAKzAf8DWgHbAysBQgMnAToDIgEyAwUBBwQAAx0BKQE5ASIBdwH2ASsBAAGLAf8BKwEAAYsB/wEr + AQABiwH/ASsBAAGLAf8DRQF9AwoBDQMGAQgHAAEBAzEBTgE9AR8BfAH4AzgBXgQAAcEB4QHCAf8BDAG7 + AQ0B/wEAAaABAAH/AQABmQEAAf8BAAGXAQAB/wEAAZcBAAH/AQABlwEAAf8BAAGXAQAB/wEAAZcBAAH/ + AQABlwEAAf8BAAGXAQAB/wEAAZcBAAH/AQABmgEAAf8BAAGoAQAB/wHCAeIBwgH/A1EBnwQAA/0B/wHG + AsEB/wHNAasBqgH/AaoBLQEsAf8BrQEyATEB/wGaARIBEAH/AZoBEgEQAf8BqQEtASsB/wHIAaYBpQH/ + AeYC4QH/A/sB/wP8Af8D/AH/A/wB/wPJAf8DNAFUAYEBRwFIAf8BjgGJAYoB/wNaAdsDOwFlAZECjgH9 + AacBpAGlAf8DWAHdA2IB6QHVAtMB/wGAAUoBgAH/A1QB7gNYAd0DVQHqA1YBtgMUARwEAAMCAQMCRgFH + AYABMgEEAX8B/gErAQABiwH/ASsBAAGLAf8BKwEAAYsB/wFTAUoBagHmAVgBVwFfAdEBVgFVAVgBuQMR + ARcDIAEvAVUBUgFkAd4BWQFYAWABzwMNARIEAAT/AZ8B0QGgAf8BAAGtAQAB/wEAAZsBAAH/AQABlwEA + Af8BAAGXAQAB/wEAAZcBAAH/AQABlwEAAf8BAAGXAQAB/wEAAZcBAAH/AQABlwEAAf8BAAGXAQAB/wEA + AaABAAH/AQABsgEAAf8B0gHpAdIB/wNRAZ8IAAPJAf8D/AH/A/cB/wP5Af8D9wH/A/cB/wPzAf8D8AH/ + A+oB/wP8Af8D9gH/A/QB/wPFAf8D3wH/Ay8BSgFIAUMBRAH/AYsBhQGGAf8DWwHQAzUBVgGOAosB/QGj + AZ4BnwH/A1kBzwNRAZ8BzwLMAf8BwQK+Af8BkAKPAf8BmAKWAf8B0QLPAf8DWwHZAxQBHAgAAwgBCwJT + AVQBrAEyAQQBfwH+ASsBAAGLAf8BKwEAAYsB/wErAQABiwH/ASsBAAGLAf8BMgESAYUB+wJRAVIBoQFT + AUoBagHmAVYBTwFjAd8DJwE6CAAE/wHFAeMBxgH/AYMBwwGEAf8BAAGfAQAB/wEAAZcBAAH/AQABlwEA + Af8BAAGXAQAB/wEAAZcBAAH/AQABlwEAAf8BAAGXAQAB/wEAAZcBAAH/AQABlwEAAf8BAAGsAQAB/wGM + AcgBjQH/Ad4B8AHfAf8DUQGfCAADyQH/A/sB/wP0Af8D9QH/A/UB/wP1Af8D8QH/A+8B/wPpAf8D/AH/ + A+cB/wPDAf8D3wH/A/0B/wMaASQDbQH3AaQCoQH/A0oBiwMYASIDXwHzAbICrwH/A0sBjgMEAQYDUwSo + Af0B1QHSAdMB/wHdAtsB/wOoAf0DSgGNAwIBAwwAAwgBCwJGAUcBgQE5ASIBdwH2ASsBAAGLAf8BKwEA + AYsB/wErAQABiwH/ASsBAAGLAf8BMgEEAX8B/gFWAVUBWAG8AxoBJQwABP8B4QHwAeEB/wGvAdgBrwH/ + AQABsgEAAf8BAAGkAQAB/wEAAZ0BAAH/AQABnAEAAf8BAAGcAQAB/wEAAZ4BAAH/AQABngEAAf8BAAGl + AQAB/wEBAbUBAgH/AZMBzAGUAf8BwgHiAcMB/wHuAfcB7gH/A1EBnwgAA8wB/wP4Af8D+wH/A/wB/wP8 + Af8D/AH/A/wB/wP8Af8D/AH/A/gB/wPCAf8D3wH/A/0B/wcAAQEDIAEuAycBOgMKAQ4EAAMdASoDJwE6 + AwsBDwgAAyEBMAM9AWcDPgFqAykBPwMEAQYUAAMCAQMDHAEoA0EBcgNKAYoDSgGLA0gBhAMsAUQDBgEI + EAAE/wH2AfsB9gH/AdkB7QHZAf8BnAHQAZ0B/wEKAboBCwH/AQABqAEAAf8BAAGkAQAB/wEAAaUBAAH/ + AQABqQEAAf8BAAGpAQAB/wENAbsBDwH/AdAB6AHQAf8B8QH4AfEJ/wNRAZ8IAAPjAf8DzAH/A8kB/wPJ + Af8DyQH/A8kB/wPJAf8DyQH/A8kB/wPJAf8D3wH/A/0B/4gAA2IB7wNYAe8DWAHvA1gB7wNYAe8DWAHv + A1gB7wNiAe8DYgHvA2IB7wNiAe8DYgHvA2IB7wNiAe8DYgHvA18B4AwAA1kBwgNiAe8BYgFYAWIB7wNY + Ae8BWAFiAVgB7wNYAe8DWAHvAlgBYgHvA1gB7wJiAVgB7wJYAWIB7wJYAWAB7wNfAeACUQFQAZ8CUQFQ + AZ8CUQFQAZ8CUQFQAZ8CUQFQAZ8CUQFQAZ8CUQFQAZ8CUQFQAZ8CUQFQAZ8CUQFQAZ8DQwF3Aw8BFCAA + AzIEUAGfA1ABnwNQAZ8DUAGfA1ABnwNDAXcDDwEUEAADkAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ + A48d/wNiAe8MAANcAc8DqQH/Ab8BuwG/Af8BuwG9AbsB/wG9Ab8BvQH/A7wB/wO8Af8CvQG/Af8CuwG9 + Af8CvwG7Af8CvgG/Af8BrgGpAbMB/wFiAVgBYAHvAcQBCQEAAf8CXQFZAdcCWQFXAb8CWQFXAb8CWQFX + Ab8CWQFXAb8CWQFXAb8CWQFXAb8CWQFXAb8CZAFcAecCWQFXAb8DFwEgGAADDAEQAyYBOANRAaADAAH/ + AwAB/wMAAf8DAAH/AwAB/wJZAVwBzwM2AVgDFwEgDAADgAH/A+EB/wO7Af8DtAH/A7QB/wOQAf8DAAH/ + A48d/wNiAe8MAANcAc8D0gH/A/UB/wH1AdsB9QH/Ad4B5AHeAf8BzALhAf8C3gH1Af8B5gH1AeYB/wHM + AegB2QH/AcwB1wHrAf8BzAHtAcwB/wG/Ab4BvwH/AWIBWAFiAe8BxAEJAQAB/wNCAXQDFwEgAxcBIAMX + ASADFwEgAxcBIAMXASADFwEgAlYBVAGrAlkBVwG/AxcBIBgAAyYBOANZAcMCWAFiAe8BmgEAAd8B/wGa + AQAB3wH/AZoBAAHfAf8BmgEAAd8B/wGaAQAB3wH/AW0BUQFtAfcDWAHjA0ABcAwAA4AB/wP3Af8DngH/ + AwAB/wOcAf8DlAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A2IB7wwAA1wBzwPZ + Bv8B9wL/AfgB+gH4Af8B8gHmAfkB/wHnAeIB7wH/AeIB8QHiAf8B5gHhAeoB/wHMAewB3wH/AcwB1gHr + Af8DvwH/A2IB7wHEAQkBAAH/AzoBYBwAAlEBUAGfAlkBVwG/AxcBIBQAAzIBUANRAaACWAFiAe8BhAEA + AcAB/wGwAQAC/wGwAQAC/wGwAQAC/wGwAQAC/wGwAQAC/wGaAQAB3wH/AgABkAH/AVgCWgHAA0ABcAMX + ASAEAAOAAf8D9wH/A9wB/wMAAf8DpgH/A5QB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ + AwAB/wNYAe8MAANcAc8D2Q3/AagBoAGoAf8BgwEAAYMB/wHMAc0BzAH/AeIB9AHiAf8B5gHyAeoB/wLM + AdkB/wO/Af8DYgHvAcQBCQEAAf8DOgFgCAADDAEQAxQBHAMGAQgIAAJRAVABnwJZAVcBvwMXASAQAAMX + ASABVAJWAasDAAH/AZ0BAAHjAf8BsAEAAv8BsAEAAv8BsAEAAv8BsAEAAv8BsAEAAv8BsAEAAv8BsAEA + Av8BsAEAAv8CAAGQAf8DWAHjAzYBWAMPARQDgAH/A/cB/wPdAf8DsQH/A7oB/wOUAf8DAAH/AwAB/wOo + Af8DlwH/A4AB/wOAAf8DigH/A6EB/wMAAf8DWAHvDAADXAHPA9kF/wPrAf8D8QH/A8AB/wGqAaMBqgH/ + AeMB4QHjAf8B6AH1AegB/wHaAuIB/wHMAuYB/wG/ArsB/wFiAlgB7wHEAQkBAAH/AzoBYAgAAzoBYAJS + AVEBpwMhATAIAAJRAVABnwJZAVcBvwMXASAQAANXAb8BYgFcAWQB5wGPAQABzwH/AasBAAH3Af8BsAEA + Av8BsAEAAv8BsAEAAv8BsAEAAv8BsAEAAv8BsAEAAv8BsAEAAv8BsAEAAv8BmgEAAd8B/wFtAVEBbQH3 + AlkBXAHPA0MBdwOAAf8DtAH/AwAB/wOPAf8DAAH/AwAB/wMAAf8DgAH/A+MB/wPXAf8DxwH/A8cB/wPO + Af8D0QH/AwAB/wNYAe8MAANcAc8D2QX/A/EB/wH1AeUB9QH/Ab4BsAG+Af8BkwKbAf8BwgLOAf8D5AH/ + AeEB5wHuAf8BzAHeAfUB/wG/ArwB/wFiAlgB7wHEAQkBAAH/AzoBYAgAAzIBUAJPAU4BlwNAAXADKAE8 + BAADOwFjA0MBdwMPARQTAAH/AQkBAAGfAf8BsAEAAv8BsAEAAv8BsAEAAv8BsgEAAv8BugELAv8BvQES + Af4B/wG9ARIB/gH/AbUBAQL/AbABAAL/AbABAAL/AbABAAL/AZoBAAHfAf8DAAH/A1ABnwOAAf8DvAH/ + AwAB/wOoAf8DAAH/AwAB/wMAAf8DAAH/A4AB/wOAAf8DgAH/A4AB/wOAAf8DgAH/AwAB/wNYAe8MAANc + Ac8D2Qr/AfEC/wG7Aa4BuwH/AwAB/wEAAoMB/wPVAf8B3wLmAf8BzALhAf8DvwH/A2IB7wHEAQkBAAH/ + AzoBYAwAAxcBIAJZAVcBvwJRAVABnyMAAf8BCQEAAZ8B/wGwAQAC/wGwAQAC/wGwAQAC/wG0AQAC/wHK + AZMB/gH/AdMBpQH9Af8B0wGlAf0B/wG9ARIB/gH/AbABAAL/AbABAAL/AbABAAL/AZoBAAHfAf8DAAH/ + A1ABnwOAAf8DwwH/AwAB/wOvAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ + AwAB/wNiAe8MAANcAc8D2Q3/A+kB/wOYAf8DAAH/AZQCmwH/AcwB5AHiAf8BzAHjAd4B/wK/AbwB/wJi + AVgB7wHEAQkBAAH/AzoBYAwAAwkBDAMuAUgDQwF4AlEBUAGfAygBPAgAAzIBUANKAYsDHAEoBwAB/wEJ + AQABnwH/AbYBAgL/AcMBhAH+Af8BxgGJAf4B/wHHAY0B/gH/AdABngH9Af8B0wGlAf0B/wHTAaUB/QH/ + AcsBlAH9Af8BxgGJAf4B/wHGAYkB/gH/AbsBDQH+Af8BmgEAAd8B/wMAAf8DUAGfA4AB/wOtAf8DAAH/ + A5gB/wMAAf8DAAH/AwAB/wMAAf8BqAIAAf8BqAIAAf8BqAIAAf8BsAKPAf8DsAH/AwAB/wMAAf8DYgHv + DAADXAHPA9kF/wPZAf8DvAH/A9sB/wPgAf8DAAH/AwAB/wHRAd0B5QH/AsgB4gH/Aq8BqwH/AmIBWAHv + AcQBCQEAAf8DSQGIAyoBQAMqAUADKgFAAyYBOAMMARADLgFIAlkBVwG/A0ABcAMhATADBgEIA0cBgAJc + AVcB3wMqAUAHAAH/AQkBAAGfAf8BtwEEAv8BxwGMAf4B/wHKAZMB/gH/AcUBkAH2Af8BqQGCAc4B/wGv + AYQB1gH/AcoBkwH+Af8B0AGeAf0B/wHTAaUB/QH/AdMBpQH9Af8BwgGAAf4B/wGaAQAB3wH/AwAB/wNQ + AZ8DgAH/A/cB/wOzAf8D7wH/A74B/wONAf8DAAH/AwAB/wGoAgAB/wGoAgAB/wGZAgAB/wGUAgAB/wOw + Af8DAAH/AwAB/wNiAe8MAANcAc8D2QX/A7MB/wMAAf8DAAH/A7QB/wMAAf8DAAH/AdICuwH/A7IB/wGF + AoMB/wFiAlgB7wHEAQkBAAH/AmABWQHrAlwBVwHfAlwBVwHfAlwBVwHfAlsBWQHDAyYBOAMJAQwDFwEg + Ak8BTgGXAlIBUQGnAxQBHANHAYACXAFXAd8DKgFABwAB/wEJAQABnwH/AbEBAAL/AbQBAAL/AbQBAAL/ + AaEBAAHjAf8DAAH/AgABDwH/AbQBAAL/AcgBjQH+Af8B0wGlAf0B/wHTAaUB/QH/AcIBgAH+Af8BmgEA + Ad8B/wMAAf8DUAGfA4AB/wPZAf8D3wH/A98B/wPfAf8DngH/AwAB/wGPAgAC/wIAAv8CAAH/Ac8CAAH/ + AZQCAAH/A7AB/wMAAf8DAAH/A2IB7wwAA1wBzwPZBf8D8AH/A4cB/wMAAf8DAAH/AwAB/wEAAoMB/wOm + Af8DAAH/AwAB/wNYAe8DRwGAA0cBgANHAYADRwGAA0cBgANAAXADFwEgCAADMgFQA0cBgANHAYACWgFY + AcACXAFXAd8DKgFABAABRgJHAYABWQJcAc8CAAGAAf8CAAGAAf8CAAGAAf8CAAEUAf8DAAH/AwAB/wIA + AYAB/wGaAQABzwH/AcIBgAH+Af8BwgGAAf4B/wGNAQABvwH/AlgBYgHvA1EBoAMyAVADmAH/A5gB/wOY + Af8DmAH/A4YB/wOQAf8DAAH/AwAB/wHPAgAB/wHPAgAB/wGoAgAB/wGEAgAB/wOwAf8DAAH/AwAB/wNi + Ae8MAANcAc8D2Qn/A/gB/wPSAf8DwQH/AdcC5wH/AbYC0gH/AwAB/wMAAf8DQQH5A1kBwhwAAwkBDAMX + ASADFwEgAzYBWAJfAVgB4wHEAQkBAAH/AlwBVwHfAyoBQAgAA0oBiwNXAd8DVwHfA1cB3wNYAeMBYwFt + AWkB9wFVAV8BXgHzA1cB3wFfAUwBXwHzAZoBAAHfAf8BmgEAAd8B/wJYAWIB7wNZAcMDJgE4BAAQ/wOg + Af8D1wH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A7AB/wMAAf8DAAH/A2IB7wwAA1wBzwPbGf8D3wH/ + Aa4BrQGuAf8DagH5A1sBwyAAAy4BSAJZAVcBvwJZAVcBvwJcAVkBzwJtAVEB9wHEAQkBAAH/AlwBVwHf + AyoBQAgAAxwBKAMqAUADKgFAAyoBQAM2AVgBWQJcAc8BVQJXAbcDKgFAAVUCVwG3AwAB/wMAAf8DUQGg + AyYBOAMMARAEABD/A6YB/wPUAf8D9wH/A/cB/wP3Af8D9wH/A/cB/wPkAf8DrQH/AwAB/wMAAf8DYgHv + DAADXAHPA98B/wP4Af8B9wH5AfcB/wP3Af8D9wH/A/cB/wP3Af8B2AHbAdgB/wNfAfsDWQHCJAADKAE8 + AlEBUAGfAlEBUAGfAlEBUAGfAlEBUAGfAlEBUAGfA0oBiwMcASgUAAMhATADPQFoAUsCTAGPAzsBYwQA + AzsBYwFQAlEBnwFQAlEBnwMyAVAMABT/A6gB/wOAAf8DgAH/A4AB/wOAAf8DgAH/A4AB/wOAAf8DmAX/ + A2IB7wwAA1wBzwMAAf8DiQH/AQABmQEAAf8BgwEAAYMB/wOAAf8BAAGDAQAB/wGGAQABhgH/AQABmQEA + Af8DWQG/XAABRgJHAYADVwHfAyoBQCwAAykBPwJGAUcBgQM7AWQDJAE2AlwBWAHRAcMBhAEAAf8B0wGL + AQAB/wHhAY8BAAH/AdwBjQEAAf8B2gGLAQAB/wHXAYoBAAH/Ac0BiwEAAf8BqwIAAf8BpgIAAf8IAAMp + AT8CRgFHAYEDOwFkAyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDRAF7A1wB+AEAAYoBugH/ + JAADBwEJAx8BLAMmATgDAwEEDAACWAFiAe8CWAFiAe8CWAFiAe8CWAFiAe8CWAFiAe8CWAFiAe8CWAFi + Ae8CWAFiAe8CWAFiAe8CWAFiAe8CWAFiAe8CWAFiAe8CWAFiAe8CWAFiAe8CWAFiAe8DXwHgAwQBBgMY + ASECAAGlAf8CAAGvAf8CAAGrAf8D3AH/AcYBgwEAAf8B7wHOAboB/wHdA/8BhwHuAccB/wGiAfQB1wH/ + AaIB9gHXAf8BjAHuAccB/wHgA/8B3QGiAYUB/wGrAgAB/wMEAQYDGAEhAgABpQH/AgABrwH/AgABqwH/ + A9wB/wPYAf8D1AH/A9IB/wPRAf8D0wH/A9EB/wGYAa0BwQH/AQABmwHJAf8BkgG5Ad4B/wFRAm0B9xwA + AwoBDgM6AWEDVgG2AV0CYgHpA0gB9gM6AWIOAAGAAf8C0QHoAf8C3wHvAf8C3wHvAf8C3wHvAf8C3wHv + Af8C3wHvAf8C3wHvAf8C3wHvAf8C3wHvAf8C3wHvAf8C3wHvAf8C3wHvAf8C3wHvAf8CwwHhAf8CWAFi + Ae8DIAEuA2UB9AHEAcYBygH/AcABxgHMAf8CAAGsAf8D/QH/AcMCAAH/Ae8BtgGaAf8B6gHzAegB/wEA + Ab8BhAH/AQAByQGYAf8BAAHJAZkB/wEAAb8BhAH/AeQB9AHpAf8B3QGcAQAB/wGqAgAB/wMgAS4DZQH0 + AcQBxgHKAf8BwAHGAcwB/wIAAawB/wP9Af8D+wH/AfUB7wHrAf8B6gHXAccB/wHmAcYBqwH/AeYBxQGp + Af8B3wG6AZwB/wG2AaMBlwH/AZwBuAHTAf8BAAGaAcsB/wNEAXsYAAMjATQDVQG6AQABigGPAf8BvwHK + Ac8B/wHGAcwBzgH/AwAB/wNfAdsDDQERCgABgAH/Au8B9wH/AgABpQH/AgABmAH/AgABmAH/AgABmAH/ + AgABmAH/AgABmAH/AgABmAH/AgABmAH/AgABmAH/AgABmAH/AgABmAH/AgABqwH/At8B7wH/AlgBYgHv + AwQBBgM6AWACAAGzAf8BAAGPAb8B/wIAAa4B/wP6Af8BxAGBAQAB/wHqAbYBlwH/AvMB6gH/Ae0B8QHm + Af8B7wHxAeYB/wHvAfAB5gH/Ae0B8QHlAf8B8wH1Ae0B/wHVAZwBAAH/AbACAAH/AwQBBgM6AWACAAGz + Af8BAAGPAb8B/wIAAa4B/wP6Af8D+gH/AeYB0QHAAf8B8gHcAckB/wH4AeMBzgH/AfcB4AHHAf8B+AHi + AcsB/wHzAdEBswH/AbIBowGZAf8BtwHNAeMB/wMkATYUAAM7AWQBXAFgAWQB5wGvAb0BwwH/Ab0BzAHQ + Af8B4wHrAe0B/wGOAZMBlgH/AwAB/wHdAeQB5wH/Ay8BSQoAAYAB/wLvAfcB/wIAAZAB/wKbAc0B/wK/ + Ad8B/wK/Ad8B/wK/Ad8B/wK/Ad8B/wK/Ad8B/wK/Ad8B/wK/Ad8B/wK/Ad8B/wKPAccB/wIAAZgB/wLf + Ae8B/wJYAWIB7wMgAS4DZQH0AcQBxgHKAf8BwAHGAcwB/wIAAa4B/wP6Af8ByQGLAQAB/wHmAbUBkgH/ + AeIBpwGBAf8B4QGnAYEB/wHeAaMBAAH/AdwBoQEAAf8B2wGfAQAB/wHZAZ4BAAH/AdQBmgEAAf8BuwIA + Af8DIAEuA2UB9AHEAcYBygH/AcABxgHMAf8CAAGuAf8D+gH/A/oB/wHlAcQBqAH/AfUB5QHWAf8B9AHa + AcEB/wHzAdgBvQH/AfMB2AG9Af8B+AHjAcwB/wHZAbYBmgH/A/wB/wMkATYQAAM5BF8B+wHEAdEB1wH/ + AawBuAHCAf8BmgGnAbgB/wGZAaUBtQH/AwAB/wGAAYoBjAH/Ae4B+AH8Af8DSAGECgABgAH/Au8B9wH/ + AgABkAH/As8B5xH/AqgB1AH/AgABqAH/AgABqAH/AocBwwH/Ar8B3wH/AgABmAH/At8B7wH/AlgBYgHv + AwQBBgM6AWACAAGzAf8BAAGSAcEB/wIAAa8B/wP5Af8BygGNAQAB/wHqAbgBmQH/Ad0BpQEAAf8B3QGm + AYAB/wHbAaMBAAH/AdkBoAEAAf8B2QGgAQAB/wHYAZ8BAAH/AdgBngEAAf8BvwGEAQAB/wMEAQYDOgFg + AgABswH/AQABkgHBAf8CAAGvAf8D+QH/A/kB/wHgAb0BngH/AfgB6gHcAf8B9AHdAcYB/wH0AdwBxAH/ + AfMB2AG9Af8B+AHiAc0B/wHkAcEBpAH/A+gB/wMkATYMAAMRARcBWgFdAWAB3gGXAaUBqwH/AQABgQGF + Af8BigGPAZUB/wMAAf8DAAH/AYsBkQGsAf8BlQGfAbQB/wHDAdEB2QH/A1UBsgoAAYAB/wLvAfcB/wIA + AZAB/wLPAecR/wLPAecB/wKfAc8B/wKfAc8B/wK9Ad4B/wK/Ad8B/wIAAZgB/wLfAe8B/wJYAWIB7wMg + AS4DZQH0AcQBxgHKAf8BwAHGAc0B/wIAAbEB/wP6Af8ByAGIAQAB/wHvAb8BoQH/Af0B/AH6Af8B/gH8 + AfsB/wH+Av0B/wH+Af0B/AH/Af0B+wH6Af8B/QH8AfsB/wHdAagBhQH/AcECAAH/AyABLgNlAfQBxAHG + AcoB/wHAAcYBzQH/AgABsQH/A/oB/wP5Af8B5gHGAaoB/wHzAeQB1gH/AfYB4AHKAf8B9QHeAcYB/wH1 + Ad4BxQH/AfgB5gHTAf8B4AHCAagB/wPRAf8DJgE4AwQBBgMlATcDNAFVA1EBogEAAYwBkgH/AaMBrgG1 + Af8BkgGeAaYB/wG2AcABxQH/AwAB/wMAAf8DAAH/AwAB/wGSAZ0BqAH/A14B0AMKAQ0GAAGAAf8C7wH3 + Af8CAAGQAf8CAAGtAf8CAAG4Af8CAAG4Af8CAAG4Af8CwAHgAf8CuAHcAf8CAAG4Af8CAAG4Af8CAAG4 + Af8CAAGqAf8CAAGYAf8C3wHvAf8CWAFiAe8DBAEGAzoBYAIAAbUB/wEAAZQBwgH/AgABsgH/A/oB/wHH + AYYBAAH/Ae8BwAGeBf8BzAGTAQAK/wH7AfcC/wH4AfEB/wHkAa8BjAH/AccBigEAAf8DBAEGAzoBYAIA + AbUB/wEAAZQBwgH/AgABsgH/A/oB/wP4Af8B2wG9AaIB/wHpAc0BtAH/AfUB5wHbAf8B+AHsAd8B/wHy + Ad0ByQH/AesB0AG4Af8B3gHKAbkB/wPsAf8DJAE2AzcBWwMAAf8CIQEyAfsDKwH8AcgB0gHXAf8B5gHs + Av8BzQHXAewB/wG/AckBzwH/AaMBrAGvAf8BgAGIAYsB/wMAAf8B1gHdAd4B/wEAAYEBgwH/A1wB3wMS + ARgGAAGAAf8C7wH3Af8CAAGQAf8CAAGAAf8CAAGwAf8CgAHAAf8CgAHAAf8CxwHjAf8CwAHgAf8CgAHA + Af8CgAHAAf8CAAGsAf8CAAGAAf8CAAGYAf8C3wHvAf8CWAFiAe8DIAEuA2UB9AHEAcYBygH/AcABxwHN + Af8CAAGyAf8D+wH/AcwBjQEAAf8B8wHNAbAF/wHjAccBsxH/AeoBvwGhAf8ByQGJAQAB/wMgAS4DZQH0 + AcQBxgHKAf8BwAHHAc0B/wIAAbIB/wP7Af8D+gH/AfcC+AH/AeEB0gHBAf8B2gHGAawB/wHhAb8BoAH/ + AeUBxAGnAf8B4wHNAbYB/wHpAe0B7wH/A2UB9AMjATMDKgFAAlABUgGjA1sB2QEAAYUBiQH/AaQCqAH9 + A18B+wHuAfIC/wHjAekB7QH/AeIB6AHrAf8B/gP/Ac4B1wHaAf8BtAHAAcUB/wEAAYEBhgH/A10B1wMM + ARAGAAGAAf8C7wH3Af8CAAGQAf8CAAGAAf8CvwHfAf8CsgHZAf8CjwHHAf8CjwHHAf8CjwHHAf8CjwHH + Af8CuQHcAf8CrwHXAf8CAAGAAf8CAAGYAf8C3wHvAf8CWAFiAe8DBAEGAzoBYAEAAYIBtQH/AQABlgHD + Af8CAAG0Af8D+gH/AdQBlwEAAf8B1AGeAQAB/wHQAZgBAAH/AdYBpAGCAf8BzQGOAQAB/wHNAZABAAH/ + AdABmgEAAf8B0QGZAQAB/wHIAYsBAAH/AzoBYQMEAQYDOgFgAQABggG1Af8BAAGWAcMB/wIAAbQB/wP6 + Af8D+gH/AeABogEAAf8B4AGgAQAB/wHgAaABAAH/Ad8BngEAAf8B3AGcAQAB/wHcAZsBAAH/A/IB/wOo + Af0DJAE2CAADUAGfAgABgQH/A38B/gNiAfYDTQH6AcYB0AHVAf8B3gHkAeYB/wHfAeYB6AH/AfAB9QH5 + Af8B3gHlAfMB/wHKAdQB4QH/A1UBsgoAAYAB/wLvAfcB/wIAAZAB/wIAAYAB/wK/Ad8B/wIAAagB/wIA + AYAB/wIAAYAB/wIAAYAB/wIAAYAB/wIAAbAB/wKvAdcB/wIAAYAB/wIAAZgB/wLfAe8B/wJYAWIB7wMg + AS4DZQH0AcQBxgHKAf8BwAHHAc0B/wIAAbUB/wP5Af8D+QH/AeEBowEAAf8B6gHAAaMB/wHqAcABogH/ + AeoBvwGhAf8B6gG+AaAB/wHfAZ4BAAH/A/QB/wP3Af8DJAE2AyABLgNlAfQBxAHGAcoB/wHAAccBzQH/ + AgABtQH/A/kB/wP5Af8B4QGjAQAB/wHqAcABowH/AeoBwAGiAf8B6gG/AaEB/wHqAb4BoAH/Ad8BngEA + Af8D9AH/A/cB/wMkATYEAAMHAQkDXQHSAYYBkQGWAf8BlQGbAZ0B/wG5AcABwgH/AQABiQGOAf8BrAG2 + AboB/wHeAeUB5wH/AakBtAG5Af8DXwH7AeUB6AH4Af8B9QH6Av8DQgFzCgABgAH/Au8B9wH/AgABkAH/ + AgABgAH/Ar8B3wH/AgABqAH/AgABgAH/AgABgAH/AgABgAH/AgABgAH/AgABsAH/Aq8B1wH/AgABgAH/ + AgABmAH/At8B7wH/AlgBYgHvAwQBBgM6AWABAAGDAbcB/wEAAZkBxAH/AgABtwH/A/gB/wP4Af8B4QGl + AQAB/wHhAaMBAAH/AeEBowEAAf8B4AGiAQAB/wHgAaABAAH/AeABoAEAAf8D9AH/A/oB/wMkATYDBAEG + AzoBYAEAAYMBtwH/AQABmQHEAf8CAAG3Af8D+AH/A/gB/wHhAaUBAAH/AeEBowEAAf8B4QGjAQAB/wHg + AaIBAAH/AeABoAEAAf8B4AGgAQAB/wP0Af8D+gH/AyQBNgQAAwoBDQNfAeAB0AHeAeQB/wGoAbIBtgH/ + AZQBmQGcAf8BmwGgAaIB/wHjAeoB7AH/AY8BlQGXAf8BgwGOAZMB/wNqAfkBAAGFAY8B/wNdAfADFgEf + CgABgAH/Au8B9wH/AgABkAH/AgABgAH/Ar8B3wH/AgABvgH/AgABoAH/AgABoAH/AgABoAH/AgABoAH/ + AogBxAH/Aq8B1wH/AgABgAH/AgABmAH/At8B7wH/AlgBYgHvAyABLgNlAfQBxAHHAcoB/wHAAccBzQH/ + AgABtwH/A/cB/wP3Af8D9wH/A/cB/wP3Af8D9QH/A/UB/wP1Af8D8wH/A/oB/wMkATYDIAEuA2UB9AHE + AccBygH/AcABxwHNAf8CAAG3Af8D9wH/A/cB/wP3Af8D9wH/A/cB/wP1Af8D9QH/A/UB/wPzAf8D+gH/ + AyQBNggAA0gBhgHsAfgB/QH/Ae0B9AH4Af8B+QH9Af4B/wH+A/8B/QP/Ab8BxwHKAf8DAAH/AbUBuwG9 + Af8BwwHQAdUB/wNRAZwOAAGAAf8C7wH3Af8CAAGQAf8CAAGAAf8CmwHNAf8CzwHnAf8CzwHnAf8CzwHn + Af8CzwHnAf8CzwHnAf8CzwHnAf8CjgHHAf8CAAGAAf8CAAGYAf8C3wHvAf8CWAFiAe8DBAEGAzoBYAEA + AYcBuQH/AQABmgHFAf8CAAG4Af8D9wH/A/cB/wP3Af8D9wH/A/UB/wP0Af8D9AH/A/QB/wPyAf8D+wH/ + AyQBNgMEAQYDOgFgAQABhwG5Af8BAAGaAcUB/wIAAbgB/wP3Af8D9wH/A/cB/wP3Af8D9QH/A/QB/wP0 + Af8D9AH/A/IB/wP7Af8DJAE2CwABAQNEAXkDXAH4AfsB/AH9Af8B+wH8Af0B/wH5AvsB/wHzAfgB+gH/ + Ab0BxgHKAf8BAAGDAYYB/wGoAbABswH/AysBQg4AAYAB/wLvAfcB/wIAAZ4B/wIAAZAB/wIAAZAB/wIA + AZAB/wIAAZAB/wIAAZAB/wIAAZAB/wIAAZAB/wIAAZAB/wIAAZAB/wIAAZAB/wIAAaUB/wLfAe8B/wJY + AWIB7wMgAS4DZQH0AcQBxwHKAf8BwQHHAc0B/wIAAbgB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8 + Af8D/AH/A/wB/wP8Af8DJAE2AyABLgNlAfQBxAHHAcoB/wHBAccBzQH/AgABuAH/A/wB/wP8Af8D/AH/ + A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wMkATYQAAMdASoDUwGlA1kB9QH5AfoB+wH/AfoB+wH8 + Af8B+gH9Af4B/wHoAfAB8wH/A1MBpRIAAYAB/wLgAfAB/wLvAfcB/wLvAfcB/wLvAfcB/wLvAfcB/wLv + AfcB/wLvAfcB/wLvAfcB/wLvAfcB/wLvAfcB/wLvAfcB/wLvAfcB/wLvAfcB/wLRAegB/wJYAWIB7wQA + Ay4BSAEAAYsBwgH/AgABvgH/AgABugH/AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2 + AyQBNgMXASAEAAMuAUgBAAGLAcIB/wIAAb4B/wIAAboB/wMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMk + ATYDJAE2AyQBNgMkATYDFwEgGAADFgEfA0ABcQNVAbUDYQHkA1sBwwMOARMSAAGAAf8CAAGAAf8CAAGA Af8CAAGAAf8CAAGAAf8CAAGAAf8CAAGAAf8CAAGAAf8CAAGAAf8CAAGAAf8CAAGAAf8CAAGAAf8CAAGA - Af8CAAGAAf8CWAFiAe8BnAGaAZwB/wGcAZoBnAH/AZwBmgGcAf8BnAGaAZwB/wGcAZoBnAH/AZwBmgGc - Af8BnAGaAZwB/wGcAZoBnAH/AZwBmgGcAf8BnAGaAZwB/wGcAZoBnAH/AZwBmgGcAf8BnAGaAZwB/wGc - AZoBnAH/AZwBmgGcAf8BnAGaAZwB/wgAAykBPwJGAUcBgQM7AWQDJAE2AyQBNgMkATYDJAE2AyQBNgMk - ATYDJAE2AyQBNgMkATYDJAE2AxcBIAwAAwMBBAMIAQsDDgETAxIBGAMSARkDEAEWAwsBDwMGAQgDAQEC - GAADKQE/AkYBRwGBAzsBZAMkATYDJAE2AyQBNgMkATYDJAE2AVEBUgFRAaEBQgFZAUIB9QMAAf8BQgFZ - AUIB9QFRAVIBUQGhAxcBIAH8Af4B/AH/AcwBzgHMAf8BzAHOAcwB/wHMAc4BzAH/AcwBzgHMAf8BzAHO - AcwB/wHMAc4BzAH/AcwBzgHMAf8BzAHOAcwB/wHMAc4BzAH/AcwBzgHMAf8BzAHOAcwB/wHMAc4BzAH/ - AcwBzgHMAf8BzAHOAcwB/wGcAZoBnAH/AwQBBgMYASECAAGlAf8CAAGvAf8CAAGrAf8D3AH/A9gB/wPU - Af8D0gH/A9EB/wPTAf8D0QH/A8sB/wPNAf8DxwH/AyQBNgwAAwMBBAMIAQsDFAEcAzsBZQNEAXoDLgFH - Aw0BEQMGAQgDAQECEAADBAEGAxgBIQIAAaUB/wIAAa8B/wIAAasB/wPcAf8D2AH/A9QB/wPSAf8BAAGc - AYEB/wEAAYwBAAH/AQABugGNAf8BlQHSAbIB/wEAAboBjQH/AQABjAEAAf8BUAFSAVABpAH8Af4B/AH/ - AcwBzgHMAf8BnAIAAf8BnAIAAf8BnAIAAf8BnAIAAf8BzAHOAcwB/wHMAc4BzAH/AcwBzgHMAf8BzAHO - AcwB/wGcAgAB/wGcAgAB/wGcAgAB/wGcAgAB/wHMAc4BzAH/AZwBmgGcAf8DIAEuA2UB9AHEAcYBygH/ - AcABxgHMAf8CAAGsAf8D/QH/A/sB/wP4Af8D9AH/A+0B/wPVAf8D6Q3/AyQBNhAAAwoBDgMaASUDHAEo - AzcBWgNQAZ8DTwGbAxUBHRQAAyABLgNlAfQBxAHGAcoB/wHAAcYBzAH/AgABrAH/A/0B/wP7Af8D+AH/ - A/QB/wMAAf8BAAG6AYsB/wEAAboBhwX/AQABuQGHAf8BAAG8AY8B/wFBAWoBQQH5AfwB/gH8Af8BzAHO - AcwB/wH8Af4BAAH/AfwCAAH/AfwCAAH/AZwCAAH/AcwBzgHMAf8BzAHOAcwB/wHMAc4BzAH/AcwBzgHM - Af8B/AH+AQAB/wH8AgAB/wH8AgAB/wGcAgAB/wHMAc4BzAH/AZwBmgGcAf8DBAEGAzoBYAIAAbMB/wEA - AY8BvwH/AgABrgH/A/oB/wP6Af8D9gH/A/MB/wPuAf8D8wH/A8oB/wPmAf8D+wH/A/wB/wMkATYMAAMe - ASsDUwGtA1cBvwNUAa8DPwFvAxwBJwM8AWcDUgGpAxYBHhAAAwQBBgM6AWACAAGzAf8BAAGPAb8B/wIA - Aa4B/wP6Af8D+gH/A/YB/wPzAf8DAAH/AZwB1AG2Df8BlQHSAbIB/wMAAf8B/AH+AfwB/wHMAc4BzAH/ - AfwB/gEAAf8B/AIAAf8B/AIAAf8BnAIAAf8BzAHOAcwB/wHMAc4BzAH/AcwBzgHMAf8BzAHOAcwB/wH8 - Af4BAAH/AfwCAAH/AfwCAAH/AZwCAAH/AcwBzgHMAf8BnAGaAZwB/wMgAS4DZQH0AcQBxgHKAf8BwAHG - AcwB/wIAAa4B/wP6Af8D+gH/A/gB/wP0Af8D8QH/A/sB/wPyAf8DygH/A+YB/wP8Af8DJAE2DAADMQFP - AygBPQMdASoDKAE9A0ABcANSAagDGwEmAzsBZANOAZkDBAEGDAADIAEuA2UB9AHEAcYBygH/AcABxgHM - Af8CAAGuAf8D+gH/A/oB/wP4Af8D9AH/AQABigEAAf8BkAHTAbEB/wGSAdYBsQX/AQABvAGMAf8BAAG8 - AY8B/wFBAWoBQQH5AfwB/gH8Af8BzAHOAcwB/wH8Af4BAAH/AfwCAAH/AfwCAAH/AZwCAAH/AcwBzgHM - Af8BzAHOAcwB/wHMAc4BzAH/AcwBzgHMAf8B/AH+AQAB/wH8AgAB/wH8AgAB/wGcAgAB/wHMAc4BzAH/ - AZwBmgGcAf8DBAEGAzoBYAIAAbMB/wEAAZIBwQH/AgABrwH/A/kB/wP5Af8D+QH/A/YB/wPzAf8D+gH/ - A/oB/wPyAf8DyQH/A+gB/wMkATYIAAMGAQgDNgFZA08BmwNVAbEDTwGbAzYBWQMvAUkDUQGiAxoBJQNM - AZEDLAFEDAADBAEGAzoBYAIAAbMB/wEAAZIBwQH/AgABrwH/A/kB/wP5Af8D+QH/A/YB/wGiAcEBrQH/ - AQABqwGBAf8BlQHUAbQB/wG6AeYB0AH/AQABuwGPAf8BAAGPAQAB/wFQAVIBUAGkAfwB/gH8Af8BzAHO - AcwB/wH8Af4BAAH/AfwCAAH/AfwCAAH/AZwCAAH/AZwCAAH/AZwCAAH/AZwCAAH/AZwCAAH/AZwCAAH/ - AfwCAAH/AfwCAAH/AZwCAAH/AcwBzgHMAf8BnAGaAZwB/wMgAS4DZQH0AcQBxgHKAf8BwAHGAc0B/wIA - AbEB/wP6Af8D+QH/A/gB/wP3Af8D9gH/A/oB/wP6Af8D+gH/A/IB/wPRAf8DJgE4CAADIQEwA08BnAMt - AUYDHQEqAy0BRgNPAZwDNQFWAzwBaAM7AWQDMQFPA0gBhAMAAQEIAAMgAS4DZQH0AcQBxgHKAf8BwAHG - Ac0B/wIAAbEB/wP6Af8D+QH/A/gB/wP3Af8D9gH/AawByAG2Af8BAAGZAQAB/wEAAY4BAAH/AQABigEA - Af8BggGmAY8B/wMmATgB/AH+AfwB/wHMAc4BzAH/AfwB/gEAAf8B/AIAAf8B/AIAAf8BnAIAAf8B/AH+ - AQAB/wH8AgAB/wH8AgAB/wH8AgAB/wH8AgAB/wH8AgAB/wH8AgAB/wGcAgAB/wHMAc4BzAH/AZwBmgGc - Af8DBAEGAzoBYAIAAbUB/wEAAZQBwgH/AgABsgH/A/oB/wP4Af8B4AGfAQAB/wHdAZ0BAAH/AdwBmgEA - Af8B2gGZAQAB/wHZAZgBAAH/AdQBkwEAAf8D6gH/A+wB/wMkATYIAAMyAVEDKwFDAzwBZgNSAakDPAFm - AysBQwNLAZADJQE3A04BmAMYASIDTwGcAwcBCQgAAwQBBgM6AWACAAG1Af8BAAGUAcIB/wIAAbIB/wP6 - Af8D+AH/AeABnwEAAf8B3QGdAQAB/wHcAZoBAAH/AdoBmQEAAf8B2QGYAQAB/wHUAZMBAAH/A+oB/wPs - Af8DJAE2AfwB/gH8Af8BzAHOAcwB/wH8Af4BAAH/AfwCAAH/AfwCAAH/AZwCAAH/AfwB/gEAAf8B/AIA - Af8B/AIAAf8B/AIAAf8B/AIAAf8B/AIAAf8B/AIAAf8BnAIAAf8BzAHOAcwB/wGcAZoBnAH/AyABLgNl - AfQBxAHGAcoB/wHAAccBzQH/AgABsgH/A/sB/wP6Af8D+AH/A/gB/wP4Af8D9wH/A/MB/wPyAf8D8AH/ - A2UB9AMjATMIAAMwAUwDHAEnA1EBogMaASQDUAGkAxoBJQNRAaIDGwEmA1EBoQMaASUDUQGiAwoBDggA + Af8CAAGAAf8CAAGAAf8CWAFiAe8BnAGaAZwB/wGcAZoBnAH/AZwBmgGcAf8BnAGaAZwB/wGcAZoBnAH/ + AZwBmgGcAf8BnAGaAZwB/wGcAZoBnAH/AZwBmgGcAf8BnAGaAZwB/wGcAZoBnAH/AZwBmgGcAf8BnAGa + AZwB/wGcAZoBnAH/AZwBmgGcAf8BnAGaAZwB/wgAAykBPwJGAUcBgQM7AWQDJAE2AyQBNgMkATYDJAE2 + AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AxcBIAwAAwMBBAMIAQsDDgETAxIBGAMSARkDEAEWAwsBDwMG + AQgDAQECGAADKQE/AkYBRwGBAzsBZAMkATYDJAE2AyQBNgMkATYDJAE2AVEBUgFRAaEBQgFZAUIB9QMA + Af8BQgFZAUIB9QFRAVIBUQGhAxcBIAH8Af4B/AH/AcwBzgHMAf8BzAHOAcwB/wHMAc4BzAH/AcwBzgHM + Af8BzAHOAcwB/wHMAc4BzAH/AcwBzgHMAf8BzAHOAcwB/wHMAc4BzAH/AcwBzgHMAf8BzAHOAcwB/wHM + Ac4BzAH/AcwBzgHMAf8BzAHOAcwB/wGcAZoBnAH/AwQBBgMYASECAAGlAf8CAAGvAf8CAAGrAf8D3AH/ + A9gB/wPUAf8D0gH/A9EB/wPTAf8D0QH/A8sB/wPNAf8DxwH/AyQBNgwAAwMBBAMIAQsDFAEcAzsBZQNE + AXoDLgFHAw0BEQMGAQgDAQECEAADBAEGAxgBIQIAAaUB/wIAAa8B/wIAAasB/wPcAf8D2AH/A9QB/wPS + Af8BAAGcAYEB/wEAAYwBAAH/AQABugGNAf8BlQHSAbIB/wEAAboBjQH/AQABjAEAAf8BUAFSAVABpAH8 + Af4B/AH/AcwBzgHMAf8BnAIAAf8BnAIAAf8BnAIAAf8BnAIAAf8BzAHOAcwB/wHMAc4BzAH/AcwBzgHM + Af8BzAHOAcwB/wGcAgAB/wGcAgAB/wGcAgAB/wGcAgAB/wHMAc4BzAH/AZwBmgGcAf8DIAEuA2UB9AHE + AcYBygH/AcABxgHMAf8CAAGsAf8D/QH/A/sB/wP4Af8D9AH/A+0B/wPVAf8D6Q3/AyQBNhAAAwoBDgMa + ASUDHAEoAzcBWgNQAZ8DTwGbAxUBHRQAAyABLgNlAfQBxAHGAcoB/wHAAcYBzAH/AgABrAH/A/0B/wP7 + Af8D+AH/A/QB/wMAAf8BAAG6AYsB/wEAAboBhwX/AQABuQGHAf8BAAG8AY8B/wFBAWoBQQH5AfwB/gH8 + Af8BzAHOAcwB/wH8Af4BAAH/AfwCAAH/AfwCAAH/AZwCAAH/AcwBzgHMAf8BzAHOAcwB/wHMAc4BzAH/ + AcwBzgHMAf8B/AH+AQAB/wH8AgAB/wH8AgAB/wGcAgAB/wHMAc4BzAH/AZwBmgGcAf8DBAEGAzoBYAIA + AbMB/wEAAY8BvwH/AgABrgH/A/oB/wP6Af8D9gH/A/MB/wPuAf8D8wH/A8oB/wPmAf8D+wH/A/wB/wMk + ATYMAAMeASsDUwGtA1cBvwNUAa8DPwFvAxwBJwM8AWcDUgGpAxYBHhAAAwQBBgM6AWACAAGzAf8BAAGP + Ab8B/wIAAa4B/wP6Af8D+gH/A/YB/wPzAf8DAAH/AZwB1AG2Df8BlQHSAbIB/wMAAf8B/AH+AfwB/wHM + Ac4BzAH/AfwB/gEAAf8B/AIAAf8B/AIAAf8BnAIAAf8BzAHOAcwB/wHMAc4BzAH/AcwBzgHMAf8BzAHO + AcwB/wH8Af4BAAH/AfwCAAH/AfwCAAH/AZwCAAH/AcwBzgHMAf8BnAGaAZwB/wMgAS4DZQH0AcQBxgHK + Af8BwAHGAcwB/wIAAa4B/wP6Af8D+gH/A/gB/wP0Af8D8QH/A/sB/wPyAf8DygH/A+YB/wP8Af8DJAE2 + DAADMQFPAygBPQMdASoDKAE9A0ABcANSAagDGwEmAzsBZANOAZkDBAEGDAADIAEuA2UB9AHEAcYBygH/ + AcABxgHMAf8CAAGuAf8D+gH/A/oB/wP4Af8D9AH/AQABigEAAf8BkAHTAbEB/wGSAdYBsQX/AQABvAGM + Af8BAAG8AY8B/wFBAWoBQQH5AfwB/gH8Af8BzAHOAcwB/wH8Af4BAAH/AfwCAAH/AfwCAAH/AZwCAAH/ + AcwBzgHMAf8BzAHOAcwB/wHMAc4BzAH/AcwBzgHMAf8B/AH+AQAB/wH8AgAB/wH8AgAB/wGcAgAB/wHM + Ac4BzAH/AZwBmgGcAf8DBAEGAzoBYAIAAbMB/wEAAZIBwQH/AgABrwH/A/kB/wP5Af8D+QH/A/YB/wPz + Af8D+gH/A/oB/wPyAf8DyQH/A+gB/wMkATYIAAMGAQgDNgFZA08BmwNVAbEDTwGbAzYBWQMvAUkDUQGi + AxoBJQNMAZEDLAFEDAADBAEGAzoBYAIAAbMB/wEAAZIBwQH/AgABrwH/A/kB/wP5Af8D+QH/A/YB/wGi + AcEBrQH/AQABqwGBAf8BlQHUAbQB/wG6AeYB0AH/AQABuwGPAf8BAAGPAQAB/wFQAVIBUAGkAfwB/gH8 + Af8BzAHOAcwB/wH8Af4BAAH/AfwCAAH/AfwCAAH/AZwCAAH/AZwCAAH/AZwCAAH/AZwCAAH/AZwCAAH/ + AZwCAAH/AfwCAAH/AfwCAAH/AZwCAAH/AcwBzgHMAf8BnAGaAZwB/wMgAS4DZQH0AcQBxgHKAf8BwAHG + Ac0B/wIAAbEB/wP6Af8D+QH/A/gB/wP3Af8D9gH/A/oB/wP6Af8D+gH/A/IB/wPRAf8DJgE4CAADIQEw + A08BnAMtAUYDHQEqAy0BRgNPAZwDNQFWAzwBaAM7AWQDMQFPA0gBhAMAAQEIAAMgAS4DZQH0AcQBxgHK + Af8BwAHGAc0B/wIAAbEB/wP6Af8D+QH/A/gB/wP3Af8D9gH/AawByAG2Af8BAAGZAQAB/wEAAY4BAAH/ + AQABigEAAf8BggGmAY8B/wMmATgB/AH+AfwB/wHMAc4BzAH/AfwB/gEAAf8B/AIAAf8B/AIAAf8BnAIA + Af8B/AH+AQAB/wH8AgAB/wH8AgAB/wH8AgAB/wH8AgAB/wH8AgAB/wH8AgAB/wGcAgAB/wHMAc4BzAH/ + AZwBmgGcAf8DBAEGAzoBYAIAAbUB/wEAAZQBwgH/AgABsgH/A/oB/wP4Af8B4AGfAQAB/wHdAZ0BAAH/ + AdwBmgEAAf8B2gGZAQAB/wHZAZgBAAH/AdQBkwEAAf8D6gH/A+wB/wMkATYIAAMyAVEDKwFDAzwBZgNS + AakDPAFmAysBQwNLAZADJQE3A04BmAMYASIDTwGcAwcBCQgAAwQBBgM6AWACAAG1Af8BAAGUAcIB/wIA + AbIB/wP6Af8D+AH/AeABnwEAAf8B3QGdAQAB/wHcAZoBAAH/AdoBmQEAAf8B2QGYAQAB/wHUAZMBAAH/ + A+oB/wPsAf8DJAE2AfwB/gH8Af8BzAHOAcwB/wH8Af4BAAH/AfwCAAH/AfwCAAH/AZwCAAH/AfwB/gEA + Af8B/AIAAf8B/AIAAf8B/AIAAf8B/AIAAf8B/AIAAf8B/AIAAf8BnAIAAf8BzAHOAcwB/wGcAZoBnAH/ AyABLgNlAfQBxAHGAcoB/wHAAccBzQH/AgABsgH/A/sB/wP6Af8D+AH/A/gB/wP4Af8D9wH/A/MB/wPy - Af8D8AH/A2UB9AMjATMB/AH+AfwB/wHMAc4BzAH/AfwB/gEAAf8B/AIAAf8B/AIAAf8BnAIAAf8B/AH+ - AQAB/wH8Af4BAAH/AfwB/gEAAf8B/AH+AQAB/wH8Af4BAAH/AfwB/gEAAf8B/AH+AQAB/wH8Af4BAAH/ - AcwBzgHMAf8BnAGaAZwB/wMEAQYDOgFgAQABggG1Af8BAAGWAcMB/wIAAbQB/wP6Af8D+gH/AeABogEA - Af8B4AGgAQAB/wHgAaABAAH/Ad8BngEAAf8B3AGcAQAB/wHcAZsBAAH/A/IB/wOoAf0DJAE2CAADJgE4 - AyMBNANIAYgDKQE/AzoBYQNRAaADOgFhAykBPwNIAYgDIwE0A0sBkAMMARAIAAMEAQYDOgFgAQABggG1 - Af8BAAGWAcMB/wIAAbQB/wP6Af8D+gH/AeABogEAAf8B4AGgAQAB/wHgAaABAAH/Ad8BngEAAf8B3AGc - AQAB/wHcAZsBAAH/A/IB/wOoAf0DJAE2AfwB/gH8Af8BzAHOAcwB/wH8Af4BAAH/AfwCAAH/AfwCAAH/ - AZwCAAH/AZwCAAH/AZwCAAH/AZwCAAH/AZwCAAH/AZwCAAH/AZwCAAH/AZwCAAH/AZwCAAH/AcwBzgHM - Af8BnAGaAZwB/wMgAS4DZQH0AcQBxgHKAf8BwAHHAc0B/wIAAbUB/wP5Af8D+QH/AeEBowEAAf8B6gHA - AaMB/wHqAcABogH/AeoBvwGhAf8B6gG+AaAB/wHfAZ4BAAH/A/QB/wP3Af8DJAE2CAADDgETAzcBWwMw - AUwDSgGKAygBPQMaASUDKAE9A0oBigMwAUwDOAFcAz4BbAMKAQ4IAAMgAS4DZQH0AcQBxgHKAf8BwAHH - Ac0B/wIAAbUB/wP5Af8D+QH/AeEBowEAAf8B6gHAAaMB/wHqAcABogH/AeoBvwGhAf8B6gG+AaAB/wHf - AZ4BAAH/A/QB/wP3Af8DJAE2AfwB/gH8Af8BzAHOAcwB/wH8Af4BAAH/AfwCAAH/AfwCAAH/AfwCAAH/ - AfwCAAH/AfwCAAH/AfwCAAH/AfwCAAH/AfwCAAH/AfwCAAH/AfwCAAH/AZwCAAH/AcwBzgHMAf8BnAGa - AZwB/wMEAQYDOgFgAQABgwG3Af8BAAGZAcQB/wIAAbcB/wP4Af8D+AH/AeEBpQEAAf8B4QGjAQAB/wHh - AaMBAAH/AeABogEAAf8B4AGgAQAB/wHgAaABAAH/A/QB/wP6Af8DJAE2DAADPgFrAygBPAMwAUsDRgGB - A0wBkwNGAYEDMAFLAygBPANIAYYDIwEzAxIBGQgAAwQBBgM6AWABAAGDAbcB/wEAAZkBxAH/AgABtwH/ - A/gB/wP4Af8B4QGlAQAB/wHhAaMBAAH/AeEBowEAAf8B4AGiAQAB/wHgAaABAAH/AeABoAEAAf8D9AH/ - A/oB/wMkATYB/AH+AfwB/wHMAc4BzAH/AfwB/gEAAf8B/AIAAf8B/AIAAf8B/AIAAf8B/AIAAf8B/AIA - Af8B/AIAAf8B/AIAAf8B/AIAAf8B/AIAAf8B/AIAAf8BnAIAAf8BzAHOAcwB/wGcAZoBnAH/AyABLgNl - AfQBxAHHAcoB/wHAAccBzQH/AgABtwH/A/cB/wP3Af8D9wH/A/cB/wP3Af8D9QH/A/UB/wP1Af8D8wH/ - A/oB/wMkATYMAAMXASADRwGDAzUBVwMhATADGAQhATADNQFXA0cBgwMrAUMDLgFIAwUBBwgAAyABLgNl - AfQBxAHHAcoB/wHAAccBzQH/AgABtwH/A/cB/wP3Af8D9wH/A/cB/wP3Af8D9QH/A/UB/wP1Af8D8wH/ - A/oB/wMkATYB/AH+AfwB/wHMAc4BzAH/AfwB/gEAAf8B/AH+AQAB/wH8Af4BAAH/AfwB/gEAAf8B/AH+ - AQAB/wH8Af4BAAH/AfwB/gEAAf8B/AH+AQAB/wH8Af4BAAH/AfwB/gEAAf8B/AH+AQAB/wH8Af4BAAH/ - AcwBzgHMAf8BnAGaAZwB/wMEAQYDOgFgAQABhwG5Af8BAAGaAcUB/wIAAbgB/wP3Af8D9wH/A/cB/wP3 - Af8D9QH/A/QB/wP0Af8D9AH/A/IB/wP7Af8DJAE2EAADGgElAzsBZANHAYIDSwGOA0cBggM7AWQDIQEx - AzABTAMuAUgMAAMEAQYDOgFgAQABhwG5Af8BAAGaAcUB/wIAAbgB/wP3Af8D9wH/A/cB/wP3Af8D9QH/ - A/QB/wP0Af8D9AH/A/IB/wP7Af8DJAE2AfwB/gH8Af8BzAHOAcwB/wHMAc4BzAH/AcwBzgHMAf8BzAHO - AcwB/wHMAc4BzAH/AcwBzgHMAf8BzAHOAcwB/wHMAc4BzAH/AcwBzgHMAf8BzAHOAcwB/wHMAc4BzAH/ - AcwBzgHMAf8BzAHOAcwB/wHMAc4BzAH/AZwBmgGcAf8DIAEuA2UB9AHEAccBygH/AcEBxwHNAf8CAAG4 - Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/AyQBNhMAAQEDGQEjAx0BKQMW - AR4DHQQpAT8DQAFxAzwBZgMDAQQMAAMgAS4DZQH0AcQBxwHKAf8BwQHHAc0B/wIAAbgB/wP8Af8D/AH/ - A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8DJAE2AfwB/gH8Af8B/AH+AfwB/wH8Af4B/AH/ - AfwB/gH8Af8B/AH+AfwB/wH8Af4B/AH/AfwB/gH8Af8B/AH+AfwB/wH8Af4B/AH/AfwB/gH8Af8B/AH+ - AfwB/wH8Af4B/AH/AfwB/gH8Af8B/AH+AfwB/wH8Af4B/AH/AfwB/gH8Af8EAAMuAUgBAAGLAcIB/wIA - Ab4B/wIAAboB/wMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDFwEgFAADAQEC - AyUBNwNAAXADRQF9AzoBYgMfAS0DAQECFAADLgFIAQABiwHCAf8CAAG+Af8CAAG6Af8DJAE2AyQBNgMk - ATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AxcBIAEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEA - AaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEA - AaYC/wEAAaYC/yAAAxwBJwNMAZMCWQFcAcwCWQFcAc8DUAGdAyQBNVAAAwIBAwNcAcwDAAH/AwAB/wMA - Af8DAAH/A10Byh0AAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEA - AaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/xwAAy4BSAJYAWIB7wIA - AdwB/wIAAd8B/wIAAd0B/wIAAdcB/wJHAWoB+QM4AV0YAAMtAUYDXQHSAwAB/wMAAf8DAAH/AwAB/wMA - Af8DXQHXFAADEAEVA5IB/wHVAtMB/wHiAeAB3wH/Ad8B3AHbAf8B4QLfAf8DZQH0HQABpgL/AQABpgL/ - AQABpgL/AQABpgL/AQABsQL/AQABzQL/AbYB4wL/AcUB6QL/AcUB6QL/AcUB6QL/AYoB0wL/AQABvAL/ - AQABpgL/AQABpgL/AQABpgL/AQABpgL/GAADEAEWA18B4AGLAYkB5AH/AccBxgHyAf8B9gH1Af0B/wL3 - Af0B/wHFAcQB8QH/AgAB2wH/AlkBZwHyAygBPAwAAzABSwNcAcwDowH/AcYBxQHEAf8B2QHUAdMB/wHU - Ac8BzgH/AdMBzgHNAf8B0wHOAc0B/wHoAuUB/wMAAf8YAANAAW8DWgG9AcQBwgHBAf8B1AHPAc4B/wNi - AfYDUQGcA10B0gMAAf8DAAH/AwAB/wMAAf8DAAH/A10B1wEAAaYC/wEAAaYC/wEAAawC/wGZAdgK/wHw - AfkC/wHFAekC/wHFAekC/wHiAfQK/wHTAe4C/wEAAbcC/wEAAaYC/wEAAaYC/xgAAzoBYgIAAd4B/wHK - AckB8xH/AcEBvwHvAf8CAAHXAf8CTQFOAZYIAANcAckDswH/A9QB/wHhAt8B/wHFAb8BvQH/Ab0BtQGz - Af8BuQGxAbAB/wG5AbEBrgH/AbcBrwGuAf8B0wHOAc0B/wMAAf8MAANKAY0DXAHMA1wBzANcAcwDYAHe - A54B/wOaAf8DXAH4A4QB/wKHAYYB/wGHAYYBhQH/AaIBoAGfAf8B0wHOAc0B/wHTAc4BzQH/AegC5QH/ - AwAB/wEAAaYC/wEAAaYC/wHTAe4G/wHwAfkC/wEAAc0C/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEA - AbwC/wHTAe4G/wHwAfkC/wEAAbcC/wEAAaYC/xgAAksBTAGPAZABjgHmAf8C5wH5Ef8C6QH6Af8CAAHe - Af8DVQGyCAADogH/A/AB/wPgAf8B1ALSAf8BvgG2AbUB/wG8AbUBtAH/AbsBtAGyAf8BugGyAbEB/wG5 - AbEBrwH/AdQBzwHOAf8DAAH/DAADrgH/AeQC4gH/AdcC1QH/AdUB0wHSAf8B0QHOAc0B/wHKAcQBwwH/ - AcgBwwHCAf8BzQHJAcgB/wHMAsoB/wHMAcoByQH/AdgC1gH/AwAB/wG5AbEBrgH/AbcBrwGuAf8B0wHO - Ac0B/wMAAf8BAAGmAv8BAAHNCv8BAAG8Av8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BAAGm - Av8BAAGsAv8B4gH0Bv8B4gH0Av8BAAGmAv8IAAMeASsBQAE/AUABbgNHAYIDKAE9AkcBSAGDAY8BjQHl - Af8B5AHjAfkR/wHjAeIB+AH/AYABAAHfAf8CVAFWAasIAAOoAf8D6gH/A90B/wHVAdQB0wH/AcABuQG3 - Af8BvgG3AbYB/wG9AbYBtAH/AbsBtAGzAf8BuwGzAbEB/wHUAdABzwH/AwAB/wwAA7QB/wHgAt0B/wGn - AgAB/wGnAgAB/wGnAgAB/wGnAgAB/wGnAgAB/wGnAgAB/wGnAgAB/wGnAgAB/wHaAdUB1AH/AwAB/wG6 - AbIBsQH/AbkBsQGvAf8B1AHPAc4B/wMAAf8BAAGmAv8BtgHjBv8B4gH0Av8BAAGmAv8BAAGmAv8BAAGm - Av8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BigHTCv8BAAGmAv8EAANEAXsDTQH6AgAB1wH/ - AgAB1gH/AkABqAH9AlgBYQHmAW0BaQF/Af4BxAHDAfIB/wL4Af0J/wH8AfsB/gH/AbkBtwHvAf8CAAHa - Af8DQAFxCAADrwH/A+sB/wPdAf8B1wLVAf8BwQG7AbkB/wHAAbkBuAH/Ab4BuAG2Af8BAAGhAQAB/wEA - AZQBAAH/AdYB0QHQAf8DAAH/DAADugH/Ad4C2wH/AbUBgAEAAf8BzgGYAQAB/wHYAa4BkQH/AdkBrwGR - Af8B2QGvAZEB/wHaAa8BkQH/AdYBoAEAAf8BpwIAAf8B1wHTAdEB/wMAAf8BuwG0AbMB/wG7AbMBsQH/ - AdQB0AHPAf8DAAH/AQABpgL/AcUB6Qr/AQABrAL/AQABpgL/AQABpgL/AQABpgL/AQABpgL/AQABpgL/ - AQABpgL/AQABpgL/AacB3gb/AfAB+QL/AQABpgL/AzcBWwIAAdgB/wGVAZIB5gH/AcUBxAHxAf8BzwHO - AfMB/wGYAZYB5QH/AgAB1QH/AgABzAH/AYMBgQHfAf8BvgG9AfAB/wLaAfcB/wLbAfcB/wG6AbkB8AH/ - AYQBgQHjAf8DVgG2AwoBDQgAA7UB/wPsAf8D3gH/AdkC2AH/AcMBvQG7Af8BwgG7AboB/wHBAboBuQH/ - AaAByAGkAf8BAAGpAQAB/wHXAdMB0QH/AwAB/wwAA8AB/wHfAtwB/wG0AgAB/wHLAZUBAAH/Ac0BlwEA - Af8BzwGZAQAB/wHRAZsBAAH/AdIBnAEAAf8B1AGeAQAB/wGnAgAB/wHXAdQB0wH/A4QB/wEAAaEBAAH/ - AQABlAEAAf8B1gHRAdAB/wMAAf8BAAGmAv8BxQHpCv8BpwHeAv8BAAGsAv8BAAGmAv8BAAGmAv8BAAGm - Av8BAAGmAv8BAAGmAv8BAAHHCv8BmQHYAv8BAAGmAv8CWAFaAcABlwGVAecB/wLnAfoN/wGcAZoB5gH/ - AgAB0gH/AgABzAH/AgAB1wH/AgAB3gH/AX8BfQF/Af4BZwFiAWoB+QNRAaADDQESDAADuwH/A+wB/wPf - Af8B2gLZAf8BxgG/Ab4B/wHEAb4BvAH/AcMBvAG7Af8BwQG7AbkB/wHAAbkBuAH/AdcC0wH/A4QB/wwA - A8UB/wHhAd4B3AH/AbMCAAH/AccBkQEAAf8ByQGTAQAB/wHLAZUBAAH/Ac0BlwEAAf8BzwGZAQAB/wHR - AZsBAAH/AacCAAH/AdkB1QHUAf8DiwH/AaAByAGkAf8BAAGpAQAB/wHXAdMB0QH/AwAB/wEAAaYC/wHF - AekO/wHiAfQC/wGKAdMC/wEAAbwC/wEAAbwC/wEAAccC/wHFAekK/wGnAd4C/wEAAaYC/wEAAaYC/wJe - AWUB5QG2AbUB7gH/Av4O/wHKAckB8gH/AgAB2gH/AgAB3QH/AgAB1gH/AgAB0QH/AlkBXQHSAxoBJRQA - A8AB/wPsAf8D4AH/Ad0C3AH/AccBwQHAAf8BkgKRAf8DjwH/A40B/wOKAf8B2QHVAdQB/wOLAf8MAAPK - Af8B4QHfAd4B/wGxAgAB/wHEAY4BAAH/AcYBkAEAAf8ByAGSAQAB/wHKAZQBAAH/AcwBlgEAAf8BzgGY - AQAB/wGnAgAB/wHbAtYB/wORAf8BwQG7AbkB/wHAAbkBuAH/AdcC0wH/A4QB/wEAAaYC/wHFAekG/wHT - Ae4C/wGZAdgC/wHiAfQW/wG2AeMC/wEAAbwC/wEAAaYC/wEAAaYC/wEAAaYC/wJZAV0B0gGzAbEB7gH/ - AvcB/Q3/Ab8BvQHvAf8BvgG9Ae8B/wL3Af4B/wHlAeQB+QH/AYkBhgHhAf8CAAHRAf8DLgFIFAADxgH/ - A+8B/wPhAf8D3QH/AcgBwwHCAf8ByAHCAcEB/wHGAcEBvwH/AcUBvwG+Af8BwwG9AbsB/wHaAdYB1QH/ - A5EB/wwAA84B/wHiAt8B/wGwAgAB/wGxAgAB/wGxAgAB/wGyAgAB/wGzAgAB/wG0AgAB/wG1AYABAAH/ - AacCAAH/AdwB2AHXAf8DmAH/A40B/wOKAf8B2QHVAdQB/wOLAf8BAAGmAv8BxQHpBv8BxQHpAv8BAAGm - Av8BAAGmAv8BAAGsAv8BAAG8Av8BAAG8Av8BAAG3Av8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BAAGm - Av8BAAGmAv8CSAFJAYcBjAGKAeUB/wLPAfUB/wH2AfcB/QH/Av4C/wHYAdcB9gH/AbYBtAHtDf8B2wHa - AfYB/wIAAdsB/wJOAU8BlxQAA8sB/wPpAf8D6QH/AeIC4QH/AcsBxgHEAf8BmAKXAf8BlgKVAf8BlAKT - Af8BkgKRAf8B2wHXAdYB/wOYAf8MAAPTAf8B8QLvAf8B4gLfAf8B4gLfAf8B4QHfAd4B/wHhAd4B3QH/ - AeAB3QHcAf8B3wHcAdsB/wHeAtsB/wHeAdsB2QH/Ae0B7AHrAf8DngH/AcUBvwG+Af8BwwG9AbsB/wHa - AdYB1QH/A5EB/wEAAaYC/wHFAekG/wHFAekC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEA - AaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wMKAQ4CVwFZAcIBiQGGAeMB/wGv - Aa4B7gH/AbIBsQHuAf8BmQGYAecB/wG+Ab0B8A3/AuQB+QH/AgAB4AH/A1ABmhQAAy4BSANhAeQD3wH/ - A+oB/wHPAcoByQH/AcsBxgHFAf8BygHEAcMB/wHIAcMBwQH/AccCwQH/AdwB2QHYAf8DngH/DAADagH5 - A9MB/wPQAf8DzAH/A8gB/wPDAf8DvwH/A7oB/wO1Af8DsAH/A6oB/wOlAf8BlAKTAf8BkgKRAf8B2wHX - AdYB/wOYAf8BAAGmAv8BAAG3Av8BAAG8Av8BAAG3Av8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BAAGm - Av8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8EAAMKAQ0DQwF4AlcBWQHC - AlgBWwHLAl4BZQHlAagBpwHsAf8C4wH5Bf8C9gH9Af8BuQG3Ae8B/wIAAdsB/wM1AVcYAAMLAQ8DVgGr - A9wB/wHmAuMB/wHhAd4B3AH/Ad8C3AH/Ad8B3AHbAf8B3gLbAf8B7gLsAf8DpQH/IAADLgFIA2EB5APf - Af8D6gH/Ac8BygHJAf8BywHGAcUB/wHKAcQBwwH/AcgBwwHBAf8BxwLBAf8B3AHZAdgB/wOeAf8BAAGm - Av8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BAAGm - Av8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8MAAMBAQIEAAMtAUUDWQH1AaIBoAHrAf8BugG4 - AfAB/wGsAaoB7QH/AgAB4QH/A1QBrwMCAQMgAANRAZ8DXwH7A8QB/wPAAf8DuwH/A7YB/wOwAf8DUgGn - JAADCwEPA1YBqwPcAf8B5gLjAf8B4QHeAdwB/wHfAtwB/wHfAdwB2wH/Ad4C2wH/Ae4C7AH/A6UB/wEA + Af8D8AH/A2UB9AMjATMIAAMwAUwDHAEnA1EBogMaASQDUAGkAxoBJQNRAaIDGwEmA1EBoQMaASUDUQGi + AwoBDggAAyABLgNlAfQBxAHGAcoB/wHAAccBzQH/AgABsgH/A/sB/wP6Af8D+AH/A/gB/wP4Af8D9wH/ + A/MB/wPyAf8D8AH/A2UB9AMjATMB/AH+AfwB/wHMAc4BzAH/AfwB/gEAAf8B/AIAAf8B/AIAAf8BnAIA + Af8B/AH+AQAB/wH8Af4BAAH/AfwB/gEAAf8B/AH+AQAB/wH8Af4BAAH/AfwB/gEAAf8B/AH+AQAB/wH8 + Af4BAAH/AcwBzgHMAf8BnAGaAZwB/wMEAQYDOgFgAQABggG1Af8BAAGWAcMB/wIAAbQB/wP6Af8D+gH/ + AeABogEAAf8B4AGgAQAB/wHgAaABAAH/Ad8BngEAAf8B3AGcAQAB/wHcAZsBAAH/A/IB/wOoAf0DJAE2 + CAADJgE4AyMBNANIAYgDKQE/AzoBYQNRAaADOgFhAykBPwNIAYgDIwE0A0sBkAMMARAIAAMEAQYDOgFg + AQABggG1Af8BAAGWAcMB/wIAAbQB/wP6Af8D+gH/AeABogEAAf8B4AGgAQAB/wHgAaABAAH/Ad8BngEA + Af8B3AGcAQAB/wHcAZsBAAH/A/IB/wOoAf0DJAE2AfwB/gH8Af8BzAHOAcwB/wH8Af4BAAH/AfwCAAH/ + AfwCAAH/AZwCAAH/AZwCAAH/AZwCAAH/AZwCAAH/AZwCAAH/AZwCAAH/AZwCAAH/AZwCAAH/AZwCAAH/ + AcwBzgHMAf8BnAGaAZwB/wMgAS4DZQH0AcQBxgHKAf8BwAHHAc0B/wIAAbUB/wP5Af8D+QH/AeEBowEA + Af8B6gHAAaMB/wHqAcABogH/AeoBvwGhAf8B6gG+AaAB/wHfAZ4BAAH/A/QB/wP3Af8DJAE2CAADDgET + AzcBWwMwAUwDSgGKAygBPQMaASUDKAE9A0oBigMwAUwDOAFcAz4BbAMKAQ4IAAMgAS4DZQH0AcQBxgHK + Af8BwAHHAc0B/wIAAbUB/wP5Af8D+QH/AeEBowEAAf8B6gHAAaMB/wHqAcABogH/AeoBvwGhAf8B6gG+ + AaAB/wHfAZ4BAAH/A/QB/wP3Af8DJAE2AfwB/gH8Af8BzAHOAcwB/wH8Af4BAAH/AfwCAAH/AfwCAAH/ + AfwCAAH/AfwCAAH/AfwCAAH/AfwCAAH/AfwCAAH/AfwCAAH/AfwCAAH/AfwCAAH/AZwCAAH/AcwBzgHM + Af8BnAGaAZwB/wMEAQYDOgFgAQABgwG3Af8BAAGZAcQB/wIAAbcB/wP4Af8D+AH/AeEBpQEAAf8B4QGj + AQAB/wHhAaMBAAH/AeABogEAAf8B4AGgAQAB/wHgAaABAAH/A/QB/wP6Af8DJAE2DAADPgFrAygBPAMw + AUsDRgGBA0wBkwNGAYEDMAFLAygBPANIAYYDIwEzAxIBGQgAAwQBBgM6AWABAAGDAbcB/wEAAZkBxAH/ + AgABtwH/A/gB/wP4Af8B4QGlAQAB/wHhAaMBAAH/AeEBowEAAf8B4AGiAQAB/wHgAaABAAH/AeABoAEA + Af8D9AH/A/oB/wMkATYB/AH+AfwB/wHMAc4BzAH/AfwB/gEAAf8B/AIAAf8B/AIAAf8B/AIAAf8B/AIA + Af8B/AIAAf8B/AIAAf8B/AIAAf8B/AIAAf8B/AIAAf8B/AIAAf8BnAIAAf8BzAHOAcwB/wGcAZoBnAH/ + AyABLgNlAfQBxAHHAcoB/wHAAccBzQH/AgABtwH/A/cB/wP3Af8D9wH/A/cB/wP3Af8D9QH/A/UB/wP1 + Af8D8wH/A/oB/wMkATYMAAMXASADRwGDAzUBVwMhATADGAQhATADNQFXA0cBgwMrAUMDLgFIAwUBBwgA + AyABLgNlAfQBxAHHAcoB/wHAAccBzQH/AgABtwH/A/cB/wP3Af8D9wH/A/cB/wP3Af8D9QH/A/UB/wP1 + Af8D8wH/A/oB/wMkATYB/AH+AfwB/wHMAc4BzAH/AfwB/gEAAf8B/AH+AQAB/wH8Af4BAAH/AfwB/gEA + Af8B/AH+AQAB/wH8Af4BAAH/AfwB/gEAAf8B/AH+AQAB/wH8Af4BAAH/AfwB/gEAAf8B/AH+AQAB/wH8 + Af4BAAH/AcwBzgHMAf8BnAGaAZwB/wMEAQYDOgFgAQABhwG5Af8BAAGaAcUB/wIAAbgB/wP3Af8D9wH/ + A/cB/wP3Af8D9QH/A/QB/wP0Af8D9AH/A/IB/wP7Af8DJAE2EAADGgElAzsBZANHAYIDSwGOA0cBggM7 + AWQDIQExAzABTAMuAUgMAAMEAQYDOgFgAQABhwG5Af8BAAGaAcUB/wIAAbgB/wP3Af8D9wH/A/cB/wP3 + Af8D9QH/A/QB/wP0Af8D9AH/A/IB/wP7Af8DJAE2AfwB/gH8Af8BzAHOAcwB/wHMAc4BzAH/AcwBzgHM + Af8BzAHOAcwB/wHMAc4BzAH/AcwBzgHMAf8BzAHOAcwB/wHMAc4BzAH/AcwBzgHMAf8BzAHOAcwB/wHM + Ac4BzAH/AcwBzgHMAf8BzAHOAcwB/wHMAc4BzAH/AZwBmgGcAf8DIAEuA2UB9AHEAccBygH/AcEBxwHN + Af8CAAG4Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/AyQBNhMAAQEDGQEj + Ax0BKQMWAR4DHQQpAT8DQAFxAzwBZgMDAQQMAAMgAS4DZQH0AcQBxwHKAf8BwQHHAc0B/wIAAbgB/wP8 + Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8DJAE2AfwB/gH8Af8B/AH+AfwB/wH8 + Af4B/AH/AfwB/gH8Af8B/AH+AfwB/wH8Af4B/AH/AfwB/gH8Af8B/AH+AfwB/wH8Af4B/AH/AfwB/gH8 + Af8B/AH+AfwB/wH8Af4B/AH/AfwB/gH8Af8B/AH+AfwB/wH8Af4B/AH/AfwB/gH8Af8EAAMuAUgBAAGL + AcIB/wIAAb4B/wIAAboB/wMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDFwEg + FAADAQECAyUBNwNAAXADRQF9AzoBYgMfAS0DAQECFAADLgFIAQABiwHCAf8CAAG+Af8CAAG6Af8DJAE2 + AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AxcBIAEAAaYC/wEAAaYC/wEAAaYC/wEA AaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEA - AaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/xgAAyUBNwNTAaoCWwFeAdkCWgFdAcoDRAF5 - AwcBCnAAA1EBnwNfAfsDxAH/A8AB/wO7Af8DtgH/A7AB/wNSAadAAAHkAfwB2QH/AfYB/wHqAf8DAAH/ - AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AfEB/wH3Af8B5QH7AekB/wHtAf8B8wH/AfYB/wH5Af8B7wH2 - AfEC/wH+Av8B+QH1AfoB/8AAAfYB/wHwAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA - Af8B6wH9AfAB/wHzAf8B+QH/Ae4B+QHxAf8B+wH/Af4C/wH9A/8B/QL/EAADGQEjA0UBfQFaAV8BWgHb - AUwBXwFMAfMBTAFfAUwB8wFaAV8BWgHbA0UBfQMZASMgAAMZASMDRQF9AloBXwHbAUwBUgFfAfMCTAFf - AfMCWgFfAdsDRQF9AxkBIxgAAw0BEgNCAXQDVwG/A1kB7AMrAfwDKwH8AwAB/wNZAdcDQwF4FwAB/wMA - Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8B8wH8AfkB/wHvAfQB8wH/Af4B/QP/ - AfgD/wH7Av8MAAMzAVMBWAFhAVgB5gEAAZkBAAH/AQABwgGPAf8BlgHQAaYB/wGWAc8BpgH/AQABvgGJ - Af8BAAGNAQAB/wFYAWEBWAHmAzMBUxgAAzMBUwJYAWEB5gIAAcwB/wIAAegB/wGPAZIB7gH/AY8BkgHu - Af8CAAHkAf8CAAHBAf8CWAFhAeYDMwFTEAADKAE8A1MBrQMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA - Af8DXgHaFwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAL/Af4D/wH9 - Av8B+QHvAfUC/wH7Av8IAAMzAVMBUgFlAV0B9AEAAbQBAAH/AagB2wG1Af8BhwHMAZgB/wEAAbwBAAH/ - AQABugEAAf8BhgHLAZgB/wGlAdkBtAH/AQABqgEAAf8BUgFlAVIB9AMzAVMQAAMzAVMCUgFlAfQCAAHg - Af8BoQGmAfUB/wEAAYYB7wH/AgAB6QH/AgAB5wH/AQABhAHuAf8BngGgAfQB/wIAAdcB/wJSAWUB9AMz - AVMMAANaAcoDAAH/AwAB/wMAAf8DAAH/AY0CAAH/AZECAAH/AY0CAAH/AwAB/wNaAcoDLQFFA0cBgQNX - AbgDVAGsBwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AfwC+gL/ - Af4C/wH8AfEB8wL/AfwB/gH/BAADGAEiAV4CZQHlAQABuQEAAf8BqAHbAbIB/wEAAbwBAAH/AQABugEA - Af8BAAG4AQAB/wEAAbUBAAH/AQABtQEAAf8BAAG3AQAB/wGlAdkBswH/AQABqgEAAf8BXgFlAV4B5QMY - ASIIAAMYASICXgFlAeUCAAHjAf8BoQGsAfUB/wIAAewB/wIAAeoB/wIAAekB/wIAAeYB/wIAAeYB/wIA - AeYB/wGeAaIB9AH/AgAB1gH/Al4BZQHlAxgBIggAAV0CWQHXAwAB/wGLAgAB/wGhAgAB/wG8AZMBAAH/ - AbcCAAH/AbYCAAH/AbgCAAH/A0AB/QJdAVsB0gNaAcUDXgHdA18B8wNkAewHAAH/AwAB/wMAAf8DAAH/ - AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wGFAocF/wH1AfAB8QL/Af4D/wL4Af8EAANGAX4BAAGr - AQAB/wGqAd0BtAH/AQABwQEAAf8BAAG+AQAB/wEAAbwBAAn/AQABuAEAAf8BAAG1AQAB/wEAAbcBAAH/ - AaYB2gG0Af8BAAGPAQAB/wFFAUYBRQF+CAADRgF+AgAB2wH/AaIBqwH2Af8CAAHwAf8CAAHuAf8CAAHp - Af8CAAHpAf8CAAHpAf8CAAHpAf8CAAHmAf8CAAHmAf8BnwGjAfUB/wIAAcQB/wFFAkYBfggAA1ABnQGW - AgAB/wHAAYIBAAH/AcYBzwHJAf8BvwHwAv8BzQHMAb8B/wGjAgAB/wMAAf8DKwH8AbcBsQGcAf8BywHa - AcMF/wHnAuMB/wN/Af4HAAH/AwAD/wH8Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA - Af8B9AH5AfoB/wH2AfgB+QL/AfwB/gL/Af4C/wQAA18B2wGKAcwBmAH/AYkB0wGWAf8BAAHGAQAB/wEA - AcEBAAH/AQABqwEACf8BAAG4AQAB/wEAAbgBAAH/AQABuQEAAf8BhQHMAZcB/wEAAb4BjQH/AVoBXwFa - AdsIAAFeAl8B2wGBAYwB7gH/AQABkQH3Af8CAAHzAf8CAAHpAf8CAAHpAf8CAAHpAf8CAAHpAf8CAAHp - Af8CAAHpAf8CAAHpAf8BAAGDAfAB/wIAAeIB/wJaAV8B2wgAAxgBIQJKAUkBiQJlAVIB9AEAAakBwgH/ - AQABpAHPAf8BqgHgAf4B/wGaAY8BAAH/AZcBgAEAAf8BzAGuAYoB/wMAAf8BAAGaAQAB/wG9AeIBxgH/ - AdcB0wHPAf8DYgHvBwAB/wMAAf8B+AH6Ae4B/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ - AwAB/wGZAaEBsgH/AfQB+wL/AeUB6QH7Af8B+AH7Av8EAANiAfYBqQHdAbMB/wEAAc8BigH/AQABzAGB - Gf8BAAG4AQAB/wEAAb4BAAH/AZwB1AGrAf8BSAFiAUgB9ggAAV8CYgH2AaEBqwH3Af8BAAGGAfgB/wEA - AYIB9hn/AgAB6QH/AgAB6gH/AZYBnAHxAf8BSAFJAWIB9gwAAwoBDgFaAlwBzQEAAb8B4gH/AQABtgHa - Af8BAAGpAdAB/wNcAfgBtAGXAQAB/wGQAgAB/wMAAf8BAAGIAQAB/wEAAcIBlAH/AboBwQGzAf8DXQHw - BwAB/wMAAf8DAAP/AfEB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8BmAGkAc4B/wIAAYIB/wHo - AfIC/wHmAe4C/wHrAfEC/wQAA2IB9gG2AeIBvgH/AYsB1QGXAf8BAAHJAYYZ/wEAAbgBAAH/AQABwQEA - Af8BnQHUAaoB/wFIAWIBSAH2CAADYgH2Aa8BuQH5Af8BAAGTAfoB/wEAAYUB8Bn/AgAB6QH/AgAB7gH/ - AZYBnQHxAf8BSAFJAWIB9gwAAxQBGwNNAfoBnAHYAfQB/wGNAc8B7QH/AQABowHGAf8DKwH8AaABhwEA - Af8BpAIAAf8DAAH/AQABtgG5Af8BjAHZAeIB/wG3AcABugH/A10B8AQAAeIB8wHqAf8DAAH/AwAB/wMA - Af8B7QHzAeID/wH3Af8DAAH/AwAB/wMAAf8DAAH/AdIB3gL/AgABswH/AwAB/wGZAaYB9QH/AdwB6AL/ - AdwB6AL/BAADXwHbAawB3QG2Af8BpgHfAa8B/wGBAcsBjAH/AQAByQGGAf8BAAG9AQAJ/wEAAawBAAH/ - AQABvAEAAf8BAAG6AQAB/wGLAdEBmQH/AYABxQGSAf8BWgFfAVoB2wgAA18B2wGlAa8B9QH/AZ0BqwH6 - Af8BAAGMAfAB/wIAAewB/wIAAewB/wIAAewB/wIAAewB/wIAAewB/wIAAewB/wIAAfIB/wGBAY4B9AH/ - AgAB6QH/AloBXwHbDAADFQEdAWcCagH5AbsB6gH+Af8BpQHTAekB/wIAAY0B/wMAAf8BjgGJAQAB/wHS - AaQBAAH/Aa8BhgEAAf8BlgGyAa0B/wHbAfcC/wHQAdEBzAH/A2IB7wQAAfED/wHsAfkB+wH/AwAB/wMA - Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wHJAdAC/wGqAbMC/wIAAY4B/wIAAYcB/wIAAdgB/wGpAbcC/wHR - Ad8C/wQAA0YBfgGFAccBlwH/AdIB7gHXAf8BlQHZAaAB/wGKAdMBlAH/AQAByAGJCf8BAAHNAYUB/wEA - AcMBAAH/AQABxwEAAf8BrAHfAbUB/wEAAZ4BAAH/AUUCRgF+CAADRgF+AQABgwHqAf8BzQHUAfwB/wGL - AZ0B+gH/AQABkwH3Af8BAAGKAe4B/wEAAYQB9gH/AQABhAH2Af8BAAGEAfYB/wEAAYQB9gH/AgAB8wH/ - AaQBrwH4Af8CAAHQAf8BRQJGAX4MAAMWAR8BQAGQAagB/QEAAZkBsgH/AQABhAGbAf8CAAGBAf8DAAH/ - AZoBngGdAf8B+AHmAc8B/wHcAcEBogH/AdMBxQGyAf8B8wHuAeMB/wHMAcUBtwH/AaUBmwGKAf8EAAHx - AfwC/wHhAesB9QH/AfgD/wH5Af4B/QH/AwAB/wMAAf8DAAH/AgABjwH/AwAB/wMAAf8CAAGUAf8CAAHW - Af8CAAG1Af8CAAH9Af8CAAGxAf8CAAGYAf8EAAMYASIDZQHlAaoB2gG3Af8B2AHxAdwB/wGSAdgBnQH/ - AYgBzQGTAf8BhAHMAY4B/wGLAdQBlgH/AYoB1AGVAf8BgwHSAY4B/wGvAeABtwH/AQABuQEAAf8BXgFl - AV4B5QMYASIIAAMYASIDZQHlAaMBpwHzAf8B1AHbAf0B/wGHAZoB+gH/AQABkQHwAf8BAAGOAfEB/wEA - AZQB+AH/AQABkgH5Af8BAAGMAfgB/wGoAbYB+AH/AgAB4wH/Al4BZQHlAxgBIgwAAxQBGwNhAe4BAAGJ - AZ8B/wIAAZIB/wEAAYQBnAH/A0AB/QNZAfUDZwHyA2EB4gNeAdkDXQHSA1sBywNYAcEEAAHvAfMC/wH4 - AfsC/wH4AfoD/wH+Bv8DAAH/AfoB9wL/AegB5gL/AYYBiQHUAf8CAAGLAf8CAAGGAf8CAAH2Af8CAAL/ - AgAC/wIAAbUB/wIAAa8B/wgAAzMBUwNlAfQBrwHcAbsB/wHcAfIB4AH/AbYB5AG9Af8BmwHbAaUB/wGW - AdkBoAH/AaUB3wGvAf8BwAHoAcUB/wEAAcIBigH/AVIBZQFfAfQDMwFTEAADMwFTA2UB9AGqAa0B8gH/ - AdgB3AH9Af8BrgG6AfoB/wGRAaMB+gH/AYsBnQH6Af8BnAGpAfsB/wG6AccB/AH/AgAB6QH/AlIBZQH0 - AzMBUxAAAwMBBAM3AVoDXAHPAQABjgGhAf8BXgJlAeUBVgJYAbwDVwG4A1YBtgNKAY0DQgF1AzsBZAMz - AVIDKgFABAAC8AL/AusB9wL/Af4D/wH9AfkC/wH9AfUB/wMAAf8B/QH6Av8B9AHzAv8B6AHqAv8BjwGX - AfUB/wIAAZUB/wIAAeoB/wEAAYUC/wIAAv8BAAGQAv8BoAHAAv8MAAMzAVMDYQHmAZQBzgGkAf8BwwHm - AcsB/wHPAesB1AH/AckB6QHOAf8BrwHdAbgB/wEAAbkBAAH/AVkCYQHmAzMBUxgAAzMBUwNhAeYBjgGT - Ae0B/wG+AcMB+AH/AcwB0wH5Af8BxAHLAfkB/wGqAbQB9AH/AgAB4gH/AVgCYQHmAzMBU0wAAf8B/AP/ - Af4E/wH5Af8B+AH1AeYD/wHxAf8B+gH3AekB/wMAAf8B9QH3Av8B3QHjAv8BsQG9Av8CAAGcAf8CAAGQ - Af8CAAHcAf8CAAHmAf8CAAGBAf8BvAHjAv8QAAMZASMDRQF9A18B2wNfAfMDXwHzA18B2wNFAX0DGQEj - IAADGQEjA0UBfQNfAdsDXwHzA18B8wFeAl8B2wNFAX0DGQEjUAAB+gH2AfsB/wH2AfIB8QP/AfUD/wHw - A/8B6QP/AewD/wH7Af8DAAH/AwAB/wMAAf8DAAH/AgABrQH/AgAB5gH/AgABsAH/AgABkgH/AYkBtgL/ - lAADIgEyA1oB2wNVAeoDWQHrA1oB2wMbASYUAAj/Af4B/wH9Af8B3QHgAfEB/wH+Af8B/RX/Af4D/wP+ - Af8B5wHqAfUB/wH8Av4J/wcAAQEDBQEHAwsBDwMQARYDEwEaAxIBGQMQARUDDAEQAwgBCwMEAQUDAQEC - UwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A8kB/wOpAf8DjgH/A4MB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ - AwAJ/wHyAfQB+wH/AgABmwH/AvoB/hH/Af4D/wH7AfkB+wH/ArEB3AH/AgABrgH/AfYB9wH6Cf8EAAMB - AQIDCgEOAxYBHgNDAXcCWQFcAcwDRAF5Ax0BKgMXASADEAEVAwcBCgMCAQMcAAMuAUgCWQFcAc8CWwFe - AdkDSgGNAyoBQAMDAQQcAAPRAf8DggH/A4IB/wOCAf8DggH/A4IB/wMAAf8D1gH/A4UB/wMAAf8DbQH3 - A44B/wOCAf8DggH/A4IB/wOCCf8B0AHUAecB/wIAAYwB/wHtAfEB9RH/AvkB/AH/AskB5gH/AgABqwH/ - AYwBmQHPAv8B/gH8Cf8QAAJZAVwBzANqAfkCWQFcAcwoAAMeASsCVgFYAbsBFAE0AX8B/gIAAv8BAAGm - AfMB/wEAAZ0B7wH/AgAB2AH/AlQBYQHuAlEBUgGnAzcBWwMNARIvAAH/AwAB/xwACP8BqAGvAdUB/wIA - AZQB/wHKAc4B5QX/A/4B/wL9AfwB/wH4AfkB+wH/AtkB7AH/AgABtgH/AgABqQH/AdkB3wHuDf8QAAJZ - AVwBzAEAAbEB4wH/AlkBXAHMKAADVQGyAgAC/wIAAv8BAAGWAv8BAAGaAfQB/wEAAaEB9AH/AQABqQHz - Af8BAAG0AfIB/wEAAbcB8AH/AQABhQHcAf8BMgJfAfsCVgFYAcEDQgF1AxEBFwsAAf8DAAH/AwAB/wMA - Af8DAAH/AwAB/wOCAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/BAAG/wH+Af8BAAGFAb0B/wIA - AbAB/wGcAaIByQH/A/AB/wLqAesB/wHlAecB6QH/AdcB2QHmAf8CAAG6Af8CAAGyAf8CAAHDAf8C/AH7 - Af8D/gn/EAADWwHIAQABrwHhAf8DWwHIA1sByANUAa8DOwFjAzABSxgAAlYBWAG7AgAC/wEAAYQC/wEA - AbUB+QH/AQABqAHyAf8BAAGZAfcB/wEAAZ0B9AH/AQABowHyAf8BAAGnAe8B/wEAAacB7AH/AaQB7gH3 - Af8BAAGsAfEB/wEAAYgB4AH/A0sBjgcAAf8DowH/AeMB6AHqAf8B4wHoAeoB/wHjAegB6gH/AeMB6AHq - Af8B4wHoAeoB/wPOAf8DAAH/AeMB6AHqAf8B4wHoAeoB/wHjAegB6gH/AeMB6AHqAf8B1gHdAeAB/wGF - AY4BkQH/AwAB/wP+Af8B/gL9Af8CAAGnAf8CAAGMAf8CAAGlAf8B0gHZAd8B/wHdAdsB5gH/AdYB1QHh - Af8BhgGNAcAB/wIAAbAB/wIAAbEB/wG8AcUB6RH/EAACVwFZAb8BAAGtAd8B/wJXAVkBvwNcAfgCVwFZ - Ab8DXwHgAlcBWQG/AlcBWQG/ATkCOgFgEAACVgFYAcEBjgG2AfsB/wHXAeYB7QH/AcQB2AHtAf8BhQHH - AeUB/wGrAdwB5gH/AaMB2wHrAf8BAAHCAe8B/wEAAa8B7wH/AQABlgHrAf8BmgHiAfMB/wEAAZoB9AH/ - AQABnwHwAf8DUAGdBwAJ/wMABf8DAAX/AwAB/wP4Af8DmwX/A8cJ/wHWAd0B4AH/AwAF/wH1AfkB/AH/ - AgABhAH/AwAB/wIAAYUB/wIAAYcB/wIAAZUB/wIAAaUB/wIAAaUB/wIAAbUB/wIAAc4B/wH0AfEB9BH/ - EAADVQG1AQABrAHdAf8DVQG1AQABrAHdAf8DVQG1AQABrAHdAf8DVQG1A2IB9gNVAbUQAANbAcgBvQHI - AfQB/wEAAYMB/QH/AQABgwL/AQABhgHtAf8BAAGFAeoB/wEAAbEB5gH/AbIB4AHuAf8BhwHRAe0B/wGh - AeIB7gH/AcIB8wHxAf8BAAHEAfcB/wEAAbAB9wH/AlIBUwGoBwAZ/wP8Af8D/BX/AeMB6AHqAf8DAAH/ - Af4B/wH9Af8BugHdAd8B/wIAAaAB/wIAAZgB/wEAAYMBlwH/AwAB/wIAAYcB/wIAAagB/wIAAb4B/wIA - AcYB/wLoAfQB/wLyAfER/wQAAT8CQAFvAlQBVgGrATQCNQRVAbIBgQG0AeQB/wEAAZoBzQH/AQABrAHd - Af8BWQJgAesBgQG0AeQB/wFbAmAB1gEAAaIB1AH/AlQBVgGrEAACXAFeAc4CAAL/AQABgQL/AQABjwL/ - AgAB8wH/AQABggHwAf8BAAGvAecB/wGDAckB8AH/AQABjAHyAf8BAAGNAe8B/wEAAY8B7AH/AQABqAHq - Af8BAAHYAe4B/wNVAbIHAAX/AZYCAAH/AZUCAAH/AYcCAAH/AwAB/wMABf8DmQH/A5sB/wPtAf8Dxwn/ - AeMB6AHqAf8DAAH/Av4B/AH/AfQB+AH+Af8CAAGXAf8CAAGjAf8BAAGGAagB/wIAAZ8B/wIAAbQB/wIA - AdkB/wIAAcYB/wIAAasB/wHQAdEB4gH/AfQC9hH/BAABUgJUAaYBmQHMAfYB/wFVAlYBsQNWAbMBlAHH - AfIB/wGNAcAB7gH/AZQBxwHyAf8BjQHAAe4B/wGUAccB8gH/AY0BwAHuAf8BlAHHAfIB/wFSAlQBphAA - AloBXgHVAgAC/wEAAYwC/wGAAbkB+gH/AQABkwHvAf8CAAH0Af8BAAGjAegB/wEAAcIB8gH/AQABgwH3 - Af8BAAGHAfMB/wEAAYUB7gH/AQABgAHqAf8CAAHpAf8CVwFaAb0HAAX/AYMCAAH/AdIBuAGdAf8BgQIA - Af8DAAH/AY0CAB3/AeMB6AHqAf8DAAH/Af4B/wH9Af8B+QL9Af8CAAGmAf8CAAGuAf8BAAGTAbgB/wGg - AdwB2AH/AaEBywHfAf8CAAHoAf8CAAHsAf8CAAGuAf8CAAGoAf8C4gHwAf8B/QH/Af0N/wQAAVECUgGh - AZkBzAH2Af8BlgHJAfQB/wJXAVoBvQGXAcoB9QH/AZEBxAHwAf8BjQHAAewB/wGIAbsB6QH/AYcBugHo - Af8BiQG8AekB/wGQAcMB7wH/AVECUgGhEAACWgFfAtsB4wH7Af8B9QH3AfUB/wG2Ac4B9wH/AYYBsQHj - Af8BqAHMAeEB/wG/Ad8B4gH/AbYB3gHnAf8BhgHGAe0B/wEAAaMB7wH/AQABhwHvAf8CAAHsAf8CAAHp - Af8DWwHIBwAF/wP6Af8BrgGQAQAB/wIAAcEB/wMAAf8B0wHWAdcF/wOtBf8DmwH/A60J/wHjAegB6gH/ - AwAB/wH+Af8B/QH/AfgB+gH9Af8CAAGuAf8CAAHDAf8CAAG6Af8B8wHxAfIB/wHsAeoB7AH/AdIB1AHt - Af8BAAGCAeUB/wIAAeUB/wIAAbUB/wIAAbcB/wH3AfYB/Q3/BAABKwIsAUMDUgGpAZoBzQH2Af8BhQG4 - AeUB/wGUAccB8wH/AZMBxgHyAf8BiwG+AesB/wGEAbcB5AH/AYIBtQHjAf8BhQG4AeUB/wGOAcEB7AH/ - AU8CUQGcEAACXQFhAeIBAAGaAf0B/wIAAf4B/wIAAv8CAAHxAf8CAAHvAf8CAAHtAf8CAAHoAf8CAAHk - Af8BAAGlAeUB/wHFAeMB6AH/AaQB0gHmAf8BqgHbAegB/wJaAV0B0wcABf8D8wH/AcwB3wHuAf8B5gHu - AfQB/wMAAf8DAB3/AeMB6AHqAf8DAAH/Af4B/wH9Af8B9AH2AfsB/wIAAbMB/wIAAdUB/wIAAbwB/wH8 - Av4B/wH9Af4B/AH/AvkB/AH/AewB8QH3Af8BhQGLAfAB/wIAAegB/wIAAbYB/wGmAawB3AH/A/4J/wgA - ATACMQFNAU8CUwGlAZgBywH1Af8BmAHLAfUB/wGXAcoB9AH/AZEBxAHvAf8BiwG+AeoB/wGJAbwB6QH/ - AYsBvgHrAf8DTQH6A04BlBAAAlcBXwHoAgAC/wIAAv8CAAL/AgAB9QH/AgAB8gH/AgAB7wH/AgAB6wH/ - AgAB5wH/AgAB4wH/AZkBwQHjAf8CAAHqAf8CAAHmAf8CWgFgAd4HAAX/A/MB/wEAAY0BqAH/Ab8B0AHf - Af8DAAH/AwAF/wMAAf8DAAH/A/wB/wMAAf8D/QX/AeMB6AHqAf8DAAH/Af0B/wH9Af8B+gL8Af8CAAG3 - Af8CAAHLAf8CAAHFAf8B+gH+Af0D/wH+Cf8B+AH6AfsB/wGLAZUB6wH/AgAB0AH/AgABrwH/AfIB9AH7 - Cf8MAAMwAUsDUQGiA2cB8gGcAc8B+AH/AZgBywH0Af8BkwHGAfEB/wGSAcUB8AH/AZQBxwHxAf8DXwHj - A0QBehAAAlQBYQHuAgAC/wIAAv8CAAL/AgAB+wH/AgAB9wH/AgAB8gH/AgAB7QH/AgAB6AH/AgAB5AH/ - AZYBtgHeAf8CAAHxAf8CAAHvAf8CWAFiAekHAAX/A/gB/wGbAbQByQH/AgABjgH/AgABhwH/AaUBsQG6 - Bf8D/QX/A/sN/wHjAegB6gH/AwAB/wH9Af8B/AH/Av0B/AH/AQABhQHXAf8CAAHVAf8BhwGkAdcB/wHp - AvQB/wH6AfwB+wn/AfwC/gH/AfsB/AH9Af8BAAGOAeYB/wIAAcYB/wG4Ab8B5gn/EAADLwFJA1ABngGl - AdgB/AH/AaEB1AH7Af8BnwHSAfgB/wGeAdEB+AH/AaAB0wH5Af8BVgJXAbgDMAFLEAACWgFhAeQCAAH+ - Af8CAAH+Af8CAAH+Af8CAAH+Af8BAAGDAv8BAAGJAv8BAAGMAv8BAAGXAfsB/wEAAY4B9gH/AZ4BugHt - Af8CAAH+Af8CAAH2Af8CTAFfAfMHAAH/A70x/wOjAf8DAAn/AfEB/AH6Af8BAAHWAcsB/wEAAcABvAH/ - AZkC3AH/AfYC/RH/Av0C/wGfAakB7QH/AdwB3QH0Cf8QAAMFAQcDSAGGA18B4wGpAdwB/gH/AagB2wH+ - Af8BqAHbAf4B/wNhAeIBSAJJAYcDCwEPEAADCAELAx0BKQMrAUIDNwFbA0IBdANKAY0CUgFUAaYCWAFa - AcACWwFeAdkCUwFkAfECXQFhAeICVwFaAb0DTgGYAzgBXgsAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA - Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/BAAI/wH9Af8B/gH/AfMB/QH8Af8B4AH2AfcB/wH3 - Af0C/wH8Af4W/wH9Af4B+wL/Af4B/Qn/FAABIQIiATEDSAGEA0oBiwNKAYsDSgGLA0gBhAMhATBUAANf - AeADWAHvA1gB7wNYAe8DWAHvA1gB7wNYAe8DWAHvA1gB7wNYAe8DWAHvA1gB7wNYAe8DXAHRBAADYgHv - A1gB7wNYAe8DWAHvA1gB7wNYAe8DWAHvA1gB7wNYAe8DWAHvA1gB7wNYAe8DWAHvA1gB7wNYAe8DXwHg - EAADVgGzA1gB7wNYAe8DWAHvA1gB7wNYAe8DWAHvAlIBUAGkHAADIQEwAzgBXAExAjABTQMLAQ8EAAMM - ARADXgHVA1kB9QNZAccDQAFwAwcBCQwAA2IB7wHfAd4B2wH/AeMB3gHUAf8B4gHbAdAB/wHiAdsB0AH/ - AeIB2wHQAf8B4gHbAdAB/wHiAdsB0AH/AeIB2wHQAf8B4gHbAdAB/wHiAdsB0AH/AeIB2wHQAf8BxgHB - AbYB/wNcAd8EAAOVAf8DgwH/A4IB/wOCAf8DggH/A4IB/wOCAf8DggH/A4IB/wOCAf8DggH/A4IB/wOC - Af8DggH/AwAB/wNYAe8QAAJZAVcBvwMAAf8DAAH/AgABgQH/AgABgAH/AwAB/wMAAf8DVAGvFAADFQEd - AlkBVwHCAfABlAEAAf8B+wGnAQAB/wH4AaIBAAH/AmcBWQHyAUACPwFvAVgCVgG8AZ4CAAH/AYoCAAH/ - AZECAAH/AawBiAGGAf8DYQHcAxoBJQgAA2IB7wHzAfIB8AH/AfgB8gHoAf8B9gHvAeMB/wH2Ae8B4wH/ - AfYB7wHjAf8B9gHvAeMB/wH2Ae8B4wH/AfYB7wHjAf8B9gHvAeMB/wH2Ae8B4wH/AfYB7wHjAf8B1wHR - AcYB/wNcAd8EAAOGAf8D4wH/A80B/wEAAuQB/wGdAtEB/wEAAuAB/wGHAtUB/wPJAf8DyQH/AQAC2AH/ - AQAC3QH/AZMC1AH/AQAC4gH/A74B/wOCAf8DWAHvEAACWQFXAb8DAAH/AYYBhwGVAf8BhQGGAZoB/wIA - AZcB/wIAAZIB/wMAAf8DVAGvEAADCAELAl4BWwHZAfcBwAGaAf8B+gHFAZ8B/wH6AcUBoAH/AfkBxAGf - Af8B9gHCAZ4B/wHmAaIBAAH/AaYCAAH/AZ8CAAH/AwAB/wMAAf8DAAH/AYsCAAH/A1cBuAgAA2IB7wHz - AfIB8AH/AfgB8gHoAf8B9gHvAeMB/wH2Ae8B4wH/AfYB7wHjAf8B9gHvAeMB/wH2Ae8B4wH/AfYB7wHj - Af8B9gHvAeMB/wH2Ae8B4wH/AfYB7wHjAf8B1wHRAcYB/wNcAd8EAAOGAf8D9wH/AQAC9gH/AY0C5QH/ - AQAC8AH/AYAC6AH/AwAB/wMAAf8DAAH/AwAB/wEAAtcB/wEAAu8B/wGGAuYB/wEAAuIB/wOCAf8DWAHv - CAACUgFRAacBWQJXAb8DWAHvAQABgAGQAf8CngGxAf8CkwGrAf8CjwGrAf8CiQGlAf8DAAH/A1kB6wNX - Ab8CUAFPAZsIAANAAXAB5gGdAQAB/wH3AdgBwwH/AfcB0wG6Af8B+AHVAb0B/wH3AdQBvAH/AfIBxAGl - Af8B9wHjAdYB/wG4AgAB/wGgAgAB/wMAAf8BggIAAf8DAAH/AwAB/wNfAeAIAANiAe8B8wHyAfAB/wHv - AeIBzwH/AesB3AHDAf8B8wHpAdkB/wH2Ae8B4wH/AfYB7wHjAf8B9gHvAeMB/wH2Ae8B4wH/AfYB7wHj - Af8B9gHvAeMB/wH2Ae8B4wH/AdcB0QHGAf8DXAHfBAADhgH/A/cB/wGhAucB/wEAAvAB/wGAAucB/wEA - AaUBAAH/AQABkAEAAf8BpAIAAf8BrwIAAf8DAAH/AwAB/wEAAtcB/wEAAu8B/wGSAtMB/wOCAf8DWAHv - BAACUgFQAaQDWQH1AwAB/wGFAYQBlgH/ApQBqQH/AwAB/wMAAf8DAAH/AZUBmAGyAf8BkQGQAaoB/wIA - AYAB/wMAAf8DTgHwA04BmQQAA1UBsgHfAZcBAAH/AfQB1wHEDf8B9QHdAc4B/wH0Ad4B0QH/Ab4CAAH/ - AZoCAAH/AwAB/wHhAcgBxQH/AfcB3QHYAf8BtQGlAaEB/wJHAUYB+QMBAQIEAANiAe8B8wHyAfAB/wHr + AaYC/wEAAaYC/wEAAaYC/yAAAxwBJwNMAZMCWQFcAcwCWQFcAc8DUAGdAyQBNVAAAwIBAwNcAcwDAAH/ + AwAB/wMAAf8DAAH/A10Byh0AAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEA + AaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/xwAAy4BSAJY + AWIB7wIAAdwB/wIAAd8B/wIAAd0B/wIAAdcB/wJHAWoB+QM4AV0YAAMtAUYDXQHSAwAB/wMAAf8DAAH/ + AwAB/wMAAf8DXQHXFAADEAEVA5IB/wHVAtMB/wHiAeAB3wH/Ad8B3AHbAf8B4QLfAf8DZQH0HQABpgL/ + AQABpgL/AQABpgL/AQABpgL/AQABsQL/AQABzQL/AbYB4wL/AcUB6QL/AcUB6QL/AcUB6QL/AYoB0wL/ + AQABvAL/AQABpgL/AQABpgL/AQABpgL/AQABpgL/GAADEAEWA18B4AGLAYkB5AH/AccBxgHyAf8B9gH1 + Af0B/wL3Af0B/wHFAcQB8QH/AgAB2wH/AlkBZwHyAygBPAwAAzABSwNcAcwDowH/AcYBxQHEAf8B2QHU + AdMB/wHUAc8BzgH/AdMBzgHNAf8B0wHOAc0B/wHoAuUB/wMAAf8YAANAAW8DWgG9AcQBwgHBAf8B1AHP + Ac4B/wNiAfYDUQGcA10B0gMAAf8DAAH/AwAB/wMAAf8DAAH/A10B1wEAAaYC/wEAAaYC/wEAAawC/wGZ + AdgK/wHwAfkC/wHFAekC/wHFAekC/wHiAfQK/wHTAe4C/wEAAbcC/wEAAaYC/wEAAaYC/xgAAzoBYgIA + Ad4B/wHKAckB8xH/AcEBvwHvAf8CAAHXAf8CTQFOAZYIAANcAckDswH/A9QB/wHhAt8B/wHFAb8BvQH/ + Ab0BtQGzAf8BuQGxAbAB/wG5AbEBrgH/AbcBrwGuAf8B0wHOAc0B/wMAAf8MAANKAY0DXAHMA1wBzANc + AcwDYAHeA54B/wOaAf8DXAH4A4QB/wKHAYYB/wGHAYYBhQH/AaIBoAGfAf8B0wHOAc0B/wHTAc4BzQH/ + AegC5QH/AwAB/wEAAaYC/wEAAaYC/wHTAe4G/wHwAfkC/wEAAc0C/wEAAaYC/wEAAaYC/wEAAaYC/wEA + AaYC/wEAAbwC/wHTAe4G/wHwAfkC/wEAAbcC/wEAAaYC/xgAAksBTAGPAZABjgHmAf8C5wH5Ef8C6QH6 + Af8CAAHeAf8DVQGyCAADogH/A/AB/wPgAf8B1ALSAf8BvgG2AbUB/wG8AbUBtAH/AbsBtAGyAf8BugGy + AbEB/wG5AbEBrwH/AdQBzwHOAf8DAAH/DAADrgH/AeQC4gH/AdcC1QH/AdUB0wHSAf8B0QHOAc0B/wHK + AcQBwwH/AcgBwwHCAf8BzQHJAcgB/wHMAsoB/wHMAcoByQH/AdgC1gH/AwAB/wG5AbEBrgH/AbcBrwGu + Af8B0wHOAc0B/wMAAf8BAAGmAv8BAAHNCv8BAAG8Av8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BAAGm + Av8BAAGmAv8BAAGsAv8B4gH0Bv8B4gH0Av8BAAGmAv8IAAMeASsBQAE/AUABbgNHAYIDKAE9AkcBSAGD + AY8BjQHlAf8B5AHjAfkR/wHjAeIB+AH/AYABAAHfAf8CVAFWAasIAAOoAf8D6gH/A90B/wHVAdQB0wH/ + AcABuQG3Af8BvgG3AbYB/wG9AbYBtAH/AbsBtAGzAf8BuwGzAbEB/wHUAdABzwH/AwAB/wwAA7QB/wHg + At0B/wGnAgAB/wGnAgAB/wGnAgAB/wGnAgAB/wGnAgAB/wGnAgAB/wGnAgAB/wGnAgAB/wHaAdUB1AH/ + AwAB/wG6AbIBsQH/AbkBsQGvAf8B1AHPAc4B/wMAAf8BAAGmAv8BtgHjBv8B4gH0Av8BAAGmAv8BAAGm + Av8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BigHTCv8BAAGmAv8EAANEAXsDTQH6 + AgAB1wH/AgAB1gH/AkABqAH9AlgBYQHmAW0BaQF/Af4BxAHDAfIB/wL4Af0J/wH8AfsB/gH/AbkBtwHv + Af8CAAHaAf8DQAFxCAADrwH/A+sB/wPdAf8B1wLVAf8BwQG7AbkB/wHAAbkBuAH/Ab4BuAG2Af8BAAGh + AQAB/wEAAZQBAAH/AdYB0QHQAf8DAAH/DAADugH/Ad4C2wH/AbUBgAEAAf8BzgGYAQAB/wHYAa4BkQH/ + AdkBrwGRAf8B2QGvAZEB/wHaAa8BkQH/AdYBoAEAAf8BpwIAAf8B1wHTAdEB/wMAAf8BuwG0AbMB/wG7 + AbMBsQH/AdQB0AHPAf8DAAH/AQABpgL/AcUB6Qr/AQABrAL/AQABpgL/AQABpgL/AQABpgL/AQABpgL/ + AQABpgL/AQABpgL/AQABpgL/AacB3gb/AfAB+QL/AQABpgL/AzcBWwIAAdgB/wGVAZIB5gH/AcUBxAHx + Af8BzwHOAfMB/wGYAZYB5QH/AgAB1QH/AgABzAH/AYMBgQHfAf8BvgG9AfAB/wLaAfcB/wLbAfcB/wG6 + AbkB8AH/AYQBgQHjAf8DVgG2AwoBDQgAA7UB/wPsAf8D3gH/AdkC2AH/AcMBvQG7Af8BwgG7AboB/wHB + AboBuQH/AaAByAGkAf8BAAGpAQAB/wHXAdMB0QH/AwAB/wwAA8AB/wHfAtwB/wG0AgAB/wHLAZUBAAH/ + Ac0BlwEAAf8BzwGZAQAB/wHRAZsBAAH/AdIBnAEAAf8B1AGeAQAB/wGnAgAB/wHXAdQB0wH/A4QB/wEA + AaEBAAH/AQABlAEAAf8B1gHRAdAB/wMAAf8BAAGmAv8BxQHpCv8BpwHeAv8BAAGsAv8BAAGmAv8BAAGm + Av8BAAGmAv8BAAGmAv8BAAGmAv8BAAHHCv8BmQHYAv8BAAGmAv8CWAFaAcABlwGVAecB/wLnAfoN/wGc + AZoB5gH/AgAB0gH/AgABzAH/AgAB1wH/AgAB3gH/AX8BfQF/Af4BZwFiAWoB+QNRAaADDQESDAADuwH/ + A+wB/wPfAf8B2gLZAf8BxgG/Ab4B/wHEAb4BvAH/AcMBvAG7Af8BwQG7AbkB/wHAAbkBuAH/AdcC0wH/ + A4QB/wwAA8UB/wHhAd4B3AH/AbMCAAH/AccBkQEAAf8ByQGTAQAB/wHLAZUBAAH/Ac0BlwEAAf8BzwGZ + AQAB/wHRAZsBAAH/AacCAAH/AdkB1QHUAf8DiwH/AaAByAGkAf8BAAGpAQAB/wHXAdMB0QH/AwAB/wEA + AaYC/wHFAekO/wHiAfQC/wGKAdMC/wEAAbwC/wEAAbwC/wEAAccC/wHFAekK/wGnAd4C/wEAAaYC/wEA + AaYC/wJeAWUB5QG2AbUB7gH/Av4O/wHKAckB8gH/AgAB2gH/AgAB3QH/AgAB1gH/AgAB0QH/AlkBXQHS + AxoBJRQAA8AB/wPsAf8D4AH/Ad0C3AH/AccBwQHAAf8BkgKRAf8DjwH/A40B/wOKAf8B2QHVAdQB/wOL + Af8MAAPKAf8B4QHfAd4B/wGxAgAB/wHEAY4BAAH/AcYBkAEAAf8ByAGSAQAB/wHKAZQBAAH/AcwBlgEA + Af8BzgGYAQAB/wGnAgAB/wHbAtYB/wORAf8BwQG7AbkB/wHAAbkBuAH/AdcC0wH/A4QB/wEAAaYC/wHF + AekG/wHTAe4C/wGZAdgC/wHiAfQW/wG2AeMC/wEAAbwC/wEAAaYC/wEAAaYC/wEAAaYC/wJZAV0B0gGz + AbEB7gH/AvcB/Q3/Ab8BvQHvAf8BvgG9Ae8B/wL3Af4B/wHlAeQB+QH/AYkBhgHhAf8CAAHRAf8DLgFI + FAADxgH/A+8B/wPhAf8D3QH/AcgBwwHCAf8ByAHCAcEB/wHGAcEBvwH/AcUBvwG+Af8BwwG9AbsB/wHa + AdYB1QH/A5EB/wwAA84B/wHiAt8B/wGwAgAB/wGxAgAB/wGxAgAB/wGyAgAB/wGzAgAB/wG0AgAB/wG1 + AYABAAH/AacCAAH/AdwB2AHXAf8DmAH/A40B/wOKAf8B2QHVAdQB/wOLAf8BAAGmAv8BxQHpBv8BxQHp + Av8BAAGmAv8BAAGmAv8BAAGsAv8BAAG8Av8BAAG8Av8BAAG3Av8BAAGmAv8BAAGmAv8BAAGmAv8BAAGm + Av8BAAGmAv8BAAGmAv8CSAFJAYcBjAGKAeUB/wLPAfUB/wH2AfcB/QH/Av4C/wHYAdcB9gH/AbYBtAHt + Df8B2wHaAfYB/wIAAdsB/wJOAU8BlxQAA8sB/wPpAf8D6QH/AeIC4QH/AcsBxgHEAf8BmAKXAf8BlgKV + Af8BlAKTAf8BkgKRAf8B2wHXAdYB/wOYAf8MAAPTAf8B8QLvAf8B4gLfAf8B4gLfAf8B4QHfAd4B/wHh + Ad4B3QH/AeAB3QHcAf8B3wHcAdsB/wHeAtsB/wHeAdsB2QH/Ae0B7AHrAf8DngH/AcUBvwG+Af8BwwG9 + AbsB/wHaAdYB1QH/A5EB/wEAAaYC/wHFAekG/wHFAekC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEA + AaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wMKAQ4CVwFZAcIBiQGG + AeMB/wGvAa4B7gH/AbIBsQHuAf8BmQGYAecB/wG+Ab0B8A3/AuQB+QH/AgAB4AH/A1ABmhQAAy4BSANh + AeQD3wH/A+oB/wHPAcoByQH/AcsBxgHFAf8BygHEAcMB/wHIAcMBwQH/AccCwQH/AdwB2QHYAf8DngH/ + DAADagH5A9MB/wPQAf8DzAH/A8gB/wPDAf8DvwH/A7oB/wO1Af8DsAH/A6oB/wOlAf8BlAKTAf8BkgKR + Af8B2wHXAdYB/wOYAf8BAAGmAv8BAAG3Av8BAAG8Av8BAAG3Av8BAAGmAv8BAAGmAv8BAAGmAv8BAAGm + Av8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8EAAMKAQ0DQwF4 + AlcBWQHCAlgBWwHLAl4BZQHlAagBpwHsAf8C4wH5Bf8C9gH9Af8BuQG3Ae8B/wIAAdsB/wM1AVcYAAML + AQ8DVgGrA9wB/wHmAuMB/wHhAd4B3AH/Ad8C3AH/Ad8B3AHbAf8B3gLbAf8B7gLsAf8DpQH/IAADLgFI + A2EB5APfAf8D6gH/Ac8BygHJAf8BywHGAcUB/wHKAcQBwwH/AcgBwwHBAf8BxwLBAf8B3AHZAdgB/wOe + Af8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BAAGm + Av8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8BAAGmAv8MAAMBAQIEAAMtAUUDWQH1AaIBoAHr + Af8BugG4AfAB/wGsAaoB7QH/AgAB4QH/A1QBrwMCAQMgAANRAZ8DXwH7A8QB/wPAAf8DuwH/A7YB/wOw + Af8DUgGnJAADCwEPA1YBqwPcAf8B5gLjAf8B4QHeAdwB/wHfAtwB/wHfAdwB2wH/Ad4C2wH/Ae4C7AH/ + A6UB/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEA + AaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/wEAAaYC/xgAAyUBNwNTAaoCWwFeAdkCWgFd + AcoDRAF5AwcBCnAAA1EBnwNfAfsDxAH/A8AB/wO7Af8DtgH/A7AB/wNSAadAAAHkAfwB2QH/AfYB/wHq + Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AfEB/wH3Af8B5QH7AekB/wHtAf8B8wH/AfYB/wH5 + Af8B7wH2AfEC/wH+Av8B+QH1AfoB/8AAAfYB/wHwAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ + AwAB/wMAAf8B6wH9AfAB/wHzAf8B+QH/Ae4B+QHxAf8B+wH/Af4C/wH9A/8B/QL/EAADGQEjA0UBfQFa + AV8BWgHbAUwBXwFMAfMBTAFfAUwB8wFaAV8BWgHbA0UBfQMZASMgAAMZASMDRQF9AloBXwHbAUwBUgFf + AfMCTAFfAfMCWgFfAdsDRQF9AxkBIxgAAw0BEgNCAXQDVwG/A1kB7AMrAfwDKwH8AwAB/wNZAdcDQwF4 + FwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8B8wH8AfkB/wHvAfQB8wH/ + Af4B/QP/AfgD/wH7Av8MAAMzAVMBWAFhAVgB5gEAAZkBAAH/AQABwgGPAf8BlgHQAaYB/wGWAc8BpgH/ + AQABvgGJAf8BAAGNAQAB/wFYAWEBWAHmAzMBUxgAAzMBUwJYAWEB5gIAAcwB/wIAAegB/wGPAZIB7gH/ + AY8BkgHuAf8CAAHkAf8CAAHBAf8CWAFhAeYDMwFTEAADKAE8A1MBrQMAAf8DAAH/AwAB/wMAAf8DAAH/ + AwAB/wMAAf8DXgHaFwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAL/ + Af4D/wH9Av8B+QHvAfUC/wH7Av8IAAMzAVMBUgFlAV0B9AEAAbQBAAH/AagB2wG1Af8BhwHMAZgB/wEA + AbwBAAH/AQABugEAAf8BhgHLAZgB/wGlAdkBtAH/AQABqgEAAf8BUgFlAVIB9AMzAVMQAAMzAVMCUgFl + AfQCAAHgAf8BoQGmAfUB/wEAAYYB7wH/AgAB6QH/AgAB5wH/AQABhAHuAf8BngGgAfQB/wIAAdcB/wJS + AWUB9AMzAVMMAANaAcoDAAH/AwAB/wMAAf8DAAH/AY0CAAH/AZECAAH/AY0CAAH/AwAB/wNaAcoDLQFF + A0cBgQNXAbgDVAGsBwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ + AfwC+gL/Af4C/wH8AfEB8wL/AfwB/gH/BAADGAEiAV4CZQHlAQABuQEAAf8BqAHbAbIB/wEAAbwBAAH/ + AQABugEAAf8BAAG4AQAB/wEAAbUBAAH/AQABtQEAAf8BAAG3AQAB/wGlAdkBswH/AQABqgEAAf8BXgFl + AV4B5QMYASIIAAMYASICXgFlAeUCAAHjAf8BoQGsAfUB/wIAAewB/wIAAeoB/wIAAekB/wIAAeYB/wIA + AeYB/wIAAeYB/wGeAaIB9AH/AgAB1gH/Al4BZQHlAxgBIggAAV0CWQHXAwAB/wGLAgAB/wGhAgAB/wG8 + AZMBAAH/AbcCAAH/AbYCAAH/AbgCAAH/A0AB/QJdAVsB0gNaAcUDXgHdA18B8wNkAewHAAH/AwAB/wMA + Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wGFAocF/wH1AfAB8QL/Af4D/wL4Af8EAANG + AX4BAAGrAQAB/wGqAd0BtAH/AQABwQEAAf8BAAG+AQAB/wEAAbwBAAn/AQABuAEAAf8BAAG1AQAB/wEA + AbcBAAH/AaYB2gG0Af8BAAGPAQAB/wFFAUYBRQF+CAADRgF+AgAB2wH/AaIBqwH2Af8CAAHwAf8CAAHu + Af8CAAHpAf8CAAHpAf8CAAHpAf8CAAHpAf8CAAHmAf8CAAHmAf8BnwGjAfUB/wIAAcQB/wFFAkYBfggA + A1ABnQGWAgAB/wHAAYIBAAH/AcYBzwHJAf8BvwHwAv8BzQHMAb8B/wGjAgAB/wMAAf8DKwH8AbcBsQGc + Af8BywHaAcMF/wHnAuMB/wN/Af4HAAH/AwAD/wH8Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ + AwAB/wMAAf8B9AH5AfoB/wH2AfgB+QL/AfwB/gL/Af4C/wQAA18B2wGKAcwBmAH/AYkB0wGWAf8BAAHG + AQAB/wEAAcEBAAH/AQABqwEACf8BAAG4AQAB/wEAAbgBAAH/AQABuQEAAf8BhQHMAZcB/wEAAb4BjQH/ + AVoBXwFaAdsIAAFeAl8B2wGBAYwB7gH/AQABkQH3Af8CAAHzAf8CAAHpAf8CAAHpAf8CAAHpAf8CAAHp + Af8CAAHpAf8CAAHpAf8CAAHpAf8BAAGDAfAB/wIAAeIB/wJaAV8B2wgAAxgBIQJKAUkBiQJlAVIB9AEA + AakBwgH/AQABpAHPAf8BqgHgAf4B/wGaAY8BAAH/AZcBgAEAAf8BzAGuAYoB/wMAAf8BAAGaAQAB/wG9 + AeIBxgH/AdcB0wHPAf8DYgHvBwAB/wMAAf8B+AH6Ae4B/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA + Af8DAAH/AwAB/wGZAaEBsgH/AfQB+wL/AeUB6QH7Af8B+AH7Av8EAANiAfYBqQHdAbMB/wEAAc8BigH/ + AQABzAGBGf8BAAG4AQAB/wEAAb4BAAH/AZwB1AGrAf8BSAFiAUgB9ggAAV8CYgH2AaEBqwH3Af8BAAGG + AfgB/wEAAYIB9hn/AgAB6QH/AgAB6gH/AZYBnAHxAf8BSAFJAWIB9gwAAwoBDgFaAlwBzQEAAb8B4gH/ + AQABtgHaAf8BAAGpAdAB/wNcAfgBtAGXAQAB/wGQAgAB/wMAAf8BAAGIAQAB/wEAAcIBlAH/AboBwQGz + Af8DXQHwBwAB/wMAAf8DAAP/AfEB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8BmAGkAc4B/wIA + AYIB/wHoAfIC/wHmAe4C/wHrAfEC/wQAA2IB9gG2AeIBvgH/AYsB1QGXAf8BAAHJAYYZ/wEAAbgBAAH/ + AQABwQEAAf8BnQHUAaoB/wFIAWIBSAH2CAADYgH2Aa8BuQH5Af8BAAGTAfoB/wEAAYUB8Bn/AgAB6QH/ + AgAB7gH/AZYBnQHxAf8BSAFJAWIB9gwAAxQBGwNNAfoBnAHYAfQB/wGNAc8B7QH/AQABowHGAf8DKwH8 + AaABhwEAAf8BpAIAAf8DAAH/AQABtgG5Af8BjAHZAeIB/wG3AcABugH/A10B8AQAAeIB8wHqAf8DAAH/ + AwAB/wMAAf8B7QHzAeID/wH3Af8DAAH/AwAB/wMAAf8DAAH/AdIB3gL/AgABswH/AwAB/wGZAaYB9QH/ + AdwB6AL/AdwB6AL/BAADXwHbAawB3QG2Af8BpgHfAa8B/wGBAcsBjAH/AQAByQGGAf8BAAG9AQAJ/wEA + AawBAAH/AQABvAEAAf8BAAG6AQAB/wGLAdEBmQH/AYABxQGSAf8BWgFfAVoB2wgAA18B2wGlAa8B9QH/ + AZ0BqwH6Af8BAAGMAfAB/wIAAewB/wIAAewB/wIAAewB/wIAAewB/wIAAewB/wIAAewB/wIAAfIB/wGB + AY4B9AH/AgAB6QH/AloBXwHbDAADFQEdAWcCagH5AbsB6gH+Af8BpQHTAekB/wIAAY0B/wMAAf8BjgGJ + AQAB/wHSAaQBAAH/Aa8BhgEAAf8BlgGyAa0B/wHbAfcC/wHQAdEBzAH/A2IB7wQAAfED/wHsAfkB+wH/ + AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wHJAdAC/wGqAbMC/wIAAY4B/wIAAYcB/wIAAdgB/wGp + AbcC/wHRAd8C/wQAA0YBfgGFAccBlwH/AdIB7gHXAf8BlQHZAaAB/wGKAdMBlAH/AQAByAGJCf8BAAHN + AYUB/wEAAcMBAAH/AQABxwEAAf8BrAHfAbUB/wEAAZ4BAAH/AUUCRgF+CAADRgF+AQABgwHqAf8BzQHU + AfwB/wGLAZ0B+gH/AQABkwH3Af8BAAGKAe4B/wEAAYQB9gH/AQABhAH2Af8BAAGEAfYB/wEAAYQB9gH/ + AgAB8wH/AaQBrwH4Af8CAAHQAf8BRQJGAX4MAAMWAR8BQAGQAagB/QEAAZkBsgH/AQABhAGbAf8CAAGB + Af8DAAH/AZoBngGdAf8B+AHmAc8B/wHcAcEBogH/AdMBxQGyAf8B8wHuAeMB/wHMAcUBtwH/AaUBmwGK + Af8EAAHxAfwC/wHhAesB9QH/AfgD/wH5Af4B/QH/AwAB/wMAAf8DAAH/AgABjwH/AwAB/wMAAf8CAAGU + Af8CAAHWAf8CAAG1Af8CAAH9Af8CAAGxAf8CAAGYAf8EAAMYASIDZQHlAaoB2gG3Af8B2AHxAdwB/wGS + AdgBnQH/AYgBzQGTAf8BhAHMAY4B/wGLAdQBlgH/AYoB1AGVAf8BgwHSAY4B/wGvAeABtwH/AQABuQEA + Af8BXgFlAV4B5QMYASIIAAMYASIDZQHlAaMBpwHzAf8B1AHbAf0B/wGHAZoB+gH/AQABkQHwAf8BAAGO + AfEB/wEAAZQB+AH/AQABkgH5Af8BAAGMAfgB/wGoAbYB+AH/AgAB4wH/Al4BZQHlAxgBIgwAAxQBGwNh + Ae4BAAGJAZ8B/wIAAZIB/wEAAYQBnAH/A0AB/QNZAfUDZwHyA2EB4gNeAdkDXQHSA1sBywNYAcEEAAHv + AfMC/wH4AfsC/wH4AfoD/wH+Bv8DAAH/AfoB9wL/AegB5gL/AYYBiQHUAf8CAAGLAf8CAAGGAf8CAAH2 + Af8CAAL/AgAC/wIAAbUB/wIAAa8B/wgAAzMBUwNlAfQBrwHcAbsB/wHcAfIB4AH/AbYB5AG9Af8BmwHb + AaUB/wGWAdkBoAH/AaUB3wGvAf8BwAHoAcUB/wEAAcIBigH/AVIBZQFfAfQDMwFTEAADMwFTA2UB9AGq + Aa0B8gH/AdgB3AH9Af8BrgG6AfoB/wGRAaMB+gH/AYsBnQH6Af8BnAGpAfsB/wG6AccB/AH/AgAB6QH/ + AlIBZQH0AzMBUxAAAwMBBAM3AVoDXAHPAQABjgGhAf8BXgJlAeUBVgJYAbwDVwG4A1YBtgNKAY0DQgF1 + AzsBZAMzAVIDKgFABAAC8AL/AusB9wL/Af4D/wH9AfkC/wH9AfUB/wMAAf8B/QH6Av8B9AHzAv8B6AHq + Av8BjwGXAfUB/wIAAZUB/wIAAeoB/wEAAYUC/wIAAv8BAAGQAv8BoAHAAv8MAAMzAVMDYQHmAZQBzgGk + Af8BwwHmAcsB/wHPAesB1AH/AckB6QHOAf8BrwHdAbgB/wEAAbkBAAH/AVkCYQHmAzMBUxgAAzMBUwNh + AeYBjgGTAe0B/wG+AcMB+AH/AcwB0wH5Af8BxAHLAfkB/wGqAbQB9AH/AgAB4gH/AVgCYQHmAzMBU0wA + Af8B/AP/Af4E/wH5Af8B+AH1AeYD/wHxAf8B+gH3AekB/wMAAf8B9QH3Av8B3QHjAv8BsQG9Av8CAAGc + Af8CAAGQAf8CAAHcAf8CAAHmAf8CAAGBAf8BvAHjAv8QAAMZASMDRQF9A18B2wNfAfMDXwHzA18B2wNF + AX0DGQEjIAADGQEjA0UBfQNfAdsDXwHzA18B8wFeAl8B2wNFAX0DGQEjUAAB+gH2AfsB/wH2AfIB8QP/ + AfUD/wHwA/8B6QP/AewD/wH7Af8DAAH/AwAB/wMAAf8DAAH/AgABrQH/AgAB5gH/AgABsAH/AgABkgH/ + AYkBtgL/lAADIgEyA1oB2wNVAeoDWQHrA1oB2wMbASYUAAj/Af4B/wH9Af8B3QHgAfEB/wH+Af8B/RX/ + Af4D/wP+Af8B5wHqAfUB/wH8Av4J/wcAAQEDBQEHAwsBDwMQARYDEwEaAxIBGQMQARUDDAEQAwgBCwME + AQUDAQECUwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A8kB/wOpAf8DjgH/A4MB/wMAAf8DAAH/AwAB/wMA + Af8DAAH/AwAJ/wHyAfQB+wH/AgABmwH/AvoB/hH/Af4D/wH7AfkB+wH/ArEB3AH/AgABrgH/AfYB9wH6 + Cf8EAAMBAQIDCgEOAxYBHgNDAXcCWQFcAcwDRAF5Ax0BKgMXASADEAEVAwcBCgMCAQMcAAMuAUgCWQFc + Ac8CWwFeAdkDSgGNAyoBQAMDAQQcAAPRAf8DggH/A4IB/wOCAf8DggH/A4IB/wMAAf8D1gH/A4UB/wMA + Af8DbQH3A44B/wOCAf8DggH/A4IB/wOCCf8B0AHUAecB/wIAAYwB/wHtAfEB9RH/AvkB/AH/AskB5gH/ + AgABqwH/AYwBmQHPAv8B/gH8Cf8QAAJZAVwBzANqAfkCWQFcAcwoAAMeASsCVgFYAbsBFAE0AX8B/gIA + Av8BAAGmAfMB/wEAAZ0B7wH/AgAB2AH/AlQBYQHuAlEBUgGnAzcBWwMNARIvAAH/AwAB/xwACP8BqAGv + AdUB/wIAAZQB/wHKAc4B5QX/A/4B/wL9AfwB/wH4AfkB+wH/AtkB7AH/AgABtgH/AgABqQH/AdkB3wHu + Df8QAAJZAVwBzAEAAbEB4wH/AlkBXAHMKAADVQGyAgAC/wIAAv8BAAGWAv8BAAGaAfQB/wEAAaEB9AH/ + AQABqQHzAf8BAAG0AfIB/wEAAbcB8AH/AQABhQHcAf8BMgJfAfsCVgFYAcEDQgF1AxEBFwsAAf8DAAH/ + AwAB/wMAAf8DAAH/AwAB/wOCAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/BAAG/wH+Af8BAAGF + Ab0B/wIAAbAB/wGcAaIByQH/A/AB/wLqAesB/wHlAecB6QH/AdcB2QHmAf8CAAG6Af8CAAGyAf8CAAHD + Af8C/AH7Af8D/gn/EAADWwHIAQABrwHhAf8DWwHIA1sByANUAa8DOwFjAzABSxgAAlYBWAG7AgAC/wEA + AYQC/wEAAbUB+QH/AQABqAHyAf8BAAGZAfcB/wEAAZ0B9AH/AQABowHyAf8BAAGnAe8B/wEAAacB7AH/ + AaQB7gH3Af8BAAGsAfEB/wEAAYgB4AH/A0sBjgcAAf8DowH/AeMB6AHqAf8B4wHoAeoB/wHjAegB6gH/ + AeMB6AHqAf8B4wHoAeoB/wPOAf8DAAH/AeMB6AHqAf8B4wHoAeoB/wHjAegB6gH/AeMB6AHqAf8B1gHd + AeAB/wGFAY4BkQH/AwAB/wP+Af8B/gL9Af8CAAGnAf8CAAGMAf8CAAGlAf8B0gHZAd8B/wHdAdsB5gH/ + AdYB1QHhAf8BhgGNAcAB/wIAAbAB/wIAAbEB/wG8AcUB6RH/EAACVwFZAb8BAAGtAd8B/wJXAVkBvwNc + AfgCVwFZAb8DXwHgAlcBWQG/AlcBWQG/ATkCOgFgEAACVgFYAcEBjgG2AfsB/wHXAeYB7QH/AcQB2AHt + Af8BhQHHAeUB/wGrAdwB5gH/AaMB2wHrAf8BAAHCAe8B/wEAAa8B7wH/AQABlgHrAf8BmgHiAfMB/wEA + AZoB9AH/AQABnwHwAf8DUAGdBwAJ/wMABf8DAAX/AwAB/wP4Af8DmwX/A8cJ/wHWAd0B4AH/AwAF/wH1 + AfkB/AH/AgABhAH/AwAB/wIAAYUB/wIAAYcB/wIAAZUB/wIAAaUB/wIAAaUB/wIAAbUB/wIAAc4B/wH0 + AfEB9BH/EAADVQG1AQABrAHdAf8DVQG1AQABrAHdAf8DVQG1AQABrAHdAf8DVQG1A2IB9gNVAbUQAANb + AcgBvQHIAfQB/wEAAYMB/QH/AQABgwL/AQABhgHtAf8BAAGFAeoB/wEAAbEB5gH/AbIB4AHuAf8BhwHR + Ae0B/wGhAeIB7gH/AcIB8wHxAf8BAAHEAfcB/wEAAbAB9wH/AlIBUwGoBwAZ/wP8Af8D/BX/AeMB6AHq + Af8DAAH/Af4B/wH9Af8BugHdAd8B/wIAAaAB/wIAAZgB/wEAAYMBlwH/AwAB/wIAAYcB/wIAAagB/wIA + Ab4B/wIAAcYB/wLoAfQB/wLyAfER/wQAAT8CQAFvAlQBVgGrATQCNQRVAbIBgQG0AeQB/wEAAZoBzQH/ + AQABrAHdAf8BWQJgAesBgQG0AeQB/wFbAmAB1gEAAaIB1AH/AlQBVgGrEAACXAFeAc4CAAL/AQABgQL/ + AQABjwL/AgAB8wH/AQABggHwAf8BAAGvAecB/wGDAckB8AH/AQABjAHyAf8BAAGNAe8B/wEAAY8B7AH/ + AQABqAHqAf8BAAHYAe4B/wNVAbIHAAX/AZYCAAH/AZUCAAH/AYcCAAH/AwAB/wMABf8DmQH/A5sB/wPt + Af8Dxwn/AeMB6AHqAf8DAAH/Av4B/AH/AfQB+AH+Af8CAAGXAf8CAAGjAf8BAAGGAagB/wIAAZ8B/wIA + AbQB/wIAAdkB/wIAAcYB/wIAAasB/wHQAdEB4gH/AfQC9hH/BAABUgJUAaYBmQHMAfYB/wFVAlYBsQNW + AbMBlAHHAfIB/wGNAcAB7gH/AZQBxwHyAf8BjQHAAe4B/wGUAccB8gH/AY0BwAHuAf8BlAHHAfIB/wFS + AlQBphAAAloBXgHVAgAC/wEAAYwC/wGAAbkB+gH/AQABkwHvAf8CAAH0Af8BAAGjAegB/wEAAcIB8gH/ + AQABgwH3Af8BAAGHAfMB/wEAAYUB7gH/AQABgAHqAf8CAAHpAf8CVwFaAb0HAAX/AYMCAAH/AdIBuAGd + Af8BgQIAAf8DAAH/AY0CAB3/AeMB6AHqAf8DAAH/Af4B/wH9Af8B+QL9Af8CAAGmAf8CAAGuAf8BAAGT + AbgB/wGgAdwB2AH/AaEBywHfAf8CAAHoAf8CAAHsAf8CAAGuAf8CAAGoAf8C4gHwAf8B/QH/Af0N/wQA + AVECUgGhAZkBzAH2Af8BlgHJAfQB/wJXAVoBvQGXAcoB9QH/AZEBxAHwAf8BjQHAAewB/wGIAbsB6QH/ + AYcBugHoAf8BiQG8AekB/wGQAcMB7wH/AVECUgGhEAACWgFfAtsB4wH7Af8B9QH3AfUB/wG2Ac4B9wH/ + AYYBsQHjAf8BqAHMAeEB/wG/Ad8B4gH/AbYB3gHnAf8BhgHGAe0B/wEAAaMB7wH/AQABhwHvAf8CAAHs + Af8CAAHpAf8DWwHIBwAF/wP6Af8BrgGQAQAB/wIAAcEB/wMAAf8B0wHWAdcF/wOtBf8DmwH/A60J/wHj + AegB6gH/AwAB/wH+Af8B/QH/AfgB+gH9Af8CAAGuAf8CAAHDAf8CAAG6Af8B8wHxAfIB/wHsAeoB7AH/ + AdIB1AHtAf8BAAGCAeUB/wIAAeUB/wIAAbUB/wIAAbcB/wH3AfYB/Q3/BAABKwIsAUMDUgGpAZoBzQH2 + Af8BhQG4AeUB/wGUAccB8wH/AZMBxgHyAf8BiwG+AesB/wGEAbcB5AH/AYIBtQHjAf8BhQG4AeUB/wGO + AcEB7AH/AU8CUQGcEAACXQFhAeIBAAGaAf0B/wIAAf4B/wIAAv8CAAHxAf8CAAHvAf8CAAHtAf8CAAHo + Af8CAAHkAf8BAAGlAeUB/wHFAeMB6AH/AaQB0gHmAf8BqgHbAegB/wJaAV0B0wcABf8D8wH/AcwB3wHu + Af8B5gHuAfQB/wMAAf8DAB3/AeMB6AHqAf8DAAH/Af4B/wH9Af8B9AH2AfsB/wIAAbMB/wIAAdUB/wIA + AbwB/wH8Av4B/wH9Af4B/AH/AvkB/AH/AewB8QH3Af8BhQGLAfAB/wIAAegB/wIAAbYB/wGmAawB3AH/ + A/4J/wgAATACMQFNAU8CUwGlAZgBywH1Af8BmAHLAfUB/wGXAcoB9AH/AZEBxAHvAf8BiwG+AeoB/wGJ + AbwB6QH/AYsBvgHrAf8DTQH6A04BlBAAAlcBXwHoAgAC/wIAAv8CAAL/AgAB9QH/AgAB8gH/AgAB7wH/ + AgAB6wH/AgAB5wH/AgAB4wH/AZkBwQHjAf8CAAHqAf8CAAHmAf8CWgFgAd4HAAX/A/MB/wEAAY0BqAH/ + Ab8B0AHfAf8DAAH/AwAF/wMAAf8DAAH/A/wB/wMAAf8D/QX/AeMB6AHqAf8DAAH/Af0B/wH9Af8B+gL8 + Af8CAAG3Af8CAAHLAf8CAAHFAf8B+gH+Af0D/wH+Cf8B+AH6AfsB/wGLAZUB6wH/AgAB0AH/AgABrwH/ + AfIB9AH7Cf8MAAMwAUsDUQGiA2cB8gGcAc8B+AH/AZgBywH0Af8BkwHGAfEB/wGSAcUB8AH/AZQBxwHx + Af8DXwHjA0QBehAAAlQBYQHuAgAC/wIAAv8CAAL/AgAB+wH/AgAB9wH/AgAB8gH/AgAB7QH/AgAB6AH/ + AgAB5AH/AZYBtgHeAf8CAAHxAf8CAAHvAf8CWAFiAekHAAX/A/gB/wGbAbQByQH/AgABjgH/AgABhwH/ + AaUBsQG6Bf8D/QX/A/sN/wHjAegB6gH/AwAB/wH9Af8B/AH/Av0B/AH/AQABhQHXAf8CAAHVAf8BhwGk + AdcB/wHpAvQB/wH6AfwB+wn/AfwC/gH/AfsB/AH9Af8BAAGOAeYB/wIAAcYB/wG4Ab8B5gn/EAADLwFJ + A1ABngGlAdgB/AH/AaEB1AH7Af8BnwHSAfgB/wGeAdEB+AH/AaAB0wH5Af8BVgJXAbgDMAFLEAACWgFh + AeQCAAH+Af8CAAH+Af8CAAH+Af8CAAH+Af8BAAGDAv8BAAGJAv8BAAGMAv8BAAGXAfsB/wEAAY4B9gH/ + AZ4BugHtAf8CAAH+Af8CAAH2Af8CTAFfAfMHAAH/A70x/wOjAf8DAAn/AfEB/AH6Af8BAAHWAcsB/wEA + AcABvAH/AZkC3AH/AfYC/RH/Av0C/wGfAakB7QH/AdwB3QH0Cf8QAAMFAQcDSAGGA18B4wGpAdwB/gH/ + AagB2wH+Af8BqAHbAf4B/wNhAeIBSAJJAYcDCwEPEAADCAELAx0BKQMrAUIDNwFbA0IBdANKAY0CUgFU + AaYCWAFaAcACWwFeAdkCUwFkAfECXQFhAeICVwFaAb0DTgGYAzgBXgsAAf8DAAH/AwAB/wMAAf8DAAH/ + AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/BAAI/wH9Af8B/gH/AfMB/QH8Af8B4AH2 + AfcB/wH3Af0C/wH8Af4W/wH9Af4B+wL/Af4B/Qn/FAABIQIiATEDSAGEA0oBiwNKAYsDSgGLA0gBhAMh + ATBUAANfAeADWAHvA1gB7wNYAe8DWAHvA1gB7wNYAe8DWAHvA1gB7wNYAe8DWAHvA1gB7wNYAe8DXAHR + BAADYgHvA1gB7wNYAe8DWAHvA1gB7wNYAe8DWAHvA1gB7wNYAe8DWAHvA1gB7wNYAe8DWAHvA1gB7wNY + Ae8DXwHgEAADVgGzA1gB7wNYAe8DWAHvA1gB7wNYAe8DWAHvAlIBUAGkHAADIQEwAzgBXAExAjABTQML + AQ8EAAMMARADXgHVA1kB9QNZAccDQAFwAwcBCQwAA2IB7wHfAd4B2wH/AeMB3gHUAf8B4gHbAdAB/wHi + AdsB0AH/AeIB2wHQAf8B4gHbAdAB/wHiAdsB0AH/AeIB2wHQAf8B4gHbAdAB/wHiAdsB0AH/AeIB2wHQ + Af8BxgHBAbYB/wNcAd8EAAOVAf8DgwH/A4IB/wOCAf8DggH/A4IB/wOCAf8DggH/A4IB/wOCAf8DggH/ + A4IB/wOCAf8DggH/AwAB/wNYAe8QAAJZAVcBvwMAAf8DAAH/AgABgQH/AgABgAH/AwAB/wMAAf8DVAGv + FAADFQEdAlkBVwHCAfABlAEAAf8B+wGnAQAB/wH4AaIBAAH/AmcBWQHyAUACPwFvAVgCVgG8AZ4CAAH/ + AYoCAAH/AZECAAH/AawBiAGGAf8DYQHcAxoBJQgAA2IB7wHzAfIB8AH/AfgB8gHoAf8B9gHvAeMB/wH2 + Ae8B4wH/AfYB7wHjAf8B9gHvAeMB/wH2Ae8B4wH/AfYB7wHjAf8B9gHvAeMB/wH2Ae8B4wH/AfYB7wHj + Af8B1wHRAcYB/wNcAd8EAAOGAf8D4wH/A80B/wEAAuQB/wGdAtEB/wEAAuAB/wGHAtUB/wPJAf8DyQH/ + AQAC2AH/AQAC3QH/AZMC1AH/AQAC4gH/A74B/wOCAf8DWAHvEAACWQFXAb8DAAH/AYYBhwGVAf8BhQGG + AZoB/wIAAZcB/wIAAZIB/wMAAf8DVAGvEAADCAELAl4BWwHZAfcBwAGaAf8B+gHFAZ8B/wH6AcUBoAH/ + AfkBxAGfAf8B9gHCAZ4B/wHmAaIBAAH/AaYCAAH/AZ8CAAH/AwAB/wMAAf8DAAH/AYsCAAH/A1cBuAgA + A2IB7wHzAfIB8AH/AfgB8gHoAf8B9gHvAeMB/wH2Ae8B4wH/AfYB7wHjAf8B9gHvAeMB/wH2Ae8B4wH/ + AfYB7wHjAf8B9gHvAeMB/wH2Ae8B4wH/AfYB7wHjAf8B1wHRAcYB/wNcAd8EAAOGAf8D9wH/AQAC9gH/ + AY0C5QH/AQAC8AH/AYAC6AH/AwAB/wMAAf8DAAH/AwAB/wEAAtcB/wEAAu8B/wGGAuYB/wEAAuIB/wOC + Af8DWAHvCAACUgFRAacBWQJXAb8DWAHvAQABgAGQAf8CngGxAf8CkwGrAf8CjwGrAf8CiQGlAf8DAAH/ + A1kB6wNXAb8CUAFPAZsIAANAAXAB5gGdAQAB/wH3AdgBwwH/AfcB0wG6Af8B+AHVAb0B/wH3AdQBvAH/ + AfIBxAGlAf8B9wHjAdYB/wG4AgAB/wGgAgAB/wMAAf8BggIAAf8DAAH/AwAB/wNfAeAIAANiAe8B8wHy + AfAB/wHvAeIBzwH/AesB3AHDAf8B8wHpAdkB/wH2Ae8B4wH/AfYB7wHjAf8B9gHvAeMB/wH2Ae8B4wH/ + AfYB7wHjAf8B9gHvAeMB/wH2Ae8B4wH/AdcB0QHGAf8DXAHfBAADhgH/A/cB/wGhAucB/wEAAvAB/wGA + AucB/wEAAaUBAAH/AQABkAEAAf8BpAIAAf8BrwIAAf8DAAH/AwAB/wEAAtcB/wEAAu8B/wGSAtMB/wOC + Af8DWAHvBAACUgFQAaQDWQH1AwAB/wGFAYQBlgH/ApQBqQH/AwAB/wMAAf8DAAH/AZUBmAGyAf8BkQGQ + AaoB/wIAAYAB/wMAAf8DTgHwA04BmQQAA1UBsgHfAZcBAAH/AfQB1wHEDf8B9QHdAc4B/wH0Ad4B0QH/ + Ab4CAAH/AZoCAAH/AwAB/wHhAcgBxQH/AfcB3QHYAf8BtQGlAaEB/wJHAUYB+QMBAQIEAANiAe8B8wHy + AfAB/wHrAdsBwwH/AeYB0wG1Af8B8QHmAdUB/wH2Ae8B4wH/AfYB7wHjAf8B9gHvAeMB/wH2Ae8B4wH/ + AfYB7wHjAf8B9gHvAeMB/wH2Ae8B4wH/AdcB0QHGAf8DXAHfBAADhgH/A/cB/wEAAvIB/wEAAugB/wHW + AaYBjgH/AQABiQEAAf8BAAGXAQAB/wGzAY4BAAH/AbACAAH/AwAB/wMAAf8DAAH/AQAC6QH/AQAC3gH/ + A4IB/wNYAe8CUQFQAZ8DRwH5AgABiwH/AqIBsQH/ArkBzgH/ArAByAH/AocBoAH/AwAB/wMAAf8BmgGc + AbcB/wKVAa0B/wKLAaQB/wKBAZkB/wMAAf8DTAHzAk4BTQGVAlgBVgG5AdwBogGAAf8B8wHbAcwN/wH0 + AeEB1QH/AfUB5gHeAf8BtgIAAf8BmgIAAf8DAAH/AeoB1QHTAf8B3gHEAcEB/wHlAc0BygH/AwAB/wMS + ARgEAANiAe8B8wHyAfAB/wHrAdsBwwH/AeYB0wG1Af8B8QHmAdUB/wH2Ae8B4wH/AfYB7wHjAf8B9gHv + AeMB/wH2Ae8B4wH/AfYB7wHjAf8B9gHvAeMB/wH2Ae8B4wH/AdcB0QHGAf8DXAHfBAADhgH/A/cB/wGK + AusB/wHGAtsB/wH1AYIBAAH/AbIBsAEAAf8BjwHLAQAB/wHOAcoBAAH/AccBtgEAAf8BAAGQAQAB/wMA + Af8DAAH/Ab8C2wH/AQAC1wH/A4IB/wNYAe8DAAH/AogBjwH/AqUBsAH/AqkBuAH/Ar4B0QH/AroB0gH/ + ArwB1QH/AooBoQH/AocBogH/AqUBwwH/ApgBsQH/ApMBqwH/AowBpAH/AgABjAH/AwAB/wNYAe8DSAGG + AdgBpwGNAf8B8wHiAdgB/wHyAeAB1QH/AfIB4AHVAf8B8gHfAdUB/wHtAdUBxwH/AfYB7AHnAf8BpwIA + Af8BoAIAAf8DAAH/AeMB1AHTAf8B4gHQAc8B/wHkAc0BywH/AwAB/wMjATMEAANiAe8B8wHyAfAB/wHr AdsBwwH/AeYB0wG1Af8B8QHmAdUB/wH2Ae8B4wH/AfYB7wHjAf8B9gHvAeMB/wH2Ae8B4wH/AfYB7wHj - Af8B9gHvAeMB/wH2Ae8B4wH/AdcB0QHGAf8DXAHfBAADhgH/A/cB/wEAAvIB/wEAAugB/wHWAaYBjgH/ - AQABiQEAAf8BAAGXAQAB/wGzAY4BAAH/AbACAAH/AwAB/wMAAf8DAAH/AQAC6QH/AQAC3gH/A4IB/wNY - Ae8CUQFQAZ8DRwH5AgABiwH/AqIBsQH/ArkBzgH/ArAByAH/AocBoAH/AwAB/wMAAf8BmgGcAbcB/wKV - Aa0B/wKLAaQB/wKBAZkB/wMAAf8DTAHzAk4BTQGVAlgBVgG5AdwBogGAAf8B8wHbAcwN/wH0AeEB1QH/ - AfUB5gHeAf8BtgIAAf8BmgIAAf8DAAH/AeoB1QHTAf8B3gHEAcEB/wHlAc0BygH/AwAB/wMSARgEAANi - Ae8B8wHyAfAB/wHrAdsBwwH/AeYB0wG1Af8B8QHmAdUB/wH2Ae8B4wH/AfYB7wHjAf8B9gHvAeMB/wH2 - Ae8B4wH/AfYB7wHjAf8B9gHvAeMB/wH2Ae8B4wH/AdcB0QHGAf8DXAHfBAADhgH/A/cB/wGKAusB/wHG - AtsB/wH1AYIBAAH/AbIBsAEAAf8BjwHLAQAB/wHOAcoBAAH/AccBtgEAAf8BAAGQAQAB/wMAAf8DAAH/ - Ab8C2wH/AQAC1wH/A4IB/wNYAe8DAAH/AogBjwH/AqUBsAH/AqkBuAH/Ar4B0QH/AroB0gH/ArwB1QH/ - AooBoQH/AocBogH/AqUBwwH/ApgBsQH/ApMBqwH/AowBpAH/AgABjAH/AwAB/wNYAe8DSAGGAdgBpwGN - Af8B8wHiAdgB/wHyAeAB1QH/AfIB4AHVAf8B8gHfAdUB/wHtAdUBxwH/AfYB7AHnAf8BpwIAAf8BoAIA - Af8DAAH/AeMB1AHTAf8B4gHQAc8B/wHkAc0BywH/AwAB/wMjATMEAANiAe8B8wHyAfAB/wHrAdsBwwH/ - AeYB0wG1Af8B8QHmAdUB/wH2Ae8B4wH/AfYB7wHjAf8B9gHvAeMB/wH2Ae8B4wH/AfYB7wHjAf8B9gHv - AeMB/wH2Ae8B4wH/AdcB0QHGAf8DXAHfBAADhgH/A/cB/wEAAu4B/wHDAtsB/wH1AYIBAAL/Ac8BAAH/ - AbABzwEAAf8BgAGkAQAB/wHAAbMBAAH/AccBtgEAAf8BgAIAAf8BmwIAAf8BvALcAf8BAALaAf8DggH/ - A1gB7wMAAf8CowGnAf8CuwHAAf8BugG+AcUB/wG5AboBxgH/AYEBhAGTAf8DAAH/ApMBqAH/AoYBnQH/ - AwAB/wIAAYQB/wKaAa8B/wKVAakB/wIAAY8B/wMAAf8DWAHvAxUBHQJnAVkB8gHrAdgBzwH/AewB2QHP - Af8B7AHZAc8B/wHsAdkBzwH/AesB2AHPAf8B3AG9Aa8B/wGbAgAB/wGkAgAB/wMAAf8B7wHmAeUB/wHv - AeMB4gH/AekB0wHRAf8DAAH/AzEBTgQAA2IB7wHzAfIB8AH/AfQB6wHdAf8B8QHmAdUB/wH3AfEB5wH/ - AfoB9gHvAf8B+gH2Ae8B/wH6AfYB7wH/AfoB9gHvAf8B+gH2Ae8B/wH6AfYB7wH/AfoB9gHvAf8B2wHX - AdAB/wNcAd8EAAOGAf8D9wH/AQAC8AH/AQAC6gH/AdABrAGWAf8BrQHAAYQB/wEAAaoBAAH/AQABhgEA - Af8BAAGOAQAB/wHAAZ8BAAH/AfgBnAEAAf8ByQGxAZ0B/wEAAuoB/wEAAtwB/wOCAf8DWAHvAwAB/wKm - AaoB/wG/AsIB/wHLAc8B0gH/AYABgwGKAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8CAAGBAf8CkwGl - Af8CgAGOAf8CAAGAAf8DWAHvBAADLAFEAmEBWAHuAdcBtQGlAf8B3QG/AbIB/wHcAb8BsQH/AcUBlwGD - Af8BogIAAf8BsgGFAYMB/wGnAYEBgAH/AYgChAH/AfwC9wH/AfQC7AH/Ae4B5AHjAf8BiQIAAf8DPQFq - BAADYgHvAdcBxQG2Af8B4QHOAb8B/wHkAdABwQH/AecB0wHDAf8B6QHWAcYB/wHsAdkByAH/Ae8B2wHL - Af8B8gHeAc0B/wH1AeEBzwH/AfcB4wHSAf8B+QHlAdQB/wHbAcoBuwH/A1wB3wQAA4YB/wP3Af8BlgLp - Af8BAALvAf8BAALpAf8BAAHBAZUB/wEAAbYBAAH/AQABpwEAAf8BAAGJAQAB/wEAAYMBAAH/AcgBsAGd - Af8BAALqAf8BAALuAf8BhwLVAf8DggH/A1gB7wMAAf8BkAGTAZUB/wG+AcIBwwH/AdIB1gHaAf8DAAH/ - AwAB/wMAAf8CAAGEAf8DAAH/AwAB/wMAAf8DAAH/ApMBowH/AoEBiwH/AwAB/wNYAe8IAAMPARQCXwFa - AeMBrgIAAf8BqwIAAf8BtQGAAQAB/wHAAZcBlgH/AbwBkwGRAf8BsgGNAYsB/wGWApMB/wH9AvsB/wH7 - AvgB/wH4AvMB/wGiAp0B/wNIAYUEAANiAe8BpwIAAf8BrwIAAf8BtgGCAQAB/wG+AYoBAAH/AcUBkQEA - Af8BzQGZAQAB/wHVAaABAAH/Ad0BqAEAAf8B5AGvAYAB/wHqAbUBhgH/Ae8BugGLAf8B1QGpAYEB/wNc - Ad8EAAOGAf8D9wH/AQAD/wHIAukB/wEAAvgB/wG1AuwB/wGHAckBnQH/AQABuQEAAf8BAAG5AQAB/wGQ - AcsBpAH/AawC7gH/AQAC9wH/Ab4C6gH/AQAC6gH/A4IB/wNYAe8DVAGvA00B+gGyAbUBtAH/Ac4B0wHV - Af8DAAH/AwAB/wMAAf8BmwGgAagB/wMAAf8DAAH/AwAB/wMAAf8CmQGiAf8BAAGAAYgB/wNCAfUCUgFQ - AaQMAANdAtcBsQGuAf8B0wGsAakB/wHPAacBpQH/AcoBogGgAf8BxgGdAZwB/wG+AZoBlwH/AwAB/wGa - AZIBkQH/AaUCoAH/A84B/wHDAsAB/wNRAaEEAANiAe8BpAGAAQAB/wGqAYIBAAH/Aa8BhwEAAf8BtQGN - AQAB/wG7AZIBAAH/AcEBmAEAAf8BxwGdAQAB/wHNAaMBAAH/AdIBqQGCAf8B1gGtAYcB/wHaAbEBiwH/ - AcMBoQGAAf8DXAHfBAADhgH/AbsC9wH/AekC8QH/AcgC/AH/AeMC8wH/Ac4C+gH/Ad0C9QH/AdQC+AH/ - AdAC8AH/A+EB/wPhAf8D4QH/A+EB/wPRAf8DhwH/A2IB7wQAA1gB7wGaAZ8BoAH/AcEBxQHJAf8B0gHT - AdoB/wLTAdsB/wHhAeQB7AH/AcwBzgHWAf8DAAH/AwAB/wMAAf8DAAH/ApEBmQH/AwAB/wNXAd8QAANd - AdcB4QG7AbgB/wHcAbcBtAH/AdgBsgGvAf8B1AGtAasB/wHQAagBpgH/AcsBqAGlAf8BvAGZAZYB/wG2 - AZMBjwH/AaoBhAGBAf8BkgIAAf8DAAH/A1YBvAQAA1kBwgNcAc8DXAHPA1wBzwNcAc8DXAHPA1wBzwNc - Ac8DXAHPA1wBzwNcAc8DXAHPA1wBzwNVAbUEAAOdAf8BAALjAf8BjALQAf8BAALsAf8BAALWAf8BAALn - Af8BAALbAf8BAALcAf8BAALDAf8DnQH/A50B/wOdAf8DnQH/A50B/wOpAf8DYgHvBAACWAFXAcIDRwH5 - AakCrgH/AcsBzQHTAf8CygHRAf8CzgHVAf8CzgHWAf8CvwHHAf8CswG7Af8CrgG2Af8CmAGgAf8DAAH/ - A0kB9gNVAbUQAANdAdcB6gHGAcMB/wHmAcIBvgH/AeIBvQG5Af8B4QG+AbsB/wHrAcwByAH/AfIB1gHS - Af8B+AHiAd4B/wH8Ae0B6AH/AfwB8gHsAf8B6gHaAdUB/wHKAa8BqwH/A10B10AABP8DnAH/AQAC5QH/ - AZkCwwH/AQAC4gH/AYQCygH/AQAC2wH/AQACvQH/A8sZ/wNiAe8IAAJbAVkBwwNqAfkBmQGYAZ4B/wG6 - AbkBvQH/Ab8BvgHFAf8BvAG7AcUB/wKyAbsB/wGqAakBsgH/AZ0BnAGlAf8CAAGFAf8DUgH3A1UBtRQA - A14B2QH0AdEBzQH/AfEB0QHNAf8B9gHcAdcB/wH9AeEB3AH/Af0B3wHaAf8B/QHgAdsB/wH9AeEB3AH/ - Af4B4gHdAf8B/gHjAd4B/wH+AeoB5QL/AfIB7AH/A2cB8kAACP8DnAH/A44B/wOOAf8DjgH/A44B/wPN - Hf8DYgHvDAADVwHCA1gB7wNNAfoBmAGQAZwB/wGoAaQBrwH/Aq4BtwH/AZABjQGZAf8DRwH5A1gB7wNW - AbMYAANcAd8B/QHnAeIB/wH+AewB5gL/AesB5QL/AesB5QL/AesB5QL/AesB5QL/AesB5QH/AfMB4AHa - Af8DYQHiA1IBoQM5AV8DFgEfQAA8/wNiAe8UAANUAa8DAAH/AwAB/wMAAf8DAAH/AlEBUAGfIAADNgFY - A0gBhANUAaYDWQHHA2IB6QNhAeYDUwGlAzsBZQMZASMkAAL+Af0B/zQAAxcBIAMfBCwBRANOAZcDZAHx - A1EBoQMqAUEDJgE5Ax8BLAMXASAUAAHBAawBlwH/AZ0CAAH/A7YB/wOKAf8DAAH/AwAB/wMAAf8DAAH/ - AwAB/wOKAf8DtgH/A88B/wPrAf82AAGcAf8CAAGbAf8CAAGbAf8CAAGcAf8MAAHtAewB5gH/AwAB/wMA - Af8DAAH/AZEBjAEAAf8B9wH2AfIB/zAAA0oBiQNfAfMDTQH6A10B8ANKAYkDAAEBGAAB3wHEAaYB/wG2 - AgAB/wG0AgAB/wOVAf8CtQG0Af8DzgH/A8UB/wPOAf8DxQH/A84B/wO0Af8DlQH/A+gB/zoAAZsB/wEA - AdwB+wH/AQABsQHeAf8CAAGbAf8IAAOpAf8DAAH/AgABjQH/AgABvwH/AgABsQH/AgABhgH/AgABjAH/ - AwAB/wGsAacBlgL/Af4B+wH/IAADNwFaA10B8ANfAfsB2gGbAQAB/wJ/AWoB/gNdAe0DSAGEFAAB5AHJ - AaoB/wHEAYgBAAL/AcUBAAH/AcQBiAEAAf8BsAIAAf8BuQIAAf8BrAIAAf8BuQGMAQAB/wOKAf8DvwH/ - A4oB/wPJAf8DmQH/OAABsgG9AcMB/wIAAZ0B/wEAAbIB2wH/AQAB5AH5Af8CAAGcAf8IAAG8AcABxAH/ - AgABuAH/AgABwQH/AgAB0wH/AgAB4AH/AgABuwH/AgAB4QH/AgABoAH/AgABgQH/AwAB/wMAAf8BxAHB - AbEF/xAAAycBOwNfAfMDXwH7AeYBpQEAAf8B7QGpAQAB/wHqAacBAAH/An8BawH+A2QB8QM6AWEQAAHP - AZQBAAL/AdgBAAL/AdEBAAL/AdEBAAL/AdEBAAL/AdUBAAL/AeMBkgH/AcMBhwEAAf8CyQHKAf8DwQH/ - A8kB/wPKAf8DnwH/NgABnAH/AgABnAH/AQABqQHOAf8BAAHpAfkB/wIAAZwB/wgABP8BhQIAAf8DAAH/ - AgABhAH/AgABjwH/AgABxwH/AQABlwHrAf8BAAGOAf4B/wIAAeIB/wIAAdQB/wIAAboB/wMAAf8CAAGC - Af8DAAH/Ab8BvQG4Af8IAAMLAQ8DXAHqAm0BawH3AeIBogEAAf8B6AGiAQAB/wH0AbMBhAH/AdoBlAEA - Af8B6AGmAQAB/wGoAYcBQAH9A2IB9gMdASoMAAHuAdMBswH/AdsBnwEAAv8B5QGXAf8B2wGeAQAB/wHI - AYwBAAH/AdEBlQEAAf8BxQGJAQAB/wHMAZ8BAAH/A5IB/wPEAf8DkgH/A80B/wOiAf8oAAGwAbwBwwH/ - AbgBwAHFAf8BwwHFAccB/wIAAZwB/wEAAbQB2wH/AQAB6gH5Af8CAAGcAf8MAAHiAa8BgQH/AwAB/wIA - AYcB/wIAAYgB/wIAAaoB/wIAAaUB/wIAAboB/wIAAbwB/wIAAaUB/wEAAZwB8AH/AQABhwH0Af8CAAGz - Af8CAAHzAf8CAAGtAf8DAAH/CAADSQGHA2AB6wHRAZkBAAH/Ae0BqQGAAf8B7wGtAYMB/wH1AbgBiQH/ - Ad0BmgEAAf8B2QGZAQAB/wHNAZIBAAH/A1kB9QNVAbIQAAHzAdgBtwH/AeUBqQEAAf8B5gGqAQAB/wKl - AaYB/wHQAtEB/wHQAtEB/wPHAf8DzwH/A8cB/wPPAf8D0AH/A6YB/yQAAakBuQHAAf8CAAGhAf8CAAGj - Af8BAAGAAakB/wEAAZcBxgH/AQAB5AH5Af8CAAGcAf8MAAHzAecB2wH/AcECAAH/AwAB/wIAAdQB/wIA - AbIB/wIAAdoB/wIAAfgB/wIAAcwB/wIAAawB/wIAAYkB/wIAAb0B/wIAAeAB/wIAAaEB/wEAAYQB4AH/ - AQABiwHmAf8CkAGNAf8EAAMEAQUDYAHrA00B+gHwAbABhgH/AfABsAGGAf8B8AGxAYYB/wH1AbsBjgH/ - Ad0BmgEAAf8B2AGaAQAB/wHYAZoBAAH/AagBigFAAf0BkAGFAUAB/QMVAR0QAAH2AdsBuQH/AfEBxAGM - Af8DqAH/A9MB/wOZAf8DygH/A5kB/wPKAf8DmQH/A9MB/wOoAf8UAAG7AcIBxAH/AQABjwGtAf8CAAGl - Af8BAAGAAacB/wIAAaEB/wEAAaoB1AH/AQABrAHXAf8BAAGfAdAB/wEAAd4B+AH/AgABnAH/EAAB5AHI - AbIB/wHIAgAB/wMAAf8CAAGVAf8CAAG5Af8CAAHAAf8CAAGyAf8CAAHDAf8BAAGNAfEB/wIAAdUB/wIA - AdkB/wIAAdYB/wIAAbMB/wIAAaIB/wIAAagB/wGNAYsBhQH/BAADLgFIA10B8AJ/AXcB/gHyAbMBiAH/ - AfIBtAGJAf8B8gG0AYoB/wH2AcABlQH/Ad4BnAEAAf8B2QGcAQAB/wHZAZwBAAH/AcYBjwEAAf8DYAHr - A0IBcxgAA6sB/wPWAf8D1gH/A9YB/wPWAf8D1gH/A9YB/wPWAf8DqwH/EAABhwGoAbkB/wEAAZIBuwH/ - AQABxQHpAf8BAAHVAfwB/wEAAcwB+QH/AQABuQHnAf8BAAHRAfcB/wEAAawB2gH/AQAB3wH4Af8CAAGc - Af8UAAHZAakBAAH/AeYCAAH/AYkCAAH/AgABzQH/AgAB7AH/AgABpQH/AwAB/wMAAf8CAAHEAf8CAAHR - Af8CAAHAAf8CAAHBAf8BAAGXAfQB/wIAAfYB/wIAAcQB/wKCAYYB/wQAA0cBgANiAe8B5gGtAYUB/wHz - AbcBjAH/AfQBtwGMAf8B8wG3AY0B/wH3AcUBnAH/AeMBoQEAAf8B3wGjAQAB/wHZAZwBAAH/AdYBmwEA - Af8DXwH7A1QBrBgAA64B/wPZAf8B6wG3AQAB/wHuAbIBAAH/AegBrAEAAf8B3wGjAQAB/wHNAZgBAAH/ - A9kB/wOvAf8MAAGEAaYBuQH/AQABnAHAAf8BAAHdAfYB/wEAAd4B9wH/AQAB5AH8Af8BAAHgAfwB/wEA - AdQB/AH/AQAByQH4Af8BAAHgAfgB/wIAAZwB/xgAAeEBnQEAAf8B/QIAAf8DAAH/AgAC/wGSAb4C/wGF - AawC/wIAAdwB/wIAAa0B/wIAAdgB/wIAAZwB/wMAAf8DAAH/AgABhAH/AQABmQHhAf8CAAG8Af8BiwGI - AYIB/wQAA1YBsQNcAfgB8gG4AY0B/wH1AboBjwH/AfUBugGQAf8B9QG7AZIB/wH4AckBowH/AeQBpQEA - Af8B4AGlAQAB/wHbAZ4BAAH/AdoBnQEAAf8BqAGHAUAB/QNgAd4YAAOwAf8D3AH/AeIBpgEAAf8B4AGk - AQAB/wHZAZ0BAAH/AdIBlgEAAf8BvQGBAQAB/wPcAf8DsQH/DgABpgH/AQAB5wH3Af8BAAHlAfcB/wEA - AewB/AH/AQAB6QH8Af8BAAHmAfwB/wEAAeQB/AH/AQAB1AH8Af8BAAG2AeQB/wIAAacB/xgAAfMBoAEA - Af8BzQIAAf8DAAH/AQABugGrAf8B5gH/AdcB/wGxAdUBtAH/AYABwwHXAf8BAAHcAv8BAAHqAv8BAAGU - Av8CAAH0Af8CAAHOAf8DAAH/AgABtAH/AgABggH/AwAB/wQAA1wByQNfAfsB9gG8AZEB/wH2AbwBkQH/ - AfYBvQGUAf8B9wG+AZUB/wH4Ac4BqQH/AeYBqAGDAf8B4gGoAYEB/wHbAaABAAH/AdoBngEAAf8CfwFs - Af4DbQH3GAADswH/A98B/wHLAY8BAAH/AcIBhgEAAf8BwgGGAQAB/wHGAYoBAAH/AbQCAAH/A98B/wO0 - Af8NAAGRAbUB/wEAAd4B7AH/AQAB7gH8Af8BAAHuAfwB/wEAAewB/AH/AQAB6QH8Af8BAAHmAfwB/wEA - AeAB/AH/AQABxwH3Af8BAAGAAaYB/xgAAf8B4gHJAf8BkwIAAf8BAAHRAQAB/wEAAdkBAAH/AQABwwEA - Af8BAAGfAQAB/wHRAZgBAAH/AZQCAAH/AZ4BuAGAAf8BtQH/Ad4B/wGDAfEB1wH/AQAB2wHsAf8BAAHe - Av8BAAG9Av8CAAGJAf8BmAGWAZgB/wQAA2EB2gNfAfsB9wG9AZIB/wH3Ab4BlAH/AfgBwAGWAf8B+AHC - AZgB/wH7AdwBwgH/AesBsAGKAf8B6QGwAYkB/wHhAacBgAH/AdoBngEAAf8CfwFvAf4BkAGFAQAB/wME - AQYUAAO1Af8D4gH/Ac8BkwEAAf8B3QGhAQAB/wHdAaEBAAH/Ad0BoQEAAf8BtwIAAf8D4gH/A7YB/w0A - AZoBuwH/AQAB2gHnAf8BAAHFAeAB/wIAAZsB/wEAAcUB4AH/AQAB7AH8Af8BAAHqAfwB/wEAAeQB/AH/ - AQABygH3Af8CAAGmAf8dAAGxAQAB/wEAAcYBAAH/AYYB3wGKAf8B7AH3AbcB/wHEAf8B3AP/AeIB/wH7 - AcEBAAL/AYoBAAH/AdYCAAH/AwAB/wMAAf8BkQKcAf8BAAGTAYwB/wHQAdMB0QH/CAADYAHWA00B+gH3 - Ab0BkgH/AfcBvwGWAf8B+QHKAaYB/wH6AdcBugX/Ae4BtgGRAf8B6QGyAYsB/wHjAasBhgH/AdoBngEA - Af8CfwFxAf4BkgGHAUAB/QMBAQIUAAO4Af8D5QH/AcMBjwEAAf8BxgGKAQAB/wHBAYUBAAH/Ab4BggEA - Af8BrQIAAf8D5QH/A7gB/w0AAYcBrQH/AZcB9wH5Af8CAAGbAf8GAAGbAf8BAAHuAfwB/wEAAe4B/AH/ - AQAB1wH0Af8BAAG7AeUB/wEAAY8BrQH/HAAB4gH5AecB/wEAAbsBAAH/AYsB2AEAAf8B3wH7AcMD/wHV - Af8BoQHvAawB/wEAAcQBAAH/AcoBlQEAAv8CAAH/AboBmgEAAf8YAANbAcYCfwFqAf4DKwH8A38B/gHh - AbgBmwH/AfYB4wHTBf8B+AHeAcwB/wHkAbwBnwH/AcgBmwEAAf8CfwF1Af4CfwFrAf4DZQH0GAADwgH/ - A9oB/wPmAf8D5QH/A+UB/wPlAf8D5gH/A9kB/wPDAf8NAAGSAa4B/wEAAcQB1gH/AQABxQHgAf8CAAGb - Af8BAAHFAeAB/wEAAe4B/AH/AQABxQHgAf8BAAHXAfgB/wEAAYYBsgH/AbIBvQHDAf8gAAH0AfsB8QH/ - AbUBwwEAAf8BxwHUAQAB/wGbAdIBAAH/AQABzwEAAf8BAAHBAQAB/wGpAgAC/wGVAQAB/xwAAzUBVgNh - AdoDZwHyA1kB9QNgAesBugGRAQAB/wG8AZUBAAH/AbQBigEAAf8DZAHxA10B8ANtAfcDXwHgAz8BbRgA - A+gB/wOZAf8DuwH/A7sB/wO7Af8DuwH/A7sB/wPEAf8D6QH/EQABgwGqAf8BAAHBAdQB/wGPAfcB+gH/ - AQAB3gHtAf8BAAHjAfUB/wEAAdsB8wH/AQABjQG3Af8BAAGjAbYB/ywAAvwB8gH/AdAB6wG/Af8B1AHe - AakB/wHLAegBwgL/AfwB+QH/LAADFgEeAzgBXANYAbsCfwF7Af4DXQHTAz8BbAMdASoDAAEBJAADmQH/ - MQABlgGxAf8BAAGEAasB/wEAAY0BswH/AQABjwG0Af8BAAGAAaYB/wGeAbQBvgH/KAADMwFTA0kBiANK - AYoDUwGoA4cB/wOGAf8DhQH/A4MB/wNeAdUDSQGIA0kBiAM6AWAIAAMPARQDUAGaA2IB9gMrAfwDKwH8 - AysB/AMrAfwDKwH8AysB/AMrAfwDKwH8AysB/AMrAfwDWQH1A08BlwMNAREBAAGEAYIB/wEAAYQBggH/ - AQABhAGCAf8BAAGEAYIB/wEAAYQBggH/AQABhAGCAf8BAAGEAYIB/wEAAYQBggH/AQABhAGCAf8BAAGE - AYIB/2AAA0sBjgNfAdsDYAHWA2AB3gPcAf8B2wHXAdQB/wPTAf8BzwHOAc0B/wNfAfMDYQHaA14B1QNK - AY0IAANQAZoDXwH7AcwBzgHNAf8BvgHBAcAB/wGuAbEBsAH/AZ0BoQGgAf8BlQGZAZgB/wGQAZUBkwH/ - AYwBkQGPAf8BhwGMAYsB/wGCAYcBhgH/AQABgwGBAf8DAAH/AwAB/wFgAWYBYwH5A0wBkAEAAYQBggH/ - A9kB/wPZAf8D2QH/A9kB/wPZAf8D2QH/A9kB/wPZAf8BAAGEAYIB/ygAIP8kAAMJAQwDNQFYA1kBvgNg - AdYDNQFYAyMBNBQAA2IB9gHWAdgB1wH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ - AwAB/wMAAf8DAAH/AwAB/wFTAl0B8wEAAYQBggH/A/MB/wPrAf8D6wH/A+sB/wPrAf8D6wH/A+sB/wPt - Af8BAAGEAYIB/ygABP8DAAH/AwAB/wMAAf8DAAH/AwAB/wMABf8kAAMQARUDQwF3AmEBWAHmAmABWQHr - AkcBRgGAAxMBGhQAAysB/AHXAdgB1wH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ - AwAB/wMAAf8DAAH/AQABgAEAAf8DAAH/A08BlwEAAYQBggH/AQABhAGCAf8BAAGEAYIB/wEAAYQBggH/ - AQABhAGCAf8BAAGEAYIB/wEAAYQBggH/AQABhAGCAf8DRQF9KAAM/wG1AagBoQH/AwAd/xAAAk0BTAGR - AagBgQFAAf0B3AGxAQAB/wH3AeYBwwH/AfkB5QGxAf8B6QHMAY8B/wJ/AUcB/gFUAlIBphAAAysB/AHX - AdgB1wH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AQABgwGB - Af8DAAH/AQABhAGCAf8D1gH/AfcB8QHrAf8B9wHxAesB/wH3AfEB6wH/AfcB8QHrAf8B9wHxAesB/wH3 - AfEB6wH/A9YB/wEAAYQBggH/AQABhAGCAf8BAAGEAYIB/wEAAYQBggH/AQABhAGCAf8BAAGEAYIB/wEA - AYQBggH/GAAE/wMAAf8DAAX/AekB4wHgAf8DAAH/AwAB/wMAAf8DAAH/Ac4BwQG5Af8MAAFZAlYBvgGv - AgAB/wG9AgAB/wHZAa0BAAH/AfgB6QHMAf8B+gHoAccB/wHtAdIBngH/AckBkgEAAf8BtgIAAf8BXQJZ - AdIMAAMrAfwB1wHYAdcB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AfEB8wHyAf8B8QHzAfIB/wHxAfMB8gH/ - AeoB7QHsAf8DAAH/AwAB/wMAAf8BgQGGAYQB/wMAAf8BAAGEAYIB/wH3AfEB6wH/AaQCAAH/AagCAAH/ - AagCAAH/AagCAAH/AagCAAH/AaQCAAH/AfcB8QHrAf8BAAGEAYIB/wPZAf8D2QH/A9kB/wPZAf8D2QH/ - AQABhAGCCf8B8wHwAe4R/wMAAf8DAAn/Ac4BwQG5Df8BtQGoAaEB/wgAAzgBXAGcAgAB/wGnAgAB/wHC - AYUBAAH/AeoBzQGhAf8B9AHbAbAB/wHxAdQBngH/AeoByAGOAf8B0gGgAQAB/wGzAgAB/wGeAgAB/wFF - AkQBfAgAAysB/AHXAdgB1wH/AwAB/wMAAf8ByAHRAc4B/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA - Af8DAAH/AwAB/wGDAYkBhwH/AwAB/wEAAYQBggH/AfgB8gHsAf8BqAIAAf8BtgIAAf8BtwIAAf8BtwIA - Af8BtwIAAf8BqAIAAf8B9wHxAesB/wEAAYQBggH/A+sB/wPrAf8D6wH/A+sB/wPtAf8BAAGEAYIB/wG1 - AagBoQH/AwAB/wMAAf8DAAH/AwAB/wMABf8BtQGoAaEB/wMACf8BtQGoAaEF/wHYAdIBzgH/AbUBqAGh - Bf8IAAFfAlcB6AGZAgAB/wGzAgAB/wG7AgAB/wHjAcABkAH/AewBzwGgAf8B3gGxAQAB/wHMAZEBAAH/ - AcMBhwEAAf8BtgIAAf8BngIAAf8BWQJCAfUIAAMrAfwB1wHYAdcB/wMAAf8DAAH/AwAB/wHLAdMBzwH/ - Ac0B1gHTAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AYcBjAGKAf8DAAH/AQABhAGCAf8B+AHy - AewB/wGoAgAB/wHOAZsBAAH/AcIBhgEAAf8BvAIAAf8BtAIAAf8BqAIAAf8B+AHyAewB/wEAAYQBggH/ - AQABhAGCAf8BAAGEAYIB/wEAAYQBggH/AQABhAGCAf8BAAGEAYIB/wNFAX0E/wG1AagBoQX/AekB4wHg - Bf8BtQGoAaEF/wHYAdIBzgH/AbUBqAGhDf8BtQGoAaEB/wHpAeMB4AH/AdgB0gHOBf8IAAMrAfwBmAIA - Af8BsQIAAf8BxgGXAQAB/wHCAYgBAAH/AcYBiQEAAf8BxQGIAQAB/wG9AYABAAH/AbMCAAH/AawCAAH/ - Aa8CAAH/AZECAAH/AwgBCwQAAysB/AHXAdgB1wH/AwAB/wEAAYIBAAH/AYoBowGZAf8B2wHjAeAB/wHG - AdIBzQH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wGKAY8BjQH/AwAB/wEAAYQBggH/AfgB8gHs - Af8BqAIAAf8BzAGYAQAB/wHLAZgBAAH/AcwBmAEAAf8BzAGYAQAB/wGoAgAB/wH4AfIB7AH/AQABhAGC - Af8D7QH/A+0B/wPtAf8D7QH/A9YB/wEAAYQBggn/AbUBqAGhAf8B6QHjAeAB/wG1AagBoQn/AdgB0gHO - Af8BtQGoAaEF/wQABP8BtQGoAaEB/wG1AagBoQn/BAADHAEnAZUCAAH/AZgCAAH/AcwBngGDAf8BzgGh - AQAB/wHSAaUBAAH/AcwBmAEAAf8BxAGKAQAB/wG4AgAB/wGxAgAB/wGsAgAB/wHAAYUBAAH/AagCAAH/ - AzIBUQQAAysB/AHXAdgB1wH/AwAB/wMAAf8B1AHeAdkB/wEAAYQBAAH/AwAB/wMAAf8DAAH/AwAB/wMA - Af8DAAH/AwAB/wMAAf8BjQGSAZEB/wMAAf8BAAGEAYIB/wH3AfEB6wH/AaQCAAH/AagCAAH/AagCAAH/ - AagCAAH/AagCAAH/AaQCAAH/AfgB9AHuAf8BAAGEAYIB/wMAAf8DAAH/AwAB/wMAAf8D7QH/AQABhAGC - Cf8B6QHjAeAB/wHpAeMB4AH/AdgB0gHOCf8B6QHjAeAB/wHOAcEBuQ3/AekB4wHgAf8B2AHSAc4J/wQA - AwcBCQF/AUYBQAH+AaUCAAH/AeMByAG4Af8B5AHGAbAB/wHhAcABowH/AcgBlQEAAf8BtwIAAf8BrgIA - Af8BqAIAAf8BogIAAf8BwAGMAQAB/wGiAgAB/wMSARkEAAMrAfwB1wHYAdcB/wMAAf8BgQGmAZcB/wEA - AaQBlQH/AQABogGUAf8BAAGiAZIB/wEAAaABkAH/AQABnwGOAf8BAAGdAYwB/wEAAZgBhQH/AQABiQEA - Af8DAAH/AwAB/wGQAZUBkwH/AwAB/wEAAYQBggH/AccCyAH/AfcB8QHrAf8B9wHxAesB/wH3AfEB6wH/ - AfcB8QHrAf8B9wHxAesB/wH3AfEB6wH/A9YB/wEAAYQBggH/AZACAAH/AZACAAH/AZACAAH/AwAB/wPt - Af8BAAGEAYIB/wQABP8B2AHSAc4B/wHpAeMB4A3/AwAB/wMABf8DAAH/AwAB/wMAAf8BtQGoAaEJ/wgA - AV0BXAFaAfABvAGHAQAB/wHsAdgBzAH/AesB0QG/Af8B5AHEAakB/wHMAZkBAAH/AawCAAH/AaYCAAH/ - AZ0CAAH/AaACAAH/AaoCAAH/A00B+ggAAysB/AHXAdgB1wH/AwAB/wEAAZABhAH/AQABkAGEAf8BAAGO - AYIB/wEAAY0BgAH/AQABjAEAAf8BAAGLAQAB/wEAAYkBAAH/AQABiAEAAf8BAAGHAQAB/wEAAYUBAAH/ - AwAB/wGTAZgBlgH/AwAB/wNUAawBAAGEAYIB/wEAAYQBggH/AQABhAGCAf8BAAGEAYIB/wEAAYQBggH/ - AQABhAGCAf8BAAGEAYIB/wEAAYQBggH/AY8BhQEAAf8BmgIAAf8BkwIAAf8BiwIAAf8DAAH/A+4B/wEA - AYQBggH/BAAI/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DABX/CAADTgGWAb0BjQGJAf8B1AGy - AacB/wHqAdQBxQH/Ac4BoQGIAf8ByAGUAQAB/wGwAgAB/wGkAgAB/wGYAgAB/wGlAgAB/wGRAgAB/wNW - AbMIAAMrAfwB1wHYAdcB/wMAAf8BmwG/AbEB/wGYAb4BrwH/AZcBvQGuAf8BlAG8AawB/wGSAboBqgH/ - AZABuQGpAf8BjgG4AagB/wGNAbYBpQH/AYoBtQGkAf8BhwGzAaIB/wMAAf8BlwGbAZoB/wMAAf8ZAAGE - AYIB/wPuAf8DAAH/AaYBhAEAAf8BpQGEAQAB/wGmAYQBAAH/AaYBhAEAAf8DAAH/A+4B/wEAAYQBggH/ - BAAI/wMABf8B6QHjAeAB/wHOAcEBuQH/Ac4BwQG5Af8DAA3/GAADAgEDA2QB5wHAAZIBjQH/AeQBywHB - Af8B1gGvAZ4B/wG1AgAB/wG7AYEBAAH/AaoCAAH/AaICAAH/AbICAAH/AV0CTgHwAwABAQgAA2UB9AHV - AdcB1gH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AZYBmQGY - Af8BUwJaAfAZAAGEAYIB/wPtAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8D8AH/AQABhAGCAf8IABT/ - AekB4wHgAf8DAAn/IAADCgEOA14B2QHUAbIBrQH/AcIBkgGLAf8BoAIAAf8BqgIAAf8BowIAAf8BsAIA - Af8BXAJXAd8DEgEYDAADTAGSA00B+gHVAtcB/wHdAd4B3QH/AdwB3gHdAf8B3ALdAf8B3ALdAf8B3ALd - Af8B3ALdAf8B3ALdAf8B3ALdAf8B2QLbAf8BywHNAcwB/wGxAbQBsgH/A2oB+QNJAYgZAAGEAYIB/wHH - AsgB/wPtAf8D7QH/A+0B/wPtAf8D7QH/A+0B/wPWAf8BAAGEAYIB/xgAEP8sAAM8AWYDXQHSA10B7QJi - AWAB7wFdAloBygNBAXIUAAMKAQ4DSQGHA2EB7gNfAfsDXwH7A18B+wNfAfsDXwH7A18B+wNfAfsDXwH7 - A18B+wNfAfsBXgFkAWIB7ANIAYMDCQEMGAADVAGsAQABhAGCAf8BAAGEAYIB/wEAAYQBggH/AQABhAGC - Af8BAAGEAYIB/wEAAYQBggH/AQABhAGCAf8BAAGEAYIB/wNPAZccAAT/OAADGgElAzEBTQM1AVUDIwEz - AwQBBRgAAZkCAAH/BAABmQIAAf8BmQIAAf8BmQIAAf8DAAH/AwAB/wMAAf8DAAH/AZkCAAH/AZkCAAH/ - AZkCAAH/BAABmQIAAf8EAAH8Af4B/QH/AfwB/gH9Af8BiAHOAfAB/wEAAaEB7QH/AQABoQHtAf8BAAGh - Ae0B/wGIAc4B8AH/AfwB/gH9Af8B3AHdAeQB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wH8Af4B/QH/ - UAADNQFWAmABXAHUAdkBxAGZAf8B6wHfAcgB/wHtAeQBzwH/AeABzwGtAf8DXQHtA0gBhgMJAQwlAAKZ - Af8BmQP/AQACzAH/AwAB/xgAAfwB/gH9Af8BAAGhAe0B/wEAAa4B8QH/AQABrgHxAf8BAAGuAfEB/wEA - Aa4B8QH/AQABrgHxAf8BiAHOAfAB/wH8Af4B/QH/Aa8BrAGiAf8DAAH/AQABjgEAAf8BAAGOAQAB/wMA - Af8DAAH/AwAB/0sAAQEDUAGaAeEByAGXAv8B+gHnAv8B+gHlAv8B+wHmAv8B+wHmAv8B+gHlAv8B+gHn - Af8B8AHWAa0B/wJgAVsB1gMTARonAAH/AwAB/xwAAdcB7gH0Af8BAAGuAfEB/wEAAa4B8QH/AQABrgHx - Af8BAAGuAfEB/wEAAa4B8QH/AQABrgHxAf8BAAGuAfEB/wH8Af4B/QH/AfwB/gH9Af8BAAGOAQAB/wEA - AY4BAAH/AQABjgEAAf8BAAGOAQAB/wEAAY4BAAH/AwAB/0gAA0oBjQHlAawBAAH/AfUBtgEAAf8B/QHs - AbUC/wH1AcQC/wH3AcgC/wH3AccC/wH1AcQC/wHyAb4B/wH0AbUBAAH/Ae8BqgEAAf8CYAFbAdYDCQEM - CwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ - AfwB/gH9Af8BAAGuAfEB/wEAAa4B8QH/AQABrgHxAf8BAAGuAfEB/wEAAa4B8QH/AQABrgHxAf8BAAGh - Ae0B/wH8Af4B/QH/AfwB/gH9Af8BAAGOAQAB/wEAAY4BAAH/AQABjgEAAf8BAAGOAQAB/wEAAY4BAAH/ - AwAB/ygAAewB0gHsAf8DAAH/AeYBzAHmAf8QAAMjATMCqAFAAf0B8AGfAQAB/wHvAZ4BAAH/AfYBxAEA - Av8B8wG+Av8B9QHBAv8B9QHBAv8B8wG+Av8B8AG4Af8B8wG1AQAB/wHuAZwBAAH/AekBswEAAf8DSAGG - BQACmQH/AQACmQH/AQACmQH/AQACmQH/AQACmQH/AQACmQH/AQACmQH/AQACmQH/AQACmQH/AQACmQH/ - AQACmQH/AQACmQH/AQACmQH/AQACmQH/AQACmQH/AwAB/wH8Af4B/QH/AdcB7gH0Af8BAAGuAfEB/wEA - Aa4B8QH/AQABrgHxAf8BAAGuAfEB/wEAAa4B8QH/AdcB7gH0Af8B/AH+Af0B/wHcAd0B5AH/AQABjgEA - Af8BAAGOAQAB/wEAAY4BAAH/AQABjgEAAf8BAAGOAQAB/wEAAY4BAAH/JAAB7QHYAe0B/wGpAQABqAH/ - AYACAAH/AwAB/wHrAdEB6wH/DAADUAGdAfABsAEAAf8B7QGaAQAB/wHsAZkBAAH/AfIBtgEAAv8B8QG5 - Av8B8gG8Af8B/gHvAbcB/wH9AegBrQH/Af4B7QGzAf8B7AGbAQAB/wHrAZcBAAH/Ae4BpQEAAf8DXQHt - AwQBBQEAApkF/wGZA/8BmQHMAv8BmQP/AZkBzAL/AwAB/wMAAf8DAAH/AZkBzAL/AZkD/wGZAcwC/wGZ - AcwC/wGZAcwC/wEAApkB/wMAAf8B0AG2AZ4B/wH8Af4B/QH/AfwB/gH9Af8B1wHuAfQB/wGIAc4B8AH/ - AYgBzgHwAf8B/AH+Af0B/wH8Af4B/QH/AfwB/gH9Af8BpQGPAQAB/wEAAY4BAAH/AQABjgEAAf8BAAGO - AQAB/wEAAY4BAAH/AQABjgEAAf8BAAGOAQAB/yAAAegB0QHoAf8BqgEAAakB/wHQAQABzwH/AwAB/wGW - AQABlQH/AwAB/wHwAdUB8AH/CAACXAFXAd8B6gGWAQAB/wHqAZQBAAH/AfgBzAGDAv8B6wGuAv8B7QGy - Af8B/gHuAbQB/wHuAagBAAH/AeoBlAEAAf8B6QGWAQAB/wHpAZIBAAH/AegBkQEAAf8B6AGRAQAB/wHd - AbgBAAH/AyQBNQEAApkF/wGZA/8BmQP/AZkBzAL/AwAB/wMAAv8CAAL/AgAB/wMAAf8BmQHMAv8BmQP/ - AZkBzAL/AZkBzAL/AQACmQH/AwAB/wGxAgAB/wGxAgAB/wGlAY8BAAH/AaUBjwEAAf8B6AHZAc4B/wH8 - Af4B/QH/AfwB/gH9Af8B1wHuAfQB/wGlAY8BAAH/AQABjgEAAf8BAAGOAQAB/wEAAY4BAAH/AQABjgEA - Af8BAAGOAQAB/wEAAY4BAAH/AQABjgEAAf8EAAGrAfAB9wH/AasB4gHlAf8BrAHOAcwB/wGtAbsBtQH/ - Aa4BpwGcAf8EAAHkAcoB5AH/AakBAAGoAf8B0gEAAdEB/wHUAQAB0wH/AwAB/wGeAQABngH/AY4BAAGN - Af8DAAH/CAABzAGZAQAB/wHnAZABAAH/AfMBtwEAAv8B4wGfAv8B5gGlAv8B6AGqAf8B/gHmAaYB/wHn - AY8BAAH/AeYBjgEAAf8B5gGNAQAB/wHmAY0BAAH/AeUBjAEAAf8B5QGLAQAB/wHjAbEBAAH/AzUBVQEA - ApkF/wGZA/8BmQT/AgAB/wEAAZkBAAH/AQABmQEAAv8B2gEAAf8DAAH/AQABmQEAAf8DAAH/AZkBzAL/ - AZkD/wGZAcwC/wEAApkB/wMAAf8BsQIAAf8BsQIAAf8BsQIAAf8BsQIAAf8B9AHpAdgB/wH8Af4B/QH/ - AdwB3QHkAf8BAAGOAQAB/wEAAY4BAAH/AQABjgEAAf8BAAGOAQAB/wEAAY4BAAH/AQABjgEAAf8BAAGO - AQAB/wEAAY4BAAH/AQABjgEAAf8cAAGqAQABqQH/AdABAAHPAf8B1QEAAdUB/wG8AQABuwH/Ad4BmAHd - Af8BjwEAAY4B/wGeAQABngH/AwAB/wgAAm0BUQH3AesBnQEAAv8B2gGQAv8B3wGYAv8B4gGfAv8B5AGj - Af8B/gHlAaUB/wHtAaoBAAH/AeUBkQEAAf8B5QGSAQAB/wHlAZMBAAH/AeUBkwEAAf8B5QGPAQAB/wHg - AaoBAAH/AzEBTQEAApkF/wGZA/8BmQT/AgAC/wHaAQAC/wHaAQAC/wHaAQAC/wHaAQAB/wMAAf8DAAH/ - AZkD/wGZAcwC/wGZA/8BAAKZAf8DAAH/AbECAAH/AbECAAH/AaUBjwEAAf8BrwGsAaIB/wH8Af4B/QH/ - AfwB/gH9Af8B4gHNAbAB/wMAAf8BAAGOAQAB/wEAAY4BAAH/AQABjgEAAf8BAAGOAQAB/wEAAY4BAAH/ - AQABjgEAAf8BAAGOAQAB/wEAAY4BAAH/AasB8AH3Af8BqwHlAekB/wGsAtUB/wGsAcQBwQH/Aa4BtQGs - Af8BrgGkAZgB/wQAAagBAAGnAf8B0gEAAdEB/wG8AQABuwH/Ae8BpQHuAf8B+wGfAfoB/wHvAZ0B7gH/ - AZcBAAGWAf8DAAH/CAACXAFZAc8B6AGYAQAB/wH+AdoBlwL/Ad8BnwL/AeIBpQL/AeMBqQL/AeUBrAH/ - AfkB1gGbAf8B6gGoAQAB/wHsAa8BAAH/AfMBwAGCAf8B7AGvAQAB/wHlAZgBAAH/AcwBjgEAAf8DGQEj - AQACmQX/AZkD/wGZBP8CAAP/AcwB/wMAAf8DAAL/AdoBAAL/AdoBAAL/AgAB/wGZAcwC/wGZA/8BmQHM - Av8BAAKZAf8DAAH/AbECAAH/AdABtgGeAf8B/AH+Af0B/wH8Af4B/QH/AdABtgGeAf8B9AHpAdgB/wH8 - Af4B/QH/Aa8BrAGiAf8BAAGOAQAB/wEAAY4BAAH/AQABjgEAAf8BAAGOAQAB/wEAAY4BAAH/AQABjgEA - Af8BAAGOAQAB/wEAAY4BAAH/HAABpwEAAaYB/wG8AQABuwH/Ae8BpQHuAf8B+wGbAfoB/wH7AZgB+gH/ - AfsBmQH6Af8B5wGYAeYB/wGRAQABkAH/CAACRgFFAX8B3AGMAQAB/wH5AdEBlgL/AeEBqQL/AeMBrgL/ - AeQBsgL/AeUBtAH/AfsB3AGqAf8B7wG9AYkB/wH0AckBlwH/AfIBxQGTAf8B7QG6AYgB/wHkAZoBAAH/ - AmABXAHUBQACmQX/AZkD/wGZA/8BmQP/AQABmQEAAf8BAAHMAQAB/wEAAZkBAAH/AwAC/wIAAf8BmQHM - Av8BmQP/AZkBzAL/AZkD/wEAApkB/wMAAf8B9AHpAdgB/wH8Af4B/QH/AfQB6QHYAf8BsQIAAf8BsQIA - Af8BsQIAAf8B4gHNAbAB/wH8Af4B/QH/Aa8BrAGiAf8DAAH/AQABjgEAAf8BAAGOAQAB/wEAAY4BAAH/ - AQABjgEAAf8DAAH/AgAB5gH/CAABqwHwAfcB/wGsAtUB/wGuAbUBrAH/Aa4BmQGKAf8EAAHPAYgBzwH/ - AeIBrwHiAf8B+wGrAfoB/wH7AZgB+gH/AfsBmAH6Af8B6gGQAekB/wHPAYgBzwH/AfQB5gH0Af8IAAMO - ARMDXQHtAeoBsQEAAf8B8gHHAZoB/wH7Ad4BsgL/AecBvAH/Af4B5wG9Af8B+gHgAbYB/wH2AdMBqwH/ - Ae4BwQGZAf8B7wHFAZ0B/wHwAcYBoAH/Ac4BhwEAAf8DNQFWBQACmQX/AZkD/wGZA/8BmQP/AZkD/wEA - AZkBAAH/AQABmQEAAf8BAAGZAQAB/wGZAcwC/wGZA/8BmQP/AZkD/wGZAcwC/wEAApkB/wMAAf8B/AH+ - Af0B/wH8Af4B/QH/AdABtgGeAf8BsQIAAf8BsQIAAf8BsQIAAf8BpQGPAQAB/wH8Af4B/QH/AfwB/gH9 - Af8CAAHmAf8CAAHmAf8CAAHmAf8CAAHmAf8CAAHmAf8CAAHmAf8CAAHmAf8cAAHwAdUB8AH/Ac8BiAHP - Af8B7gG+Ae4B/wH7Aa4B+gH/AewBkQHrAf8BzwGIAc8B/wHzAeAB8gH/EAADLwFKAmoBQQH5AfAByQGm - Af8B9wHaAbkB/wH+AeoByAH/Af4B6AHFAf8B/gHpAcgB/wH2AdsBvAH/AfEB0AGzAf8B8gHRAbUB/wHb - AacBAAH/A1ABmgkAApkx/wGZA/8BAAKZAf8DAAH/AfwB/gH9Af8B/AH+Af0B/wGxAgAB/wGxAgAB/wGx - AgAB/wGxAgAB/wGlAY8BAAH/AfwB/gH9Af8B/AH+Af0B/wEAAaEB7QH/AgAB5gH/AgAB5gH/AgAB5gH/ - AgAB5gH/AgAB5gH/AgAB5gH/IAAB8gHbAfIB/wHPAYgBzwH/AeMBrAHjAf8BzwGIAc8B/wHzAeMB8wH/ - GAADLwFKA10B7QHlAbgBiwH/AfoB5gHNAf8B/QHuAdYB/wH5AeUBywH/Af0B7gHYAf8B8gHRAa8B/wGo - AZMBQAH9A0oBjQMAAQEJAAKZAf8BAALMAf8BAALMAf8BAALMAf8BAALMAf8BAALMAf8BAALMAf8BAALM - Af8BAAKZAf8BAAKZAf8BAAKZAf8BAAKZAf8BAAKZAf8BAAKZAf8BAAKZAf8EAAH8Af4B/QH/AfwB/gH9 - Af8BsQIAAf8BsQIAAf8BsQIAAf8BsQIAAf8B0AG2AZ4B/wH8Af4B/QH/AfwB/gH9Af8CAAHmAf8CAAHm - Af8CAAHmAf8CAAHmAf8CAAHmAf8CAAHmAf8CAAHmAf8kAAHyAdsB8gH/Ac8BiAHPAf8B8AHjAfAB/yAA - Aw4BEwJGAUUBfwJcAVkBzwJtAVEB9wHOAZ8BAAH/AlwBVwHfA1ABnQMjATMVAAKZBf8BzAP/AcwD/wGZ - A/8BmQP/AQACmQH/AwAB/xwAAfwB/gH9Af8B/AH+Af0B/wGlAY8BAAH/AbECAAH/AbECAAH/AbECAAH/ - AfQB6QHYAf8B/AH+Af0B/wHcAd0B5AH/AgAB5gH/AgAB5gH/AgAB5gH/AgAB5gH/AgAB5gH/AgAB5gH/ - AgAB5gH/iQACmQH/AQACmQH/AQACmQH/AQACmQH/AQACmQH/AwAB/yAAAfwB/gH9Af8B/AH+Af0B/wHo - AdkBzgH/AbECAAH/AbECAAH/AdABtgGeAf8B/AH+Af0B/wH8Af4B/QH/AgAB5gH/AgAB5gH/AgAB5gH/ - AgAB5gH/AgAB5gH/AgAB5gH/AgAB5gH/AfwB/gH9Af+EAAMHAQoDEwEaAxMBGgMTARoDEwEaAxMBGgMT - ARoDEwEaAxMBGgMTARoDEwEaAxMBGgMTARoDDAEQBAAQ/wEAAYQBAAH/AQABgAEAAf8DAAH/AwAB/wMA - Af8DAAH/AwAB/wMAAf8DABH/AQABnQHZAf8BAAGZAdgB/wEAAZQB1wH/AQABkAHWAf8BAAGMAdUB/wEA - AYgB1AH/AQABhAHTAf8BAAGAAdIB/wIAAdEB/wIAAdEB/wIAAdAB/wIAAc8B/wIAAc8B/wIAAc4F/yYA - Aa4B/wIAAa4B/xQAAxsBJgM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFf - AzkBXwM5AV8DLQFFAwwBEAj/AQABlAEAAf8BAAGPAQAB/wEAAYoBAAH/AZsBxQGdAf8BswHCAZ0B/wG9 - AcEBnAH/Ab4BwwGdAf8BsAHSAbEB/wEAAYgBAAH/AQABoQEAAf8DAAH/AwAN/wEAAaMB2gH/AbwB6wH6 - Af8BvAHrAfwB/wG/Ae4B/gH/AcYB9AL/Ac4B+AL/AdMB+gL/AdAB+AL/AccB8gL/AboB6QH8Af8BswHk - AfkB/wGwAeIB+AH/AbAB4gH4Af8CAAHPBf8iAAGuAf8BhQGqAd0B/wIAAa4B/xYAAYMB/wIAAYQB/wIA - AYQB/wIAAYQB/wIAAYQB/wIAAYQB/wIAAYMB/wIAAYIB/wIAAYEB/wIAAYAB/wMAAf8DAAH/AwAB/wMA - Af8DAAH/AxMBGgT/AQABoQEAAf8BAAGbAQAB/wEAAbcBhgH/Aa4B6AHHAf8BwAHSAaAB/wEAAZcBAAH/ - AQABkQEAAf8BAAGPAQAB/wEAAYsBAAH/AQABnwEAAf8BgAHBAZYB/wEAAaMBAAH/AwAB/wMACf8BAAGo - AdsB/wG/AewB+wH/AQABzwH1Af8BAAGwAewB/wEAAboB7wH/AQABwgHvAf8BAAHGAe8B/wEAAcQB7wH/ - AQABtgHvAf8BAAGlAeYB/wEAAZoB4QH/AQABuAHuAf8BsQHjAfgB/wIAAdAF/wwAAecBqwGGAf8B5QGm - AQAB/wHZAZgBAAH/AbQBpQGhAf8BgQGdAcAB/wGtAcgB6AH/AgABrgH/GgABjAH/AgABjQH/AgABjQH/ - AgABjQH/AgABjQH/AgABjQH/AgABjQH/AgABjAH/AgABiwH/AgABiQH/AgABhwH/AgABhQH/AgABgwH/ - AgABgQH/AwAB/wMTARoE/wEAAagBAAH/AQABwAGNAf8BmQHXAbMB/wEAAcABgAH/AbwBwgEAAf8BAAGb - AQAB/wGQAcoBqQH/AY0ByAGlAf8BigHGAaEB/wGIAcUBngH/AQABtgGFAf8BggHCAZcB/wEAAaUBAAH/ - AwAB/wMABf8BAAGtAdwB/wHBAe4B+wH/AQAB0wH3Af8BAAHbAfwB/wEAAeUC/wGPAe0C/wGXAfIC/wGT - Ae0C/wEAAd8C/wEAAcwB+AH/AQABvgHvAf8BAAG6Ae4B/wGzAeMB+QH/AgAB0QX/CAAB6QGxAY4B/wHv - AccBsQH/AekB2gHRAf8B6QHaAdEB/wHrAbsBngH/AbQBpQGhAf8BhQGqAd0B/x4AAZQB/wIAAZUB/wIA - AZYB/wIAAZYB/wIAAZcB/wIAAZYB/wIAAZYB/wIAAZUB/wIAAZQB/wIAAZIB/wIAAZAB/wIAAY4B/wIA - AYwB/wIAAYoB/wIAAYYB/wMTARoBAAG0AQAB/wEAAa8BAAH/AbUB6gHTAf8BAAG8AQAB/wEAAb0BAAH/ - Ab4BtgEAAf8BAAGfAQAB/wGUAc0BrQH/AQABugGOAf8BAAG4AYkB/wEAAbYBhQH/AQABswGAAf8BAAG1 - AYIB/wGDAcIBmAH/AQABoAEAAf8DAAX/AQABsgHdAf8BwwHvAfsB/wEAAdYB+AH/AQABtgHsAf8BAAG9 - Ae8B/wGVAesC/wEAAZcB3QH/AQABggGrAf8BhAHhAv8BAAGpAekB/wEAAZ8B4QH/AQABvgHvAf8BtAHl - AfkB/wIAAdIF/wgAAe8BxwGxAf8B6QHaAdEB/wHvAccBsQH/Ae8BxwGxAf8B6QHaAdEB/wHrAbsBngH/ - AbQBpQGhAf8eAAGcAf8CAAGdAf8CAAGfAf8CAAGfAf8BjwEAAdkB/wIAAbwB/wIAAZ8B/wIAAawB/wGO - AQAB2AH/AY0BAAHXAf8BhAEAAccB/wIAAaIB/wIAAZUB/wIAAZIB/wIAAY8B/wMTARoBAAG6AQAB/wGS - AdcBrwH/AaAB3gG0Af8BhAHGAQAB/wGoAdABgAH/AcUBpQEAAf8BAAGjAQAB/wGWAc4BsAH/AZQBzQGt - Af8BkQHLAaoB/wGQAcsBqAH/AQABvAGQAf8BigHHAaEB/wEAAaUBAAH/AQABiAEAAf8DAAX/AQABtwHe - Af8BxgHwAfwB/wEAAdkB+AH/AQAB4gH9Af8BkAHoAv8BmQHpAv8BAAGfAd8B/wEAAYsBsgH/AYoB4gL/ - AQAB0AH5Af8BAAHFAfEB/wEAAcEB8AH/AbYB5wH5Af8BAAGDAdMF/wgAA+8B/wHpAdoB0QH/AekB2gHR - Af8B6QHaAdEB/wHvAccBsQH/AekB2gHRAf8B5QGmAQAB/wGhAb0B5wH/AZEBswHnAf8BAAGWAeEB/wEA - AYEBuQH/DgABpAH/AgABpgH/AgABpwH/AgABqAH/AwAB/wMAAf8CAAGoAf8CAAGLAf8DAAH/AwAB/wMA - Af8CAAGtAf8CAAGdAf8CAAGbAf8CAAGYAf8DEwEaAQABvwEAAf8BsAHpAc8B/wGDAdQBkAH/Ab8B3AGK - Af8BwwHLAYIB/wHMAaIBAAH/AQABpQEAAf8BAAGjAQAB/wEAAaEBAAH/AQABnQEAAf8BAAGvAQAB/wGR - AcsBqgH/AQABqwEAAf8BAAGPAQAB/wGhAdgBvAH/AwAF/wEAAbsB3wH/AccB8QH8Af8BAAHcAfkB/wEA - AbsB7QH/AQABvQHvAf8BmwHnAv8BAAGmAeIB/wEAAaQB4QH/AZAB4gL/AQABrQHpAf8BAAGkAeMB/wEA - AcQB8AH/AbgB6AH5Af8BAAGIAdQF/wgAA+8B/wHpAdoB0QH/AekB2gHRAf8B6QHaAdEB/wHpAdoB0QH/ - AekB2gHRAf8B5wGrAYYB/wHmAekB7gH/AeYB6QHuAf8BxQHWAeYB/wGRAbMB5wH/AQABgQG5Af8KAAGs - Af8CAAGuAf8CAAGwAf8CAAGxAf8DAAH/AwAB/wIAAbEB/wIAAZEB/wMAAf8CAAGjAf8DAAH/AwAB/wIA - AbMB/wIAAaMB/wIAAaAB/wMTARoBAAHDAQAB/wG+Ae8B3QH/AQAB0QEAAf8BkAHRAQAB/wG8AeABngH/ - AccBpwEAAf8B0wGwAQAB/wHGAZkBAAH/AcYBvAEAAf8BrwHRAQAB/wEAAaIBAAH/AQABswGBAf8BAAGY - AQAB/wEAAaMBAAH/AbEB4wHOAf8DAAX/AQABvwHgAf8ByAHzAfwB/wEAAd8B+QH/AYkB5gH9Af8BlQHn - Av8BmgHlAv8BqgHuAv8BqAHtAv8BmQHjAv8BAAHVAfkB/wEAAcwB8wH/AQAByAHxAf8BuwHpAfoB/wEA - AY0B1QX/CAAB6QHaAdEB/wPvAf8B6QHaAdEB/wHpAdoB0QH/A+8B/wHvAccBsQH/AekBsQGOAf8B2QGY - AQAB/wHpAdoB0QH/A+8B/wHmAekB7gH/AQABlgHhAf8BgQGdAcAB/wQAAYEBAAG0Af8BgwEAAbYB/wGE - AQABuAH/AYYBAAG5Af8DAAH/AwAB/wGHAQABugH/AgABlwH/AwAB/wGDAQABtwH/AgABqgH/AwAB/wIA - AY8B/wIAAawB/wIAAagB/wMTARoBAAHEAQAB/wG+AfAB3AH/AYEB2AGDAf8BAAHbAQAB/wG/AeUBmgH/ - AcwB3wGnAf8BygGoAQAB/wHCAb0BAAH/AbgB2gGLAf8BpgHYAQAB/wEAAacBAAH/AQABnwEAAf8BAAG8 - AQAB/wEAAasBAAH/AbIB5AHOAf8BAAGCAQAF/wEAAcIB4QH/AckB8wH8Af8BywHzAf0B/wHUAfYB/gH/ - AdcB9gL/AdgB9AL/AeAB+AL/Ad8B+AL/AdoB9QL/Ac0B8QH8Af8BwgHtAfoB/wG9AesB+gH/Ab0B6wH6 - Af8BAAGTAdYF/wgAAekB2gHRAf8B6QHaAdEB/wPvAf8D7wH/Ae8BxwGxAf8B7wHAAaQB/wHlAaYBAAH/ - AeEBnQEAAf8B4QGWAQAB/wHrAbsBngH/A/cB/wPvAf8BkQGzAecB/wQAAYcBAAG6Af8BigEAAb4B/wGM - AQABwAH/AY8BAAHDAf8DAAH/AwAB/wGTAQABxgH/AgABnQH/AwAB/wGPAQABwQH/AZMBAAHSAf8DAAH/ - AgABjAH/AYEBAAG0Af8CAAGwAf8DEwEaAQABxAEAAf8BswHsAdIB/wGbAeIBogH/AZ0B6gGNAf8B1AHt - AbcB/wHQAeoBxwH/Ac8BuQEAAf8BzAGxAQAB/wHLAckBAAH/AQAB2wEAAf8BAAHZAQAB/wEAAdcBAAH/ - AQAB0wEAAf8BAAG7AQAB/wGlAdsBwgH/AQABiAEABf8BAAHDAeEB/wGIAaABqAH/A5EB/wOOAf8BAAG5 - AdwB/wEAAbgB3wH/AQABtQHeAf8BAAGxAd0B/wEAAa0B3AH/AQABqAHXAf8DAAH/AwAB/wIAAY0B/wEA - AZkB2AX/DAABtAHLAeYB/wP3Af8D9wH/Ae8BxwGxAf8B7QG2AZUB/wMAAf8DAAH/AeEBnQEAAf8B5QGm - AQAB/wP3Af8B1wHgAekB/wEAAZYB4QH/BAABjQEAAcEB/wGPAQABxAH/AZUBAAHJAf8BmgEAAcwB/wMA - Af8DAAH/AaIBAAHSAf8CAAGlAf8DAAH/AaIBAAHrAf8DAAH/AwAB/wGRAQABwwH/AYsBAAG9Af8BhAEA - AbcB/wMTARoBAAHEAQAB/wGYAd4BtQH/AbUB6wHMAf8BsQHvAacB/wHJAe4BqQH/AdEB6gHJAf8B1QHP - AY0B/wHZAcsBiwH/Ac0BtAEAAf8CvAEAAf8BmgHWAQAB/wGCAd4BAAH/AQAB3AEAAf8BkQHQAaMB/wGI - AcgBpAH/AQABjwEACf8DsQH/A8YB/wOUAf8D+xH/A/sB/wMAAf8DqwH/A5YJ/wwAAc0B2gHmAf8BtAHL - AeYB/wP3Af8B7wHHAbEB/wHrAbsBngH/AwAB/wMAAf8B5QGmAQAB/wHnAasBhgH/A/cB/wEAAaYB5QH/ - AQABpgHlAf8EAAGRAQABxQH/AZcBAAHLAf8BnQEAAc8B/wGiAQAB0wH/AwAB/wMAAf8BrQEAAdwB/wGG - AQABqAH/AwAB/wMAAf8DAAH/AgABkgH/AZoBAAHLAf8BlAEAAcYB/wGMAQABvwH/AxMBGgEAAcQBAAH/ - AQABxAEAAf8BwAHzAeIB/wG1Ae8BtAH/AbUB8AGsAf8BwQHtAbcB/wHUAeMBtwH/AdkB2AGcAf8B2gHT - AZUB/wHNAbUBAAH/AccBswEAAf8BtQHLAYQB/wGUAd8BmgH/Aa8B5wHNAf8BAAGbAQAB/wEAAZYBAAn/ - A7wB/wPEAf8DoQH/A+4R/wPrAf8DiQH/A6kB/wOkCf8QAAG+AdEB6wH/AbsB0wHsAf8BoQG5AdAB/wGb - AaEBqwH/AbQBpQGhAf8BtAGlAaEB/wGbAaEBqwH/AZcBqwG/Af8BlAG6AewB/wG+AdEB6wH/CAABlAEA - AckB/wGaAQABzgH/AaIBAAHUAf8BpwEAAdkB/wMAAf8DAAH/AbQBAAHjAf8BtgGCAeQB/wG0AYAB4wH/ - AbABAAHfAf8BrAEAAdwB/wGmAQAB1wH/AaABAAHRAf8BmQEAAcwB/wGRAQABxQH/AxMBGgT/AQABxAEA - Af8BhwHXAaAB/wHAAfIB3gH/AccB8gHWAf8B1QHvAdUB/wHQAekBzwH/AdUB2wGmAf8B3AHeAasB/wHb - Ac0BkAH/AdcByAGLAf8ByQHBAY4B/wG9AdUBrwH/AQABxwGRAf8BAAGjAQAN/wPUAf8DugH/A78B/wOm - Af8D8gH/A/0B/wP9Af8D8QH/A5MB/wOoAf8DngH/A8MJ/xAAA+UB/wHNAdoB5gH/AbsB0wHsAf8BtwHR - AewB/wGlAb4B2QH/AaEBuQHQAf8BowHDAe4B/wGjAcMB7gH/AaMBwwHuAf8MAAGVAQABygH/AZoBAAHP - Af8BoQEAAdUB/wGnAQAB2wH/Aa4BAAHhAf8BswEAAeUB/wG3AYIB6QH/AbkBhQHqAf8BtwGDAekB/wGz - AQAB5QH/Aa4BAAHhAf8BqAEAAdsB/wGiAQAB1QH/AZwBAAHPAf8BlAEAAckB/wMRARcE/wEAAcQBAAH/ - AQABxAEAAf8BjAHYAaIB/wHNAfUB6AH/AdQB7QHaAf8BzgHtAdMB/wHPAd8BrwH/AdYB3gG1Af8C1AGi - Af8BzgHQAaEB/wHEAdABqgH/AYcByQGRAf8BAAGvAQAB/wEAAaoBAA3/A/sB/wOuAf8DxAH/A74B/wOh - Af8DlgH/A5MB/wOXAf8DrgH/A64B/wOVAf8D+wn/GAAB1wHgAekB/wG+AdEB6wH/AbQBywHmAf8BtAHL - AeYB/wG0AcsB5gH/AcUB1gHmAf8QAAGUAQAByQH/AZkBAAHOAf8BngEAAdQB/wGkAQAB2QH/AaoBAAHg - Af8BsAEAAeUB/wG2AYAB6gH/AbsBhQHvAf8BuQGDAe0B/wGzAQAB6AH/Aa0BAAHiAf8BpwEAAd0B/wGh - AQAB1gH/AZsBAAHQAf8BlgEAAcsB/wMLAQ8I/wEAAcQBAAH/AQABxAEAAf8BAAHEAQAB/wGlAeEBuwH/ - AboB6gHMAf8BxQHgAb4B/wHFAdoBtAH/Ab0B1wGwAf8BpgHXAawB/wEAAb4BAAH/AQABugEAAf8BAAG2 - AQAV/wPuAf8DrgH/A7wB/wPKAf8DzAH/A8oB/wPCAf8DrQH/A5sB/wPpDf9AAAGRAQABxQH/AZYBAAHL - Af8BmwEAAdAB/wGfAQAB1QH/AaQBAAHaAf8BqAEAAd8B/wGsAQAB4wH/Aa4BAAHlAf8BrwEAAeYB/wGs - AQAB4wH/AakBAAHgAf8BpQEAAdsB/wGgAQAB1gH/AZwBAAHRAf8BlwEAAcwB/wMEAQUQ/wEAAcQBAAH/ - AQABxAEAAf8BAAHEAQAB/wEAAcQBAAH/AQABxAEAAf8BAAHEAQAB/wEAAcQBAAH/AQABwgEAIf8D+wH/ - A9AB/wO6Af8DsQH/A64B/wOzAf8DyQH/A/oR/2gAAwgBCwMkATUDHwEtAwQBBggAGP8B3wHPAfcB/wGQ - AQAB2AH/AcABsAHwHf8YAANLAY4BYgJYAe8BYgJYAe8DSwGOGAADMwFSAy8BSgM5AV8DRAF5AUsCTAGP - A04BmANOAZQBRwJIAYMDOwFkAygBPQMRARcsAAMEAQUDDAEQAxEBFwMNARIBPgI/AWwBWgJgAd4DVAGu - AxwBKAgAFP8BgAEAAdgB/wGgAYgB4CX/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A00B+gHqAaUBAAH/ - AeoBpQEAAf8DTQH6AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AQABpAGAAf8BAAGkAYAB/wEAAaUBgAH/ - AQABpAGAAf8BAAGkAYAB/wEAAaQBgAH/AQABpQGAAf8BAAGlAYAB/wEAAaUBgAH/AQABpAGAAf8BWAJi - Ae8BVQJWAbQDMwFTHAADAQECAwcBCQMxAU4CTwFRAZwCUwFVAa0DSAGHAVsCYQHhAQABuQL/AVcCXwHo - Ax0BKQgAEP8CAAHQAf8BzwHHAe8p/wMAAf8DjQH/A40B/wONAf8DjQH/A40B/wMAAf8B7QGvAYYB/wHt - Aa8BhgH/AwAB/wONAf8DjQH/A40B/wONAf8DjQH/AwAB/wEAAaQBgAH/AQABpAGAAf8BAAGkAYAB/wEA - AaUBgAH/AQABpAGAAf8BAAGkAYAB/wEAAaUBgAH/AQABpQGAAf8BAAGkAYAB/wEAAaQBgAH/AQABpAGA - Af8BAAGlAYAB/wEAAaQBgAH/AVYCWAG8AxQBGxAAAwMBBAMnAToDNQFXAkIBWQH1AgAC/wIAAv8CWgFh - AeQBWQJbAcMBUQJtAfcBTwJRAZwDDQESCAAM/wGAAQAB2AH/AbABkAHoLf8DAAH/AwAB/wMAAf8DAAH/ - AwAB/wMAAf8DWQH1AysB/AMrAfwDZwHyAwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AQABpQGAAf8BAAGl - AYAB/wEAAaQBgAH/AQABpQGAAf8BAAGkAYAB/wEAAaQBgAH/AysB/AFWAlgBuwE8Aj0BZwMjATMDHQQp - AT4DRAF5AVsCYQHhAVACUQGfDwABAQMjATMBXgJlAeUCUwFVAbACVAFWAasCAAL/AysB/AIAAv8CWAFe - Ad0CVwFaAb0CVgFYAbkDMwFSAwQBBgQACP8BzwHHAe8B/wIAAdAx/wwAAwEBAgMZASMBUAFSAVABowMA - Af8BAAGJAQAB/wEAAYoBAAH/A0AB/QNKAYwDGgElAwIBAw0AAaQBgAH/AQABpAGAAf8BAAGkAYAB/wEA - AaUBgAH/AVgCYQHmA0oBjQMdASoDGAEiATwCPQFoAVQCVgGrAVcCWQHCA1MBqgE9Aj4BagMfAS0DJgE5 - CAADAwEEAwcBCgFWAlkBvgEAAbkC/wFZAmQB7AMmATkDFQEdAwYBCAMmATkCVwFZAcICAAL/AgAC/wNU - Aa4DGAEhBAAI/wIAAdAB/wGgAYAB4BH/Ae8B5wH3Af8BwAGoAfAB/wHvAecB9xX/CAADAQECAycBOwFY - AloBwAN/Af4BtQHDAZcB/wHCAbsBjQH/AcEBugGNAf8BmgHBAZYB/wFuAn8B/gFXAVoBVwHFAysBQgMC - AQMJAAGkAYAB/wEAAaQBgAH/AQABpAGAAf8BVgJYAbwDCAELAw0BEQFJAkoBiQFBAmoB+QFbAmAB1gFU - AlYBqwFZAlwBzAEAAaUBgAH/AQABpAGAAf8BXAJkAecDMgFQBAADDQESAzYBWQM+AWwDKwH8AQABuQL/ - A04BmAMFAQcMAAMGAQgCWwFeAdACAAL/AlcBXwHoAy0BRQMAAQEI/wIAAcgN/wLfAfcB/wIAAdgB/wIA - AcgB/wGgAYAB4AH/AZABAAHYAf8BgAEAAdgB/wHvAecB9w3/CAADGAEiA1kBvgMrAfwBlAHJAY8B/wHB - AbkBAAH/AdABsAEAAf8BzQGqAQAB/wGSAakBAAH/AQABqwEAAf8BQAGoAYgB/QFXAVoBVwHFAxoBJQkA - AaUBgAH/AQABpQGAAf8BQQJqAfkBNAI1AVUBRAJFAXwBWQJkAewBAAGkAYAB/wNEAXkDIwE0AzkBXwMo - ATwDOQFfASECXwH7AQABpAGAAf8BWAJeAd0EAAFFAkYBfwFAAY8BqAH9AVoCXwHbAVYCWQG+AUECagH5 - AysBQxQAAzgBXQEhATIBXwH7ASkCTQH6AyQBNQMAAQEE/wLAAfAB/wIAAcgN/wHAAbAB6AH/AYABAAHY - Bf8CsAHwBf8B7wHnAfcB/wIAAdAB/wHvAecB9wn/CAADSQGIA38B/gGAAckBiQH/AY0BvgEAAf8BxQGr - AQAB/wHaAakBAAH/AdYBogEAAf8BswGbAQAB/wGPAakBAAH/AQABpwEAAf8BAAGwAYAB/wFNAU4BTQGW - CQABpAGAAf8BAAGlAYAB/wFCAlkB9QNfAeABAAGlAYAB/wEAAaQBgAH/A1UBtQMkATUBTAJfAfMBAAGl - AYAB/wEAAaUBgAH/Ay4BSANQAZoBAAGlAYAB/wFOAk8BlwQAAVUCVwG3AQABkQL/AVICZQH0A04BmQFY - AmIB7wMtAUUDAAEBEAADDQERAzgBXgNAAXADIwE0AwABAQT/AcABsAHwAf8CAAHQDf8CAAHQAf8B7wHn - AfcJ/wKwAfAF/wHPAccB7wH/AYABAAHQCf8IAANeAdgBmQHcAbEB/wGdAdMBhgH/AboBwwEAAf8BzwGn - AQAB/wHcAawBAAH/Ac4BnAEAAf8BvgGMAQAB/wG4AZYBAAH/AYQBpgEAAf8BgAG/AZgB/wFaAWABWgHe - CQABpAGAAf8BAAGkAYAB/wEAAaQBgAH/AQABpAGAAf8BAAGlAYAB/wEAAaQBgAH/AUECQgFzA0oBigEA - AaUBgAH/A04BmQNSAakBUwJVAa0DOAFdAQABpQGAAf8DLQFGBAADIAEuAVICVAGmATwCPQFnAVoCXQHT - ATICXwH7A0IBdgMKAQ4MAAMCAQMDQwF3AUABjwGoAf0DKwH8Ay0BRQMAAQEE/wLAAfAB/wIAAcAN/wGA - AQAB2BH/Ae8B3wH3Bf8CAAHAAf8B7wHnAfcF/wgAA1kB9QGZAeABrgH/AZMB0wEAAf8BwAHNAYgB/wHO - AasBAAH/Ac4BowEAAf8BwgG2AQAB/wG0AbkBAAH/AbIBqQEAAf8BAAGnAQAB/wGFAcIBmgH/AUkBYgFb - AfYJAAGkAYAB/wEAAaQBgAH/AQABpAGAAf8BAAGkAYAB/wEAAaQBgAH/AQABpAGAAf8DSgGNATwCPQFo - AQABpQGAAf8DMwFSAz8BbQFHAkgBgwFFAkYBfgNdAe0DCAELDAADHAEnAUACqAH9AQABuQL/AVoCXQHK - AyMBNAMJAQwDBwEKAwsBDwMoAT0BWAJfAeMBAAGRAv8BXAJgAdQDEgEYBAAE/wHQAcAB8AH/AgABwAH/ - At8B9wn/Ae8B5wH3Af8BoAGIAeAJ/wLfAfcJ/wIAAcAB/wHQAcgB8AX/CAADZQH0AaEB5QGyAf8BggHe - AQAB/wHGAeYBpQH/AcwBxwGIAf8BxgG3AQAB/wG0AdcBAAH/AYYB1gEAAf8BAAHSAQAB/wEAAb0BAAH/ - AYsByAGeAf8DWQH1CQABpAGAAf8BAAGkAYAB/wEAAaQBgAH/AQABpQGAAf8BAAGkAYAB/wEAAaQBgAH/ - AVUCXAHqAyQBNQFJAkoBiQFYAlwB0QNQAZ4BIQIiATEBTgJdAfADRAF5FAABUgJUAaYBAAG5Av8BXQJh - AeIDLQFFA0cBggNFAX4DTgGYAVgCXwHjAUICWQH1ASECfwH+AzgBXQMCAQMEAAT/AeAB0AHwAf8CAAHI - Af8BoAGIAeAN/wGgAYgB4AH/AYABAAHYAf8BoAGAAeAB/wHQAcgB8AX/AdABwAHwAf8CAAHIAf8B4AHQ - AfAF/wgAA14B1QGnAeYBvQH/AacB6wGhAf8BzwHtAbYB/wHRAdcBowH/AdIBvwEAAf8BvwHCAQAB/wGN - AdEBAAH/AQAB2gEAAf8BAAHTAQAB/wGMAcsBogH/AVoCXwHbCQABpAGAAf8BAAGkAYAB/wEAAaQBgAH/ - AQABpAGAAf8BAAGkAYAB/wEAAaQBgAH/AQABpAGAAf8BXQJhAeIBPAI9AWgDMQFOAT4CPwFsAV4CZQHl - A1YBtgMEAQYUAAMNAREBWQJcAc8DOgFiA1IBqQEAAZEC/wEAAZEC/wFMAl8B8wNKAYoCUwFVAbADTgGZ - AxQBGwgACP8BsAGgAegB/wIAAcAB/wHPAccB7x3/AYABAAHYAf8CAAHIAf8C3wH3Bf8IAANHAYEBlgKo - Af0BtgHwAbwB/wG9Ae8BrwH/Ac0B5QG0Af8B2AHXAZ0B/wHTAcYBggH/AcIBuQEAAf8BrQHLAQAB/wGU - Ad8BnAH/A38B/gNLAY4JAAGkAYAB/wEAAaQBgAH/AQABpQGAAf8BAAGkAYAB/wEAAaUBgAH/AQABpQGA - Af8BAAGkAYAB/wEAAaUBgAH/AQABpQGAAf8BAAGlAYAB/wFZAl0B1wNBAXIDBAEGHAADBgEIAxEBFwFY - AmIB7wEAAZEC/wEAAZEC/wFQAlIBpAJbAWAB1gIAAv8CVwFcAd8DHwEtCAAM/wGAAQAB2AH/AgABwAH/ - AaABiAHgFf8BzwG/Ae8B/wIAAcAB/wIAAdAJ/wgAAxYBHwNXAbcDXwH7AcwB8gHZAf8B0gHsAdMB/wHT - Ad8BsgH/AtoBpwH/AdcBzAGTAf8BywHGAZQB/wMrAfwDWgHAAxkBIwgAA0IBdgFRAlIBoQEAAaQBgAH/ - AQABpQGAAf8BAAGlAYAB/wEAAaQBgAH/AVgCXwHjA1YBswNAAXEDIAEuAwABASwAAwcBCgMmATkDLgFI - AxQBGwJXAVoBvQIAAv8CVQFXAboDCgEOCAAQ/wIAAdAB/wIAAcAB/wIAAcgB/wGgAYAB4AH/AaABgAHg - Af8BoAGAAeAB/wIAAdAB/wIAAcAB/wIAAdAN/wsAAQEDIwEzA1YBtgMrAfwBwAHpAc0B/wHJAeIBvQH/ - AcwB2gGyAf8BwQHVAagB/wN/Af4DWQG/AycBOwMBAQIMAAM6AWEBVgJYAbkDSgGKAzcBWwMiATIDCgEO - TAADCgEOAzABTAMKAQ0MABT/Ac8BvwHvAf8CAAHQAf8CAAHAAf8CAAHIAf8CAAHQAf8BgAEAAdgB/wHA - AbAB6BH/EAADFgEfA0cBgQNdAdMDXwHzA20B9wNhAdoDSgGJAxkBIwMAAQEbAAEBAwQBBQMMARADGAEh - AyUBNwMmATkDHQEpAxQBHAMKAQ4DAwEEDAAB2AHKAcMB/wGNAgAB/wMAAf8BggIAAf8BmQIAAf8BiQIA - Af8DAAH/AwAB/wGAAgAB/wGQAgAB/wGzAZkBjAH/AeEB1wHSCf8B+gH1AfIB/wH6AfUB8QH/JAABzAHS - AdMB/2MAAQEDCAELAzEBTQNVAbUDYQHuA6gB/QMrAfwDYAHrA1YBtAM1AVcDFwEgAwcBCQMAAQEEAAGJ - AgAB/wMAAf8BjwIAAf8B5QHUAckD/wH+Af8B9AHvAesB/wHFAa0BnwH/AwAB/wMAAf8DAAH/AwAB/wMA - Af8BrwGUAYcB/wH1Ae8B7AH/AfEB4wHYAf8B8QHlAdwB/yAAAcIB1AHZAf8BAAGUAbUB/wGjAcYB0AH/ - HAADAQQCAQM3AAEBAwsBDwNPAZcDKwH8A/QB/wP7Af8D/QH/A/0B/wPhAf8BvgK9Af8DTQH6A04BlgMd - ASkDBwEKAwABAQMAAf8BjQIAAf8BugIAAf8B1QGwAZcB/wHXAcMBtwH/AfAB6AHjBf8B0AG7Aa8B/wMA - Af8DAAH/AwAB/wMAAf8DAAH/AZ0CAAH/AfkB9QHyBf8FAAG0Ac0B/wHAAc0B0AH/FQABqgHRAf8BAAGo - AdQB/wGjAcwB2QH/GAADHQEpAj0BPAFnAjoBOQFgAyYBOAMQARUMAAMNARIDJgE4GAADBQEHA1ABmwHs - AusB/wP8Ef8D/gH/AwAB/wOLAf8B3QLcAf8DTgGZAxkBIwMEAQUDAAH/AawCAAH/Aa8CAAH/AwAB/wMA - Af8DAAH/AeIB1gHOA/8B/gH/AZECAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8BsAGWAYoF/wQAAZwB4gH2 - Af8BAAGUAbUB/wEAAZIBogH/AcwB0gHTAf8JAAGzAc4B/wEAAbkB6gH/AQABqAHUAf8BsgHSAdsB/xQA - AxYBHwFcAlkBzAFZAlcBwgFRAlABnwNOAZgCNgE1AVgDIwEzAwMBBAMLAQ8BTQJOAZUBUAJRAZ8UAAMB - AQIDMwFTA38B/gP9Ef8DuAH/A8gB/wPsAf8DAAH/AwAB/wMhAfsDOQFfAw0BEgGFAgAB/wGzAgAB/wGe - AgAB/wMAAf8DAAH/AwAB/wGyAZUBhwX/AaMBgQEAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8B4gHZ - AdQB/wgAAYUB3gH3Af8BAAGvAd0B/wEAAYYBnQH/AQABpgGxAf8BAAGvAcMB/wEAAbMB4gH/AQABwgH0 - Af8BAAGjAc4B/wG6AdYB3QH/FAADSgGKAVkCVgG+AwsBDwMYASIDUAGdAVMCVQGwA0cBgAMvAUoDUAGd - AQABjQHDAf8DSgGMFAADBAEGA1kBxwH7AvoB/wPeAf8DtgX/A+kB/wKbAZwB/wGmAqcB/wOhAf8CmAGa - Af8DAAH/AwAB/wMAAf8DVwG/AxgBIgMAAf8BrwIAAf8BqwIAAf8DAAH/AwAB/wMAAf8BrAGMAQAF/wGm - AYMBAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AbIBlwGKAf8IAAG/AewB+AH/AQAB0QH3Af8BAAG5 - AeoB/wEAAZsBwwH/AQABrwHdAf8BAAG/AfEB/wEAAcIB9AH/AQABowHOAf8BrgHIAc8B/xQAAWECXgHa - Ay4BRwQAAwMBBANOAZgDKwH8AVsCYQHhAVgCXgHdAQ0CfwH+AVECbQH3A0QBehQAAxYBHwMrAfwDAAH/ - AwAB/wPvAf8CvwHAAf8DAAH/AwAB/wIAAZkB/wIAAbQB/wIAAb0B/wIAAacB/wMAAf8DAAH/A0IB9QMk - ATUDAAH/AZYCAAH/AbsCAAH/AaMCAAH/AZ8CAAH/AasBjAEAAf8B1QHFAbwF/wHPAbsBsAH/Aa0BjQEA - Af8BnAIAAf8DAAH/AwAB/wMAAf8DAAH/AZACAAH/DQAB3AH4Af8BAAHEAfQB/wEAAcIB9QH/AQABwgH1 - Af8BAAHCAfUB/wEAAcIB9AH/AQABrwHdAf8BAAGGAZ0B/wGEAasBtgH/EAACYAFZAesDDwEUCAADJgE4 - AVwCYQHcAQABqwHuAf8BAAGhAeEB/wEAAZgB1AH/AysB/ANTAaoDBAEFEAADLQFFAwAB/wMAAf8DAAH/ - AgABmAH/AgABlAH/AgAByQH/AgABygH/AgABygH/AgABygH/AgABygH/AgABygH/AgABygH/AwAB/wMA - Af8DMQFOAwAB/wMAAf8BmgIAAf8BswIAAf8B9AHgAdAV/wHwAdkByAH/AbICAAH/AZoCAAH/AwAB/wMA - Af8BgAIAAf8MAAGaAdkB7AH/AQABxgH1Af8BAAHCAfUB/wEAAcIB9QH/AQABwgH1Af8BAAHCAfUB/wEA - AcIB9QH/AQABswHiAf8BAAGWAbwB/wEAAYYBnQH/Aa4BwAHEAf8IAAJeAVsB2QMHAQoMAAFVAlYBtAEA - Ab4B+QH/AQABtAH2Af8BAAGoAeoB/wEAAZwB2QH/AQ4CfwH+AV4CYQHaAzoBYgMvAUoDNAFUAwEBAgMv - AUoDAAH/AwAB/wMAAf8CAAHEAf8CAAHKAf8CAAHJAf8CAAGpAf8CAAGlAf8CAAHKAf8CAAHKAf8CAAHK - Af8CAAHKAf8CAAG1Af8DAAH/AzIBUQGAAgAB/wMAAf8DAAH/AwAB/wGUAgAB/wGfAgAB/wHNAboBrwX/ - Ac8BuwGvAf8BoQIAAf8BmAIAAf8BowIAAf8BuwIAAf8BlgIAAf8DAAH/AYACAAH/DQABvAHmAf8BAAHC - AfUB/wEAAcIB9QH/AQABwgH1Af8BAAHCAfUB/wEAAcIB9AH/AQABwgH0Af8BAAHCAfQB/wEAAcIB9AH/ - AQABtAHhAf8BAAGWAbwB/wEAAbMByQH/BAADUAGeAxEBFwgAAzUBVwNiAekBAAHPAfsB/wEAAcoB+wH/ - AQABvQH6Af8BEQJ/Af4DKwH8ASkCTQH6AUwCXwHzAVUCVwG6AUcCSAGDAxgBIQMgAS8DAAH/AwAB/wIA - AckB/wIAAckB/wIAAY4B/wMAAf8DAAH/AgABmwH/AgABygH/AgABygH/AgABqAH/AgABqAH/AwAB/wNA - Af0DJgE4AZACAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8BrgGOAQAF/wGlAYIBAAH/AwAB/wMAAf8DAAH/ - AasCAAH/Aa4CAAH/AwAB/wGOAgAB/wkAAa4BzwH/AQABvAHuAf8BAAHCAfQB/wEAAcIB9AH/AQABwgH0 - Af8BAAHCAfUB/wEAAcIB9AH/AQABxgH1Af8BAAHPAfcB/wEAAdYB+AH/AY0B3gH1Af8BvwHsAfgB/wgA - AysBQgMzAVMEAAMkATYDYAHUAYsB2gH7Af8DYgH2AYkB2QH8Af8BAAHOAfsB/wFRAm0B9wFQAlIBowMu - AUgDCgEOAyUBNwMvAUoEAAMFAQcDXgHlAgABhwH/AgABygH/AgABjAH/AwAB/wMAAf8CAAG1Af8CAAHK - Af8CAAHKAf8CAAHKAf8CAAGYAf8DAAH/AwAB/wNZAdcDFQEdAbIBlwGKAf8DAAH/AwAB/wMAAf8DAAH/ - AwAB/wGuAY8BAAX/Aa8BjgEAAf8DAAH/AwAB/wMAAf8BnwIAAf8BtAIAAf8DAAH/AbABlgGJAf8FAAGr - AcQB/wEAAb4B7QH/AQAByAH1Af8BAAHNAfYB/wEAAcgB9QH/AQABxAH0Af8BAAHCAfQB/wEAAb8B8QH/ - AQABwQHqAf8YAAMBAQIDPAFmAwwBEANDAXcDWgG9A04BlgNDAXgDXQHXAQAB1QH8Af8BWgJgAd4bAAEB - A0YBgQMAAf8DAAH/AwAB/wIAAcEB/wIAAaIB/wIAAcEB/wIAAcoB/wIAAcoB/wIAAcoB/wMAAf8DAAH/ - AwAB/wNEAXwDCQEMAeIB2AHTAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wGXAgAF/wHiAdUBzQH/AwAB/wMA - Af8DAAH/AbICAAH/AagCAAH/AwAB/wHiAdgB0wH/AQAB1AHtAf8BAAHWAfgB/wGcAeIB9gH/Ab8B7AH4 - Af8BzAHuAfgB/wHMAe4B+AH/AQAB2wH4Af8BAAHEAfQB/wEAAbwB7gH/AQABrwHJAf8cAAMPARQDFgEf - AwkBDAwAAysBQgNcAfgDXAHMHAADCgEOA1kB1wMAAf8DAAH/AgABjAH/AwAB/wIAAZIB/wIAAcoB/wIA - AbkB/wIAAcYB/wMAAf8DAAH/A1gBywMTARoDAQECBP8BrwGUAYYB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ - AdABuwGwBf8B8gHrAeYB/wHXAcYBvAH/AdgBtgGeAf8BtwIAAf8BiQIAAf8BrgGTAYYF/xgAAc0B7QH2 - Af8BAAHRAfcB/wEAAbwB7gH/AQABvgHRAf84AANJAYcDVgGzIAADGwEmA1gB3QMAAf8DAAH/AgABugH/ - AgABpAH/AgABqwH/AwAB/wMAAf8DAAH/A1oB0wMeASsDBAEFBAAE/wH4AfUB9AH/AZ0CAAH/AwAB/wMA - Af8DAAH/AwAB/wMAAf8BxQGsAZ4B/wH0Ae0B6AX/AeEBzgHBAf8BiAIAAf8BnAIAAf8B+AH2AfUF/xwA - AY0B3gH1Af8BAAG0AeEB/wGjAcwB2QH/OAADDAEQAy0BRSQAAxABFQNQAZoDUQH3AwAB/wMAAf8DAAH/ - AwAB/wNSAfQDTAGTAxMBGgMDAQQIAAj/AfkB9wH2Af8BsAGVAYgB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ - AYMCAAH/AYsCAAH/AYACAAH/Aa4BkwGGAf8B+QH4AfcJ/xwAAc0B7QH2Af8BAAHEAesB/wHLAeAB5gH/ - PAADAQECKwABAQMSARgDNgFZA0UBfQNFAXwDNQFXAxIBGQMEAQYDAAEBDAAQ/wHiAdgB0wH/AbMBmQGM - Af8BkAIAAf8DAAH/AwAB/wGNAgAB/wGwAZUBiAH/AeEB1gHREf8gAAGFAd4B9wH//wAsAAH/AwAB/wMA - Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/HAADWQG/A1kBv6sAAf8D/gP/ - Af4B/wH9Df8B/gH/AfwB/wH9A/8B/gP/Af4C/wH9A/8B/gL/AwAB/xgAA1kBvwEAAdEBoAH/AQABzwGe - Af8DWQG/MAADFgEeA0kBiANVAbUDRAF5AwQBBSQAAxwBKAMxAU4DRAF7ATACMQFNAzgBXAMKAQ4DBgEI - IwAB/wH9BP8C/QL/Af4L/wH+BP8B/gH/Af0B/gL/Af0E/wH+Av8B/QH/Af4B/wMAAf8IAANGAX4BnQIA - Af8BpAIAAf8BzQKwAf8BlwIAAf8BpgG/AbEB/wGTAdwB4gH/AQABvQHxAf8BrgHeAfkB/wEAAcQB9QH/ - AQABwAHzAf8DRgF+IAADFgEeAjYBNQFYA0gBhQNdAe0DIAEuHAADBgEIAzABTAFSAlMBqAFdAmEB4gFO - Al0B8AFaAmEB5AFXAlwB3wNOAZQDNQFWAwcBCgMBAQIPAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ - AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/CAADRgF+AwAB/wGyAYQBhQH/AYgCAAH/ - AwAB/wGbAasBnwH/AYIB1gHfAf8BAAGkAe4B/wEAAbEB8AH/AY4B0gH5Af8BAAGqAfAB/wNGAX4gAAMD - AQQDJAE2AlYBVAGrAWECXAHcAxEBFxgAAwEBAgM3AVoBWwJgAdYBAAGmAbsB/wEAAa8BwwH/AQABtgHJ - Af8BlgHGAdYB/wGUAboBxwH/AYQBswHBAf8DXwHjA0MBeAMdASoPAAH/AgABygH/AgABygH/AgABygH/ + Af8B9gHvAeMB/wH2Ae8B4wH/AdcB0QHGAf8DXAHfBAADhgH/A/cB/wEAAu4B/wHDAtsB/wH1AYIBAAL/ + Ac8BAAH/AbABzwEAAf8BgAGkAQAB/wHAAbMBAAH/AccBtgEAAf8BgAIAAf8BmwIAAf8BvALcAf8BAALa + Af8DggH/A1gB7wMAAf8CowGnAf8CuwHAAf8BugG+AcUB/wG5AboBxgH/AYEBhAGTAf8DAAH/ApMBqAH/ + AoYBnQH/AwAB/wIAAYQB/wKaAa8B/wKVAakB/wIAAY8B/wMAAf8DWAHvAxUBHQJnAVkB8gHrAdgBzwH/ + AewB2QHPAf8B7AHZAc8B/wHsAdkBzwH/AesB2AHPAf8B3AG9Aa8B/wGbAgAB/wGkAgAB/wMAAf8B7wHm + AeUB/wHvAeMB4gH/AekB0wHRAf8DAAH/AzEBTgQAA2IB7wHzAfIB8AH/AfQB6wHdAf8B8QHmAdUB/wH3 + AfEB5wH/AfoB9gHvAf8B+gH2Ae8B/wH6AfYB7wH/AfoB9gHvAf8B+gH2Ae8B/wH6AfYB7wH/AfoB9gHv + Af8B2wHXAdAB/wNcAd8EAAOGAf8D9wH/AQAC8AH/AQAC6gH/AdABrAGWAf8BrQHAAYQB/wEAAaoBAAH/ + AQABhgEAAf8BAAGOAQAB/wHAAZ8BAAH/AfgBnAEAAf8ByQGxAZ0B/wEAAuoB/wEAAtwB/wOCAf8DWAHv + AwAB/wKmAaoB/wG/AsIB/wHLAc8B0gH/AYABgwGKAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8CAAGB + Af8CkwGlAf8CgAGOAf8CAAGAAf8DWAHvBAADLAFEAmEBWAHuAdcBtQGlAf8B3QG/AbIB/wHcAb8BsQH/ + AcUBlwGDAf8BogIAAf8BsgGFAYMB/wGnAYEBgAH/AYgChAH/AfwC9wH/AfQC7AH/Ae4B5AHjAf8BiQIA + Af8DPQFqBAADYgHvAdcBxQG2Af8B4QHOAb8B/wHkAdABwQH/AecB0wHDAf8B6QHWAcYB/wHsAdkByAH/ + Ae8B2wHLAf8B8gHeAc0B/wH1AeEBzwH/AfcB4wHSAf8B+QHlAdQB/wHbAcoBuwH/A1wB3wQAA4YB/wP3 + Af8BlgLpAf8BAALvAf8BAALpAf8BAAHBAZUB/wEAAbYBAAH/AQABpwEAAf8BAAGJAQAB/wEAAYMBAAH/ + AcgBsAGdAf8BAALqAf8BAALuAf8BhwLVAf8DggH/A1gB7wMAAf8BkAGTAZUB/wG+AcIBwwH/AdIB1gHa + Af8DAAH/AwAB/wMAAf8CAAGEAf8DAAH/AwAB/wMAAf8DAAH/ApMBowH/AoEBiwH/AwAB/wNYAe8IAAMP + ARQCXwFaAeMBrgIAAf8BqwIAAf8BtQGAAQAB/wHAAZcBlgH/AbwBkwGRAf8BsgGNAYsB/wGWApMB/wH9 + AvsB/wH7AvgB/wH4AvMB/wGiAp0B/wNIAYUEAANiAe8BpwIAAf8BrwIAAf8BtgGCAQAB/wG+AYoBAAH/ + AcUBkQEAAf8BzQGZAQAB/wHVAaABAAH/Ad0BqAEAAf8B5AGvAYAB/wHqAbUBhgH/Ae8BugGLAf8B1QGp + AYEB/wNcAd8EAAOGAf8D9wH/AQAD/wHIAukB/wEAAvgB/wG1AuwB/wGHAckBnQH/AQABuQEAAf8BAAG5 + AQAB/wGQAcsBpAH/AawC7gH/AQAC9wH/Ab4C6gH/AQAC6gH/A4IB/wNYAe8DVAGvA00B+gGyAbUBtAH/ + Ac4B0wHVAf8DAAH/AwAB/wMAAf8BmwGgAagB/wMAAf8DAAH/AwAB/wMAAf8CmQGiAf8BAAGAAYgB/wNC + AfUCUgFQAaQMAANdAtcBsQGuAf8B0wGsAakB/wHPAacBpQH/AcoBogGgAf8BxgGdAZwB/wG+AZoBlwH/ + AwAB/wGaAZIBkQH/AaUCoAH/A84B/wHDAsAB/wNRAaEEAANiAe8BpAGAAQAB/wGqAYIBAAH/Aa8BhwEA + Af8BtQGNAQAB/wG7AZIBAAH/AcEBmAEAAf8BxwGdAQAB/wHNAaMBAAH/AdIBqQGCAf8B1gGtAYcB/wHa + AbEBiwH/AcMBoQGAAf8DXAHfBAADhgH/AbsC9wH/AekC8QH/AcgC/AH/AeMC8wH/Ac4C+gH/Ad0C9QH/ + AdQC+AH/AdAC8AH/A+EB/wPhAf8D4QH/A+EB/wPRAf8DhwH/A2IB7wQAA1gB7wGaAZ8BoAH/AcEBxQHJ + Af8B0gHTAdoB/wLTAdsB/wHhAeQB7AH/AcwBzgHWAf8DAAH/AwAB/wMAAf8DAAH/ApEBmQH/AwAB/wNX + Ad8QAANdAdcB4QG7AbgB/wHcAbcBtAH/AdgBsgGvAf8B1AGtAasB/wHQAagBpgH/AcsBqAGlAf8BvAGZ + AZYB/wG2AZMBjwH/AaoBhAGBAf8BkgIAAf8DAAH/A1YBvAQAA1kBwgNcAc8DXAHPA1wBzwNcAc8DXAHP + A1wBzwNcAc8DXAHPA1wBzwNcAc8DXAHPA1wBzwNVAbUEAAOdAf8BAALjAf8BjALQAf8BAALsAf8BAALW + Af8BAALnAf8BAALbAf8BAALcAf8BAALDAf8DnQH/A50B/wOdAf8DnQH/A50B/wOpAf8DYgHvBAACWAFX + AcIDRwH5AakCrgH/AcsBzQHTAf8CygHRAf8CzgHVAf8CzgHWAf8CvwHHAf8CswG7Af8CrgG2Af8CmAGg + Af8DAAH/A0kB9gNVAbUQAANdAdcB6gHGAcMB/wHmAcIBvgH/AeIBvQG5Af8B4QG+AbsB/wHrAcwByAH/ + AfIB1gHSAf8B+AHiAd4B/wH8Ae0B6AH/AfwB8gHsAf8B6gHaAdUB/wHKAa8BqwH/A10B10AABP8DnAH/ + AQAC5QH/AZkCwwH/AQAC4gH/AYQCygH/AQAC2wH/AQACvQH/A8sZ/wNiAe8IAAJbAVkBwwNqAfkBmQGY + AZ4B/wG6AbkBvQH/Ab8BvgHFAf8BvAG7AcUB/wKyAbsB/wGqAakBsgH/AZ0BnAGlAf8CAAGFAf8DUgH3 + A1UBtRQAA14B2QH0AdEBzQH/AfEB0QHNAf8B9gHcAdcB/wH9AeEB3AH/Af0B3wHaAf8B/QHgAdsB/wH9 + AeEB3AH/Af4B4gHdAf8B/gHjAd4B/wH+AeoB5QL/AfIB7AH/A2cB8kAACP8DnAH/A44B/wOOAf8DjgH/ + A44B/wPNHf8DYgHvDAADVwHCA1gB7wNNAfoBmAGQAZwB/wGoAaQBrwH/Aq4BtwH/AZABjQGZAf8DRwH5 + A1gB7wNWAbMYAANcAd8B/QHnAeIB/wH+AewB5gL/AesB5QL/AesB5QL/AesB5QL/AesB5QL/AesB5QH/ + AfMB4AHaAf8DYQHiA1IBoQM5AV8DFgEfQAA8/wNiAe8UAANUAa8DAAH/AwAB/wMAAf8DAAH/AlEBUAGf + IAADNgFYA0gBhANUAaYDWQHHA2IB6QNhAeYDUwGlAzsBZQMZASMkAAL+Af0B/zQAAxcBIAMfBCwBRANO + AZcDZAHxA1EBoQMqAUEDJgE5Ax8BLAMXASAUAAHBAawBlwH/AZ0CAAH/A7YB/wOKAf8DAAH/AwAB/wMA + Af8DAAH/AwAB/wOKAf8DtgH/A88B/wPrAf82AAGcAf8CAAGbAf8CAAGbAf8CAAGcAf8MAAHtAewB5gH/ + AwAB/wMAAf8DAAH/AZEBjAEAAf8B9wH2AfIB/zAAA0oBiQNfAfMDTQH6A10B8ANKAYkDAAEBGAAB3wHE + AaYB/wG2AgAB/wG0AgAB/wOVAf8CtQG0Af8DzgH/A8UB/wPOAf8DxQH/A84B/wO0Af8DlQH/A+gB/zoA + AZsB/wEAAdwB+wH/AQABsQHeAf8CAAGbAf8IAAOpAf8DAAH/AgABjQH/AgABvwH/AgABsQH/AgABhgH/ + AgABjAH/AwAB/wGsAacBlgL/Af4B+wH/IAADNwFaA10B8ANfAfsB2gGbAQAB/wJ/AWoB/gNdAe0DSAGE + FAAB5AHJAaoB/wHEAYgBAAL/AcUBAAH/AcQBiAEAAf8BsAIAAf8BuQIAAf8BrAIAAf8BuQGMAQAB/wOK + Af8DvwH/A4oB/wPJAf8DmQH/OAABsgG9AcMB/wIAAZ0B/wEAAbIB2wH/AQAB5AH5Af8CAAGcAf8IAAG8 + AcABxAH/AgABuAH/AgABwQH/AgAB0wH/AgAB4AH/AgABuwH/AgAB4QH/AgABoAH/AgABgQH/AwAB/wMA + Af8BxAHBAbEF/xAAAycBOwNfAfMDXwH7AeYBpQEAAf8B7QGpAQAB/wHqAacBAAH/An8BawH+A2QB8QM6 + AWEQAAHPAZQBAAL/AdgBAAL/AdEBAAL/AdEBAAL/AdEBAAL/AdUBAAL/AeMBkgH/AcMBhwEAAf8CyQHK + Af8DwQH/A8kB/wPKAf8DnwH/NgABnAH/AgABnAH/AQABqQHOAf8BAAHpAfkB/wIAAZwB/wgABP8BhQIA + Af8DAAH/AgABhAH/AgABjwH/AgABxwH/AQABlwHrAf8BAAGOAf4B/wIAAeIB/wIAAdQB/wIAAboB/wMA + Af8CAAGCAf8DAAH/Ab8BvQG4Af8IAAMLAQ8DXAHqAm0BawH3AeIBogEAAf8B6AGiAQAB/wH0AbMBhAH/ + AdoBlAEAAf8B6AGmAQAB/wGoAYcBQAH9A2IB9gMdASoMAAHuAdMBswH/AdsBnwEAAv8B5QGXAf8B2wGe + AQAB/wHIAYwBAAH/AdEBlQEAAf8BxQGJAQAB/wHMAZ8BAAH/A5IB/wPEAf8DkgH/A80B/wOiAf8oAAGw + AbwBwwH/AbgBwAHFAf8BwwHFAccB/wIAAZwB/wEAAbQB2wH/AQAB6gH5Af8CAAGcAf8MAAHiAa8BgQH/ + AwAB/wIAAYcB/wIAAYgB/wIAAaoB/wIAAaUB/wIAAboB/wIAAbwB/wIAAaUB/wEAAZwB8AH/AQABhwH0 + Af8CAAGzAf8CAAHzAf8CAAGtAf8DAAH/CAADSQGHA2AB6wHRAZkBAAH/Ae0BqQGAAf8B7wGtAYMB/wH1 + AbgBiQH/Ad0BmgEAAf8B2QGZAQAB/wHNAZIBAAH/A1kB9QNVAbIQAAHzAdgBtwH/AeUBqQEAAf8B5gGq + AQAB/wKlAaYB/wHQAtEB/wHQAtEB/wPHAf8DzwH/A8cB/wPPAf8D0AH/A6YB/yQAAakBuQHAAf8CAAGh + Af8CAAGjAf8BAAGAAakB/wEAAZcBxgH/AQAB5AH5Af8CAAGcAf8MAAHzAecB2wH/AcECAAH/AwAB/wIA + AdQB/wIAAbIB/wIAAdoB/wIAAfgB/wIAAcwB/wIAAawB/wIAAYkB/wIAAb0B/wIAAeAB/wIAAaEB/wEA + AYQB4AH/AQABiwHmAf8CkAGNAf8EAAMEAQUDYAHrA00B+gHwAbABhgH/AfABsAGGAf8B8AGxAYYB/wH1 + AbsBjgH/Ad0BmgEAAf8B2AGaAQAB/wHYAZoBAAH/AagBigFAAf0BkAGFAUAB/QMVAR0QAAH2AdsBuQH/ + AfEBxAGMAf8DqAH/A9MB/wOZAf8DygH/A5kB/wPKAf8DmQH/A9MB/wOoAf8UAAG7AcIBxAH/AQABjwGt + Af8CAAGlAf8BAAGAAacB/wIAAaEB/wEAAaoB1AH/AQABrAHXAf8BAAGfAdAB/wEAAd4B+AH/AgABnAH/ + EAAB5AHIAbIB/wHIAgAB/wMAAf8CAAGVAf8CAAG5Af8CAAHAAf8CAAGyAf8CAAHDAf8BAAGNAfEB/wIA + AdUB/wIAAdkB/wIAAdYB/wIAAbMB/wIAAaIB/wIAAagB/wGNAYsBhQH/BAADLgFIA10B8AJ/AXcB/gHy + AbMBiAH/AfIBtAGJAf8B8gG0AYoB/wH2AcABlQH/Ad4BnAEAAf8B2QGcAQAB/wHZAZwBAAH/AcYBjwEA + Af8DYAHrA0IBcxgAA6sB/wPWAf8D1gH/A9YB/wPWAf8D1gH/A9YB/wPWAf8DqwH/EAABhwGoAbkB/wEA + AZIBuwH/AQABxQHpAf8BAAHVAfwB/wEAAcwB+QH/AQABuQHnAf8BAAHRAfcB/wEAAawB2gH/AQAB3wH4 + Af8CAAGcAf8UAAHZAakBAAH/AeYCAAH/AYkCAAH/AgABzQH/AgAB7AH/AgABpQH/AwAB/wMAAf8CAAHE + Af8CAAHRAf8CAAHAAf8CAAHBAf8BAAGXAfQB/wIAAfYB/wIAAcQB/wKCAYYB/wQAA0cBgANiAe8B5gGt + AYUB/wHzAbcBjAH/AfQBtwGMAf8B8wG3AY0B/wH3AcUBnAH/AeMBoQEAAf8B3wGjAQAB/wHZAZwBAAH/ + AdYBmwEAAf8DXwH7A1QBrBgAA64B/wPZAf8B6wG3AQAB/wHuAbIBAAH/AegBrAEAAf8B3wGjAQAB/wHN + AZgBAAH/A9kB/wOvAf8MAAGEAaYBuQH/AQABnAHAAf8BAAHdAfYB/wEAAd4B9wH/AQAB5AH8Af8BAAHg + AfwB/wEAAdQB/AH/AQAByQH4Af8BAAHgAfgB/wIAAZwB/xgAAeEBnQEAAf8B/QIAAf8DAAH/AgAC/wGS + Ab4C/wGFAawC/wIAAdwB/wIAAa0B/wIAAdgB/wIAAZwB/wMAAf8DAAH/AgABhAH/AQABmQHhAf8CAAG8 + Af8BiwGIAYIB/wQAA1YBsQNcAfgB8gG4AY0B/wH1AboBjwH/AfUBugGQAf8B9QG7AZIB/wH4AckBowH/ + AeQBpQEAAf8B4AGlAQAB/wHbAZ4BAAH/AdoBnQEAAf8BqAGHAUAB/QNgAd4YAAOwAf8D3AH/AeIBpgEA + Af8B4AGkAQAB/wHZAZ0BAAH/AdIBlgEAAf8BvQGBAQAB/wPcAf8DsQH/DgABpgH/AQAB5wH3Af8BAAHl + AfcB/wEAAewB/AH/AQAB6QH8Af8BAAHmAfwB/wEAAeQB/AH/AQAB1AH8Af8BAAG2AeQB/wIAAacB/xgA + AfMBoAEAAf8BzQIAAf8DAAH/AQABugGrAf8B5gH/AdcB/wGxAdUBtAH/AYABwwHXAf8BAAHcAv8BAAHq + Av8BAAGUAv8CAAH0Af8CAAHOAf8DAAH/AgABtAH/AgABggH/AwAB/wQAA1wByQNfAfsB9gG8AZEB/wH2 + AbwBkQH/AfYBvQGUAf8B9wG+AZUB/wH4Ac4BqQH/AeYBqAGDAf8B4gGoAYEB/wHbAaABAAH/AdoBngEA + Af8CfwFsAf4DbQH3GAADswH/A98B/wHLAY8BAAH/AcIBhgEAAf8BwgGGAQAB/wHGAYoBAAH/AbQCAAH/ + A98B/wO0Af8NAAGRAbUB/wEAAd4B7AH/AQAB7gH8Af8BAAHuAfwB/wEAAewB/AH/AQAB6QH8Af8BAAHm + AfwB/wEAAeAB/AH/AQABxwH3Af8BAAGAAaYB/xgAAf8B4gHJAf8BkwIAAf8BAAHRAQAB/wEAAdkBAAH/ + AQABwwEAAf8BAAGfAQAB/wHRAZgBAAH/AZQCAAH/AZ4BuAGAAf8BtQH/Ad4B/wGDAfEB1wH/AQAB2wHs + Af8BAAHeAv8BAAG9Av8CAAGJAf8BmAGWAZgB/wQAA2EB2gNfAfsB9wG9AZIB/wH3Ab4BlAH/AfgBwAGW + Af8B+AHCAZgB/wH7AdwBwgH/AesBsAGKAf8B6QGwAYkB/wHhAacBgAH/AdoBngEAAf8CfwFvAf4BkAGF + AQAB/wMEAQYUAAO1Af8D4gH/Ac8BkwEAAf8B3QGhAQAB/wHdAaEBAAH/Ad0BoQEAAf8BtwIAAf8D4gH/ + A7YB/w0AAZoBuwH/AQAB2gHnAf8BAAHFAeAB/wIAAZsB/wEAAcUB4AH/AQAB7AH8Af8BAAHqAfwB/wEA + AeQB/AH/AQABygH3Af8CAAGmAf8dAAGxAQAB/wEAAcYBAAH/AYYB3wGKAf8B7AH3AbcB/wHEAf8B3AP/ + AeIB/wH7AcEBAAL/AYoBAAH/AdYCAAH/AwAB/wMAAf8BkQKcAf8BAAGTAYwB/wHQAdMB0QH/CAADYAHW + A00B+gH3Ab0BkgH/AfcBvwGWAf8B+QHKAaYB/wH6AdcBugX/Ae4BtgGRAf8B6QGyAYsB/wHjAasBhgH/ + AdoBngEAAf8CfwFxAf4BkgGHAUAB/QMBAQIUAAO4Af8D5QH/AcMBjwEAAf8BxgGKAQAB/wHBAYUBAAH/ + Ab4BggEAAf8BrQIAAf8D5QH/A7gB/w0AAYcBrQH/AZcB9wH5Af8CAAGbAf8GAAGbAf8BAAHuAfwB/wEA + Ae4B/AH/AQAB1wH0Af8BAAG7AeUB/wEAAY8BrQH/HAAB4gH5AecB/wEAAbsBAAH/AYsB2AEAAf8B3wH7 + AcMD/wHVAf8BoQHvAawB/wEAAcQBAAH/AcoBlQEAAv8CAAH/AboBmgEAAf8YAANbAcYCfwFqAf4DKwH8 + A38B/gHhAbgBmwH/AfYB4wHTBf8B+AHeAcwB/wHkAbwBnwH/AcgBmwEAAf8CfwF1Af4CfwFrAf4DZQH0 + GAADwgH/A9oB/wPmAf8D5QH/A+UB/wPlAf8D5gH/A9kB/wPDAf8NAAGSAa4B/wEAAcQB1gH/AQABxQHg + Af8CAAGbAf8BAAHFAeAB/wEAAe4B/AH/AQABxQHgAf8BAAHXAfgB/wEAAYYBsgH/AbIBvQHDAf8gAAH0 + AfsB8QH/AbUBwwEAAf8BxwHUAQAB/wGbAdIBAAH/AQABzwEAAf8BAAHBAQAB/wGpAgAC/wGVAQAB/xwA + AzUBVgNhAdoDZwHyA1kB9QNgAesBugGRAQAB/wG8AZUBAAH/AbQBigEAAf8DZAHxA10B8ANtAfcDXwHg + Az8BbRgAA+gB/wOZAf8DuwH/A7sB/wO7Af8DuwH/A7sB/wPEAf8D6QH/EQABgwGqAf8BAAHBAdQB/wGP + AfcB+gH/AQAB3gHtAf8BAAHjAfUB/wEAAdsB8wH/AQABjQG3Af8BAAGjAbYB/ywAAvwB8gH/AdAB6wG/ + Af8B1AHeAakB/wHLAegBwgL/AfwB+QH/LAADFgEeAzgBXANYAbsCfwF7Af4DXQHTAz8BbAMdASoDAAEB + JAADmQH/MQABlgGxAf8BAAGEAasB/wEAAY0BswH/AQABjwG0Af8BAAGAAaYB/wGeAbQBvgH/KAADMwFT + A0kBiANKAYoDUwGoA4cB/wOGAf8DhQH/A4MB/wNeAdUDSQGIA0kBiAM6AWAIAAMPARQDUAGaA2IB9gMr + AfwDKwH8AysB/AMrAfwDKwH8AysB/AMrAfwDKwH8AysB/AMrAfwDWQH1A08BlwMNAREBAAGEAYIB/wEA + AYQBggH/AQABhAGCAf8BAAGEAYIB/wEAAYQBggH/AQABhAGCAf8BAAGEAYIB/wEAAYQBggH/AQABhAGC + Af8BAAGEAYIB/2AAA0sBjgNfAdsDYAHWA2AB3gPcAf8B2wHXAdQB/wPTAf8BzwHOAc0B/wNfAfMDYQHa + A14B1QNKAY0IAANQAZoDXwH7AcwBzgHNAf8BvgHBAcAB/wGuAbEBsAH/AZ0BoQGgAf8BlQGZAZgB/wGQ + AZUBkwH/AYwBkQGPAf8BhwGMAYsB/wGCAYcBhgH/AQABgwGBAf8DAAH/AwAB/wFgAWYBYwH5A0wBkAEA + AYQBggH/A9kB/wPZAf8D2QH/A9kB/wPZAf8D2QH/A9kB/wPZAf8BAAGEAYIB/ygAIP8kAAMJAQwDNQFY + A1kBvgNgAdYDNQFYAyMBNBQAA2IB9gHWAdgB1wH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA + Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wFTAl0B8wEAAYQBggH/A/MB/wPrAf8D6wH/A+sB/wPrAf8D6wH/ + A+sB/wPtAf8BAAGEAYIB/ygABP8DAAH/AwAB/wMAAf8DAAH/AwAB/wMABf8kAAMQARUDQwF3AmEBWAHm + AmABWQHrAkcBRgGAAxMBGhQAAysB/AHXAdgB1wH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA + Af8DAAH/AwAB/wMAAf8DAAH/AQABgAEAAf8DAAH/A08BlwEAAYQBggH/AQABhAGCAf8BAAGEAYIB/wEA + AYQBggH/AQABhAGCAf8BAAGEAYIB/wEAAYQBggH/AQABhAGCAf8DRQF9KAAM/wG1AagBoQH/AwAd/xAA + Ak0BTAGRAagBgQFAAf0B3AGxAQAB/wH3AeYBwwH/AfkB5QGxAf8B6QHMAY8B/wJ/AUcB/gFUAlIBphAA + AysB/AHXAdgB1wH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ + AQABgwGBAf8DAAH/AQABhAGCAf8D1gH/AfcB8QHrAf8B9wHxAesB/wH3AfEB6wH/AfcB8QHrAf8B9wHx + AesB/wH3AfEB6wH/A9YB/wEAAYQBggH/AQABhAGCAf8BAAGEAYIB/wEAAYQBggH/AQABhAGCAf8BAAGE + AYIB/wEAAYQBggH/GAAE/wMAAf8DAAX/AekB4wHgAf8DAAH/AwAB/wMAAf8DAAH/Ac4BwQG5Af8MAAFZ + AlYBvgGvAgAB/wG9AgAB/wHZAa0BAAH/AfgB6QHMAf8B+gHoAccB/wHtAdIBngH/AckBkgEAAf8BtgIA + Af8BXQJZAdIMAAMrAfwB1wHYAdcB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AfEB8wHyAf8B8QHzAfIB/wHx + AfMB8gH/AeoB7QHsAf8DAAH/AwAB/wMAAf8BgQGGAYQB/wMAAf8BAAGEAYIB/wH3AfEB6wH/AaQCAAH/ + AagCAAH/AagCAAH/AagCAAH/AagCAAH/AaQCAAH/AfcB8QHrAf8BAAGEAYIB/wPZAf8D2QH/A9kB/wPZ + Af8D2QH/AQABhAGCCf8B8wHwAe4R/wMAAf8DAAn/Ac4BwQG5Df8BtQGoAaEB/wgAAzgBXAGcAgAB/wGn + AgAB/wHCAYUBAAH/AeoBzQGhAf8B9AHbAbAB/wHxAdQBngH/AeoByAGOAf8B0gGgAQAB/wGzAgAB/wGe + AgAB/wFFAkQBfAgAAysB/AHXAdgB1wH/AwAB/wMAAf8ByAHRAc4B/wMAAf8DAAH/AwAB/wMAAf8DAAH/ + AwAB/wMAAf8DAAH/AwAB/wGDAYkBhwH/AwAB/wEAAYQBggH/AfgB8gHsAf8BqAIAAf8BtgIAAf8BtwIA + Af8BtwIAAf8BtwIAAf8BqAIAAf8B9wHxAesB/wEAAYQBggH/A+sB/wPrAf8D6wH/A+sB/wPtAf8BAAGE + AYIB/wG1AagBoQH/AwAB/wMAAf8DAAH/AwAB/wMABf8BtQGoAaEB/wMACf8BtQGoAaEF/wHYAdIBzgH/ + AbUBqAGhBf8IAAFfAlcB6AGZAgAB/wGzAgAB/wG7AgAB/wHjAcABkAH/AewBzwGgAf8B3gGxAQAB/wHM + AZEBAAH/AcMBhwEAAf8BtgIAAf8BngIAAf8BWQJCAfUIAAMrAfwB1wHYAdcB/wMAAf8DAAH/AwAB/wHL + AdMBzwH/Ac0B1gHTAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AYcBjAGKAf8DAAH/AQABhAGC + Af8B+AHyAewB/wGoAgAB/wHOAZsBAAH/AcIBhgEAAf8BvAIAAf8BtAIAAf8BqAIAAf8B+AHyAewB/wEA + AYQBggH/AQABhAGCAf8BAAGEAYIB/wEAAYQBggH/AQABhAGCAf8BAAGEAYIB/wNFAX0E/wG1AagBoQX/ + AekB4wHgBf8BtQGoAaEF/wHYAdIBzgH/AbUBqAGhDf8BtQGoAaEB/wHpAeMB4AH/AdgB0gHOBf8IAAMr + AfwBmAIAAf8BsQIAAf8BxgGXAQAB/wHCAYgBAAH/AcYBiQEAAf8BxQGIAQAB/wG9AYABAAH/AbMCAAH/ + AawCAAH/Aa8CAAH/AZECAAH/AwgBCwQAAysB/AHXAdgB1wH/AwAB/wEAAYIBAAH/AYoBowGZAf8B2wHj + AeAB/wHGAdIBzQH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wGKAY8BjQH/AwAB/wEAAYQBggH/ + AfgB8gHsAf8BqAIAAf8BzAGYAQAB/wHLAZgBAAH/AcwBmAEAAf8BzAGYAQAB/wGoAgAB/wH4AfIB7AH/ + AQABhAGCAf8D7QH/A+0B/wPtAf8D7QH/A9YB/wEAAYQBggn/AbUBqAGhAf8B6QHjAeAB/wG1AagBoQn/ + AdgB0gHOAf8BtQGoAaEF/wQABP8BtQGoAaEB/wG1AagBoQn/BAADHAEnAZUCAAH/AZgCAAH/AcwBngGD + Af8BzgGhAQAB/wHSAaUBAAH/AcwBmAEAAf8BxAGKAQAB/wG4AgAB/wGxAgAB/wGsAgAB/wHAAYUBAAH/ + AagCAAH/AzIBUQQAAysB/AHXAdgB1wH/AwAB/wMAAf8B1AHeAdkB/wEAAYQBAAH/AwAB/wMAAf8DAAH/ + AwAB/wMAAf8DAAH/AwAB/wMAAf8BjQGSAZEB/wMAAf8BAAGEAYIB/wH3AfEB6wH/AaQCAAH/AagCAAH/ + AagCAAH/AagCAAH/AagCAAH/AaQCAAH/AfgB9AHuAf8BAAGEAYIB/wMAAf8DAAH/AwAB/wMAAf8D7QH/ + AQABhAGCCf8B6QHjAeAB/wHpAeMB4AH/AdgB0gHOCf8B6QHjAeAB/wHOAcEBuQ3/AekB4wHgAf8B2AHS + Ac4J/wQAAwcBCQF/AUYBQAH+AaUCAAH/AeMByAG4Af8B5AHGAbAB/wHhAcABowH/AcgBlQEAAf8BtwIA + Af8BrgIAAf8BqAIAAf8BogIAAf8BwAGMAQAB/wGiAgAB/wMSARkEAAMrAfwB1wHYAdcB/wMAAf8BgQGm + AZcB/wEAAaQBlQH/AQABogGUAf8BAAGiAZIB/wEAAaABkAH/AQABnwGOAf8BAAGdAYwB/wEAAZgBhQH/ + AQABiQEAAf8DAAH/AwAB/wGQAZUBkwH/AwAB/wEAAYQBggH/AccCyAH/AfcB8QHrAf8B9wHxAesB/wH3 + AfEB6wH/AfcB8QHrAf8B9wHxAesB/wH3AfEB6wH/A9YB/wEAAYQBggH/AZACAAH/AZACAAH/AZACAAH/ + AwAB/wPtAf8BAAGEAYIB/wQABP8B2AHSAc4B/wHpAeMB4A3/AwAB/wMABf8DAAH/AwAB/wMAAf8BtQGo + AaEJ/wgAAV0BXAFaAfABvAGHAQAB/wHsAdgBzAH/AesB0QG/Af8B5AHEAakB/wHMAZkBAAH/AawCAAH/ + AaYCAAH/AZ0CAAH/AaACAAH/AaoCAAH/A00B+ggAAysB/AHXAdgB1wH/AwAB/wEAAZABhAH/AQABkAGE + Af8BAAGOAYIB/wEAAY0BgAH/AQABjAEAAf8BAAGLAQAB/wEAAYkBAAH/AQABiAEAAf8BAAGHAQAB/wEA + AYUBAAH/AwAB/wGTAZgBlgH/AwAB/wNUAawBAAGEAYIB/wEAAYQBggH/AQABhAGCAf8BAAGEAYIB/wEA + AYQBggH/AQABhAGCAf8BAAGEAYIB/wEAAYQBggH/AY8BhQEAAf8BmgIAAf8BkwIAAf8BiwIAAf8DAAH/ + A+4B/wEAAYQBggH/BAAI/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DABX/CAADTgGWAb0BjQGJ + Af8B1AGyAacB/wHqAdQBxQH/Ac4BoQGIAf8ByAGUAQAB/wGwAgAB/wGkAgAB/wGYAgAB/wGlAgAB/wGR + AgAB/wNWAbMIAAMrAfwB1wHYAdcB/wMAAf8BmwG/AbEB/wGYAb4BrwH/AZcBvQGuAf8BlAG8AawB/wGS + AboBqgH/AZABuQGpAf8BjgG4AagB/wGNAbYBpQH/AYoBtQGkAf8BhwGzAaIB/wMAAf8BlwGbAZoB/wMA + Af8ZAAGEAYIB/wPuAf8DAAH/AaYBhAEAAf8BpQGEAQAB/wGmAYQBAAH/AaYBhAEAAf8DAAH/A+4B/wEA + AYQBggH/BAAI/wMABf8B6QHjAeAB/wHOAcEBuQH/Ac4BwQG5Af8DAA3/GAADAgEDA2QB5wHAAZIBjQH/ + AeQBywHBAf8B1gGvAZ4B/wG1AgAB/wG7AYEBAAH/AaoCAAH/AaICAAH/AbICAAH/AV0CTgHwAwABAQgA + A2UB9AHVAdcB1gH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ + AZYBmQGYAf8BUwJaAfAZAAGEAYIB/wPtAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8D8AH/AQABhAGC + Af8IABT/AekB4wHgAf8DAAn/IAADCgEOA14B2QHUAbIBrQH/AcIBkgGLAf8BoAIAAf8BqgIAAf8BowIA + Af8BsAIAAf8BXAJXAd8DEgEYDAADTAGSA00B+gHVAtcB/wHdAd4B3QH/AdwB3gHdAf8B3ALdAf8B3ALd + Af8B3ALdAf8B3ALdAf8B3ALdAf8B3ALdAf8B2QLbAf8BywHNAcwB/wGxAbQBsgH/A2oB+QNJAYgZAAGE + AYIB/wHHAsgB/wPtAf8D7QH/A+0B/wPtAf8D7QH/A+0B/wPWAf8BAAGEAYIB/xgAEP8sAAM8AWYDXQHS + A10B7QJiAWAB7wFdAloBygNBAXIUAAMKAQ4DSQGHA2EB7gNfAfsDXwH7A18B+wNfAfsDXwH7A18B+wNf + AfsDXwH7A18B+wNfAfsBXgFkAWIB7ANIAYMDCQEMGAADVAGsAQABhAGCAf8BAAGEAYIB/wEAAYQBggH/ + AQABhAGCAf8BAAGEAYIB/wEAAYQBggH/AQABhAGCAf8BAAGEAYIB/wNPAZccAAT/OAADGgElAzEBTQM1 + AVUDIwEzAwQBBRgAAZkCAAH/BAABmQIAAf8BmQIAAf8BmQIAAf8DAAH/AwAB/wMAAf8DAAH/AZkCAAH/ + AZkCAAH/AZkCAAH/BAABmQIAAf8EAAH8Af4B/QH/AfwB/gH9Af8BiAHOAfAB/wEAAaEB7QH/AQABoQHt + Af8BAAGhAe0B/wGIAc4B8AH/AfwB/gH9Af8B3AHdAeQB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wH8 + Af4B/QH/UAADNQFWAmABXAHUAdkBxAGZAf8B6wHfAcgB/wHtAeQBzwH/AeABzwGtAf8DXQHtA0gBhgMJ + AQwlAAKZAf8BmQP/AQACzAH/AwAB/xgAAfwB/gH9Af8BAAGhAe0B/wEAAa4B8QH/AQABrgHxAf8BAAGu + AfEB/wEAAa4B8QH/AQABrgHxAf8BiAHOAfAB/wH8Af4B/QH/Aa8BrAGiAf8DAAH/AQABjgEAAf8BAAGO + AQAB/wMAAf8DAAH/AwAB/0sAAQEDUAGaAeEByAGXAv8B+gHnAv8B+gHlAv8B+wHmAv8B+wHmAv8B+gHl + Av8B+gHnAf8B8AHWAa0B/wJgAVsB1gMTARonAAH/AwAB/xwAAdcB7gH0Af8BAAGuAfEB/wEAAa4B8QH/ + AQABrgHxAf8BAAGuAfEB/wEAAa4B8QH/AQABrgHxAf8BAAGuAfEB/wH8Af4B/QH/AfwB/gH9Af8BAAGO + AQAB/wEAAY4BAAH/AQABjgEAAf8BAAGOAQAB/wEAAY4BAAH/AwAB/0gAA0oBjQHlAawBAAH/AfUBtgEA + Af8B/QHsAbUC/wH1AcQC/wH3AcgC/wH3AccC/wH1AcQC/wHyAb4B/wH0AbUBAAH/Ae8BqgEAAf8CYAFb + AdYDCQEMCwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA + Af8DAAH/AfwB/gH9Af8BAAGuAfEB/wEAAa4B8QH/AQABrgHxAf8BAAGuAfEB/wEAAa4B8QH/AQABrgHx + Af8BAAGhAe0B/wH8Af4B/QH/AfwB/gH9Af8BAAGOAQAB/wEAAY4BAAH/AQABjgEAAf8BAAGOAQAB/wEA + AY4BAAH/AwAB/ygAAewB0gHsAf8DAAH/AeYBzAHmAf8QAAMjATMCqAFAAf0B8AGfAQAB/wHvAZ4BAAH/ + AfYBxAEAAv8B8wG+Av8B9QHBAv8B9QHBAv8B8wG+Av8B8AG4Af8B8wG1AQAB/wHuAZwBAAH/AekBswEA + Af8DSAGGBQACmQH/AQACmQH/AQACmQH/AQACmQH/AQACmQH/AQACmQH/AQACmQH/AQACmQH/AQACmQH/ + AQACmQH/AQACmQH/AQACmQH/AQACmQH/AQACmQH/AQACmQH/AwAB/wH8Af4B/QH/AdcB7gH0Af8BAAGu + AfEB/wEAAa4B8QH/AQABrgHxAf8BAAGuAfEB/wEAAa4B8QH/AdcB7gH0Af8B/AH+Af0B/wHcAd0B5AH/ + AQABjgEAAf8BAAGOAQAB/wEAAY4BAAH/AQABjgEAAf8BAAGOAQAB/wEAAY4BAAH/JAAB7QHYAe0B/wGp + AQABqAH/AYACAAH/AwAB/wHrAdEB6wH/DAADUAGdAfABsAEAAf8B7QGaAQAB/wHsAZkBAAH/AfIBtgEA + Av8B8QG5Av8B8gG8Af8B/gHvAbcB/wH9AegBrQH/Af4B7QGzAf8B7AGbAQAB/wHrAZcBAAH/Ae4BpQEA + Af8DXQHtAwQBBQEAApkF/wGZA/8BmQHMAv8BmQP/AZkBzAL/AwAB/wMAAf8DAAH/AZkBzAL/AZkD/wGZ + AcwC/wGZAcwC/wGZAcwC/wEAApkB/wMAAf8B0AG2AZ4B/wH8Af4B/QH/AfwB/gH9Af8B1wHuAfQB/wGI + Ac4B8AH/AYgBzgHwAf8B/AH+Af0B/wH8Af4B/QH/AfwB/gH9Af8BpQGPAQAB/wEAAY4BAAH/AQABjgEA + Af8BAAGOAQAB/wEAAY4BAAH/AQABjgEAAf8BAAGOAQAB/yAAAegB0QHoAf8BqgEAAakB/wHQAQABzwH/ + AwAB/wGWAQABlQH/AwAB/wHwAdUB8AH/CAACXAFXAd8B6gGWAQAB/wHqAZQBAAH/AfgBzAGDAv8B6wGu + Av8B7QGyAf8B/gHuAbQB/wHuAagBAAH/AeoBlAEAAf8B6QGWAQAB/wHpAZIBAAH/AegBkQEAAf8B6AGR + AQAB/wHdAbgBAAH/AyQBNQEAApkF/wGZA/8BmQP/AZkBzAL/AwAB/wMAAv8CAAL/AgAB/wMAAf8BmQHM + Av8BmQP/AZkBzAL/AZkBzAL/AQACmQH/AwAB/wGxAgAB/wGxAgAB/wGlAY8BAAH/AaUBjwEAAf8B6AHZ + Ac4B/wH8Af4B/QH/AfwB/gH9Af8B1wHuAfQB/wGlAY8BAAH/AQABjgEAAf8BAAGOAQAB/wEAAY4BAAH/ + AQABjgEAAf8BAAGOAQAB/wEAAY4BAAH/AQABjgEAAf8EAAGrAfAB9wH/AasB4gHlAf8BrAHOAcwB/wGt + AbsBtQH/Aa4BpwGcAf8EAAHkAcoB5AH/AakBAAGoAf8B0gEAAdEB/wHUAQAB0wH/AwAB/wGeAQABngH/ + AY4BAAGNAf8DAAH/CAABzAGZAQAB/wHnAZABAAH/AfMBtwEAAv8B4wGfAv8B5gGlAv8B6AGqAf8B/gHm + AaYB/wHnAY8BAAH/AeYBjgEAAf8B5gGNAQAB/wHmAY0BAAH/AeUBjAEAAf8B5QGLAQAB/wHjAbEBAAH/ + AzUBVQEAApkF/wGZA/8BmQT/AgAB/wEAAZkBAAH/AQABmQEAAv8B2gEAAf8DAAH/AQABmQEAAf8DAAH/ + AZkBzAL/AZkD/wGZAcwC/wEAApkB/wMAAf8BsQIAAf8BsQIAAf8BsQIAAf8BsQIAAf8B9AHpAdgB/wH8 + Af4B/QH/AdwB3QHkAf8BAAGOAQAB/wEAAY4BAAH/AQABjgEAAf8BAAGOAQAB/wEAAY4BAAH/AQABjgEA + Af8BAAGOAQAB/wEAAY4BAAH/AQABjgEAAf8cAAGqAQABqQH/AdABAAHPAf8B1QEAAdUB/wG8AQABuwH/ + Ad4BmAHdAf8BjwEAAY4B/wGeAQABngH/AwAB/wgAAm0BUQH3AesBnQEAAv8B2gGQAv8B3wGYAv8B4gGf + Av8B5AGjAf8B/gHlAaUB/wHtAaoBAAH/AeUBkQEAAf8B5QGSAQAB/wHlAZMBAAH/AeUBkwEAAf8B5QGP + AQAB/wHgAaoBAAH/AzEBTQEAApkF/wGZA/8BmQT/AgAC/wHaAQAC/wHaAQAC/wHaAQAC/wHaAQAB/wMA + Af8DAAH/AZkD/wGZAcwC/wGZA/8BAAKZAf8DAAH/AbECAAH/AbECAAH/AaUBjwEAAf8BrwGsAaIB/wH8 + Af4B/QH/AfwB/gH9Af8B4gHNAbAB/wMAAf8BAAGOAQAB/wEAAY4BAAH/AQABjgEAAf8BAAGOAQAB/wEA + AY4BAAH/AQABjgEAAf8BAAGOAQAB/wEAAY4BAAH/AasB8AH3Af8BqwHlAekB/wGsAtUB/wGsAcQBwQH/ + Aa4BtQGsAf8BrgGkAZgB/wQAAagBAAGnAf8B0gEAAdEB/wG8AQABuwH/Ae8BpQHuAf8B+wGfAfoB/wHv + AZ0B7gH/AZcBAAGWAf8DAAH/CAACXAFZAc8B6AGYAQAB/wH+AdoBlwL/Ad8BnwL/AeIBpQL/AeMBqQL/ + AeUBrAH/AfkB1gGbAf8B6gGoAQAB/wHsAa8BAAH/AfMBwAGCAf8B7AGvAQAB/wHlAZgBAAH/AcwBjgEA + Af8DGQEjAQACmQX/AZkD/wGZBP8CAAP/AcwB/wMAAf8DAAL/AdoBAAL/AdoBAAL/AgAB/wGZAcwC/wGZ + A/8BmQHMAv8BAAKZAf8DAAH/AbECAAH/AdABtgGeAf8B/AH+Af0B/wH8Af4B/QH/AdABtgGeAf8B9AHp + AdgB/wH8Af4B/QH/Aa8BrAGiAf8BAAGOAQAB/wEAAY4BAAH/AQABjgEAAf8BAAGOAQAB/wEAAY4BAAH/ + AQABjgEAAf8BAAGOAQAB/wEAAY4BAAH/HAABpwEAAaYB/wG8AQABuwH/Ae8BpQHuAf8B+wGbAfoB/wH7 + AZgB+gH/AfsBmQH6Af8B5wGYAeYB/wGRAQABkAH/CAACRgFFAX8B3AGMAQAB/wH5AdEBlgL/AeEBqQL/ + AeMBrgL/AeQBsgL/AeUBtAH/AfsB3AGqAf8B7wG9AYkB/wH0AckBlwH/AfIBxQGTAf8B7QG6AYgB/wHk + AZoBAAH/AmABXAHUBQACmQX/AZkD/wGZA/8BmQP/AQABmQEAAf8BAAHMAQAB/wEAAZkBAAH/AwAC/wIA + Af8BmQHMAv8BmQP/AZkBzAL/AZkD/wEAApkB/wMAAf8B9AHpAdgB/wH8Af4B/QH/AfQB6QHYAf8BsQIA + Af8BsQIAAf8BsQIAAf8B4gHNAbAB/wH8Af4B/QH/Aa8BrAGiAf8DAAH/AQABjgEAAf8BAAGOAQAB/wEA + AY4BAAH/AQABjgEAAf8DAAH/AgAB5gH/CAABqwHwAfcB/wGsAtUB/wGuAbUBrAH/Aa4BmQGKAf8EAAHP + AYgBzwH/AeIBrwHiAf8B+wGrAfoB/wH7AZgB+gH/AfsBmAH6Af8B6gGQAekB/wHPAYgBzwH/AfQB5gH0 + Af8IAAMOARMDXQHtAeoBsQEAAf8B8gHHAZoB/wH7Ad4BsgL/AecBvAH/Af4B5wG9Af8B+gHgAbYB/wH2 + AdMBqwH/Ae4BwQGZAf8B7wHFAZ0B/wHwAcYBoAH/Ac4BhwEAAf8DNQFWBQACmQX/AZkD/wGZA/8BmQP/ + AZkD/wEAAZkBAAH/AQABmQEAAf8BAAGZAQAB/wGZAcwC/wGZA/8BmQP/AZkD/wGZAcwC/wEAApkB/wMA + Af8B/AH+Af0B/wH8Af4B/QH/AdABtgGeAf8BsQIAAf8BsQIAAf8BsQIAAf8BpQGPAQAB/wH8Af4B/QH/ + AfwB/gH9Af8CAAHmAf8CAAHmAf8CAAHmAf8CAAHmAf8CAAHmAf8CAAHmAf8CAAHmAf8cAAHwAdUB8AH/ + Ac8BiAHPAf8B7gG+Ae4B/wH7Aa4B+gH/AewBkQHrAf8BzwGIAc8B/wHzAeAB8gH/EAADLwFKAmoBQQH5 + AfAByQGmAf8B9wHaAbkB/wH+AeoByAH/Af4B6AHFAf8B/gHpAcgB/wH2AdsBvAH/AfEB0AGzAf8B8gHR + AbUB/wHbAacBAAH/A1ABmgkAApkx/wGZA/8BAAKZAf8DAAH/AfwB/gH9Af8B/AH+Af0B/wGxAgAB/wGx + AgAB/wGxAgAB/wGxAgAB/wGlAY8BAAH/AfwB/gH9Af8B/AH+Af0B/wEAAaEB7QH/AgAB5gH/AgAB5gH/ + AgAB5gH/AgAB5gH/AgAB5gH/AgAB5gH/IAAB8gHbAfIB/wHPAYgBzwH/AeMBrAHjAf8BzwGIAc8B/wHz + AeMB8wH/GAADLwFKA10B7QHlAbgBiwH/AfoB5gHNAf8B/QHuAdYB/wH5AeUBywH/Af0B7gHYAf8B8gHR + Aa8B/wGoAZMBQAH9A0oBjQMAAQEJAAKZAf8BAALMAf8BAALMAf8BAALMAf8BAALMAf8BAALMAf8BAALM + Af8BAALMAf8BAAKZAf8BAAKZAf8BAAKZAf8BAAKZAf8BAAKZAf8BAAKZAf8BAAKZAf8EAAH8Af4B/QH/ + AfwB/gH9Af8BsQIAAf8BsQIAAf8BsQIAAf8BsQIAAf8B0AG2AZ4B/wH8Af4B/QH/AfwB/gH9Af8CAAHm + Af8CAAHmAf8CAAHmAf8CAAHmAf8CAAHmAf8CAAHmAf8CAAHmAf8kAAHyAdsB8gH/Ac8BiAHPAf8B8AHj + AfAB/yAAAw4BEwJGAUUBfwJcAVkBzwJtAVEB9wHOAZ8BAAH/AlwBVwHfA1ABnQMjATMVAAKZBf8BzAP/ + AcwD/wGZA/8BmQP/AQACmQH/AwAB/xwAAfwB/gH9Af8B/AH+Af0B/wGlAY8BAAH/AbECAAH/AbECAAH/ + AbECAAH/AfQB6QHYAf8B/AH+Af0B/wHcAd0B5AH/AgAB5gH/AgAB5gH/AgAB5gH/AgAB5gH/AgAB5gH/ + AgAB5gH/AgAB5gH/iQACmQH/AQACmQH/AQACmQH/AQACmQH/AQACmQH/AwAB/yAAAfwB/gH9Af8B/AH+ + Af0B/wHoAdkBzgH/AbECAAH/AbECAAH/AdABtgGeAf8B/AH+Af0B/wH8Af4B/QH/AgAB5gH/AgAB5gH/ + AgAB5gH/AgAB5gH/AgAB5gH/AgAB5gH/AgAB5gH/AfwB/gH9Af+EAAMHAQoDEwEaAxMBGgMTARoDEwEa + AxMBGgMTARoDEwEaAxMBGgMTARoDEwEaAxMBGgMTARoDDAEQBAAQ/wEAAYQBAAH/AQABgAEAAf8DAAH/ + AwAB/wMAAf8DAAH/AwAB/wMAAf8DABH/AQABnQHZAf8BAAGZAdgB/wEAAZQB1wH/AQABkAHWAf8BAAGM + AdUB/wEAAYgB1AH/AQABhAHTAf8BAAGAAdIB/wIAAdEB/wIAAdEB/wIAAdAB/wIAAc8B/wIAAc8B/wIA + Ac4F/yYAAa4B/wIAAa4B/xQAAxsBJgM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5 + AV8DOQFfAzkBXwM5AV8DLQFFAwwBEAj/AQABlAEAAf8BAAGPAQAB/wEAAYoBAAH/AZsBxQGdAf8BswHC + AZ0B/wG9AcEBnAH/Ab4BwwGdAf8BsAHSAbEB/wEAAYgBAAH/AQABoQEAAf8DAAH/AwAN/wEAAaMB2gH/ + AbwB6wH6Af8BvAHrAfwB/wG/Ae4B/gH/AcYB9AL/Ac4B+AL/AdMB+gL/AdAB+AL/AccB8gL/AboB6QH8 + Af8BswHkAfkB/wGwAeIB+AH/AbAB4gH4Af8CAAHPBf8iAAGuAf8BhQGqAd0B/wIAAa4B/xYAAYMB/wIA + AYQB/wIAAYQB/wIAAYQB/wIAAYQB/wIAAYQB/wIAAYMB/wIAAYIB/wIAAYEB/wIAAYAB/wMAAf8DAAH/ + AwAB/wMAAf8DAAH/AxMBGgT/AQABoQEAAf8BAAGbAQAB/wEAAbcBhgH/Aa4B6AHHAf8BwAHSAaAB/wEA + AZcBAAH/AQABkQEAAf8BAAGPAQAB/wEAAYsBAAH/AQABnwEAAf8BgAHBAZYB/wEAAaMBAAH/AwAB/wMA + Cf8BAAGoAdsB/wG/AewB+wH/AQABzwH1Af8BAAGwAewB/wEAAboB7wH/AQABwgHvAf8BAAHGAe8B/wEA + AcQB7wH/AQABtgHvAf8BAAGlAeYB/wEAAZoB4QH/AQABuAHuAf8BsQHjAfgB/wIAAdAF/wwAAecBqwGG + Af8B5QGmAQAB/wHZAZgBAAH/AbQBpQGhAf8BgQGdAcAB/wGtAcgB6AH/AgABrgH/GgABjAH/AgABjQH/ + AgABjQH/AgABjQH/AgABjQH/AgABjQH/AgABjQH/AgABjAH/AgABiwH/AgABiQH/AgABhwH/AgABhQH/ + AgABgwH/AgABgQH/AwAB/wMTARoE/wEAAagBAAH/AQABwAGNAf8BmQHXAbMB/wEAAcABgAH/AbwBwgEA + Af8BAAGbAQAB/wGQAcoBqQH/AY0ByAGlAf8BigHGAaEB/wGIAcUBngH/AQABtgGFAf8BggHCAZcB/wEA + AaUBAAH/AwAB/wMABf8BAAGtAdwB/wHBAe4B+wH/AQAB0wH3Af8BAAHbAfwB/wEAAeUC/wGPAe0C/wGX + AfIC/wGTAe0C/wEAAd8C/wEAAcwB+AH/AQABvgHvAf8BAAG6Ae4B/wGzAeMB+QH/AgAB0QX/CAAB6QGx + AY4B/wHvAccBsQH/AekB2gHRAf8B6QHaAdEB/wHrAbsBngH/AbQBpQGhAf8BhQGqAd0B/x4AAZQB/wIA + AZUB/wIAAZYB/wIAAZYB/wIAAZcB/wIAAZYB/wIAAZYB/wIAAZUB/wIAAZQB/wIAAZIB/wIAAZAB/wIA + AY4B/wIAAYwB/wIAAYoB/wIAAYYB/wMTARoBAAG0AQAB/wEAAa8BAAH/AbUB6gHTAf8BAAG8AQAB/wEA + Ab0BAAH/Ab4BtgEAAf8BAAGfAQAB/wGUAc0BrQH/AQABugGOAf8BAAG4AYkB/wEAAbYBhQH/AQABswGA + Af8BAAG1AYIB/wGDAcIBmAH/AQABoAEAAf8DAAX/AQABsgHdAf8BwwHvAfsB/wEAAdYB+AH/AQABtgHs + Af8BAAG9Ae8B/wGVAesC/wEAAZcB3QH/AQABggGrAf8BhAHhAv8BAAGpAekB/wEAAZ8B4QH/AQABvgHv + Af8BtAHlAfkB/wIAAdIF/wgAAe8BxwGxAf8B6QHaAdEB/wHvAccBsQH/Ae8BxwGxAf8B6QHaAdEB/wHr + AbsBngH/AbQBpQGhAf8eAAGcAf8CAAGdAf8CAAGfAf8CAAGfAf8BjwEAAdkB/wIAAbwB/wIAAZ8B/wIA + AawB/wGOAQAB2AH/AY0BAAHXAf8BhAEAAccB/wIAAaIB/wIAAZUB/wIAAZIB/wIAAY8B/wMTARoBAAG6 + AQAB/wGSAdcBrwH/AaAB3gG0Af8BhAHGAQAB/wGoAdABgAH/AcUBpQEAAf8BAAGjAQAB/wGWAc4BsAH/ + AZQBzQGtAf8BkQHLAaoB/wGQAcsBqAH/AQABvAGQAf8BigHHAaEB/wEAAaUBAAH/AQABiAEAAf8DAAX/ + AQABtwHeAf8BxgHwAfwB/wEAAdkB+AH/AQAB4gH9Af8BkAHoAv8BmQHpAv8BAAGfAd8B/wEAAYsBsgH/ + AYoB4gL/AQAB0AH5Af8BAAHFAfEB/wEAAcEB8AH/AbYB5wH5Af8BAAGDAdMF/wgAA+8B/wHpAdoB0QH/ + AekB2gHRAf8B6QHaAdEB/wHvAccBsQH/AekB2gHRAf8B5QGmAQAB/wGhAb0B5wH/AZEBswHnAf8BAAGW + AeEB/wEAAYEBuQH/DgABpAH/AgABpgH/AgABpwH/AgABqAH/AwAB/wMAAf8CAAGoAf8CAAGLAf8DAAH/ + AwAB/wMAAf8CAAGtAf8CAAGdAf8CAAGbAf8CAAGYAf8DEwEaAQABvwEAAf8BsAHpAc8B/wGDAdQBkAH/ + Ab8B3AGKAf8BwwHLAYIB/wHMAaIBAAH/AQABpQEAAf8BAAGjAQAB/wEAAaEBAAH/AQABnQEAAf8BAAGv + AQAB/wGRAcsBqgH/AQABqwEAAf8BAAGPAQAB/wGhAdgBvAH/AwAF/wEAAbsB3wH/AccB8QH8Af8BAAHc + AfkB/wEAAbsB7QH/AQABvQHvAf8BmwHnAv8BAAGmAeIB/wEAAaQB4QH/AZAB4gL/AQABrQHpAf8BAAGk + AeMB/wEAAcQB8AH/AbgB6AH5Af8BAAGIAdQF/wgAA+8B/wHpAdoB0QH/AekB2gHRAf8B6QHaAdEB/wHp + AdoB0QH/AekB2gHRAf8B5wGrAYYB/wHmAekB7gH/AeYB6QHuAf8BxQHWAeYB/wGRAbMB5wH/AQABgQG5 + Af8KAAGsAf8CAAGuAf8CAAGwAf8CAAGxAf8DAAH/AwAB/wIAAbEB/wIAAZEB/wMAAf8CAAGjAf8DAAH/ + AwAB/wIAAbMB/wIAAaMB/wIAAaAB/wMTARoBAAHDAQAB/wG+Ae8B3QH/AQAB0QEAAf8BkAHRAQAB/wG8 + AeABngH/AccBpwEAAf8B0wGwAQAB/wHGAZkBAAH/AcYBvAEAAf8BrwHRAQAB/wEAAaIBAAH/AQABswGB + Af8BAAGYAQAB/wEAAaMBAAH/AbEB4wHOAf8DAAX/AQABvwHgAf8ByAHzAfwB/wEAAd8B+QH/AYkB5gH9 + Af8BlQHnAv8BmgHlAv8BqgHuAv8BqAHtAv8BmQHjAv8BAAHVAfkB/wEAAcwB8wH/AQAByAHxAf8BuwHp + AfoB/wEAAY0B1QX/CAAB6QHaAdEB/wPvAf8B6QHaAdEB/wHpAdoB0QH/A+8B/wHvAccBsQH/AekBsQGO + Af8B2QGYAQAB/wHpAdoB0QH/A+8B/wHmAekB7gH/AQABlgHhAf8BgQGdAcAB/wQAAYEBAAG0Af8BgwEA + AbYB/wGEAQABuAH/AYYBAAG5Af8DAAH/AwAB/wGHAQABugH/AgABlwH/AwAB/wGDAQABtwH/AgABqgH/ + AwAB/wIAAY8B/wIAAawB/wIAAagB/wMTARoBAAHEAQAB/wG+AfAB3AH/AYEB2AGDAf8BAAHbAQAB/wG/ + AeUBmgH/AcwB3wGnAf8BygGoAQAB/wHCAb0BAAH/AbgB2gGLAf8BpgHYAQAB/wEAAacBAAH/AQABnwEA + Af8BAAG8AQAB/wEAAasBAAH/AbIB5AHOAf8BAAGCAQAF/wEAAcIB4QH/AckB8wH8Af8BywHzAf0B/wHU + AfYB/gH/AdcB9gL/AdgB9AL/AeAB+AL/Ad8B+AL/AdoB9QL/Ac0B8QH8Af8BwgHtAfoB/wG9AesB+gH/ + Ab0B6wH6Af8BAAGTAdYF/wgAAekB2gHRAf8B6QHaAdEB/wPvAf8D7wH/Ae8BxwGxAf8B7wHAAaQB/wHl + AaYBAAH/AeEBnQEAAf8B4QGWAQAB/wHrAbsBngH/A/cB/wPvAf8BkQGzAecB/wQAAYcBAAG6Af8BigEA + Ab4B/wGMAQABwAH/AY8BAAHDAf8DAAH/AwAB/wGTAQABxgH/AgABnQH/AwAB/wGPAQABwQH/AZMBAAHS + Af8DAAH/AgABjAH/AYEBAAG0Af8CAAGwAf8DEwEaAQABxAEAAf8BswHsAdIB/wGbAeIBogH/AZ0B6gGN + Af8B1AHtAbcB/wHQAeoBxwH/Ac8BuQEAAf8BzAGxAQAB/wHLAckBAAH/AQAB2wEAAf8BAAHZAQAB/wEA + AdcBAAH/AQAB0wEAAf8BAAG7AQAB/wGlAdsBwgH/AQABiAEABf8BAAHDAeEB/wGIAaABqAH/A5EB/wOO + Af8BAAG5AdwB/wEAAbgB3wH/AQABtQHeAf8BAAGxAd0B/wEAAa0B3AH/AQABqAHXAf8DAAH/AwAB/wIA + AY0B/wEAAZkB2AX/DAABtAHLAeYB/wP3Af8D9wH/Ae8BxwGxAf8B7QG2AZUB/wMAAf8DAAH/AeEBnQEA + Af8B5QGmAQAB/wP3Af8B1wHgAekB/wEAAZYB4QH/BAABjQEAAcEB/wGPAQABxAH/AZUBAAHJAf8BmgEA + AcwB/wMAAf8DAAH/AaIBAAHSAf8CAAGlAf8DAAH/AaIBAAHrAf8DAAH/AwAB/wGRAQABwwH/AYsBAAG9 + Af8BhAEAAbcB/wMTARoBAAHEAQAB/wGYAd4BtQH/AbUB6wHMAf8BsQHvAacB/wHJAe4BqQH/AdEB6gHJ + Af8B1QHPAY0B/wHZAcsBiwH/Ac0BtAEAAf8CvAEAAf8BmgHWAQAB/wGCAd4BAAH/AQAB3AEAAf8BkQHQ + AaMB/wGIAcgBpAH/AQABjwEACf8DsQH/A8YB/wOUAf8D+xH/A/sB/wMAAf8DqwH/A5YJ/wwAAc0B2gHm + Af8BtAHLAeYB/wP3Af8B7wHHAbEB/wHrAbsBngH/AwAB/wMAAf8B5QGmAQAB/wHnAasBhgH/A/cB/wEA + AaYB5QH/AQABpgHlAf8EAAGRAQABxQH/AZcBAAHLAf8BnQEAAc8B/wGiAQAB0wH/AwAB/wMAAf8BrQEA + AdwB/wGGAQABqAH/AwAB/wMAAf8DAAH/AgABkgH/AZoBAAHLAf8BlAEAAcYB/wGMAQABvwH/AxMBGgEA + AcQBAAH/AQABxAEAAf8BwAHzAeIB/wG1Ae8BtAH/AbUB8AGsAf8BwQHtAbcB/wHUAeMBtwH/AdkB2AGc + Af8B2gHTAZUB/wHNAbUBAAH/AccBswEAAf8BtQHLAYQB/wGUAd8BmgH/Aa8B5wHNAf8BAAGbAQAB/wEA + AZYBAAn/A7wB/wPEAf8DoQH/A+4R/wPrAf8DiQH/A6kB/wOkCf8QAAG+AdEB6wH/AbsB0wHsAf8BoQG5 + AdAB/wGbAaEBqwH/AbQBpQGhAf8BtAGlAaEB/wGbAaEBqwH/AZcBqwG/Af8BlAG6AewB/wG+AdEB6wH/ + CAABlAEAAckB/wGaAQABzgH/AaIBAAHUAf8BpwEAAdkB/wMAAf8DAAH/AbQBAAHjAf8BtgGCAeQB/wG0 + AYAB4wH/AbABAAHfAf8BrAEAAdwB/wGmAQAB1wH/AaABAAHRAf8BmQEAAcwB/wGRAQABxQH/AxMBGgT/ + AQABxAEAAf8BhwHXAaAB/wHAAfIB3gH/AccB8gHWAf8B1QHvAdUB/wHQAekBzwH/AdUB2wGmAf8B3AHe + AasB/wHbAc0BkAH/AdcByAGLAf8ByQHBAY4B/wG9AdUBrwH/AQABxwGRAf8BAAGjAQAN/wPUAf8DugH/ + A78B/wOmAf8D8gH/A/0B/wP9Af8D8QH/A5MB/wOoAf8DngH/A8MJ/xAAA+UB/wHNAdoB5gH/AbsB0wHs + Af8BtwHRAewB/wGlAb4B2QH/AaEBuQHQAf8BowHDAe4B/wGjAcMB7gH/AaMBwwHuAf8MAAGVAQABygH/ + AZoBAAHPAf8BoQEAAdUB/wGnAQAB2wH/Aa4BAAHhAf8BswEAAeUB/wG3AYIB6QH/AbkBhQHqAf8BtwGD + AekB/wGzAQAB5QH/Aa4BAAHhAf8BqAEAAdsB/wGiAQAB1QH/AZwBAAHPAf8BlAEAAckB/wMRARcE/wEA + AcQBAAH/AQABxAEAAf8BjAHYAaIB/wHNAfUB6AH/AdQB7QHaAf8BzgHtAdMB/wHPAd8BrwH/AdYB3gG1 + Af8C1AGiAf8BzgHQAaEB/wHEAdABqgH/AYcByQGRAf8BAAGvAQAB/wEAAaoBAA3/A/sB/wOuAf8DxAH/ + A74B/wOhAf8DlgH/A5MB/wOXAf8DrgH/A64B/wOVAf8D+wn/GAAB1wHgAekB/wG+AdEB6wH/AbQBywHm + Af8BtAHLAeYB/wG0AcsB5gH/AcUB1gHmAf8QAAGUAQAByQH/AZkBAAHOAf8BngEAAdQB/wGkAQAB2QH/ + AaoBAAHgAf8BsAEAAeUB/wG2AYAB6gH/AbsBhQHvAf8BuQGDAe0B/wGzAQAB6AH/Aa0BAAHiAf8BpwEA + Ad0B/wGhAQAB1gH/AZsBAAHQAf8BlgEAAcsB/wMLAQ8I/wEAAcQBAAH/AQABxAEAAf8BAAHEAQAB/wGl + AeEBuwH/AboB6gHMAf8BxQHgAb4B/wHFAdoBtAH/Ab0B1wGwAf8BpgHXAawB/wEAAb4BAAH/AQABugEA + Af8BAAG2AQAV/wPuAf8DrgH/A7wB/wPKAf8DzAH/A8oB/wPCAf8DrQH/A5sB/wPpDf9AAAGRAQABxQH/ + AZYBAAHLAf8BmwEAAdAB/wGfAQAB1QH/AaQBAAHaAf8BqAEAAd8B/wGsAQAB4wH/Aa4BAAHlAf8BrwEA + AeYB/wGsAQAB4wH/AakBAAHgAf8BpQEAAdsB/wGgAQAB1gH/AZwBAAHRAf8BlwEAAcwB/wMEAQUQ/wEA + AcQBAAH/AQABxAEAAf8BAAHEAQAB/wEAAcQBAAH/AQABxAEAAf8BAAHEAQAB/wEAAcQBAAH/AQABwgEA + If8D+wH/A9AB/wO6Af8DsQH/A64B/wOzAf8DyQH/A/oR/2gAAwgBCwMkATUDHwEtAwQBBggAGP8B3wHP + AfcB/wGQAQAB2AH/AcABsAHwHf8YAANLAY4BYgJYAe8BYgJYAe8DSwGOGAADMwFSAy8BSgM5AV8DRAF5 + AUsCTAGPA04BmANOAZQBRwJIAYMDOwFkAygBPQMRARcsAAMEAQUDDAEQAxEBFwMNARIBPgI/AWwBWgJg + Ad4DVAGuAxwBKAgAFP8BgAEAAdgB/wGgAYgB4CX/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A00B+gHq + AaUBAAH/AeoBpQEAAf8DTQH6AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AQABpAGAAf8BAAGkAYAB/wEA + AaUBgAH/AQABpAGAAf8BAAGkAYAB/wEAAaQBgAH/AQABpQGAAf8BAAGlAYAB/wEAAaUBgAH/AQABpAGA + Af8BWAJiAe8BVQJWAbQDMwFTHAADAQECAwcBCQMxAU4CTwFRAZwCUwFVAa0DSAGHAVsCYQHhAQABuQL/ + AVcCXwHoAx0BKQgAEP8CAAHQAf8BzwHHAe8p/wMAAf8DjQH/A40B/wONAf8DjQH/A40B/wMAAf8B7QGv + AYYB/wHtAa8BhgH/AwAB/wONAf8DjQH/A40B/wONAf8DjQH/AwAB/wEAAaQBgAH/AQABpAGAAf8BAAGk + AYAB/wEAAaUBgAH/AQABpAGAAf8BAAGkAYAB/wEAAaUBgAH/AQABpQGAAf8BAAGkAYAB/wEAAaQBgAH/ + AQABpAGAAf8BAAGlAYAB/wEAAaQBgAH/AVYCWAG8AxQBGxAAAwMBBAMnAToDNQFXAkIBWQH1AgAC/wIA + Av8CWgFhAeQBWQJbAcMBUQJtAfcBTwJRAZwDDQESCAAM/wGAAQAB2AH/AbABkAHoLf8DAAH/AwAB/wMA + Af8DAAH/AwAB/wMAAf8DWQH1AysB/AMrAfwDZwHyAwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AQABpQGA + Af8BAAGlAYAB/wEAAaQBgAH/AQABpQGAAf8BAAGkAYAB/wEAAaQBgAH/AysB/AFWAlgBuwE8Aj0BZwMj + ATMDHQQpAT4DRAF5AVsCYQHhAVACUQGfDwABAQMjATMBXgJlAeUCUwFVAbACVAFWAasCAAL/AysB/AIA + Av8CWAFeAd0CVwFaAb0CVgFYAbkDMwFSAwQBBgQACP8BzwHHAe8B/wIAAdAx/wwAAwEBAgMZASMBUAFS + AVABowMAAf8BAAGJAQAB/wEAAYoBAAH/A0AB/QNKAYwDGgElAwIBAw0AAaQBgAH/AQABpAGAAf8BAAGk + AYAB/wEAAaUBgAH/AVgCYQHmA0oBjQMdASoDGAEiATwCPQFoAVQCVgGrAVcCWQHCA1MBqgE9Aj4BagMf + AS0DJgE5CAADAwEEAwcBCgFWAlkBvgEAAbkC/wFZAmQB7AMmATkDFQEdAwYBCAMmATkCVwFZAcICAAL/ + AgAC/wNUAa4DGAEhBAAI/wIAAdAB/wGgAYAB4BH/Ae8B5wH3Af8BwAGoAfAB/wHvAecB9xX/CAADAQEC + AycBOwFYAloBwAN/Af4BtQHDAZcB/wHCAbsBjQH/AcEBugGNAf8BmgHBAZYB/wFuAn8B/gFXAVoBVwHF + AysBQgMCAQMJAAGkAYAB/wEAAaQBgAH/AQABpAGAAf8BVgJYAbwDCAELAw0BEQFJAkoBiQFBAmoB+QFb + AmAB1gFUAlYBqwFZAlwBzAEAAaUBgAH/AQABpAGAAf8BXAJkAecDMgFQBAADDQESAzYBWQM+AWwDKwH8 + AQABuQL/A04BmAMFAQcMAAMGAQgCWwFeAdACAAL/AlcBXwHoAy0BRQMAAQEI/wIAAcgN/wLfAfcB/wIA + AdgB/wIAAcgB/wGgAYAB4AH/AZABAAHYAf8BgAEAAdgB/wHvAecB9w3/CAADGAEiA1kBvgMrAfwBlAHJ + AY8B/wHBAbkBAAH/AdABsAEAAf8BzQGqAQAB/wGSAakBAAH/AQABqwEAAf8BQAGoAYgB/QFXAVoBVwHF + AxoBJQkAAaUBgAH/AQABpQGAAf8BQQJqAfkBNAI1AVUBRAJFAXwBWQJkAewBAAGkAYAB/wNEAXkDIwE0 + AzkBXwMoATwDOQFfASECXwH7AQABpAGAAf8BWAJeAd0EAAFFAkYBfwFAAY8BqAH9AVoCXwHbAVYCWQG+ + AUECagH5AysBQxQAAzgBXQEhATIBXwH7ASkCTQH6AyQBNQMAAQEE/wLAAfAB/wIAAcgN/wHAAbAB6AH/ + AYABAAHYBf8CsAHwBf8B7wHnAfcB/wIAAdAB/wHvAecB9wn/CAADSQGIA38B/gGAAckBiQH/AY0BvgEA + Af8BxQGrAQAB/wHaAakBAAH/AdYBogEAAf8BswGbAQAB/wGPAakBAAH/AQABpwEAAf8BAAGwAYAB/wFN + AU4BTQGWCQABpAGAAf8BAAGlAYAB/wFCAlkB9QNfAeABAAGlAYAB/wEAAaQBgAH/A1UBtQMkATUBTAJf + AfMBAAGlAYAB/wEAAaUBgAH/Ay4BSANQAZoBAAGlAYAB/wFOAk8BlwQAAVUCVwG3AQABkQL/AVICZQH0 + A04BmQFYAmIB7wMtAUUDAAEBEAADDQERAzgBXgNAAXADIwE0AwABAQT/AcABsAHwAf8CAAHQDf8CAAHQ + Af8B7wHnAfcJ/wKwAfAF/wHPAccB7wH/AYABAAHQCf8IAANeAdgBmQHcAbEB/wGdAdMBhgH/AboBwwEA + Af8BzwGnAQAB/wHcAawBAAH/Ac4BnAEAAf8BvgGMAQAB/wG4AZYBAAH/AYQBpgEAAf8BgAG/AZgB/wFa + AWABWgHeCQABpAGAAf8BAAGkAYAB/wEAAaQBgAH/AQABpAGAAf8BAAGlAYAB/wEAAaQBgAH/AUECQgFz + A0oBigEAAaUBgAH/A04BmQNSAakBUwJVAa0DOAFdAQABpQGAAf8DLQFGBAADIAEuAVICVAGmATwCPQFn + AVoCXQHTATICXwH7A0IBdgMKAQ4MAAMCAQMDQwF3AUABjwGoAf0DKwH8Ay0BRQMAAQEE/wLAAfAB/wIA + AcAN/wGAAQAB2BH/Ae8B3wH3Bf8CAAHAAf8B7wHnAfcF/wgAA1kB9QGZAeABrgH/AZMB0wEAAf8BwAHN + AYgB/wHOAasBAAH/Ac4BowEAAf8BwgG2AQAB/wG0AbkBAAH/AbIBqQEAAf8BAAGnAQAB/wGFAcIBmgH/ + AUkBYgFbAfYJAAGkAYAB/wEAAaQBgAH/AQABpAGAAf8BAAGkAYAB/wEAAaQBgAH/AQABpAGAAf8DSgGN + ATwCPQFoAQABpQGAAf8DMwFSAz8BbQFHAkgBgwFFAkYBfgNdAe0DCAELDAADHAEnAUACqAH9AQABuQL/ + AVoCXQHKAyMBNAMJAQwDBwEKAwsBDwMoAT0BWAJfAeMBAAGRAv8BXAJgAdQDEgEYBAAE/wHQAcAB8AH/ + AgABwAH/At8B9wn/Ae8B5wH3Af8BoAGIAeAJ/wLfAfcJ/wIAAcAB/wHQAcgB8AX/CAADZQH0AaEB5QGy + Af8BggHeAQAB/wHGAeYBpQH/AcwBxwGIAf8BxgG3AQAB/wG0AdcBAAH/AYYB1gEAAf8BAAHSAQAB/wEA + Ab0BAAH/AYsByAGeAf8DWQH1CQABpAGAAf8BAAGkAYAB/wEAAaQBgAH/AQABpQGAAf8BAAGkAYAB/wEA + AaQBgAH/AVUCXAHqAyQBNQFJAkoBiQFYAlwB0QNQAZ4BIQIiATEBTgJdAfADRAF5FAABUgJUAaYBAAG5 + Av8BXQJhAeIDLQFFA0cBggNFAX4DTgGYAVgCXwHjAUICWQH1ASECfwH+AzgBXQMCAQMEAAT/AeAB0AHw + Af8CAAHIAf8BoAGIAeAN/wGgAYgB4AH/AYABAAHYAf8BoAGAAeAB/wHQAcgB8AX/AdABwAHwAf8CAAHI + Af8B4AHQAfAF/wgAA14B1QGnAeYBvQH/AacB6wGhAf8BzwHtAbYB/wHRAdcBowH/AdIBvwEAAf8BvwHC + AQAB/wGNAdEBAAH/AQAB2gEAAf8BAAHTAQAB/wGMAcsBogH/AVoCXwHbCQABpAGAAf8BAAGkAYAB/wEA + AaQBgAH/AQABpAGAAf8BAAGkAYAB/wEAAaQBgAH/AQABpAGAAf8BXQJhAeIBPAI9AWgDMQFOAT4CPwFs + AV4CZQHlA1YBtgMEAQYUAAMNAREBWQJcAc8DOgFiA1IBqQEAAZEC/wEAAZEC/wFMAl8B8wNKAYoCUwFV + AbADTgGZAxQBGwgACP8BsAGgAegB/wIAAcAB/wHPAccB7x3/AYABAAHYAf8CAAHIAf8C3wH3Bf8IAANH + AYEBlgKoAf0BtgHwAbwB/wG9Ae8BrwH/Ac0B5QG0Af8B2AHXAZ0B/wHTAcYBggH/AcIBuQEAAf8BrQHL + AQAB/wGUAd8BnAH/A38B/gNLAY4JAAGkAYAB/wEAAaQBgAH/AQABpQGAAf8BAAGkAYAB/wEAAaUBgAH/ + AQABpQGAAf8BAAGkAYAB/wEAAaUBgAH/AQABpQGAAf8BAAGlAYAB/wFZAl0B1wNBAXIDBAEGHAADBgEI + AxEBFwFYAmIB7wEAAZEC/wEAAZEC/wFQAlIBpAJbAWAB1gIAAv8CVwFcAd8DHwEtCAAM/wGAAQAB2AH/ + AgABwAH/AaABiAHgFf8BzwG/Ae8B/wIAAcAB/wIAAdAJ/wgAAxYBHwNXAbcDXwH7AcwB8gHZAf8B0gHs + AdMB/wHTAd8BsgH/AtoBpwH/AdcBzAGTAf8BywHGAZQB/wMrAfwDWgHAAxkBIwgAA0IBdgFRAlIBoQEA + AaQBgAH/AQABpQGAAf8BAAGlAYAB/wEAAaQBgAH/AVgCXwHjA1YBswNAAXEDIAEuAwABASwAAwcBCgMm + ATkDLgFIAxQBGwJXAVoBvQIAAv8CVQFXAboDCgEOCAAQ/wIAAdAB/wIAAcAB/wIAAcgB/wGgAYAB4AH/ + AaABgAHgAf8BoAGAAeAB/wIAAdAB/wIAAcAB/wIAAdAN/wsAAQEDIwEzA1YBtgMrAfwBwAHpAc0B/wHJ + AeIBvQH/AcwB2gGyAf8BwQHVAagB/wN/Af4DWQG/AycBOwMBAQIMAAM6AWEBVgJYAbkDSgGKAzcBWwMi + ATIDCgEOTAADCgEOAzABTAMKAQ0MABT/Ac8BvwHvAf8CAAHQAf8CAAHAAf8CAAHIAf8CAAHQAf8BgAEA + AdgB/wHAAbAB6BH/EAADFgEfA0cBgQNdAdMDXwHzA20B9wNhAdoDSgGJAxkBIwMAAQEbAAEBAwQBBQMM + ARADGAEhAyUBNwMmATkDHQEpAxQBHAMKAQ4DAwEEDAAB2AHKAcMB/wGNAgAB/wMAAf8BggIAAf8BmQIA + Af8BiQIAAf8DAAH/AwAB/wGAAgAB/wGQAgAB/wGzAZkBjAH/AeEB1wHSCf8B+gH1AfIB/wH6AfUB8QH/ + JAABzAHSAdMB/2MAAQEDCAELAzEBTQNVAbUDYQHuA6gB/QMrAfwDYAHrA1YBtAM1AVcDFwEgAwcBCQMA + AQEEAAGJAgAB/wMAAf8BjwIAAf8B5QHUAckD/wH+Af8B9AHvAesB/wHFAa0BnwH/AwAB/wMAAf8DAAH/ + AwAB/wMAAf8BrwGUAYcB/wH1Ae8B7AH/AfEB4wHYAf8B8QHlAdwB/yAAAcIB1AHZAf8BAAGUAbUB/wGj + AcYB0AH/HAADAQQCAQM3AAEBAwsBDwNPAZcDKwH8A/QB/wP7Af8D/QH/A/0B/wPhAf8BvgK9Af8DTQH6 + A04BlgMdASkDBwEKAwABAQMAAf8BjQIAAf8BugIAAf8B1QGwAZcB/wHXAcMBtwH/AfAB6AHjBf8B0AG7 + Aa8B/wMAAf8DAAH/AwAB/wMAAf8DAAH/AZ0CAAH/AfkB9QHyBf8FAAG0Ac0B/wHAAc0B0AH/FQABqgHR + Af8BAAGoAdQB/wGjAcwB2QH/GAADHQEpAj0BPAFnAjoBOQFgAyYBOAMQARUMAAMNARIDJgE4GAADBQEH + A1ABmwHsAusB/wP8Ef8D/gH/AwAB/wOLAf8B3QLcAf8DTgGZAxkBIwMEAQUDAAH/AawCAAH/Aa8CAAH/ + AwAB/wMAAf8DAAH/AeIB1gHOA/8B/gH/AZECAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8BsAGWAYoF/wQA + AZwB4gH2Af8BAAGUAbUB/wEAAZIBogH/AcwB0gHTAf8JAAGzAc4B/wEAAbkB6gH/AQABqAHUAf8BsgHS + AdsB/xQAAxYBHwFcAlkBzAFZAlcBwgFRAlABnwNOAZgCNgE1AVgDIwEzAwMBBAMLAQ8BTQJOAZUBUAJR + AZ8UAAMBAQIDMwFTA38B/gP9Ef8DuAH/A8gB/wPsAf8DAAH/AwAB/wMhAfsDOQFfAw0BEgGFAgAB/wGz + AgAB/wGeAgAB/wMAAf8DAAH/AwAB/wGyAZUBhwX/AaMBgQEAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA + Af8B4gHZAdQB/wgAAYUB3gH3Af8BAAGvAd0B/wEAAYYBnQH/AQABpgGxAf8BAAGvAcMB/wEAAbMB4gH/ + AQABwgH0Af8BAAGjAc4B/wG6AdYB3QH/FAADSgGKAVkCVgG+AwsBDwMYASIDUAGdAVMCVQGwA0cBgAMv + AUoDUAGdAQABjQHDAf8DSgGMFAADBAEGA1kBxwH7AvoB/wPeAf8DtgX/A+kB/wKbAZwB/wGmAqcB/wOh + Af8CmAGaAf8DAAH/AwAB/wMAAf8DVwG/AxgBIgMAAf8BrwIAAf8BqwIAAf8DAAH/AwAB/wMAAf8BrAGM + AQAF/wGmAYMBAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AbIBlwGKAf8IAAG/AewB+AH/AQAB0QH3 + Af8BAAG5AeoB/wEAAZsBwwH/AQABrwHdAf8BAAG/AfEB/wEAAcIB9AH/AQABowHOAf8BrgHIAc8B/xQA + AWECXgHaAy4BRwQAAwMBBANOAZgDKwH8AVsCYQHhAVgCXgHdAQ0CfwH+AVECbQH3A0QBehQAAxYBHwMr + AfwDAAH/AwAB/wPvAf8CvwHAAf8DAAH/AwAB/wIAAZkB/wIAAbQB/wIAAb0B/wIAAacB/wMAAf8DAAH/ + A0IB9QMkATUDAAH/AZYCAAH/AbsCAAH/AaMCAAH/AZ8CAAH/AasBjAEAAf8B1QHFAbwF/wHPAbsBsAH/ + Aa0BjQEAAf8BnAIAAf8DAAH/AwAB/wMAAf8DAAH/AZACAAH/DQAB3AH4Af8BAAHEAfQB/wEAAcIB9QH/ + AQABwgH1Af8BAAHCAfUB/wEAAcIB9AH/AQABrwHdAf8BAAGGAZ0B/wGEAasBtgH/EAACYAFZAesDDwEU + CAADJgE4AVwCYQHcAQABqwHuAf8BAAGhAeEB/wEAAZgB1AH/AysB/ANTAaoDBAEFEAADLQFFAwAB/wMA + Af8DAAH/AgABmAH/AgABlAH/AgAByQH/AgABygH/AgABygH/AgABygH/AgABygH/AgABygH/AgABygH/ + AwAB/wMAAf8DMQFOAwAB/wMAAf8BmgIAAf8BswIAAf8B9AHgAdAV/wHwAdkByAH/AbICAAH/AZoCAAH/ + AwAB/wMAAf8BgAIAAf8MAAGaAdkB7AH/AQABxgH1Af8BAAHCAfUB/wEAAcIB9QH/AQABwgH1Af8BAAHC + AfUB/wEAAcIB9QH/AQABswHiAf8BAAGWAbwB/wEAAYYBnQH/Aa4BwAHEAf8IAAJeAVsB2QMHAQoMAAFV + AlYBtAEAAb4B+QH/AQABtAH2Af8BAAGoAeoB/wEAAZwB2QH/AQ4CfwH+AV4CYQHaAzoBYgMvAUoDNAFU + AwEBAgMvAUoDAAH/AwAB/wMAAf8CAAHEAf8CAAHKAf8CAAHJAf8CAAGpAf8CAAGlAf8CAAHKAf8CAAHK + Af8CAAHKAf8CAAHKAf8CAAG1Af8DAAH/AzIBUQGAAgAB/wMAAf8DAAH/AwAB/wGUAgAB/wGfAgAB/wHN + AboBrwX/Ac8BuwGvAf8BoQIAAf8BmAIAAf8BowIAAf8BuwIAAf8BlgIAAf8DAAH/AYACAAH/DQABvAHm + Af8BAAHCAfUB/wEAAcIB9QH/AQABwgH1Af8BAAHCAfUB/wEAAcIB9AH/AQABwgH0Af8BAAHCAfQB/wEA + AcIB9AH/AQABtAHhAf8BAAGWAbwB/wEAAbMByQH/BAADUAGeAxEBFwgAAzUBVwNiAekBAAHPAfsB/wEA + AcoB+wH/AQABvQH6Af8BEQJ/Af4DKwH8ASkCTQH6AUwCXwHzAVUCVwG6AUcCSAGDAxgBIQMgAS8DAAH/ + AwAB/wIAAckB/wIAAckB/wIAAY4B/wMAAf8DAAH/AgABmwH/AgABygH/AgABygH/AgABqAH/AgABqAH/ + AwAB/wNAAf0DJgE4AZACAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8BrgGOAQAF/wGlAYIBAAH/AwAB/wMA + Af8DAAH/AasCAAH/Aa4CAAH/AwAB/wGOAgAB/wkAAa4BzwH/AQABvAHuAf8BAAHCAfQB/wEAAcIB9AH/ + AQABwgH0Af8BAAHCAfUB/wEAAcIB9AH/AQABxgH1Af8BAAHPAfcB/wEAAdYB+AH/AY0B3gH1Af8BvwHs + AfgB/wgAAysBQgMzAVMEAAMkATYDYAHUAYsB2gH7Af8DYgH2AYkB2QH8Af8BAAHOAfsB/wFRAm0B9wFQ + AlIBowMuAUgDCgEOAyUBNwMvAUoEAAMFAQcDXgHlAgABhwH/AgABygH/AgABjAH/AwAB/wMAAf8CAAG1 + Af8CAAHKAf8CAAHKAf8CAAHKAf8CAAGYAf8DAAH/AwAB/wNZAdcDFQEdAbIBlwGKAf8DAAH/AwAB/wMA + Af8DAAH/AwAB/wGuAY8BAAX/Aa8BjgEAAf8DAAH/AwAB/wMAAf8BnwIAAf8BtAIAAf8DAAH/AbABlgGJ + Af8FAAGrAcQB/wEAAb4B7QH/AQAByAH1Af8BAAHNAfYB/wEAAcgB9QH/AQABxAH0Af8BAAHCAfQB/wEA + Ab8B8QH/AQABwQHqAf8YAAMBAQIDPAFmAwwBEANDAXcDWgG9A04BlgNDAXgDXQHXAQAB1QH8Af8BWgJg + Ad4bAAEBA0YBgQMAAf8DAAH/AwAB/wIAAcEB/wIAAaIB/wIAAcEB/wIAAcoB/wIAAcoB/wIAAcoB/wMA + Af8DAAH/AwAB/wNEAXwDCQEMAeIB2AHTAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wGXAgAF/wHiAdUBzQH/ + AwAB/wMAAf8DAAH/AbICAAH/AagCAAH/AwAB/wHiAdgB0wH/AQAB1AHtAf8BAAHWAfgB/wGcAeIB9gH/ + Ab8B7AH4Af8BzAHuAfgB/wHMAe4B+AH/AQAB2wH4Af8BAAHEAfQB/wEAAbwB7gH/AQABrwHJAf8cAAMP + ARQDFgEfAwkBDAwAAysBQgNcAfgDXAHMHAADCgEOA1kB1wMAAf8DAAH/AgABjAH/AwAB/wIAAZIB/wIA + AcoB/wIAAbkB/wIAAcYB/wMAAf8DAAH/A1gBywMTARoDAQECBP8BrwGUAYYB/wMAAf8DAAH/AwAB/wMA + Af8DAAH/AdABuwGwBf8B8gHrAeYB/wHXAcYBvAH/AdgBtgGeAf8BtwIAAf8BiQIAAf8BrgGTAYYF/xgA + Ac0B7QH2Af8BAAHRAfcB/wEAAbwB7gH/AQABvgHRAf84AANJAYcDVgGzIAADGwEmA1gB3QMAAf8DAAH/ + AgABugH/AgABpAH/AgABqwH/AwAB/wMAAf8DAAH/A1oB0wMeASsDBAEFBAAE/wH4AfUB9AH/AZ0CAAH/ + AwAB/wMAAf8DAAH/AwAB/wMAAf8BxQGsAZ4B/wH0Ae0B6AX/AeEBzgHBAf8BiAIAAf8BnAIAAf8B+AH2 + AfUF/xwAAY0B3gH1Af8BAAG0AeEB/wGjAcwB2QH/OAADDAEQAy0BRSQAAxABFQNQAZoDUQH3AwAB/wMA + Af8DAAH/AwAB/wNSAfQDTAGTAxMBGgMDAQQIAAj/AfkB9wH2Af8BsAGVAYgB/wMAAf8DAAH/AwAB/wMA + Af8DAAH/AYMCAAH/AYsCAAH/AYACAAH/Aa4BkwGGAf8B+QH4AfcJ/xwAAc0B7QH2Af8BAAHEAesB/wHL + AeAB5gH/PAADAQECKwABAQMSARgDNgFZA0UBfQNFAXwDNQFXAxIBGQMEAQYDAAEBDAAQ/wHiAdgB0wH/ + AbMBmQGMAf8BkAIAAf8DAAH/AwAB/wGNAgAB/wGwAZUBiAH/AeEB1gHREf8gAAGFAd4B9wH//wAsAAH/ + AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/HAADWQG/A1kBv6sA + Af8D/gP/Af4B/wH9Df8B/gH/AfwB/wH9A/8B/gP/Af4C/wH9A/8B/gL/AwAB/xgAA1kBvwEAAdEBoAH/ + AQABzwGeAf8DWQG/MAADFgEeA0kBiANVAbUDRAF5AwQBBSQAAxwBKAMxAU4DRAF7ATACMQFNAzgBXAMK + AQ4DBgEIIwAB/wH9BP8C/QL/Af4L/wH+BP8B/gH/Af0B/gL/Af0E/wH+Av8B/QH/Af4B/wMAAf8IAANG + AX4BnQIAAf8BpAIAAf8BzQKwAf8BlwIAAf8BpgG/AbEB/wGTAdwB4gH/AQABvQHxAf8BrgHeAfkB/wEA + AcQB9QH/AQABwAHzAf8DRgF+IAADFgEeAjYBNQFYA0gBhQNdAe0DIAEuHAADBgEIAzABTAFSAlMBqAFd + AmEB4gFOAl0B8AFaAmEB5AFXAlwB3wNOAZQDNQFWAwcBCgMBAQIPAAH/AwAB/wMAAf8DAAH/AwAB/wMA + Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/CAADRgF+AwAB/wGyAYQBhQH/ + AYgCAAH/AwAB/wGbAasBnwH/AYIB1gHfAf8BAAGkAe4B/wEAAbEB8AH/AY4B0gH5Af8BAAGqAfAB/wNG + AX4gAAMDAQQDJAE2AlYBVAGrAWECXAHcAxEBFxgAAwEBAgM3AVoBWwJgAdYBAAGmAbsB/wEAAa8BwwH/ + AQABtgHJAf8BlgHGAdYB/wGUAboBxwH/AYQBswHBAf8DXwHjA0MBeAMdASoPAAH/AgABygH/AgABygH/ AgABygH/AgABygH/AgABygH/AgABygH/AgABygH/AgABygH/AgABygH/AgABygH/AgABygH/AgABygH/ - AgABygH/AwAB/wgAA0YBfgG2AosB/wG1AokB/wGwAoEB/wGFAgAB/wGaAagBnAH/AQAB1AHgAf8BAAGu - AfAB/wGLAdAB9wH/AYsBzwH4Af8BhwHPAfcB/wNGAX4gAAMhATABXAJYAdEDUQGgAywBQxgAAwUBBwMQ - ARUBVwJaAcUDKwH8AQABuQHQAf8BkwHHAdgB/wG1AdIB3AH/Ab8B0gHZAf8BxwHYAd4B/wGqAcAByAH/ - AaoBzAHXAf8DZQH0AzcBWwMqAUADAQECBwAJ/wIAAcoB/wIAAcoB/wIAAcoB/wIAAcoF/wIAAcoB/wIA - AcoB/wIAAcoB/wIAAcoC/wH+Bv8CAAHKAf8DAAH/CAADWQG/AwAB/wMAAf8BtwKNAf8BrQIAAf8BqwHJ - Ab0B/wGYAd8B4QH/AYUBzQH5Af8BiAHNAfkB/wEAAaUB7gH/AQABpAHuAf8DWQG/IAADKgFBAWACWQHr - A0gBhQM2AVgYAANCAXUBVgJZAb4BmQG3Ab0B/wEAAa0BwAH/AacB3AHsAf8BtAHTAd0B/wHdAeYB6AH/ - AdwB4gHkAf8BwQHLAc4B/wGSAasBsQH/AbcBxQHJAf8BmgGzAbwB/wNeAdUDXwHbAwsBDwcAAf8CAAHK - Af8CAAHKBf8CAAHKAf8CAAHKBf8CAAHKBf8CAAHKAf8CAAHKAf8B+wP/AgABygH/AgABygH/Af0D/wMA - Af8EAANZAb8BsQEAAbgB/wGcAgAB/wGdAgAB/wGdAgAB/wHPAbIBswH/A1kBvwNZAb8BswHcAfcB/wEA - AbwB7gH/AQABvgHuAf8BAAG/AfAB/wGnAYUBiwH/A1kBvxwAAwsBDwM7AWUCUAFPAZsDOQFfGAADMwFT - A18B6AGgAagBqgH/AY0BrQG3Af8B6wH3AfsB/wG9AdcB3wH/AeEC5QH/AecB7QHuAf8ByQHOAc8B/wHa - At4B/wHTAdkB2wH/Aa0BvgHFAf8DfwH+A6gB/QNCAXMDBAEGAwAB/wIAAcoF/wIAAcoB/wIAAcoB/wIA - AcoF/wIAAcoF/wIAAcoB/wIAAcoF/wIAAcoB/wH9A/8CAAHKAf8DAAH/AykBPwGEAQABmwH/AZwBAAGx - Af8BsAGjAcwB/wGwAaMBzAH/Aa4BogHLAf8BwwGoAdQB/wMpAT8DRgF+AcIBnQGkAf8BuwGIAZcB/wG8 - AYoBmQH/AbwBigGZAf8BmwIAAf8BhwIAAf8DKQE/CAADLwFKAy8BSSAAAwEBAgMkATYDCAELBAADCQEM - AVACUgGkAYIBpAGsAf8BhQGtAbgB/wHfAfEB9wH/AcIB2gHhAf8B5ALmAf8D9wH/A+4B/wHyAfMB8gH/ - Ad8B5AHlAf8BwAHQAdUB/wNkAewDUgGjA14B2QM7AWQDAAX/AgABygH/AgABygH/AgABygX/AgABygH/ - AgABygH/AgABygX/AgABygL/Af4C/wIAAcoB/wIAAcoB/wIAAcoB/wMAAf8EAAMpAT8BtAGuAc0B/wEA - Ac4BlgH/AQABzgGYAf8BAAHWAa0B/wGBAeIBwwH/Aa0B5AHtAf8BtwHDAegB/wGqAQABugH/AZIBAAGo - Af8CAAGOAf8CAAGOAf8BwQGbAa0B/wMpAT8EAAMBAQIDIgEyAlgBYQHmAVgCWwHLIAADFAEcAlgBWgHA - A1ABmwMdASoEAAMrAUIBQAGOAZUB/QGmAbgBvAH/AZoBsQG4Af8B1QHmAewB/wHqAu8B/wHuAu8B/wP1 - Af8B5AHlAeYB/wHaAeEB4gH/AbwB0QHYAf8DXQHXAygBPAMiATEDHAEnAwAB/wIAAcoJ/wIAAcoF/wIA - AcoB/wIAAcoB/wIAAcoF/wIAAcoB/wIAAcoG/wH+Av8CAAHKAf8DAAH/CAADRgF+AQAB1AGpAf8BAAHZ - AbIB/wGGAeMBxwH/AQAB4AHDAf8BAAHYAdkB/wGbAZoB1gH/AbEBAAG/Af8BrgEAAb4B/wGZAQABrQH/ - AZABAAGlAf8DRgF+CAADJAE2A0sBjgM1AVYDOQFfA0MBeAMNAREUAAMFAQcDQAFxAlIBUwGoAlMBVQGt - A1ABmgQAAwoBDgNZAccBAAGnAbMB/wEAAbABvwH/AcMB3wHpAf8B4QHrAe4B/wHsAfAB8QH/AeIB5gHn - Af8B2QHeAd8B/wHAAc4B0wH/AaUBxwHRAf8DWQG+AxkBIwsAAf8CAAHKAf8CAAHKAf8CAAHKAf8CAAHK + AgABygH/AgABygH/AwAB/wgAA0YBfgG2AosB/wG1AokB/wGwAoEB/wGFAgAB/wGaAagBnAH/AQAB1AHg + Af8BAAGuAfAB/wGLAdAB9wH/AYsBzwH4Af8BhwHPAfcB/wNGAX4gAAMhATABXAJYAdEDUQGgAywBQxgA + AwUBBwMQARUBVwJaAcUDKwH8AQABuQHQAf8BkwHHAdgB/wG1AdIB3AH/Ab8B0gHZAf8BxwHYAd4B/wGq + AcAByAH/AaoBzAHXAf8DZQH0AzcBWwMqAUADAQECBwAJ/wIAAcoB/wIAAcoB/wIAAcoB/wIAAcoF/wIA + AcoB/wIAAcoB/wIAAcoB/wIAAcoC/wH+Bv8CAAHKAf8DAAH/CAADWQG/AwAB/wMAAf8BtwKNAf8BrQIA + Af8BqwHJAb0B/wGYAd8B4QH/AYUBzQH5Af8BiAHNAfkB/wEAAaUB7gH/AQABpAHuAf8DWQG/IAADKgFB + AWACWQHrA0gBhQM2AVgYAANCAXUBVgJZAb4BmQG3Ab0B/wEAAa0BwAH/AacB3AHsAf8BtAHTAd0B/wHd + AeYB6AH/AdwB4gHkAf8BwQHLAc4B/wGSAasBsQH/AbcBxQHJAf8BmgGzAbwB/wNeAdUDXwHbAwsBDwcA + Af8CAAHKAf8CAAHKBf8CAAHKAf8CAAHKBf8CAAHKBf8CAAHKAf8CAAHKAf8B+wP/AgABygH/AgABygH/ + Af0D/wMAAf8EAANZAb8BsQEAAbgB/wGcAgAB/wGdAgAB/wGdAgAB/wHPAbIBswH/A1kBvwNZAb8BswHc + AfcB/wEAAbwB7gH/AQABvgHuAf8BAAG/AfAB/wGnAYUBiwH/A1kBvxwAAwsBDwM7AWUCUAFPAZsDOQFf + GAADMwFTA18B6AGgAagBqgH/AY0BrQG3Af8B6wH3AfsB/wG9AdcB3wH/AeEC5QH/AecB7QHuAf8ByQHO + Ac8B/wHaAt4B/wHTAdkB2wH/Aa0BvgHFAf8DfwH+A6gB/QNCAXMDBAEGAwAB/wIAAcoF/wIAAcoB/wIA + AcoB/wIAAcoF/wIAAcoF/wIAAcoB/wIAAcoF/wIAAcoB/wH9A/8CAAHKAf8DAAH/AykBPwGEAQABmwH/ + AZwBAAGxAf8BsAGjAcwB/wGwAaMBzAH/Aa4BogHLAf8BwwGoAdQB/wMpAT8DRgF+AcIBnQGkAf8BuwGI + AZcB/wG8AYoBmQH/AbwBigGZAf8BmwIAAf8BhwIAAf8DKQE/CAADLwFKAy8BSSAAAwEBAgMkATYDCAEL + BAADCQEMAVACUgGkAYIBpAGsAf8BhQGtAbgB/wHfAfEB9wH/AcIB2gHhAf8B5ALmAf8D9wH/A+4B/wHy + AfMB8gH/Ad8B5AHlAf8BwAHQAdUB/wNkAewDUgGjA14B2QM7AWQDAAX/AgABygH/AgABygH/AgABygX/ + AgABygH/AgABygH/AgABygX/AgABygL/Af4C/wIAAcoB/wIAAcoB/wIAAcoB/wMAAf8EAAMpAT8BtAGu + Ac0B/wEAAc4BlgH/AQABzgGYAf8BAAHWAa0B/wGBAeIBwwH/Aa0B5AHtAf8BtwHDAegB/wGqAQABugH/ + AZIBAAGoAf8CAAGOAf8CAAGOAf8BwQGbAa0B/wMpAT8EAAMBAQIDIgEyAlgBYQHmAVgCWwHLIAADFAEc + AlgBWgHAA1ABmwMdASoEAAMrAUIBQAGOAZUB/QGmAbgBvAH/AZoBsQG4Af8B1QHmAewB/wHqAu8B/wHu + Au8B/wP1Af8B5AHlAeYB/wHaAeEB4gH/AbwB0QHYAf8DXQHXAygBPAMiATEDHAEnAwAB/wIAAcoJ/wIA + AcoF/wIAAcoB/wIAAcoB/wIAAcoF/wIAAcoB/wIAAcoG/wH+Av8CAAHKAf8DAAH/CAADRgF+AQAB1AGp + Af8BAAHZAbIB/wGGAeMBxwH/AQAB4AHDAf8BAAHYAdkB/wGbAZoB1gH/AbEBAAG/Af8BrgEAAb4B/wGZ + AQABrQH/AZABAAGlAf8DRgF+CAADJAE2A0sBjgM1AVYDOQFfA0MBeAMNAREUAAMFAQcDQAFxAlIBUwGo + AlMBVQGtA1ABmgQAAwoBDgNZAccBAAGnAbMB/wEAAbABvwH/AcMB3wHpAf8B4QHrAe4B/wHsAfAB8QH/ + AeIB5gHnAf8B2QHeAd8B/wHAAc4B0wH/AaUBxwHRAf8DWQG+AxkBIwsAAf8CAAHKAf8CAAHKAf8CAAHK Af8CAAHKAf8CAAHKAf8CAAHKAf8CAAHKAf8CAAHKAf8CAAHKAf8CAAHKAf8CAAHKAf8CAAHKAf8CAAHK - Af8DAAH/CAADRgF+AQAB3wHAAf8BhQHjAcQB/wGAAeABxQH/AQABygGWAf8BgwHYAd8B/wGcAZ8B1wH/ - AgABjQH/AbIBgAHBAf8BrQEAAb0B/wGmAQABtwH/A0YBfhAAAwcBCgJSAVMBqAJbAWAB1gMzAVMDFgEe - DAADEAEWAT8CQAFvAlgBYQHmAzsBZQMEAQUDGQEjBAADAQECA0gBhQFZAmcB8gEAAb4B1gH/AZIBygHb - Af8BrQHJAdMB/wG6Ac0B1QH/AcwB3QHjAf8BuwHQAdcB/wGTAqgB/QFeAmEB4QM3AVoDEQEXCwAB/wMA - Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wgA - A0YBfgEAAckBkwH/AQAB3QG6Af8BAAHWAawB/wEAAckBlAH/AYAB2AHcAf8BmwGdAdYB/wIAAYsB/wGU - AQABqQH/AZ8BAAGxAf8CAAGNAf8DRgF+DAADAQECAy0BRQNQAZ4DGAEhA1UBtQJZAVsBwwNFAXwDUQGc - A0IBcwJZAWAB6wM9AWkDTgGZAVoCXAHNAwABAQgAAwMBBAMiATIDSgGNATICXwH7AQABqgHAAf8BAAG8 - AdAB/wGOAcEB0wH/AY0BvgHMAf8BgwGxAb8B/wFcAl4BzgM7AWQDFwEgGwAC/wH+Av8D/g7/Af4G/wH7 - Af8B/gX/AfwC/gH/Af0D/wMAAf8IAAMpAT8DRgF+A0YBfgNGAX4BpgHgAesB/wEAAcgB8QH/AQABvgHx - Af8BvQHJAesB/wNGAX4DRgF+A0YBfgMpAT8MAAMBAQIDGAEiAxABFgMKAQ0CVQFXAbcDNAFUA0oBjQJZ - AVwByQMvAUoCWgFhAeQDQgF2AwQBBQMxAU4DAAEBEAADCQEMA0IBdANSAaYBWgJeAdUBWwJeAdkBWAJb - AcYBTQJOAZUDMAFLAwcBCR8AAf8B/QH/Af4D/wH+Cf8B+gH/Af4C/wH+Dv8DAAH/AwAB/wMAAf8YAAMp - AT8BAAG6AfIB/wEAAcEB9QH/AykBPygAAxYBHwI8AT0BaAMAAQEDFgEeA1MBqgMKAQ4DKAE8AzQBVB8A - AQEDBwEKAxIBGAMmATkDKAE9AxoBJAMXASADCgENIwAB/wP+A/8B/gH/AfsE/wH+A/8B/gL/Af4B/Qf/ - Af4C/wP+Af8DAAH/A8QB/yAAAykBPwMpAT8sAAMHAQoDBQEHBAADFAEcAyMBMwQAAwsBDwMLAQ9fAAH/ - AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/xQAAagBlQFAAf0BygGYAQAB/wG6 - AY4BAAH/AZACAAH/AZACAAH/AwAB/wHDAZQBAAH/AckBlwEAAf8BhwIAAf8DAAH/A2QB9ANXAb0DAgED - VAABWQJkAewBSAJiAfYBSAJiAfYBSAJiAfYBSAJiAfYBSAJiAfYBSAJiAfYBSAJiAfYBSAJiAfYBSAJi - AfYBWQJbAcMEAAMBAQIDBQEHAwQBBgMAAQEsAANOAZkDXQHSAwAB/wHHAZUBAAH/AcsBygHJAf8BqgGo - AacB/wGwAq8B/wOuAf8DmgH/AYsBiQGHAf8BkAGOAYwB/wOhAf8DrgH/A6EB/wMrAfwDVQHqFAADLQFG - A10B0gMAAf8DAAH/AwAB/wMAAf8DAAH/A10B1xwAAy0BRgNNAfoB3QHsAfYB/wG9Ae4B+QH/AawB6gH4 - Af8BqwHqAfgB/wGrAeoB+AH/AasB6gH4Af8BrQHqAfgB/wHUAfMB+wH/AaQByAHkAf8BVAJWAasDBQEH - AzgBXQNVAbQDXQHtA1ABngMqAUEDMQFOAz0BagNHAYIBSQJIAYgDRgF+AzMBUgMaASQDBwEJCAADQAH9 - A6cB/wO1Af8DgQH/AwAB/wLTAc4B/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A8QB/wMA - Af8MAAMwAUsDXAHMA6MB/wHGAcUBxAH/AdkB1AHTAf8B1AHPAc4B/wHTAc4BzQH/AdMBzgHNAf8B6ALl - Af8DAAH/FAADMAFLA1wBzAOjAf8BjQGzAcgB/wGOAcIB4QH/AZcB6AH5Af8BAAHcAfYB/wEAAdsB9QH/ - AQABiAHCAf8BAAHbAfUB/wEAAd4B9gH/AbEB5wH2Af8BWAJiAekDHQEqBAACPQE+AWoCRwFIAYMCPgE/ - AWwDKQE+AyMBMwNIAYUDQAH9AwAB/wNfAfsDKwH8AZkCqAH9A2IB9gMsAUMLAAH/A7UB/wO1Af8BkwKU - Af8BgAGCAYMB/wLTAc4B/wPSAf8DAAH/A70B/wPOAf8DwgH/A60B/wMAAf8D0gH/A8QB/wMAAf8IAANc - AckDswH/A9QB/wHhAt8B/wHFAb8BvQH/Ab0BtQGzAf8BuQGxAbAB/wG5AbEBrgH/AbcBrwGuAf8B0wHO - Ac0B/wMAAf8QAANcAckDswH/A9QB/wHhAt8B/wHCAb4BvQH/AQABowHJAf8BqwHbAe8B/wEAAeAB9wH/ - AQAB2gH1Af8BAAHaAfUB/wEAAdsB9QH/AZAB5gH4Af8BkgHBAeEB/wFFAkYBfgwAAwcBCgMpAT4DRgGA - A1cBwgNMAZEDAAH/AUgBYgFIAfYBSAFiAUgB9gI1ATQBVQMnATsDFgEeDwAB/wO7Af8DuwH/AYsBkwGW - Af8BiwGNAY8B/wLTAc4B/wIAAYQB/wMAAf8DAAH/A5IB/wMAAf8DAAH/AwAB/wEAAYIBhgH/A8QB/wMA - Af8IAAOiAf8D8AH/A+AB/wHUAtIB/wG+AbYBtQH/AbwBtQG0Af8BuwG0AbIB/wG6AbIBsQH/AbkBsQGv - Af8B1AHPAc4B/wMAAf8QAAOiAf8D8AH/A+AB/wHUAtIB/wG+AbYBtQH/AZwBsQG9Af8BAAG9Ad8B/wGi - AeoB+QH/AQAB3AH2Af8BAAGHAcIB/wEAAeEB9wH/AbYB3gHwAf8BWwJgAdYDCgENGAADCgENA1sByAIA - AYIB/wIAAakB/wEmATYBfwH+Ax8BLBcAAf8D1wH/A9cB/wOXAf8BywHQAdEB/wOdAf8D6AH/A90B/wPB - Af8BAAGPAZMB/wEAAY8BlwH/AdQB2QHaAf8D3QH/A8QB/wOdAf8DAAH/CAADqAH/A+oB/wPdAf8B1QHU - AdMB/wHAAbkBtwH/Ab4BtwG2Af8BvQG2AbQB/wG7AbQBswH/AbsBswGxAf8B1AHQAc8B/wMAAf8QAAOo - Af8D6gH/A90B/wHVAdQB0wH/AcABuQG3Af8BvQG3AbYB/wEAAa4ByQH/AawB2QHsAf8BggHjAfgB/wEA - AYgBwgH/AawB7QH6Af8BQwJ/Af4DMwFTIAADPQFpAgABgwH/AgABmgH/AgABrAH/Aj8BQAFuFwAB/wP5 - Af8D+QH/A6sB/wPfAf8BrQG/AcMB/wGTAZgBmQH/A60B/wGNAZgBmgH/AcgCywH/A8sB/wGPAZ4BoQH/ - A54B/wGkAqYB/wP5Af8DAAH/CAADrwH/A+sB/wPdAf8B1wLVAf8BwQG7AbkB/wHAAbkBuAH/Ab4BuAG2 - Af8BAAGhAQAB/wEAAZQBAAH/AdYB0QHQAf8DAAH/EAADrwH/A+sB/wPdAf8B1wLVAf8BwQG7AbkB/wHA - AbkBuAH/AawBtwG8Af8BAAGuAcwB/wG0AesB+AH/AY4B5gH4Af8BtQHdAe4B/wNVAbIDBAEFIAADQwF3 - AgABjQH/AgABuQH/AgAB0wH/AlkBWwHDAyMBMxAAA2oB+QP8Af8D/AH/A8sB/wPyAf8D8gH/A/IB/wHw - AvIB/wHfAe8B8wH/A/IB/wPyAf8B4QHvAfIB/wGsAckBzwH/AfsC/AH/A/wB/wNwAf4IAAO1Af8D7AH/ - A94B/wHZAtgB/wHDAb0BuwH/AcIBuwG6Af8BwQG6AbkB/wGgAcgBpAH/AQABqQEAAf8B1wHTAdEB/wMA - Af8QAAO1Af8D7AH/A94B/wHZAtgB/wHDAb0BuwH/AcIBuwG6Af8BwQG6AbkB/wEAAr8B/wGkAdcB6wH/ - AdwB9AH7Af8BAAGsAdEB/wMkATUkAAMvAUkCAAGwAf8CAAHVAf8CVwFfAegDWwHQAlsBYAHWAwUEBwEK - CAADXQTSAf8D6AH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wPoAf8DxAH/ - A1wB3AgAA7sB/wPsAf8D3wH/AdoC2QH/AcYBvwG+Af8BxAG+AbwB/wHDAbwBuwH/AcEBuwG5Af8BwAG5 - AbgB/wHXAtMB/wOEAf8QAAO7Af8D7AH/A98B/wHaAtkB/wHGAb8BvgH/AcQBvgG8Af8BwwG8AbsB/wO7 - Af8BAAG6AdcB/wGrAdsB7QH/AQABnwG0Af8oAAMfAS0CAAGYAf8CAAG1Af8CWAFeAd0CRAFFAXwBSwJM - AZABUwJVAbADOwFkAw8BFAQAAy0BRQOaAf8DzAH/AccBiwEAAf8B+QH0Ae0B/wH+AegB2AH/Af4B6AHX - Af8B/QHlAdMB/wH8AeQB0QH/AfoB4AHHAf8B+QHdAcMB/wH6AfQB7QH/AccBhQEAAf8DwwH/AwAB/wMt - AUUIAAPAAf8D7AH/A+AB/wHdAtwB/wHHAcEBwAH/AZICkQH/A48B/wONAf8DigH/AdkB1QHUAf8DiwH/ - EAADwAH/A+wB/wPgAf8B3QLcAf8BxwHBAcAB/wGSApEB/wOPAf8DjQH/AQABnAGmAf8BAAHCAdwB/wGH - AY8BkgH/JAADBgEIAlcBXAHfAgABpgH/AgABxwH/AgABzQH/AgABxgH/AVICVAGmA0IBdAMfASwMAAM7 - AWMDXwHzAcUBiQEAAf8B+QH0Ae8B/wH+AecB1wH/Af0B5wHVAf8B/AHmAdIB/wH7AeEBzAH/AfgB3AHC - Af8B9gHaAb0B/wH6AfQB7wH/AcQBgwEAAf8DXQHzAzsBYwwAA8YB/wPvAf8D4QH/A90B/wHIAcMBwgH/ - AcgBwgHBAf8BxgHBAb8B/wHFAb8BvgH/AcMBvQG7Af8B2gHWAdUB/wORAf8QAAPGAf8D7wH/A+EB/wPd - Af8ByAHDAcIB/wHIAcIBwQH/AcYBwQG/Af8BxQG/Ab4B/wHDAb0BuwH/AdoB1gHVAf8DkQH/JAADJgE4 - AwAB/wIAAcAB/wIAAbwB/wMAAf8CAAGsAf8BVAJWAasDEAEVFAADBwEJAmoBRwL5AfQB8AH/AfwB5gHT - Af8B/QHnAdMB/wH7AeMBzQH/AfoB4AHIAf8B9QHWAbsB/wHzAdQBtQH/AfgB9AHwAf8CagFHAfkDBwEJ - EAADywH/A+kB/wPpAf8B4gLhAf8BywHGAcQB/wGYApcB/wGWApUB/wGUApMB/wGSApEB/wHbAdcB1gH/ - A5gB/xAAA8sB/wPpAf8D6QH/AeIC4QH/AcsBxgHEAf8BmAKXAf8BlgKVAf8BlAKTAf8BkgKRAf8B2wHX - AdYB/wOYAf8gAAMaASQCXgFhAdoCAAGGAf8CAAHAAf8BnwGgAbUB/wEAAYQBjgH/AwAB/wMlATccAAJt - AVEB9wH5AfUB8QH/AfwB4wHPAf8B/AHkAc8B/wH6AeEBygH/AfkB3QHEAf8B9AHpAd8B/wH3AfIB7AH/ - AfUB7wHpAf8CXwFFAfsUAAMuAUgDYQHkA98B/wPqAf8BzwHKAckB/wHLAcYBxQH/AcoBxAHDAf8ByAHD - AcEB/wHHAsEB/wHcAdkB2AH/A54B/xAAAy4BSANhAeQD3wH/A+oB/wHPAcoByQH/AcsBxgHFAf8BygHE - AcMB/wHIAcMBwQH/AccCwQH/AdwB2QHYAf8DngH/IAACUwFUAawCAAGmAf8CAAG4Af8CAAGwAf8CAAG3 - Af8BhgGZAcMB/wEAAZ8BxgH/AxsBJhwAAmIBSQH2AfkB9QHxAf8B/AHjAc0B/wH7AeMBzQH/AfkB4AHI - Af8B+AHcAcIB/wH9AfsB+AH/AfwB5gHNAf8B4gG2AYQB/wJUAVIBphgAAwsBDwNWAasD3AH/AeYC4wH/ - AeEB3gHcAf8B3wLcAf8B3wHcAdsB/wHeAtsB/wHuAuwB/wOlAf8UAAMLAQ8DVgGrA9wB/wHmAuMB/wHh - Ad4B3AH/Ad8C3AH/Ad8B3AHbAf8B3gLbAf8B7gLsAf8DpQH/IAACUwFVAa0CRQFGAX4DMgFRAlkBXQHX - Ak4BXQHwAlgBWwHLATEBUgFfAfsDGAEhHAADTQH6AfcB8gHsAf8B+AH0Ae4B/wH4AfMB7QH/AfgB8wHt - Af8B+AHyAewB/wHyAeYB1wH/AeIBsgEAAf8DYgH2AwUBByAAA1EBnwNfAfsDxAH/A8AB/wO7Af8DtgH/ - A7AB/wNSAaccAANRAZ8DXwH7A8QB/wPAAf8DuwH/A7YB/wOwAf8DUgGnIAADGgElAzgBXgwAAkEBQgFz - AzsBZCAAAzoBYAJYAVYBuwJ/AU8B/gHIAYwBAAH/Am0BUQH3Am0BUQH3An8BTAH+A04BlLgAAxIBGBgA - MP8B0wHbAf0B/wH9Af4K/wI9ATwBZwNeAdkDXwHjA2EB5AJhAVgB5gFkAlwB5wNeAd0DSwGOA1QBrwFX - AlwB3wFdAmEB4gFaAmEB5AFcAmQB5wFcAmQB5wFYAl4B3QFJAkoBiQwAAwIBAwMhATADVwHfA2QB9ANr - AfcDagH5AzgBXgMsAUMDZwHyA2sB9wNkAfQDVwHfAyEBMAMmATkDRAF6AlUBUwGwAckCAAH/AbYCAAH/ - AwAB/wMAAf8DAAH/AWwCagH+A1QBrwNIAYYDZwHyA2sB9wNkAfQDVwHfAyEBMB7/Af4B/wHSAeUB8AH/ - AboB4wHrAf8BxAHoAewB/wHXAd4B9QH/AgAB+gH/AdgB3wH+Af8B8gH1Af4D/wH+Af8CWAFWAbsB/wHh - AZMC/wHTAYoC/wHcAZAB/wGyAZIBAAH/AwAC/wHrAZoB/wF/AXIBSgH+A1gB7wEAAZkBmgH/AQAD/wEA - A/8BAAGIAYkB/wEAAasBrAH/AQAD/wNfAeAMAAMdASkDWQHXA2IB7wNdAe0DrgH/A5cB/wMAAf8DAAH/ - A5cB/wOuAf8DXQHtA2IB7wNZAdcBWAJhAeYBAAGFAawB/wHIAgAB/wHdAaMBAAH/AwAB/wGUAY8BigH/ - AbABqwGlAf8DrgH/A5cB/wMAAf8DAAH/A5cB/wOuAf8DXQHtA2IB7wNZAdcY/wHJAeUB6gH/AQABowGx - Af8CAAHLAf8BAAGFAesB/wEAAYoB7QH/AgAB6wH/AgAB9gH/AgAB+QH/AgAB+QH/AeAB5QH+Af8CWAFW - AbsB/wHaAY8B/wH6Ac4BhwL/AdcBjQH/Aa4BjwEAAf8DAAH/AfMBywGFAf8DXgHaA1YBuAEAAZQBlQH/ - AQAD/wEAA/8BAAGFAYYB/wEAAacBqAH/AQAD/wFaAmAB3gwAAz0BaQNiAe8C0wHOAf8DVgG5A00B+gMA - Af8DAAH/AwAB/wMAAf8DTQH6A1YBuQPEAf8DYgHvAysB/AGTAawBzAH/AecBrwEAAf8BqQIAAf8DAAH/ - AtMBzgH/AYECAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DTQH6A1YBuQPEAf8DYgHvAfYB1AHOAf8B9gHf - Ad0B/wH5AvMB/wH5AfUB9gH/AfYB3wHdAf8B7gGXAY0B/wGfAb0BxQH/AgABmAH/AQABnAG9Af8CAAHr - Af8CAAH9Af8BAAG0AfwB/wIAAfgB/wH2AfUB/AH/AQABkQH9Af8BjAGhAfwB/wJaAVcBvQH/AdoBjwH/ - AfoBzgGHAv8B1wGNAf8BrgGPAQAB/wGBAgAB/wGQAgAB/wFcAlgB0QNVAbIBAAGTAZUB/wEAA/8BAAP/ - AQABhQGGAf8BAAGnAagB/wEAA/8BWgJgAd4EAANAAXABUgJUAaYBQgJZAfUBAAGCAYUB/wLTAc4B/wFR - Am0B9wMAAf8DvQH/A84B/wPCAf8DrQH/AwAB/wFZAmcB8gPEAf8DbQH3AjUBNAFVA1kB9QH9AdcBsgH/ - AZACAAH/AYYBhAGBAf8C0wHOAf8B+AGwAQAB/wMAAf8DvQH/A84B/wPCAf8DrQH/A0wB8wMHAQoDxAH/ - A20B9wH4AbIBnwH/AfcBhQEAAf8B8wGqAZoB/wHzAZkBgwH/Ae4CAAH/AdoCAAH/AdMBqwGsAf8BAAGU - AawB/wEAAZUBrwH/AgAB6gH/AgAB/AH/AQABygL/AgAB8wH/AdUB3QHuAf8BAAGOAf4B/wGNAaEB/AH/ - AloBVwG9Af8B2gGPAf8B+gHOAYcC/wHXAY0B/wG0AZQBAAH/AwAB/wMAAf8DXQHSA1UBtAEAAZIBlAH/ - AQAD/wEAA/8BAAGKAYsB/wEAAa4BrwH/AQAD/wFaAmAB3gQAAVgCYQHmA10B8AN/Af4DAAH/AtMBzgH/ - AgABhAH/AwAB/wMAAf8DkgH/AwAB/wMAAf8DAAH/AQABggGGAf8DxAH/A10B8AQAAzsBZAJfAVMB8wHA - AbABlAH/AwAB/wLTAc4B/wMAAf8DAAH/AwAB/wOSAf8DAAH/AwAB/wMrAfwDVgG2A8QB/wNdAfAB+wHd - AdQB/wH+AYUBAAL/Aa4BlwL/AZoBAAH/AfkCAAH/Ad4CAAH/AeYBgAEAAf8BAAGyAcAB/wIAAa4B/wIA - AeoB/wEAAYgB6QH/AQABmwH7Af8CAAH1Af8CAAHqAf8CAAH6Af8B4wHoAf4B/wJZAVYBvgH/AdoBjwH/ - AfoBzgGHAv8B1wGNAf8BtgGWAQAB/wMAAf8ByQGlAQAB/wNdAdIDVQGyAQABkQGSAf8BAAK2Af8BAAKV - Af8DAAH/AwAB/wEAApcB/wFYAl4B3QQAAVECbQH3Ae8B+gH+Af8BngHlAfQB/wEAAZIBmwH/A5EB/wPo - Af8D3QH/A8EB/wEAAYwBkAH/AQABjwGXAf8B1AHZAdoB/wPdAf8DxAH/A5EB/wNKAYoIAANEAXkDTQH6 - AgABkwH/A5EB/wPoAf8D3QH/A8EB/wEAAYYBAAH/AQABhgEAAf8B1QHYAdYB/wPdAf8DxAH/A5EB/wFV - AlYBtAH9AfcB9QH/AfoBigEAAf8B/gGmAY4B/wH+AaQBiwH/Af0BhgEAAf8B5wIAAf8B4wIAAf8BigHB - AcwB/wIAAZoB/wEAAZ0BxQH/AQABwwHpAf8BAAHRAv8BAAHLAf0B/wEAAaoB0QH/AvUB+QX/AlUBUwGt - Af8B5QGVAv8B2gGOAv8B3QGQAf8B9gHKAYQB/wHQAasBAAL/AeUBlQH/AlkBVgG+A1ABmgEAAvIB/wEA - AdcB2gH/AQABvwHCAf8BAAHJAcwB/wEAAccBygH/AQABwwHEAf8BWwJeAdkEAAE+AlwB+AHyAfoB/QH/ - AbMB7QH6Af8BoAHiAfEB/wGBAa0BtwH/AYUBiwGNAf8DngH/AQABhwGKAf8BAAHAAdcB/wEAAcoB5gH/ - AQABhwGMAf8DngH/AYoBjAGNAf8BTgJfAfsDCAELCAADPAFmAXICfwH+AacBywHqAf8BjwGlAboB/wGI - AYoBjAH/A54B/wMAAf8BAAG6AYsB/wEAAcUBiwH/AQABhwEAAf8DngH/AYMBiAGEAf8DAAH/AQABlwHf - Af8B/gP/AfoBogGKAf8B/gGTAQAB/wH+AasBlQH/Af4BjwEAAf8B8AIAAf8B2gIAAf8BvwGvAbMB/wEA - AbUBxwH/AZoB0wHWAf8BmAHWAcgB/wGRAdYBxAH/AYkB2QHTAf8BhgHMAdYB/wH5AvoF/wMcAScDTAGS - AlIBUQGnAlMBUgGoA1MBqgNTAaoCUAFPAZsDJgE4AxUBHQNMAZIBUQJSAacBUgJTAagDUwGqA1MBqgFP - AlABmwErAiwBQwQAAUECagH5AfYB/AH+Af8ByAHyAfwB/wG5Ae8B+wH/AawB7AH6Af8BnAHoAfkB/wGL - AeMB9wH/AQAB4AH2Af8BAAHcAfYB/wEAAdkB9QH/AQAB1gH0Af8BAAHTAfMB/wHQAfMB/AH/AVECbQH3 - DAABVAJWAasBpwG/AdsB/wGWAcUB8QH/AaEB0AH7Af8BlgHGAfMB/wG2Ac8B5AH/AgABpwH/AQABzgGP - Af8BAAHNAYkB/wEAAcsBgwH/AQABywEAAf8BAAHJAQAB/wEAAZYBAAH/AQABlgHeBf8B+wHSAcYC/wGa - AQAC/wGvAZUC/wGVAQAB/wH5AgAB/wHrAgAB/wH8AdIBzAH/AYoBxAGzAf8BAAGSAQAB/wEAAa8BAAH/ - AQABygGJAf8BAAHVAZAB/wEAAbYBAAH/AasB0AHEBf8DMgFRAlYBWAG5AloBXAHNAlkBXAHPAlkBXQHS - AlkBXQHSAlYBWAHBAzcBWgErASwBKwFDAVUBVwFVAbcBWgFcAVoBzQFbAV4BWwHQAVkBXQFZAdIBWQFd - AVkB0gFXAVkBVwHCAT8BQAE/AW4EAANNAfoB/gP/AfgB/QL/AfYB/QL/AfUB/AL/AfMB/AH+Af8B2AH2 - AfwB/wGUAeYB+AH/AYUB4wH3Af8BAAHfAfYB/wEAAdsB9QH/AQAB2AH0Af8B1wH0AfwB/wFRAm0B9wwA - AlkBWwHEAgABmgH/AQABgAGuAf8BAAGmAdYB/wIAAaUB/wIAAZIB/wIAAZgB/wEAAdABnwH/AQABzgGX - Af8BAAHNAY4B/wEAAc0BiAH/AZ0B2AGrAf8BAAGwAQAB/wFNAU4BTQGWBP8B8QH5Av8BogG6AeMB/wHX - AcsB1AH/AfABywHDAf8B7AHJAcQB/wGqAbYB3gH/AYIBmQHfAf8BAAGpAZEB/wMAAf8BAAGrAQAB/wEA - AccBiQH/AQAB3QGcAf8BAAHIAQAB/wEAAbABkAX/AlUBVwG6AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/ - AlkBXAHJAVIBVAFSAaYBAAHzAQAB/wEAAeQBAAH/AQAB4wEAAf8BAAHjAQAB/wEAAeMBAAH/AQAB7QEA - Af8DXwHgBAADTQH6AegB9gH7Af8BlAHUAe8B/wGIAc4B7gH/AQABwQHpAf8ByQHpAfYB/wHyAfwB/gH/ - AfMB/AH+Af8B8gH8Af4B/wHwAfwB/gH/Ae8B+wH+Af8B7gH7Af4B/wH+A/8BUQJtAfcMAAErAiwBQwJA - AZUB/QIAAZAB/wIAAZAB/wIAAZAB/wIAAZAB/wEAAY8BngH/AYQBmQGTAf8BAAGUAYkB/wEAAYwBAAH/ - AaQB1QGxAf8BggG/AYUB/wNRAaADBwEKBP8B+gH8Af4B/wEAAYwB+wH/AQABkAH7Af8BAAGgAfwB/wIA - Af0B/wIAAdsB/wIAAbcB/wGZAcEBvgH/AwAB/wEAAZ8BAAH/AQABvwGAAf8BAAHYAZkB/wEAAdcBjAH/ - AQABpgEAAf8C8QHyAf8CVgFYAbsCAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CWgFdAdMBVQFWAVUBsQEA - AeYBAAH/AQAB2gEAAf8BAAHaAQAB/wEAAdoBAAH/AQAB2gEAAf8BAAHhAQAB/wFaAWABWgHeBAABWQJn - AfIB8QH6Af0B/wGUAd4B9QH/AZMB3AH0Af8BgQHVAfIB/wEAAcoB7QH/AQABywHqAf8BhQHTAe8B/wGA - AdIB7wH/AQAB0AHvAf8BAAHPAe4B/wEAAc8B7gH/AekB9wH7Af8BTAJfAfMQAAM6AWEBUwFhAWQB8QIA - AZIB/wFDAl8B+wJZAVwBzANNAfoBAAGtAecB/wGBAbEB4wH/AQABsgHnAf8BAAGYAcQB/wNWAbYDCAEL - BAAI/wGGAbMB+wH/AQABhQL/AQABmQL/AgAC/wIAAegB/wIAAbgB/wGYAa8B0AH/AQABjAEAAf8BAAGR - AQAB/wEAAbcBAAH/AQAB0AGRAf8BAAHdAZQB/wEAAa4BAAH/AcEB2QHRAf8CVwFaAb0CAAL/AgAC/wIA - Av8CAAL/AgAC/wIAAv8CWQFdAdIDVgGzAQAB5gEAAf8BAAHaAQAB/wEAAdoBAAH/AQAB2gEAAf8BAAHa - AQAB/wEAAeEBAAH/AVoBYAFaAd4EAAFOAl0B8AH3AfwB/gH/AY4B5AH4Af8BkQHeAfUB/wGfAeAB9QH/ - AawB4QH2Af8B7wH7Af4B/wH0Af0B/gH/AfMB/AH+Af8B8QH8Af4B/wHvAfsB/gH/Ae4B+wH+Af8DagH5 - AVwCYAHUIAADPAFmAXICfwH+AawB0QHyAf8BrgHXAf0B/wGwAdQB9QH/AZIBwAHnAf8BUwJVAa0IAAj/ - AcUB2wH7Af8CAAH8Af8BAAGfAf4B/wEAAYAC/wIAAfMB/wIAAcMB/wEAAYEBywH/AQABqQGHAf8DAAH/ - AQABswEAAf8BAAHRAZ4B/wEAAeABpQH/AQABvgEAAf8BAAG3AZ8B/wJXAVoBvQIAAv8CAAL/AgAC/wIA - Av8CAAL/AgAC/wJZAV0B0gFVAVYBVQG0AQAB5gEAAf8BAAHaAQAB/wEAAdoBAAH/AQAB2gEAAf8BAAHa - AQAB/wEAAeEBAAH/AVoBYAFaAd4EAAE+AlwB+AH9Av4B/wH+A/8C/gL/Af0B/gL/Af4D/wHqAfcB+wH/ - A2oB+QNcAfgDXAH4A1wB+ANtAfcDYQHhAzUBViAAA0oBjQG4AdAB5wH/AZYBxQHxAf8BoQHQAfsB/wGW - AcYB8wH/AbYBzwHkAf8BVwJcAd8IAAj/AfQB+AH9Af8BAAGEAfsB/wEAAZcC/wEAAY0B/gH/AgAB+gH/ - AgAB0wH/AgABuQH/AZQBxAG5Af8BAAG8AaUB/wHfAfQB7QH/AfkB/QH7Af8B8wH8AfkB/wHJAfIB5AH/ - AbAB2wHNAf8CVgFZAb4CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CWgFdAdMDVgGzAQAB5gEAAf8BAAHa - AQAB/wEAAdoBAAH/AQAB2gEAAf8BAAHaAQAB/wEAAeEBAAH/AVgBXgFYAd0EAAFbAl4B0ANNAfoDTQH6 - A00B+gNNAfoDTQH6AVgCXgHdAxABFgMLAQ8DCwEPAwsBDwMLAQ8DCwEPAwMBBCAAA0wBkgEAAa4B5QH/ - AQABuAHmAf8BjQHIAfYB/wEAAa0B5gH/AQABpwHlAf8BWAJiAe8IAAr/Af4B/wGEAbQB+wH/AQABkgH8 - Af8BAAGSAf0B/wIAAf4B/wIAAeAB/wIAAckB/wHwAfEB+Rn/AlMBVQGwAgAC/wIAAv8CAAL/AgAC/wIA - Av8CAAL/AlcBWQHCAVABUQFQAZ8BAAHzAQAB/wEAAecBAAH/AQAB5wEAAf8BAAHnAQAB/wEAAecBAAH/ - AQAB7wEAAf8BXAFhAVwB3FwAASsCLAFDAUABowGoAf0BAAGmAeUB/wEAAaYB5QH/AQABpgHlAf8BAAGm - AeUB/wFLAkwBkAgADv8B/gH/AeYB8AH8Af8BxwHfAf0B/wGuAc4B/QH/AcsB3QH6If8DJAE1A1MBqgJW - AVkBvgJXAVkBvwJXAVkBvwJWAVkBvgNWAbMDLwFKAx8BLQFUAVYBVAGrAVcBWgFXAb0BVwFZAVcBvwFX - AVkBVwG/AVYBWQFWAb4BVQFWAVUBtAM2AVlgAAM6AWEBUwJkAfEBAAGlAeQB/wEiAl8B+wNQAZ0DBAEG - CAAB/AH+AfwB/wH8Af4B/AH/AfwB/gH8Af8B/gP/AfYB+QH8Af8B4AHhAeIB/wHQAcsBwwH/AcgBwQG1 - Af8BxQHAAbgB/wHLAsoB/wHeAeAB5QH/AfcC+QP/Af4B/wH8Af4B/AH/AfwB/gH8Af8B/AH+AfwB/wP9 - Af8D/hr/Af4C/wH8A/8B+wv/A/0B/wP+Hf8D3QH/A70B/wPxCf8D8AH/A7wB/wPMIf8D3QH/A70B/wPx - Cf8D7wH/A7wB/wPJCf8B/AH+AfwB/wH8Af4B/AH/Af0D/wPjAf8BwQGpAY8B/wG6AZcBAAH/Ab0BmwEA - Af8BxwGhAQAB/wHHAaEBAAH/AboBlwEAAf8BqwGQAQAB/wGzAa0BqQH/AeEB5AHnBf8B/AH+AfwB/wH8 - Af0B/AH/A/0J/wP+Af8D/gH/A/4B/wP+Af8D/g3/A+EB/wPLAf8D/B3/A70B/wMAAf8BgwIAAf8DAAH/ - AewB6QHnAf8B3QHWAdQB/wMAAf8BhQKEAf8DAAH/AwAB/wP+Ff8DvQH/AwAB/wGDAgAB/wMAAf8B7AHp - AeYB/wHbAdgB1wH/AwAB/wGEAYMBggH/AwAB/wMAAf8D+wH/AfwB/gH8Af8B/gP/AdkB0gHOAf8BrwIA - Af8BtQIAAf8BzgGmAQAB/wHuAekB3QH/Ac0BtAGBAf8BxwGcAQAB/wHHAZkBAAH/Ab4BhwEAAf8BqQIA - Af8BoQGOAYAB/wHbAd8B4gH/Af0B/wH9Af8B/AH+AfwN/wL+Gv8BzwLJAf8DAAH/AwAh/wMAAf8BrgKv - Af8BzgHwAfUB/wMAAf8DAAH/AgABhwH/AwAB/wH1AvcB/wP1Af8DAAH/A9kV/wMAAf8BrgKvAf8BzgHw - AfUB/wMAAf8DAAH/AwAB/wMAAf8B9gH+Bv8DAAH/A9QF/wHhAdwB2QH/AaACAAH/AakCAAH/AbYCAAH/ - AcMBmAEABf8BwQG8AaYB/wGBAgAB/wGLAgAB/wGjAgAB/wGvAgAB/wGfAgAB/wGcAYoBgQH/AeQB5wHp - Af8B/gH/Af4F/wH+A/8B/gf/Av4C/wHWAdoB3QH/AdsB2QHXAf8BxAHDAcsB/wGcAaABogH/AwAB/wMA - Af8DAAH/AwAB/wH0AvMH/wH+Af8B9gL3Af8B8AH1AfYB/wH1Af4C/wH8A/8B7wH3AfgB/wMAAf8BAAGh - AakB/wEAAZEBrgH/AwAB/wMAAf8BAAHbAv8BAAG7AegB/wGEAbYBwgH/AdQBzAHKAf8DAAH/A90B/wH2 - AvcB/wHwAfUB9gH/AfUB/gL/AfwD/wHvAfcB+AH/AwAB/wEAAaEBqQH/AQABkQGuAf8DAAH/AwAB/wEA - AZABsAH/AwAB/wGBAa0BtwH/AaQBngGcAf8DAAH/A+oB/wH5AvwB/wGgAgAB/wGKAgAB/wGUAgAB/wGU - AgAB/wGUAgAB/wHvAeEBzwH/AbkB3wHwAf8BAAGdAegB/wEAAZEB6wH/AgABjQH/AZ8CAAH/AaICAAH/ - AYgCAAH/AbICrgH/AfkB+wH6A/8B/gX/AfkB+gH7Af8BvgK/Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA - Af8BAAGdAbQB/wEAAcsB3gH/AwAB/wG4AaoBsQX/AfoB/wH+Af8B7AHDAbgB/wHcAYoBAAH/AdsBtwGt - Af8B3wG2AawB/wHTAYcBAAH/AwAB/wGAAZ0BogH/AQABjwGrAf8DAAH/AwAB/wEAAdgC/wEAAc4B/gH/ - AwAB/wMAAf8DnwX/AewBwwG4Af8B3AGKAQAB/wHbAbcBrQH/Ad8BtgGsAf8B0wGHAQAB/wMAAf8BgAGd - AaIB/wEAAY8BqwH/AwAB/wMAAf8BAAHiAv8DAAH/AwAB/wMAAf8DzwX/AdgB0AHLAf8DAAH/AYICAAH/ - AY8CAAH/AY0CAAH/AZ0CAAH/AdcBvwGdAf8B6AH5Av8BAAHNAfMB/wEAAcIC/wEAAY8B1AH/AYYCAAH/ - AZYCAAH/AYICAAH/AYoCAAH/AeYB6QHrBf8B7AHqAegB/wGeAZoBlgH/AwAB/wGnAZIBgAH/AZYCAAH/ - AwAB/wGuAYwBAAH/AdQBlAEAAf8DAAH/AQABsAHVAf8BAAHrAv8DAAH/AwAD/wH+Af8B/QP/AfgB3gHW - Af8B+AGCAQAB/wH7AaoBkQH/Af0BlgEAAf8B8QIAAf8DAAH/AaMBhQGBAf8BAAGiAbkB/wMAAf8DAAH/ - AQAB0gH9Af8BAAHVAv8BAAGfAcIB/wMAAf8DAAX/AfgB3gHWAf8B+AGCAQAB/wH7AaoBkQH/Af0BlgEA - Af8B8QIAAf8DAAH/AaMBhQGBAf8BAAGiAbkB/wMAAf8DAAH/AQABvwHkAf8DAAH/AQABgwGfAf8DAAH/ - AwAF/wGuAZoBjgH/AwAB/wMAAf8BmgIAAf8BsQIAAf8BxQGgAQAB/wHGAa4BhwH/AfYB8AHtAf8BiQHc - Ae0B/wEAAdYB/gH/AQABuAH8Af8DAAH/AYcCAAH/AwAB/wMAAf8B0gHTAdUB/wLrAewB/wG3AbMBrgH/ - AcwBxAG4Af8BzQHCAbsB/wHbAcEBogH/AdEBswEAAf8DAAH/AZ8CAAL/AasBAAH/AZwCAAH/AwAB/wEA - Ad0B7wH/AwAB/wMAAf8B2gHYAdMF/wH6AfgB9wH/AfQBjQEAAf8B/gGlAYwC/wGmAYwC/wGEAQAB/wMA - Af8BggIAAf8BAAG4AccB/wMAAf8CAAGKAf8BAAGLAa8B/wMAAf8BAAHOAv8DAAH/AwAF/wH6AfgB9wH/ - AfQBjQEAAf8B/gGlAYwC/wGmAYwC/wGEAQAB/wMAAf8BggIAAf8BAAG4AccB/wMAAf8CAAGJAf8BAAGX - Ab0B/wMAAf8BAAHHAfcB/wEAAYYBjgH/AwAF/wGRAgAB/wMAAf8DAAH/AZECAAH/Ab8BkQEAAf8B2AG+ - AY4B/wHcAcoBqAH/Ac8BvgGyAf8BywLYAf8BAAGBAQAB/wEAAYIBiQH/AwAB/wMAAf8DAAH/AwAB/wHG - AcQBwwH/A9YB/wHjAd4B1gH/Ad8B1gHHAf8B3gHOAbIB/wHeAcYBlQH/AcMBsgGUAf8DAAH/AwAB/wGx - AYEBAAH/AY4CAAH/AwAB/wMAAf8DAAH/AwAB/wGGAQABgAX/Af4D/wHzAaYBkAH/AfoBlAEAAf8B/gGt - AZQC/wGPAQAB/wHIAgAB/wMAAf8DAAH/AwAB/wEAAb8B1QH/AQABvwHLAf8DAAH/AwAB/wMAAf8BvAK5 - Bf8B/gP/AfMBpgGQAf8B+gGUAQAB/wH+Aa0BlAL/AY8BAAH/AcgCAAH/AwAB/wMAAf8DAAH/AQABvQHT - Af8BAAHKAdcB/wMAAf8DAAH/AwAB/wGnAqUF/wGEAgAB/wMAAf8DAAH/AwAB/wGVAgAB/wG6AZkBAAH/ - AaIBkQGBAf8DAAH/AewB8AHtAf8BAAHIAaoB/wEAAbIBAAH/AwAB/wMAAf8DAAH/AwAB/wHGAcMBwgH/ - AfYB9QHwAf8B6QHlAdkB/wHmAd8BzQH/AdwB0QG+Af8BoAGaAZYB/wMAAf8DAAH/AwAB/wMAAf8CAAGA - Af8DAAH/AwAB/wEAAeoBkgH/AQABiQEAAf8DAAH/AfQB8QHuBf8B9AHPAcMB/wH7AYYBAAL/Aa8BlQL/ - AZUBAAH/AfwCAAH/AdACAAH/AbwBnwGbAf8BAAG+AbcB/wEAAawBhgH/AQABvQGHAf8BAAHLAZcB/wEA - AZ4BAAH/AQABmgGGAf8B7gHtAe4J/wH0Ac8BwwH/AfsBhgEAAv8BrwGVAv8BlQEAAf8B/AIAAf8B0AIA - Af8BvAGfAZsB/wEAAb4BtwH/AQABrAGGAf8BAAG8AYYB/wEAAc0BmQH/AQABnwEAAf8BAAGVAYAB/wLu - Ae8F/wGRAYABAAH/AwAB/wMAAf8DAAH/AgABtwH/AgABqQH/AQABmgHUAf8BAAGGAZ4B/wGjAcoBtgH/ - AcUB5wHcAf8BAAGpAQAB/wEAAYEBAAH/AwAB/wMAAf8DAAH/AtUB1AH/Av0B+AH/AekB6AHfAf8B4AHe - AdQB/wGuAakBnwH/ApsBogH/AZoBpQHGAf8BiwGpAd8B/wMAAf8CAAGFAf8BAAGNAv8CAAHPAf8DAAH/ - AQAB3AGBAf8BAAG9AYEB/wMAAf8BsQGyAbAD/wH+Af8B9gH5AfgB/wHLAbQBtwH/AeQBsgGmAf8B+AGs - AZIB/wH1AaIBhQH/AcwBpgGuAf8BsAG8AdkB/wEAAY0BAAH/AQABiAEAAf8BAAG4AQAB/wEAAdUBlAH/ - AQAB5AGZAf8BAAGqAQAB/wG2AcQBvwf/Af4B/wH2AfkB+AH/AcsBtAG3Af8B5AGyAaYB/wH4AawBkgH/ - AfUBogGFAf8BzAGmAa4B/wGwAbwB2QH/AQABjQEAAf8BAAGIAQAB/wEAAbgBAAH/AQAB1AGTAf8BAAHk - AZgB/wEAAaoBAAH/AbYBxAG/Bf8BugGyAagB/wMAAf8DAAH/AYgCAAH/AgAB3AH/AgAB7QH/AQABnwH0 - Af8BAAGCAcYB/wEAAYQBAAH/AbMB6wHUAf8BAAGrAYsB/wMAAf8DAAH/AwAB/wMAAf8B8AHxAfID/wH9 - Af8B5QHoAeYB/wG8AcABvgH/AcQBzwHWAf8BsgHOAesB/wGaAbwB3AH/AYIBswHxAf8BAAGFAawB/wMA - Af8BAAGCAeoB/wEAAYMB9wH/AwAB/wMAAf8DAAH/AwAB/wHXAtUF/wH8Af8B+wH/AQABmwH0Af8BAAGP - AegB/wEAAacB5AH/AQABkgHpAf8CAAHVAf8CAAG8Af8BAAGoAZEB/wMAAf8BAAGsAQAB/wEAAcoBjAH/ - AQAB3gGaAf8BAAG9AQAB/wEAAaoBlgL/AfwG/wH8Af8B+wH/AQABmwH0Af8BAAGPAegB/wEAAacB5AH/ - AQABkgHpAf8CAAHVAf8CAAG8Af8BAAGoAZEB/wMAAf8BAAGsAQAB/wEAAcoBjAH/AQAB3gGaAf8BAAG9 - AQAB/wEAAaoBlgL/AfwC/wHwAe8B7AH/AwAB/wMAAf8BgAIAAf8BqwGsAd0B/wIAAdMB/wIAAeEB/wIA - Ad0B/wMAAf8BAAGOAQAB/wHOAcoBxwH/AwAB/wMAAf8DAAH/AasBowGfAf8B/gP/Af0D/wHqAfEB8wH/ - AdUB4AHmAf8B0AHeAeYB/wG2AdIB6QH/AaUBwQHfAf8BkAGoAcYB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ - AwAB/wMAAf8B6AHiAegF/wH+Af8B/gP/AfsB/wGNAbkB+AH/AQABgwH+Af8BAAGWAv8CAAL/AgAB5AH/ - AgABuQH/AYQBrAGvAf8DAAH/AQABoQEAAf8BAAHCAYMB/wEAAdoBmQH/AQABzgGEAf8BAAGgAQAB/wHz - AewB8AH/Af4B/wH+A/8B+wH/AY0BuQH4Af8BAAGDAf4B/wEAAZYC/wIAAv8CAAHkAf8CAAG5Af8BhAGs - Aa8B/wMAAf8BAAGhAQAB/wEAAcIBgwH/AQAB2gGZAf8BAAHOAYQB/wEAAaABAAH/AfMB7AHwBf8BtQGs - AaQB/wMAAf8DAAH/AewB6gHkAf8B9AHwAe4B/wHuAeoB6AH/Ae4B6wHpAf8B7gLrAf8B6wLlAf8B8gLx - Af8BtgGtAaoB/wMAAf8DAAH/AfAC8QH/Af4B/wH+Af8C/gL/AfoB/gL/Ad4B6wHyAf8B0gHhAecB/wHO - AdUB3QH/AZ0BngGjAf8DAAH/AY4BjwGKAf8CqgGnAf8BrAGpAaUB/wGhAaIBmgH/AbgCuwH/AegB5wHs - Cf8B/AH/Af4B/wH+Bf8B/QH/AdIB4wH5Af8CAAH4Af8BAAGdAf4B/wIAAv8CAAHvAf8CAAG+Af8BAAGT - Ab4B/wEAAYwBAAH/AQABiwEAAf8BAAG5AQAB/wEAAdQBnAH/AQAB2QGSAf8BAAGeAQAB/wHKAdEB0AH/ - Af4F/wH9Af8B0gHjAfkB/wIAAfgB/wEAAZ0B/gH/AgAC/wIAAe8B/wIAAb4B/wEAAZMBvgH/AQABjAEA - Af8BAAGLAQAB/wEAAbkBAAH/AQAB1AGcAf8BAAHZAZIB/wEAAZ4BAAH/AcoB0QHQAf8B/QH+Af0F/wGf - AZIBhgH/AwAB/wGUAYUBAAH/AYkCAAH/AYUCAAH/AYUCAAH/AYcCAAH/AYgCAAH/AYkCAAH/AwAB/wMA - Af8B4gHhAeAF/wH8Af4B/AL/Av4B/wH+A/8B6gHzAfcB/wHZAeIB5gH/AbEBrwGtAf8CugG5Af8D9C3/ - AfcC+wH/AQABjgH2Af8BAAGWAf4B/wEAAYoB/gH/AgAB+AH/AgABzAH/AgABuAH/AQABrAGTAf8BAAG5 - AaIB/wHPAe8B5QH/AeMB9gHxAf8BygH2AecB/wGAAdIBtgH/AdEB5AHgCf8B9wL7Af8BAAGOAfYB/wEA - AZYB/gH/AQABigH+Af8CAAH4Af8CAAHMAf8CAAG4Af8BAAGsAZMB/wEAAbkBogH/Ac8B7wHlAf8B4wH2 - AfEB/wHKAfYB5wH/AYAB0gG2Af8B0QHkAeAB/wH8Af0B/AH/Af0B/wH9Bf8BugGxAaoB/wMAAf8DAAH/ - AYECAAH/AYQCAAH/AYMCAAH/AwAB/wMAAf8BlAGHAQAB/wLrAeoF/wH8Af4B/AH/AfwB/gH8A/8B/AX/ - AfoB/AH+Af8BxQHHAcoB/wPgCf8D/gH/A/4B/wP+Af8D/g3/A/4P/wH8Af8BhwG0AfEB/wEAAY0B+AH/ - AQABjwH7Af8CAAH6Af8CAAHZAf8CAAHAAf8B9AH3AfYj/wH8Af8BhwG0AfEB/wEAAY0B+AH/AQABjwH7 - Af8CAAH6Af8CAAHZAf8CAAHAAf8B9AH3AfYZ/wH8Af4B/AH/AfwB/gH8Af8B/QH/Af0F/wLwAe4B/wHG - Ab8BuAH/AaoBngGVAf8BogGUAYsB/wGlAZgBkAH/AbgBrgGmAf8B3wHcAdcJ/wH8Af4B/AH/AfwB/gH8 - Af8B/AH+AfwD/wH6Av8B/gH7Av8C/QH/AfwB+gH7Cf8D/hn/A/4B/wP9Af8D/Qn/Af0B/gH9Af8B+AH7 - AfoB/wHVAecB+QH/AbQB0gH3Af8BmQG/AfYB/wG4AdAB9AH/AfkC+wn/Af4H/wH+A/8B/g//Af0B/gH9 - Af8B+AH7AfoB/wHVAecB+QH/AbQB0gH3Af8BmQG/AfYB/wG4AdAB9AH/AfkC+wn/Af4H/wH+A/8B/gf/ - CAADFQEdAyMBNAMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDIwEzAxUBHRQA - AVkCZAHsAUgCYgH2AUgCYgH2AUgCYgH2AUgCYgH2AUgCYgH2AUgCYgH2AUgCYgH2AUgCYgH2AUgCYgH2 - AVkCWwHDQAAQ/wH4AfoB/gH/AeAB4QHkAf8BzgHJAcAB/wHFAb4BrQH/AcEBuwGtAf8BxQHCAb8B/wHV - AdgB3QH/AfEB8wH3Ef8IAAMjATQDWQH1A6gB/QP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/ - A6gB/QNfAfMDIwEzFAABWgJhAeQB3QHsAfYB/wG9Ae4B+QH/AawB6gH4Af8BqwHqAfgB/wGrAeoB+AH/ - AasB6gH4Af8BrQHqAfgB/wHUAfMB+wH/AaQByAHkAf8BVAJWAasEAANKAYoDWwHDA10B8ANdAfADXQHw - A10B8ANdAfADXQHwA10B8ANdAfADXQHwA10B8ANdAfADTAGQBAAM/wHmAecB6gH/AcABqgGQAf8BugGU - AQAB/wHFAZ4BAAH/AcsBpQEAAf8ByQGjAQAB/wG/AZkBAAH/Aa0BjgEAAf8BqwGgAZUB/wHVAdkB3g3/ - BwABAQMkATYDfwH+A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wOoAf0DJAE2 - A0oBigNbAcMDXQHwA10B8ANdAfADYgH2AY4BwgHhAf8BlwHoAfkB/wEAAdwB9gH/AQAB2wH1Af8BAAGI - AcIB/wEAAdsB9QH/AQAB3gH2Af8BsQHnAfYB/wFYAmIB6QMdASoEAANhAeEB8QHvAe0B/wH3AfMB8QH/ - AfgB9AHxAf8B+AH0AfAB/wH3AfQB8AH/AfcB8wHwAf8B9wHzAe8B/wH3AfMB7wH/AfcB8wHvAf8B9wHz - Ae8B/wH4AfMB7wH/AfIB7wHrAf8DYgHvBAAI/wHfAdsB2QH/Aa8BgAEAAf8BtgIAAf8BxQGTAQAB/wHL - AaQBAAH/AcwBpAEAAf8ByQGfAQAB/wHFAZkBAAH/AcABiwEAAf8BsAIAAf8BnAGAAQAB/wHQAdIB1wH/ - A/0F/wNKAYoDWwHDA18B8wHHAZ8BhAH/AcQBmQEAAf8BxwGfAYQB/wHHAZ4BhAH/AccBngGEAf8BxQGf - AYQB/wHWAb0BrgH/A/sB/wP7Af8D+wH/A/sB/wP8Af8DJAE2A2EB4QHxAe8B7QH/AfcB8wHxAf8B+AH0 - AfEB/wH4AfQB8AH/AfMB8gHvAf8BAAGvAdYB/wGrAdsB7wH/AQAB4AH3Af8BAAHaAfUB/wEAAdoB9QH/ - AQAB2wH1Af8BkAHmAfgB/wGSAcEB4QH/AUUCRgF+CAADXQHwAfYB8QHtAf8BvwHcAcIB/wG/AdwBwgH/ - Ab8B3AHCAf8BvwHcAcIB/wG/AdwBwgH/Ab8B3AHCAf8BvwHcAcIB/wG/AdwBwgH/Ab8B3AHCAf8BvwHc - AcIB/wH3Ae0B5gH/A10B8AQABP8C6QHoAf8BogIAAf8BpwIAAf8BtQIAAf8BuwGKAQAB/wG2AY0BAAH/ - AaEBgwEAAf8CgQEAAf8BggIAAf8BnAIAAf8BrgIAAf8BpgIAAf8BkwIAAf8B1QHZAd0F/wNhAeEB8AHu - AewB/wH4AfQB8QH/AfgB9AHwAf8B9wH0AfAB/wH3AfMB7wH/AfcB8wHvAf8B9wHzAe8B/wHyAe4B6gH/ - AccBnwGGAf8D+gH/A/oB/wP6Af8D+gH/A/wB/wMkATYDXQHwAfYB8QHtAf8BvwHcAcIB/wG/AdwBwgH/ - Ab8B3AHCAf8BvwHcAcIB/wGeAc0BxwH/AQABvQHfAf8BogHqAfkB/wEAAdwB9gH/AQABhwHCAf8BAAHh - AfcB/wG2Ad4B8AH/AUABlwGoAf0DCgENCAADXQHwAfcB8QHtAf8BvwHcAcIB/wG/AdwBwgH/Ab8B3AHC - Af8BrwHTAcUB/wGcAcgByQH/AQABrwHRAf8BugHZAcMB/wG/AdwBwgH/Ab8B3AHCAf8BvwHcAcIB/wH2 - Ae0B5gH/A10B8AQAAf4D/wGqAYsBAAH/AYUCAAH/AZICAAH/AZECAAH/AZYCAAH/AYQCAAH/AQABpgHU - Af8BAAGrAfkB/wEAAZYB9wH/AgABsQH/AZgCAAH/AaMCAAH/AYsCAAH/AaABlwGTAf8B8wH1AfcB/wJ/ - AXgB/gH2AfEB7QH/AQABogEAAf8BAAGdAQAB/wEAAZcBAAH/AQABkQEAAf8BAAGLAQAB/wEAAYYBAAH/ - AfcB7QHmAf8BxQGaAQAB/wP6Af8D+gH/A/gB/wP4Af8D/AH/AyQBNgNdAfAB9wHxAe0B/wG/AdwBwgH/ - Ab8B3AHCAf8BvwHcAcIB/wGvAdMBxQH/AZsByAHJAf8BAAGsAdQB/wGsAdkB7AH/AYIB4wH4Af8BAAGI - AcIB/wGsAe0B+gH/AQABngHPAf8DWQH1DAADXQHwAfcB8QHsAf8BAAGqAQAB/wEAAagBAAH/AQABpgEA - Af8CAAGaAf8BAAGfAdMB/wEAAZ8B0QH/AQABhgGvAf8BAAGaAQAB/wEAAZgBAAH/AQABlgEAAf8B9gHu - AeYB/wNdAfAEAAHmAuEB/wMAAf8DAAH/AZACAAH/AY8CAAH/AaUCAAH/AZQCAAH/AQABwgHhAf8BAAHb - Av8BAAHHAv8BAAGeAfEB/wMAAf8BlgIAAf8BhwIAAf8DAAH/AdsB3AHfAf8CfwF4Af4B9wHxAewB/wHc - Ab4BngH/Ad4BvQGbAf8BAAGeAcwB/wIAAaEB/wHaAbcBkQH/AdYBsgGNAf8B9gHuAeYB/wHFAZsBAAH/ - A/sB/wP5Af8D+QH/A/gB/wP8Af8DJAE2A10B8AH3AfEB7AH/AQABqgEAAf8BAAGoAQAB/wEAAaYBAAH/ - AgABmgH/AQABnwHTAf8BAAGiAdIB/wEAAawB1AH/AbQB6wH4Af8BjgHmAfgB/wG1Ad0B7gH/AQABvAHZ - Af8DXQHwDAADXQHwAfcB8gHtAf8B6AG9AaEB/wHnAbsBnwH/AdABswGSAf8BAAGCAQAB/wEAAY4BhgH/ - AQABiwGHAf8BAAGDAYAB/wHHAaYBggH/AeABrgGOAf8B3gGsAYsB/wH2Ae4B5gH/A10B8AQAAcABsgGr - Af8DAAH/AwAB/wGTAgAB/wGwAgAB/wHFAZ8BAAH/AcEBngEAAf8BAAGlAakB/wEAAfEC/wEAAdcB9wH/ - AQABwwL/AwAB/wGHAgAB/wMAAf8DAAH/AcABvwHAAf8DXQHwAfcB8wHuAf8B3wHHAa4B/wEAAaYBAAH/ - AQABrQEAAf8BAAGoAQAB/wEAAZcBAAH/AdIBrgGJAf8B9gHuAecB/wHHAaABhQH/A/oB/wP5Af8D9gH/ - A/YB/wP8Af8DJAE2A10B8AH3AfIB7QH/AegBvQGhAf8B5wG7AZ8B/wHQAbMBkgH/AQABggEAAf8BAAGO - AYYB/wEAAYsBhwH/AQABnAGtAf8BpAHXAesB/wHcAfQB+wH/AQABrwHSAf8B0wHgAeMB/wNdAfAMAANd - AfAB9wHzAe4B/wHnAbsBnwH/AdEBtgGTAf8BnwGqAQAB/wEAAbIBhwH/AQABvQGKAf8BAAG7AYcB/wEA - AasBAAH/AZEBkwEAAf8BxQGiAQAB/wHdAakBiAH/AfYB7gHnAf8DXQHwBAABpgGUAYkB/wMAAf8DAAH/ - AYQCAAH/Ab8BjAEAAf8B1AG3AYIB/wHwAdsBtgH/AY0BkAGEAf8BAAGUAZMB/wEAAYIBAAH/AQABgQEA - Af8DAAH/AwAB/wMAAf8DAAH/AbEBrAGrAf8DXQHwAfcB9AHvAf8B4QHPAbsB/wEAAcABiwH/AQABxwGZ - Af8BAAHCAY0B/wEAAaoBAAH/AcsBqgGJAf8B9gHuAecB/wHHAaABhQH/A/gB/wP2Af8D8wH/A/IB/wP8 - Af8DJAE2A10B8AH3AfMB7gH/AecBuwGfAf8B0QG2AZMB/wGfAaoBAAH/AQABsgGHAf8BAAG9AYoB/wEA - AbsBhwH/AQABrAGAAf8BAAG0AcoB/wGrAdsB7QH/AZMBsAG2Af8B9gHuAecB/wNdAfAMAANdAfAB9wH0 - Ae8B/wHmAbkBnQH/AbYBswGHAf8BiAHCAZMB/wEAAcUBjwH/AQABvgGAAf8BAAG6AQAB/wEAAb0BAAH/ - AQABsAEAAf8BowGWAQAB/wHcAacBhAH/AfYB7gHnAf8DXQHwBAABnAGMAYAB/wMAAf8DAAH/AwAB/wGH - AgAB/wGyAZABAAH/AakBlwGEAf8DAAH/AQABsQGVAf8BAAHYAbYB/wEAAbwBiQH/AQABggEAAf8DAAH/ - AwAB/wMAAf8BsAGrAagB/wJ/AXkB/gH3AfUB8AH/AecB2QHIAf8BAAHIAZwB/wEAAc8BqAH/AQABygGd - Af8BAAG0AQAB/wHSAbcBmgH/AfUB7wHnAf8BxAGbAQAB/wP1Af8D8gH/A+8B/wPtAf8D/AH/AyQBNgNd + Af8CAAHKAf8DAAH/CAADRgF+AQAB3wHAAf8BhQHjAcQB/wGAAeABxQH/AQABygGWAf8BgwHYAd8B/wGc + AZ8B1wH/AgABjQH/AbIBgAHBAf8BrQEAAb0B/wGmAQABtwH/A0YBfhAAAwcBCgJSAVMBqAJbAWAB1gMz + AVMDFgEeDAADEAEWAT8CQAFvAlgBYQHmAzsBZQMEAQUDGQEjBAADAQECA0gBhQFZAmcB8gEAAb4B1gH/ + AZIBygHbAf8BrQHJAdMB/wG6Ac0B1QH/AcwB3QHjAf8BuwHQAdcB/wGTAqgB/QFeAmEB4QM3AVoDEQEX + CwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ + AwAB/wgAA0YBfgEAAckBkwH/AQAB3QG6Af8BAAHWAawB/wEAAckBlAH/AYAB2AHcAf8BmwGdAdYB/wIA + AYsB/wGUAQABqQH/AZ8BAAGxAf8CAAGNAf8DRgF+DAADAQECAy0BRQNQAZ4DGAEhA1UBtQJZAVsBwwNF + AXwDUQGcA0IBcwJZAWAB6wM9AWkDTgGZAVoCXAHNAwABAQgAAwMBBAMiATIDSgGNATICXwH7AQABqgHA + Af8BAAG8AdAB/wGOAcEB0wH/AY0BvgHMAf8BgwGxAb8B/wFcAl4BzgM7AWQDFwEgGwAC/wH+Av8D/g7/ + Af4G/wH7Af8B/gX/AfwC/gH/Af0D/wMAAf8IAAMpAT8DRgF+A0YBfgNGAX4BpgHgAesB/wEAAcgB8QH/ + AQABvgHxAf8BvQHJAesB/wNGAX4DRgF+A0YBfgMpAT8MAAMBAQIDGAEiAxABFgMKAQ0CVQFXAbcDNAFU + A0oBjQJZAVwByQMvAUoCWgFhAeQDQgF2AwQBBQMxAU4DAAEBEAADCQEMA0IBdANSAaYBWgJeAdUBWwJe + AdkBWAJbAcYBTQJOAZUDMAFLAwcBCR8AAf8B/QH/Af4D/wH+Cf8B+gH/Af4C/wH+Dv8DAAH/AwAB/wMA + Af8YAAMpAT8BAAG6AfIB/wEAAcEB9QH/AykBPygAAxYBHwI8AT0BaAMAAQEDFgEeA1MBqgMKAQ4DKAE8 + AzQBVB8AAQEDBwEKAxIBGAMmATkDKAE9AxoBJAMXASADCgENIwAB/wP+A/8B/gH/AfsE/wH+A/8B/gL/ + Af4B/Qf/Af4C/wP+Af8DAAH/A8QB/yAAAykBPwMpAT8sAAMHAQoDBQEHBAADFAEcAyMBMwQAAwsBDwML + AQ9fAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/xQAAagBlQFAAf0BygGY + AQAB/wG6AY4BAAH/AZACAAH/AZACAAH/AwAB/wHDAZQBAAH/AckBlwEAAf8BhwIAAf8DAAH/A2QB9ANX + Ab0DAgEDVAABWQJkAewBSAJiAfYBSAJiAfYBSAJiAfYBSAJiAfYBSAJiAfYBSAJiAfYBSAJiAfYBSAJi + AfYBSAJiAfYBWQJbAcMEAAMBAQIDBQEHAwQBBgMAAQEsAANOAZkDXQHSAwAB/wHHAZUBAAH/AcsBygHJ + Af8BqgGoAacB/wGwAq8B/wOuAf8DmgH/AYsBiQGHAf8BkAGOAYwB/wOhAf8DrgH/A6EB/wMrAfwDVQHq + FAADLQFGA10B0gMAAf8DAAH/AwAB/wMAAf8DAAH/A10B1xwAAy0BRgNNAfoB3QHsAfYB/wG9Ae4B+QH/ + AawB6gH4Af8BqwHqAfgB/wGrAeoB+AH/AasB6gH4Af8BrQHqAfgB/wHUAfMB+wH/AaQByAHkAf8BVAJW + AasDBQEHAzgBXQNVAbQDXQHtA1ABngMqAUEDMQFOAz0BagNHAYIBSQJIAYgDRgF+AzMBUgMaASQDBwEJ + CAADQAH9A6cB/wO1Af8DgQH/AwAB/wLTAc4B/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ + A8QB/wMAAf8MAAMwAUsDXAHMA6MB/wHGAcUBxAH/AdkB1AHTAf8B1AHPAc4B/wHTAc4BzQH/AdMBzgHN + Af8B6ALlAf8DAAH/FAADMAFLA1wBzAOjAf8BjQGzAcgB/wGOAcIB4QH/AZcB6AH5Af8BAAHcAfYB/wEA + AdsB9QH/AQABiAHCAf8BAAHbAfUB/wEAAd4B9gH/AbEB5wH2Af8BWAJiAekDHQEqBAACPQE+AWoCRwFI + AYMCPgE/AWwDKQE+AyMBMwNIAYUDQAH9AwAB/wNfAfsDKwH8AZkCqAH9A2IB9gMsAUMLAAH/A7UB/wO1 + Af8BkwKUAf8BgAGCAYMB/wLTAc4B/wPSAf8DAAH/A70B/wPOAf8DwgH/A60B/wMAAf8D0gH/A8QB/wMA + Af8IAANcAckDswH/A9QB/wHhAt8B/wHFAb8BvQH/Ab0BtQGzAf8BuQGxAbAB/wG5AbEBrgH/AbcBrwGu + Af8B0wHOAc0B/wMAAf8QAANcAckDswH/A9QB/wHhAt8B/wHCAb4BvQH/AQABowHJAf8BqwHbAe8B/wEA + AeAB9wH/AQAB2gH1Af8BAAHaAfUB/wEAAdsB9QH/AZAB5gH4Af8BkgHBAeEB/wFFAkYBfgwAAwcBCgMp + AT4DRgGAA1cBwgNMAZEDAAH/AUgBYgFIAfYBSAFiAUgB9gI1ATQBVQMnATsDFgEeDwAB/wO7Af8DuwH/ + AYsBkwGWAf8BiwGNAY8B/wLTAc4B/wIAAYQB/wMAAf8DAAH/A5IB/wMAAf8DAAH/AwAB/wEAAYIBhgH/ + A8QB/wMAAf8IAAOiAf8D8AH/A+AB/wHUAtIB/wG+AbYBtQH/AbwBtQG0Af8BuwG0AbIB/wG6AbIBsQH/ + AbkBsQGvAf8B1AHPAc4B/wMAAf8QAAOiAf8D8AH/A+AB/wHUAtIB/wG+AbYBtQH/AZwBsQG9Af8BAAG9 + Ad8B/wGiAeoB+QH/AQAB3AH2Af8BAAGHAcIB/wEAAeEB9wH/AbYB3gHwAf8BWwJgAdYDCgENGAADCgEN + A1sByAIAAYIB/wIAAakB/wEmATYBfwH+Ax8BLBcAAf8D1wH/A9cB/wOXAf8BywHQAdEB/wOdAf8D6AH/ + A90B/wPBAf8BAAGPAZMB/wEAAY8BlwH/AdQB2QHaAf8D3QH/A8QB/wOdAf8DAAH/CAADqAH/A+oB/wPd + Af8B1QHUAdMB/wHAAbkBtwH/Ab4BtwG2Af8BvQG2AbQB/wG7AbQBswH/AbsBswGxAf8B1AHQAc8B/wMA + Af8QAAOoAf8D6gH/A90B/wHVAdQB0wH/AcABuQG3Af8BvQG3AbYB/wEAAa4ByQH/AawB2QHsAf8BggHj + AfgB/wEAAYgBwgH/AawB7QH6Af8BQwJ/Af4DMwFTIAADPQFpAgABgwH/AgABmgH/AgABrAH/Aj8BQAFu + FwAB/wP5Af8D+QH/A6sB/wPfAf8BrQG/AcMB/wGTAZgBmQH/A60B/wGNAZgBmgH/AcgCywH/A8sB/wGP + AZ4BoQH/A54B/wGkAqYB/wP5Af8DAAH/CAADrwH/A+sB/wPdAf8B1wLVAf8BwQG7AbkB/wHAAbkBuAH/ + Ab4BuAG2Af8BAAGhAQAB/wEAAZQBAAH/AdYB0QHQAf8DAAH/EAADrwH/A+sB/wPdAf8B1wLVAf8BwQG7 + AbkB/wHAAbkBuAH/AawBtwG8Af8BAAGuAcwB/wG0AesB+AH/AY4B5gH4Af8BtQHdAe4B/wNVAbIDBAEF + IAADQwF3AgABjQH/AgABuQH/AgAB0wH/AlkBWwHDAyMBMxAAA2oB+QP8Af8D/AH/A8sB/wPyAf8D8gH/ + A/IB/wHwAvIB/wHfAe8B8wH/A/IB/wPyAf8B4QHvAfIB/wGsAckBzwH/AfsC/AH/A/wB/wNwAf4IAAO1 + Af8D7AH/A94B/wHZAtgB/wHDAb0BuwH/AcIBuwG6Af8BwQG6AbkB/wGgAcgBpAH/AQABqQEAAf8B1wHT + AdEB/wMAAf8QAAO1Af8D7AH/A94B/wHZAtgB/wHDAb0BuwH/AcIBuwG6Af8BwQG6AbkB/wEAAr8B/wGk + AdcB6wH/AdwB9AH7Af8BAAGsAdEB/wMkATUkAAMvAUkCAAGwAf8CAAHVAf8CVwFfAegDWwHQAlsBYAHW + AwUEBwEKCAADXQTSAf8D6AH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wPo + Af8DxAH/A1wB3AgAA7sB/wPsAf8D3wH/AdoC2QH/AcYBvwG+Af8BxAG+AbwB/wHDAbwBuwH/AcEBuwG5 + Af8BwAG5AbgB/wHXAtMB/wOEAf8QAAO7Af8D7AH/A98B/wHaAtkB/wHGAb8BvgH/AcQBvgG8Af8BwwG8 + AbsB/wO7Af8BAAG6AdcB/wGrAdsB7QH/AQABnwG0Af8oAAMfAS0CAAGYAf8CAAG1Af8CWAFeAd0CRAFF + AXwBSwJMAZABUwJVAbADOwFkAw8BFAQAAy0BRQOaAf8DzAH/AccBiwEAAf8B+QH0Ae0B/wH+AegB2AH/ + Af4B6AHXAf8B/QHlAdMB/wH8AeQB0QH/AfoB4AHHAf8B+QHdAcMB/wH6AfQB7QH/AccBhQEAAf8DwwH/ + AwAB/wMtAUUIAAPAAf8D7AH/A+AB/wHdAtwB/wHHAcEBwAH/AZICkQH/A48B/wONAf8DigH/AdkB1QHU + Af8DiwH/EAADwAH/A+wB/wPgAf8B3QLcAf8BxwHBAcAB/wGSApEB/wOPAf8DjQH/AQABnAGmAf8BAAHC + AdwB/wGHAY8BkgH/JAADBgEIAlcBXAHfAgABpgH/AgABxwH/AgABzQH/AgABxgH/AVICVAGmA0IBdAMf + ASwMAAM7AWMDXwHzAcUBiQEAAf8B+QH0Ae8B/wH+AecB1wH/Af0B5wHVAf8B/AHmAdIB/wH7AeEBzAH/ + AfgB3AHCAf8B9gHaAb0B/wH6AfQB7wH/AcQBgwEAAf8DXQHzAzsBYwwAA8YB/wPvAf8D4QH/A90B/wHI + AcMBwgH/AcgBwgHBAf8BxgHBAb8B/wHFAb8BvgH/AcMBvQG7Af8B2gHWAdUB/wORAf8QAAPGAf8D7wH/ + A+EB/wPdAf8ByAHDAcIB/wHIAcIBwQH/AcYBwQG/Af8BxQG/Ab4B/wHDAb0BuwH/AdoB1gHVAf8DkQH/ + JAADJgE4AwAB/wIAAcAB/wIAAbwB/wMAAf8CAAGsAf8BVAJWAasDEAEVFAADBwEJAmoBRwL5AfQB8AH/ + AfwB5gHTAf8B/QHnAdMB/wH7AeMBzQH/AfoB4AHIAf8B9QHWAbsB/wHzAdQBtQH/AfgB9AHwAf8CagFH + AfkDBwEJEAADywH/A+kB/wPpAf8B4gLhAf8BywHGAcQB/wGYApcB/wGWApUB/wGUApMB/wGSApEB/wHb + AdcB1gH/A5gB/xAAA8sB/wPpAf8D6QH/AeIC4QH/AcsBxgHEAf8BmAKXAf8BlgKVAf8BlAKTAf8BkgKR + Af8B2wHXAdYB/wOYAf8gAAMaASQCXgFhAdoCAAGGAf8CAAHAAf8BnwGgAbUB/wEAAYQBjgH/AwAB/wMl + ATccAAJtAVEB9wH5AfUB8QH/AfwB4wHPAf8B/AHkAc8B/wH6AeEBygH/AfkB3QHEAf8B9AHpAd8B/wH3 + AfIB7AH/AfUB7wHpAf8CXwFFAfsUAAMuAUgDYQHkA98B/wPqAf8BzwHKAckB/wHLAcYBxQH/AcoBxAHD + Af8ByAHDAcEB/wHHAsEB/wHcAdkB2AH/A54B/xAAAy4BSANhAeQD3wH/A+oB/wHPAcoByQH/AcsBxgHF + Af8BygHEAcMB/wHIAcMBwQH/AccCwQH/AdwB2QHYAf8DngH/IAACUwFUAawCAAGmAf8CAAG4Af8CAAGw + Af8CAAG3Af8BhgGZAcMB/wEAAZ8BxgH/AxsBJhwAAmIBSQH2AfkB9QHxAf8B/AHjAc0B/wH7AeMBzQH/ + AfkB4AHIAf8B+AHcAcIB/wH9AfsB+AH/AfwB5gHNAf8B4gG2AYQB/wJUAVIBphgAAwsBDwNWAasD3AH/ + AeYC4wH/AeEB3gHcAf8B3wLcAf8B3wHcAdsB/wHeAtsB/wHuAuwB/wOlAf8UAAMLAQ8DVgGrA9wB/wHm + AuMB/wHhAd4B3AH/Ad8C3AH/Ad8B3AHbAf8B3gLbAf8B7gLsAf8DpQH/IAACUwFVAa0CRQFGAX4DMgFR + AlkBXQHXAk4BXQHwAlgBWwHLATEBUgFfAfsDGAEhHAADTQH6AfcB8gHsAf8B+AH0Ae4B/wH4AfMB7QH/ + AfgB8wHtAf8B+AHyAewB/wHyAeYB1wH/AeIBsgEAAf8DYgH2AwUBByAAA1EBnwNfAfsDxAH/A8AB/wO7 + Af8DtgH/A7AB/wNSAaccAANRAZ8DXwH7A8QB/wPAAf8DuwH/A7YB/wOwAf8DUgGnIAADGgElAzgBXgwA + AkEBQgFzAzsBZCAAAzoBYAJYAVYBuwJ/AU8B/gHIAYwBAAH/Am0BUQH3Am0BUQH3An8BTAH+A04BlLgA + AxIBGBgAMP8B0wHbAf0B/wH9Af4K/wI9ATwBZwNeAdkDXwHjA2EB5AJhAVgB5gFkAlwB5wNeAd0DSwGO + A1QBrwFXAlwB3wFdAmEB4gFaAmEB5AFcAmQB5wFcAmQB5wFYAl4B3QFJAkoBiQwAAwIBAwMhATADVwHf + A2QB9ANrAfcDagH5AzgBXgMsAUMDZwHyA2sB9wNkAfQDVwHfAyEBMAMmATkDRAF6AlUBUwGwAckCAAH/ + AbYCAAH/AwAB/wMAAf8DAAH/AWwCagH+A1QBrwNIAYYDZwHyA2sB9wNkAfQDVwHfAyEBMB7/Af4B/wHS + AeUB8AH/AboB4wHrAf8BxAHoAewB/wHXAd4B9QH/AgAB+gH/AdgB3wH+Af8B8gH1Af4D/wH+Af8CWAFW + AbsB/wHhAZMC/wHTAYoC/wHcAZAB/wGyAZIBAAH/AwAC/wHrAZoB/wF/AXIBSgH+A1gB7wEAAZkBmgH/ + AQAD/wEAA/8BAAGIAYkB/wEAAasBrAH/AQAD/wNfAeAMAAMdASkDWQHXA2IB7wNdAe0DrgH/A5cB/wMA + Af8DAAH/A5cB/wOuAf8DXQHtA2IB7wNZAdcBWAJhAeYBAAGFAawB/wHIAgAB/wHdAaMBAAH/AwAB/wGU + AY8BigH/AbABqwGlAf8DrgH/A5cB/wMAAf8DAAH/A5cB/wOuAf8DXQHtA2IB7wNZAdcY/wHJAeUB6gH/ + AQABowGxAf8CAAHLAf8BAAGFAesB/wEAAYoB7QH/AgAB6wH/AgAB9gH/AgAB+QH/AgAB+QH/AeAB5QH+ + Af8CWAFWAbsB/wHaAY8B/wH6Ac4BhwL/AdcBjQH/Aa4BjwEAAf8DAAH/AfMBywGFAf8DXgHaA1YBuAEA + AZQBlQH/AQAD/wEAA/8BAAGFAYYB/wEAAacBqAH/AQAD/wFaAmAB3gwAAz0BaQNiAe8C0wHOAf8DVgG5 + A00B+gMAAf8DAAH/AwAB/wMAAf8DTQH6A1YBuQPEAf8DYgHvAysB/AGTAawBzAH/AecBrwEAAf8BqQIA + Af8DAAH/AtMBzgH/AYECAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DTQH6A1YBuQPEAf8DYgHvAfYB1AHO + Af8B9gHfAd0B/wH5AvMB/wH5AfUB9gH/AfYB3wHdAf8B7gGXAY0B/wGfAb0BxQH/AgABmAH/AQABnAG9 + Af8CAAHrAf8CAAH9Af8BAAG0AfwB/wIAAfgB/wH2AfUB/AH/AQABkQH9Af8BjAGhAfwB/wJaAVcBvQH/ + AdoBjwH/AfoBzgGHAv8B1wGNAf8BrgGPAQAB/wGBAgAB/wGQAgAB/wFcAlgB0QNVAbIBAAGTAZUB/wEA + A/8BAAP/AQABhQGGAf8BAAGnAagB/wEAA/8BWgJgAd4EAANAAXABUgJUAaYBQgJZAfUBAAGCAYUB/wLT + Ac4B/wFRAm0B9wMAAf8DvQH/A84B/wPCAf8DrQH/AwAB/wFZAmcB8gPEAf8DbQH3AjUBNAFVA1kB9QH9 + AdcBsgH/AZACAAH/AYYBhAGBAf8C0wHOAf8B+AGwAQAB/wMAAf8DvQH/A84B/wPCAf8DrQH/A0wB8wMH + AQoDxAH/A20B9wH4AbIBnwH/AfcBhQEAAf8B8wGqAZoB/wHzAZkBgwH/Ae4CAAH/AdoCAAH/AdMBqwGs + Af8BAAGUAawB/wEAAZUBrwH/AgAB6gH/AgAB/AH/AQABygL/AgAB8wH/AdUB3QHuAf8BAAGOAf4B/wGN + AaEB/AH/AloBVwG9Af8B2gGPAf8B+gHOAYcC/wHXAY0B/wG0AZQBAAH/AwAB/wMAAf8DXQHSA1UBtAEA + AZIBlAH/AQAD/wEAA/8BAAGKAYsB/wEAAa4BrwH/AQAD/wFaAmAB3gQAAVgCYQHmA10B8AN/Af4DAAH/ + AtMBzgH/AgABhAH/AwAB/wMAAf8DkgH/AwAB/wMAAf8DAAH/AQABggGGAf8DxAH/A10B8AQAAzsBZAJf + AVMB8wHAAbABlAH/AwAB/wLTAc4B/wMAAf8DAAH/AwAB/wOSAf8DAAH/AwAB/wMrAfwDVgG2A8QB/wNd + AfAB+wHdAdQB/wH+AYUBAAL/Aa4BlwL/AZoBAAH/AfkCAAH/Ad4CAAH/AeYBgAEAAf8BAAGyAcAB/wIA + Aa4B/wIAAeoB/wEAAYgB6QH/AQABmwH7Af8CAAH1Af8CAAHqAf8CAAH6Af8B4wHoAf4B/wJZAVYBvgH/ + AdoBjwH/AfoBzgGHAv8B1wGNAf8BtgGWAQAB/wMAAf8ByQGlAQAB/wNdAdIDVQGyAQABkQGSAf8BAAK2 + Af8BAAKVAf8DAAH/AwAB/wEAApcB/wFYAl4B3QQAAVECbQH3Ae8B+gH+Af8BngHlAfQB/wEAAZIBmwH/ + A5EB/wPoAf8D3QH/A8EB/wEAAYwBkAH/AQABjwGXAf8B1AHZAdoB/wPdAf8DxAH/A5EB/wNKAYoIAANE + AXkDTQH6AgABkwH/A5EB/wPoAf8D3QH/A8EB/wEAAYYBAAH/AQABhgEAAf8B1QHYAdYB/wPdAf8DxAH/ + A5EB/wFVAlYBtAH9AfcB9QH/AfoBigEAAf8B/gGmAY4B/wH+AaQBiwH/Af0BhgEAAf8B5wIAAf8B4wIA + Af8BigHBAcwB/wIAAZoB/wEAAZ0BxQH/AQABwwHpAf8BAAHRAv8BAAHLAf0B/wEAAaoB0QH/AvUB+QX/ + AlUBUwGtAf8B5QGVAv8B2gGOAv8B3QGQAf8B9gHKAYQB/wHQAasBAAL/AeUBlQH/AlkBVgG+A1ABmgEA + AvIB/wEAAdcB2gH/AQABvwHCAf8BAAHJAcwB/wEAAccBygH/AQABwwHEAf8BWwJeAdkEAAE+AlwB+AHy + AfoB/QH/AbMB7QH6Af8BoAHiAfEB/wGBAa0BtwH/AYUBiwGNAf8DngH/AQABhwGKAf8BAAHAAdcB/wEA + AcoB5gH/AQABhwGMAf8DngH/AYoBjAGNAf8BTgJfAfsDCAELCAADPAFmAXICfwH+AacBywHqAf8BjwGl + AboB/wGIAYoBjAH/A54B/wMAAf8BAAG6AYsB/wEAAcUBiwH/AQABhwEAAf8DngH/AYMBiAGEAf8DAAH/ + AQABlwHfAf8B/gP/AfoBogGKAf8B/gGTAQAB/wH+AasBlQH/Af4BjwEAAf8B8AIAAf8B2gIAAf8BvwGv + AbMB/wEAAbUBxwH/AZoB0wHWAf8BmAHWAcgB/wGRAdYBxAH/AYkB2QHTAf8BhgHMAdYB/wH5AvoF/wMc + AScDTAGSAlIBUQGnAlMBUgGoA1MBqgNTAaoCUAFPAZsDJgE4AxUBHQNMAZIBUQJSAacBUgJTAagDUwGq + A1MBqgFPAlABmwErAiwBQwQAAUECagH5AfYB/AH+Af8ByAHyAfwB/wG5Ae8B+wH/AawB7AH6Af8BnAHo + AfkB/wGLAeMB9wH/AQAB4AH2Af8BAAHcAfYB/wEAAdkB9QH/AQAB1gH0Af8BAAHTAfMB/wHQAfMB/AH/ + AVECbQH3DAABVAJWAasBpwG/AdsB/wGWAcUB8QH/AaEB0AH7Af8BlgHGAfMB/wG2Ac8B5AH/AgABpwH/ + AQABzgGPAf8BAAHNAYkB/wEAAcsBgwH/AQABywEAAf8BAAHJAQAB/wEAAZYBAAH/AQABlgHeBf8B+wHS + AcYC/wGaAQAC/wGvAZUC/wGVAQAB/wH5AgAB/wHrAgAB/wH8AdIBzAH/AYoBxAGzAf8BAAGSAQAB/wEA + Aa8BAAH/AQABygGJAf8BAAHVAZAB/wEAAbYBAAH/AasB0AHEBf8DMgFRAlYBWAG5AloBXAHNAlkBXAHP + AlkBXQHSAlkBXQHSAlYBWAHBAzcBWgErASwBKwFDAVUBVwFVAbcBWgFcAVoBzQFbAV4BWwHQAVkBXQFZ + AdIBWQFdAVkB0gFXAVkBVwHCAT8BQAE/AW4EAANNAfoB/gP/AfgB/QL/AfYB/QL/AfUB/AL/AfMB/AH+ + Af8B2AH2AfwB/wGUAeYB+AH/AYUB4wH3Af8BAAHfAfYB/wEAAdsB9QH/AQAB2AH0Af8B1wH0AfwB/wFR + Am0B9wwAAlkBWwHEAgABmgH/AQABgAGuAf8BAAGmAdYB/wIAAaUB/wIAAZIB/wIAAZgB/wEAAdABnwH/ + AQABzgGXAf8BAAHNAY4B/wEAAc0BiAH/AZ0B2AGrAf8BAAGwAQAB/wFNAU4BTQGWBP8B8QH5Av8BogG6 + AeMB/wHXAcsB1AH/AfABywHDAf8B7AHJAcQB/wGqAbYB3gH/AYIBmQHfAf8BAAGpAZEB/wMAAf8BAAGr + AQAB/wEAAccBiQH/AQAB3QGcAf8BAAHIAQAB/wEAAbABkAX/AlUBVwG6AgAC/wIAAv8CAAL/AgAC/wIA + Av8CAAL/AlkBXAHJAVIBVAFSAaYBAAHzAQAB/wEAAeQBAAH/AQAB4wEAAf8BAAHjAQAB/wEAAeMBAAH/ + AQAB7QEAAf8DXwHgBAADTQH6AegB9gH7Af8BlAHUAe8B/wGIAc4B7gH/AQABwQHpAf8ByQHpAfYB/wHy + AfwB/gH/AfMB/AH+Af8B8gH8Af4B/wHwAfwB/gH/Ae8B+wH+Af8B7gH7Af4B/wH+A/8BUQJtAfcMAAEr + AiwBQwJAAZUB/QIAAZAB/wIAAZAB/wIAAZAB/wIAAZAB/wEAAY8BngH/AYQBmQGTAf8BAAGUAYkB/wEA + AYwBAAH/AaQB1QGxAf8BggG/AYUB/wNRAaADBwEKBP8B+gH8Af4B/wEAAYwB+wH/AQABkAH7Af8BAAGg + AfwB/wIAAf0B/wIAAdsB/wIAAbcB/wGZAcEBvgH/AwAB/wEAAZ8BAAH/AQABvwGAAf8BAAHYAZkB/wEA + AdcBjAH/AQABpgEAAf8C8QHyAf8CVgFYAbsCAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CWgFdAdMBVQFW + AVUBsQEAAeYBAAH/AQAB2gEAAf8BAAHaAQAB/wEAAdoBAAH/AQAB2gEAAf8BAAHhAQAB/wFaAWABWgHe + BAABWQJnAfIB8QH6Af0B/wGUAd4B9QH/AZMB3AH0Af8BgQHVAfIB/wEAAcoB7QH/AQABywHqAf8BhQHT + Ae8B/wGAAdIB7wH/AQAB0AHvAf8BAAHPAe4B/wEAAc8B7gH/AekB9wH7Af8BTAJfAfMQAAM6AWEBUwFh + AWQB8QIAAZIB/wFDAl8B+wJZAVwBzANNAfoBAAGtAecB/wGBAbEB4wH/AQABsgHnAf8BAAGYAcQB/wNW + AbYDCAELBAAI/wGGAbMB+wH/AQABhQL/AQABmQL/AgAC/wIAAegB/wIAAbgB/wGYAa8B0AH/AQABjAEA + Af8BAAGRAQAB/wEAAbcBAAH/AQAB0AGRAf8BAAHdAZQB/wEAAa4BAAH/AcEB2QHRAf8CVwFaAb0CAAL/ + AgAC/wIAAv8CAAL/AgAC/wIAAv8CWQFdAdIDVgGzAQAB5gEAAf8BAAHaAQAB/wEAAdoBAAH/AQAB2gEA + Af8BAAHaAQAB/wEAAeEBAAH/AVoBYAFaAd4EAAFOAl0B8AH3AfwB/gH/AY4B5AH4Af8BkQHeAfUB/wGf + AeAB9QH/AawB4QH2Af8B7wH7Af4B/wH0Af0B/gH/AfMB/AH+Af8B8QH8Af4B/wHvAfsB/gH/Ae4B+wH+ + Af8DagH5AVwCYAHUIAADPAFmAXICfwH+AawB0QHyAf8BrgHXAf0B/wGwAdQB9QH/AZIBwAHnAf8BUwJV + Aa0IAAj/AcUB2wH7Af8CAAH8Af8BAAGfAf4B/wEAAYAC/wIAAfMB/wIAAcMB/wEAAYEBywH/AQABqQGH + Af8DAAH/AQABswEAAf8BAAHRAZ4B/wEAAeABpQH/AQABvgEAAf8BAAG3AZ8B/wJXAVoBvQIAAv8CAAL/ + AgAC/wIAAv8CAAL/AgAC/wJZAV0B0gFVAVYBVQG0AQAB5gEAAf8BAAHaAQAB/wEAAdoBAAH/AQAB2gEA + Af8BAAHaAQAB/wEAAeEBAAH/AVoBYAFaAd4EAAE+AlwB+AH9Av4B/wH+A/8C/gL/Af0B/gL/Af4D/wHq + AfcB+wH/A2oB+QNcAfgDXAH4A1wB+ANtAfcDYQHhAzUBViAAA0oBjQG4AdAB5wH/AZYBxQHxAf8BoQHQ + AfsB/wGWAcYB8wH/AbYBzwHkAf8BVwJcAd8IAAj/AfQB+AH9Af8BAAGEAfsB/wEAAZcC/wEAAY0B/gH/ + AgAB+gH/AgAB0wH/AgABuQH/AZQBxAG5Af8BAAG8AaUB/wHfAfQB7QH/AfkB/QH7Af8B8wH8AfkB/wHJ + AfIB5AH/AbAB2wHNAf8CVgFZAb4CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CWgFdAdMDVgGzAQAB5gEA + Af8BAAHaAQAB/wEAAdoBAAH/AQAB2gEAAf8BAAHaAQAB/wEAAeEBAAH/AVgBXgFYAd0EAAFbAl4B0ANN + AfoDTQH6A00B+gNNAfoDTQH6AVgCXgHdAxABFgMLAQ8DCwEPAwsBDwMLAQ8DCwEPAwMBBCAAA0wBkgEA + Aa4B5QH/AQABuAHmAf8BjQHIAfYB/wEAAa0B5gH/AQABpwHlAf8BWAJiAe8IAAr/Af4B/wGEAbQB+wH/ + AQABkgH8Af8BAAGSAf0B/wIAAf4B/wIAAeAB/wIAAckB/wHwAfEB+Rn/AlMBVQGwAgAC/wIAAv8CAAL/ + AgAC/wIAAv8CAAL/AlcBWQHCAVABUQFQAZ8BAAHzAQAB/wEAAecBAAH/AQAB5wEAAf8BAAHnAQAB/wEA + AecBAAH/AQAB7wEAAf8BXAFhAVwB3FwAASsCLAFDAUABowGoAf0BAAGmAeUB/wEAAaYB5QH/AQABpgHl + Af8BAAGmAeUB/wFLAkwBkAgADv8B/gH/AeYB8AH8Af8BxwHfAf0B/wGuAc4B/QH/AcsB3QH6If8DJAE1 + A1MBqgJWAVkBvgJXAVkBvwJXAVkBvwJWAVkBvgNWAbMDLwFKAx8BLQFUAVYBVAGrAVcBWgFXAb0BVwFZ + AVcBvwFXAVkBVwG/AVYBWQFWAb4BVQFWAVUBtAM2AVlgAAM6AWEBUwJkAfEBAAGlAeQB/wEiAl8B+wNQ + AZ0DBAEGCAAB/AH+AfwB/wH8Af4B/AH/AfwB/gH8Af8B/gP/AfYB+QH8Af8B4AHhAeIB/wHQAcsBwwH/ + AcgBwQG1Af8BxQHAAbgB/wHLAsoB/wHeAeAB5QH/AfcC+QP/Af4B/wH8Af4B/AH/AfwB/gH8Af8B/AH+ + AfwB/wP9Af8D/hr/Af4C/wH8A/8B+wv/A/0B/wP+Hf8D3QH/A70B/wPxCf8D8AH/A7wB/wPMIf8D3QH/ + A70B/wPxCf8D7wH/A7wB/wPJCf8B/AH+AfwB/wH8Af4B/AH/Af0D/wPjAf8BwQGpAY8B/wG6AZcBAAH/ + Ab0BmwEAAf8BxwGhAQAB/wHHAaEBAAH/AboBlwEAAf8BqwGQAQAB/wGzAa0BqQH/AeEB5AHnBf8B/AH+ + AfwB/wH8Af0B/AH/A/0J/wP+Af8D/gH/A/4B/wP+Af8D/g3/A+EB/wPLAf8D/B3/A70B/wMAAf8BgwIA + Af8DAAH/AewB6QHnAf8B3QHWAdQB/wMAAf8BhQKEAf8DAAH/AwAB/wP+Ff8DvQH/AwAB/wGDAgAB/wMA + Af8B7AHpAeYB/wHbAdgB1wH/AwAB/wGEAYMBggH/AwAB/wMAAf8D+wH/AfwB/gH8Af8B/gP/AdkB0gHO + Af8BrwIAAf8BtQIAAf8BzgGmAQAB/wHuAekB3QH/Ac0BtAGBAf8BxwGcAQAB/wHHAZkBAAH/Ab4BhwEA + Af8BqQIAAf8BoQGOAYAB/wHbAd8B4gH/Af0B/wH9Af8B/AH+AfwN/wL+Gv8BzwLJAf8DAAH/AwAh/wMA + Af8BrgKvAf8BzgHwAfUB/wMAAf8DAAH/AgABhwH/AwAB/wH1AvcB/wP1Af8DAAH/A9kV/wMAAf8BrgKv + Af8BzgHwAfUB/wMAAf8DAAH/AwAB/wMAAf8B9gH+Bv8DAAH/A9QF/wHhAdwB2QH/AaACAAH/AakCAAH/ + AbYCAAH/AcMBmAEABf8BwQG8AaYB/wGBAgAB/wGLAgAB/wGjAgAB/wGvAgAB/wGfAgAB/wGcAYoBgQH/ + AeQB5wHpAf8B/gH/Af4F/wH+A/8B/gf/Av4C/wHWAdoB3QH/AdsB2QHXAf8BxAHDAcsB/wGcAaABogH/ + AwAB/wMAAf8DAAH/AwAB/wH0AvMH/wH+Af8B9gL3Af8B8AH1AfYB/wH1Af4C/wH8A/8B7wH3AfgB/wMA + Af8BAAGhAakB/wEAAZEBrgH/AwAB/wMAAf8BAAHbAv8BAAG7AegB/wGEAbYBwgH/AdQBzAHKAf8DAAH/ + A90B/wH2AvcB/wHwAfUB9gH/AfUB/gL/AfwD/wHvAfcB+AH/AwAB/wEAAaEBqQH/AQABkQGuAf8DAAH/ + AwAB/wEAAZABsAH/AwAB/wGBAa0BtwH/AaQBngGcAf8DAAH/A+oB/wH5AvwB/wGgAgAB/wGKAgAB/wGU + AgAB/wGUAgAB/wGUAgAB/wHvAeEBzwH/AbkB3wHwAf8BAAGdAegB/wEAAZEB6wH/AgABjQH/AZ8CAAH/ + AaICAAH/AYgCAAH/AbICrgH/AfkB+wH6A/8B/gX/AfkB+gH7Af8BvgK/Af8DAAH/AwAB/wMAAf8DAAH/ + AwAB/wMAAf8BAAGdAbQB/wEAAcsB3gH/AwAB/wG4AaoBsQX/AfoB/wH+Af8B7AHDAbgB/wHcAYoBAAH/ + AdsBtwGtAf8B3wG2AawB/wHTAYcBAAH/AwAB/wGAAZ0BogH/AQABjwGrAf8DAAH/AwAB/wEAAdgC/wEA + Ac4B/gH/AwAB/wMAAf8DnwX/AewBwwG4Af8B3AGKAQAB/wHbAbcBrQH/Ad8BtgGsAf8B0wGHAQAB/wMA + Af8BgAGdAaIB/wEAAY8BqwH/AwAB/wMAAf8BAAHiAv8DAAH/AwAB/wMAAf8DzwX/AdgB0AHLAf8DAAH/ + AYICAAH/AY8CAAH/AY0CAAH/AZ0CAAH/AdcBvwGdAf8B6AH5Av8BAAHNAfMB/wEAAcIC/wEAAY8B1AH/ + AYYCAAH/AZYCAAH/AYICAAH/AYoCAAH/AeYB6QHrBf8B7AHqAegB/wGeAZoBlgH/AwAB/wGnAZIBgAH/ + AZYCAAH/AwAB/wGuAYwBAAH/AdQBlAEAAf8DAAH/AQABsAHVAf8BAAHrAv8DAAH/AwAD/wH+Af8B/QP/ + AfgB3gHWAf8B+AGCAQAB/wH7AaoBkQH/Af0BlgEAAf8B8QIAAf8DAAH/AaMBhQGBAf8BAAGiAbkB/wMA + Af8DAAH/AQAB0gH9Af8BAAHVAv8BAAGfAcIB/wMAAf8DAAX/AfgB3gHWAf8B+AGCAQAB/wH7AaoBkQH/ + Af0BlgEAAf8B8QIAAf8DAAH/AaMBhQGBAf8BAAGiAbkB/wMAAf8DAAH/AQABvwHkAf8DAAH/AQABgwGf + Af8DAAH/AwAF/wGuAZoBjgH/AwAB/wMAAf8BmgIAAf8BsQIAAf8BxQGgAQAB/wHGAa4BhwH/AfYB8AHt + Af8BiQHcAe0B/wEAAdYB/gH/AQABuAH8Af8DAAH/AYcCAAH/AwAB/wMAAf8B0gHTAdUB/wLrAewB/wG3 + AbMBrgH/AcwBxAG4Af8BzQHCAbsB/wHbAcEBogH/AdEBswEAAf8DAAH/AZ8CAAL/AasBAAH/AZwCAAH/ + AwAB/wEAAd0B7wH/AwAB/wMAAf8B2gHYAdMF/wH6AfgB9wH/AfQBjQEAAf8B/gGlAYwC/wGmAYwC/wGE + AQAB/wMAAf8BggIAAf8BAAG4AccB/wMAAf8CAAGKAf8BAAGLAa8B/wMAAf8BAAHOAv8DAAH/AwAF/wH6 + AfgB9wH/AfQBjQEAAf8B/gGlAYwC/wGmAYwC/wGEAQAB/wMAAf8BggIAAf8BAAG4AccB/wMAAf8CAAGJ + Af8BAAGXAb0B/wMAAf8BAAHHAfcB/wEAAYYBjgH/AwAF/wGRAgAB/wMAAf8DAAH/AZECAAH/Ab8BkQEA + Af8B2AG+AY4B/wHcAcoBqAH/Ac8BvgGyAf8BywLYAf8BAAGBAQAB/wEAAYIBiQH/AwAB/wMAAf8DAAH/ + AwAB/wHGAcQBwwH/A9YB/wHjAd4B1gH/Ad8B1gHHAf8B3gHOAbIB/wHeAcYBlQH/AcMBsgGUAf8DAAH/ + AwAB/wGxAYEBAAH/AY4CAAH/AwAB/wMAAf8DAAH/AwAB/wGGAQABgAX/Af4D/wHzAaYBkAH/AfoBlAEA + Af8B/gGtAZQC/wGPAQAB/wHIAgAB/wMAAf8DAAH/AwAB/wEAAb8B1QH/AQABvwHLAf8DAAH/AwAB/wMA + Af8BvAK5Bf8B/gP/AfMBpgGQAf8B+gGUAQAB/wH+Aa0BlAL/AY8BAAH/AcgCAAH/AwAB/wMAAf8DAAH/ + AQABvQHTAf8BAAHKAdcB/wMAAf8DAAH/AwAB/wGnAqUF/wGEAgAB/wMAAf8DAAH/AwAB/wGVAgAB/wG6 + AZkBAAH/AaIBkQGBAf8DAAH/AewB8AHtAf8BAAHIAaoB/wEAAbIBAAH/AwAB/wMAAf8DAAH/AwAB/wHG + AcMBwgH/AfYB9QHwAf8B6QHlAdkB/wHmAd8BzQH/AdwB0QG+Af8BoAGaAZYB/wMAAf8DAAH/AwAB/wMA + Af8CAAGAAf8DAAH/AwAB/wEAAeoBkgH/AQABiQEAAf8DAAH/AfQB8QHuBf8B9AHPAcMB/wH7AYYBAAL/ + Aa8BlQL/AZUBAAH/AfwCAAH/AdACAAH/AbwBnwGbAf8BAAG+AbcB/wEAAawBhgH/AQABvQGHAf8BAAHL + AZcB/wEAAZ4BAAH/AQABmgGGAf8B7gHtAe4J/wH0Ac8BwwH/AfsBhgEAAv8BrwGVAv8BlQEAAf8B/AIA + Af8B0AIAAf8BvAGfAZsB/wEAAb4BtwH/AQABrAGGAf8BAAG8AYYB/wEAAc0BmQH/AQABnwEAAf8BAAGV + AYAB/wLuAe8F/wGRAYABAAH/AwAB/wMAAf8DAAH/AgABtwH/AgABqQH/AQABmgHUAf8BAAGGAZ4B/wGj + AcoBtgH/AcUB5wHcAf8BAAGpAQAB/wEAAYEBAAH/AwAB/wMAAf8DAAH/AtUB1AH/Av0B+AH/AekB6AHf + Af8B4AHeAdQB/wGuAakBnwH/ApsBogH/AZoBpQHGAf8BiwGpAd8B/wMAAf8CAAGFAf8BAAGNAv8CAAHP + Af8DAAH/AQAB3AGBAf8BAAG9AYEB/wMAAf8BsQGyAbAD/wH+Af8B9gH5AfgB/wHLAbQBtwH/AeQBsgGm + Af8B+AGsAZIB/wH1AaIBhQH/AcwBpgGuAf8BsAG8AdkB/wEAAY0BAAH/AQABiAEAAf8BAAG4AQAB/wEA + AdUBlAH/AQAB5AGZAf8BAAGqAQAB/wG2AcQBvwf/Af4B/wH2AfkB+AH/AcsBtAG3Af8B5AGyAaYB/wH4 + AawBkgH/AfUBogGFAf8BzAGmAa4B/wGwAbwB2QH/AQABjQEAAf8BAAGIAQAB/wEAAbgBAAH/AQAB1AGT + Af8BAAHkAZgB/wEAAaoBAAH/AbYBxAG/Bf8BugGyAagB/wMAAf8DAAH/AYgCAAH/AgAB3AH/AgAB7QH/ + AQABnwH0Af8BAAGCAcYB/wEAAYQBAAH/AbMB6wHUAf8BAAGrAYsB/wMAAf8DAAH/AwAB/wMAAf8B8AHx + AfID/wH9Af8B5QHoAeYB/wG8AcABvgH/AcQBzwHWAf8BsgHOAesB/wGaAbwB3AH/AYIBswHxAf8BAAGF + AawB/wMAAf8BAAGCAeoB/wEAAYMB9wH/AwAB/wMAAf8DAAH/AwAB/wHXAtUF/wH8Af8B+wH/AQABmwH0 + Af8BAAGPAegB/wEAAacB5AH/AQABkgHpAf8CAAHVAf8CAAG8Af8BAAGoAZEB/wMAAf8BAAGsAQAB/wEA + AcoBjAH/AQAB3gGaAf8BAAG9AQAB/wEAAaoBlgL/AfwG/wH8Af8B+wH/AQABmwH0Af8BAAGPAegB/wEA + AacB5AH/AQABkgHpAf8CAAHVAf8CAAG8Af8BAAGoAZEB/wMAAf8BAAGsAQAB/wEAAcoBjAH/AQAB3gGa + Af8BAAG9AQAB/wEAAaoBlgL/AfwC/wHwAe8B7AH/AwAB/wMAAf8BgAIAAf8BqwGsAd0B/wIAAdMB/wIA + AeEB/wIAAd0B/wMAAf8BAAGOAQAB/wHOAcoBxwH/AwAB/wMAAf8DAAH/AasBowGfAf8B/gP/Af0D/wHq + AfEB8wH/AdUB4AHmAf8B0AHeAeYB/wG2AdIB6QH/AaUBwQHfAf8BkAGoAcYB/wMAAf8DAAH/AwAB/wMA + Af8DAAH/AwAB/wMAAf8B6AHiAegF/wH+Af8B/gP/AfsB/wGNAbkB+AH/AQABgwH+Af8BAAGWAv8CAAL/ + AgAB5AH/AgABuQH/AYQBrAGvAf8DAAH/AQABoQEAAf8BAAHCAYMB/wEAAdoBmQH/AQABzgGEAf8BAAGg + AQAB/wHzAewB8AH/Af4B/wH+A/8B+wH/AY0BuQH4Af8BAAGDAf4B/wEAAZYC/wIAAv8CAAHkAf8CAAG5 + Af8BhAGsAa8B/wMAAf8BAAGhAQAB/wEAAcIBgwH/AQAB2gGZAf8BAAHOAYQB/wEAAaABAAH/AfMB7AHw + Bf8BtQGsAaQB/wMAAf8DAAH/AewB6gHkAf8B9AHwAe4B/wHuAeoB6AH/Ae4B6wHpAf8B7gLrAf8B6wLl + Af8B8gLxAf8BtgGtAaoB/wMAAf8DAAH/AfAC8QH/Af4B/wH+Af8C/gL/AfoB/gL/Ad4B6wHyAf8B0gHh + AecB/wHOAdUB3QH/AZ0BngGjAf8DAAH/AY4BjwGKAf8CqgGnAf8BrAGpAaUB/wGhAaIBmgH/AbgCuwH/ + AegB5wHsCf8B/AH/Af4B/wH+Bf8B/QH/AdIB4wH5Af8CAAH4Af8BAAGdAf4B/wIAAv8CAAHvAf8CAAG+ + Af8BAAGTAb4B/wEAAYwBAAH/AQABiwEAAf8BAAG5AQAB/wEAAdQBnAH/AQAB2QGSAf8BAAGeAQAB/wHK + AdEB0AH/Af4F/wH9Af8B0gHjAfkB/wIAAfgB/wEAAZ0B/gH/AgAC/wIAAe8B/wIAAb4B/wEAAZMBvgH/ + AQABjAEAAf8BAAGLAQAB/wEAAbkBAAH/AQAB1AGcAf8BAAHZAZIB/wEAAZ4BAAH/AcoB0QHQAf8B/QH+ + Af0F/wGfAZIBhgH/AwAB/wGUAYUBAAH/AYkCAAH/AYUCAAH/AYUCAAH/AYcCAAH/AYgCAAH/AYkCAAH/ + AwAB/wMAAf8B4gHhAeAF/wH8Af4B/AL/Av4B/wH+A/8B6gHzAfcB/wHZAeIB5gH/AbEBrwGtAf8CugG5 + Af8D9C3/AfcC+wH/AQABjgH2Af8BAAGWAf4B/wEAAYoB/gH/AgAB+AH/AgABzAH/AgABuAH/AQABrAGT + Af8BAAG5AaIB/wHPAe8B5QH/AeMB9gHxAf8BygH2AecB/wGAAdIBtgH/AdEB5AHgCf8B9wL7Af8BAAGO + AfYB/wEAAZYB/gH/AQABigH+Af8CAAH4Af8CAAHMAf8CAAG4Af8BAAGsAZMB/wEAAbkBogH/Ac8B7wHl + Af8B4wH2AfEB/wHKAfYB5wH/AYAB0gG2Af8B0QHkAeAB/wH8Af0B/AH/Af0B/wH9Bf8BugGxAaoB/wMA + Af8DAAH/AYECAAH/AYQCAAH/AYMCAAH/AwAB/wMAAf8BlAGHAQAB/wLrAeoF/wH8Af4B/AH/AfwB/gH8 + A/8B/AX/AfoB/AH+Af8BxQHHAcoB/wPgCf8D/gH/A/4B/wP+Af8D/g3/A/4P/wH8Af8BhwG0AfEB/wEA + AY0B+AH/AQABjwH7Af8CAAH6Af8CAAHZAf8CAAHAAf8B9AH3AfYj/wH8Af8BhwG0AfEB/wEAAY0B+AH/ + AQABjwH7Af8CAAH6Af8CAAHZAf8CAAHAAf8B9AH3AfYZ/wH8Af4B/AH/AfwB/gH8Af8B/QH/Af0F/wLw + Ae4B/wHGAb8BuAH/AaoBngGVAf8BogGUAYsB/wGlAZgBkAH/AbgBrgGmAf8B3wHcAdcJ/wH8Af4B/AH/ + AfwB/gH8Af8B/AH+AfwD/wH6Av8B/gH7Av8C/QH/AfwB+gH7Cf8D/hn/A/4B/wP9Af8D/Qn/Af0B/gH9 + Af8B+AH7AfoB/wHVAecB+QH/AbQB0gH3Af8BmQG/AfYB/wG4AdAB9AH/AfkC+wn/Af4H/wH+A/8B/g// + Af0B/gH9Af8B+AH7AfoB/wHVAecB+QH/AbQB0gH3Af8BmQG/AfYB/wG4AdAB9AH/AfkC+wn/Af4H/wH+ + A/8B/gf/CAADFQEdAyMBNAMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDIwEz + AxUBHRQAAVkCZAHsAUgCYgH2AUgCYgH2AUgCYgH2AUgCYgH2AUgCYgH2AUgCYgH2AUgCYgH2AUgCYgH2 + AUgCYgH2AVkCWwHDQAAQ/wH4AfoB/gH/AeAB4QHkAf8BzgHJAcAB/wHFAb4BrQH/AcEBuwGtAf8BxQHC + Ab8B/wHVAdgB3QH/AfEB8wH3Ef8IAAMjATQDWQH1A6gB/QP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8 + Af8D/AH/A6gB/QNfAfMDIwEzFAABWgJhAeQB3QHsAfYB/wG9Ae4B+QH/AawB6gH4Af8BqwHqAfgB/wGr + AeoB+AH/AasB6gH4Af8BrQHqAfgB/wHUAfMB+wH/AaQByAHkAf8BVAJWAasEAANKAYoDWwHDA10B8ANd + AfADXQHwA10B8ANdAfADXQHwA10B8ANdAfADXQHwA10B8ANdAfADTAGQBAAM/wHmAecB6gH/AcABqgGQ + Af8BugGUAQAB/wHFAZ4BAAH/AcsBpQEAAf8ByQGjAQAB/wG/AZkBAAH/Aa0BjgEAAf8BqwGgAZUB/wHV + AdkB3g3/BwABAQMkATYDfwH+A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wOo + Af0DJAE2A0oBigNbAcMDXQHwA10B8ANdAfADYgH2AY4BwgHhAf8BlwHoAfkB/wEAAdwB9gH/AQAB2wH1 + Af8BAAGIAcIB/wEAAdsB9QH/AQAB3gH2Af8BsQHnAfYB/wFYAmIB6QMdASoEAANhAeEB8QHvAe0B/wH3 + AfMB8QH/AfgB9AHxAf8B+AH0AfAB/wH3AfQB8AH/AfcB8wHwAf8B9wHzAe8B/wH3AfMB7wH/AfcB8wHv + Af8B9wHzAe8B/wH4AfMB7wH/AfIB7wHrAf8DYgHvBAAI/wHfAdsB2QH/Aa8BgAEAAf8BtgIAAf8BxQGT + AQAB/wHLAaQBAAH/AcwBpAEAAf8ByQGfAQAB/wHFAZkBAAH/AcABiwEAAf8BsAIAAf8BnAGAAQAB/wHQ + AdIB1wH/A/0F/wNKAYoDWwHDA18B8wHHAZ8BhAH/AcQBmQEAAf8BxwGfAYQB/wHHAZ4BhAH/AccBngGE + Af8BxQGfAYQB/wHWAb0BrgH/A/sB/wP7Af8D+wH/A/sB/wP8Af8DJAE2A2EB4QHxAe8B7QH/AfcB8wHx + Af8B+AH0AfEB/wH4AfQB8AH/AfMB8gHvAf8BAAGvAdYB/wGrAdsB7wH/AQAB4AH3Af8BAAHaAfUB/wEA + AdoB9QH/AQAB2wH1Af8BkAHmAfgB/wGSAcEB4QH/AUUCRgF+CAADXQHwAfYB8QHtAf8BvwHcAcIB/wG/ + AdwBwgH/Ab8B3AHCAf8BvwHcAcIB/wG/AdwBwgH/Ab8B3AHCAf8BvwHcAcIB/wG/AdwBwgH/Ab8B3AHC + Af8BvwHcAcIB/wH3Ae0B5gH/A10B8AQABP8C6QHoAf8BogIAAf8BpwIAAf8BtQIAAf8BuwGKAQAB/wG2 + AY0BAAH/AaEBgwEAAf8CgQEAAf8BggIAAf8BnAIAAf8BrgIAAf8BpgIAAf8BkwIAAf8B1QHZAd0F/wNh + AeEB8AHuAewB/wH4AfQB8QH/AfgB9AHwAf8B9wH0AfAB/wH3AfMB7wH/AfcB8wHvAf8B9wHzAe8B/wHy + Ae4B6gH/AccBnwGGAf8D+gH/A/oB/wP6Af8D+gH/A/wB/wMkATYDXQHwAfYB8QHtAf8BvwHcAcIB/wG/ + AdwBwgH/Ab8B3AHCAf8BvwHcAcIB/wGeAc0BxwH/AQABvQHfAf8BogHqAfkB/wEAAdwB9gH/AQABhwHC + Af8BAAHhAfcB/wG2Ad4B8AH/AUABlwGoAf0DCgENCAADXQHwAfcB8QHtAf8BvwHcAcIB/wG/AdwBwgH/ + Ab8B3AHCAf8BrwHTAcUB/wGcAcgByQH/AQABrwHRAf8BugHZAcMB/wG/AdwBwgH/Ab8B3AHCAf8BvwHc + AcIB/wH2Ae0B5gH/A10B8AQAAf4D/wGqAYsBAAH/AYUCAAH/AZICAAH/AZECAAH/AZYCAAH/AYQCAAH/ + AQABpgHUAf8BAAGrAfkB/wEAAZYB9wH/AgABsQH/AZgCAAH/AaMCAAH/AYsCAAH/AaABlwGTAf8B8wH1 + AfcB/wJ/AXgB/gH2AfEB7QH/AQABogEAAf8BAAGdAQAB/wEAAZcBAAH/AQABkQEAAf8BAAGLAQAB/wEA + AYYBAAH/AfcB7QHmAf8BxQGaAQAB/wP6Af8D+gH/A/gB/wP4Af8D/AH/AyQBNgNdAfAB9wHxAe0B/wG/ + AdwBwgH/Ab8B3AHCAf8BvwHcAcIB/wGvAdMBxQH/AZsByAHJAf8BAAGsAdQB/wGsAdkB7AH/AYIB4wH4 + Af8BAAGIAcIB/wGsAe0B+gH/AQABngHPAf8DWQH1DAADXQHwAfcB8QHsAf8BAAGqAQAB/wEAAagBAAH/ + AQABpgEAAf8CAAGaAf8BAAGfAdMB/wEAAZ8B0QH/AQABhgGvAf8BAAGaAQAB/wEAAZgBAAH/AQABlgEA + Af8B9gHuAeYB/wNdAfAEAAHmAuEB/wMAAf8DAAH/AZACAAH/AY8CAAH/AaUCAAH/AZQCAAH/AQABwgHh + Af8BAAHbAv8BAAHHAv8BAAGeAfEB/wMAAf8BlgIAAf8BhwIAAf8DAAH/AdsB3AHfAf8CfwF4Af4B9wHx + AewB/wHcAb4BngH/Ad4BvQGbAf8BAAGeAcwB/wIAAaEB/wHaAbcBkQH/AdYBsgGNAf8B9gHuAeYB/wHF + AZsBAAH/A/sB/wP5Af8D+QH/A/gB/wP8Af8DJAE2A10B8AH3AfEB7AH/AQABqgEAAf8BAAGoAQAB/wEA + AaYBAAH/AgABmgH/AQABnwHTAf8BAAGiAdIB/wEAAawB1AH/AbQB6wH4Af8BjgHmAfgB/wG1Ad0B7gH/ + AQABvAHZAf8DXQHwDAADXQHwAfcB8gHtAf8B6AG9AaEB/wHnAbsBnwH/AdABswGSAf8BAAGCAQAB/wEA + AY4BhgH/AQABiwGHAf8BAAGDAYAB/wHHAaYBggH/AeABrgGOAf8B3gGsAYsB/wH2Ae4B5gH/A10B8AQA + AcABsgGrAf8DAAH/AwAB/wGTAgAB/wGwAgAB/wHFAZ8BAAH/AcEBngEAAf8BAAGlAakB/wEAAfEC/wEA + AdcB9wH/AQABwwL/AwAB/wGHAgAB/wMAAf8DAAH/AcABvwHAAf8DXQHwAfcB8wHuAf8B3wHHAa4B/wEA + AaYBAAH/AQABrQEAAf8BAAGoAQAB/wEAAZcBAAH/AdIBrgGJAf8B9gHuAecB/wHHAaABhQH/A/oB/wP5 + Af8D9gH/A/YB/wP8Af8DJAE2A10B8AH3AfIB7QH/AegBvQGhAf8B5wG7AZ8B/wHQAbMBkgH/AQABggEA + Af8BAAGOAYYB/wEAAYsBhwH/AQABnAGtAf8BpAHXAesB/wHcAfQB+wH/AQABrwHSAf8B0wHgAeMB/wNd + AfAMAANdAfAB9wHzAe4B/wHnAbsBnwH/AdEBtgGTAf8BnwGqAQAB/wEAAbIBhwH/AQABvQGKAf8BAAG7 + AYcB/wEAAasBAAH/AZEBkwEAAf8BxQGiAQAB/wHdAakBiAH/AfYB7gHnAf8DXQHwBAABpgGUAYkB/wMA + Af8DAAH/AYQCAAH/Ab8BjAEAAf8B1AG3AYIB/wHwAdsBtgH/AY0BkAGEAf8BAAGUAZMB/wEAAYIBAAH/ + AQABgQEAAf8DAAH/AwAB/wMAAf8DAAH/AbEBrAGrAf8DXQHwAfcB9AHvAf8B4QHPAbsB/wEAAcABiwH/ + AQABxwGZAf8BAAHCAY0B/wEAAaoBAAH/AcsBqgGJAf8B9gHuAecB/wHHAaABhQH/A/gB/wP2Af8D8wH/ + A/IB/wP8Af8DJAE2A10B8AH3AfMB7gH/AecBuwGfAf8B0QG2AZMB/wGfAaoBAAH/AQABsgGHAf8BAAG9 + AYoB/wEAAbsBhwH/AQABrAGAAf8BAAG0AcoB/wGrAdsB7QH/AZMBsAG2Af8B9gHuAecB/wNdAfAMAANd AfAB9wH0Ae8B/wHmAbkBnQH/AbYBswGHAf8BiAHCAZMB/wEAAcUBjwH/AQABvgGAAf8BAAG6AQAB/wEA - Ab0BAAH/AQABtQGdAf8BAAG1AcUB/wHRAakBjAH/AfYB7gHnAf8DXQHwDAADXQHwAfcB9QHwAf8B5QG4 - AZsB/wGhAbMBAAH/AQABzQGgAf8BAAHFAZAB/wEAAcABhwH/AQABvgGBAf8BAAG8AQAB/wEAAb0BhwH/ - AYkBkAEAAf8B2gGkAYEB/wH1Ae8B5wH/A10B8AQAAasBoAGWAf8DAAH/AwAB/wMAAf8CAAG3Af8CAAG2 - Af8BAAGVAcsB/wEAAZgBuAH/AQABqQGPAf8BAAHVAbEB/wEAAbYBhAH/AQABjQEAAf8DAAH/AwAB/wMA - Af8BwwHAAb8B/wNdAfAB9wH1AfQB/wHpAdsBzAH/AQABvAGQAf8BAAHKAZ8B/wEAAcQBlQH/AQABrgEA - Af8B3AHIAbEB/wH3AfAB6QH/AcgBnwGFAf8D8QH/A+wB/wPqAf8D5gH/A/wB/wMkATYDXQHwAfcB9QHw + Ab0BAAH/AQABsAEAAf8BowGWAQAB/wHcAacBhAH/AfYB7gHnAf8DXQHwBAABnAGMAYAB/wMAAf8DAAH/ + AwAB/wGHAgAB/wGyAZABAAH/AakBlwGEAf8DAAH/AQABsQGVAf8BAAHYAbYB/wEAAbwBiQH/AQABggEA + Af8DAAH/AwAB/wMAAf8BsAGrAagB/wJ/AXkB/gH3AfUB8AH/AecB2QHIAf8BAAHIAZwB/wEAAc8BqAH/ + AQABygGdAf8BAAG0AQAB/wHSAbcBmgH/AfUB7wHnAf8BxAGbAQAB/wP1Af8D8gH/A+8B/wPtAf8D/AH/ + AyQBNgNdAfAB9wH0Ae8B/wHmAbkBnQH/AbYBswGHAf8BiAHCAZMB/wEAAcUBjwH/AQABvgGAAf8BAAG6 + AQAB/wEAAb0BAAH/AQABtQGdAf8BAAG1AcUB/wHRAakBjAH/AfYB7gHnAf8DXQHwDAADXQHwAfcB9QHw Af8B5QG4AZsB/wGhAbMBAAH/AQABzQGgAf8BAAHFAZAB/wEAAcABhwH/AQABvgGBAf8BAAG8AQAB/wEA - Ab0BhwH/AYkBkAEAAf8B2gGkAYEB/wH1Ae8B5wH/A10B8AwAA10B8AH3AfUB8gH/AeQBtwGZAf8BowG2 + Ab0BhwH/AYkBkAEAAf8B2gGkAYEB/wH1Ae8B5wH/A10B8AQAAasBoAGWAf8DAAH/AwAB/wMAAf8CAAG3 + Af8CAAG2Af8BAAGVAcsB/wEAAZgBuAH/AQABqQGPAf8BAAHVAbEB/wEAAbYBhAH/AQABjQEAAf8DAAH/ + AwAB/wMAAf8BwwHAAb8B/wNdAfAB9wH1AfQB/wHpAdsBzAH/AQABvAGQAf8BAAHKAZ8B/wEAAcQBlQH/ + AQABrgEAAf8B3AHIAbEB/wH3AfAB6QH/AcgBnwGFAf8D8QH/A+wB/wPqAf8D5gH/A/wB/wMkATYDXQHw + AfcB9QHwAf8B5QG4AZsB/wGhAbMBAAH/AQABzQGgAf8BAAHFAZAB/wEAAcABhwH/AQABvgGBAf8BAAG8 + AQAB/wEAAb0BhwH/AYkBkAEAAf8B2gGkAYEB/wH1Ae8B5wH/A10B8AwAA10B8AH3AfUB8gH/AeQBtwGZ + Af8BowG2AYAB/wGCAdABpwH/AQAByQGYAf8BAAHGAZEB/wEAAcIBiwH/AQABwQGHAf8BAAHCAY4B/wGM + AZIBAAH/AdkBogEAAf8B9gHwAegB/wNdAfAEAAHVAc8ByQH/AwAB/wMAAf8DAAH/AgABlwH/AgAB9QH/ + AQABnAHxAf8BAAGUAdsB/wMAAf8BAAHFAZIB/wEAAZYBAAH/AwAB/wMAAf8DAAH/AwAB/wHlAeYB5wH/ + A2IB6QN/Af4B9wH1AfQB/wH3AfUB9AH/AfcB9QH0Af8B9wH1AfQB/wH3AfUB9AH/AfcB9QH0Af8B8gHu + AegB/wHFAZ8BhAH/A+sB/wP8Af8D/AH/A/wB/wP8Af8DJAE2A10B8AH3AfUB8gH/AeQBtwGZAf8BowG2 AYAB/wGCAdABpwH/AQAByQGYAf8BAAHGAZEB/wEAAcIBiwH/AQABwQGHAf8BAAHCAY4B/wGMAZIBAAH/ - AdkBogEAAf8B9gHwAegB/wNdAfAEAAHVAc8ByQH/AwAB/wMAAf8DAAH/AgABlwH/AgAB9QH/AQABnAHx - Af8BAAGUAdsB/wMAAf8BAAHFAZIB/wEAAZYBAAH/AwAB/wMAAf8DAAH/AwAB/wHlAeYB5wH/A2IB6QN/ - Af4B9wH1AfQB/wH3AfUB9AH/AfcB9QH0Af8B9wH1AfQB/wH3AfUB9AH/AfcB9QH0Af8B8gHuAegB/wHF - AZ8BhAH/A+sB/wP8Af8D/AH/A/wB/wP8Af8DJAE2A10B8AH3AfUB8gH/AeQBtwGZAf8BowG2AYAB/wGC - AdABpwH/AQAByQGYAf8BAAHGAZEB/wEAAcIBiwH/AQABwQGHAf8BAAHCAY4B/wGMAZIBAAH/AdkBogEA - Af8B9gHwAegB/wNdAfAMAANdAfAB9wH1AfQB/wHjAbUBlwH/AbgBtwGHAf8BkwHLAaEB/wEAAdIBqAH/ - AQABywGbAf8BAAHIAZcB/wEAAckBmAH/AYMBuwGLAf8BpQGZAQAB/wHXAZ8BAAH/AfcB8AHpAf8DXQHw - BAAD/AH/AwAB/wMAAf8DAAH/AwAB/wIAAd4B/wIAAeIB/wIAAe4B/wMAAf8DAAH/AwAB/wMAAf8DAAH/ - AwAB/wGVAYsBggH/Af0B/gL/A0oBjQNfAegDXwHzAcYBmwEAAf8BwwGWAQAB/wHGAZoBAAH/AcYBmgEA - Af8BxgGaAQAB/wHEAZsBAAH/AdEBuAGpAf8D6gH/A/wB/wP2Af8D9AH/A00BkQMXASADXQHwAfcB9QH0 - Af8B4wG1AZcB/wG4AbcBhwH/AZMBywGhAf8BAAHSAagB/wEAAcsBmwH/AQAByAGXAf8BAAHJAZgB/wGD - AbsBiwH/AaUBmQEAAf8B1wGfAQAB/wH3AfAB6QH/A10B8AwAA10B8AH0AfMB8gH/AeMBtAGVAf8B0AG0 - AY0B/wGpAbUBgAH/AZMBzAGhAf8BhAHRAaoB/wGCAdABpgH/AYsBwgGUAf8BmgGeAQAB/wHDAZ0BAAH/ - AdYBnQEAAf8B9wHyAesB/wNdAfAEAAT/AdEBywHGAf8DAAH/AwAB/wMAAf8DAAH/AgABmwH/AgABjAH/ - AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AucB6AX/CAADJAE2A6gB/QP0Af8D9QH/A/UB/wP1Af8D8QH/ - A+8B/wPpAf8D/AH/A+cB/wNNAZEDFwEgAwEBAgNdAfAB9AHzAfIB/wHjAbQBlQH/AdABtAGNAf8BqQG1 - AYAB/wGTAcwBoQH/AYQB0QGqAf8BggHQAaYB/wGLAcIBlAH/AZoBngEAAf8BwwGdAQAB/wHWAZ0BAAH/ - AfcB8gHrAf8DXQHwDAADYgHpA38B/gL0AfMB/wH3AfUB9AH/AfcB9QH0Af8B9wH1AfQB/wH3AfUB9AH/ - AfcB9QH0Af8B9wH1AfQB/wH3AfUB9AH/AfcB9QH0Af8B9wHzAewB/wHyAe8B6QH/A2IB7wQACP8BugGw - AakB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8B1wHWAdQJ/wgAAyMBMwNd - AfADqAH9A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/gB/wNNAZEDFwEgAwEBAgQAA2IB6QN/Af4C9AHz - Af8B9wH1AfQB/wH3AfUB9AH/AfcB9QH0Af8B9wH1AfQB/wH3AfUB9AH/AfcB9QH0Af8B9wH1AfQB/wH3 - AfUB9AH/AfcB8wHsAf8B8gHvAekB/wNiAe8MAANKAY0DXwHoA10B8ANdAfADXQHwA10B8ANdAfADXQHw - A10B8ANdAfADXQHwA10B8ANdAfADTAGPBAAM/wHPAcgBwgH/AYECAAH/AwAB/wGCAgAB/wGIAgAB/wGG - AgAB/wMAAf8DAAH/AZABgQEAAf8B5gHlAeQN/wgAAxQBHAMjATMDJAE2AyQBNgMkATYDJAE2AyQBNgMk - ATYDJAE2AyQBNgMXASADAQECCAADSgGNA18B6ANdAfADXQHwA10B8ANdAfADXQHwA10B8ANdAfADXQHw - A10B8ANdAfADXQHwA0wBj0gAEP8C/AH7Af8B0gHNAcYB/wGzAakBoAH/AacBmgGRAf8BqQGdAZQB/wG7 - AbEBqgH/Ad0B2wHYJf8D7gH/A9IB/wPmAf8D/AH/A/sB/wPjAf8D0gH/A/AV/wHSAcUBvgH/AYECAAH/ - AYsCAAH/AYgCAAH/AYsCAAH/AZICAAH/AZsCAAH/AZwCAAH/AZ0CAAH/AZ8CAAH/AaACAAH/AaECAAH/ - AaECAAH/AZACAAH/A84B/wgAA70B/wOMAf8DggH/A4wB/wOZAf8BrgKsAf8DsgH/A6QB/wOMAf8DjAH/ - A5kB/wO9Af8QAAMVAR0DIwE0AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMj - ATMDFQEdDP8D7QH/A58B/wOQAf8DmAH/A6kB/wOnAf8DlwH/A5AB/wOiAf8D7BH/Ac8BwgG6Af8BmQIA - Af8BpwIAAf8BmQIAAf8BkwIAAf8BpgIAAf8BuwIAAf8BxQGGAQAB/wHOAYwBAAH/AdABjwEAAf8B0wGQ - AQAB/wHWAZMBAAH/AdsBlQEAAf8BqgIAAf8DzQH/BAADvQH/A5kB/wGuAqwB/wOMAf8DAAH/AwAB/wMA - Af8DAAH/AZsCAAH/AZ4CgQH/AYICAAH/AwAB/wMAAf8BrgKsAf8MAAMjATQDWQH1A6gB/QP8Af8D/AH/ - A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A6gB/QNfAfMDIwEzCP8D/AH/A64B/wOTAf8DmQH/A5gB/wOW - Af8DlgH/A5gB/wOZAf8DkwH/A60B/wP7Df8B0AHAAbgB/wGRAgAB/wHCAakBnAH/AcgBuwGzAf8BhgIA - Af8DAAH/AZICAAH/Aa8CAAH/Ab0BgQEAAf8BxgGHAQAB/wHLAYsBAAH/Ac0BjQEAAf8B1AGRAQAB/wGo - AgAB/wPNAf8EAAOkAf8B1wHVAdQC/wH9AfIB/wHiAfIB1gH/AfkB8wHhAf8B7gHBAZ0B/wHGAYcBAAL/ - Aa0BrAL/AswC/wLZAv8C6gH/AdYCxAH/AwAB/wMAAf8DvQH/BwABAQMkATYDfwH+A/wB/wP8Af8D/AH/ - A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wOoAf0DJAE2CP8D0QH/A5IB/wOZAf8DmQH/A5kB/wOZ - Af8DmQH/A5kB/wOZAf8DmQH/A5IB/wPTDf8B0AHAAbgB/wGRAgAB/wHRAcQBvQH/AeUB4AHeAf8B3QHV - AdIB/wGdAYIBAAH/AwAB/wGBAgAB/wGdAgAB/wGyAgAB/wHBAYMBAAH/AckBigEAAf8B0gGPAQAB/wGn - AgAB/wPNAf8EAAOyAf8B1ALPAf8B8AHrAdMB/wEAAbEBAAH/AQABqgEAAf8CmQEAAv8BnQGkAv8BnQGk - Av8BrQGsAv8BvgG9Av8C6gX/AdYCxAH/AwAB/wOZAf8HAAEBAyQBNgP8Af8D/AH/A/wB/wP8Af8D/AH/ - A/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/A/wB/wMkATYE/wP7Af8DqQH/A5YB/wOZAf8DmQH/A5kB/wOZ - Af8DmQH/A5kB/wOZAf8DmQH/A5MB/wPGDf8B0AHBAbkB/wGSAgAB/wGnAgAB/wHdAdcB0wH/AdsB1AHR - Af8B9QHzAfEB/wHHAboBtAH/AYACAAH/AwAB/wGKAgAB/wGoAgAB/wG+AYIBAAH/Ac4BjAEAAf8BpQIA - Af8DzQH/BAADvQH/AekB5QHhAf8B8QHlAckB/wEAAcMBAAH/AQABoAEAAf8BnwGdAQAC/wG3Ab0C/wGd - AaQC/wGzAbQB/wH8AbsB0AL/AfMB9wn/AYgCAAH/AwAB/wQAAzgBXgNRAaAB7AH4AfwB/wHsAfgB+wH/ - AYUB1wH3Af8BqgHiAfgB/wP7Af8D+wH/A/oB/wP6Af8D+gH/A/oB/wP6Af8D/AH/AyQBNgT/A+kB/wOX - Af8DmQH/A5kB/wOZAf8DmQH/A5kB/wOZAf8DmQH/A5kB/wOVAf8DxQH/A/wN/wHQAcEBuQH/AZYCAAH/ - AaICAAH/AbMBkwGCAf8B7QLqAf8B1gHOAckB/wH5AfgB9wH/AfMB8AHvAf8BxAG3AbAB/wGRAgAB/wGA - AgAB/wGnAgAB/wHEAYQBAAH/AaQCAAH/Ac0CzgH/BAACxAHFAf8B6QHlAeEB/wHzAeEBvgH/AQAB5gEA - Af8BAAGxAQAB/wHIAa0BnQL/AswC/wLMAf8B5gHHAdEB/wHHAbABrwH/AfEB4AHkAf8B+AH1AfQB/wH4 - AfUB9AH/AcEBqAGmAf8DAAH/BAADLwFJAQABzwH3Af8BAAHHAfUB/wEAAcMB8wH/AQABwwH0Af8BvAHo - AfkB/wP7Af8D+wH/A/sB/wP6Af8D+gH/A/gB/wP4Af8D/AH/AyQBNgT/A9wB/wOTAf8DmQH/A5kB/wOZ - Af8DmQH/A5kB/wOZAf8DmQH/A5cB/wOiAf8D+BH/Ac0BvgG4Af8BkwIAAf8BrAIAAf8BmwIAAf8B0AHB - AbkB/wH3AfUB9AH/AdMByQHFAf8B+gL5Bf8B3QHWAdIB/wMAAf8BhAIAAf8BrwIAAf8BlgIAAf8BywHN - AcwB/wQAA8wB/wHsAukB/wH2AdoBswH/AQAB4AG1Af8BAAGmAcoB/wHGAaUBuAL/AswC/wHdAd4B/wHk - AdUB3wH/AboBowGaAf8B7QHLAcwC/wLMAv8CzAH/Ac8CpgH/AwAB/wQAAyABLgEAAdAB9wH/AYMB3gH5 - Af8BAAHZAfkB/wEAAcEB9AH/AdQB8AH6Af8D/AH/A/wB/wP8Af8D+wH/A/kB/wP5Af8D+AH/A/wB/wMk - ATYE/wPaAf8DlAH/A5kB/wOZAf8DmQH/A5kB/wOZAf8DmQH/A5kB/wOUAf8DsRX/Ac0BvgG4Af8BkQIA - Af8BrAIAAf8BowIAAf8BogIAAf8B8wHyAfEB/wH1AfMB8gH/AcABtwG0Af8B2QHUAdEF/wHPAcUBvwH/ - AwAB/wGJAgAB/wGJAgAB/wHGAccByAH/BAABzQHHAb0B/wH2AdoBswH/AfUB0gGvAf8BAAGtAfUB/wEA - AZYB+wH/AacBoQHDAv8B8gH2Av8B8gH2Av8B8wL/AfIBvgHcAf8B/AG7AdAC/wGdAaQC/wGzAbQB/wHC - AowB/wOZAf8DAgEDAVUCVgGxAQAB2gH4Af8BjAHgAfoB/wGDAd0B+QH/AQAB0AH2Af8BAAHPAfYB/wH5 - AfsB/AH/A/wB/wP8Af8D+gH/A/kB/wP2Af8D9gH/A/wB/wMkATYE/wPjAf8DlQH/A5kB/wOZAf8DmQH/ - A5kB/wOZAf8DmQH/A5kB/wOWAf8DpwH/A/sR/wHNAb8BuAH/AY8CAAH/AakCAAH/AakCAAH/AZoCAAH/ - AckBuAGvBf8B1gHNAckB/wHFAbgBsQn/AcIBtQGuAf8DAAH/AwAB/wG/Ar4B/wQAAdEBpwEAAf8B8gGr - AQAC/wHSAaYB/wH4AcQBnQH/Ad0BwgGjAf8BywGmAZ4B/wHpAegB8Ab/AvAC/wLMAv8BswG0Av8BnQGk - Av8BnQGkAf8BmwIAAf8DzAH/A04BmQEAAdgB+QH/AQAB2gH4Af8BiwHgAfoB/wGCAd0B+QH/AQABzgH3 - Af8BAAHDAfQB/wEAAdMB9wH/A/wB/wP7Af8D+AH/A/YB/wPzAf8D8gH/A/wB/wMkATYE/wP4Af8DogH/ - A5UB/wOZAf8DmQH/A5kB/wOZAf8DmQH/A5kB/wOZAf8DlQH/A84B/wP9Df8BywG9AbYB/wGNAgAB/wGn - AgAB/wGmAgAB/wGiAgAB/wGhAgAB/wHaAdEByxX/AbUBogGYAf8DAAH/AbcBtAGyAf8EAAHHAaoBiQH/ - AeMBtwGIAf8B+gHEAQAB/wH8AbYBAAL/AcABAAH/AfwBtgEAAf8B0gGkAYcB/wHsAukC/wHyAfYC/wHd - Ad4C/wLMAv8BswG0Af8BswGDAYEB/wHCArwB/wQAAwcBCQMqAUADUAGeAQAB1wH4Af8BAAHSAfgB/wGL - Ad4B+AH/AcUB7QH6Af8B9AH6AfwB/wP7Af8D+AH/A/UB/wPyAf8D7wH/A+0B/wP8Af8DJAE2CP8D3wH/ - A5gB/wOTAf8DlQH/A5QB/wOWAf8DlQH/A5UB/wOWAf8DkgH/A5kB/wPsDf8BygG8AbUB/wGLAgAB/wGl - AgAB/wGkAgAB/wGlAgAB/wGhAgAB/wGaAgAB/wHTAcYBwAb/Af4C/wH4AfcB9gH/AfUC9gH/AeQB3gHb - Af8DAAH/AbIBrgGsAf8EAAO9Af8B2AHRAcYC/wHHAQAB/wH7AcsBggH/AfoBxAEAAv8BwAEAAf8B8gGr - AQAB/wHVAZkBAAH/AeIBtgGYAf8B5wG+AawB/wG+ApgB/wGeAoEB/wHCArwB/w8AAQEDJAE2AQAB2QH3 - Af8BAAHWAfcB/wP8Af8D/AH/A/sB/wP4Af8D9QH/A/EB/wPsAf8D6gH/A+YB/wP8Af8DJAE2DP8D3gH/ - A7IB/wOtAf8DwQH/A90B/wPUAf8DtQH/A6YB/wOxAf8D3wH/A/4N/wHKAb0BtgH/AYkCAAH/AaICAAH/ - AaICAAH/AaUCAAH/AaUCAAH/AaECAAH/AZgCAAH/AcgBuAGwAf8B8ALuAf8B2gHTAc8B/wHIAbwBtgH/ - AcYBtwGvAf8BhAIAAf8BuAGzAbIB/wQAAdcB1QHUAf8B7QHlAd8B/wHjAdABxwH/AekB6AHwAf8B7ALp - Af8B6QHlAeEB/wHmAeIB2QH/AecB1AG0Af8B4QG5AYEB/wHgAbEBAAH/AYQCAAH/A5kB/xMAAQEDJAE2 - AdAB8QH7Af8BywHuAfgB/wP5Af8D+QH/A/cB/wP2Af8D8gH/A+sB/wP8Af8D/AH/A/wB/wP8Af8DJAE2 - HP8D5AH/A6sB/wPfAf8D+hn/AcoBvQG2Af8BiAIAAf8BoQIAAf8BoAIAAf8BowIAAf8BpAIAAf8BpgIA - Af8BnwIAAf8BlAIAAf8BqwGTAYYB/wGsAZQBiAH/AZcCAAH/AZsCAAH/AwAB/wHKAckByAH/BAAB2QHc - Ad8B/wHYAcQBuAH/AbUBgQEAAf8BswGDAYEB/wHCAowB/wHFAZ4BnwH/Ac8CpgH/AdQCzwH/AeoB8QH4 - Af8B4gHkAekB/wOCAf8DmQH/EwABAQMkATYD/AH/A/cB/wP5Af8D9wH/A/cB/wPzAf8D8AH/A+oB/wP8 - Af8D9gH/A/QB/wNNAZEDFwEgHP8D8QH/A5YB/wOYAf8D7Bn/AcoBvQG2Af8BiAIAAf8BnwIAAf8BnwIA - Af8BoAIAAf8BowIAAf8BpAIAAf8BoQIAAf8BmAIAAf8BkgIAAf8BhAIAAf8DAAH/AwAB/wGHAgAB/wLw - Ae8B/wgAAf8BzAGZAf8B/QHFAYsB/wH4AcQBnQH/AfgBxAGdAf8B7AG3AaMB/wHnAbABpQH/AewBxAHA - Av8C6gL/AuoB/wMAAf8DmQH/FAADJAE2A6gB/QP0Af8D9QH/A/UB/wP1Af8D8QH/A+8B/wPpAf8D/AH/ - A+cB/wNNAZEDFwEgAwEBAiD/A9UB/wOSAf8Dvxn/AcoBvQG2Af8BjAIAAf8BpAIAAf8BogIAAf8BowIA - Af8BpQIAAf8BpwIAAf8BpQIAAf8BngIAAf8BmAIAAf8BigIAAf8DAAH/AwAB/wHVAc0BygX/BAAB8wHK - AZUB/wH9AcUBiwL/AdIBpgL/AdIBpgL/AdIBpgL/AdABuwL/AdQBxwH/Ac0BswGwAf8B5gHiAdkF/wLE - AcUB/wO9Af8UAAMjATMDXQHwA6gB/QP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP4Af8DTQGRAxcBIAMB - AQIEACT/A+cB/wPcAf8D/gH/A/4R/wHMAb8BuQH/AwAB/wGBAgAB/wGAAgAB/wGAAgAB/wGBAgAB/wGC - AgAB/wGCAgAB/wGAAgAB/wMAAf8DAAH/AY4CAAH/Ad8B1wHUCf8MAAHcAdgB1AH/AdQCzwH/AdQCzwH/ - AdgB0QHGAf8BzgK9Af8DzAH/JAADFAEcAyMBMwMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2 - AxcBIAMBAQIMAANbAcQDkQH/A5EB/wORAf8DkQH/A5EB/wORAf8DkQH/A5EB/wORAf8DkQH/A5EB/wOR - Af8DXwHgCAADFQEdAyMBNAMkATYDJAE2AU4CXQHwAT4CXAH4AT4CXAH4AT4CXAH4AT4CXAH4AT4CXAH4 - AT4CXAH4AT4CXAH4AT4CXAH4AVECbQH3AVkCWwHDBAADFQEdAyYBOQNYAbwDXAHMA1wBzANcAcwDWwHE - AyQBNgMkATYDJAE2AyQBNgMkATYDIwEzAxUBHQgAAxUBHQMjATQDJAE2AyQBNgMkATYDJAE2AyQBNgMk - ATYDJAE2AyQBNgMkATYDJAE2AyMBMwMVAR0IAAOVAf8DvwH/A8MB/wPDAf8DwwH/A8MB/wPDAf8DwwH/ - A8MB/wPDAf8DxAH/A8UB/wPCAf8DlQH/CAADIwE0A1kB9QOoAf0D/AH/AQABnAHOAf8B3QHsAfYB/wG9 - Ae4B+QH/AawB6gH4Af8BqwHqAfgB/wGrAeoB+AH/AasB6gH4Af8BrQHqAfgB/wHUAfMB+wH/AaQByAHk - Af8BVAJWAasEAAMjATQDWQH1A38B/gPLAf8DyAH/A8UB/wOmAf8D/AH/A/wB/wP8Af8D/AH/A6gB/QNf - AfMDIwEzCAADIwE0A1kB9QOoAf0D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wOoAf0DXwHz - AyMBMwgAA7wB/wNkAfEDqAH9A/wB/wP8Af8D/AH/A/kB/wP2Af8D7AH/A9gB/wPgBf8D9wH/A8cB/wcA - AQEDJAE2A38B/gP8Af8D/AH/Aa0B0gHoAf8BjgHCAeEB/wGXAegB+QH/AQAB3AH2Af8BAAHbAfUB/wEA - AYgBwgH/AQAB2wH1Af8BAAHeAfYB/wGxAecB9gH/AVQCYQHuAx0BKgMAAQEDJAE2A38B/gO2Af8DuQH/ - A6MB/wOyAf8DoAH/A/wB/wP8Af8D/AH/A/wB/wP8Af8DqAH9AyQBNgcAAQEDJAE2A38B/gP8Af8D/AH/ - A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8DqAH9AyQBNggAA8kB/wOoAf0D+wH/A/sB/wP7 - Af8D+wH/A/gB/wPzAf8D6wH/A9sB/wP9Af8D4gX/A8wB/wcAAQEDJAE2A/wB/wP8Af8D/AH/AfgB+gH7 - Af8BAAGxAdgB/wGrAdsB7wH/AQAB4AH3Af8BAAHaAfUB/wEAAdoB9QH/AQAB2wH1Af8BkAHmAfgB/wGS - AcEB4QH/A04BmQMAAQEDAAEBAyQBNgP8Af8DqAH/A4oB/wPtAf8DkgH/A5wB/wP7Af8D+wH/A/sB/wP7 - Af8D+wH/A/wB/wMkATYHAAEBAyQBNgP8Af8D/AH/AwAB/wIAAYkB/wEAAYoBvgH/AQABqAHLAf8B4AHp - AfEB/wP7Af8D+wH/A/sB/wP7Af8D/AH/AyQBNgMAAQEDAAEBA8kB/wP8Af8D+wH/A/sB/wP7Af8DrgH/ - A/kB/wO+Af8D4AH/A90B/wP8Af8D/QH/A+AB/wPLAf8HAAEBAyQBNgP8Af8D/AH/A/wB/wP8Af8ByQHj - AfAB/wEAAb0B3wH/AaIB6gH5Af8BAAHcAfYB/wEAAYcBwgH/AQAB4QH3Af8BtgHeAfAB/wEAAaUB0gH/ - AyoBQAMAAQEDAAEBAyQBNgP8Af8DnwH/A5wB/wMAAf8DoQH/A6gB/wP6Af8D+gH/A/oB/wP6Af8D+gH/ - A/wB/wMkATYHAAEBAyQBNgP8Af8D/AH/AgABhQH/AZQBxwH5Af8BkQHJAfkB/wEAAYUByQH/AgABrgH/ - AdQB4gHuAf8D+gH/A/oB/wP6Af8D/AH/AyQBNgMAAQEDAAEBA8kB/wP8Af8D+wH/A/sB/wP7Af8DrgH/ - A/oB/wPoAf8DugH/A+AB/wPfAf8D3QH/A9sB/wPHAf8DAAEBAwABAQMkATYD/AH/A/wB/wP8Af8D/AH/ - AvoB+wH/AYwBxwHjAf8BrAHZAewB/wGCAeMB+AH/AQABiAHCAf8BrAHtAfoB/wEAAZ4BzwH/Ab8B3AHt - Af8DJAE2AwABAQMAAQEDJAE2A/wB/wO6Af8DAAH/A5UB/wOMAf8D0QH/A/sB/wP6Af8D+gH/A/gB/wP4 - Af8D/AH/AyQBNgcAAQEDJAE2A/wB/wP8Af8BAAGJAaoB/wHgAfIC/wEAAZoB2AH/AgABvgH/AQABmAHF - Af8BAAGOAccB/wHYAeYB8wH/A/gB/wP4Af8D/AH/AyQBNgMAAQEDAAEBA8kB/wP8Af8D+wH/A/wB/wP8 - Af8DrgH/A/oB/wP4Af8DvAH/A+UB/wP2Af8D8wH/A+8B/wPIAf8DAAEBAwABAQMkATYD/AH/A/wB/wP8 - Af8D/AH/A/wB/wHgAfAB9gH/AQABtAHaAf8BtAHrAfgB/wGOAeYB+AH/AbUB3QHuAf8BAAG/Ad4B/wH4 - AfoB+wH/AyQBNgMAAQEDAAEBAyQBNgP8Af8D/AH/A7AB/wOwAf8DtgH/A/wB/wP8Af8D+wH/A/kB/wP5 - Af8D+AH/A/wB/wMkATYHAAEBAyQBNgP8Af8D/AH/AaUBwwHXAf8BAAG2AdUB/wGQAbcB0QH/AQAByQHk - Af8BAAHfAfUB/wEAAdAB7QH/AQABnQHdAf8B3wHrAfUB/wP4Af8D/AH/AyQBNgMAAQEDAAEBA8kB/wP8 - Af8D/AH/A/wB/wPLAf8DrwH/A/sB/wP5Af8D6AH/A8IB/wP7Af8D+gH/A/gB/wPIAf8DAAEBAwABAQMk - ATYD/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8BqgHZAewB/wGkAdcB6wH/AdwB9AH7Af8BAAGzAdkB/wHT - AecB7wH/A/wB/wMkATYDAAEBAwABAQMkATYD/AH/A/wB/wO1Af8D7AH/A7cB/wP8Af8D/AH/A/oB/wP5 - Af8D9gH/A/YB/wP8Af8DJAE2BwABAQMkATYD/AH/A/wB/wP8Af8BsgHVAeUB/wEAAboB1wH/AcIB9gH9 - Af8BAAHfAfcB/wEAAeIB+AH/AQAB0wHwAf8BAAGYAdwB/wHeAekB8gH/A/wB/wMkATYDAAEBAwABAQPJ - Af8D/AH/A/wB/wP8Af8D9QH/A8sB/wPuAf8DygH/A8cB/wO4Bf8D/gH/A/wB/wPJAf8DAAEBAwABAQMk - ATYD/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8B8gH3AfkB/wEAAcQB4QH/AasB2wHtAf8BnQHSAeYB/wPy - Af8D/AH/AyQBNgMAAQEDAAEBAyQBNgP8Af8D/AH/A9UB/wPEAf8DtQH/A/wB/wP7Af8D+AH/A/YB/wPz - Af8D8gH/A/wB/wMkATYHAAEBAyQBNgP8Af8D/AH/A/wB/wP8Af8BrwHUAeUB/wEAAcsB5wH/AccB9wH9 - Af8BAAHcAfUB/wEAAeEB9wH/AQAB1AHxAf8BAAGaAd0B/wHUAeUB9QH/AyQBNgMAAQEDAAEBA8kB/wP8 - Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D+wH/A/cB/wP3Bf8D/AH/A8kB/wMAAQEDAAEBAyQBNgP8 - Af8D/AH/A/wB/wP8Af8D/AH/A/sB/wP4Af8BwwHjAe4B/wEAAcgB4gH/AeIB6wHtAf8D7QH/A/wB/wMk - ATYDAAEBAwABAQMkATYD/AH/A/wB/wOxAf8D6wH/A7MB/wP7Af8D+AH/A/UB/wPyAf8D7wH/A+0B/wP8 - Af8DJAE2BwABAQMkATYD/AH/A/wB/wP8Af8D/AH/A/wB/wG9AeUB8gH/AQAB0wHuAf8BxwH3Af0B/wEA - AdwB9QH/AQAB4gH3Af8BAAHWAfIB/wEAAaIB4gH/AzgBXAMAAQEDAAEBAgAB3AH/AgAB8wH/AgAB6QH/ - AgAB6AH/AgAB5wH/AgAB4wH/AgAB4QH/AgAB3wH/AgAB3QH/AgAB3AH/AgAB2wH/AgAB3AH/AgAB7QH/ - AgAB3AH/AwABAQMAAQEDJAE2A/wB/wP7Af8D/AH/A/wB/wP7Af8D+AH/A/UB/wPxAf8D7AH/A+oB/wPm - Af8D/AH/AyQBNgMAAQEDAAEBAyQBNgP8Af8D+wH/A9MB/wPBAf8DsQH/A/gB/wP1Af8D8QH/A+wB/wPq - Af8D5gH/A/wB/wMkATYHAAEBAyQBNgP8Af8D+wH/A/wB/wP8Af8D+wH/A/gB/wG6AeMB8AH/AQAB1AHu - Af8BxAH2Af0B/wEAAd0B9gH/AQABygHtAf8BAAGjAdcB/wFcAl0B8AMcAScDAAEBAgAB3AH/AgAB6wH/ - AgABvQH/AgABmAH/AgABvAH/AgAB3QH/AgAB3wH/AgAB3gH/AgAB1wH/AgABtQH/AgABkgH/AgABtAH/ - AgAB5gH/AgAB3AH/AwABAQMAAQEDJAE2A/wB/wP5Af8D+QH/A/kB/wP3Af8D9gH/A/IB/wPrAf8D/AH/ - A/wB/wP8Af8D/AH/AyQBNgMAAQEDAAEBAyQBNgP8Af8D+QH/A64B/wPnAf8DrwH/A/YB/wPyAf8D6wH/ - A/wB/wP8Af8D/AH/A/wB/wMkATYHAAEBAyQBNgP8Af8D+QH/A/kB/wP5Af8D9wH/A/YB/wPyAf8BqAHZ - AegB/wGBAdYB7gH/AbIB4wH5Af8BiwHAAecB/wGuAdMB9gH/AcQB4AH8Af8BZgJtAfcDAAEBAgAB3AH/ - AgAB2gH/AqEBrgH/A+AB/wKfAa4B/wIAAc4B/wIAAeEB/wIAAeEB/wIAAcwB/wKeAa4B/wPgAf8CngGu - Af8CAAHXAf8CAAHcAf8DAAEBAwABAQMkATYD/AH/A/cB/wP5Af8D9wH/A/cB/wPzAf8D8AH/A+oB/wP8 - Af8D9gH/A/QB/wNNAZEDFwEgBwABAQMkATYD/AH/A/cB/wPRAf8DvwH/A60B/wPzAf8D8AH/A+oB/wP8 - Af8D9gH/A/QB/wNNAZEDFwEgBwABAQMkATYD/AH/A/cB/wP5Af8D9wH/A/cB/wPzAf8D8AH/A+oB/wGv - AeQB8wH/AQABvgHnAf8BtAHSAfAB/wHlAfMC/wGsAdIB7wH/AVcCXwHoAwABAQIAAdwB/wIAAdIB/wLE - AdYB/wPjAf8CxAHVAf8CAAHQAf8CAAHtAf8CAAHtAf8CAAHPAf8CxQHWAf8D4wH/AsQB1gH/AgABzwH/ - AgAB3AH/AwABAQQAAyQBNgOoAf0D9AH/A/UB/wP1Af8D9QH/A/EB/wPvAf8D6QH/A/wB/wPnAf8DTQGR - AxcBIAMBAQIIAAMkATYDqAH9A/QB/wOtAf8D5AH/A6wB/wPxAf8D7wH/A+kB/wP8Af8D5wH/A00BkQMX - ASADAQECCAADJAE2A6gB/QP0Af8D9QH/A/UB/wP1Af8D8QH/A+8B/wPpAf8D/AH/AawB1QHkAf8BAAGl - AdgB/wGFAbEB2wH/AQABnQHQAf8DOAFeBgAB3AH/AgABxwH/ArUBywH/A+YB/wKzAckB/wIAAccB/wIA - AdwB/wIAAdwB/wIAAccB/wK4Ac4B/wPmAf8CtgHNAf8CAAHHAf8CAAHcAf8IAAMjATMDXQHwA6gB/QP8 - Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP4Af8DTQGRAxcBIAMBAQIMAAMjATMDXQHwA6gB/QPSAf8DqwH/ - A6sB/wP8Af8D/AH/A/wB/wP4Af8DTQGRAxcBIAMBAQIMAAMjATMDXQHwA6gB/QP8Af8D/AH/A/wB/wP8 - Af8D/AH/A/wB/wP4Af8DTQGRAxcBIAMBAQITAAEBAywBRANdAcoDLgFIAwMBBAMAAQEDAAEBAwMBBAMo - ATwDWQHHAywBRAMAAQEMAAMUARwDIwEzAyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDFwEg - AwEBAhAAAxQBHAMjATMDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMXASADAQECEAADFAEc - AyMBMwMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AxcBIAMBAQJcAAMyAVEBVQFXAVUBtwFa - AWEBWgHkAUIBWQFCAfUBQgFZAUIB9QFYAWEBWAHmAVcBWgFXAb0DOAFcFAADFQEdAyMBNAMkATYDJAE2 - AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDIwEzAxUBHWAAA18B8wEAAa8BzgH/AQABogHW - Af8BAAGcAdIB/wEAAaABwQH/AbYBvwHGAf8DBQEHEAADCgENA1YBtgEyAV8BMgH7AZsBxQGdAf8BswHC - AZ0B/wG9AcEBnAH/Ab4BwwGdAf8BsAHSAbEB/wEAAcABmgH/AysB/AFXAVkBVwG/AxEBFwwAAyMBNANZ - AfUDqAH9A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8DqAH9A18B8wMjATNEAAMFAQcQAAMf - AS0BvgHXAeEB/wEAAbUB/gH/AQABugL/AQABsgL/AQABpwL/AQABmwL/AQABmQH0Af8ByAHJAcoB/wwA - AwoBDQFYAVwBWAHRAQABtwGGAf8BrgHoAccB/wHAAdIBoAH/AcUBswGBAf8BygG0AQAB/wHMAa8BAAH/ - AbkBpwEAAf8BgAHMAZUB/wGgAdoBvAH/AQABqAEAAf8BXgFhAV4B2gMSARgHAAEBAyQBNgN/Af4D/AH/ - A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A6gB/QMkATZEAAHOAa8BhgH/AZoBgAEA - Af8BuAGuAaAB/wHHAb8BtAH/AcQBqwGEAf8B0wGOAQAB/wHKAdIBywH/AQABtwL/AQAByQL/AQABwQL/ - AQABuAL/AQABqwL/AQABoQL/AasBuwHFAf8MAAFVAlYBsQEAAcABjQH/AZkB1wGzAf8BAAHAAYAB/wG8 - AcIBAAH/AcYBqQEAAf8B1wGxAQAB/wHWAa0BAAH/AbwBmwEAAf8BAAGtAQAB/wEAAZcBAAH/AYEBwQGZ - Af8BAAGpAQAB/wFXAVkBVwG/BwABAQMkATYD/AH/A/wB/wP8Af8D/AH/A/wB/wP7Af8D+wH/A/sB/wP7 - Af8D+wH/A/sB/wP8Af8DJAE2AwABAQFZAlcBvwJiAVgB7wNNAfoCXwEyAfsCXwFAAfsCXwFCAfsCXwFF - AfsCXwFHAfsCXwFJAfsCXwFKAfsCXwFLAfsCXwFLAfsDTQH6AmUBUgH0AmEBWwHhAVkCVwG/AeMByAGm - Af8BtwIAAf8BwwIAAf8BzQIAAf8B3AGQAQAB/wHbAZABAAH/AeEB0gG7Af8BAAG6Av8BAAHAAv8BAAHQ - Av8BAAHGAv8BAAHBAv8BAAGsAv8BAAGxAc4B/wgAAy0BRgFTAV8BXQH7AbUB6gHTAf8BAAG8AQAB/wEA - Ab0BAAH/Ab4BtgEAAf8ByQGjAQAB/wHfAasBAAH/Ad0BqAEAAf8BwQGSAQAB/wGdAakBAAH/AQABsQEA - Af8BAAGWAQAB/wGmAdwBwAH/AS8BegEyAf4DNwFaAwABAQMkATYD/AH/A/wB/wP8Af8D/AH/A/sB/wP7 - Af8D+gH/A/oB/wP6Af8D+gH/A/oB/wP8Af8DJAE2AwABAQFgAV0BWgHeA6gB/QN/Af4B+wH1AfAB/wH7 - AfcB8QH/AfsB9wHzAf8B+wH4AfQB/wH8AfkB9QH/AfwB+QH1Af8B/AH5AfYB/wH8AfkB9wH/AfwB+gH3 - Af8B/AH6AfcB/wOoAf0DbQH3Al4BWAHdA0YBfwG7AgAB/wHDAgAB/wHWAYwBAAH/AdwBmQEAAf8B2gGa - AQAB/wHtAcMBiQH/AY4B1gH9Af8BAAG1Av8BAAHWAv8BAAHSAv8BAAHHAv8BAAHEAv8BAAGsAegB/wM3 - AVsEAANVAbIBkgHXAa8B/wGgAd4BtAH/AYQBxgEAAf8BqAHQAYAB/wHFAaUBAAH/AdABpwEAAf8B4AGq - AQAB/wHaAaYBAAH/AccBmAEAAf8BuQGMAQAB/wG2AZsBAAH/AYEBnwEAAf8BAAG/AZAB/wGBAb4BnAH/ - AVcBWQFXAb8DAAEBAyQBNgP8Af8D/AH/A/wB/wP8Af8D+wH/A/sB/wP7Af8D+gH/A/oB/wP4Af8D+AH/ - A/wB/wMkATYDAAEBAX8BbwE8Af4B/AH5AfUB/wHsAdABvAH/AfkB5AHWAf8B/gHsAd8B/wH+AesB3wH/ - Af4B6wHeAf8B/gHrAdsB/wH+AesB3AH/Af4B6gHdAf8B/QHqAdsB/wH9AegB2AH/AfgB4AHNAf8B6gHL - AbMB/wHzAesB4wH/An8BUAH+AwEBAgHLAZABAAH/AcoCAAH/AdkBkwEAAf8B4AGjAQAB/wHlAbEBAAH/ - AdsBnQEAAf8BygHpAfYB/wEAAa8C/wEAAbsC/wEAAbkC/wEAAb4B/AH/AQABwgH1Af8BAAG0AfoB/wNf - AfMEAAFaAmEB5AGwAekBzwH/AYMB1AGQAf8BvwHcAYoB/wHDAcsBggH/AcwBogEAAf8B2gGvAQAB/wHc - Aa8BAAH/AckBmgEAAf8BvwGGAQAB/wG3AYQBAAH/AbkBmgEAAf8BlgGlAQAB/wEAAaYBAAH/AaIB2AG9 - Af8BVwFfAVcB6AMAAQEDJAE2A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP7Af8D+QH/A/kB/wP4 - Af8D/AH/AyQBNgMAAQEBwgIAAf8B/QH7AfgB/wH5AeMB0gH/AewBzwG5Af8B+AHhAdAB/wH9AecB1gH/ - AfQB1QG9Af8B6QG/AaAB/wHpAb8BogH/AfQB0wG9Af8B/QHmAdQB/wH3Ad4ByQH/AesBygGwAf8B+AHb - AcQB/wH4AfIB7AH/AckBjAEAAf8EAAHdAbMBAAH/AdMBhgEAAf8B3AGYAQAB/wHjAasBAAH/AeoBvAEA - Af8B3gGiAQAB/wNiAekBAAG1Av8BmgHXAfEB/wHCAeUB3AH/AbIB2gHIAf8BnwHJAbUB/wGVAbkBrgH/ - Ac8B1QHWAf8EAAFgAmIB9gG+Ae8B3QH/AQAB0QEAAf8BkAHRAQAB/wG8AeABngH/AccBpwEAAf8B0wGw - AQAB/wHGAZkBAAH/AcYBvAEAAf8BrwHRAQAB/wG0AcQBAAH/Aa8BqQEAAf8BAAGpAQAB/wEAAaMBAAH/ - AbEB4wHOAf8BUQFtAVEB9wMAAQEDJAE2A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP6Af8D+QH/ - A/YB/wP2Af8D/AH/AyQBNgMAAQEBxQIAAf8B/QH7AfkB/wH9AekB2AH/AfkB4QHQAf8B6wHKAbMB/wHs - AcUBpwH/AeMBtgGYAf8B9wHnAd0B/wH3AegB3gH/AeMBtgGXAf8B7AHDAaQB/wHqAcUBqQH/AfgB2gHC - Af8B/AHfAcYB/wH4AfMB7QH/AcgBjQEAAf8EAANbAcQBzQGeAQAB/wHXAZMBAAH/AeQBowEAAf8B6wG1 - AQAB/wH1AdYBpQH/AwUBBwHIAeYB3QH/AQABrwEAAf8BAAG5AYUB/wEAAbcBgwH/AQABsAEAAf8BAAGl - AQAB/wEAAZoBAAH/AwgBCwNZAfUBvgHwAdwB/wGBAdgBgwH/AQAB2wEAAf8BvwHlAZoB/wHMAd8BpwH/ - AcoBqAEAAf8BwgG9AQAB/wG4AdoBiwH/AaYB2AEAAf8BAAHRAQAB/wEAAdABAAH/AQABvAEAAf8BAAGr - AQAB/wGyAeQBzgH/AUgBYgFIAfYDAAEBAyQBNgP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP7Af8D+AH/ - A/YB/wPzAf8D8gH/A/wB/wMkATYDAAEBAckBhgEAAf8B/QH7AfkB/wH9AegB1wH/Af0B5gHUAf8B7QHG - AasB/wHcAaoBiQH/AfkB7AHjAv8B+wH5Av8B/AH6Af8B+QHuAeYB/wHcAagBhwH/Ae0BvwGcAf8B/AHb - AcAB/wH8AdsBwAH/AfgB8wHtAf8ByAGMAQAB/wQAAwoBDgEAAZEB1AH/AaQBrAHAAf8DzAH/AcYByQHb - Af8BAAGeAeMB/wEAAYkB6AH/A6gB/QEAAbIBAAH/AQABzgGuAf8BAAHAAZUB/wEAAbsBiQH/AQABqQEA - Af8BAAGQAQAB/wPVAf8DYQHiAbMB7AHSAf8BmwHiAaIB/wGdAeoBjQH/AdQB7QG3Af8B0AHqAccB/wHP - AbkBAAH/AcwBsQEAAf8BywHJAQAB/wEAAdsBAAH/AQAB2QEAAf8BAAHXAQAB/wEAAdMBAAH/AQABuwEA - Af8BpQHbAcIB/wFYAWEBWAHmAwABAQMkATYD/AH/A/wB/wP8Af8D/AH/A/wB/wP7Af8D+AH/A/UB/wPy - Af8D7wH/A+0B/wP8Af8DJAE2AwABAQHMAY4BAAH/Af0B+wH5Af8B/QHlAdMB/wHxAcwBsgH/AeMBtQGW - Af8B+QHqAeAC/wH5AfUB/wH+AfMB6gH/Af4B9AHtAv8B+wH5Af8B+QHtAeUB/wHjAbABjQH/AfABwQGe - Af8B/AHXAbcB/wH4AfMB7QH/AcgBjAEAAf8KAAHrAf8CAAHvAf8CAAHtAf8CAAHsAf8CAAHnAf8CAAHj - Af8DqAH9AQAByQGiAf8BAAG5AYgB/wEAAcEBlAH/AQABugGEAf8BAAGdAQAB/wEAAY8BAAH/AaEBrAGj - Af8DVQGtAZgB3gG1Af8BtQHrAcwB/wGxAe8BpwH/AckB7gGpAf8B0QHqAckB/wHVAc8BjQH/AdkBywGL - Af8BzQG0AQAB/wK8AQAB/wGaAdYBAAH/AYIB3gEAAf8BAAHcAQAB/wGRAdABowH/AYgByAGkAf8BVgFY - AVYBuQMAAQEDJAE2A/wB/wP7Af8D/AH/A/wB/wP7Af8D+AH/A/UB/wPxAf8D7AH/A+oB/wPmAf8D/AH/ - AyQBNgMAAQEB0AGWAQAB/wH9AfsB+QH/AfEBzQGxAf8B4wG1AZYB/wH5AekB3gH/Af4B9wHxAf8B/QHt - AeEB/wH+Ae8B5AH/Af4B8QHnAf8B/gHzAeoC/wH6AfcB/wH5AewB4wH/AeIBrgGKAf8B8AG8AZUB/wH4 - AfQB7AH/AcgBjAEAAf8IAAGWAasB8AH/AgAB3QH/AgAB7AH/AQABhwHwAf8BAAGPAfIB/wIAAeYB/wGc - AcQB3QH/AZMB0AG2Af8BAAG/AZAB/wEAAboBhgH/AQABqwEAAf8BAAGQAQAB/wEAAYUBAAH/AQABjwEA - Af8DKAE8A00B+gHAAfMB4gH/AbUB7wG0Af8BtQHwAawB/wHBAe0BtwH/AdQB4wG3Af8B2QHYAZwB/wHa - AdMBlQH/Ac0BtQEAAf8BxwGzAQAB/wG1AcsBhAH/AZQB3wGaAf8BrwHnAc0B/wMrAfwDMQFPAwABAQMk - ATYD/AH/A/kB/wP5Af8D+QH/A/cB/wP2Af8D8gH/A+sB/wP8Af8D/AH/A/wB/wP8Af8DJAE2AwABAQJ/ - AXsB/gH7AfYB8gH/AeMBtAGWAf8B+QHoAdwB/wH+AfUB7gH/Af0B6QHaAf8B/QHqAdwB/wH9AewB3gH/ - Af0B7QHhAf8B/gHvAeQB/wH+AfEB5wL/AfoB9gH/AfkB6gHgAf8B4gGqAYUB/wHxAeQB2QH/An8BUAH+ - CAADYAHWAgAB0wH/AgAB4gH/AgAB6gH/AQABhQHvAf8CAAHwAf8BAAGQAdsB/wGmAckBuwH/AQABwAGK - Af8BAAGzAYQB/wEAAbUBjwH/AQABpwEAAf8BAAGIAQAB/wEAAYQBAAH/BAADUwGlAYcB1wGgAf8BwAHy - Ad4B/wHHAfIB1gH/AdUB7wHVAf8B0AHpAc8B/wHVAdsBpgH/AdwB3gGrAf8B2wHNAZAB/wHXAcgBiwH/ - AckBwQGOAf8BvQHVAa8B/wEAAccBkQH/A1YBtgcAAQEDJAE2A/wB/wP3Af8D+QH/A/cB/wP3Af8D8wH/ - A/AB/wPqAf8D/AH/A/YB/wP0Af8DTQGRAxcBIAQAA2EB3AN/Af4B/AH1AfEC/wH8AfkC/wH8AfkC/wH8 - AfkC/wH8AfkC/wH8AfoC/wH8AfoC/wH8AfoC/wH8AfsC/wH9AfsC/wH9AfwB/wH7AfYB8wH/A6gB/QJf - AVoB2wgAAwIBAwIAAdQB/wIAAc8B/wIAAdwB/wIAAeQB/wIAAecB/wIAAd8B/wGtAb8BwgH/AbIB4gHN - Af8DFwEgCAADBQEHA2IB6QQAAwQBBQNbAcQBjAHYAaIB/wHNAfUB6AH/AdQB7QHaAf8BzgHtAdMB/wHP - Ad8BrwH/AdYB3gG1Af8C1AGiAf8BzgHQAaEB/wHEAdABqgH/AYcByQGRAf8BWAJcAdEDCwEPCAADJAE2 - A6gB/QP0Af8D9QH/A/UB/wP1Af8D8QH/A+8B/wPpAf8D/AH/A+cB/wNNAZEDFwEgAwEBAgQAA1kBvwNd - AfADXwH7AagBjwFAAf0BqAGOAUAB/QGoAY4BQAH9AagBjAFAAf0BqAGLAUAB/QGoAYoBQAH9AagBiAFA - Af0BqAGGAUAB/QGoAYQBQAH9AysB/AJtAVEB9wJfAVgB4wFZAlcBvwwAAaABqwHvAf8CAAHOAf8CAAHJ - Af8CAAHNAf8CAAHPAf8BAAGAAekB/wMmATggAAMDAQQDUgGkA1wB+AGlAeEBuwH/AboB6gHMAf8BxQHg - Ab4B/wHFAdoBtAH/Ab0B1wGwAf8BpgHXAawB/wFdAl8B+wNWAbYDCQEMDAADIwEzA10B8AOoAf0D/AH/ - A/wB/wP8Af8D/AH/A/wB/wP8Af8D+AH/A00BkQMXASADAQECmAADKAE9A1MBqgNcAd8BYQJlAfQDXAH4 - AWECYgHpA1UBsgMuAUgUAAMUARwDIwEzAyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDFwEg - AwEBAkwABP8B7gH0AfgB/wHBAdUB4AH/AY8BsQHEAf8BAAGTAbgB/wIAAZsB/wHOAdAB0gH/A/gB/wP4 - Af8D9AH/AZcBqAGzAf8BAAGCAbwB/wGEAakByAH/Af0C/mH/AekBowEAAf8B2gIAAf8B2gIAAf8B6QGj - AQAZ/wHdAeoB9wH/AawBwwHcAf8BwAGKAQAB/wHLAgAB/wHSAgAB/wHTAgAB/wEAAYUBiAH/AQABnAHI - Af8BAAGIAboB/wGCAZ0BvQH/AcQB3QHzGf8BAAGxAdoB/wEAAbUB6gH/AQABvQHzAf8BAAHHAf4B/wEA - AbMB6wH/AwAB/wMAAf8DAAH/AwAB/wIAAYgB/wEAAb4C/wEAAbMB9gH/AQABqAHYAf8BxwHaAetF/wMA - Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wGKAgAB/wHqAaUBAAH/AeoBpQEAAf8BigIAAf8DAAH/AwAB/wMA - Af8DAAH/AwAB/wMAAf8BAAGcAeIB/wEAAYUBrAH/AcgCAAL/AboBAAL/AbcBAAL/AbABAAH/AQABrwHH - Af8BhgHpAfkB/wEAAdkB9QH/AQABkQHIAf8BAAGGAcsZ/wEAAcQB5wH/AQABywH8Af8BAAHFAfgB/wEA - AccB/gH/AQABggGcAf8BzwHKAcgJ/wG6AbMBsQH/AQABjQG8Af8BAAG8Av8BAAG8Av8BAAG8Af4B/wEA - AbgB8AX/A78B/wOgAf8DmgH/A5MB/wONAf8DhgH/A4AB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA - Af8DAAH/A4kB/wMAAf8DjQH/A40B/wONAf8DjQH/A40B/wMAAf8B7QGvAYYB/wHtAa8BhgH/AwAB/wON - Af8DjQH/A40B/wONAf8DjQH/AwAB/wEAAYUB0wH/AZMBrAHMAf8B5wGvAQAC/wG4AQAB/wH+AbABAAH/ - Af4BpwEAAf8BAAGpAccB/wGhAeYB+AH/AQAB0gHyAf8BAAHWAfYB/wEAAZQBzgH/AaoBwAHYAf8B8wH2 - AfsB/wHzAfcB/A3/AQABxQHkAf8BAAHHAfgB/wEAAc8C/wEAAaEByQH/AwAB/wHYAdUB1AX/Af4E/wH9 - AfoB/wEAAb4B9gH/AQABpAHiAf8BAAGRAckB/wEAAboB9gH/AbkB5QH7Bf8DrgH/A+kB/wPTAf8D0gH/ - A9EB/wPQAf8DzgH/A80B/wPNAf8DywH/A8sB/wPKAf8DyQH/A8gB/wPiAf8DAAH/AwAB/wMAAf8DAAH/ - AwAB/wMAAf8DAAH/AwAB/wGEAgAB/wGEAgAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8B3QHD - AbUB/wG3AgAB/wH9AdcBsgL/AdYBhAL/AcoBAAL/AcABAAH/AbQBqgGGAf8BAAGgAcMB/wGZAeIB9gH/ - AQAB3AH1Af8BAAHZAfYB/wEAAZUBzgH/AQABjgHTAf8BAAGPAdYB/wG2AcsB4gn/Ae8B+AH7Af8BrwHT - AeIB/wEAAagB0QH/AQABmAGkAf8B7wHoAeYB/wH8Av0B/wH6AvwB/wH8Av0F/wEAAc8B/QH/AwAB/wMA - Af8BgAGfAacJ/wO1Af8D1gH/A7sB/wO5Af8DtgH/A7QB/wOyAf8DsQH/A64B/wOsAf8DqwH/A6kB/wOo - Af8DpwH/A8gB/wMAFf8D5QH/AwAB/wOJAf8DiQH/AwAd/wHdAbIBmwH/Ac8CAAL/AegBwAH/Aa0BqgGG - Af8BpwGeAQAB/wGgAZIBAAH/Ac4BvwGoAf8BAAGlAcsB/wEAAbEB1AH/AQAB2QHyAf8BAAHbAfYB/wEA - Ad0B9wH/AQAB2AH1Af8BAAGEAc8B/wGxAcUB3wn/AegC5wH/AwAB/wHCAr8F/wH2AvcB/wH6AvwB/wH8 - Av0B/wH9B/8DAAH/AwAB/wGCAoAJ/wO8Af8D2QH/A74B/wO7Af8DjgH/A48B/wOQAf8DkAH/A48B/wOP - Af8DjQH/A4sB/wOqAf8DqQH/A8oB/wMAAf8DvgH/A6AB/wObAf8DlwH/A5IB/wOOAf8DigH/A4UB/wOB - Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8Dkwn/AcsBngGHAf8CAAGWAf8BAAGtAecB/wGBAbEB4wH/ - AQABsgHnAf8BAAGYAcQB/wMAAf8BAAGeAaIB/wGJAd0B9AH/AQAB4AH2Af8BAAHiAfcB/wEAAd8B9gH/ - AQAB2gH2Af8BAAGEAc8N/wMAAf8DpQX/AfcC+QH/AfsC/AH/AfwC/QH/Af4D/wH+A/8DAAH/AwAB/wGQ - Ao4J/wPDAf8D3QH/A8IB/wO+Af8DkQH/A5IB/wOUAf8DlAH/A5MB/wOSAf8DkQH/A48B/wOtAf8DrQH/ - A88B/wMAAf8DqQH/A+kB/wPNAf8DygH/A8kB/wPIAf8DyAH/A8UB/wPFAf8DwwH/A8UB/wPCAf8DwQH/ - A8AB/wPiAf8DAAn/AbsBtwG6Af8BAAGkAdYB/wGsAdEB8gH/Aa4B1wH9Af8BsAHUAfUB/wGSAcAB5wH/ - AQABgwGJAf8BAAGvAcYB/wGpAe4B+QH/AQAB5gH4Af8BmgHoAfgB/wEAAdEB8AH/AYAB4gH2Af8BAAGY - AdoN/wPPAf8DAAH/AfEC8wH/Af4D/wH8Av0B/wH8Av0B/wH+A/8BwgLDAf8DAAH/AwAB/wHIAscJ/wPX - Af8D3QH/A8gB/wPBAf8DwAH/A74B/wO7Af8DuQH/A7gB/wO2Af8DtAH/A7EB/wOwAf8DtAH/A8AB/wOU - Af8DrgH/A9YB/wOSAf8DlAH/A5IB/wOQAf8DiwH/A44B/wOLAf8DigH/A4UB/wOHAf8DhgH/A4YB/wPI - Af8DAAn/AQABjgG3Af8BpwG/AdsB/wGWAcUB8QH/AaEB0AH7Af8BlgHGAfMB/wG2Ac8B5AH/AgABpwH/ - AQABuAGtAf8BAAHBAekB/wGjAfAB+wH/AYAB1AHwAf8BAAHHAewB/wEAAaIB2AH/AQABiAHQDf8D/QH/ - AwAB/wOxBf8B/QL8Af8D/AH/AfAC8QH/AwAB/wMAAf8DAAH/A/4J/wPbAf8D6AH/A+cB/wPhAf8D4AH/ - A+AB/wPfAf8D3wH/A94B/wPdAf8D3QH/A9wB/wPbAf8D4AH/A80B/wOZAf8DsgH/A9kB/wO0Af8DrQH/ - A6sB/wOpAf8DrAH/A6cB/wOkAf8DowH/A6QB/wOfAf8DnQH/A5wB/wPKAf8DAAn/AgABqQH/AgABmgH/ - AQABgAGuAf8BAAGmAdYB/wIAAaUB/wIAAZIB/wIAAZgB/wEAAdABnwH/AQABswG0Af8BAAHJAewB/wHJ - AfMB+wH/AQABvAHjAf8BAAGkAYoB/wGIAacBixH/A94B/wGBAoAB/wH2AfQB8wH/AecB5QHmAv8B/gH8 - Af8BwQLCAf8DAAH/AwAB/wPoDf8D9AH/A9kB/wPsAf8D3gH/A9gB/wPSAf8DzAH/A8gB/wPHAf8DyAH/ - A8sB/wPQAf8D3QH/A+gB/wOgAf8D3QH/A7cB/wPdAf8DlwH/A5gB/wOXAf8DlgH/A5AB/wOSAf8DkQH/ - A48B/wOKAf8DiwH/A4oB/wOKAf8DzwH/AwAJ/wHFAcwB1QH/AgABlgH/AgABkAH/AgABkAH/AgABkAH/ - AgABkAH/AQABjwGeAf8BhAGZAZMB/wEAAZQBigH/AQABkwGwAf8BAAG0AdcB/wEAAa8BpgH/AQABrgEA - Af8B9gH6AfcV/wGvAq4B/wEAAa4BvgH/AQABwgHhAf8BAAHQAeoB/wMAAf8DAAH/AbkCuBX/A98B/wPo - Af8D2wH/A+IB/wPiAf8D4QH/A+AB/wPgAf8D4AH/A98B/wPDAf8D0QH/A9IB/wOoBf8DzQH/A9oB/wPD - Af8DuQH/A7gB/wO3Af8DtgH/A7IB/wOxAf8DrwH/A68B/wOqAf8DqQH/A60B/wPDAf8Dng3/AawBtwHF - Af8CAAGbAf8CAAGSAf8CAAGYAf8CAAGHAf8CAAGUAf8BAAGtAecB/wGBAbEB4wH/AQABsgHnAf8BAAGY - AcQB/wEAAZEBAAH/AfYB+QH2Gf8BwAK+Af8BAAGyAc8B/wEAAd0B/AH/AQAB1wH3Af8CAAGDAf8DAAH/ - A/gV/wP1Af8D3gH/A/MB/wPtAf8D7QH/A+0B/wPtAf8D7QH/A+wB/wPsAf8D7AH/A/EB/wOxAf8D4wX/ - A9AB/wPjAf8D5wH/A+EB/wPgAf8D4AH/A98B/wPfAf8D3gH/A90B/wPdAf8D3AH/A9sB/wPgAf8D0AH/ - A6Ed/wG7AbcBugH/AQABpAHWAf8BrAHRAfIB/wGuAdcB/QH/AbAB1AH1Af8BkgHAAecB/wEAAZIBqh3/ - Aa0CqgH/AwAB/wHHAdUB2AH/AbEBuQG7Af8DAAH/AwAd/wPiAf8D1QH/A9IB/wPOAf8DyQH/A8QB/wO/ - Af8DuQH/A7MB/wOtAf8DpgH/A7kJ/wPwAf8DzgH/A+wB/wPeAf8D2AH/A9IB/wPMAf8DyAH/A8cB/wPI - Af8DywH/A9AB/wPdAf8D6AH/A6UB/wPfHf8BAAGgAcUB/wG4AdAB5wH/AZYBxQHxAf8BoQHQAfsB/wGW - AcYB8wH/AbYBzwHkAf8BAAGTAccd/wGYApcB/wMAAf8DAAH/AwAB/wMAAf8DAFn/A9MB/wPjAf8D2wH/ - A+IB/wPiAf8D4QH/A+AB/wPgAf8D4AH/A98B/wPDAf8D0QH/A9MB/wOrIf8BAAGjAccB/wEAAa4B5QH/ - AQABuAHmAf8BjQHIAfYB/wEAAa0B5gH/AQABpwHlAf8BAAGeAdcd/wPCAf8DAAH/AwAB/wMAAf8DAAH/ - AbACrln/A/EB/wPRAf8D8wH/A+0B/wPtAf8D7QH/A+0B/wPtAf8D7AH/A+wB/wPsAf8D8QH/A7AB/wPj - If8BwwHPAdkB/wEAAaQB3wH/AQABpgHlAf8BAAGmAeUB/wEAAaYB5QH/AQABpgHlAf8BgwGrAcUh/wMA - Af8DAAH/AwAB/wGnAqJh/wPWAf8DxQH/A8EB/wO+Af8DugH/A7YB/wOyAf8DrgH/A6kB/wOlAf8DoQH/ - A7Yp/wGoAb4BzQH/AQABnQHVAf8BAAGlAeQB/wEAAaEB3wH/AQABpgHEAf8C+gH7Cf8IAAMCAQMDXAHM - AwAB/wMAAf8DAAH/AwAB/wNdAcpcAAMmATkDRAF6AlUBUwGwAcsCAAH/AdICAAH/AdMCAAH/AdECAAH/ - Ac0CAAH/AVwCVwHfA0cBgAM3AVsgAAGoAZUBQAH9AcoBmAEAAf8BygGXAQAB/wHKAZcBAAH/AcoBlwEA - Af8BygGXAQAB/wHJAZcBAAH/AckBlwEAAf8BygGYAQAB/wGoAZQBQAH9FAADEAEVA5IB/wHVAtMB/wHi - AeAB3wH/Ad8B3AHbAf8B4QLfAf8DZQH0XAABWAJhAeYBAAGFAawB/wHIAgAC/wG6AQAC/wG3AQAC/wGw - AQAC/wGyAQAC/wG0AQAB/wHeAYgBAAH/AYcCAAH/AQABmwHmAf8UAANOAZkDXQHSAwAB/wHHAZUBAAH/ - AfkB9wH2Af8B+QHxAewB/wH5AfEB6wH/AfgB8AHpAf8B9wHtAeYB/wH0AeoB4QH/AfIB6AHeAf8B+gH4 - AfYB/wHHAZQBAAH/AwAB/wNYAdEDRAF6DAADQAFvA1oBvQHEAcIBwQH/AdQBzwHOAf8DYgH2A1EBnANd - AdIDAAH/AwAB/wMAAf8DAAH/AwAB/wNdAdcEAANAAXABUgJUAaYBVQJcAeoBUQJtAfcBUQJtAfcBUQJt - AfcBUQJtAfcBUQJtAfcBUQJtAfcBUQJtAfcBUQJtAfcBUQJtAfcBUwJkAfEDTAGTBAADKwH8AZMBrAHM - Af8B5wGvAQAC/wG4AQAB/wH+AbABAAH/Af4BpwEAAf8B/QGgAQAC/wGXAQAB/wH9AZMBAAH/AbMBnwGi - Af8BAAGWAd4B/xQAA0AB/QOnAf8DtQH/A4EB/wGvAawBqgH/AcUBwAG9Af8BxQHAAb0B/wHFAcABvQH/ - AcUBwAG9Af8BxQHAAb0B/wHFAcABvQH/Aa0BqgGoAf8DAAH/A7UB/wObAf8DAAH/A0oBjQNcAcwDXAHM - A1wBzANgAd4DngH/A5oB/wNcAfgDhAH/AocBhgH/AYcBhgGFAf8BogGgAZ8B/wHTAc4BzQH/AdMBzgHN - Af8B6ALlAf8DAAH/BAABWAJhAeYDXQHwAacCqAH9AZ4B2wH0Af8BlgHaAfMB/wGOAdgB8wH/AYYB1wHz - Af8BAAHUAfIB/wEAAdMB8gH/AQAB0gHxAf8BAAHQAfEB/wEAAc8B8QH/A38B/gFOAl0B8AQAAjUBNAFV - A1kB9QH9AdcBsgL/AdYBhAL/AcoBAAL/AcABAAL/AbQBAAL/AacBAAL/AcUBkgH/AdYCAAH/AU4CTQGW - FwAB/wO1Af8DtQH/A5UB/wOBAf8DgQH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wO1Af8DtQH/ - AwAB/wOuAf8B5ALiAf8B1wLVAf8B1QHTAdIB/wHRAc4BzQH/AcoBxAHDAf8ByAHDAcIB/wHNAckByAH/ - AcwCygH/AcwBygHJAf8B2ALWAf8DAAH/AbkBsQGuAf8BtwGvAa4B/wHTAc4BzQH/AwAB/wQAAVECbQH3 - Ae8B+gH+Af8BoQHpAfkB/wGRAeUB+AH/AYEB4QH3Af8BAAHeAfYB/wEAAdoB9QH/AQAB1wH0Af8BAAHT - AfMB/wEAAdAB8gH/AQABzQHxAf8BAAHLAfAB/wHKAfIB+wH/AVECbQH3CAADOwFkAl8BUwHzAf8B6AHA - Af8BrQGqAYYB/wGnAZ4BAAH/AaABkgEAAf8B9wHKAZwB/wHkAZQBAAH/A1EBoAMHAQoXAAH/A7sB/wO7 - Af8DjQH/A9QB/wO5Af8DuQH/A7kB/wO5Af8DuQH/A7kB/wPTAf8DgwH/A7sB/wO7Af8DAAH/A7QB/wHg - At0B/wGnAgAB/wGnAgAB/wGnAgAB/wGnAgAB/wGnAgAB/wGnAgAB/wGnAgAB/wGnAgAB/wHaAdUB1AH/ - AwAB/wG6AbIBsQH/AbkBsQGvAf8B1AHPAc4B/wMAAf8EAAE+AlwB+AHyAfoB/QH/AbMB7QH6Af8BpAHp - AfkB/wGVAeYB+AH/AYUB4gH3Af8BAAHeAfYB/wEAAdsB9QH/AQAB1wH0Af8BAAHUAfMB/wEAAdEB8gH/ - AQABzgHxAf8BzAHyAfsB/wFRAm0B9wwAA0QBeQNNAfoBAAGtAecB/wGBAbEB4wH/AQABsgHnAf8BAAGY - AcQB/wMAAf8BAAGkAQAB/wEAAagBAAH/AQABpwEAAf8BAAGjAQAB/wFXAVwBVwHfA0cBgAM3AVsDAAH/ - A9cB/wPXAf8DlwH/A9gB/wO/Af8DvwH/A78B/wO/Af8DvwH/A78B/wPXAf8DjgH/A9cB/wPXAf8DAAH/ - A7oB/wHeAtsB/wG1AYABAAH/Ac4BmAEAAf8B2AGuAZEB/wHZAa8BkQH/AdkBrwGRAf8B2gGvAZEB/wHW - AaABAAH/AacCAAH/AdcB0wHRAf8DAAH/AbsBtAGzAf8BuwGzAbEB/wHUAdABzwH/AwAB/wQAAUECagH5 - AfYB/AH+Af8ByAHyAfwB/wG5Ae8B+wH/AawB7AH6Af8BnAHoAfkB/wGLAeMB9wH/AQAB4AH2Af8BAAHc - AfYB/wEAAdkB9QH/AQAB1gH0Af8BAAHTAfMB/wHQAfMB/AH/AVECbQH3DAADPAFmAXICfwH+AawB0QHy - Af8BrgHXAf0B/wGwAdQB9QH/AZIBwAHnAf8BAAGDAYkB/wEAAc8BlAH/AQABzgGOAf8BAAHOAY8B/wEA - Ac4BkQH/AQABtAEAAf8BAAGPAQAB/wEAAZsB5gH/AwAB/wP5Af8D+QH/A6sB/wPfAf8DywH/A8sB/wPL - Af8DywH/A8sB/wPLAf8D3wH/A6MB/wP5Af8D+QH/AwAB/wPAAf8B3wLcAf8BtAIAAf8BywGVAQAB/wHN - AZcBAAH/Ac8BmQEAAf8B0QGbAQAB/wHSAZwBAAH/AdQBngEAAf8BpwIAAf8B1wHUAdMB/wOEAf8BAAGh - AQAB/wEAAZQBAAH/AdYB0QHQAf8DAAH/BAADTQH6Af4D/wH4Af0C/wH2Af0C/wH1AfwC/wHzAfwB/gH/ - AdgB9gH8Af8BlAHmAfgB/wGFAeMB9wH/AQAB3wH2Af8BAAHbAfUB/wEAAdgB9AH/AdcB9AH8Af8BUQJt - AfcMAAFUAlYBqwGnAb8B2wH/AZYBxQHxAf8BoQHQAfsB/wGWAcYB8wH/AbYBzwHkAf8CAAGnAf8BAAHO - AY8B/wEAAc0BiQH/AQABywGDAf8BAAHLAQAB/wEAAckBAAH/AQABlgEAAf8BAAGWAd4B/wNqAfkD/AH/ - A/wB/wPLAf8D8gH/A/IB/wPyAf8D8gH/A/IB/wPyAf8D8gH/A/IB/wPGAf8D/AH/A/wB/wNwAf4DxQH/ - AeEB3gHcAf8BswIAAf8BxwGRAQAB/wHJAZMBAAH/AcsBlQEAAf8BzQGXAQAB/wHPAZkBAAH/AdEBmwEA - Af8BpwIAAf8B2QHVAdQB/wOLAf8BoAHIAaQB/wEAAakBAAH/AdcB0wHRAf8DAAH/BAADTQH6AegB9gH7 - Af8BlAHUAe8B/wGIAc4B7gH/AQABwQHpAf8ByQHpAfYB/wHyAfwB/gH/AfMB/AH+Af8B8gH8Af4B/wHw - AfwB/gH/Ae8B+wH+Af8B7gH7Af4B/wH+A/8BUQJtAfcMAAJZAVsBxAIAAZoB/wEAAYABrgH/AQABpgHW - Af8CAAGlAf8CAAGSAf8CAAGYAf8BAAHQAZ8B/wEAAc4BlwH/AQABzQGOAf8BAAHNAYgB/wGdAdgBqwH/ - AQABsAEAAf8BTQFOAU0BlgNdBNIB/wPoAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA - Af8DAAH/A+gB/wPEAf8DXAHcA8oB/wHhAd8B3gH/AbECAAH/AcQBjgEAAf8BxgGQAQAB/wHIAZIBAAH/ - AcoBlAEAAf8BzAGWAQAB/wHOAZgBAAH/AacCAAH/AdsC1gH/A5EB/wHBAbsBuQH/AcABuQG4Af8B1wLT - Af8DhAH/BAABWQJnAfIB8QH6Af0B/wGUAd4B9QH/AZMB3AH0Af8BgQHVAfIB/wEAAcoB7QH/AQABywHq - Af8BhQHTAe8B/wGAAdIB7wH/AQAB0AHvAf8BAAHPAe4B/wEAAc8B7gH/AekB9wH7Af8BTAJfAfMMAAEr - AiwBQwJAAZUB/QIAAZAB/wIAAZAB/wIAAZAB/wIAAZAB/wEAAY8BngH/AYQBmQGTAf8BAAGUAYkB/wEA - AYwBAAH/AaQB1QGxAf8BggG/AYUB/wNRAaADBwEKAy0BRQOaAf8DzAH/AccBiwEAAf8B+QH0Ae0B/wH+ - AegB2AH/Af4B6AHXAf8B/QHlAdMB/wH8AeQB0QH/AfoB4AHHAf8B+QHdAcMB/wH6AfQB7QH/AccBhQEA - Af8DwwH/AwAB/wMtAUUDzgH/AeIC3wH/AbACAAH/AbECAAH/AbECAAH/AbICAAH/AbMCAAH/AbQCAAH/ - AbUBgAEAAf8BpwIAAf8B3AHYAdcB/wOYAf8DjQH/A4oB/wHZAdUB1AH/A4sB/wQAAU4CXQHwAfcB/AH+ - Af8BjgHkAfgB/wGRAd4B9QH/AZ8B4AH1Af8BrAHhAfYB/wHvAfsB/gH/AfQB/QH+Af8B8wH8Af4B/wHx - AfwB/gH/Ae8B+wH+Af8B7gH7Af4B/wNqAfkBXAJgAdQQAAM6AWEBUwFhAWQB8QIAAZIB/wFDAl8B+wJZ - AVwBzANNAfoBAAGtAecB/wGBAbEB4wH/AQABsgHnAf8BAAGYAcQB/wNWAbYDCAELCAADOwFjA18B8wHF - AYkBAAH/AfkB9AHvAf8B/gHnAdcB/wH9AecB1QH/AfwB5gHSAf8B+wHhAcwB/wH4AdwBwgH/AfYB2gG9 - Af8B+gH0Ae8B/wHEAYMBAAH/A10B8wM7AWMEAAPTAf8B8QLvAf8B4gLfAf8B4gLfAf8B4QHfAd4B/wHh - Ad4B3QH/AeAB3QHcAf8B3wHcAdsB/wHeAtsB/wHeAdsB2QH/Ae0B7AHrAf8DngH/AcUBvwG+Af8BwwG9 - AbsB/wHaAdYB1QH/A5EB/wQAAT4CXAH4Af0C/gH/Af4D/wL+Av8B/QH+Av8B/gP/AeoB9wH7Af8DagH5 - A1wB+ANcAfgDXAH4A20B9wNhAeEDNQFWIAADPAFmAXICfwH+AawB0QHyAf8BrgHXAf0B/wGwAdQB9QH/ - AZIBwAHnAf8BUwJVAa0QAAMHAQkCagFHAvkB9AHwAf8B/AHmAdMB/wH9AecB0wH/AfsB4wHNAf8B+gHg - AcgB/wH1AdYBuwH/AfMB1AG1Af8B+AH0AfAB/wJqAUcB+QMHAQkIAANqAfkD0wH/A9AB/wPMAf8DyAH/ - A8MB/wO/Af8DugH/A7UB/wOwAf8DqgH/A6UB/wGUApMB/wGSApEB/wHbAdcB1gH/A5gB/wQAAVsCXgHQ - A00B+gNNAfoDTQH6A00B+gNNAfoBWAJeAd0DEAEWAwsBDwMLAQ8DCwEPAwsBDwMLAQ8DAwEEIAADSgGN - AbgB0AHnAf8BlgHFAfEB/wGhAdAB+wH/AZYBxgHzAf8BtgHPAeQB/wFXAlwB3xQAAm0BUQH3AfkB9QHx - Af8B/AHjAc8B/wH8AeQBzwH/AfoB4QHKAf8B+QHdAcQB/wH0AekB3wH/AfcB8gHsAf8B9QHvAekB/wJf - AUUB+yAAAy4BSANhAeQD3wH/A+oB/wHPAcoByQH/AcsBxgHFAf8BygHEAcMB/wHIAcMBwQH/AccCwQH/ - AdwB2QHYAf8DngH/XAADTAGSAQABrgHlAf8BAAG4AeYB/wGNAcgB9gH/AQABrQHmAf8BAAGnAeUB/wFY - AmIB7xQAAmIBSQH2AfkB9QHxAf8B/AHjAc0B/wH7AeMBzQH/AfkB4AHIAf8B+AHcAcIB/wH9AfsB+AH/ - AfwB5gHNAf8B4gG2AYQB/wJUAVIBpiQAAwsBDwNWAasD3AH/AeYC4wH/AeEB3gHcAf8B3wLcAf8B3wHc - AdsB/wHeAtsB/wHuAuwB/wOlAf9cAAErAiwBQwFAAaMBqAH9AQABpgHlAf8BAAGmAeUB/wEAAaYB5QH/ - AQABpgHlAf8BSwJMAZAUAANNAfoB9wHyAewB/wH4AfQB7gH/AfgB8wHtAf8B+AHzAe0B/wH4AfIB7AH/ - AfIB5gHXAf8B4gGyAQAB/wNiAfYDBQEHLAADUQGfA18B+wPEAf8DwAH/A7sB/wO2Af8DsAH/A1IBp2AA - AzoBYQFTAmQB8QEAAaUB5AH/ASICXwH7A1ABnQMEAQYUAAM6AWACWAFWAbsCfwFPAf4ByAGMAQAB/wJt - AVEB9wJtAVEB9wJ/AUwB/gNOAZQUAAP3Af8D9wH/A/cB/wO8Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA - Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wO2Af8PAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA - Af8DAAH/AwAB/wMAAf8DAAH/DwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA - Af8DAAH/AwAB/wGNAgAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AZ4BjQEAAf8BngGNAQAB/wGeAY0BAAH/ - AZ4BjQEAAf8BngGNAQAB/wGcAYwBAAH/AZUBhAEAAf8BiQIAAf8BkQGFAQAF/wP3Af8D9wH/A/cB/wO+ - Af8D/QH/A/4B/wP+Af8D/gH/A/4B/wP+Af8D/gH/A/4B/wP+Cf8DqgH/DAABtwGiAZMB/wH6AeIB0gH/ - Ad8BuAGeAf8B4AG2AZkB/wHiAbQBlQH/AeIBsQGRAf8B5AGvAYwB/wHlAa0BiAH/AeYBqwGEAf8B5wGn - AQAB/wHoAaUBAAH/AesBowEAAf8DAAH/DAABtwGiAZMB/wH6AeIB0gH/Ad8BuAGeAf8B4AG2AZkB/wHi - AbQBlQH/AeIBsQGRAf8B5AGvAYwB/wHlAa0BiAH/AeYBqwGEAf8B5wGnAQAB/wHoAaUBAAH/AesBowEA - Af8DAAH/AZUBiAEAAf8BgwIAAf8DAAH/AwAB/wMAAf8BgAIAAf8B3QHXAdAN/wH+Av0B/wHnAeMB3QH/ - AZIBgwEAAf8DAAH/AakBoAGUBf8D9wH/A/cB/wP3Af8DwAH/A/0B/wIAAv8CngH+Af8D/gH/A/4B/wP+ - Af8D/gH/A/4B/wP+Cf8DqwH/DAABuQGkAZUB/wH7AeYB2gH/AfsB5wHaAf8B+wHmAdkB/wH6AeUB2AH/ - AfsB5AHWAf8B+wHiAdMB/wH5AeAB0AH/AfgB3QHMAf8B+QHbAckB/wH4AdoBxwH/AekBpAEAAf8DAAH/ - DAABuQGkAZUB/wH7AeYB2gH/AfsB5wHaAf8B+wHmAdkB/wH6AeUB2AH/AfsB5AHWAf8B+wHiAdMB/wH5 - AeAB0AH/AfgB3QHMAf8B+QHbAckB/wH4AdoBxwH/AekBpAEAAf8DAAH/AY8BgwEAAf8DAAH/AwAB/wMA - Af8DAAH/AwAB/wGOAgAB/wGOAgAB/wGOAgAB/wGOAgAB/wGOAgAB/wGLAgAB/wMAAf8DAAH/AboBtQGt - Bf8D9wH/A/cB/wP3Af8DwAH/A/0B/wLTAfwB/wKMAf0B/wKwAf0B/wP8Af8D/AH/A/wB/wP8Af8D+wH/ - A/0B/wP9Af8DqwH/DAABuwGmAZYB/wH7AewB4gH/AfwB7AHiAf8B1gGuAZAB/wH7AeoB3wH/AdYBrgGQ - Af8B1gGuAZAB/wHWAa4BkAH/AdYBrgGQAf8B1gGuAZAB/wH4AdsBygH/AecBpwGAAf8DAAH/DAABuwGm - AZYB/wH7AewB4gH/AdYBrgGQAf8B1gGuAZAB/wHWAa4BkAH/AdYBrgGQAf8B+gHnAdoB/wHWAa4BkAH/ - AdYBrgGQAf8B1gGuAZAB/wH4AdsBygH/AecBpwGAAf8DAAH/AZQBiAEAAf8BgAIAAf8DAAH/AwAB/wMA - Af8BjAIAAf8BlAGEAQAB/wGUAYQBAAH/AZQBhAEAAf8BlAGEAQAB/wGUAYQBAAH/AY4CAAH/AYACAAH/ - AwAB/wHJAcQBvgX/A/cB/wP3Af8D9wH/A8AB/wP9Af8D/AH/A/wB/wIAAf4B/wLTAfwB/wKvAf0B/wKv - AfwB/wKbAfsB/wKJAfsB/wIAAf0B/wP6Af8DqwH/DAABvgGoAZkB/wH9AfAB6AH/Af0B8AHpAf8B/QHw - AegB/wH8Ae8B5wH/AfwB7QHlAf8B+wHrAeEB/wH7AegB3AH/AfoB5QHXAf8B+gHiAdMB/wH5Ad4BzgH/ - AeYBrAGFAf8DAAH/DAABvgGoAZkB/wH9AfAB6AH/Af0B8AHpAf8B/QHwAegB/wH8Ae8B5wH/AfwB7QHl - Af8B+wHrAeEB/wHWAa4BkAH/AfoB5QHXAf8B1gGuAZAB/wH5Ad4BzgH/AeYBrAGFAf8DAAH/AZkBjQEA - Af8BhQIAAf8DAAH/AwAB/wMAAf8BjwIAAf8B5AHgAdoN/wGqAZwBiQH/AZQBhAEAAf8BhQIAAf8DAAH/ - AcYBwQG7Bf8D9wH/A/cB/wP3Af8DwAH/A/0B/wP8Af8D/AH/AuYB+wH/AgAB/QH/Ar8B+gH/AgAB/QH/ - Ar4B+QH/AqsB+QH/AtIB+wH/A/oB/wOrAf8CAAHeAf8CAAHbAf8CAAHXAf8CAAHTAf8CAAHPAf8CAAHM - Af8CAAHJAf8CAAHGAf8CAAHEAf8CAAHCAf8B1gGuAZAB/wHWAa4BkAH/AdYBrgGQAf8B+gHhAdIB/wHk - Aa4BigH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8B/AHsAeIB/wH7 - AegB3QH/AdYBrgGQAf8B+gHhAdIB/wHkAa4BigH/AwAB/wGcAY8BAAH/AYkCAAH/AwAB/wMAAf8DAAH/ - AYwCAAH/AZ0BjQEAAf8BnQGNAQAB/wGdAY0BAAH/AZ0BjQEAAf8BnQGNAQAB/wGZAYgBAAH/AYsCAAH/ - AwAB/wG6AbQBqgX/A/cB/wP3Af8D9wH/A8AB/wP9Af8D+wH/A/kB/wP4Af8CAAH8Af8CAAH9Af8D9wH/ - A/cB/wP3Af8D+gH/A/kB/wOrAf8CAAHiIf8CAAHDAf8B/AHvAegB/wH8AewB4gH/AfsB6AHcAf8B+gHk - AdYB/wHjAbEBjwH/AwAB/wEAAYABACH/AwAB/wH8Ae8B6AH/AfwB7AHiAf8B+wHoAdwB/wH6AeQB1gH/ - AeMBsQGPAf8DAAH/AZoBjQEAAf8BhwIAAf8DAAH/AwAB/wMAAf8DAAH/AaABjgEAAf8BoAGOAQAB/wGg - AY4BAAH/AaABjgEAAf8BoAGOAQAB/wGcAYsBAAH/AY8CAAH/AwAB/wGlAZ0BkgX/A/cB/wP3Af8D9wH/ - A8AB/wP6Af8D9wH/A/cB/wP3Af8CrAH5Af8CrAH5Af8D9wH/A/cB/wP2Af8D9wH/A/gB/wOrAf8CAAHl - Bf8BogG7Av8BAAGKAeMB/wIAAa0B/wGLAasC/wGEAaUC/wGAAaMG/wIAAcYB/wHWAa4BkAH/AdYBrgGQ - Af8B1gGuAZAB/wH7AeYB2gH/AeIBswGVAf8DAAH/AQABggEABf8DAAH/AwAB/wMAAf8BlAHeAY4B/wEA - AZcBAAH/AwAF/wMAAf8B1gGuAZAB/wHWAa4BkAH/AdYBrgGQAf8B+wHmAdoB/wHiAbMBlQH/AwAB/wGR - AYYBAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8B0wHOAcYB/wP4Af8D/AX/AvgB9gH/AfgB9gHzAf8BpwGa - AYYB/wGCAgAB/wGBAgAF/wP3Af8D9wH/A/cB/wPAAf8D+QH/A/cB/wP3Af8D9wH/AgAB+wH/As4B9wH/ - A/cB/wP2Af8D8wH/A/QB/wP0Af8DsAH/AgAB6AX/AaIBuwL/AQABiwHkAf8CAAGxAf8BiAGoAv8BgAGj - Av8BAAGdBv8CAAHJAf8B/QH0Ae8B/wH9AfEB6gH/AfwB7QHkAf8B+wHpAd0B/wHgAbYBmQH/AwAB/wEA - AYQBAAX/AaYB2AGnAf8DAAH/AaMB4AGfAf8BAAGcAQAB/wEAAaQBAAH/AYkB3QGDBf8DAAH/Af0B9AHv - Af8B/QHxAeoB/wHWAa4BkAH/AfsB6QHdAf8B4AG2AZkB/wMAAf8BvAG2AasB/wG6AbYBrAH/AwAB/wMA - Af8DAAH/AwAB/wGAAgAB/wGPAYEBAAH/AZwBjQEAAf8BpQGVAQAB/wGnAZcBAAH/AaUBlgEAAf8BnwGP - AQAB/wGOAYABAAH/AwAB/wHjAeEB3QH/A/cB/wP3Af8D9wH/A8AB/wP4Af8D9QH/A/UB/wP1Af8CAAH6 - Af8CzwH2Af8D8wH/A/IB/wPvAf8D7gH/A9IB/wO1Af8CAAHqBf8BqgHBAv8BAAGXAfIB/wIAAbwB/wIA - AbwB/wIAAbwB/wIAAdAF/wIAAcwB/wHWAa4BkAH/AdYBrgGQAf8B1gGuAZAB/wH7AeoB3wH/Ad4BuAGd - Af8DAAH/AQABhgEABf8BvwHmAb8B/wGSAcIBiwH/AwAB/wEAAbABgwH/AZgB3wGUAf8BlAHeAY8F/wMA - Af8B1gGuAZAB/wHWAa4BkAH/AdYBrgGQAf8B+wHqAd8B/wHeAbgBnQH/AwAB/wGXAY0BAAH/AdQB0gHN - Bf8BzwHMAckB/wG7AbkBtQH/AZMBkAGLAf8D/QH/AwAB/wGKAgAB/wGbAY4BAAH/AaQBlwGBAf8BqQGa - AYUB/wGpAZsBhQH/AZ4BkQEAAf8BjAGBAQAB/wHCAb4BtgH/AgABhgH/AwAB/wMAAf8DAAH/AwAB/wMA - Af8DAAH/AwAB/wMAAf8DAAH/A+4B/wPoAf8D4wH/A8cB/wOTAf8DuwH/AgAB7AH/AeQB6wL/AbwBzgL/ - AQABpgHyAf8CAAG8Af8BkQGvAv8BAAGCAecB/wIAAbIF/wIAAc8B/wH+AfgB8wH/Af0B9AHvAf8B/AHw - AekB/wH8AewB4QH/Ad0BugGhAf8DAAH/AQABiAEAAf8B7wH4Ae8B/wHRAewB0AH/AbcB4wG1Af8BAAGn - AQAB/wEAAagBAAH/AaMB4QGfAf8BngHfAZoF/wMAAf8B/gH4AfMB/wH9AfQB7wH/AdYBrgGQAf8B/AHs - AeEB/wHdAboBoQH/AwAB/wGnAaABjwH/AYcCAAH/AaoBpQGdAf8D/RH/AwAB/wGNAYQBAAH/AZwBkgGD - Af8BqwGfAY8B/wGzAacBlwH/Aa8BpQGVAf8BpAGaAY0B/wGyAawBowH/AgABswH/AgAB2gH/AgAB3AH/ - AgAB3AH/AgAB2wH/AgAB1gH/AgAB0QH/AgAByAH/AgABuwH/AgABiwH/A6AB/wOIAf8DiAH/A5QB/wOi - Af8D0QH/AT4CXAH4AcMB1QH9Af8B1gHhAv8BAAGoAfIB/wIAAbwB/wGWAbMC/wEAAYcB5wH/AgABsgX/ - AgAB0wH/AdYBrgGQAf8B1gGuAZAB/wHWAa4BkAH/AdwBvAGlAf8B3QG7AaQB/wMAAf8BPgFcAT4B+AHi - AfEB4QH/AeUB9AHkAf8BAAGSAQAB/wEAAZsBAAH/AwAB/wMAAf8BngHUAZoF/wMAAf8B1gGuAZAB/wHW - Aa4BkAH/AdYBrgGQAf8B3AG8AaUB/wHdAbsBpAH/AwAB/wHDAb0BsAH/Aa0BpQGYAf8BjgGIAQAB/wMA - Af8DAAH/AwAB/wMAAf8B5gHlAeQF/wP4Af8B6QHoAecB/wG0Aa0BowH/Ab0BtgGpAf8BwgG7Aa4B/wG6 - AbQBqQH/AboBtAGrAf8CAAHTAf8CAAH6Af8CAAH9Af8CAAH1Af8CAAHtAf8CAAHkAf8CAAHbAf8CAAHQ - Af8CAAHDAf8CAAGgAf8DiAH/A/sB/wP7Af8D3wH/A6wB/wPkAf8BWAJcAdEBkgG3AfgB/wHiAeoC/wIA - AdsB/wIAAdsB/wIAAdsB/wIAAdsB/wIAAdwF/wIAAdcB/wH9AfgB9AH/Af0B9QHvAf8BtwGiAZMB/wMA - Af8DAAH/AwAB/wFYAVwBWAHRAcEB3wHCAf8BAAGCAQAB/wEAAYEBAAH/AdEB7AHQAf8BqwHQAagB/wMA - Af8BAAGCAQAF/wMAAf8B/QH4AfQB/wH9AfUB7wH/AbcBogGTAf8DAAH/AwAB/wMAAf8B2wHWAc0B/wHP - AcoBvgH/AboBtAGoAf8BrQGoAaAB/wGxAa0BqgH/AwAB/wMAAf8DAAH/AwAB/wGNAYkBhAH/AdcB1QHT - Af8BwwHAAbsB/wHGAcEBuAH/AdIBzQHEAf8B0AHLAcQB/wHGAcMBvQH/AgAB2AH/AgAB3wH/AgAB4AH/ - AgAB2wH/AgAB0wH/AgABywH/AgABwgH/AgABuwH/AgABsgH/AgABqQH/A6UB/wP7Af8D3wH/A6kB/wPa - Af8D9wH/A0UBfQFjAn8B/gGSAbcB+AH/AcMB1QH9Af8B5AHrAv8B9wH5Dv8CAAHbAf8B/gH3AfQB/wH9 - AfQB7wH/AbkBpAGVAf8B1AHFAboB/wMAAf8DEwEaA0UBfQN/Af4BwQHfAcIB/wHiAfEB4QH/Ae8B+AHv - Af8B+gH9AfoN/wMAAf8B/gH3AfQB/wH9AfQB7wH/AbkBpAGVAf8B1AHFAboB/wMAAf8DEwEaAesB6AHj - Af8B5wHjAd0B/wHYAdYBzgH/AcQBwgG8Af8C7gHtBf8D/QX/AZ8BnQGbAf8BjgGMAYoB/wGeAZsBmAH/ - AbsBuAG1Af8B1AHRAcwB/wHjAeEB3QH/AeUB4wHeAf8B1AHRAcwB/wP3Af8D9wH/A/cB/wO9Af8D+gH/ - A/UB/wPzAf8D8AH/A+wB/wPmAf8DwAH/A98B/wOtAf8D2gH/A/cB/wP3Af8EAANFAX0BWAJcAdECAAHq - Af8CAAHsAf8CAAHqAf8CAAHnAf8CAAHlAf8CAAHiAf8CAAHfAf8B/gH3AfMB/wH9AfQB7QH/AcABqwGc - Af8DAAH/AxMBGggAA0UBfQFYAVwBWAHRAQABigEAAf8BAAGIAQAB/wEAAYYBAAH/AQABhAEAAf8BAAGC - AQAB/wMAAf8DAAH/Af4B9wHzAf8B/QH0Ae0B/wHAAasBnAH/AwAB/wMTARoEAAHWAdEBxQH/Ac8ByQG9 - Af8BwwG9Aa8B/wGzAa0BnwH/AZsBlwGNAf8BoQGfAZgB/wG9AbsBtgH/AbYBtAGwAf8B5wHmAeUB/wP4 - Bf8B1QHSAc4B/wHFAcABtwH/Ac4ByQHAAf8BywHHAb8B/wHOAcoBxAH/A/cB/wP3Af8D9wH/A9MB/wOw - Af8DrQH/A6wB/wOtAf8DrAH/A6wB/wOsAf8DrgH/A+AB/wP3Af8D9wH/A/cB/wwAAdgBwgGyAf8B1wHB - AbEB/wHWAcABsAH/AdQBvgGuAf8B0gG9Aa0B/wHRAboBqwH/Ac8BuQGqAf8BzQG2AagB/wHLAbYBpgH/ - AcoBtAGlAf8DEgEZFAAB2AHCAbIB/wHXAcEBsQH/AdYBwAGwAf8B1AG+Aa4B/wHSAb0BrQH/AdEBugGr - Af8BzwG5AaoB/wHNAbYBqAH/AcsBtgGmAf8BygG0AaUB/wMSARkIAAGgAZQBAAH/AZUBhwEAAf8BiAIA - Af8DAAH/AwAB/wMAAf8BjQGCAQAB/wGLAYABAAH/AYkCAAH/AYoCAAH/AY8BgwEAAf8BmgGOAQAB/wGk - AZYBggH/AaMBlgGCAf8BmwGPAQAB/wHlAeIB3QH/CAADKQE/AkYBRwGBASkCTQH6AysB/AMrAfwBXAJe - Ac4DMgFRAyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AxcBIBgAAxcBIAMkATYDJAE2AyQBNgMkATYDJAE2 - AyQBNgMkATYDIwEzAxUBHQMXASADJAE2AyQBNgMkATYDJAE2AygBPAMkATYDJAE2AyQBNgMkATYDKAE8 - AyQBNgMkATYDJAE2AyQBNgMXASAPAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ - AwAB/wMAAf8DAAH/AwQBBgMYASECAAGlAf8CAAGvAf8CAAGEAf8BlAHHAfkB/wGRAckB+QH/AQABhQHJ - Af8CAAGsAf8BswHBAc0B/wPTAf8D0QH/A8sB/wPNAf8DxwH/AyQBNhMABAEBAgMlATcD/AH/A/wB/wP8 - Af8D/AH/A/wB/wP8Af8D/AH/A18B8wMjATMDJAE2A/wB/wP8Af8D/AH/A/wB/wM6AWED+wH/A/wB/wP8 - Af8D/AH/AzoBYQP7Af8D/AH/A/wB/wP8Af8DJAE2DAABtwGiAZMB/wH6AeIB0gH/Ad8BuAGeAf8B4AG2 + AdkBogEAAf8B9gHwAegB/wNdAfAMAANdAfAB9wH1AfQB/wHjAbUBlwH/AbgBtwGHAf8BkwHLAaEB/wEA + AdIBqAH/AQABywGbAf8BAAHIAZcB/wEAAckBmAH/AYMBuwGLAf8BpQGZAQAB/wHXAZ8BAAH/AfcB8AHp + Af8DXQHwBAAD/AH/AwAB/wMAAf8DAAH/AwAB/wIAAd4B/wIAAeIB/wIAAe4B/wMAAf8DAAH/AwAB/wMA + Af8DAAH/AwAB/wGVAYsBggH/Af0B/gL/A0oBjQNfAegDXwHzAcYBmwEAAf8BwwGWAQAB/wHGAZoBAAH/ + AcYBmgEAAf8BxgGaAQAB/wHEAZsBAAH/AdEBuAGpAf8D6gH/A/wB/wP2Af8D9AH/A00BkQMXASADXQHw + AfcB9QH0Af8B4wG1AZcB/wG4AbcBhwH/AZMBywGhAf8BAAHSAagB/wEAAcsBmwH/AQAByAGXAf8BAAHJ + AZgB/wGDAbsBiwH/AaUBmQEAAf8B1wGfAQAB/wH3AfAB6QH/A10B8AwAA10B8AH0AfMB8gH/AeMBtAGV + Af8B0AG0AY0B/wGpAbUBgAH/AZMBzAGhAf8BhAHRAaoB/wGCAdABpgH/AYsBwgGUAf8BmgGeAQAB/wHD + AZ0BAAH/AdYBnQEAAf8B9wHyAesB/wNdAfAEAAT/AdEBywHGAf8DAAH/AwAB/wMAAf8DAAH/AgABmwH/ + AgABjAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AucB6AX/CAADJAE2A6gB/QP0Af8D9QH/A/UB/wP1 + Af8D8QH/A+8B/wPpAf8D/AH/A+cB/wNNAZEDFwEgAwEBAgNdAfAB9AHzAfIB/wHjAbQBlQH/AdABtAGN + Af8BqQG1AYAB/wGTAcwBoQH/AYQB0QGqAf8BggHQAaYB/wGLAcIBlAH/AZoBngEAAf8BwwGdAQAB/wHW + AZ0BAAH/AfcB8gHrAf8DXQHwDAADYgHpA38B/gL0AfMB/wH3AfUB9AH/AfcB9QH0Af8B9wH1AfQB/wH3 + AfUB9AH/AfcB9QH0Af8B9wH1AfQB/wH3AfUB9AH/AfcB9QH0Af8B9wHzAewB/wHyAe8B6QH/A2IB7wQA + CP8BugGwAakB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8B1wHWAdQJ/wgA + AyMBMwNdAfADqAH9A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/gB/wNNAZEDFwEgAwEBAgQAA2IB6QN/ + Af4C9AHzAf8B9wH1AfQB/wH3AfUB9AH/AfcB9QH0Af8B9wH1AfQB/wH3AfUB9AH/AfcB9QH0Af8B9wH1 + AfQB/wH3AfUB9AH/AfcB8wHsAf8B8gHvAekB/wNiAe8MAANKAY0DXwHoA10B8ANdAfADXQHwA10B8ANd + AfADXQHwA10B8ANdAfADXQHwA10B8ANdAfADTAGPBAAM/wHPAcgBwgH/AYECAAH/AwAB/wGCAgAB/wGI + AgAB/wGGAgAB/wMAAf8DAAH/AZABgQEAAf8B5gHlAeQN/wgAAxQBHAMjATMDJAE2AyQBNgMkATYDJAE2 + AyQBNgMkATYDJAE2AyQBNgMXASADAQECCAADSgGNA18B6ANdAfADXQHwA10B8ANdAfADXQHwA10B8ANd + AfADXQHwA10B8ANdAfADXQHwA0wBj0gAEP8C/AH7Af8B0gHNAcYB/wGzAakBoAH/AacBmgGRAf8BqQGd + AZQB/wG7AbEBqgH/Ad0B2wHYJf8D7gH/A9IB/wPmAf8D/AH/A/sB/wPjAf8D0gH/A/AV/wHSAcUBvgH/ + AYECAAH/AYsCAAH/AYgCAAH/AYsCAAH/AZICAAH/AZsCAAH/AZwCAAH/AZ0CAAH/AZ8CAAH/AaACAAH/ + AaECAAH/AaECAAH/AZACAAH/A84B/wgAA70B/wOMAf8DggH/A4wB/wOZAf8BrgKsAf8DsgH/A6QB/wOM + Af8DjAH/A5kB/wO9Af8QAAMVAR0DIwE0AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2 + AyQBNgMjATMDFQEdDP8D7QH/A58B/wOQAf8DmAH/A6kB/wOnAf8DlwH/A5AB/wOiAf8D7BH/Ac8BwgG6 + Af8BmQIAAf8BpwIAAf8BmQIAAf8BkwIAAf8BpgIAAf8BuwIAAf8BxQGGAQAB/wHOAYwBAAH/AdABjwEA + Af8B0wGQAQAB/wHWAZMBAAH/AdsBlQEAAf8BqgIAAf8DzQH/BAADvQH/A5kB/wGuAqwB/wOMAf8DAAH/ + AwAB/wMAAf8DAAH/AZsCAAH/AZ4CgQH/AYICAAH/AwAB/wMAAf8BrgKsAf8MAAMjATQDWQH1A6gB/QP8 + Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A6gB/QNfAfMDIwEzCP8D/AH/A64B/wOTAf8DmQH/ + A5gB/wOWAf8DlgH/A5gB/wOZAf8DkwH/A60B/wP7Df8B0AHAAbgB/wGRAgAB/wHCAakBnAH/AcgBuwGz + Af8BhgIAAf8DAAH/AZICAAH/Aa8CAAH/Ab0BgQEAAf8BxgGHAQAB/wHLAYsBAAH/Ac0BjQEAAf8B1AGR + AQAB/wGoAgAB/wPNAf8EAAOkAf8B1wHVAdQC/wH9AfIB/wHiAfIB1gH/AfkB8wHhAf8B7gHBAZ0B/wHG + AYcBAAL/Aa0BrAL/AswC/wLZAv8C6gH/AdYCxAH/AwAB/wMAAf8DvQH/BwABAQMkATYDfwH+A/wB/wP8 + Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wOoAf0DJAE2CP8D0QH/A5IB/wOZAf8DmQH/ + A5kB/wOZAf8DmQH/A5kB/wOZAf8DmQH/A5IB/wPTDf8B0AHAAbgB/wGRAgAB/wHRAcQBvQH/AeUB4AHe + Af8B3QHVAdIB/wGdAYIBAAH/AwAB/wGBAgAB/wGdAgAB/wGyAgAB/wHBAYMBAAH/AckBigEAAf8B0gGP + AQAB/wGnAgAB/wPNAf8EAAOyAf8B1ALPAf8B8AHrAdMB/wEAAbEBAAH/AQABqgEAAf8CmQEAAv8BnQGk + Av8BnQGkAv8BrQGsAv8BvgG9Av8C6gX/AdYCxAH/AwAB/wOZAf8HAAEBAyQBNgP8Af8D/AH/A/wB/wP8 + Af8D/AH/A/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/A/wB/wMkATYE/wP7Af8DqQH/A5YB/wOZAf8DmQH/ + A5kB/wOZAf8DmQH/A5kB/wOZAf8DmQH/A5MB/wPGDf8B0AHBAbkB/wGSAgAB/wGnAgAB/wHdAdcB0wH/ + AdsB1AHRAf8B9QHzAfEB/wHHAboBtAH/AYACAAH/AwAB/wGKAgAB/wGoAgAB/wG+AYIBAAH/Ac4BjAEA + Af8BpQIAAf8DzQH/BAADvQH/AekB5QHhAf8B8QHlAckB/wEAAcMBAAH/AQABoAEAAf8BnwGdAQAC/wG3 + Ab0C/wGdAaQC/wGzAbQB/wH8AbsB0AL/AfMB9wn/AYgCAAH/AwAB/wQAAzgBXgNRAaAB7AH4AfwB/wHs + AfgB+wH/AYUB1wH3Af8BqgHiAfgB/wP7Af8D+wH/A/oB/wP6Af8D+gH/A/oB/wP6Af8D/AH/AyQBNgT/ + A+kB/wOXAf8DmQH/A5kB/wOZAf8DmQH/A5kB/wOZAf8DmQH/A5kB/wOVAf8DxQH/A/wN/wHQAcEBuQH/ + AZYCAAH/AaICAAH/AbMBkwGCAf8B7QLqAf8B1gHOAckB/wH5AfgB9wH/AfMB8AHvAf8BxAG3AbAB/wGR + AgAB/wGAAgAB/wGnAgAB/wHEAYQBAAH/AaQCAAH/Ac0CzgH/BAACxAHFAf8B6QHlAeEB/wHzAeEBvgH/ + AQAB5gEAAf8BAAGxAQAB/wHIAa0BnQL/AswC/wLMAf8B5gHHAdEB/wHHAbABrwH/AfEB4AHkAf8B+AH1 + AfQB/wH4AfUB9AH/AcEBqAGmAf8DAAH/BAADLwFJAQABzwH3Af8BAAHHAfUB/wEAAcMB8wH/AQABwwH0 + Af8BvAHoAfkB/wP7Af8D+wH/A/sB/wP6Af8D+gH/A/gB/wP4Af8D/AH/AyQBNgT/A9wB/wOTAf8DmQH/ + A5kB/wOZAf8DmQH/A5kB/wOZAf8DmQH/A5cB/wOiAf8D+BH/Ac0BvgG4Af8BkwIAAf8BrAIAAf8BmwIA + Af8B0AHBAbkB/wH3AfUB9AH/AdMByQHFAf8B+gL5Bf8B3QHWAdIB/wMAAf8BhAIAAf8BrwIAAf8BlgIA + Af8BywHNAcwB/wQAA8wB/wHsAukB/wH2AdoBswH/AQAB4AG1Af8BAAGmAcoB/wHGAaUBuAL/AswC/wHd + Ad4B/wHkAdUB3wH/AboBowGaAf8B7QHLAcwC/wLMAv8CzAH/Ac8CpgH/AwAB/wQAAyABLgEAAdAB9wH/ + AYMB3gH5Af8BAAHZAfkB/wEAAcEB9AH/AdQB8AH6Af8D/AH/A/wB/wP8Af8D+wH/A/kB/wP5Af8D+AH/ + A/wB/wMkATYE/wPaAf8DlAH/A5kB/wOZAf8DmQH/A5kB/wOZAf8DmQH/A5kB/wOUAf8DsRX/Ac0BvgG4 + Af8BkQIAAf8BrAIAAf8BowIAAf8BogIAAf8B8wHyAfEB/wH1AfMB8gH/AcABtwG0Af8B2QHUAdEF/wHP + AcUBvwH/AwAB/wGJAgAB/wGJAgAB/wHGAccByAH/BAABzQHHAb0B/wH2AdoBswH/AfUB0gGvAf8BAAGt + AfUB/wEAAZYB+wH/AacBoQHDAv8B8gH2Av8B8gH2Av8B8wL/AfIBvgHcAf8B/AG7AdAC/wGdAaQC/wGz + AbQB/wHCAowB/wOZAf8DAgEDAVUCVgGxAQAB2gH4Af8BjAHgAfoB/wGDAd0B+QH/AQAB0AH2Af8BAAHP + AfYB/wH5AfsB/AH/A/wB/wP8Af8D+gH/A/kB/wP2Af8D9gH/A/wB/wMkATYE/wPjAf8DlQH/A5kB/wOZ + Af8DmQH/A5kB/wOZAf8DmQH/A5kB/wOWAf8DpwH/A/sR/wHNAb8BuAH/AY8CAAH/AakCAAH/AakCAAH/ + AZoCAAH/AckBuAGvBf8B1gHNAckB/wHFAbgBsQn/AcIBtQGuAf8DAAH/AwAB/wG/Ar4B/wQAAdEBpwEA + Af8B8gGrAQAC/wHSAaYB/wH4AcQBnQH/Ad0BwgGjAf8BywGmAZ4B/wHpAegB8Ab/AvAC/wLMAv8BswG0 + Av8BnQGkAv8BnQGkAf8BmwIAAf8DzAH/A04BmQEAAdgB+QH/AQAB2gH4Af8BiwHgAfoB/wGCAd0B+QH/ + AQABzgH3Af8BAAHDAfQB/wEAAdMB9wH/A/wB/wP7Af8D+AH/A/YB/wPzAf8D8gH/A/wB/wMkATYE/wP4 + Af8DogH/A5UB/wOZAf8DmQH/A5kB/wOZAf8DmQH/A5kB/wOZAf8DlQH/A84B/wP9Df8BywG9AbYB/wGN + AgAB/wGnAgAB/wGmAgAB/wGiAgAB/wGhAgAB/wHaAdEByxX/AbUBogGYAf8DAAH/AbcBtAGyAf8EAAHH + AaoBiQH/AeMBtwGIAf8B+gHEAQAB/wH8AbYBAAL/AcABAAH/AfwBtgEAAf8B0gGkAYcB/wHsAukC/wHy + AfYC/wHdAd4C/wLMAv8BswG0Af8BswGDAYEB/wHCArwB/wQAAwcBCQMqAUADUAGeAQAB1wH4Af8BAAHS + AfgB/wGLAd4B+AH/AcUB7QH6Af8B9AH6AfwB/wP7Af8D+AH/A/UB/wPyAf8D7wH/A+0B/wP8Af8DJAE2 + CP8D3wH/A5gB/wOTAf8DlQH/A5QB/wOWAf8DlQH/A5UB/wOWAf8DkgH/A5kB/wPsDf8BygG8AbUB/wGL + AgAB/wGlAgAB/wGkAgAB/wGlAgAB/wGhAgAB/wGaAgAB/wHTAcYBwAb/Af4C/wH4AfcB9gH/AfUC9gH/ + AeQB3gHbAf8DAAH/AbIBrgGsAf8EAAO9Af8B2AHRAcYC/wHHAQAB/wH7AcsBggH/AfoBxAEAAv8BwAEA + Af8B8gGrAQAB/wHVAZkBAAH/AeIBtgGYAf8B5wG+AawB/wG+ApgB/wGeAoEB/wHCArwB/w8AAQEDJAE2 + AQAB2QH3Af8BAAHWAfcB/wP8Af8D/AH/A/sB/wP4Af8D9QH/A/EB/wPsAf8D6gH/A+YB/wP8Af8DJAE2 + DP8D3gH/A7IB/wOtAf8DwQH/A90B/wPUAf8DtQH/A6YB/wOxAf8D3wH/A/4N/wHKAb0BtgH/AYkCAAH/ + AaICAAH/AaICAAH/AaUCAAH/AaUCAAH/AaECAAH/AZgCAAH/AcgBuAGwAf8B8ALuAf8B2gHTAc8B/wHI + AbwBtgH/AcYBtwGvAf8BhAIAAf8BuAGzAbIB/wQAAdcB1QHUAf8B7QHlAd8B/wHjAdABxwH/AekB6AHw + Af8B7ALpAf8B6QHlAeEB/wHmAeIB2QH/AecB1AG0Af8B4QG5AYEB/wHgAbEBAAH/AYQCAAH/A5kB/xMA + AQEDJAE2AdAB8QH7Af8BywHuAfgB/wP5Af8D+QH/A/cB/wP2Af8D8gH/A+sB/wP8Af8D/AH/A/wB/wP8 + Af8DJAE2HP8D5AH/A6sB/wPfAf8D+hn/AcoBvQG2Af8BiAIAAf8BoQIAAf8BoAIAAf8BowIAAf8BpAIA + Af8BpgIAAf8BnwIAAf8BlAIAAf8BqwGTAYYB/wGsAZQBiAH/AZcCAAH/AZsCAAH/AwAB/wHKAckByAH/ + BAAB2QHcAd8B/wHYAcQBuAH/AbUBgQEAAf8BswGDAYEB/wHCAowB/wHFAZ4BnwH/Ac8CpgH/AdQCzwH/ + AeoB8QH4Af8B4gHkAekB/wOCAf8DmQH/EwABAQMkATYD/AH/A/cB/wP5Af8D9wH/A/cB/wPzAf8D8AH/ + A+oB/wP8Af8D9gH/A/QB/wNNAZEDFwEgHP8D8QH/A5YB/wOYAf8D7Bn/AcoBvQG2Af8BiAIAAf8BnwIA + Af8BnwIAAf8BoAIAAf8BowIAAf8BpAIAAf8BoQIAAf8BmAIAAf8BkgIAAf8BhAIAAf8DAAH/AwAB/wGH + AgAB/wLwAe8B/wgAAf8BzAGZAf8B/QHFAYsB/wH4AcQBnQH/AfgBxAGdAf8B7AG3AaMB/wHnAbABpQH/ + AewBxAHAAv8C6gL/AuoB/wMAAf8DmQH/FAADJAE2A6gB/QP0Af8D9QH/A/UB/wP1Af8D8QH/A+8B/wPp + Af8D/AH/A+cB/wNNAZEDFwEgAwEBAiD/A9UB/wOSAf8Dvxn/AcoBvQG2Af8BjAIAAf8BpAIAAf8BogIA + Af8BowIAAf8BpQIAAf8BpwIAAf8BpQIAAf8BngIAAf8BmAIAAf8BigIAAf8DAAH/AwAB/wHVAc0BygX/ + BAAB8wHKAZUB/wH9AcUBiwL/AdIBpgL/AdIBpgL/AdIBpgL/AdABuwL/AdQBxwH/Ac0BswGwAf8B5gHi + AdkF/wLEAcUB/wO9Af8UAAMjATMDXQHwA6gB/QP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP4Af8DTQGR + AxcBIAMBAQIEACT/A+cB/wPcAf8D/gH/A/4R/wHMAb8BuQH/AwAB/wGBAgAB/wGAAgAB/wGAAgAB/wGB + AgAB/wGCAgAB/wGCAgAB/wGAAgAB/wMAAf8DAAH/AY4CAAH/Ad8B1wHUCf8MAAHcAdgB1AH/AdQCzwH/ + AdQCzwH/AdgB0QHGAf8BzgK9Af8DzAH/JAADFAEcAyMBMwMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMk + ATYDJAE2AxcBIAMBAQIMAANbAcQDkQH/A5EB/wORAf8DkQH/A5EB/wORAf8DkQH/A5EB/wORAf8DkQH/ + A5EB/wORAf8DXwHgCAADFQEdAyMBNAMkATYDJAE2AU4CXQHwAT4CXAH4AT4CXAH4AT4CXAH4AT4CXAH4 + AT4CXAH4AT4CXAH4AT4CXAH4AT4CXAH4AVECbQH3AVkCWwHDBAADFQEdAyYBOQNYAbwDXAHMA1wBzANc + AcwDWwHEAyQBNgMkATYDJAE2AyQBNgMkATYDIwEzAxUBHQgAAxUBHQMjATQDJAE2AyQBNgMkATYDJAE2 + AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyMBMwMVAR0IAAOVAf8DvwH/A8MB/wPDAf8DwwH/A8MB/wPD + Af8DwwH/A8MB/wPDAf8DxAH/A8UB/wPCAf8DlQH/CAADIwE0A1kB9QOoAf0D/AH/AQABnAHOAf8B3QHs + AfYB/wG9Ae4B+QH/AawB6gH4Af8BqwHqAfgB/wGrAeoB+AH/AasB6gH4Af8BrQHqAfgB/wHUAfMB+wH/ + AaQByAHkAf8BVAJWAasEAAMjATQDWQH1A38B/gPLAf8DyAH/A8UB/wOmAf8D/AH/A/wB/wP8Af8D/AH/ + A6gB/QNfAfMDIwEzCAADIwE0A1kB9QOoAf0D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wOo + Af0DXwHzAyMBMwgAA7wB/wNkAfEDqAH9A/wB/wP8Af8D/AH/A/kB/wP2Af8D7AH/A9gB/wPgBf8D9wH/ + A8cB/wcAAQEDJAE2A38B/gP8Af8D/AH/Aa0B0gHoAf8BjgHCAeEB/wGXAegB+QH/AQAB3AH2Af8BAAHb + AfUB/wEAAYgBwgH/AQAB2wH1Af8BAAHeAfYB/wGxAecB9gH/AVQCYQHuAx0BKgMAAQEDJAE2A38B/gO2 + Af8DuQH/A6MB/wOyAf8DoAH/A/wB/wP8Af8D/AH/A/wB/wP8Af8DqAH9AyQBNgcAAQEDJAE2A38B/gP8 + Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8DqAH9AyQBNggAA8kB/wOoAf0D+wH/ + A/sB/wP7Af8D+wH/A/gB/wPzAf8D6wH/A9sB/wP9Af8D4gX/A8wB/wcAAQEDJAE2A/wB/wP8Af8D/AH/ + AfgB+gH7Af8BAAGxAdgB/wGrAdsB7wH/AQAB4AH3Af8BAAHaAfUB/wEAAdoB9QH/AQAB2wH1Af8BkAHm + AfgB/wGSAcEB4QH/A04BmQMAAQEDAAEBAyQBNgP8Af8DqAH/A4oB/wPtAf8DkgH/A5wB/wP7Af8D+wH/ + A/sB/wP7Af8D+wH/A/wB/wMkATYHAAEBAyQBNgP8Af8D/AH/AwAB/wIAAYkB/wEAAYoBvgH/AQABqAHL + Af8B4AHpAfEB/wP7Af8D+wH/A/sB/wP7Af8D/AH/AyQBNgMAAQEDAAEBA8kB/wP8Af8D+wH/A/sB/wP7 + Af8DrgH/A/kB/wO+Af8D4AH/A90B/wP8Af8D/QH/A+AB/wPLAf8HAAEBAyQBNgP8Af8D/AH/A/wB/wP8 + Af8ByQHjAfAB/wEAAb0B3wH/AaIB6gH5Af8BAAHcAfYB/wEAAYcBwgH/AQAB4QH3Af8BtgHeAfAB/wEA + AaUB0gH/AyoBQAMAAQEDAAEBAyQBNgP8Af8DnwH/A5wB/wMAAf8DoQH/A6gB/wP6Af8D+gH/A/oB/wP6 + Af8D+gH/A/wB/wMkATYHAAEBAyQBNgP8Af8D/AH/AgABhQH/AZQBxwH5Af8BkQHJAfkB/wEAAYUByQH/ + AgABrgH/AdQB4gHuAf8D+gH/A/oB/wP6Af8D/AH/AyQBNgMAAQEDAAEBA8kB/wP8Af8D+wH/A/sB/wP7 + Af8DrgH/A/oB/wPoAf8DugH/A+AB/wPfAf8D3QH/A9sB/wPHAf8DAAEBAwABAQMkATYD/AH/A/wB/wP8 + Af8D/AH/AvoB+wH/AYwBxwHjAf8BrAHZAewB/wGCAeMB+AH/AQABiAHCAf8BrAHtAfoB/wEAAZ4BzwH/ + Ab8B3AHtAf8DJAE2AwABAQMAAQEDJAE2A/wB/wO6Af8DAAH/A5UB/wOMAf8D0QH/A/sB/wP6Af8D+gH/ + A/gB/wP4Af8D/AH/AyQBNgcAAQEDJAE2A/wB/wP8Af8BAAGJAaoB/wHgAfIC/wEAAZoB2AH/AgABvgH/ + AQABmAHFAf8BAAGOAccB/wHYAeYB8wH/A/gB/wP4Af8D/AH/AyQBNgMAAQEDAAEBA8kB/wP8Af8D+wH/ + A/wB/wP8Af8DrgH/A/oB/wP4Af8DvAH/A+UB/wP2Af8D8wH/A+8B/wPIAf8DAAEBAwABAQMkATYD/AH/ + A/wB/wP8Af8D/AH/A/wB/wHgAfAB9gH/AQABtAHaAf8BtAHrAfgB/wGOAeYB+AH/AbUB3QHuAf8BAAG/ + Ad4B/wH4AfoB+wH/AyQBNgMAAQEDAAEBAyQBNgP8Af8D/AH/A7AB/wOwAf8DtgH/A/wB/wP8Af8D+wH/ + A/kB/wP5Af8D+AH/A/wB/wMkATYHAAEBAyQBNgP8Af8D/AH/AaUBwwHXAf8BAAG2AdUB/wGQAbcB0QH/ + AQAByQHkAf8BAAHfAfUB/wEAAdAB7QH/AQABnQHdAf8B3wHrAfUB/wP4Af8D/AH/AyQBNgMAAQEDAAEB + A8kB/wP8Af8D/AH/A/wB/wPLAf8DrwH/A/sB/wP5Af8D6AH/A8IB/wP7Af8D+gH/A/gB/wPIAf8DAAEB + AwABAQMkATYD/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8BqgHZAewB/wGkAdcB6wH/AdwB9AH7Af8BAAGz + AdkB/wHTAecB7wH/A/wB/wMkATYDAAEBAwABAQMkATYD/AH/A/wB/wO1Af8D7AH/A7cB/wP8Af8D/AH/ + A/oB/wP5Af8D9gH/A/YB/wP8Af8DJAE2BwABAQMkATYD/AH/A/wB/wP8Af8BsgHVAeUB/wEAAboB1wH/ + AcIB9gH9Af8BAAHfAfcB/wEAAeIB+AH/AQAB0wHwAf8BAAGYAdwB/wHeAekB8gH/A/wB/wMkATYDAAEB + AwABAQPJAf8D/AH/A/wB/wP8Af8D9QH/A8sB/wPuAf8DygH/A8cB/wO4Bf8D/gH/A/wB/wPJAf8DAAEB + AwABAQMkATYD/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8B8gH3AfkB/wEAAcQB4QH/AasB2wHtAf8BnQHS + AeYB/wPyAf8D/AH/AyQBNgMAAQEDAAEBAyQBNgP8Af8D/AH/A9UB/wPEAf8DtQH/A/wB/wP7Af8D+AH/ + A/YB/wPzAf8D8gH/A/wB/wMkATYHAAEBAyQBNgP8Af8D/AH/A/wB/wP8Af8BrwHUAeUB/wEAAcsB5wH/ + AccB9wH9Af8BAAHcAfUB/wEAAeEB9wH/AQAB1AHxAf8BAAGaAd0B/wHUAeUB9QH/AyQBNgMAAQEDAAEB + A8kB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D+wH/A/cB/wP3Bf8D/AH/A8kB/wMAAQEDAAEB + AyQBNgP8Af8D/AH/A/wB/wP8Af8D/AH/A/sB/wP4Af8BwwHjAe4B/wEAAcgB4gH/AeIB6wHtAf8D7QH/ + A/wB/wMkATYDAAEBAwABAQMkATYD/AH/A/wB/wOxAf8D6wH/A7MB/wP7Af8D+AH/A/UB/wPyAf8D7wH/ + A+0B/wP8Af8DJAE2BwABAQMkATYD/AH/A/wB/wP8Af8D/AH/A/wB/wG9AeUB8gH/AQAB0wHuAf8BxwH3 + Af0B/wEAAdwB9QH/AQAB4gH3Af8BAAHWAfIB/wEAAaIB4gH/AzgBXAMAAQEDAAEBAgAB3AH/AgAB8wH/ + AgAB6QH/AgAB6AH/AgAB5wH/AgAB4wH/AgAB4QH/AgAB3wH/AgAB3QH/AgAB3AH/AgAB2wH/AgAB3AH/ + AgAB7QH/AgAB3AH/AwABAQMAAQEDJAE2A/wB/wP7Af8D/AH/A/wB/wP7Af8D+AH/A/UB/wPxAf8D7AH/ + A+oB/wPmAf8D/AH/AyQBNgMAAQEDAAEBAyQBNgP8Af8D+wH/A9MB/wPBAf8DsQH/A/gB/wP1Af8D8QH/ + A+wB/wPqAf8D5gH/A/wB/wMkATYHAAEBAyQBNgP8Af8D+wH/A/wB/wP8Af8D+wH/A/gB/wG6AeMB8AH/ + AQAB1AHuAf8BxAH2Af0B/wEAAd0B9gH/AQABygHtAf8BAAGjAdcB/wFcAl0B8AMcAScDAAEBAgAB3AH/ + AgAB6wH/AgABvQH/AgABmAH/AgABvAH/AgAB3QH/AgAB3wH/AgAB3gH/AgAB1wH/AgABtQH/AgABkgH/ + AgABtAH/AgAB5gH/AgAB3AH/AwABAQMAAQEDJAE2A/wB/wP5Af8D+QH/A/kB/wP3Af8D9gH/A/IB/wPr + Af8D/AH/A/wB/wP8Af8D/AH/AyQBNgMAAQEDAAEBAyQBNgP8Af8D+QH/A64B/wPnAf8DrwH/A/YB/wPy + Af8D6wH/A/wB/wP8Af8D/AH/A/wB/wMkATYHAAEBAyQBNgP8Af8D+QH/A/kB/wP5Af8D9wH/A/YB/wPy + Af8BqAHZAegB/wGBAdYB7gH/AbIB4wH5Af8BiwHAAecB/wGuAdMB9gH/AcQB4AH8Af8BZgJtAfcDAAEB + AgAB3AH/AgAB2gH/AqEBrgH/A+AB/wKfAa4B/wIAAc4B/wIAAeEB/wIAAeEB/wIAAcwB/wKeAa4B/wPg + Af8CngGuAf8CAAHXAf8CAAHcAf8DAAEBAwABAQMkATYD/AH/A/cB/wP5Af8D9wH/A/cB/wPzAf8D8AH/ + A+oB/wP8Af8D9gH/A/QB/wNNAZEDFwEgBwABAQMkATYD/AH/A/cB/wPRAf8DvwH/A60B/wPzAf8D8AH/ + A+oB/wP8Af8D9gH/A/QB/wNNAZEDFwEgBwABAQMkATYD/AH/A/cB/wP5Af8D9wH/A/cB/wPzAf8D8AH/ + A+oB/wGvAeQB8wH/AQABvgHnAf8BtAHSAfAB/wHlAfMC/wGsAdIB7wH/AVcCXwHoAwABAQIAAdwB/wIA + AdIB/wLEAdYB/wPjAf8CxAHVAf8CAAHQAf8CAAHtAf8CAAHtAf8CAAHPAf8CxQHWAf8D4wH/AsQB1gH/ + AgABzwH/AgAB3AH/AwABAQQAAyQBNgOoAf0D9AH/A/UB/wP1Af8D9QH/A/EB/wPvAf8D6QH/A/wB/wPn + Af8DTQGRAxcBIAMBAQIIAAMkATYDqAH9A/QB/wOtAf8D5AH/A6wB/wPxAf8D7wH/A+kB/wP8Af8D5wH/ + A00BkQMXASADAQECCAADJAE2A6gB/QP0Af8D9QH/A/UB/wP1Af8D8QH/A+8B/wPpAf8D/AH/AawB1QHk + Af8BAAGlAdgB/wGFAbEB2wH/AQABnQHQAf8DOAFeBgAB3AH/AgABxwH/ArUBywH/A+YB/wKzAckB/wIA + AccB/wIAAdwB/wIAAdwB/wIAAccB/wK4Ac4B/wPmAf8CtgHNAf8CAAHHAf8CAAHcAf8IAAMjATMDXQHw + A6gB/QP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP4Af8DTQGRAxcBIAMBAQIMAAMjATMDXQHwA6gB/QPS + Af8DqwH/A6sB/wP8Af8D/AH/A/wB/wP4Af8DTQGRAxcBIAMBAQIMAAMjATMDXQHwA6gB/QP8Af8D/AH/ + A/wB/wP8Af8D/AH/A/wB/wP4Af8DTQGRAxcBIAMBAQITAAEBAywBRANdAcoDLgFIAwMBBAMAAQEDAAEB + AwMBBAMoATwDWQHHAywBRAMAAQEMAAMUARwDIwEzAyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMk + ATYDFwEgAwEBAhAAAxQBHAMjATMDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMXASADAQEC + EAADFAEcAyMBMwMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AxcBIAMBAQJcAAMyAVEBVQFX + AVUBtwFaAWEBWgHkAUIBWQFCAfUBQgFZAUIB9QFYAWEBWAHmAVcBWgFXAb0DOAFcFAADFQEdAyMBNAMk + ATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDIwEzAxUBHWAAA18B8wEAAa8BzgH/ + AQABogHWAf8BAAGcAdIB/wEAAaABwQH/AbYBvwHGAf8DBQEHEAADCgENA1YBtgEyAV8BMgH7AZsBxQGd + Af8BswHCAZ0B/wG9AcEBnAH/Ab4BwwGdAf8BsAHSAbEB/wEAAcABmgH/AysB/AFXAVkBVwG/AxEBFwwA + AyMBNANZAfUDqAH9A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8DqAH9A18B8wMjATNEAAMF + AQcQAAMfAS0BvgHXAeEB/wEAAbUB/gH/AQABugL/AQABsgL/AQABpwL/AQABmwL/AQABmQH0Af8ByAHJ + AcoB/wwAAwoBDQFYAVwBWAHRAQABtwGGAf8BrgHoAccB/wHAAdIBoAH/AcUBswGBAf8BygG0AQAB/wHM + Aa8BAAH/AbkBpwEAAf8BgAHMAZUB/wGgAdoBvAH/AQABqAEAAf8BXgFhAV4B2gMSARgHAAEBAyQBNgN/ + Af4D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A6gB/QMkATZEAAHOAa8BhgH/ + AZoBgAEAAf8BuAGuAaAB/wHHAb8BtAH/AcQBqwGEAf8B0wGOAQAB/wHKAdIBywH/AQABtwL/AQAByQL/ + AQABwQL/AQABuAL/AQABqwL/AQABoQL/AasBuwHFAf8MAAFVAlYBsQEAAcABjQH/AZkB1wGzAf8BAAHA + AYAB/wG8AcIBAAH/AcYBqQEAAf8B1wGxAQAB/wHWAa0BAAH/AbwBmwEAAf8BAAGtAQAB/wEAAZcBAAH/ + AYEBwQGZAf8BAAGpAQAB/wFXAVkBVwG/BwABAQMkATYD/AH/A/wB/wP8Af8D/AH/A/wB/wP7Af8D+wH/ + A/sB/wP7Af8D+wH/A/sB/wP8Af8DJAE2AwABAQFZAlcBvwJiAVgB7wNNAfoCXwEyAfsCXwFAAfsCXwFC + AfsCXwFFAfsCXwFHAfsCXwFJAfsCXwFKAfsCXwFLAfsCXwFLAfsDTQH6AmUBUgH0AmEBWwHhAVkCVwG/ + AeMByAGmAf8BtwIAAf8BwwIAAf8BzQIAAf8B3AGQAQAB/wHbAZABAAH/AeEB0gG7Af8BAAG6Av8BAAHA + Av8BAAHQAv8BAAHGAv8BAAHBAv8BAAGsAv8BAAGxAc4B/wgAAy0BRgFTAV8BXQH7AbUB6gHTAf8BAAG8 + AQAB/wEAAb0BAAH/Ab4BtgEAAf8ByQGjAQAB/wHfAasBAAH/Ad0BqAEAAf8BwQGSAQAB/wGdAakBAAH/ + AQABsQEAAf8BAAGWAQAB/wGmAdwBwAH/AS8BegEyAf4DNwFaAwABAQMkATYD/AH/A/wB/wP8Af8D/AH/ + A/sB/wP7Af8D+gH/A/oB/wP6Af8D+gH/A/oB/wP8Af8DJAE2AwABAQFgAV0BWgHeA6gB/QN/Af4B+wH1 + AfAB/wH7AfcB8QH/AfsB9wHzAf8B+wH4AfQB/wH8AfkB9QH/AfwB+QH1Af8B/AH5AfYB/wH8AfkB9wH/ + AfwB+gH3Af8B/AH6AfcB/wOoAf0DbQH3Al4BWAHdA0YBfwG7AgAB/wHDAgAB/wHWAYwBAAH/AdwBmQEA + Af8B2gGaAQAB/wHtAcMBiQH/AY4B1gH9Af8BAAG1Av8BAAHWAv8BAAHSAv8BAAHHAv8BAAHEAv8BAAGs + AegB/wM3AVsEAANVAbIBkgHXAa8B/wGgAd4BtAH/AYQBxgEAAf8BqAHQAYAB/wHFAaUBAAH/AdABpwEA + Af8B4AGqAQAB/wHaAaYBAAH/AccBmAEAAf8BuQGMAQAB/wG2AZsBAAH/AYEBnwEAAf8BAAG/AZAB/wGB + Ab4BnAH/AVcBWQFXAb8DAAEBAyQBNgP8Af8D/AH/A/wB/wP8Af8D+wH/A/sB/wP7Af8D+gH/A/oB/wP4 + Af8D+AH/A/wB/wMkATYDAAEBAX8BbwE8Af4B/AH5AfUB/wHsAdABvAH/AfkB5AHWAf8B/gHsAd8B/wH+ + AesB3wH/Af4B6wHeAf8B/gHrAdsB/wH+AesB3AH/Af4B6gHdAf8B/QHqAdsB/wH9AegB2AH/AfgB4AHN + Af8B6gHLAbMB/wHzAesB4wH/An8BUAH+AwEBAgHLAZABAAH/AcoCAAH/AdkBkwEAAf8B4AGjAQAB/wHl + AbEBAAH/AdsBnQEAAf8BygHpAfYB/wEAAa8C/wEAAbsC/wEAAbkC/wEAAb4B/AH/AQABwgH1Af8BAAG0 + AfoB/wNfAfMEAAFaAmEB5AGwAekBzwH/AYMB1AGQAf8BvwHcAYoB/wHDAcsBggH/AcwBogEAAf8B2gGv + AQAB/wHcAa8BAAH/AckBmgEAAf8BvwGGAQAB/wG3AYQBAAH/AbkBmgEAAf8BlgGlAQAB/wEAAaYBAAH/ + AaIB2AG9Af8BVwFfAVcB6AMAAQEDJAE2A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP7Af8D+QH/ + A/kB/wP4Af8D/AH/AyQBNgMAAQEBwgIAAf8B/QH7AfgB/wH5AeMB0gH/AewBzwG5Af8B+AHhAdAB/wH9 + AecB1gH/AfQB1QG9Af8B6QG/AaAB/wHpAb8BogH/AfQB0wG9Af8B/QHmAdQB/wH3Ad4ByQH/AesBygGw + Af8B+AHbAcQB/wH4AfIB7AH/AckBjAEAAf8EAAHdAbMBAAH/AdMBhgEAAf8B3AGYAQAB/wHjAasBAAH/ + AeoBvAEAAf8B3gGiAQAB/wNiAekBAAG1Av8BmgHXAfEB/wHCAeUB3AH/AbIB2gHIAf8BnwHJAbUB/wGV + AbkBrgH/Ac8B1QHWAf8EAAFgAmIB9gG+Ae8B3QH/AQAB0QEAAf8BkAHRAQAB/wG8AeABngH/AccBpwEA + Af8B0wGwAQAB/wHGAZkBAAH/AcYBvAEAAf8BrwHRAQAB/wG0AcQBAAH/Aa8BqQEAAf8BAAGpAQAB/wEA + AaMBAAH/AbEB4wHOAf8BUQFtAVEB9wMAAQEDJAE2A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP6 + Af8D+QH/A/YB/wP2Af8D/AH/AyQBNgMAAQEBxQIAAf8B/QH7AfkB/wH9AekB2AH/AfkB4QHQAf8B6wHK + AbMB/wHsAcUBpwH/AeMBtgGYAf8B9wHnAd0B/wH3AegB3gH/AeMBtgGXAf8B7AHDAaQB/wHqAcUBqQH/ + AfgB2gHCAf8B/AHfAcYB/wH4AfMB7QH/AcgBjQEAAf8EAANbAcQBzQGeAQAB/wHXAZMBAAH/AeQBowEA + Af8B6wG1AQAB/wH1AdYBpQH/AwUBBwHIAeYB3QH/AQABrwEAAf8BAAG5AYUB/wEAAbcBgwH/AQABsAEA + Af8BAAGlAQAB/wEAAZoBAAH/AwgBCwNZAfUBvgHwAdwB/wGBAdgBgwH/AQAB2wEAAf8BvwHlAZoB/wHM + Ad8BpwH/AcoBqAEAAf8BwgG9AQAB/wG4AdoBiwH/AaYB2AEAAf8BAAHRAQAB/wEAAdABAAH/AQABvAEA + Af8BAAGrAQAB/wGyAeQBzgH/AUgBYgFIAfYDAAEBAyQBNgP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP7 + Af8D+AH/A/YB/wPzAf8D8gH/A/wB/wMkATYDAAEBAckBhgEAAf8B/QH7AfkB/wH9AegB1wH/Af0B5gHU + Af8B7QHGAasB/wHcAaoBiQH/AfkB7AHjAv8B+wH5Av8B/AH6Af8B+QHuAeYB/wHcAagBhwH/Ae0BvwGc + Af8B/AHbAcAB/wH8AdsBwAH/AfgB8wHtAf8ByAGMAQAB/wQAAwoBDgEAAZEB1AH/AaQBrAHAAf8DzAH/ + AcYByQHbAf8BAAGeAeMB/wEAAYkB6AH/A6gB/QEAAbIBAAH/AQABzgGuAf8BAAHAAZUB/wEAAbsBiQH/ + AQABqQEAAf8BAAGQAQAB/wPVAf8DYQHiAbMB7AHSAf8BmwHiAaIB/wGdAeoBjQH/AdQB7QG3Af8B0AHq + AccB/wHPAbkBAAH/AcwBsQEAAf8BywHJAQAB/wEAAdsBAAH/AQAB2QEAAf8BAAHXAQAB/wEAAdMBAAH/ + AQABuwEAAf8BpQHbAcIB/wFYAWEBWAHmAwABAQMkATYD/AH/A/wB/wP8Af8D/AH/A/wB/wP7Af8D+AH/ + A/UB/wPyAf8D7wH/A+0B/wP8Af8DJAE2AwABAQHMAY4BAAH/Af0B+wH5Af8B/QHlAdMB/wHxAcwBsgH/ + AeMBtQGWAf8B+QHqAeAC/wH5AfUB/wH+AfMB6gH/Af4B9AHtAv8B+wH5Af8B+QHtAeUB/wHjAbABjQH/ + AfABwQGeAf8B/AHXAbcB/wH4AfMB7QH/AcgBjAEAAf8KAAHrAf8CAAHvAf8CAAHtAf8CAAHsAf8CAAHn + Af8CAAHjAf8DqAH9AQAByQGiAf8BAAG5AYgB/wEAAcEBlAH/AQABugGEAf8BAAGdAQAB/wEAAY8BAAH/ + AaEBrAGjAf8DVQGtAZgB3gG1Af8BtQHrAcwB/wGxAe8BpwH/AckB7gGpAf8B0QHqAckB/wHVAc8BjQH/ + AdkBywGLAf8BzQG0AQAB/wK8AQAB/wGaAdYBAAH/AYIB3gEAAf8BAAHcAQAB/wGRAdABowH/AYgByAGk + Af8BVgFYAVYBuQMAAQEDJAE2A/wB/wP7Af8D/AH/A/wB/wP7Af8D+AH/A/UB/wPxAf8D7AH/A+oB/wPm + Af8D/AH/AyQBNgMAAQEB0AGWAQAB/wH9AfsB+QH/AfEBzQGxAf8B4wG1AZYB/wH5AekB3gH/Af4B9wHx + Af8B/QHtAeEB/wH+Ae8B5AH/Af4B8QHnAf8B/gHzAeoC/wH6AfcB/wH5AewB4wH/AeIBrgGKAf8B8AG8 + AZUB/wH4AfQB7AH/AcgBjAEAAf8IAAGWAasB8AH/AgAB3QH/AgAB7AH/AQABhwHwAf8BAAGPAfIB/wIA + AeYB/wGcAcQB3QH/AZMB0AG2Af8BAAG/AZAB/wEAAboBhgH/AQABqwEAAf8BAAGQAQAB/wEAAYUBAAH/ + AQABjwEAAf8DKAE8A00B+gHAAfMB4gH/AbUB7wG0Af8BtQHwAawB/wHBAe0BtwH/AdQB4wG3Af8B2QHY + AZwB/wHaAdMBlQH/Ac0BtQEAAf8BxwGzAQAB/wG1AcsBhAH/AZQB3wGaAf8BrwHnAc0B/wMrAfwDMQFP + AwABAQMkATYD/AH/A/kB/wP5Af8D+QH/A/cB/wP2Af8D8gH/A+sB/wP8Af8D/AH/A/wB/wP8Af8DJAE2 + AwABAQJ/AXsB/gH7AfYB8gH/AeMBtAGWAf8B+QHoAdwB/wH+AfUB7gH/Af0B6QHaAf8B/QHqAdwB/wH9 + AewB3gH/Af0B7QHhAf8B/gHvAeQB/wH+AfEB5wL/AfoB9gH/AfkB6gHgAf8B4gGqAYUB/wHxAeQB2QH/ + An8BUAH+CAADYAHWAgAB0wH/AgAB4gH/AgAB6gH/AQABhQHvAf8CAAHwAf8BAAGQAdsB/wGmAckBuwH/ + AQABwAGKAf8BAAGzAYQB/wEAAbUBjwH/AQABpwEAAf8BAAGIAQAB/wEAAYQBAAH/BAADUwGlAYcB1wGg + Af8BwAHyAd4B/wHHAfIB1gH/AdUB7wHVAf8B0AHpAc8B/wHVAdsBpgH/AdwB3gGrAf8B2wHNAZAB/wHX + AcgBiwH/AckBwQGOAf8BvQHVAa8B/wEAAccBkQH/A1YBtgcAAQEDJAE2A/wB/wP3Af8D+QH/A/cB/wP3 + Af8D8wH/A/AB/wPqAf8D/AH/A/YB/wP0Af8DTQGRAxcBIAQAA2EB3AN/Af4B/AH1AfEC/wH8AfkC/wH8 + AfkC/wH8AfkC/wH8AfkC/wH8AfoC/wH8AfoC/wH8AfoC/wH8AfsC/wH9AfsC/wH9AfwB/wH7AfYB8wH/ + A6gB/QJfAVoB2wgAAwIBAwIAAdQB/wIAAc8B/wIAAdwB/wIAAeQB/wIAAecB/wIAAd8B/wGtAb8BwgH/ + AbIB4gHNAf8DFwEgCAADBQEHA2IB6QQAAwQBBQNbAcQBjAHYAaIB/wHNAfUB6AH/AdQB7QHaAf8BzgHt + AdMB/wHPAd8BrwH/AdYB3gG1Af8C1AGiAf8BzgHQAaEB/wHEAdABqgH/AYcByQGRAf8BWAJcAdEDCwEP + CAADJAE2A6gB/QP0Af8D9QH/A/UB/wP1Af8D8QH/A+8B/wPpAf8D/AH/A+cB/wNNAZEDFwEgAwEBAgQA + A1kBvwNdAfADXwH7AagBjwFAAf0BqAGOAUAB/QGoAY4BQAH9AagBjAFAAf0BqAGLAUAB/QGoAYoBQAH9 + AagBiAFAAf0BqAGGAUAB/QGoAYQBQAH9AysB/AJtAVEB9wJfAVgB4wFZAlcBvwwAAaABqwHvAf8CAAHO + Af8CAAHJAf8CAAHNAf8CAAHPAf8BAAGAAekB/wMmATggAAMDAQQDUgGkA1wB+AGlAeEBuwH/AboB6gHM + Af8BxQHgAb4B/wHFAdoBtAH/Ab0B1wGwAf8BpgHXAawB/wFdAl8B+wNWAbYDCQEMDAADIwEzA10B8AOo + Af0D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D+AH/A00BkQMXASADAQECmAADKAE9A1MBqgNcAd8BYQJl + AfQDXAH4AWECYgHpA1UBsgMuAUgUAAMUARwDIwEzAyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMk + ATYDFwEgAwEBAkwABP8B7gH0AfgB/wHBAdUB4AH/AY8BsQHEAf8BAAGTAbgB/wIAAZsB/wHOAdAB0gH/ + A/gB/wP4Af8D9AH/AZcBqAGzAf8BAAGCAbwB/wGEAakByAH/Af0C/mH/AekBowEAAf8B2gIAAf8B2gIA + Af8B6QGjAQAZ/wHdAeoB9wH/AawBwwHcAf8BwAGKAQAB/wHLAgAB/wHSAgAB/wHTAgAB/wEAAYUBiAH/ + AQABnAHIAf8BAAGIAboB/wGCAZ0BvQH/AcQB3QHzGf8BAAGxAdoB/wEAAbUB6gH/AQABvQHzAf8BAAHH + Af4B/wEAAbMB6wH/AwAB/wMAAf8DAAH/AwAB/wIAAYgB/wEAAb4C/wEAAbMB9gH/AQABqAHYAf8BxwHa + AetF/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wGKAgAB/wHqAaUBAAH/AeoBpQEAAf8BigIAAf8DAAH/ + AwAB/wMAAf8DAAH/AwAB/wMAAf8BAAGcAeIB/wEAAYUBrAH/AcgCAAL/AboBAAL/AbcBAAL/AbABAAH/ + AQABrwHHAf8BhgHpAfkB/wEAAdkB9QH/AQABkQHIAf8BAAGGAcsZ/wEAAcQB5wH/AQABywH8Af8BAAHF + AfgB/wEAAccB/gH/AQABggGcAf8BzwHKAcgJ/wG6AbMBsQH/AQABjQG8Af8BAAG8Av8BAAG8Av8BAAG8 + Af4B/wEAAbgB8AX/A78B/wOgAf8DmgH/A5MB/wONAf8DhgH/A4AB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ + AwAB/wMAAf8DAAH/A4kB/wMAAf8DjQH/A40B/wONAf8DjQH/A40B/wMAAf8B7QGvAYYB/wHtAa8BhgH/ + AwAB/wONAf8DjQH/A40B/wONAf8DjQH/AwAB/wEAAYUB0wH/AZMBrAHMAf8B5wGvAQAC/wG4AQAB/wH+ + AbABAAH/Af4BpwEAAf8BAAGpAccB/wGhAeYB+AH/AQAB0gHyAf8BAAHWAfYB/wEAAZQBzgH/AaoBwAHY + Af8B8wH2AfsB/wHzAfcB/A3/AQABxQHkAf8BAAHHAfgB/wEAAc8C/wEAAaEByQH/AwAB/wHYAdUB1AX/ + Af4E/wH9AfoB/wEAAb4B9gH/AQABpAHiAf8BAAGRAckB/wEAAboB9gH/AbkB5QH7Bf8DrgH/A+kB/wPT + Af8D0gH/A9EB/wPQAf8DzgH/A80B/wPNAf8DywH/A8sB/wPKAf8DyQH/A8gB/wPiAf8DAAH/AwAB/wMA + Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wGEAgAB/wGEAgAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA + Af8B3QHDAbUB/wG3AgAB/wH9AdcBsgL/AdYBhAL/AcoBAAL/AcABAAH/AbQBqgGGAf8BAAGgAcMB/wGZ + AeIB9gH/AQAB3AH1Af8BAAHZAfYB/wEAAZUBzgH/AQABjgHTAf8BAAGPAdYB/wG2AcsB4gn/Ae8B+AH7 + Af8BrwHTAeIB/wEAAagB0QH/AQABmAGkAf8B7wHoAeYB/wH8Av0B/wH6AvwB/wH8Av0F/wEAAc8B/QH/ + AwAB/wMAAf8BgAGfAacJ/wO1Af8D1gH/A7sB/wO5Af8DtgH/A7QB/wOyAf8DsQH/A64B/wOsAf8DqwH/ + A6kB/wOoAf8DpwH/A8gB/wMAFf8D5QH/AwAB/wOJAf8DiQH/AwAd/wHdAbIBmwH/Ac8CAAL/AegBwAH/ + Aa0BqgGGAf8BpwGeAQAB/wGgAZIBAAH/Ac4BvwGoAf8BAAGlAcsB/wEAAbEB1AH/AQAB2QHyAf8BAAHb + AfYB/wEAAd0B9wH/AQAB2AH1Af8BAAGEAc8B/wGxAcUB3wn/AegC5wH/AwAB/wHCAr8F/wH2AvcB/wH6 + AvwB/wH8Av0B/wH9B/8DAAH/AwAB/wGCAoAJ/wO8Af8D2QH/A74B/wO7Af8DjgH/A48B/wOQAf8DkAH/ + A48B/wOPAf8DjQH/A4sB/wOqAf8DqQH/A8oB/wMAAf8DvgH/A6AB/wObAf8DlwH/A5IB/wOOAf8DigH/ + A4UB/wOBAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8Dkwn/AcsBngGHAf8CAAGWAf8BAAGtAecB/wGB + AbEB4wH/AQABsgHnAf8BAAGYAcQB/wMAAf8BAAGeAaIB/wGJAd0B9AH/AQAB4AH2Af8BAAHiAfcB/wEA + Ad8B9gH/AQAB2gH2Af8BAAGEAc8N/wMAAf8DpQX/AfcC+QH/AfsC/AH/AfwC/QH/Af4D/wH+A/8DAAH/ + AwAB/wGQAo4J/wPDAf8D3QH/A8IB/wO+Af8DkQH/A5IB/wOUAf8DlAH/A5MB/wOSAf8DkQH/A48B/wOt + Af8DrQH/A88B/wMAAf8DqQH/A+kB/wPNAf8DygH/A8kB/wPIAf8DyAH/A8UB/wPFAf8DwwH/A8UB/wPC + Af8DwQH/A8AB/wPiAf8DAAn/AbsBtwG6Af8BAAGkAdYB/wGsAdEB8gH/Aa4B1wH9Af8BsAHUAfUB/wGS + AcAB5wH/AQABgwGJAf8BAAGvAcYB/wGpAe4B+QH/AQAB5gH4Af8BmgHoAfgB/wEAAdEB8AH/AYAB4gH2 + Af8BAAGYAdoN/wPPAf8DAAH/AfEC8wH/Af4D/wH8Av0B/wH8Av0B/wH+A/8BwgLDAf8DAAH/AwAB/wHI + AscJ/wPXAf8D3QH/A8gB/wPBAf8DwAH/A74B/wO7Af8DuQH/A7gB/wO2Af8DtAH/A7EB/wOwAf8DtAH/ + A8AB/wOUAf8DrgH/A9YB/wOSAf8DlAH/A5IB/wOQAf8DiwH/A44B/wOLAf8DigH/A4UB/wOHAf8DhgH/ + A4YB/wPIAf8DAAn/AQABjgG3Af8BpwG/AdsB/wGWAcUB8QH/AaEB0AH7Af8BlgHGAfMB/wG2Ac8B5AH/ + AgABpwH/AQABuAGtAf8BAAHBAekB/wGjAfAB+wH/AYAB1AHwAf8BAAHHAewB/wEAAaIB2AH/AQABiAHQ + Df8D/QH/AwAB/wOxBf8B/QL8Af8D/AH/AfAC8QH/AwAB/wMAAf8DAAH/A/4J/wPbAf8D6AH/A+cB/wPh + Af8D4AH/A+AB/wPfAf8D3wH/A94B/wPdAf8D3QH/A9wB/wPbAf8D4AH/A80B/wOZAf8DsgH/A9kB/wO0 + Af8DrQH/A6sB/wOpAf8DrAH/A6cB/wOkAf8DowH/A6QB/wOfAf8DnQH/A5wB/wPKAf8DAAn/AgABqQH/ + AgABmgH/AQABgAGuAf8BAAGmAdYB/wIAAaUB/wIAAZIB/wIAAZgB/wEAAdABnwH/AQABswG0Af8BAAHJ + AewB/wHJAfMB+wH/AQABvAHjAf8BAAGkAYoB/wGIAacBixH/A94B/wGBAoAB/wH2AfQB8wH/AecB5QHm + Av8B/gH8Af8BwQLCAf8DAAH/AwAB/wPoDf8D9AH/A9kB/wPsAf8D3gH/A9gB/wPSAf8DzAH/A8gB/wPH + Af8DyAH/A8sB/wPQAf8D3QH/A+gB/wOgAf8D3QH/A7cB/wPdAf8DlwH/A5gB/wOXAf8DlgH/A5AB/wOS + Af8DkQH/A48B/wOKAf8DiwH/A4oB/wOKAf8DzwH/AwAJ/wHFAcwB1QH/AgABlgH/AgABkAH/AgABkAH/ + AgABkAH/AgABkAH/AQABjwGeAf8BhAGZAZMB/wEAAZQBigH/AQABkwGwAf8BAAG0AdcB/wEAAa8BpgH/ + AQABrgEAAf8B9gH6AfcV/wGvAq4B/wEAAa4BvgH/AQABwgHhAf8BAAHQAeoB/wMAAf8DAAH/AbkCuBX/ + A98B/wPoAf8D2wH/A+IB/wPiAf8D4QH/A+AB/wPgAf8D4AH/A98B/wPDAf8D0QH/A9IB/wOoBf8DzQH/ + A9oB/wPDAf8DuQH/A7gB/wO3Af8DtgH/A7IB/wOxAf8DrwH/A68B/wOqAf8DqQH/A60B/wPDAf8Dng3/ + AawBtwHFAf8CAAGbAf8CAAGSAf8CAAGYAf8CAAGHAf8CAAGUAf8BAAGtAecB/wGBAbEB4wH/AQABsgHn + Af8BAAGYAcQB/wEAAZEBAAH/AfYB+QH2Gf8BwAK+Af8BAAGyAc8B/wEAAd0B/AH/AQAB1wH3Af8CAAGD + Af8DAAH/A/gV/wP1Af8D3gH/A/MB/wPtAf8D7QH/A+0B/wPtAf8D7QH/A+wB/wPsAf8D7AH/A/EB/wOx + Af8D4wX/A9AB/wPjAf8D5wH/A+EB/wPgAf8D4AH/A98B/wPfAf8D3gH/A90B/wPdAf8D3AH/A9sB/wPg + Af8D0AH/A6Ed/wG7AbcBugH/AQABpAHWAf8BrAHRAfIB/wGuAdcB/QH/AbAB1AH1Af8BkgHAAecB/wEA + AZIBqh3/Aa0CqgH/AwAB/wHHAdUB2AH/AbEBuQG7Af8DAAH/AwAd/wPiAf8D1QH/A9IB/wPOAf8DyQH/ + A8QB/wO/Af8DuQH/A7MB/wOtAf8DpgH/A7kJ/wPwAf8DzgH/A+wB/wPeAf8D2AH/A9IB/wPMAf8DyAH/ + A8cB/wPIAf8DywH/A9AB/wPdAf8D6AH/A6UB/wPfHf8BAAGgAcUB/wG4AdAB5wH/AZYBxQHxAf8BoQHQ + AfsB/wGWAcYB8wH/AbYBzwHkAf8BAAGTAccd/wGYApcB/wMAAf8DAAH/AwAB/wMAAf8DAFn/A9MB/wPj + Af8D2wH/A+IB/wPiAf8D4QH/A+AB/wPgAf8D4AH/A98B/wPDAf8D0QH/A9MB/wOrIf8BAAGjAccB/wEA + Aa4B5QH/AQABuAHmAf8BjQHIAfYB/wEAAa0B5gH/AQABpwHlAf8BAAGeAdcd/wPCAf8DAAH/AwAB/wMA + Af8DAAH/AbACrln/A/EB/wPRAf8D8wH/A+0B/wPtAf8D7QH/A+0B/wPtAf8D7AH/A+wB/wPsAf8D8QH/ + A7AB/wPjIf8BwwHPAdkB/wEAAaQB3wH/AQABpgHlAf8BAAGmAeUB/wEAAaYB5QH/AQABpgHlAf8BgwGr + AcUh/wMAAf8DAAH/AwAB/wGnAqJh/wPWAf8DxQH/A8EB/wO+Af8DugH/A7YB/wOyAf8DrgH/A6kB/wOl + Af8DoQH/A7Yp/wGoAb4BzQH/AQABnQHVAf8BAAGlAeQB/wEAAaEB3wH/AQABpgHEAf8C+gH7Cf8IAAMC + AQMDXAHMAwAB/wMAAf8DAAH/AwAB/wNdAcpcAAMmATkDRAF6AlUBUwGwAcsCAAH/AdICAAH/AdMCAAH/ + AdECAAH/Ac0CAAH/AVwCVwHfA0cBgAM3AVsgAAGoAZUBQAH9AcoBmAEAAf8BygGXAQAB/wHKAZcBAAH/ + AcoBlwEAAf8BygGXAQAB/wHJAZcBAAH/AckBlwEAAf8BygGYAQAB/wGoAZQBQAH9FAADEAEVA5IB/wHV + AtMB/wHiAeAB3wH/Ad8B3AHbAf8B4QLfAf8DZQH0XAABWAJhAeYBAAGFAawB/wHIAgAC/wG6AQAC/wG3 + AQAC/wGwAQAC/wGyAQAC/wG0AQAB/wHeAYgBAAH/AYcCAAH/AQABmwHmAf8UAANOAZkDXQHSAwAB/wHH + AZUBAAH/AfkB9wH2Af8B+QHxAewB/wH5AfEB6wH/AfgB8AHpAf8B9wHtAeYB/wH0AeoB4QH/AfIB6AHe + Af8B+gH4AfYB/wHHAZQBAAH/AwAB/wNYAdEDRAF6DAADQAFvA1oBvQHEAcIBwQH/AdQBzwHOAf8DYgH2 + A1EBnANdAdIDAAH/AwAB/wMAAf8DAAH/AwAB/wNdAdcEAANAAXABUgJUAaYBVQJcAeoBUQJtAfcBUQJt + AfcBUQJtAfcBUQJtAfcBUQJtAfcBUQJtAfcBUQJtAfcBUQJtAfcBUQJtAfcBUwJkAfEDTAGTBAADKwH8 + AZMBrAHMAf8B5wGvAQAC/wG4AQAB/wH+AbABAAH/Af4BpwEAAf8B/QGgAQAC/wGXAQAB/wH9AZMBAAH/ + AbMBnwGiAf8BAAGWAd4B/xQAA0AB/QOnAf8DtQH/A4EB/wGvAawBqgH/AcUBwAG9Af8BxQHAAb0B/wHF + AcABvQH/AcUBwAG9Af8BxQHAAb0B/wHFAcABvQH/Aa0BqgGoAf8DAAH/A7UB/wObAf8DAAH/A0oBjQNc + AcwDXAHMA1wBzANgAd4DngH/A5oB/wNcAfgDhAH/AocBhgH/AYcBhgGFAf8BogGgAZ8B/wHTAc4BzQH/ + AdMBzgHNAf8B6ALlAf8DAAH/BAABWAJhAeYDXQHwAacCqAH9AZ4B2wH0Af8BlgHaAfMB/wGOAdgB8wH/ + AYYB1wHzAf8BAAHUAfIB/wEAAdMB8gH/AQAB0gHxAf8BAAHQAfEB/wEAAc8B8QH/A38B/gFOAl0B8AQA + AjUBNAFVA1kB9QH9AdcBsgL/AdYBhAL/AcoBAAL/AcABAAL/AbQBAAL/AacBAAL/AcUBkgH/AdYCAAH/ + AU4CTQGWFwAB/wO1Af8DtQH/A5UB/wOBAf8DgQH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wO1 + Af8DtQH/AwAB/wOuAf8B5ALiAf8B1wLVAf8B1QHTAdIB/wHRAc4BzQH/AcoBxAHDAf8ByAHDAcIB/wHN + AckByAH/AcwCygH/AcwBygHJAf8B2ALWAf8DAAH/AbkBsQGuAf8BtwGvAa4B/wHTAc4BzQH/AwAB/wQA + AVECbQH3Ae8B+gH+Af8BoQHpAfkB/wGRAeUB+AH/AYEB4QH3Af8BAAHeAfYB/wEAAdoB9QH/AQAB1wH0 + Af8BAAHTAfMB/wEAAdAB8gH/AQABzQHxAf8BAAHLAfAB/wHKAfIB+wH/AVECbQH3CAADOwFkAl8BUwHz + Af8B6AHAAf8BrQGqAYYB/wGnAZ4BAAH/AaABkgEAAf8B9wHKAZwB/wHkAZQBAAH/A1EBoAMHAQoXAAH/ + A7sB/wO7Af8DjQH/A9QB/wO5Af8DuQH/A7kB/wO5Af8DuQH/A7kB/wPTAf8DgwH/A7sB/wO7Af8DAAH/ + A7QB/wHgAt0B/wGnAgAB/wGnAgAB/wGnAgAB/wGnAgAB/wGnAgAB/wGnAgAB/wGnAgAB/wGnAgAB/wHa + AdUB1AH/AwAB/wG6AbIBsQH/AbkBsQGvAf8B1AHPAc4B/wMAAf8EAAE+AlwB+AHyAfoB/QH/AbMB7QH6 + Af8BpAHpAfkB/wGVAeYB+AH/AYUB4gH3Af8BAAHeAfYB/wEAAdsB9QH/AQAB1wH0Af8BAAHUAfMB/wEA + AdEB8gH/AQABzgHxAf8BzAHyAfsB/wFRAm0B9wwAA0QBeQNNAfoBAAGtAecB/wGBAbEB4wH/AQABsgHn + Af8BAAGYAcQB/wMAAf8BAAGkAQAB/wEAAagBAAH/AQABpwEAAf8BAAGjAQAB/wFXAVwBVwHfA0cBgAM3 + AVsDAAH/A9cB/wPXAf8DlwH/A9gB/wO/Af8DvwH/A78B/wO/Af8DvwH/A78B/wPXAf8DjgH/A9cB/wPX + Af8DAAH/A7oB/wHeAtsB/wG1AYABAAH/Ac4BmAEAAf8B2AGuAZEB/wHZAa8BkQH/AdkBrwGRAf8B2gGv + AZEB/wHWAaABAAH/AacCAAH/AdcB0wHRAf8DAAH/AbsBtAGzAf8BuwGzAbEB/wHUAdABzwH/AwAB/wQA + AUECagH5AfYB/AH+Af8ByAHyAfwB/wG5Ae8B+wH/AawB7AH6Af8BnAHoAfkB/wGLAeMB9wH/AQAB4AH2 + Af8BAAHcAfYB/wEAAdkB9QH/AQAB1gH0Af8BAAHTAfMB/wHQAfMB/AH/AVECbQH3DAADPAFmAXICfwH+ + AawB0QHyAf8BrgHXAf0B/wGwAdQB9QH/AZIBwAHnAf8BAAGDAYkB/wEAAc8BlAH/AQABzgGOAf8BAAHO + AY8B/wEAAc4BkQH/AQABtAEAAf8BAAGPAQAB/wEAAZsB5gH/AwAB/wP5Af8D+QH/A6sB/wPfAf8DywH/ + A8sB/wPLAf8DywH/A8sB/wPLAf8D3wH/A6MB/wP5Af8D+QH/AwAB/wPAAf8B3wLcAf8BtAIAAf8BywGV + AQAB/wHNAZcBAAH/Ac8BmQEAAf8B0QGbAQAB/wHSAZwBAAH/AdQBngEAAf8BpwIAAf8B1wHUAdMB/wOE + Af8BAAGhAQAB/wEAAZQBAAH/AdYB0QHQAf8DAAH/BAADTQH6Af4D/wH4Af0C/wH2Af0C/wH1AfwC/wHz + AfwB/gH/AdgB9gH8Af8BlAHmAfgB/wGFAeMB9wH/AQAB3wH2Af8BAAHbAfUB/wEAAdgB9AH/AdcB9AH8 + Af8BUQJtAfcMAAFUAlYBqwGnAb8B2wH/AZYBxQHxAf8BoQHQAfsB/wGWAcYB8wH/AbYBzwHkAf8CAAGn + Af8BAAHOAY8B/wEAAc0BiQH/AQABywGDAf8BAAHLAQAB/wEAAckBAAH/AQABlgEAAf8BAAGWAd4B/wNq + AfkD/AH/A/wB/wPLAf8D8gH/A/IB/wPyAf8D8gH/A/IB/wPyAf8D8gH/A/IB/wPGAf8D/AH/A/wB/wNw + Af4DxQH/AeEB3gHcAf8BswIAAf8BxwGRAQAB/wHJAZMBAAH/AcsBlQEAAf8BzQGXAQAB/wHPAZkBAAH/ + AdEBmwEAAf8BpwIAAf8B2QHVAdQB/wOLAf8BoAHIAaQB/wEAAakBAAH/AdcB0wHRAf8DAAH/BAADTQH6 + AegB9gH7Af8BlAHUAe8B/wGIAc4B7gH/AQABwQHpAf8ByQHpAfYB/wHyAfwB/gH/AfMB/AH+Af8B8gH8 + Af4B/wHwAfwB/gH/Ae8B+wH+Af8B7gH7Af4B/wH+A/8BUQJtAfcMAAJZAVsBxAIAAZoB/wEAAYABrgH/ + AQABpgHWAf8CAAGlAf8CAAGSAf8CAAGYAf8BAAHQAZ8B/wEAAc4BlwH/AQABzQGOAf8BAAHNAYgB/wGd + AdgBqwH/AQABsAEAAf8BTQFOAU0BlgNdBNIB/wPoAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ + AwAB/wMAAf8DAAH/A+gB/wPEAf8DXAHcA8oB/wHhAd8B3gH/AbECAAH/AcQBjgEAAf8BxgGQAQAB/wHI + AZIBAAH/AcoBlAEAAf8BzAGWAQAB/wHOAZgBAAH/AacCAAH/AdsC1gH/A5EB/wHBAbsBuQH/AcABuQG4 + Af8B1wLTAf8DhAH/BAABWQJnAfIB8QH6Af0B/wGUAd4B9QH/AZMB3AH0Af8BgQHVAfIB/wEAAcoB7QH/ + AQABywHqAf8BhQHTAe8B/wGAAdIB7wH/AQAB0AHvAf8BAAHPAe4B/wEAAc8B7gH/AekB9wH7Af8BTAJf + AfMMAAErAiwBQwJAAZUB/QIAAZAB/wIAAZAB/wIAAZAB/wIAAZAB/wEAAY8BngH/AYQBmQGTAf8BAAGU + AYkB/wEAAYwBAAH/AaQB1QGxAf8BggG/AYUB/wNRAaADBwEKAy0BRQOaAf8DzAH/AccBiwEAAf8B+QH0 + Ae0B/wH+AegB2AH/Af4B6AHXAf8B/QHlAdMB/wH8AeQB0QH/AfoB4AHHAf8B+QHdAcMB/wH6AfQB7QH/ + AccBhQEAAf8DwwH/AwAB/wMtAUUDzgH/AeIC3wH/AbACAAH/AbECAAH/AbECAAH/AbICAAH/AbMCAAH/ + AbQCAAH/AbUBgAEAAf8BpwIAAf8B3AHYAdcB/wOYAf8DjQH/A4oB/wHZAdUB1AH/A4sB/wQAAU4CXQHw + AfcB/AH+Af8BjgHkAfgB/wGRAd4B9QH/AZ8B4AH1Af8BrAHhAfYB/wHvAfsB/gH/AfQB/QH+Af8B8wH8 + Af4B/wHxAfwB/gH/Ae8B+wH+Af8B7gH7Af4B/wNqAfkBXAJgAdQQAAM6AWEBUwFhAWQB8QIAAZIB/wFD + Al8B+wJZAVwBzANNAfoBAAGtAecB/wGBAbEB4wH/AQABsgHnAf8BAAGYAcQB/wNWAbYDCAELCAADOwFj + A18B8wHFAYkBAAH/AfkB9AHvAf8B/gHnAdcB/wH9AecB1QH/AfwB5gHSAf8B+wHhAcwB/wH4AdwBwgH/ + AfYB2gG9Af8B+gH0Ae8B/wHEAYMBAAH/A10B8wM7AWMEAAPTAf8B8QLvAf8B4gLfAf8B4gLfAf8B4QHf + Ad4B/wHhAd4B3QH/AeAB3QHcAf8B3wHcAdsB/wHeAtsB/wHeAdsB2QH/Ae0B7AHrAf8DngH/AcUBvwG+ + Af8BwwG9AbsB/wHaAdYB1QH/A5EB/wQAAT4CXAH4Af0C/gH/Af4D/wL+Av8B/QH+Av8B/gP/AeoB9wH7 + Af8DagH5A1wB+ANcAfgDXAH4A20B9wNhAeEDNQFWIAADPAFmAXICfwH+AawB0QHyAf8BrgHXAf0B/wGw + AdQB9QH/AZIBwAHnAf8BUwJVAa0QAAMHAQkCagFHAvkB9AHwAf8B/AHmAdMB/wH9AecB0wH/AfsB4wHN + Af8B+gHgAcgB/wH1AdYBuwH/AfMB1AG1Af8B+AH0AfAB/wJqAUcB+QMHAQkIAANqAfkD0wH/A9AB/wPM + Af8DyAH/A8MB/wO/Af8DugH/A7UB/wOwAf8DqgH/A6UB/wGUApMB/wGSApEB/wHbAdcB1gH/A5gB/wQA + AVsCXgHQA00B+gNNAfoDTQH6A00B+gNNAfoBWAJeAd0DEAEWAwsBDwMLAQ8DCwEPAwsBDwMLAQ8DAwEE + IAADSgGNAbgB0AHnAf8BlgHFAfEB/wGhAdAB+wH/AZYBxgHzAf8BtgHPAeQB/wFXAlwB3xQAAm0BUQH3 + AfkB9QHxAf8B/AHjAc8B/wH8AeQBzwH/AfoB4QHKAf8B+QHdAcQB/wH0AekB3wH/AfcB8gHsAf8B9QHv + AekB/wJfAUUB+yAAAy4BSANhAeQD3wH/A+oB/wHPAcoByQH/AcsBxgHFAf8BygHEAcMB/wHIAcMBwQH/ + AccCwQH/AdwB2QHYAf8DngH/XAADTAGSAQABrgHlAf8BAAG4AeYB/wGNAcgB9gH/AQABrQHmAf8BAAGn + AeUB/wFYAmIB7xQAAmIBSQH2AfkB9QHxAf8B/AHjAc0B/wH7AeMBzQH/AfkB4AHIAf8B+AHcAcIB/wH9 + AfsB+AH/AfwB5gHNAf8B4gG2AYQB/wJUAVIBpiQAAwsBDwNWAasD3AH/AeYC4wH/AeEB3gHcAf8B3wLc + Af8B3wHcAdsB/wHeAtsB/wHuAuwB/wOlAf9cAAErAiwBQwFAAaMBqAH9AQABpgHlAf8BAAGmAeUB/wEA + AaYB5QH/AQABpgHlAf8BSwJMAZAUAANNAfoB9wHyAewB/wH4AfQB7gH/AfgB8wHtAf8B+AHzAe0B/wH4 + AfIB7AH/AfIB5gHXAf8B4gGyAQAB/wNiAfYDBQEHLAADUQGfA18B+wPEAf8DwAH/A7sB/wO2Af8DsAH/ + A1IBp2AAAzoBYQFTAmQB8QEAAaUB5AH/ASICXwH7A1ABnQMEAQYUAAM6AWACWAFWAbsCfwFPAf4ByAGM + AQAB/wJtAVEB9wJtAVEB9wJ/AUwB/gNOAZQUAAP3Af8D9wH/A/cB/wO8Af8DAAH/AwAB/wMAAf8DAAH/ + AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wO2Af8PAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ + AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/DwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ + AwAB/wMAAf8DAAH/AwAB/wGNAgAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AZ4BjQEAAf8BngGNAQAB/wGe + AY0BAAH/AZ4BjQEAAf8BngGNAQAB/wGcAYwBAAH/AZUBhAEAAf8BiQIAAf8BkQGFAQAF/wP3Af8D9wH/ + A/cB/wO+Af8D/QH/A/4B/wP+Af8D/gH/A/4B/wP+Af8D/gH/A/4B/wP+Cf8DqgH/DAABtwGiAZMB/wH6 + AeIB0gH/Ad8BuAGeAf8B4AG2AZkB/wHiAbQBlQH/AeIBsQGRAf8B5AGvAYwB/wHlAa0BiAH/AeYBqwGE + Af8B5wGnAQAB/wHoAaUBAAH/AesBowEAAf8DAAH/DAABtwGiAZMB/wH6AeIB0gH/Ad8BuAGeAf8B4AG2 AZkB/wHiAbQBlQH/AeIBsQGRAf8B5AGvAYwB/wHlAa0BiAH/AeYBqwGEAf8B5wGnAQAB/wHoAaUBAAH/ - AesBowEAAf8DAAH/AyABLgNlAfQBxAHGAcoB/wHAAcYBzAH/AQABiQGqAf8B4AHyAv8BAAGaAdgB/wIA - Ab4B/wEAAZgBxQH/AQABjQHFAf8BugHIAdQB/wPpDf8DJAE2DAADFwEgAyQBNgMlATcDOgFhA/wB/wP8 - Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wP8Af8DJAE2AyQBNgP8Af8B8AHBAYwB/wHuAbgBAAH/A/wB/wM6 - AWED+wH/AQABpgH6Af8BAAGZAfoB/wP8Af8DOgFhA/sB/wEAAekBAAH/AQAB6AEAAf8D/AH/AyQBNgwA - AbkBpAGVAf8B+wHmAdoB/wH7AecB2gH/AfsB5gHZAf8B+gHlAdgB/wH7AeQB1gH/AfsB4gHTAf8B+QHg - AdAB/wH4Ad0BzAH/AfkB2wHJAf8B+AHaAccB/wHpAaQBAAH/AwAB/wMEAQYDOgFgAgABswH/AQABjwG/ - Af8CAAGnAf8BAAG2AdUB/wGQAbcB0QH/AQAByQHkAf8BAAHfAfUB/wEAAdAB7QH/AQABnAHcAf8BtwHC - AcwB/wPmAf8D+wH/A/wB/wMkATYHAAQBAQIDJQE3A/wB/wP7Af8DxwH/A/wB/wP8Af8D/AH/A/wB/wP7 - Af8D+gH/A/oB/wP8Af8DJAE2AyQBNgP8Af8B8gHcAcMB/wHvAdkBwAH/A/wB/wM6AWED+wH/AbYB0AH2 - Af8BswHNAfMB/wP8Af8DOgFhA/sB/wG4Ae4BtwH/AbUB6wG0Af8D/AH/AyQBNgwAAbsBpgGWAf8B+wHs - AeIB/wH8AewB4gH/AdYBrgGQAf8B1gGuAZAB/wHWAa4BkAH/AdYBrgGQAf8B1gGuAZAB/wHWAa4BkAH/ - AfgB3gHOAf8B+AHbAcoB/wHnAacBgAH/AwAB/wMgAS4DZQH0AcQBxgHKAf8BwAHGAcwB/wIAAa4B/wGx - AdMB5AH/AQABugHXAf8BwgH2Af0B/wEAAd8B9wH/AQAB4gH4Af8BAAHTAfAB/wEAAZgB3AH/AbgBwgHM - Af8D5gH/A/wB/wMkATYDFwEgAyQBNgMlATcDOgFhA/wB/wP7Af8DxgH/A/wB/wP8Af8D/AH/A/wB/wP6 - Af8D+QH/A/cB/wP8Af8DJAE2AyQBNgP8Af8B7QHXAb4B/wH5Ae0B3wH/A/wB/wM6AWED+wH/AbEBywHy - Af8B2AHmAfwB/wP8Af8DOgFhA/sB/wGzAekBsgH/Ad8B+AHeAf8D/AH/AyQBNgwAAb4BqAGZAf8B/QHw - AegB/wH9AfAB6QH/Af0B8AHoAf8B/AHvAecB/wH8Ae0B5QH/AfsB6wHhAf8B+wHoAdwB/wH6AeUB1wH/ - AfoB4gHTAf8B+QHeAc4B/wHmAawBhQH/AwAB/wMEAQYDOgFgAgABswH/AQABkgHBAf8CAAGvAf8D+QH/ - Aa0B0gHjAf8BAAHLAecB/wHHAfcB/QH/AQAB3AH1Af8BAAHhAfcB/wEAAdQB8QH/AQABmgHdAf8BqwG9 - AcwB/wPoAf8DJAE2AyQBNgP8Af8D+wH/A8cB/wP8Af8D+wH/A8cB/wP8Af8D/AH/A/wB/wP7Af8D+QH/ - A/YB/wP0Af8D/AH/AyQBNgMkATYD/AH/A/wB/wP4Af8DJQE3AzEBTwP8Af8D/AH/A/gB/wMlATcDMQFP - A/wB/wP8Af8D+AH/AyQBNgMXASABnwIAAf8BmwIAAf8BmQIAAf8BlwIAAf8BlAIAAf8BkgIAAf8BkAIA - Af8BjgIAAf8BjAIAAf8BiwIAAf8B1gGuAZAB/wHWAa4BkAH/AfsB5QHXAf8B+gHhAdIB/wHkAa4BigH/ - AwAB/wMgAS4DZQH0AcQBxgHKAf8BwAHGAc0B/wIAAbEB/wP6Af8D+QH/AboB4wHwAf8BAAHTAe4B/wHH - AfcB/QH/AQAB3AH1Af8BAAHiAfcB/wEAAdYB8gH/AQABoQHhAf8BtgHEAdAB/wMmATgDJAE2A/wB/wP7 - Af8DxgH/A/wB/wP7Af8DxwH/A/wB/wP8Af8D+wH/A/gB/wP2Af8D8wH/A+8B/wP8Af8DJAE2AxcBIAMk - ATYDJAE2AyQBNgMXASADFwEgAyQBNgMkATYDJAE2AxcBIAMXASADJAE2AyQBNgMkATYDFwEgBAABoQIA - If8BjQIAAf8B/AHvAegB/wH8AewB4gH/AfsB6AHcAf8B+gHkAdYB/wHjAbEBjwH/AwAB/wMEAQYDOgFg - AgABtQH/AQABlAHCAf8CAAGyAf8D+gH/A/gB/wHgAZ8BAAH/AakBpAGRAf8BAAHUAe0B/wHEAfYB/QH/ - AQAB3QH2Af8BAAHKAe0B/wEAAaMB1wH/AQABoQHUAf8DNAFUAyQBNgP8Af8D+wH/A8cB/wP8Af8D+wH/ - A8cB/wP8Af8D+wH/A/gB/wP1Af8D8gH/A+0B/wPqAf8D/AH/AyQBNgcAAQEDXwHoAwABAQsAAQEDAAEB - AwABAQsAAQEDAAEBA18B6AgAAaQCAAX/AcACAAH/AZkCAAL/AdIBwAH/AY4CAAH/AcACAAL/Ab8BqwX/ - AY4CAAH/AdYBrgGQAf8B1gGuAZAB/wH7AeoB4QH/AfsB5gHaAf8B4gGzAZUB/wMAAf8DIAEuA2UB9AHE - AcYBygH/AcABxwHNAf8CAAGyAf8D+wH/A/oB/wP4Af8D+AH/AbEB4gHxAf8BgQHWAe4B/wGyAeMB+QH/ - AYsBwAHnAf8BrgHTAfYB/wHEAeAB/AH/AWUCagH5AyQBNgP8Af8D+wH/A8cB/wP8Af8D+wH/A8YB/wP8 - Af8D+AH/A/YB/wPyAf8D6wH/A/wB/wP8Af8D/AH/AyQBNggAA0sBjgNfAegDXwHoA18B6ANfAegDNQFX - AzUBVwNfAegDXwHoA18B6ANfAegDSwGOCAABpwIABf8BwAIAAf8BsAIAAv8B0wHBAf8BjwIAAf8B2AGa - AQAC/wHEAbAF/wGQAgAB/wH9AfQB7wH/AdYBrgGQAf8B/AHtAeQB/wH7AekB3QH/AeABtgGZAf8DAAH/ - AwQBBgM6AWABAAGCAbUB/wEAAZYBwwH/AgABtAH/A/oB/wP6Af8B4AGiAQAB/wHgAaABAAH/AeABoAEA - Af8BnAGnAZsB/wEAAb4B5wH/AbQB0gHwAf8B5QHzAv8BrAHSAe8B/wNdAe0DJAE2A/wB/wP7Af8DxwH/ - A/wB/wP6Af8DwwH/A/wB/wP3Af8D8wH/A+8B/wPqAf8D/AH/A/YB/wNNAZEDFwEgFAADFwEgAyQBNgNd - Ae0DXQHtAyQBNgMXASAUAAGpAgAB/wH4AfAB5QH/AZwCAAH/AbwCAAH/AZgCAAH/AZQCAAH/AakCAAL/ - AcoBtwX/AZICAAH/Af4B9gHyAf8B1gGuAZAB/wH8Ae4B5gH/AfsB6gHfAf8B3gG4AZ0B/wMAAf8DIAEu - A2UB9AHEAcYBygH/AcABxwHNAf8CAAG1Af8D+QH/A/kB/wHhAaMBAAH/AeoBwAGjAf8B6gHAAaIB/wHq - Ab8BoQH/Aa4BuQG0Af8BAAGlAdgB/wGFAbEB2wH/AQABnQHQAf8BRgJHAYADJAE2A/wB/wP7Af8DxgH/ - A/wB/wP4Af8DwwH/A/oB/wP8Af8D/AH/A/wB/wP8Af8D+AH/A00BkQMXASADAQECEwABAQMkATYD/AH/ - A/wB/wP8Af8D/AH/AyQBNgMAAQEQAAGsAgAC/wH5AfUB/wGiAgAB/wH1AdIBuAH/AZ8CAAL/AdYBxAH/ - AZQCAAH/AeIBqgEABf8BlAIAAf8B/gH4AfMB/wHWAa4BkAH/AfwB8AHpAf8B/AHsAeEB/wHdAboBoQH/ - AwAB/wMEAQYDOgFgAQABgwG3Af8BAAGZAcQB/wIAAbcB/wP4Af8D+AH/AeEBpQEAAf8B4QGjAQAB/wHh - AaMBAAH/AeABogEAAf8B4AGgAQAB/wHgAaABAAH/A/QB/wP6Af8DJAE2AyQBNgP8Af8D+gH/A8MB/wP8 - Af8D9wH/A9YB/wO9Af8DuAH/A8cB/wPCAf8DUwGoAzEBTwMXASADAQECFwABAQMkATYD/AH/A/sB/wP6 - Af8D/AH/AyQBNgMAAQEQAAJcAT4B+AH8AfAB5gH/AaUCAAH/AfQB5wHaAf8BnAIAAf8B5gHTAcQB/wGP - AgAB/wGgAgAF/wGWAgAB/wHWAa4BkAH/AdYBrgGQAf8B/QHxAekB/wHcAbwBpQH/Ad0BuwGkAf8DAAH/ - AyABLgNlAfQBxAHHAcoB/wHAAccBzQH/AgABtwH/A/cB/wP3Af8D9wH/A/cB/wP3Af8D9QH/A/UB/wP1 - Af8D8wH/A/oB/wMkATYDJAE2A/wB/wP4Af8DwwH/A/oB/wP8Af8D/AH/A/wB/wP7Af8D9wH/A00BkQMY - ASEDAgEDHwABAQMkATYD/AH/A/QB/wPvAf8D/AH/AyQBNgMAAQEQAAJcAVgB0QHsAdQBvQL/AfkB9AL/ - AfUB7wL/Ae4B4gL/AeUB2AL/AeEB0gL/AeEB0QX/AZkCAAH/Af0B+AH0Af8B/QH1Ae8B/wG3AaIBkwH/ - AwAB/wMAAf8DAAH/AwQBBgM6AWABAAGHAbkB/wEAAZoBxQH/AgABuAH/A/cB/wP3Af8D9wH/A/cB/wP1 - Af8D9AH/A/QB/wP0Af8D8gH/A/sB/wMkATYDJAE2A/wB/wP3Af8D1gH/A70B/wO4Af8DxwH/A8IB/wNT - AagDMQFPAxcBIAMBAQIjAAEBAyQBNgP8Af8D7AH/A/wB/wP8Af8DJAE2AwABARAAA0UBfQGoAaYBQAH9 - AewB1AG9Af8B/AHwAeYC/wH5AfUC/wH9AfwN/wGcAgAB/wH+AfcB9AH/Af0B9AHvAf8BuQGkAZUB/wHU - AcUBugH/AwAB/wMTARoDIAEuA2UB9AHEAccBygH/AcEBxwHNAf8CAAG4Af8D/AH/A/wB/wP8Af8D/AH/ - A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/AyQBNgMkATUDagH5A/wB/wP8Af8D/AH/A/sB/wP3Af8DTQGR - AxgBIQMCAQMrAAEBAyQBNgP8Af8D/AH/A/gB/wMkATYDFwEgGAADRQF9AlwBWAHRAbMCAAH/Aa0CAAH/ - AakCAAH/AacCAAH/AaQCAAH/AaICAAH/AZ8CAAH/Af4B9wHzAf8B/QH0Ae0B/wHAAasBnAH/AwAB/wMT - ARoIAAMuAUgBAAGLAcIB/wIAAb4B/wIAAboB/wMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2 - AyQBNgMkATYDFwEgAxYBHgMkATUDJAE2AyQBNgMkATYDJAE2AyQBNgMXASADAQECMAADFwEgAyQBNgMk - ATYDJAE2AxcBICQAAdgBwgGyAf8B1wHBAbEB/wHWAcABsAH/AdQBvgGuAf8B0gG9Aa0B/wHRAboBqwH/ - Ac8BuQGqAf8BzQG2AagB/wHLAbYBpgH/AcoBtAGlAf8DEgEZDAADGgElAyIBMgMgAS8DIAEvAyABLwMg - AS8DIAEvAyABLwMgAS8DIgEyAxIBGB8AAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA - Af8DAAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA - Af8DAAH/CAADKQE/AkYBRwGBAzsBZAMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMk - ATYDFwEgAxABFQM+AWsDRAF8A0MBdwNDAXcDQwF3A0MBdwNDAXcDQwF3A0MBdwNFAX4DMwFTAwQBBhgA - AbcBogGTAf8B+gHiAdIB/wHfAbgBngH/AeABtgGZAf8B4gG0AZUB/wHiAbEBkQH/AeQBrwGMAf8B5QGt - AYgB/wHmAasBhAH/AecBpwEAAf8B6AGlAQAB/wHrAaMBAAH/AwAB/wwAAbcBogGTAf8B+gHiAdIB/wHf - AbgBngH/AeABtgGZAf8B4gG0AZUB/wHiAbEBkQH/AeQBrwGMAf8B5QGtAYgB/wHmAasBhAH/AecBpwEA - Af8B6AGlAQAB/wHrAaMBAAH/AwAB/wMEAQYDGAEhAgABpQH/AgABrwH/AgABqwH/A9wB/wPYAf8D1AH/ - A9IB/wPRAf8D0wH/A9EB/wPLAf8DzQH/A8cB/wMkATYBRwJGAYABqAJAAf0BngIAAf8BoAIAAf8BogIA - Af8BpAIAAf8BpQIAAf8BowIAAf8BoQIAAf8BngIAAf8BoAIAAf8BZwJZAfIDLQFFGAABuQGkAZUB/wH7 - AeYB2gH/AfsB5wHaAf8B+wHmAdkB/wH6AeUB2AH/AfsB5AHWAf8B+wHiAdMB/wH5AeAB0AH/AfgB3QHM - Af8B+QHbAckB/wH4AdoBxwH/AekBpAEAAf8DAAH/DAABuQGkAZUB/wH7AeYB2gH/AfsB5wHaAf8B+wHm - AdkB/wH6AeUB2AH/AfsB5AHWAf8B+wHiAdMB/wH5AeAB0AH/AfgB3QHMAf8B+QHbAckB/wH4AdoBxwH/ - AekBpAEAAf8DAAH/AyABLgNlAfQBxAHGAcoB/wHAAcYBzAH/AgABrAH/A/0B/wP7Af8D+AH/A/QB/wPt - Af8D1QH/A+kN/wMkATYBWQJWAb4B6gHPAbUB/wHTAbsBqwH/AfwB+wH5Af8B/g//AfsD/wH2AfsB/QH/ - Af0D/wHKAaYBhAH/AVYCVQG0GAABuwGmAZYB/wH7AewB4gH/AfwB7AHiAf8B1gGuAZAB/wHWAa4BkAH/ - AdYBrgGQAf8B1gGuAZAB/wHWAa4BkAH/AdYBrgGQAf8B+AHeAc4B/wH4AdsBygH/AecBpwGAAf8DAAH/ - DAABuwGmAZYB/wH7AewB4gH/AfwB7AHiAf8B1gGuAZAB/wHWAa4BkAH/AdYBrgGQAf8B1gGuAZAB/wHW - Aa4BkAH/AdYBrgGQAf8B+AHeAc4B/wH4AdsBygH/AecBpwGAAf8DAAH/AwQBBgM6AWACAAGzAf8BAAGP - Ab8B/wIAAa4B/wP6Af8B9AH3AfkB/wHaAeIB6AH/AYUBgAEAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wHV - AdwB4gH/Ay0BRQFXAlUBugHzAeAByAH/AYcCAAH/AYoCAAL/Af4B+QH/AfoB/QL/AfQB9QH2Af8B8wH0 - AfUB/wHuAe8B8QH/AuUB5AH/AegB7gHyAf8DfwH+A1UBshgAAb4BqAGZAf8B/QHwAegB/wH9AfAB6QH/ - Af0B8AHoAf8B/AHvAecB/wH8Ae0B5QH/AfsB6wHhAf8B+wHoAdwB/wH6AeUB1wH/AfoB4gHTAf8B+QHe - Ac4B/wHmAawBhQH/AwAB/wwAAb4BqAGZAf8B/QHwAegB/wH9AfAB6QH/Af0B8AHoAf8B/AHvAecB/wH8 - Ae0B5QH/AfsB6wHhAf8B+wHoAdwB/wH6AeUB1wH/AfoB4gHTAf8B+QHeAc4B/wHmAawBhQH/AwAB/wMg - AS4DZQH0AcQBxgHKAf8BwAHGAcwB/wIAAa4B/wP6Af8BAAG0AekB/wIAAaoB/wMAAf8DiAH/A4EB/wMA - Af8DigH/AwAB/wMAAf8BWAJeAd0BVwJVAboB6wHaAcYB/wHEAb0BtwH/AwAB/wMAAf8B8gHpAd0D/wH+ - Af8B+gH3AfUB/wHnAeEB3AH/AeEB4wHiAf8B4gHnAesB/wN/Af4DVQGyDAABnwIAAf8BmwIAAf8BmQIA - Af8BlwIAAf8BlAIAAf8BkgIAAf8BkAIAAf8BjgIAAf8BjAIAAf8BiwIAAf8B1gGuAZAB/wHWAa4BkAH/ - AfsB5QHXAf8B+gHhAdIB/wHkAa4BigH/AwAB/wGfAgAB/wGbAgAB/wGZAgAB/wGXAgAB/wGUAgAB/wGS - AgAB/wGQAgAB/wGOAgAB/wGMAgAB/wGLAgAB/wHWAa4BkAH/AdYBrgGQAf8B+wHlAdcB/wH6AeEB0gH/ - AeQBrgGKAf8DAAH/AwQBBgM6AWACAAGzAf8BAAGSAcEB/wIAAa8B/wP5Af8BAAGQAd4B/wGEAaQBwQH/ - AYgBggEAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wGFAZcBpQH/AUABjQGoAf0BVwJVAboB5QHQAboB/wHp - Ae4B8gH/AbEBnAGGAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wHtAfEB9QH/AeEB5gHqAf8DfwH+A1UBsgwA - AaECACH/AY0CAAH/AfwB7wHoAf8B/AHsAeIB/wH7AegB3AH/AfoB5AHWAf8B4wGxAY8B/wMAAf8BoQIA - If8BjQIAAf8B/AHvAegB/wH8AewB4gH/AfsB6AHcAf8B+gHkAdYB/wHjAbEBjwH/AwAB/wMgAS4DZQH0 - AcQBxgHKAf8BwAHGAc0B/wIAAbEB/wP6Af8DvQH/AYYChAH/AwAB/wMAAf8BnQGaAZcB/wG8AbgBtAH/ - AwAB/wMAAf8DAAH/A04BlwFXAlUBugHrAdcBvwH/AesB8wH6Af8B9wHzAfAB/wHJAbYBoAH/AwAB/wMA - Af8DAAH/AwAD/wH+Af8B7wH2Af0B/wN/Af4DVQGyDAABpAIABf8BwAIAAf8BmQIAAv8B0gHAAf8BjgIA - Af8BwAIAAv8BvwGrBf8BjgIAAf8B1gGuAZAB/wHWAa4BkAH/AfsB6gHhAf8B+wHmAdoB/wHiAbMBlQH/ - AwAB/wGkAgAF/wHAAgAB/wGZAgAC/wHSAcAB/wGOAgAB/wHAAgAC/wG/AasF/wGOAgAB/wHWAa4BkAH/ - AdYBrgGQAf8B+wHqAeEB/wH7AeYB2gH/AeIBswGVAf8DAAH/AwQBBgM6AWACAAG1Af8BAAGUAcIB/wIA - AbIB/wP6Af8D+AH/AaYCAAH/AwAB/wGIAYQBAAH/AgABgwH/AgABjwH/AwAB/wMAAf8CjQGOAf8DJQE3 - AVcCVQG6AewB2AHBAf8B8AH1AfsB/wHxAfIB9AH/AfsB/AH9Af8B/QH3AfAB/wH8Ae4B3gH/AZMBgQEA - Af8DAAH/Aa8BmgGDBf8DfwH+A1UBsgwAAacCAAX/AcACAAH/AbACAAL/AdMBwQH/AY8CAAH/AdgBmgEA - Av8BxAGwBf8BkAIAAf8B/QH0Ae8B/wHWAa4BkAH/AfwB7QHkAf8B+wHpAd0B/wHgAbYBmQH/AwAB/wGn - AgAF/wHAAgAB/wGwAgAC/wHTAcEB/wGPAgAB/wHYAZoBAAL/AcQBsAX/AZACAAH/Af0B9AHvAf8B1gGu - AZAB/wH8Ae0B5AH/AfsB6QHdAf8B4AG2AZkB/wMAAf8DIAEuA2UB9AHEAcYBygH/AcABxwHNAf8CAAGy - Af8D+wH/A/oB/wP4Af8BlgGRAY8B/wEAAZcBxQH/AagB1AH1Af8BsAHXAfcB/wGEAbMB3QH/AwAB/wNl - AfQDIwEzAVcCVQG6AekB1AG/Af8B9wH9Av8C9QH0Af8C9QH2Af8B9QH3AfgB/wH+AfYB6gH/AfUB7AHb - Af8DAAH/AwAB/wGUAYUBAAH/A38B/gNUAa8MAAGpAgAB/wH4AfAB5QH/AZwCAAH/AbwCAAH/AZgCAAH/ - AZQCAAH/AakCAAL/AcoBtwX/AZICAAH/Af4B9gHyAf8B1gGuAZAB/wH8Ae4B5gH/AfsB6gHfAf8B3gG4 - AZ0B/wMAAf8BqQIAAf8B+AHwAeUB/wGcAgAB/wG8AgAB/wGYAgAB/wGUAgAB/wGpAgAC/wHKAbcF/wGS - AgAB/wH+AfYB8gH/AdYBrgGQAf8B/AHuAeYB/wH7AeoB3wH/Ad4BuAGdAf8DAAH/AwQBBgM6AWABAAGC - AbUB/wEAAZYBwwH/AgABtAH/A/oB/wP6Af8B4AGiAQAB/wMAAf8BsQHTAe0B/wGzAdcB9gH/AZUBwQHr - Af8BswHVAe8B/wEAAYUBrQH/A6gB/QMkATYBVwJVAboB5wHRAboF/wH8Av0B/wL8Af0B/wP+Af8B6wHX - AbcB/wHKAbUBkgH/AfoB8gHlAf8BxwG3AaMB/wMAAf8BjAIAAf8BWwJZAcMMAAGsAgAC/wH5AfUB/wGi - AgAB/wH1AdIBuAH/AZ8CAAL/AdYBxAH/AZQCAAH/AeIBqgEABf8BlAIAAf8B/gH4AfMB/wHWAa4BkAH/ - AfwB8AHpAf8B/AHsAeEB/wHdAboBoQH/AwAB/wGsAgAC/wH5AfUB/wGiAgAB/wH1AdIBuAH/AZ8CAAL/ + AesBowEAAf8DAAH/AZUBiAEAAf8BgwIAAf8DAAH/AwAB/wMAAf8BgAIAAf8B3QHXAdAN/wH+Av0B/wHn + AeMB3QH/AZIBgwEAAf8DAAH/AakBoAGUBf8D9wH/A/cB/wP3Af8DwAH/A/0B/wIAAv8CngH+Af8D/gH/ + A/4B/wP+Af8D/gH/A/4B/wP+Cf8DqwH/DAABuQGkAZUB/wH7AeYB2gH/AfsB5wHaAf8B+wHmAdkB/wH6 + AeUB2AH/AfsB5AHWAf8B+wHiAdMB/wH5AeAB0AH/AfgB3QHMAf8B+QHbAckB/wH4AdoBxwH/AekBpAEA + Af8DAAH/DAABuQGkAZUB/wH7AeYB2gH/AfsB5wHaAf8B+wHmAdkB/wH6AeUB2AH/AfsB5AHWAf8B+wHi + AdMB/wH5AeAB0AH/AfgB3QHMAf8B+QHbAckB/wH4AdoBxwH/AekBpAEAAf8DAAH/AY8BgwEAAf8DAAH/ + AwAB/wMAAf8DAAH/AwAB/wGOAgAB/wGOAgAB/wGOAgAB/wGOAgAB/wGOAgAB/wGLAgAB/wMAAf8DAAH/ + AboBtQGtBf8D9wH/A/cB/wP3Af8DwAH/A/0B/wLTAfwB/wKMAf0B/wKwAf0B/wP8Af8D/AH/A/wB/wP8 + Af8D+wH/A/0B/wP9Af8DqwH/DAABuwGmAZYB/wH7AewB4gH/AfwB7AHiAf8B1gGuAZAB/wH7AeoB3wH/ + AdYBrgGQAf8B1gGuAZAB/wHWAa4BkAH/AdYBrgGQAf8B1gGuAZAB/wH4AdsBygH/AecBpwGAAf8DAAH/ + DAABuwGmAZYB/wH7AewB4gH/AdYBrgGQAf8B1gGuAZAB/wHWAa4BkAH/AdYBrgGQAf8B+gHnAdoB/wHW + Aa4BkAH/AdYBrgGQAf8B1gGuAZAB/wH4AdsBygH/AecBpwGAAf8DAAH/AZQBiAEAAf8BgAIAAf8DAAH/ + AwAB/wMAAf8BjAIAAf8BlAGEAQAB/wGUAYQBAAH/AZQBhAEAAf8BlAGEAQAB/wGUAYQBAAH/AY4CAAH/ + AYACAAH/AwAB/wHJAcQBvgX/A/cB/wP3Af8D9wH/A8AB/wP9Af8D/AH/A/wB/wIAAf4B/wLTAfwB/wKv + Af0B/wKvAfwB/wKbAfsB/wKJAfsB/wIAAf0B/wP6Af8DqwH/DAABvgGoAZkB/wH9AfAB6AH/Af0B8AHp + Af8B/QHwAegB/wH8Ae8B5wH/AfwB7QHlAf8B+wHrAeEB/wH7AegB3AH/AfoB5QHXAf8B+gHiAdMB/wH5 + Ad4BzgH/AeYBrAGFAf8DAAH/DAABvgGoAZkB/wH9AfAB6AH/Af0B8AHpAf8B/QHwAegB/wH8Ae8B5wH/ + AfwB7QHlAf8B+wHrAeEB/wHWAa4BkAH/AfoB5QHXAf8B1gGuAZAB/wH5Ad4BzgH/AeYBrAGFAf8DAAH/ + AZkBjQEAAf8BhQIAAf8DAAH/AwAB/wMAAf8BjwIAAf8B5AHgAdoN/wGqAZwBiQH/AZQBhAEAAf8BhQIA + Af8DAAH/AcYBwQG7Bf8D9wH/A/cB/wP3Af8DwAH/A/0B/wP8Af8D/AH/AuYB+wH/AgAB/QH/Ar8B+gH/ + AgAB/QH/Ar4B+QH/AqsB+QH/AtIB+wH/A/oB/wOrAf8CAAHeAf8CAAHbAf8CAAHXAf8CAAHTAf8CAAHP + Af8CAAHMAf8CAAHJAf8CAAHGAf8CAAHEAf8CAAHCAf8B1gGuAZAB/wHWAa4BkAH/AdYBrgGQAf8B+gHh + AdIB/wHkAa4BigH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8B/AHs + AeIB/wH7AegB3QH/AdYBrgGQAf8B+gHhAdIB/wHkAa4BigH/AwAB/wGcAY8BAAH/AYkCAAH/AwAB/wMA + Af8DAAH/AYwCAAH/AZ0BjQEAAf8BnQGNAQAB/wGdAY0BAAH/AZ0BjQEAAf8BnQGNAQAB/wGZAYgBAAH/ + AYsCAAH/AwAB/wG6AbQBqgX/A/cB/wP3Af8D9wH/A8AB/wP9Af8D+wH/A/kB/wP4Af8CAAH8Af8CAAH9 + Af8D9wH/A/cB/wP3Af8D+gH/A/kB/wOrAf8CAAHiIf8CAAHDAf8B/AHvAegB/wH8AewB4gH/AfsB6AHc + Af8B+gHkAdYB/wHjAbEBjwH/AwAB/wEAAYABACH/AwAB/wH8Ae8B6AH/AfwB7AHiAf8B+wHoAdwB/wH6 + AeQB1gH/AeMBsQGPAf8DAAH/AZoBjQEAAf8BhwIAAf8DAAH/AwAB/wMAAf8DAAH/AaABjgEAAf8BoAGO + AQAB/wGgAY4BAAH/AaABjgEAAf8BoAGOAQAB/wGcAYsBAAH/AY8CAAH/AwAB/wGlAZ0BkgX/A/cB/wP3 + Af8D9wH/A8AB/wP6Af8D9wH/A/cB/wP3Af8CrAH5Af8CrAH5Af8D9wH/A/cB/wP2Af8D9wH/A/gB/wOr + Af8CAAHlBf8BogG7Av8BAAGKAeMB/wIAAa0B/wGLAasC/wGEAaUC/wGAAaMG/wIAAcYB/wHWAa4BkAH/ + AdYBrgGQAf8B1gGuAZAB/wH7AeYB2gH/AeIBswGVAf8DAAH/AQABggEABf8DAAH/AwAB/wMAAf8BlAHe + AY4B/wEAAZcBAAH/AwAF/wMAAf8B1gGuAZAB/wHWAa4BkAH/AdYBrgGQAf8B+wHmAdoB/wHiAbMBlQH/ + AwAB/wGRAYYBAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8B0wHOAcYB/wP4Af8D/AX/AvgB9gH/AfgB9gHz + Af8BpwGaAYYB/wGCAgAB/wGBAgAF/wP3Af8D9wH/A/cB/wPAAf8D+QH/A/cB/wP3Af8D9wH/AgAB+wH/ + As4B9wH/A/cB/wP2Af8D8wH/A/QB/wP0Af8DsAH/AgAB6AX/AaIBuwL/AQABiwHkAf8CAAGxAf8BiAGo + Av8BgAGjAv8BAAGdBv8CAAHJAf8B/QH0Ae8B/wH9AfEB6gH/AfwB7QHkAf8B+wHpAd0B/wHgAbYBmQH/ + AwAB/wEAAYQBAAX/AaYB2AGnAf8DAAH/AaMB4AGfAf8BAAGcAQAB/wEAAaQBAAH/AYkB3QGDBf8DAAH/ + Af0B9AHvAf8B/QHxAeoB/wHWAa4BkAH/AfsB6QHdAf8B4AG2AZkB/wMAAf8BvAG2AasB/wG6AbYBrAH/ + AwAB/wMAAf8DAAH/AwAB/wGAAgAB/wGPAYEBAAH/AZwBjQEAAf8BpQGVAQAB/wGnAZcBAAH/AaUBlgEA + Af8BnwGPAQAB/wGOAYABAAH/AwAB/wHjAeEB3QH/A/cB/wP3Af8D9wH/A8AB/wP4Af8D9QH/A/UB/wP1 + Af8CAAH6Af8CzwH2Af8D8wH/A/IB/wPvAf8D7gH/A9IB/wO1Af8CAAHqBf8BqgHBAv8BAAGXAfIB/wIA + AbwB/wIAAbwB/wIAAbwB/wIAAdAF/wIAAcwB/wHWAa4BkAH/AdYBrgGQAf8B1gGuAZAB/wH7AeoB3wH/ + Ad4BuAGdAf8DAAH/AQABhgEABf8BvwHmAb8B/wGSAcIBiwH/AwAB/wEAAbABgwH/AZgB3wGUAf8BlAHe + AY8F/wMAAf8B1gGuAZAB/wHWAa4BkAH/AdYBrgGQAf8B+wHqAd8B/wHeAbgBnQH/AwAB/wGXAY0BAAH/ + AdQB0gHNBf8BzwHMAckB/wG7AbkBtQH/AZMBkAGLAf8D/QH/AwAB/wGKAgAB/wGbAY4BAAH/AaQBlwGB + Af8BqQGaAYUB/wGpAZsBhQH/AZ4BkQEAAf8BjAGBAQAB/wHCAb4BtgH/AgABhgH/AwAB/wMAAf8DAAH/ + AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A+4B/wPoAf8D4wH/A8cB/wOTAf8DuwH/AgAB7AH/AeQB6wL/ + AbwBzgL/AQABpgHyAf8CAAG8Af8BkQGvAv8BAAGCAecB/wIAAbIF/wIAAc8B/wH+AfgB8wH/Af0B9AHv + Af8B/AHwAekB/wH8AewB4QH/Ad0BugGhAf8DAAH/AQABiAEAAf8B7wH4Ae8B/wHRAewB0AH/AbcB4wG1 + Af8BAAGnAQAB/wEAAagBAAH/AaMB4QGfAf8BngHfAZoF/wMAAf8B/gH4AfMB/wH9AfQB7wH/AdYBrgGQ + Af8B/AHsAeEB/wHdAboBoQH/AwAB/wGnAaABjwH/AYcCAAH/AaoBpQGdAf8D/RH/AwAB/wGNAYQBAAH/ + AZwBkgGDAf8BqwGfAY8B/wGzAacBlwH/Aa8BpQGVAf8BpAGaAY0B/wGyAawBowH/AgABswH/AgAB2gH/ + AgAB3AH/AgAB3AH/AgAB2wH/AgAB1gH/AgAB0QH/AgAByAH/AgABuwH/AgABiwH/A6AB/wOIAf8DiAH/ + A5QB/wOiAf8D0QH/AT4CXAH4AcMB1QH9Af8B1gHhAv8BAAGoAfIB/wIAAbwB/wGWAbMC/wEAAYcB5wH/ + AgABsgX/AgAB0wH/AdYBrgGQAf8B1gGuAZAB/wHWAa4BkAH/AdwBvAGlAf8B3QG7AaQB/wMAAf8BPgFc + AT4B+AHiAfEB4QH/AeUB9AHkAf8BAAGSAQAB/wEAAZsBAAH/AwAB/wMAAf8BngHUAZoF/wMAAf8B1gGu + AZAB/wHWAa4BkAH/AdYBrgGQAf8B3AG8AaUB/wHdAbsBpAH/AwAB/wHDAb0BsAH/Aa0BpQGYAf8BjgGI + AQAB/wMAAf8DAAH/AwAB/wMAAf8B5gHlAeQF/wP4Af8B6QHoAecB/wG0Aa0BowH/Ab0BtgGpAf8BwgG7 + Aa4B/wG6AbQBqQH/AboBtAGrAf8CAAHTAf8CAAH6Af8CAAH9Af8CAAH1Af8CAAHtAf8CAAHkAf8CAAHb + Af8CAAHQAf8CAAHDAf8CAAGgAf8DiAH/A/sB/wP7Af8D3wH/A6wB/wPkAf8BWAJcAdEBkgG3AfgB/wHi + AeoC/wIAAdsB/wIAAdsB/wIAAdsB/wIAAdsB/wIAAdwF/wIAAdcB/wH9AfgB9AH/Af0B9QHvAf8BtwGi + AZMB/wMAAf8DAAH/AwAB/wFYAVwBWAHRAcEB3wHCAf8BAAGCAQAB/wEAAYEBAAH/AdEB7AHQAf8BqwHQ + AagB/wMAAf8BAAGCAQAF/wMAAf8B/QH4AfQB/wH9AfUB7wH/AbcBogGTAf8DAAH/AwAB/wMAAf8B2wHW + Ac0B/wHPAcoBvgH/AboBtAGoAf8BrQGoAaAB/wGxAa0BqgH/AwAB/wMAAf8DAAH/AwAB/wGNAYkBhAH/ + AdcB1QHTAf8BwwHAAbsB/wHGAcEBuAH/AdIBzQHEAf8B0AHLAcQB/wHGAcMBvQH/AgAB2AH/AgAB3wH/ + AgAB4AH/AgAB2wH/AgAB0wH/AgABywH/AgABwgH/AgABuwH/AgABsgH/AgABqQH/A6UB/wP7Af8D3wH/ + A6kB/wPaAf8D9wH/A0UBfQFjAn8B/gGSAbcB+AH/AcMB1QH9Af8B5AHrAv8B9wH5Dv8CAAHbAf8B/gH3 + AfQB/wH9AfQB7wH/AbkBpAGVAf8B1AHFAboB/wMAAf8DEwEaA0UBfQN/Af4BwQHfAcIB/wHiAfEB4QH/ + Ae8B+AHvAf8B+gH9AfoN/wMAAf8B/gH3AfQB/wH9AfQB7wH/AbkBpAGVAf8B1AHFAboB/wMAAf8DEwEa + AesB6AHjAf8B5wHjAd0B/wHYAdYBzgH/AcQBwgG8Af8C7gHtBf8D/QX/AZ8BnQGbAf8BjgGMAYoB/wGe + AZsBmAH/AbsBuAG1Af8B1AHRAcwB/wHjAeEB3QH/AeUB4wHeAf8B1AHRAcwB/wP3Af8D9wH/A/cB/wO9 + Af8D+gH/A/UB/wPzAf8D8AH/A+wB/wPmAf8DwAH/A98B/wOtAf8D2gH/A/cB/wP3Af8EAANFAX0BWAJc + AdECAAHqAf8CAAHsAf8CAAHqAf8CAAHnAf8CAAHlAf8CAAHiAf8CAAHfAf8B/gH3AfMB/wH9AfQB7QH/ + AcABqwGcAf8DAAH/AxMBGggAA0UBfQFYAVwBWAHRAQABigEAAf8BAAGIAQAB/wEAAYYBAAH/AQABhAEA + Af8BAAGCAQAB/wMAAf8DAAH/Af4B9wHzAf8B/QH0Ae0B/wHAAasBnAH/AwAB/wMTARoEAAHWAdEBxQH/ + Ac8ByQG9Af8BwwG9Aa8B/wGzAa0BnwH/AZsBlwGNAf8BoQGfAZgB/wG9AbsBtgH/AbYBtAGwAf8B5wHm + AeUB/wP4Bf8B1QHSAc4B/wHFAcABtwH/Ac4ByQHAAf8BywHHAb8B/wHOAcoBxAH/A/cB/wP3Af8D9wH/ + A9MB/wOwAf8DrQH/A6wB/wOtAf8DrAH/A6wB/wOsAf8DrgH/A+AB/wP3Af8D9wH/A/cB/wwAAdgBwgGy + Af8B1wHBAbEB/wHWAcABsAH/AdQBvgGuAf8B0gG9Aa0B/wHRAboBqwH/Ac8BuQGqAf8BzQG2AagB/wHL + AbYBpgH/AcoBtAGlAf8DEgEZFAAB2AHCAbIB/wHXAcEBsQH/AdYBwAGwAf8B1AG+Aa4B/wHSAb0BrQH/ + AdEBugGrAf8BzwG5AaoB/wHNAbYBqAH/AcsBtgGmAf8BygG0AaUB/wMSARkIAAGgAZQBAAH/AZUBhwEA + Af8BiAIAAf8DAAH/AwAB/wMAAf8BjQGCAQAB/wGLAYABAAH/AYkCAAH/AYoCAAH/AY8BgwEAAf8BmgGO + AQAB/wGkAZYBggH/AaMBlgGCAf8BmwGPAQAB/wHlAeIB3QH/CAADKQE/AkYBRwGBASkCTQH6AysB/AMr + AfwBXAJeAc4DMgFRAyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AxcBIBgAAxcBIAMkATYDJAE2AyQBNgMk + ATYDJAE2AyQBNgMkATYDIwEzAxUBHQMXASADJAE2AyQBNgMkATYDJAE2AygBPAMkATYDJAE2AyQBNgMk + ATYDKAE8AyQBNgMkATYDJAE2AyQBNgMXASAPAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA + Af8DAAH/AwAB/wMAAf8DAAH/AwQBBgMYASECAAGlAf8CAAGvAf8CAAGEAf8BlAHHAfkB/wGRAckB+QH/ + AQABhQHJAf8CAAGsAf8BswHBAc0B/wPTAf8D0QH/A8sB/wPNAf8DxwH/AyQBNhMABAEBAgMlATcD/AH/ + A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A18B8wMjATMDJAE2A/wB/wP8Af8D/AH/A/wB/wM6AWED+wH/ + A/wB/wP8Af8D/AH/AzoBYQP7Af8D/AH/A/wB/wP8Af8DJAE2DAABtwGiAZMB/wH6AeIB0gH/Ad8BuAGe + Af8B4AG2AZkB/wHiAbQBlQH/AeIBsQGRAf8B5AGvAYwB/wHlAa0BiAH/AeYBqwGEAf8B5wGnAQAB/wHo + AaUBAAH/AesBowEAAf8DAAH/AyABLgNlAfQBxAHGAcoB/wHAAcYBzAH/AQABiQGqAf8B4AHyAv8BAAGa + AdgB/wIAAb4B/wEAAZgBxQH/AQABjQHFAf8BugHIAdQB/wPpDf8DJAE2DAADFwEgAyQBNgMlATcDOgFh + A/wB/wP8Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wP8Af8DJAE2AyQBNgP8Af8B8AHBAYwB/wHuAbgBAAH/ + A/wB/wM6AWED+wH/AQABpgH6Af8BAAGZAfoB/wP8Af8DOgFhA/sB/wEAAekBAAH/AQAB6AEAAf8D/AH/ + AyQBNgwAAbkBpAGVAf8B+wHmAdoB/wH7AecB2gH/AfsB5gHZAf8B+gHlAdgB/wH7AeQB1gH/AfsB4gHT + Af8B+QHgAdAB/wH4Ad0BzAH/AfkB2wHJAf8B+AHaAccB/wHpAaQBAAH/AwAB/wMEAQYDOgFgAgABswH/ + AQABjwG/Af8CAAGnAf8BAAG2AdUB/wGQAbcB0QH/AQAByQHkAf8BAAHfAfUB/wEAAdAB7QH/AQABnAHc + Af8BtwHCAcwB/wPmAf8D+wH/A/wB/wMkATYHAAQBAQIDJQE3A/wB/wP7Af8DxwH/A/wB/wP8Af8D/AH/ + A/wB/wP7Af8D+gH/A/oB/wP8Af8DJAE2AyQBNgP8Af8B8gHcAcMB/wHvAdkBwAH/A/wB/wM6AWED+wH/ + AbYB0AH2Af8BswHNAfMB/wP8Af8DOgFhA/sB/wG4Ae4BtwH/AbUB6wG0Af8D/AH/AyQBNgwAAbsBpgGW + Af8B+wHsAeIB/wH8AewB4gH/AdYBrgGQAf8B1gGuAZAB/wHWAa4BkAH/AdYBrgGQAf8B1gGuAZAB/wHW + Aa4BkAH/AfgB3gHOAf8B+AHbAcoB/wHnAacBgAH/AwAB/wMgAS4DZQH0AcQBxgHKAf8BwAHGAcwB/wIA + Aa4B/wGxAdMB5AH/AQABugHXAf8BwgH2Af0B/wEAAd8B9wH/AQAB4gH4Af8BAAHTAfAB/wEAAZgB3AH/ + AbgBwgHMAf8D5gH/A/wB/wMkATYDFwEgAyQBNgMlATcDOgFhA/wB/wP7Af8DxgH/A/wB/wP8Af8D/AH/ + A/wB/wP6Af8D+QH/A/cB/wP8Af8DJAE2AyQBNgP8Af8B7QHXAb4B/wH5Ae0B3wH/A/wB/wM6AWED+wH/ + AbEBywHyAf8B2AHmAfwB/wP8Af8DOgFhA/sB/wGzAekBsgH/Ad8B+AHeAf8D/AH/AyQBNgwAAb4BqAGZ + Af8B/QHwAegB/wH9AfAB6QH/Af0B8AHoAf8B/AHvAecB/wH8Ae0B5QH/AfsB6wHhAf8B+wHoAdwB/wH6 + AeUB1wH/AfoB4gHTAf8B+QHeAc4B/wHmAawBhQH/AwAB/wMEAQYDOgFgAgABswH/AQABkgHBAf8CAAGv + Af8D+QH/Aa0B0gHjAf8BAAHLAecB/wHHAfcB/QH/AQAB3AH1Af8BAAHhAfcB/wEAAdQB8QH/AQABmgHd + Af8BqwG9AcwB/wPoAf8DJAE2AyQBNgP8Af8D+wH/A8cB/wP8Af8D+wH/A8cB/wP8Af8D/AH/A/wB/wP7 + Af8D+QH/A/YB/wP0Af8D/AH/AyQBNgMkATYD/AH/A/wB/wP4Af8DJQE3AzEBTwP8Af8D/AH/A/gB/wMl + ATcDMQFPA/wB/wP8Af8D+AH/AyQBNgMXASABnwIAAf8BmwIAAf8BmQIAAf8BlwIAAf8BlAIAAf8BkgIA + Af8BkAIAAf8BjgIAAf8BjAIAAf8BiwIAAf8B1gGuAZAB/wHWAa4BkAH/AfsB5QHXAf8B+gHhAdIB/wHk + Aa4BigH/AwAB/wMgAS4DZQH0AcQBxgHKAf8BwAHGAc0B/wIAAbEB/wP6Af8D+QH/AboB4wHwAf8BAAHT + Ae4B/wHHAfcB/QH/AQAB3AH1Af8BAAHiAfcB/wEAAdYB8gH/AQABoQHhAf8BtgHEAdAB/wMmATgDJAE2 + A/wB/wP7Af8DxgH/A/wB/wP7Af8DxwH/A/wB/wP8Af8D+wH/A/gB/wP2Af8D8wH/A+8B/wP8Af8DJAE2 + AxcBIAMkATYDJAE2AyQBNgMXASADFwEgAyQBNgMkATYDJAE2AxcBIAMXASADJAE2AyQBNgMkATYDFwEg + BAABoQIAIf8BjQIAAf8B/AHvAegB/wH8AewB4gH/AfsB6AHcAf8B+gHkAdYB/wHjAbEBjwH/AwAB/wME + AQYDOgFgAgABtQH/AQABlAHCAf8CAAGyAf8D+gH/A/gB/wHgAZ8BAAH/AakBpAGRAf8BAAHUAe0B/wHE + AfYB/QH/AQAB3QH2Af8BAAHKAe0B/wEAAaMB1wH/AQABoQHUAf8DNAFUAyQBNgP8Af8D+wH/A8cB/wP8 + Af8D+wH/A8cB/wP8Af8D+wH/A/gB/wP1Af8D8gH/A+0B/wPqAf8D/AH/AyQBNgcAAQEDXwHoAwABAQsA + AQEDAAEBAwABAQsAAQEDAAEBA18B6AgAAaQCAAX/AcACAAH/AZkCAAL/AdIBwAH/AY4CAAH/AcACAAL/ + Ab8BqwX/AY4CAAH/AdYBrgGQAf8B1gGuAZAB/wH7AeoB4QH/AfsB5gHaAf8B4gGzAZUB/wMAAf8DIAEu + A2UB9AHEAcYBygH/AcABxwHNAf8CAAGyAf8D+wH/A/oB/wP4Af8D+AH/AbEB4gHxAf8BgQHWAe4B/wGy + AeMB+QH/AYsBwAHnAf8BrgHTAfYB/wHEAeAB/AH/AWUCagH5AyQBNgP8Af8D+wH/A8cB/wP8Af8D+wH/ + A8YB/wP8Af8D+AH/A/YB/wPyAf8D6wH/A/wB/wP8Af8D/AH/AyQBNggAA0sBjgNfAegDXwHoA18B6ANf + AegDNQFXAzUBVwNfAegDXwHoA18B6ANfAegDSwGOCAABpwIABf8BwAIAAf8BsAIAAv8B0wHBAf8BjwIA + Af8B2AGaAQAC/wHEAbAF/wGQAgAB/wH9AfQB7wH/AdYBrgGQAf8B/AHtAeQB/wH7AekB3QH/AeABtgGZ + Af8DAAH/AwQBBgM6AWABAAGCAbUB/wEAAZYBwwH/AgABtAH/A/oB/wP6Af8B4AGiAQAB/wHgAaABAAH/ + AeABoAEAAf8BnAGnAZsB/wEAAb4B5wH/AbQB0gHwAf8B5QHzAv8BrAHSAe8B/wNdAe0DJAE2A/wB/wP7 + Af8DxwH/A/wB/wP6Af8DwwH/A/wB/wP3Af8D8wH/A+8B/wPqAf8D/AH/A/YB/wNNAZEDFwEgFAADFwEg + AyQBNgNdAe0DXQHtAyQBNgMXASAUAAGpAgAB/wH4AfAB5QH/AZwCAAH/AbwCAAH/AZgCAAH/AZQCAAH/ + AakCAAL/AcoBtwX/AZICAAH/Af4B9gHyAf8B1gGuAZAB/wH8Ae4B5gH/AfsB6gHfAf8B3gG4AZ0B/wMA + Af8DIAEuA2UB9AHEAcYBygH/AcABxwHNAf8CAAG1Af8D+QH/A/kB/wHhAaMBAAH/AeoBwAGjAf8B6gHA + AaIB/wHqAb8BoQH/Aa4BuQG0Af8BAAGlAdgB/wGFAbEB2wH/AQABnQHQAf8BRgJHAYADJAE2A/wB/wP7 + Af8DxgH/A/wB/wP4Af8DwwH/A/oB/wP8Af8D/AH/A/wB/wP8Af8D+AH/A00BkQMXASADAQECEwABAQMk + ATYD/AH/A/wB/wP8Af8D/AH/AyQBNgMAAQEQAAGsAgAC/wH5AfUB/wGiAgAB/wH1AdIBuAH/AZ8CAAL/ AdYBxAH/AZQCAAH/AeIBqgEABf8BlAIAAf8B/gH4AfMB/wHWAa4BkAH/AfwB8AHpAf8B/AHsAeEB/wHd - AboBoQH/AwAB/wMgAS4DZQH0AcQBxgHKAf8BwAHHAc0B/wIAAbUB/wP5Af8D+QH/AeEBowEAAf8DAAH/ - AgABiQH/AgABoAH/AwAB/wMAAf8DAAH/AfUC9gH/AyQBNgFYAlYBvAHhAc8BvRH/AfwB+wH3Af8BjAIA - Af8DAAH/AcABugGrAf8BvQGvAZsB/wMAAf8DUAGdDAACXAE+AfgB/AHwAeYB/wGlAgAB/wH0AecB2gH/ - AZwCAAH/AeYB0wHEAf8BjwIAAf8BoAIABf8BlgIAAf8B1gGuAZAB/wHWAa4BkAH/Af0B8QHpAf8B3AG8 - AaUB/wHdAbsBpAH/AwAB/wJcAT4B+AH8AfAB5gH/AaUCAAH/AfQB5wHaAf8BnAIAAf8B5gHTAcQB/wGP - AgAB/wGgAgAF/wGWAgAB/wHWAa4BkAH/AdYBrgGQAf8B/QHxAekB/wHcAbwBpQH/Ad0BuwGkAf8DAAH/ - AwQBBgM6AWABAAGDAbcB/wEAAZkBxAH/AgABtwH/A/gB/wP4Af8B4QGlAQAB/wGAAgAB/wIAAYgB/wIA - AYEB/wIAAYMB/wMAAf8DAAH/A/oB/wMkATYBVgJVAbQBvgGUAQAB/wHaAc8BwwH/AeEB1AHEAf8B5QHY - AckB/wHoAdsBywH/AegB3QHOAf8B5gHWAb0B/wGOAgAB/wMAAf8DAAH/AwAB/wNIAYQDAAEBCAACXAFY - AdEB7AHUAb0C/wH5AfQC/wH1Ae8C/wHuAeIC/wHlAdgC/wHhAdIC/wHhAdEF/wGZAgAB/wH9AfgB9AH/ - Af0B9QHvAf8BtwGiAZMB/wMAAf8DAAH/AwAB/wJcAVgB0QHsAdQBvQL/AfkB9AL/AfUB7wL/Ae4B4gL/ - AeUB2AL/AeEB0gL/AeEB0QX/AZkCAAH/Af0B+AH0Af8B/QH1Ae8B/wG3AaIBkwH/AwAB/wMAAf8DAAH/ - AyABLgNlAfQBxAHHAcoB/wHAAccBzQH/AgABtwH/A/cB/wP3Af8D9wH/A+0B/wIAAZIB/wIAAYsB/wIA - AYMB/wMAAf8C2AHZAf8D+gH/AyQBNgMcAScDVgG2AVsCWQHEAVgCVgHBAVgCVgHBAVgCVgHBAVgCVgHB - AVgCVgHBAVgCVgHBAVgCVgHBAVkCVgG+AVwCWQHMA0EB+QNWAbwDMAFLAwcBCQNFAX0BqAGmAUAB/QHs - AdQBvQH/AfwB8AHmAv8B+QH1Av8B/QH8Df8BnAIAAf8B/gH3AfQB/wH9AfQB7wH/AbkBpAGVAf8B1AHF - AboB/wMAAf8DEwEaA0UBfQGoAaYBQAH9AewB1AG9Af8B/AHwAeYC/wH5AfUC/wH9AfwN/wGcAgAB/wH+ - AfcB9AH/Af0B9AHvAf8BuQGkAZUB/wHUAcUBugH/AwAB/wMTARoDBAEGAzoBYAEAAYcBuQH/AQABmgHF - Af8CAAG4Af8D9wH/A/cB/wP3Af8D9wH/A/UB/wP0Af8D9AH/A/QB/wPyAf8D+wH/AyQBNiwAAw8BFAM9 - AWkDWQHHAVcCVQG6AyMBMwQAA0UBfQJcAVgB0QGzAgAB/wGtAgAB/wGpAgAB/wGnAgAB/wGkAgAB/wGi - AgAB/wGfAgAB/wH+AfcB8wH/Af0B9AHtAf8BwAGrAZwB/wMAAf8DEwEaCAADRQF9AlwBWAHRAbMCAAH/ + AboBoQH/AwAB/wMEAQYDOgFgAQABgwG3Af8BAAGZAcQB/wIAAbcB/wP4Af8D+AH/AeEBpQEAAf8B4QGj + AQAB/wHhAaMBAAH/AeABogEAAf8B4AGgAQAB/wHgAaABAAH/A/QB/wP6Af8DJAE2AyQBNgP8Af8D+gH/ + A8MB/wP8Af8D9wH/A9YB/wO9Af8DuAH/A8cB/wPCAf8DUwGoAzEBTwMXASADAQECFwABAQMkATYD/AH/ + A/sB/wP6Af8D/AH/AyQBNgMAAQEQAAJcAT4B+AH8AfAB5gH/AaUCAAH/AfQB5wHaAf8BnAIAAf8B5gHT + AcQB/wGPAgAB/wGgAgAF/wGWAgAB/wHWAa4BkAH/AdYBrgGQAf8B/QHxAekB/wHcAbwBpQH/Ad0BuwGk + Af8DAAH/AyABLgNlAfQBxAHHAcoB/wHAAccBzQH/AgABtwH/A/cB/wP3Af8D9wH/A/cB/wP3Af8D9QH/ + A/UB/wP1Af8D8wH/A/oB/wMkATYDJAE2A/wB/wP4Af8DwwH/A/oB/wP8Af8D/AH/A/wB/wP7Af8D9wH/ + A00BkQMYASEDAgEDHwABAQMkATYD/AH/A/QB/wPvAf8D/AH/AyQBNgMAAQEQAAJcAVgB0QHsAdQBvQL/ + AfkB9AL/AfUB7wL/Ae4B4gL/AeUB2AL/AeEB0gL/AeEB0QX/AZkCAAH/Af0B+AH0Af8B/QH1Ae8B/wG3 + AaIBkwH/AwAB/wMAAf8DAAH/AwQBBgM6AWABAAGHAbkB/wEAAZoBxQH/AgABuAH/A/cB/wP3Af8D9wH/ + A/cB/wP1Af8D9AH/A/QB/wP0Af8D8gH/A/sB/wMkATYDJAE2A/wB/wP3Af8D1gH/A70B/wO4Af8DxwH/ + A8IB/wNTAagDMQFPAxcBIAMBAQIjAAEBAyQBNgP8Af8D7AH/A/wB/wP8Af8DJAE2AwABARAAA0UBfQGo + AaYBQAH9AewB1AG9Af8B/AHwAeYC/wH5AfUC/wH9AfwN/wGcAgAB/wH+AfcB9AH/Af0B9AHvAf8BuQGk + AZUB/wHUAcUBugH/AwAB/wMTARoDIAEuA2UB9AHEAccBygH/AcEBxwHNAf8CAAG4Af8D/AH/A/wB/wP8 + Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/AyQBNgMkATUDagH5A/wB/wP8Af8D/AH/A/sB/wP3 + Af8DTQGRAxgBIQMCAQMrAAEBAyQBNgP8Af8D/AH/A/gB/wMkATYDFwEgGAADRQF9AlwBWAHRAbMCAAH/ Aa0CAAH/AakCAAH/AacCAAH/AaQCAAH/AaICAAH/AZ8CAAH/Af4B9wHzAf8B/QH0Ae0B/wHAAasBnAH/ - AwAB/wMTARoEAAMgAS4DZQH0AcQBxwHKAf8BwQHHAc0B/wIAAbgB/wP8Af8D/AH/A/wB/wP8Af8D/AH/ - A/wB/wP8Af8D/AH/A/wB/wP8Af8DJAE2MAADGgEkA0IBdANHAYIDHQEpDAAB2AHCAbIB/wHXAcEBsQH/ - AdYBwAGwAf8B1AG+Aa4B/wHSAb0BrQH/AdEBugGrAf8BzwG5AaoB/wHNAbYBqAH/AcsBtgGmAf8BygG0 - AaUB/wMSARkUAAHYAcIBsgH/AdcBwQGxAf8B1gHAAbAB/wHUAb4BrgH/AdIBvQGtAf8B0QG6AasB/wHP - AbkBqgH/Ac0BtgGoAf8BywG2AaYB/wHKAbQBpQH/AxIBGQwAAy4BSAEAAYsBwgH/AgABvgH/AgABugH/ - AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMXASABQgFNAT4HAAE+AwABKAMA - AUADAAHwAQECAAEBAQABAQUAAYABDxYAA/8BAAT/BAAE/wQAAYABAQL/BAABgAEBAfEB4QQAAYABAQHA - AeEEAAGAAQEBgAFhBAABgAEBAYABAQQAAYABAQGAAQEEAAGAAQEBgAEBBAABgAEBAYABAQQAAYABAQHA - AX8EAAGAAQEBwAH/BAABgAEBAv8EAAGAAQEC/wQABP8EAAT/BAAH/wF/Av8BwAEBAfABBwHwAQcC/wGA - AQEB8AEHAeABBwGAAQEBgAEAAfABBwHAAQEBgAEBAYABAAGDAcEBwAEBAYABAQGAAQABgwHBAoEBgAEB - AYABAAGAAQEBgwHBAfABhwGAAQABgAEBAYIBYAHwAQcBgAEAAYABAQGCAWAB8AEHAYABAAGAAQEBgwHB - AfABBwGAAQABwAEBAYABAQHwAQcBgAEAAfABBwHAAQEB8AH/AYABfwHwAQcBwAEDAv8BgAH/AfABBwHg - AQcG/wH4AR8S/wGAAQAB8AEBAYMB4QGAAQABgAEAAfABAQGDAeEBgAEAAcABAQLxAoEBgAEAAcABAQHB - AfEBgAGBAYABAAHgAQMBwQHxAfABBwGAAQAB4AEHAcEB8QH4AQ8BgAEAAfABBwHBAfEB/AEfAYABAAHw - AQ8BwQHxAf4BfwGAAQAB+AEfAcEB8QH+AX8BgAEAAfwBHwHAAQEB/AEfAYABAAH8AR8BwAEBAfgBHwGA - AQAB/gE/AcABAwH4AR8BgAEAAf4BfwHAAQ8B+AEfBP8BwAEPAfwBHxD/AYMB4QHwAQEBgAEBAfgBHwGD - AeEB8AEBAYABAQH4AR8CgQLxAYABAQHAAQEBgAGBAcEB8QGAAQEBgAEBAfABBwHBAfECgQGAAQEB+AEP - AcEB8QGBAcEBnwH5AfwBHwHBAfEBjwH5AZ8B+QH+AX8BwQHxAY8B+QGfAfkB/gF/AcEB8QGPAfkBnwH5 - AfwBHwHAAQEBjwH5AZ8B+QH4AR8BwAEBAY8B+QGfAfkB+AEfAcABAwGAAQEBgAEBAfgBHwHAAQ8BgAEB - AYABAQH8AR8BwAEPAYABAQHAAQEI/wIAAcABAAT/AgABwAEAAYgBAQHwAQcCAAHAAgABAQHgAQMCAAHA - AwABwAEBAgABgAMAAYABAQYAAYgBAQYAAYABEQYAAYABGQYAAYAB+QUAAQMBgAHxBgABgAEhAgABgAMA - AYABAQIAAcADAAHAAQMCAAHAAwAB4AEHAgABwAEBAQgBwQHwAQ8CAAHAAQME/wIAAeACAAEPAfABDwIA - AeACAAEPAcABBwIAAeACAAEPAcABBwIAAeABAAE/AY8BgAEBAgAB4AEAATEBjwQAAeABAAExAY8EAAHg - AQABMAGPBAAB4AEAATgB/wQAAeABAAE4ATEEAAHgAgABAQQAAeACAAEBBAAB4AEAAQEBgQQAAeABAAH+ - AQEBgAEBAgAB4AEBAf4BAQGAAQECAAHgAQMB/gEBAfABhwIAAeABBwL/AfEB/wHAAQABwAEAAf8BhwYA - Af4BBwYAAfwBAwYAAfgBAwYAAfABAwYAAeABAwcAAQEHAAEBBwABAQYAAcABAwYAAYABAwYAAYABAwYA - AcABBwYAAcABBwYAAfABDwIAAYABAAGAAQAB/AEPBAABwAEAAeABDwHABQAB4AEPBgAB8AEfBgAB4AEP - BgAB4AEHBgABwAEHBgABwAEDBgABwAEDBgABwAEDBgABwAEDBgABwAEDBgAB4AEDBgAB4AEDBgAB8AEH - BgAB8AEHBAABgAEAAfgBDwGAAwAB/wEDAv8BwAF/AgAB/gEBAfgBBwHAAX8CAAH8AQAB4AEHAeADAAH8 - AQABwAEHBAAB/AEAAcABBwQAAcABAAHAAQcEAAGAAQABwAEHBgABwAEHBQABAQHAAQcFAAEHAcABBwUA - AQcBwAEHBQABBwHAAQcFAAEHAcABBwQAAYABBwHgAQcB+AMAAegBBwH4AQcB/AMAAfwBDwP/AQAC/wIA - Bv8CAAHwAQ8B8AEPAcABHwIAAeABBwHgAQcBgAEfAgABwAEDAcABAwGAAQECAAGAAQEBgAEBAYABAQIA - AYABAQGAAQEBgAEBAgABgAEBAYABAQGAAQECAAGAAQEBgAEBAcABAQIAAYABAQGAAQEBwAEBAgABgAEB - AYABAQHAAQECAAGAAQEBgAEBAcABAQIAAYABAQGAAQEBwAEBAgABwAEDAcABAwHAAQECAAHgAQcB4AEH - Av8CAAHwAQ8B8AEPAv8CAAT/AfgBHwIAAYABDwL/BAABgAEPAeABfwQAAfEB/wGAAQ8B/gF/AgAB8QH/ - AYABAQGAAQECAAHwAR8BgAEBBAAB8AEHAYABAQQAAfABBwGAAQEEAAGAAQcBgAEBBAABgAEHAYABAQQA - AYABBwGAAQEEAAGAAQcBgAEBBAABwAEHAYABAQQAAeABBwGAAQEEAAHwAQcBgAEBBAAB8AEHAYABAQGA - AQECAAH4AQ8C/wGAAQECAAHwAQ8B4QEDAYABAQIAAfABDwGAAQEBgAEBAgAB8AEPAQABAQGAAQECAAHA - AQMBAAEBAYABAQIAAYABAQIAAYABAQYAAYABAQYAAYABAQYAAYABAQQAAYABAAGAAQEEAAHAAQABgAEB - BAAB4AEAAYABAQIAAYABAQHgAQABgAEBAgABgAEBAeABAAL/AgABwAEDAeABAAL/AgAB4AEHAeABAAL/ - AgAB+AEfAeABDwH7Af8B4AEHAcABAQH/AfAB4AF/AfgBHwGAAQMB/wHwAcABDwHwAR8BAAEHAf8B4AHA - AQEB4AEPAQABBwH/AcEBgAEAAcABBwEAAQcB/gEDAYABAAHAAQcBgAEHAfwBBwIAAYABAwHAAQcBwAEP - AgABgAEDAfABBwGAAR8CAAGAAQMB8AEHAQABPwIAAYABAwHwAQcBAAE/AgABgAEDAfABBwEAAT8CAAGA - AQEB8AEHAQABPwGAAQEBgAEBAfABBwEQAT8BgAEfAYABAwHwAQcBAAE/AcABPwGAAQMB8AEHAYABfwHw - AX8B8AEPAfsB/wHAAf8BwAEDAwABPwL/AcABAwMAAT8B8AEPAfgBHwMAAT8B8AEPAfgBHwMAAT8B8AEA - AfABDwQAAfwBAAHgAQcGAAHAAQMGAAHAAQMGAAHAAQEFAAEgAYABAQYAAYABAQQAAYABAAHAAQMEAAGA - AQABwAEDAgAB/AEAAYABDwHAAQMCAAH8AQABwAEfAeABBwIAAfwBAAH8AT8B+AEfAgAB/AEAAf4B/wH8 - AR8BoAEFAgAC/wHwAQcB/AE/AgAC/wHAAQMB/gF/AgAC/wHAAQEBgAMAAf8BxwGAAQEEAAH/AYMBgAUA - Af8BAQGABQABggEBAYAFAAH+AQEBgAUAAQIBAQGABQAB/gEBAYABAQQAAcIBAQGAAQEEAAH+AQMBwAED - BAAB/wEHAeABAwEAAQECAAH/AY8B8AEPAYABfwIABP8BwAH/AgAE/wGAAQEEAAH/AZ8GAAH/AR8GAAHg - AT8GAAHAAX8GAAHAAX8GAAHAAQcGAAHAAQMGAAHAAQEGAAHAAQEGAAHgAQEGAAHgAQEGAAHwAQMGAAHw - AQcGAAH8AQ8GAAL/BgAD/wHDAgAB/AE/AQABHwH8AQMFAAEHAfABAwUAAQEB4AEDBQABAQHAAQECAAHg - AQcBAAEBAYABAQIAAcABAwEAAgEBwAIAAcABAwEAAQEBAwHgAgABwAEDAQACAQHgAgABwAEDAQACAQHA - AgABwAEDAQABAQHAAQECAAHAAQMBAAEDAeABAQIAAcABAwEAAQMB4AEDAgABwAEDAQABBwHwAQMCAAHA - AQMBAAEfAfwBAwIAAcABAwGBAv8BxwIAAfABBwHgAQcCAAH/Ab8C/wHAAQECAAH/AR8BzwH/AYADAAGf - AR8BgwGfAYADAAGGAR8BAAEfBAABwAEfAQABHwQAAcABHwEgAR8EAAHgAQ8BMAEPBAAB4AEDATgFAAHg - AQEBMAUAAcABAwEgAQEEAAGAAT8BAAE/BQABPwGOAT8BgAMAAfwBPwH/AT8BwAEBAgAB/gE/Af8BPwHg - AQMCAAH+AT8B/wG/AfABBwIAAf8Bfwj/AeABAAH+AX8E/wHgAQAB/AE/AfwBHwHwAR8B4AEAAcABAwH8 - AR8BwAEHAgABwAEDAfwBHwGAAQcCAAHAAQMB/AE/AQABAQIAAcABAwH8AT8BAAEBAgABgAEBAfwBPwYA - Ac8B8QQAAYABAQEPAfABgAMAAcACAwHgAYABAwIAAcABAwHBAcABgAEDAgABwAEDAYABAQGAAQcB4AEA - AcABAwGAAQEB4AEPAeABAAH8AT8B8AEPAeABHwHgAQEB/gF/AfIBTwL/AeABAwHgAQAC/wH4AQABhwH/ - AgAB+AEHAfACAAEDAgAB4AEHAcABAAGAAQMCAAHAAQcBgAEBAcABBwIAAcABBwGAAQEB+AEfAgABwAEH - AYABAwH8AR8CAAHAAQcBgAEDAfwBDwIAAcABBwGAAQcB/AEDAgABwAEHAYABDwH8AQECAAHAAQcBgAEP - AfgBAwGAAQEBwAEHAYABDwH4AQcBwAEDAcABBwGAAQ8B8AEPAeABBwHAAQcBgAEPAfABDwHgAQcB4AEH - AcABDwHwAQ8B4AEHAfgBBwHwAQ8B8wGfAeABHwX/Ab8EAAHgBwAB4AcAAeAHAAGABwABgAEAAYAFAAGA - AQABwAUAAYABAAHABQABgAEBAcAFAAGAAQEBwAUAAYABAQHABQABgAEBAeABAQQAAYABAQH+AQMEAAGA - AQEB/gEDBAABgAEBAf4BAwQAAv8B/gEDBAAD/wEDgAABwAEAAfgBAAL/AgABwAEAAfgBAAGAAQECAAGA - AwABgAEBBQABAQGAAQEFAAEBAYABAQUAAQMBgAEBBQABAwGAAQEFAAEDAYABAQUAAQMBgAEBBQABAwGA - AQEFAAEDAYABAQUAAQMBgAEBBQABAwGAAQECAAHAAgABAwGAAQECAAHAAQEBAAEDAYABAQIAAcABAwEA - AQMC/wYAAcABAwHABQABgAEBAcAFAAGAAQABgAUAAYABAAGABQABgAEAAYAFAAGAAQABgAUAAYABAAGA - BQABgAcAAYAHAAGAAQEGAAGAAQMBgAUAAYABBwGABQABgAEHAYAFAAHAAQcBwAUAAYABBwHAAQEEAAHg - AX8BwAEDAYABAQGAAQABgAEBAYABAQGAAQEBgAEAAYABAQGAAQEBgAEBAwABAQEAAQEBgAEBAwABAQMA - AQEDAAEBBwABAQcAAQEHAAEBBwABAQcAAQEHAAEBBwABAQUAAQEBAAEBBAABgAEBAYABAQGAAQABgAEB - AYABAwGAAQMBgAEDAcABAwGAAQcBgAEHAYABBwL/AfABDwGAAQEC/wH+AQMBwAEDAYABAQL/AXgBAwGA - AQEBAAEBAv8BAAEDAYABAQUAAQMHAAEBBwABAQYAAYABAQYAAYAHAAGABwABwAcAAcAHAAHAAQABgAEB - AQABAQIAAcABDAGAAQEBgAEBAgAB4AE/AcABAwGAAQME/wHwAQ8BgAEHAv+AAAHAAX8C/wEAAR8B4AEH - AcABfwL/AQABHwIAAeABAAGAAQEBAAEfBAABgAEBAQABHwQAAYABAQGAAR8EAAGAAQEBwAUAAYABAQHA - BQABgAEBAcAFAAGAAQEBwAUAAYABAQHABQABgAEBAeABAQGAAQECAAGAAQEB/gEDAcABAwIAAYABAQH+ - AQMB4AEHAfgBAAL/Af4BAwHgAQcB/AEAAv8B/gEDAeABBwH/AQAD/wEDAeABHwIAAeABAAHgBQAB4AEA - AeAFAAHgAQAB4AUAAeABAAHgBQAB4AEAAeBNAAGAAQEBgAEBBAAB4AEDAeABAwIAAcABAAH8AwAB4AMA - AfADAAHgAwAB4AMAAeADAAGAAwAB4AcAAeAOAAEBBgABjAFjBgABwAEDBgAB+AEfBgAB8AEPBQABAQHw - AQ8FAAEHAfABDwUAAQ8B8AEPBQABPwHwAR8BgAEBAYACAAF/AfgBPwHgAQMBgAEPAeABAAHgAQABwAIA - AQcB4AEAAeAEAAEHAeABAAHgBAABBwHgAQAB4AQAAQcB4AEAAeAEAAEHBwABBwcAAQcHAAEHBwABBwcA - AQcHAAEHBwABAw4AAf8B4AGAAQEBgAEBAgAB/wHwAeABAwHgAQMBgAEACw== + AwAB/wMTARoIAAMuAUgBAAGLAcIB/wIAAb4B/wIAAboB/wMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMk + ATYDJAE2AyQBNgMkATYDFwEgAxYBHgMkATUDJAE2AyQBNgMkATYDJAE2AyQBNgMXASADAQECMAADFwEg + AyQBNgMkATYDJAE2AxcBICQAAdgBwgGyAf8B1wHBAbEB/wHWAcABsAH/AdQBvgGuAf8B0gG9Aa0B/wHR + AboBqwH/Ac8BuQGqAf8BzQG2AagB/wHLAbYBpgH/AcoBtAGlAf8DEgEZDAADGgElAyIBMgMgAS8DIAEv + AyABLwMgAS8DIAEvAyABLwMgAS8DIgEyAxIBGB8AAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ + AwAB/wMAAf8DAAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ + AwAB/wMAAf8DAAH/CAADKQE/AkYBRwGBAzsBZAMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2 + AyQBNgMkATYDFwEgAxABFQM+AWsDRAF8A0MBdwNDAXcDQwF3A0MBdwNDAXcDQwF3A0MBdwNFAX4DMwFT + AwQBBhgAAbcBogGTAf8B+gHiAdIB/wHfAbgBngH/AeABtgGZAf8B4gG0AZUB/wHiAbEBkQH/AeQBrwGM + Af8B5QGtAYgB/wHmAasBhAH/AecBpwEAAf8B6AGlAQAB/wHrAaMBAAH/AwAB/wwAAbcBogGTAf8B+gHi + AdIB/wHfAbgBngH/AeABtgGZAf8B4gG0AZUB/wHiAbEBkQH/AeQBrwGMAf8B5QGtAYgB/wHmAasBhAH/ + AecBpwEAAf8B6AGlAQAB/wHrAaMBAAH/AwAB/wMEAQYDGAEhAgABpQH/AgABrwH/AgABqwH/A9wB/wPY + Af8D1AH/A9IB/wPRAf8D0wH/A9EB/wPLAf8DzQH/A8cB/wMkATYBRwJGAYABqAJAAf0BngIAAf8BoAIA + Af8BogIAAf8BpAIAAf8BpQIAAf8BowIAAf8BoQIAAf8BngIAAf8BoAIAAf8BZwJZAfIDLQFFGAABuQGk + AZUB/wH7AeYB2gH/AfsB5wHaAf8B+wHmAdkB/wH6AeUB2AH/AfsB5AHWAf8B+wHiAdMB/wH5AeAB0AH/ + AfgB3QHMAf8B+QHbAckB/wH4AdoBxwH/AekBpAEAAf8DAAH/DAABuQGkAZUB/wH7AeYB2gH/AfsB5wHa + Af8B+wHmAdkB/wH6AeUB2AH/AfsB5AHWAf8B+wHiAdMB/wH5AeAB0AH/AfgB3QHMAf8B+QHbAckB/wH4 + AdoBxwH/AekBpAEAAf8DAAH/AyABLgNlAfQBxAHGAcoB/wHAAcYBzAH/AgABrAH/A/0B/wP7Af8D+AH/ + A/QB/wPtAf8D1QH/A+kN/wMkATYBWQJWAb4B6gHPAbUB/wHTAbsBqwH/AfwB+wH5Af8B/g//AfsD/wH2 + AfsB/QH/Af0D/wHKAaYBhAH/AVYCVQG0GAABuwGmAZYB/wH7AewB4gH/AfwB7AHiAf8B1gGuAZAB/wHW + Aa4BkAH/AdYBrgGQAf8B1gGuAZAB/wHWAa4BkAH/AdYBrgGQAf8B+AHeAc4B/wH4AdsBygH/AecBpwGA + Af8DAAH/DAABuwGmAZYB/wH7AewB4gH/AfwB7AHiAf8B1gGuAZAB/wHWAa4BkAH/AdYBrgGQAf8B1gGu + AZAB/wHWAa4BkAH/AdYBrgGQAf8B+AHeAc4B/wH4AdsBygH/AecBpwGAAf8DAAH/AwQBBgM6AWACAAGz + Af8BAAGPAb8B/wIAAa4B/wP6Af8B9AH3AfkB/wHaAeIB6AH/AYUBgAEAAf8DAAH/AwAB/wMAAf8DAAH/ + AwAB/wHVAdwB4gH/Ay0BRQFXAlUBugHzAeAByAH/AYcCAAH/AYoCAAL/Af4B+QH/AfoB/QL/AfQB9QH2 + Af8B8wH0AfUB/wHuAe8B8QH/AuUB5AH/AegB7gHyAf8DfwH+A1UBshgAAb4BqAGZAf8B/QHwAegB/wH9 + AfAB6QH/Af0B8AHoAf8B/AHvAecB/wH8Ae0B5QH/AfsB6wHhAf8B+wHoAdwB/wH6AeUB1wH/AfoB4gHT + Af8B+QHeAc4B/wHmAawBhQH/AwAB/wwAAb4BqAGZAf8B/QHwAegB/wH9AfAB6QH/Af0B8AHoAf8B/AHv + AecB/wH8Ae0B5QH/AfsB6wHhAf8B+wHoAdwB/wH6AeUB1wH/AfoB4gHTAf8B+QHeAc4B/wHmAawBhQH/ + AwAB/wMgAS4DZQH0AcQBxgHKAf8BwAHGAcwB/wIAAa4B/wP6Af8BAAG0AekB/wIAAaoB/wMAAf8DiAH/ + A4EB/wMAAf8DigH/AwAB/wMAAf8BWAJeAd0BVwJVAboB6wHaAcYB/wHEAb0BtwH/AwAB/wMAAf8B8gHp + Ad0D/wH+Af8B+gH3AfUB/wHnAeEB3AH/AeEB4wHiAf8B4gHnAesB/wN/Af4DVQGyDAABnwIAAf8BmwIA + Af8BmQIAAf8BlwIAAf8BlAIAAf8BkgIAAf8BkAIAAf8BjgIAAf8BjAIAAf8BiwIAAf8B1gGuAZAB/wHW + Aa4BkAH/AfsB5QHXAf8B+gHhAdIB/wHkAa4BigH/AwAB/wGfAgAB/wGbAgAB/wGZAgAB/wGXAgAB/wGU + AgAB/wGSAgAB/wGQAgAB/wGOAgAB/wGMAgAB/wGLAgAB/wHWAa4BkAH/AdYBrgGQAf8B+wHlAdcB/wH6 + AeEB0gH/AeQBrgGKAf8DAAH/AwQBBgM6AWACAAGzAf8BAAGSAcEB/wIAAa8B/wP5Af8BAAGQAd4B/wGE + AaQBwQH/AYgBggEAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wGFAZcBpQH/AUABjQGoAf0BVwJVAboB5QHQ + AboB/wHpAe4B8gH/AbEBnAGGAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wHtAfEB9QH/AeEB5gHqAf8DfwH+ + A1UBsgwAAaECACH/AY0CAAH/AfwB7wHoAf8B/AHsAeIB/wH7AegB3AH/AfoB5AHWAf8B4wGxAY8B/wMA + Af8BoQIAIf8BjQIAAf8B/AHvAegB/wH8AewB4gH/AfsB6AHcAf8B+gHkAdYB/wHjAbEBjwH/AwAB/wMg + AS4DZQH0AcQBxgHKAf8BwAHGAc0B/wIAAbEB/wP6Af8DvQH/AYYChAH/AwAB/wMAAf8BnQGaAZcB/wG8 + AbgBtAH/AwAB/wMAAf8DAAH/A04BlwFXAlUBugHrAdcBvwH/AesB8wH6Af8B9wHzAfAB/wHJAbYBoAH/ + AwAB/wMAAf8DAAH/AwAD/wH+Af8B7wH2Af0B/wN/Af4DVQGyDAABpAIABf8BwAIAAf8BmQIAAv8B0gHA + Af8BjgIAAf8BwAIAAv8BvwGrBf8BjgIAAf8B1gGuAZAB/wHWAa4BkAH/AfsB6gHhAf8B+wHmAdoB/wHi + AbMBlQH/AwAB/wGkAgAF/wHAAgAB/wGZAgAC/wHSAcAB/wGOAgAB/wHAAgAC/wG/AasF/wGOAgAB/wHW + Aa4BkAH/AdYBrgGQAf8B+wHqAeEB/wH7AeYB2gH/AeIBswGVAf8DAAH/AwQBBgM6AWACAAG1Af8BAAGU + AcIB/wIAAbIB/wP6Af8D+AH/AaYCAAH/AwAB/wGIAYQBAAH/AgABgwH/AgABjwH/AwAB/wMAAf8CjQGO + Af8DJQE3AVcCVQG6AewB2AHBAf8B8AH1AfsB/wHxAfIB9AH/AfsB/AH9Af8B/QH3AfAB/wH8Ae4B3gH/ + AZMBgQEAAf8DAAH/Aa8BmgGDBf8DfwH+A1UBsgwAAacCAAX/AcACAAH/AbACAAL/AdMBwQH/AY8CAAH/ + AdgBmgEAAv8BxAGwBf8BkAIAAf8B/QH0Ae8B/wHWAa4BkAH/AfwB7QHkAf8B+wHpAd0B/wHgAbYBmQH/ + AwAB/wGnAgAF/wHAAgAB/wGwAgAC/wHTAcEB/wGPAgAB/wHYAZoBAAL/AcQBsAX/AZACAAH/Af0B9AHv + Af8B1gGuAZAB/wH8Ae0B5AH/AfsB6QHdAf8B4AG2AZkB/wMAAf8DIAEuA2UB9AHEAcYBygH/AcABxwHN + Af8CAAGyAf8D+wH/A/oB/wP4Af8BlgGRAY8B/wEAAZcBxQH/AagB1AH1Af8BsAHXAfcB/wGEAbMB3QH/ + AwAB/wNlAfQDIwEzAVcCVQG6AekB1AG/Af8B9wH9Av8C9QH0Af8C9QH2Af8B9QH3AfgB/wH+AfYB6gH/ + AfUB7AHbAf8DAAH/AwAB/wGUAYUBAAH/A38B/gNUAa8MAAGpAgAB/wH4AfAB5QH/AZwCAAH/AbwCAAH/ + AZgCAAH/AZQCAAH/AakCAAL/AcoBtwX/AZICAAH/Af4B9gHyAf8B1gGuAZAB/wH8Ae4B5gH/AfsB6gHf + Af8B3gG4AZ0B/wMAAf8BqQIAAf8B+AHwAeUB/wGcAgAB/wG8AgAB/wGYAgAB/wGUAgAB/wGpAgAC/wHK + AbcF/wGSAgAB/wH+AfYB8gH/AdYBrgGQAf8B/AHuAeYB/wH7AeoB3wH/Ad4BuAGdAf8DAAH/AwQBBgM6 + AWABAAGCAbUB/wEAAZYBwwH/AgABtAH/A/oB/wP6Af8B4AGiAQAB/wMAAf8BsQHTAe0B/wGzAdcB9gH/ + AZUBwQHrAf8BswHVAe8B/wEAAYUBrQH/A6gB/QMkATYBVwJVAboB5wHRAboF/wH8Av0B/wL8Af0B/wP+ + Af8B6wHXAbcB/wHKAbUBkgH/AfoB8gHlAf8BxwG3AaMB/wMAAf8BjAIAAf8BWwJZAcMMAAGsAgAC/wH5 + AfUB/wGiAgAB/wH1AdIBuAH/AZ8CAAL/AdYBxAH/AZQCAAH/AeIBqgEABf8BlAIAAf8B/gH4AfMB/wHW + Aa4BkAH/AfwB8AHpAf8B/AHsAeEB/wHdAboBoQH/AwAB/wGsAgAC/wH5AfUB/wGiAgAB/wH1AdIBuAH/ + AZ8CAAL/AdYBxAH/AZQCAAH/AeIBqgEABf8BlAIAAf8B/gH4AfMB/wHWAa4BkAH/AfwB8AHpAf8B/AHs + AeEB/wHdAboBoQH/AwAB/wMgAS4DZQH0AcQBxgHKAf8BwAHHAc0B/wIAAbUB/wP5Af8D+QH/AeEBowEA + Af8DAAH/AgABiQH/AgABoAH/AwAB/wMAAf8DAAH/AfUC9gH/AyQBNgFYAlYBvAHhAc8BvRH/AfwB+wH3 + Af8BjAIAAf8DAAH/AcABugGrAf8BvQGvAZsB/wMAAf8DUAGdDAACXAE+AfgB/AHwAeYB/wGlAgAB/wH0 + AecB2gH/AZwCAAH/AeYB0wHEAf8BjwIAAf8BoAIABf8BlgIAAf8B1gGuAZAB/wHWAa4BkAH/Af0B8QHp + Af8B3AG8AaUB/wHdAbsBpAH/AwAB/wJcAT4B+AH8AfAB5gH/AaUCAAH/AfQB5wHaAf8BnAIAAf8B5gHT + AcQB/wGPAgAB/wGgAgAF/wGWAgAB/wHWAa4BkAH/AdYBrgGQAf8B/QHxAekB/wHcAbwBpQH/Ad0BuwGk + Af8DAAH/AwQBBgM6AWABAAGDAbcB/wEAAZkBxAH/AgABtwH/A/gB/wP4Af8B4QGlAQAB/wGAAgAB/wIA + AYgB/wIAAYEB/wIAAYMB/wMAAf8DAAH/A/oB/wMkATYBVgJVAbQBvgGUAQAB/wHaAc8BwwH/AeEB1AHE + Af8B5QHYAckB/wHoAdsBywH/AegB3QHOAf8B5gHWAb0B/wGOAgAB/wMAAf8DAAH/AwAB/wNIAYQDAAEB + CAACXAFYAdEB7AHUAb0C/wH5AfQC/wH1Ae8C/wHuAeIC/wHlAdgC/wHhAdIC/wHhAdEF/wGZAgAB/wH9 + AfgB9AH/Af0B9QHvAf8BtwGiAZMB/wMAAf8DAAH/AwAB/wJcAVgB0QHsAdQBvQL/AfkB9AL/AfUB7wL/ + Ae4B4gL/AeUB2AL/AeEB0gL/AeEB0QX/AZkCAAH/Af0B+AH0Af8B/QH1Ae8B/wG3AaIBkwH/AwAB/wMA + Af8DAAH/AyABLgNlAfQBxAHHAcoB/wHAAccBzQH/AgABtwH/A/cB/wP3Af8D9wH/A+0B/wIAAZIB/wIA + AYsB/wIAAYMB/wMAAf8C2AHZAf8D+gH/AyQBNgMcAScDVgG2AVsCWQHEAVgCVgHBAVgCVgHBAVgCVgHB + AVgCVgHBAVgCVgHBAVgCVgHBAVgCVgHBAVkCVgG+AVwCWQHMA0EB+QNWAbwDMAFLAwcBCQNFAX0BqAGm + AUAB/QHsAdQBvQH/AfwB8AHmAv8B+QH1Av8B/QH8Df8BnAIAAf8B/gH3AfQB/wH9AfQB7wH/AbkBpAGV + Af8B1AHFAboB/wMAAf8DEwEaA0UBfQGoAaYBQAH9AewB1AG9Af8B/AHwAeYC/wH5AfUC/wH9AfwN/wGc + AgAB/wH+AfcB9AH/Af0B9AHvAf8BuQGkAZUB/wHUAcUBugH/AwAB/wMTARoDBAEGAzoBYAEAAYcBuQH/ + AQABmgHFAf8CAAG4Af8D9wH/A/cB/wP3Af8D9wH/A/UB/wP0Af8D9AH/A/QB/wPyAf8D+wH/AyQBNiwA + Aw8BFAM9AWkDWQHHAVcCVQG6AyMBMwQAA0UBfQJcAVgB0QGzAgAB/wGtAgAB/wGpAgAB/wGnAgAB/wGk + AgAB/wGiAgAB/wGfAgAB/wH+AfcB8wH/Af0B9AHtAf8BwAGrAZwB/wMAAf8DEwEaCAADRQF9AlwBWAHR + AbMCAAH/Aa0CAAH/AakCAAH/AacCAAH/AaQCAAH/AaICAAH/AZ8CAAH/Af4B9wHzAf8B/QH0Ae0B/wHA + AasBnAH/AwAB/wMTARoEAAMgAS4DZQH0AcQBxwHKAf8BwQHHAc0B/wIAAbgB/wP8Af8D/AH/A/wB/wP8 + Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8DJAE2MAADGgEkA0IBdANHAYIDHQEpDAAB2AHCAbIB/wHX + AcEBsQH/AdYBwAGwAf8B1AG+Aa4B/wHSAb0BrQH/AdEBugGrAf8BzwG5AaoB/wHNAbYBqAH/AcsBtgGm + Af8BygG0AaUB/wMSARkUAAHYAcIBsgH/AdcBwQGxAf8B1gHAAbAB/wHUAb4BrgH/AdIBvQGtAf8B0QG6 + AasB/wHPAbkBqgH/Ac0BtgGoAf8BywG2AaYB/wHKAbQBpQH/AxIBGQwAAy4BSAEAAYsBwgH/AgABvgH/ + AgABugH/AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMXASABQgFNAT4HAAE+ + AwABKAMAAUADAAHwAQECAAEBAQABAQUAAYABDxYAA/8BAAb/AgAE/wHAAQECAAGAAQEC/wHAAQECAAGA + AQEB8QHhAcABAQIAAYABAQHAAeEBwAEBAgABgAEBAYABYQHAAQECAAGAAQEBgAEBAcABAQIAAYABAQGA + AQEBwAEBAgABgAEBAYABAQHAAQECAAGAAQEBgAEBAcABAQIAAYABAQHAAX8BwAEBAgABgAEBAcAB/wHA + AQECAAGAAQEC/wHAAQECAAGAAQEC/wHAAQECAAT/AcAB+QIABv8CAAf/AX8C/wHAAQEB8AEHAfABBwL/ + AYABAQHwAQcB4AEHAYABAQGAAQAB8AEHAcABAQGAAQEBgAEAAYMBwQHAAQEBgAEBAYABAAGDAcECgQGA + AQEBgAEAAYABAQGDAcEB8AGHAYABAAGAAQEBggFgAfABBwGAAQABgAEBAYIBYAHwAQcBgAEAAYABAQGD + AcEB8AEHAYABAAHAAQEBgAEBAfABBwGAAQAB8AEHAcABAQHwAf8BgAF/AfABBwHAAQMC/wGAAf8B8AEH + AeABBwb/AfgBHxL/AYABAAHwAQEBgwHhAYABAAGAAQAB8AEBAYMB4QGAAQABwAEBAvECgQGAAQABwAEB + AcEB8QGAAYEBgAEAAeABAwHBAfEB8AEHAYABAAHgAQcBwQHxAfgBDwGAAQAB8AEHAcEB8QH8AR8BgAEA + AfABDwHBAfEB/gF/AYABAAH4AR8BwQHxAf4BfwGAAQAB/AEfAcABAQH8AR8BgAEAAfwBHwHAAQEB+AEf + AYABAAH+AT8BwAEDAfgBHwGAAQAB/gF/AcABDwH4AR8E/wHAAQ8B/AEfEP8BgwHhAfABAQGAAQEB+AEf + AYMB4QHwAQEBgAEBAfgBHwKBAvEBgAEBAcABAQGAAYEBwQHxAYABAQGAAQEB8AEHAcEB8QKBAYABAQH4 + AQ8BwQHxAYEBwQGfAfkB/AEfAcEB8QGPAfkBnwH5Af4BfwHBAfEBjwH5AZ8B+QH+AX8BwQHxAY8B+QGf + AfkB/AEfAcABAQGPAfkBnwH5AfgBHwHAAQEBjwH5AZ8B+QH4AR8BwAEDAYABAQGAAQEB+AEfAcABDwGA + AQEBgAEBAfwBHwHAAQ8BgAEBAcABAQj/AgABwAEABP8CAAHAAQABiAEBAfABBwIAAcACAAEBAeABAwIA + AcADAAHAAQECAAGAAwABgAEBBgABiAEBBgABgAERBgABgAEZBgABgAH5BQABAwGAAfEGAAGAASECAAGA + AwABgAEBAgABwAMAAcABAwIAAcADAAHgAQcCAAHAAQEBCAHBAfABDwIAAcABAwT/AgAB4AIAAQ8B8AEP + AgAB4AIAAQ8BwAEHAgAB4AIAAQ8BwAEHAgAB4AEAAT8BjwGAAQECAAHgAQABMQGPBAAB4AEAATEBjwQA + AeABAAEwAY8EAAHgAQABOAH/BAAB4AEAATgBMQQAAeACAAEBBAAB4AIAAQEEAAHgAQABAQGBBAAB4AEA + Af4BAQGAAQECAAHgAQEB/gEBAYABAQIAAeABAwH+AQEB8AGHAgAB4AEHAv8B8QH/AcABAAHAAQAB/wGH + BgAB/gEHBgAB/AEDBgAB+AEDBgAB8AEDBgAB4AEDBwABAQcAAQEHAAEBBgABwAEDBgABgAEDBgABgAED + BgABwAEHBgABwAEHBgAB8AEPAgABgAEAAYABAAH8AQ8EAAHAAQAB4AEPAcAFAAHgAQ8GAAHwAR8GAAHg + AQ8GAAHgAQcGAAHAAQcGAAHAAQMGAAHAAQMGAAHAAQMGAAHAAQMGAAHAAQMGAAHgAQMGAAHgAQMGAAHw + AQcGAAHwAQcEAAGAAQAB+AEPAYADAAH/AQMC/wHAAX8CAAH+AQEB+AEHAcABfwIAAfwBAAHgAQcB4AMA + AfwBAAHAAQcEAAH8AQABwAEHBAABwAEAAcABBwQAAYABAAHAAQcGAAHAAQcFAAEBAcABBwUAAQcBwAEH + BQABBwHAAQcFAAEHAcABBwUAAQcBwAEHBAABgAEHAeABBwH4AwAB6AEHAfgBBwH8AwAB/AEPA/8BAAL/ + AgAG/wIAAfABDwHwAQ8BwAEfAgAB4AEHAeABBwGAAR8CAAHAAQMBwAEDAYABAQIAAYABAQGAAQEBgAEB + AgABgAEBAYABAQGAAQECAAGAAQEBgAEBAYABAQIAAYABAQGAAQEBwAEBAgABgAEBAYABAQHAAQECAAGA + AQEBgAEBAcABAQIAAYABAQGAAQEBwAEBAgABgAEBAYABAQHAAQECAAHAAQMBwAEDAcABAQIAAeABBwHg + AQcC/wIAAfABDwHwAQ8C/wIABP8B+AEfAgABgAEPAv8EAAGAAQ8B4AF/BAAB8QH/AYABDwH+AX8CAAHx + Af8BgAEBAYABAQIAAfABHwGAAQEEAAHwAQcBgAEBBAAB8AEHAYABAQQAAYABBwGAAQEEAAGAAQcBgAEB + BAABgAEHAYABAQQAAYABBwGAAQEEAAHAAQcBgAEBBAAB4AEHAYABAQQAAfABBwGAAQEEAAHwAQcBgAEB + AYABAQIAAfgBDwL/AYABAQIAAfABDwHhAQMBgAEBAgAB8AEPAYABAQGAAQECAAHwAQ8BAAEBAYABAQIA + AcABAwEAAQEBgAEBAgABgAEBAgABgAEBBgABgAEBBgABgAEBBgABgAEBBAABgAEAAYABAQQAAcABAAGA + AQEEAAHgAQABgAEBAgABgAEBAeABAAGAAQECAAGAAQEB4AEAAv8CAAHAAQMB4AEAAv8CAAHgAQcB4AEA + Av8CAAH4AR8B4AEPAfsB/wHgAQcBwAEBAf8B8AHgAX8B+AEfAYABAwH/AfABwAEPAfABHwEAAQcB/wHg + AcABAQHgAQ8BAAEHAf8BwQGAAQABwAEHAQABBwH+AQMBgAEAAcABBwGAAQcB/AEHAgABgAEDAcABBwHA + AQ8CAAGAAQMB8AEHAYABHwIAAYABAwHwAQcBAAE/AgABgAEDAfABBwEAAT8CAAGAAQMB8AEHAQABPwIA + AYABAQHwAQcBAAE/AYABAQGAAQEB8AEHARABPwGAAR8BgAEDAfABBwEAAT8BwAE/AYABAwHwAQcBgAF/ + AfABfwHwAQ8B+wH/AcAB/wHAAQMDAAE/Av8BwAEDAwABPwHwAQ8B+AEfAwABPwHwAQ8B+AEfAwABPwHw + AQAB8AEPBAAB/AEAAeABBwYAAcABAwYAAcABAwYAAcABAQUAASABgAEBBgABgAEBBAABgAEAAcABAwQA + AYABAAHAAQMCAAH8AQABgAEPAcABAwIAAfwBAAHAAR8B4AEHAgAB/AEAAfwBPwH4AR8CAAH8AQAB/gH/ + AfwBHwGgAQUCAAL/AfABBwH8AT8CAAL/AcABAwH+AX8CAAL/AcABAQGAAwAB/wHHAYABAQQAAf8BgwGA + BQAB/wEBAYAFAAGCAQEBgAUAAf4BAQGABQABAgEBAYAFAAH+AQEBgAEBBAABwgEBAYABAQQAAf4BAwHA + AQMEAAH/AQcB4AEDAQABAQIAAf8BjwHwAQ8BgAF/AgAE/wHAAf8CAAT/AYABAQQAAf8BnwYAAf8BHwYA + AeABPwYAAcABfwYAAcABfwYAAcABBwYAAcABAwYAAcABAQYAAcABAQYAAeABAQYAAeABAQYAAfABAwYA + AfABBwYAAfwBDwYAAv8GAAP/AcMCAAH8AT8BAAEfAfwBAwUAAQcB8AEDBQABAQHgAQMFAAEBAcABAQIA + AeABBwEAAQEBgAEBAgABwAEDAQACAQHAAgABwAEDAQABAQEDAeACAAHAAQMBAAIBAeACAAHAAQMBAAIB + AcACAAHAAQMBAAEBAcABAQIAAcABAwEAAQMB4AEBAgABwAEDAQABAwHgAQMCAAHAAQMBAAEHAfABAwIA + AcABAwEAAR8B/AEDAgABwAEDAYEC/wHHAgAB8AEHAeABBwIAAf8BvwL/AcABAQIAAf8BHwHPAf8BgAMA + AZ8BHwGDAZ8BgAMAAYYBHwEAAR8EAAHAAR8BAAEfBAABwAEfASABHwQAAeABDwEwAQ8EAAHgAQMBOAUA + AeABAQEwBQABwAEDASABAQQAAYABPwEAAT8FAAE/AY4BPwGAAwAB/AE/Af8BPwHAAQECAAH+AT8B/wE/ + AeABAwIAAf4BPwH/Ab8B8AEHAgAB/wF/CP8B4AEAAf4BfwT/AeABAAH8AT8B/AEfAfABHwHgAQABwAED + AfwBHwHAAQcCAAHAAQMB/AEfAYABBwIAAcABAwH8AT8BAAEBAgABwAEDAfwBPwEAAQECAAGAAQEB/AE/ + BgABzwHxBAABgAEBAQ8B8AGAAwABwAIDAeABgAEDAgABwAEDAcEBwAGAAQMCAAHAAQMBgAEBAYABBwHg + AQABwAEDAYABAQHgAQ8B4AEAAfwBPwHwAQ8B4AEfAeABAQH+AX8B8gFPAv8B4AEDAeABAAL/AfgBAAGH + Af8CAAH4AQcB8AIAAQMCAAHgAQcBwAEAAYABAwIAAcABBwGAAQEBwAEHAgABwAEHAYABAQH4AR8CAAHA + AQcBgAEDAfwBHwIAAcABBwGAAQMB/AEPAgABwAEHAYABBwH8AQMCAAHAAQcBgAEPAfwBAQIAAcABBwGA + AQ8B+AEDAYABAQHAAQcBgAEPAfgBBwHAAQMBwAEHAYABDwHwAQ8B4AEHAcABBwGAAQ8B8AEPAeABBwHg + AQcBwAEPAfABDwHgAQcB+AEHAfABDwHzAZ8B4AEfBf8BvwQAAeAHAAHgBwAB4AcAAYAHAAGAAQABgAUA + AYABAAHABQABgAEAAcAFAAGAAQEBwAUAAYABAQHABQABgAEBAcAFAAGAAQEB4AEBBAABgAEBAf4BAwQA + AYABAQH+AQMEAAGAAQEB/gEDBAAC/wH+AQMEAAP/AQOAAAHAAQAB+AEAAv8CAAHAAQAB+AEAAYABAQIA + AYADAAGAAQEFAAEBAYABAQUAAQEBgAEBBQABAwGAAQEFAAEDAYABAQUAAQMBgAEBBQABAwGAAQEFAAED + AYABAQUAAQMBgAEBBQABAwGAAQEFAAEDAYABAQIAAcACAAEDAYABAQIAAcABAQEAAQMBgAEBAgABwAED + AQABAwL/BgABwAEDAcAFAAGAAQEBwAUAAYABAAGABQABgAEAAYAFAAGAAQABgAUAAYABAAGABQABgAEA + AYAFAAGABwABgAcAAYABAQYAAYABAwGABQABgAEHAYAFAAGAAQcBgAUAAcABBwHABQABgAEHAcABAQQA + AeABfwHAAQMBgAEBAYABAAGAAQEBgAEBAYABAQGAAQABgAEBAYABAQGAAQEDAAEBAQABAQGAAQEDAAEB + AwABAQMAAQEHAAEBBwABAQcAAQEHAAEBBwABAQcAAQEHAAEBBQABAQEAAQEEAAGAAQEBgAEBAYABAAGA + AQEBgAEDAYABAwGAAQMBwAEDAYABBwGAAQcBgAEHAv8B8AEPAYABAQL/Af4BAwHAAQMBgAEBAv8BeAED + AYABAQEAAQEC/wEAAQMBgAEBBQABAwcAAQEHAAEBBgABgAEBBgABgAcAAYAHAAHABwABwAcAAcABAAGA + AQEBAAEBAgABwAEMAYABAQGAAQECAAHgAT8BwAEDAYABAwT/AfABDwGAAQcC/4AAAcABfwL/AQABHwHg + AQcBwAF/Av8BAAEfAgAB4AEAAYABAQEAAR8EAAGAAQEBAAEfBAABgAEBAYABHwQAAYABAQHABQABgAEB + AcAFAAGAAQEBwAUAAYABAQHABQABgAEBAcAFAAGAAQEB4AEBAYABAQIAAYABAQH+AQMBwAEDAgABgAEB + Af4BAwHgAQcB+AEAAv8B/gEDAeABBwH8AQAC/wH+AQMB4AEHAf8BAAP/AQMB4AEfAgAB4AEAAeAFAAHg + AQAB4AUAAeABAAHgBQAB4AEAAeAFAAHgAQAB4E0AAYABAQGAAQEEAAHgAQMB4AEDAgABwAEAAfwDAAHg + AwAB8AMAAeADAAHgAwAB4AMAAYADAAHgBwAB4A4AAQEGAAGMAWMGAAHAAQMGAAH4AR8GAAHwAQ8FAAEB + AfABDwUAAQcB8AEPBQABDwHwAQ8FAAE/AfABHwGAAQEBgAIAAX8B+AE/AeABAwGAAQ8B4AEAAeABAAHA + AgABBwHgAQAB4AQAAQcB4AEAAeAEAAEHAeABAAHgBAABBwHgAQAB4AQAAQcHAAEHBwABBwcAAQcHAAEH + BwABBwcAAQcHAAEDDgAB/wHgAYABAQGAAQECAAH/AfAB4AEDAeABAwGAAQAL @@ -2691,7 +2711,7 @@ - 84, 28 + 83, 28 TaskList @@ -2989,7 +3009,7 @@ TreeView - FOCA.ModifiedComponents.TreeViewNoFlickering, FOCA, Version=3.4.6.0, Culture=neutral, PublicKeyToken=null + FOCA.ModifiedComponents.TreeViewNoFlickering, FOCA, Version=3.4.6.1, Culture=neutral, PublicKeyToken=null splitContainerMain.Panel1 @@ -3058,7 +3078,7 @@ panelProject - FOCA.PanelProject, FOCA, Version=3.4.6.0, Culture=neutral, PublicKeyToken=null + FOCA.PanelProject, FOCA, Version=3.4.6.1, Culture=neutral, PublicKeyToken=null splitContainerMain.Panel2 @@ -3082,7 +3102,7 @@ panelDnsSnooping - FOCA.PanelDnsSnooping, FOCA, Version=3.4.6.0, Culture=neutral, PublicKeyToken=null + FOCA.PanelDnsSnooping, FOCA, Version=3.4.6.1, Culture=neutral, PublicKeyToken=null splitContainerMain.Panel2 @@ -3103,7 +3123,7 @@ panelTasks - FOCA.PanelTasks, FOCA, Version=3.4.6.0, Culture=neutral, PublicKeyToken=null + FOCA.PanelTasks, FOCA, Version=3.4.6.1, Culture=neutral, PublicKeyToken=null splitContainerMain.Panel2 @@ -3130,7 +3150,7 @@ panelMetadataSearch - FOCA.PanelMetadataSearch, FOCA, Version=3.4.6.0, Culture=neutral, PublicKeyToken=null + FOCA.PanelMetadataSearch, FOCA, Version=3.4.6.1, Culture=neutral, PublicKeyToken=null splitContainerMain.Panel2 @@ -3154,7 +3174,7 @@ panelDNSSearch - FOCA.PanelDNSSearch, FOCA, Version=3.4.6.0, Culture=neutral, PublicKeyToken=null + FOCA.PanelDNSSearch, FOCA, Version=3.4.6.1, Culture=neutral, PublicKeyToken=null splitContainerMain.Panel2 @@ -3178,7 +3198,7 @@ panelInformation - FOCA.PanelInformation, FOCA, Version=3.4.6.0, Culture=neutral, PublicKeyToken=null + FOCA.PanelInformation, FOCA, Version=3.4.6.1, Culture=neutral, PublicKeyToken=null splitContainerMain.Panel2 @@ -3289,7 +3309,7 @@ panelLogs - FOCA.PanelLogs, FOCA, Version=3.4.6.0, Culture=neutral, PublicKeyToken=null + FOCA.PanelLogs, FOCA, Version=3.4.6.1, Culture=neutral, PublicKeyToken=null splitContainer1.Panel2 diff --git a/FOCA/PanelMetadataSearch.cs b/FOCA/PanelMetadataSearch.cs index 521154b..1045f7c 100644 --- a/FOCA/PanelMetadataSearch.cs +++ b/FOCA/PanelMetadataSearch.cs @@ -1174,6 +1174,15 @@ internal void AddDocumentNodes(MetaExtractor doc, TreeNode trnParentNode, FileMe } })); } + + if (originalMetadata.GPS != null) + { + methodsToInvoke.Add(new Action(() => + { + TreeNode gps = trnParentNode.Nodes.Add("GPS", "GPS", 122, 122); + gps.Tag = originalMetadata; + })); + } } Program.FormMainInstance.TreeView.Invoke(new MethodInvoker(() => diff --git a/MetadataExtractCore/Diagrams/FileMetadata.cs b/MetadataExtractCore/Diagrams/FileMetadata.cs index 6e73724..9dd8b2b 100644 --- a/MetadataExtractCore/Diagrams/FileMetadata.cs +++ b/MetadataExtractCore/Diagrams/FileMetadata.cs @@ -55,6 +55,8 @@ public class FileMetadata public string Model { get; set; } + public GeoLocation GPS { get; set; } + public FileMetadata() { this.Applications = new HashSet(); @@ -81,6 +83,7 @@ public bool HasMetadata() this.History.Count > 0 || this.Printers.Count > 0 || this.Passwords.Count > 0 || + this.Makernotes.Count > 0 || !String.IsNullOrWhiteSpace(this.Category) || !String.IsNullOrWhiteSpace(this.Codification) || !String.IsNullOrWhiteSpace(this.Comments) || @@ -96,6 +99,7 @@ public bool HasMetadata() !String.IsNullOrWhiteSpace(this.Template) || !String.IsNullOrWhiteSpace(this.Title) || !String.IsNullOrWhiteSpace(this.UserInfo) || + this.GPS != null || this.VersionNumber > 0 || this.EditTime > 0 || this.Dates.CreationDate.HasValue || diff --git a/MetadataExtractCore/Diagrams/GeoLocation.cs b/MetadataExtractCore/Diagrams/GeoLocation.cs new file mode 100644 index 0000000..dcc3fe3 --- /dev/null +++ b/MetadataExtractCore/Diagrams/GeoLocation.cs @@ -0,0 +1,17 @@ +namespace MetadataExtractCore.Diagrams +{ + public class GeoLocation : MetadataValue + { + public double Latitude { get; set; } + + public double Longitude { get; set; } + + public string Altitude { get; set; } + + public GeoLocation(string dmsLocation, double longitude, double latitude) : base(dmsLocation) + { + this.Longitude = longitude; + this.Latitude = latitude; + } + } +} diff --git a/MetadataExtractCore/Metadata/DocumentExtractor.cs b/MetadataExtractCore/Metadata/DocumentExtractor.cs index f85ea0f..04f568b 100644 --- a/MetadataExtractCore/Metadata/DocumentExtractor.cs +++ b/MetadataExtractCore/Metadata/DocumentExtractor.cs @@ -8,7 +8,7 @@ namespace MetadataExtractCore.Extractors { public abstract class DocumentExtractor : IDisposable { - public static readonly string[] SupportedExtensions = new string[] { ".sxw", ".odt", ".ods", ".odg", ".odp", ".docx", ".xlsx", ".pptx", ".ppsx", ".doc", ".xls", ".ppt", ".pps", ".pdf", ".wpd", ".raw", ".cr2", ".crw", ".jpg", ".jpeg", ".svg", ".svgz", ".indd", ".rdp", ".ica" }; + public static readonly string[] SupportedExtensions = new string[] { ".sxw", ".odt", ".ods", ".odg", ".odp", ".docx", ".xlsx", ".pptx", ".ppsx", ".doc", ".xls", ".ppt", ".pps", ".pdf", ".wpd", ".raw", ".cr2", ".crw", ".jpg", ".jpeg", ".png", ".svg", ".svgz", ".indd", ".rdp", ".ica" }; protected MemoryStream fileStream; protected FileMetadata foundMetadata; @@ -80,7 +80,8 @@ public static DocumentExtractor Create(string extension, Stream file) case ".crw": case ".jpg": case ".jpeg": - document = new EXIFDocument(file, extension); + case ".png": + document = new EXIFDocument(file); break; case ".svg": case ".svgz": diff --git a/MetadataExtractCore/Metadata/EXIF/codec/jpeg/JPEGDecodeParam.cs b/MetadataExtractCore/Metadata/EXIF/codec/jpeg/JPEGDecodeParam.cs deleted file mode 100644 index 21c9d59..0000000 --- a/MetadataExtractCore/Metadata/EXIF/codec/jpeg/JPEGDecodeParam.cs +++ /dev/null @@ -1,359 +0,0 @@ -using System; - -namespace com.codec.jpeg -{ - - public abstract class JPEGDecodeParam - { - /// - /// Unknown or Undefined Color ID - /// - public readonly static int COLOR_ID_UNKNOWN = 0; - - /// - /// Monochrome - /// - public readonly static int COLOR_ID_GRAY = 1; - - /// - /// Red, Green, and Blue - /// - public readonly static int COLOR_ID_RGB = 2; - - /// - /// YCbCr - /// - public readonly static int COLOR_ID_YCbCr = 3; - - /// - /// CMYK - /// - public readonly static int COLOR_ID_CMYK = 4; - - /// - /// PhotoYCC - /// - public readonly static int COLOR_ID_PYCC = 5; - - /// - /// RGB-Alpha - /// - public readonly static int COLOR_ID_RGBA = 6; - - /// - /// YCbCr-Alpha - /// - public readonly static int COLOR_ID_YCbCrA = 7; - - /// - /// RGB-Alpha with R, G, and B inverted. - /// - public readonly static int COLOR_ID_RGBA_INVERTED = 8; - - /// - /// YCbCr-Alpha with Y, Cb, and Cr inverted. - /// - public readonly static int COLOR_ID_YCbCrA_INVERTED = 9; - - /// - /// PhotoYCC-Alpha - /// - public readonly static int COLOR_ID_PYCCA = 10; - - /// - /// YCbCrK - /// - public readonly static int COLOR_ID_YCCK = 11; - - /// - /// Number of color ids defined. - /// - public readonly static int NUM_COLOR_ID = 12; - - /// - /// Number of allowed Huffman and Quantization Tables - /// - public readonly static int NUM_TABLES = 4; - - /// - /// The X and Y units simply indicate the aspect ratio of the pixels. - /// - public readonly static int DENSITY_UNIT_ASPECT_RATIO = 0; - - /// - /// Pixel density is in pixels per inch. - /// - public readonly static int DENSITY_UNIT_DOTS_INCH = 1; - - /// - /// Pixel density is in pixels per centemeter. - /// - public readonly static int DENSITY_UNIT_DOTS_CM = 2; - - /// - /// The max known value for DENSITY_UNIT - /// - public readonly static int NUM_DENSITY_UNIT = 3; - - /// - /// APP0 marker - JFIF info - /// - public readonly static int APP0_MARKER = 0xE0; - - /// - /// APP1 marker - /// - public readonly static int APP1_MARKER = 0xE1; - - /// - /// APP2 marker - /// - public readonly static int APP2_MARKER = 0xE2; - - /// - /// APP3 marker - /// - public readonly static int APP3_MARKER = 0xE3; - - /// - /// APP4 marker - /// - public readonly static int APP4_MARKER = 0xE4; - - /// - /// APP5 marker - /// - public readonly static int APP5_MARKER = 0xE5; - - /// - /// APP6 marker - /// - public readonly static int APP6_MARKER = 0xE6; - - /// - /// APP7 marker - /// - public readonly static int APP7_MARKER = 0xE7; - - /// - /// APP8 marker - /// - public readonly static int APP8_MARKER = 0xE8; - - /// - /// APP9 marker - /// - public readonly static int APP9_MARKER = 0xE9; - - /// - /// APPA marker - /// - public readonly static int APPA_MARKER = 0xEA; - - /// - /// APPB marker - /// - public readonly static int APPB_MARKER = 0xEB; - - /// - /// APPC marker - /// - public readonly static int APPC_MARKER = 0xEC; - - /// - /// APPD marker - /// - public readonly static int APPD_MARKER = 0xED; - - /// - /// APPE marker - Adobe info - /// - public readonly static int APPE_MARKER = 0xEE; - - /// - /// APPF marker - /// - public readonly static int APPF_MARKER = 0xEF; - - /// - /// Adobe marker indicates presence/need for Adobe marker. - /// - public readonly static int COMMENT_MARKER = 0XFE; - - /// - /// Get the image width - /// - /// the width of the image data in pixels. - public abstract int GetWidth(); - - /// - /// Get the image height - /// - /// The height of the image data in pixels. - public abstract int GetHeight(); - - /// - /// Return the Horizontal subsampling lcFactor for requested - /// Component. The Subsample lcFactor is the number of input pixels - /// that contribute to each output pixel. This is distinct from - /// the way the JPEG to each output pixel. This is distinct from - /// the way the JPEG standard defines this quantity, because - /// fractional subsampling factors are not allowed, and it was felt - /// - /// The component of the encoded image to return the subsampling lcFactor for. - /// The subsample lcFactor. - public abstract int GetHorizontalSubsampling(int component); - - /// - /// Return the Vertical subsampling lcFactor for requested Component. - /// The Subsample lcFactor is the number of input pixels that contribute to each output pixel. - /// This is distinct from the way the JPEG to each output pixel. - /// This is distinct from the way the JPEG standard defines this quantity, because - /// fractional subsampling factors are not allowed, and it was felt - /// - /// The component of the encoded image to return the subsampling lcFactor for. - /// The subsample lcFactor. - public abstract int GetVerticalSubsampling(int component); - - /// - /// Returns the coefficient quantization tables or NULL if not defined. - /// tableNum must range in value from 0 - 3. - /// - /// the index of the table to be returned. - /// Quantization table stored at index tableNum. - public abstract JPEGQTable GetQTable(int tableNum ); - - /// - /// Returns the Quantization table for the requested component. - /// - /// the image component of interest. - /// Quantization table associated with component - public abstract JPEGQTable GetQTableForComponent(int component); - - /// - /// Returns the DC Huffman coding table requested or null if not defined - /// - /// the index of the table to be returned. - /// Huffman table stored at index tableNum. - public abstract JPEGHuffmanTable GetDCHuffmanTable( int tableNum ); - - /// - /// Returns the DC Huffman coding table for the requested component. - /// - /// the image component of interest. - /// Huffman table associated with component - public abstract JPEGHuffmanTable GetDCHuffmanTableForComponent(int component); - - /// - /// Returns the AC Huffman coding table requested or null if not defined - /// - /// the index of the table to be returned. - /// Huffman table stored at index tableNum. - public abstract JPEGHuffmanTable GetACHuffmanTable( int tableNum ); - - /// - /// Returns the AC Huffman coding table for the requested component. - /// - /// the image component of interest. - /// Huffman table associated with component - public abstract JPEGHuffmanTable GetACHuffmanTableForComponent(int component); - - /// - /// Get the number of the DC Huffman table that will be used for a particular component. - /// - /// The Component of interest. - /// The table number of the DC Huffman table for component. - public abstract int GetDCHuffmanComponentMapping(int component); - - /// - /// Get the number of the AC Huffman table that will be used for a particular component. - /// - /// The Component of interest. - /// The table number of the AC Huffman table for component. - public abstract int GetACHuffmanComponentMapping(int component); - - /// - /// Get the number of the quantization table that will be used for a particular component. - /// - /// The Component of interest. - /// The table number of the Quantization table for component. - public abstract int GetQTableComponentMapping(int component); - - /// - /// Returns true if the image information in the ParamBlock is currently valid. - /// This indicates if image data was read from the stream for decoding and weather - /// image data should be written when encoding. - /// - /// true if the image information in the ParamBlock is currently valid. - public abstract bool IsImageInfoValid(); - - /// - /// Returns true if the tables in the ParamBlock are currently valid. - /// This indicates that tables were read from the stream for decoding. - /// When encoding this indicates wether tables should be written to the stream. - /// - /// true if the tables in the ParamBlock are currently valid. - public abstract bool IsTableInfoValid(); - - /// - /// Returns true if at least one instance of the marker is present in the Parameter object. - /// For encoding returns true if there is at least one instance of the marker to be written. - /// - /// - /// The marker of interest. - public abstract bool GetMarker(int marker); - - /// - /// Returns a 'byte[][]' associated with the requested marker in the parameter object. - /// Each entry in the 'byte[][]' is the data associated with one instance of - /// the marker (each marker can theoretically appear any number of times in a stream). - /// - /// The marker of interest. - /// The 'byte[][]' for this marker or null if none available. - public abstract byte[][] GetMarkerData(int marker); - - /// - /// Returns the JPEG Encoded color id. This is generally speaking only used - /// if you are decoding into Rasters. Note that when decoding into a Raster no - /// color conversion is performed. - /// - /// The value of the JPEG encoded data'str color id. - public abstract int GetEncodedColorID(); - - /// - /// Returns the number of components for the current encoding COLOR_ID. - /// - /// the number of Components - public abstract int GetNumComponents(); - - /// - /// Get the MCUs per restart marker. - /// - /// The number of MCUs between restart markers. - public abstract int GetRestartInterval(); - - /// - /// Get the code for pixel size units This value is copied from the APP0 marker. - /// It isn't used by the JPEG codec. If the APP0 marker wasn't present then you - /// can not rely on this value. - /// - /// Value indicating the density unit one of the DENSITY_UNIT_* constants. - public abstract int GetDensityUnit(); - - /// - /// Get the horizontal pixel density This value is copied from the APP0 marker. - /// It isn't used by the JPEG code. If the APP0 marker wasn't present then - /// you can not rely on this value. - /// - /// The horizontal pixel density, in units described by - public abstract int GetXDensity(); - - /// - /// Get the vertical pixel density This value is copied into the APP0 marker. - /// It isn't used by the JPEG code. If the APP0 marker wasn't present then - /// you can not rely on this value. - /// - /// The verticle pixel density, in units described by - public abstract int getYDensity(); - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/codec/jpeg/JPEGHuffmanTable.cs b/MetadataExtractCore/Metadata/EXIF/codec/jpeg/JPEGHuffmanTable.cs deleted file mode 100644 index 20b1cb1..0000000 --- a/MetadataExtractCore/Metadata/EXIF/codec/jpeg/JPEGHuffmanTable.cs +++ /dev/null @@ -1,251 +0,0 @@ -using System; - -namespace com.codec.jpeg -{ - /// - /// A class to encapsulate a JPEG Huffman table. - /// - public sealed class JPEGHuffmanTable - { - /// - /// The maximum number of symbol lengths (max symbol length in bits = 16) - /// - private static readonly int HUFF_MAX_LEN=17; - - /// - /// the maximum number of symbols - /// - private static readonly int HUFF_MAX_SYM=256; - - /// - /// bits[k] = number of symbols with length k bits - /// - private short[] lengths; - - /// - /// Symbols in order of increasing length - /// - private short[] symbols; - - /// - /// Standard Huffman table ( JPEG standard section K.3 ) - /// - public static readonly JPEGHuffmanTable StdDCLuminance = JPEGHuffmanTable.InitStdDCLuminance(); - - /// - /// Initialize Standard Huffman table. - /// - /// Standard Huffman table ( JPEG standard section K.3 ) - private static JPEGHuffmanTable InitStdDCLuminance() - { - short[] lengths = { - 0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 }; - short[] symbols = { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - JPEGHuffmanTable resu = new JPEGHuffmanTable(); - resu.lengths = lengths; - resu.symbols = symbols; - resu.checkTable(); - return resu; - } - - - - /// - /// Standard Huffman table Chrominance ( JPEG standard section K.3 ) - /// - public static readonly JPEGHuffmanTable StdDCChrominance = JPEGHuffmanTable.InitStdDCChrominance(); - - /// - /// Initialize Standard Huffman table Chrominance. - /// - /// Standard Huffman table Chrominance ( JPEG standard section K.3 ) - private static JPEGHuffmanTable InitStdDCChrominance() - { - short[] lengths = { // 0-base - 0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 }; - short[] symbols = { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; - JPEGHuffmanTable resu = new JPEGHuffmanTable(); - resu.lengths = lengths; - resu.symbols = symbols; - resu.checkTable(); - return resu; - } - - /// - /// Standard Huffman table Luminance. - /// - public static readonly JPEGHuffmanTable StdACLuminance = JPEGHuffmanTable.InitStdACLuminance(); - - /// - /// Initialize Standard Huffman table Luminance. - /// - /// Standard Huffman table Luminance ( JPEG standard section K.3 ) - private static JPEGHuffmanTable InitStdACLuminance() - { - short[] lengths = { // 0-base - 0, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 0x7d }; - short[] symbols = { - 0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12, - 0x21, 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07, - 0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xa1, 0x08, - 0x23, 0x42, 0xb1, 0xc1, 0x15, 0x52, 0xd1, 0xf0, - 0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0a, 0x16, - 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, - 0x29, 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, - 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, - 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, - 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, - 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, - 0x7a, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, - 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, - 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, - 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, - 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, - 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, - 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe1, 0xe2, - 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, - 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, - 0xf9, 0xfa }; - JPEGHuffmanTable resu = new JPEGHuffmanTable(); - resu.lengths = lengths; - resu.symbols = symbols; - resu.checkTable(); - return resu; - } - - /// - /// Standard Huffman table ACChrominance ( JPEG standard section K.3 ) - /// - public static readonly JPEGHuffmanTable StdACChrominance = JPEGHuffmanTable.InitStdACChrominance(); - - /// - /// Initialize Standard Huffman table ACChrominance. - /// - /// Standard Huffman table ACChrominance ( JPEG standard section K.3 ) - private static JPEGHuffmanTable InitStdACChrominance() - { - short[] lengths = { // 0-base - 0, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 0x77 }; - short[] symbols = { - 0x00, 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21, - 0x31, 0x06, 0x12, 0x41, 0x51, 0x07, 0x61, 0x71, - 0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91, - 0xa1, 0xb1, 0xc1, 0x09, 0x23, 0x33, 0x52, 0xf0, - 0x15, 0x62, 0x72, 0xd1, 0x0a, 0x16, 0x24, 0x34, - 0xe1, 0x25, 0xf1, 0x17, 0x18, 0x19, 0x1a, 0x26, - 0x27, 0x28, 0x29, 0x2a, 0x35, 0x36, 0x37, 0x38, - 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, - 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, - 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, - 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, - 0x79, 0x7a, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, - 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, - 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, - 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, - 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, - 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, - 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, - 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, - 0xea, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, - 0xf9, 0xfa }; - JPEGHuffmanTable resu = new JPEGHuffmanTable(); - resu.lengths = lengths; - resu.symbols = symbols; - resu.checkTable(); - return resu; - } - - /// - /// Private constructor used to construct the Standard Huffman tables - /// - private JPEGHuffmanTable() : base() - { - lengths = null; - symbols = null; - } - - /// - /// Creates a Huffman Table and initializes it. - /// - /// lengths[k] = # of symbols with codes of length k bits; lengths[0] is ignored - /// symbols in order of increasing code length - /// if the length of lengths is greater than 17 or if the length of symbols is greater than 256 or if any of the values in lengths or symbols is less than zero - public JPEGHuffmanTable( short[] lengths, short[] symbols ) - { - if ( lengths.Length > HUFF_MAX_LEN ) - throw new ArgumentException( "lengths array is too long" ); - for (int i=1; i < lengths.Length; i++) - if (lengths[i] < 0) - throw new ArgumentException - ( "Values in lengths array must be non-negative." ); - - - if ( symbols.Length > HUFF_MAX_SYM ) - throw new ArgumentException( "symbols array is too long" ); - for (int i=0; i < symbols.Length; i++) - if (symbols[i] < 0) - throw new ArgumentException - ( "Values in symbols array must be non-negative." ); - - this.lengths = new short[lengths.Length]; - this.symbols = new short[symbols.Length]; - - Array.Copy( lengths, 0, this.lengths, 0, lengths.Length ); - Array.Copy( symbols, 0, this.symbols, 0, symbols.Length ); - - checkTable(); - } - - /// - /// This checks that the table they gave us isn't 'illegal' It checks that the symbol - /// length counts are possible, and that they gave us at least enough symbols for - /// the symbol length counts. Eventually this might check that there aren't duplicate - /// symbols. - /// - private void checkTable() - { - int numVals=2; - int sum=0; - for (int i=1; i symbols.Length) - throw new ArgumentException - ("Invalid Huffman Table provided, not enough symbols."); - } - - /// - /// Return a copy of the array containing the number of symbols for each length in the Huffman table. - /// - /// A short array where array[k] = # of symbols in the table of length k. array[0] is unused - public short[] GetLengths() - { - short[] ret = new short[ lengths.Length]; - Array.Copy( lengths, 0, ret, 0, lengths.Length); - return ret; - } - - /// - /// Return an array containing the Huffman symbols arranged by increasing length. - /// To make use of this array you must refer the the lengths array. - /// - /// A short array of Huffman symbols - public short[] GetSymbols() - { - short[] ret = new short[symbols.Length]; - Array.Copy( symbols, 0, ret, 0, symbols.Length); - return ret; - } - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/codec/jpeg/JPEGQTable.cs b/MetadataExtractCore/Metadata/EXIF/codec/jpeg/JPEGQTable.cs deleted file mode 100644 index daea48a..0000000 --- a/MetadataExtractCore/Metadata/EXIF/codec/jpeg/JPEGQTable.cs +++ /dev/null @@ -1,148 +0,0 @@ -using System; - -namespace com.codec.jpeg -{ - /// - /// Class to encapsulate the JPEG quantization tables. - /// - public sealed class JPEGQTable - { - /// - /// Quantization step for each coefficient in zig-zag order - /// - private int[] quantval; - - /// - /// The number of coefficients in a DCT block - /// - private static readonly byte QTABLESIZE = 64; - - - /// - /// This is the sample luminance quantization table given in the JPEG spec - /// section K.1, expressed in zigzag order. The spec says that the values - /// given produce "good" quality, and when divided by 2, "very good" quality. - /// - public static readonly JPEGQTable StdLuminance = JPEGQTable.InitStdLuminance(); - - /// - /// Initialize the StdLuminance table. - /// - /// the StdLuminance table. - private static JPEGQTable InitStdLuminance() - { - int[] lumVals = { - 16, 11, 12, 14, 12, 10, 16, 14, - 13, 14, 18, 17, 16, 19, 24, 40, - 26, 24, 22, 22, 24, 49, 35, 37, - 29, 40, 58, 51, 61, 60, 57, 51, - 56, 55, 64, 72, 92, 78, 64, 68, - 87, 69, 55, 56, 80, 109, 81, 87, - 95, 98, 103, 104, 103, 62, 77, 113, - 121, 112, 100, 120, 92, 101, 103, 99 - }; - JPEGQTable resu = new JPEGQTable(); - resu.quantval = lumVals; - return resu; - } - - /// - /// This is the sample luminance quantization table given in the JPEG spec - /// section K.1, expressed in zigzag order. The spec says that the values - /// given produce "good" quality, and when divided by 2, "very good" quality. - /// - public static readonly JPEGQTable StdChrominance = JPEGQTable.InitStdChrominance(); - - /// - /// Initialize the StdChrominance table. - /// - /// the StdChrominance table. - private static JPEGQTable InitStdChrominance() - { - int [] chromVals = { - 17, 18, 18, 24, 21, 24, 47, 26, - 26, 47, 99, 66, 56, 66, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99 - }; - JPEGQTable resu = new JPEGQTable(); - resu.quantval = chromVals; - return resu; - } - - /// - /// Constructs an empty quantization table. This is used to create the Std Q-Tables. - /// - private JPEGQTable() : base() - { - quantval = new int[QTABLESIZE]; - } - - /// - /// Constructs an quantization table from the array that was passed. - /// The coefficents must be in zig-zag order. - /// The array must be of length 64. - /// - /// the quantization table (this is copied). - /// if table has not a length of 64 - public JPEGQTable(int[] table ) - { - if ( table.Length != QTABLESIZE ) - { - throw new ArgumentException("Quantization table is the wrong size."); - } - else - { - quantval = new int[QTABLESIZE]; - Array.Copy(table, 0, quantval, 0, QTABLESIZE ); - } - } - - /// - /// Returns the current quantization table as an array of someInts in zig zag order. - /// - /// A copy of the contained quantization table. - public int[] GetTable() - { - int[] table = new int[QTABLESIZE]; - Array.Copy(quantval, 0, table, 0, QTABLESIZE ); - return table; - } - - /// - /// Returns a new Quantization table where the values are multiplied by - /// scaleFactor and then clamped to the range 1..32767 (or to 1..255 if - /// forceBaseline is 'true'). - /// - /// Values less than one tend to improve the quality level of the table, - /// and values greater than one degrade the quality level of the table. - /// - /// the multiplication lcFactor for the table - /// if true the values will be clamped to the range [1 .. 255] - /// A new Q-Table that is a linear multiple of this Q-Table - public JPEGQTable GetScaledInstance(float scaleFactor, - bool forceBaseline ) - { - long max = (forceBaseline)?255L:32767L; - int []ret = new int[QTABLESIZE]; - - for (int i=0; i max ) holder = max; - - ret[i] = (int)holder; - } - return new JPEGQTable(ret); - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/drew/imaging/jpg/JpegMetadataReader.cs b/MetadataExtractCore/Metadata/EXIF/drew/imaging/jpg/JpegMetadataReader.cs deleted file mode 100644 index 0c31150..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/imaging/jpg/JpegMetadataReader.cs +++ /dev/null @@ -1,168 +0,0 @@ -using System; -using System.Diagnostics; -using System.IO; -using com.codec.jpeg; -using com.drew.metadata; -using com.drew.metadata.jpeg; -using com.drew.metadata.iptc; -using com.drew.metadata.exif; - -namespace com.drew.imaging.jpg -{ - /// - /// This class will extract MetaData from a picture. - /// - public class JpegMetadataReader - { - /// - /// Constructor of the object - /// - /// Allways - private JpegMetadataReader() : base() - { - throw new Exception("Do not use"); - } - - /// - /// Reads MetaData from a aFile - /// - /// where to read information - /// the aMetadata object - public static Metadata ReadMetadata(FileInfo aFile) - { - JpegSegmentReader lcSegmentReader = null; - Metadata lcMetadata = null; - try - { - lcSegmentReader = new JpegSegmentReader(aFile); - lcMetadata = JpegMetadataReader.ExtractJpegSegmentReaderMetadata(lcSegmentReader); - - } - finally - { - if (lcSegmentReader != null) - { - //Dispose will call close for this class - lcSegmentReader.Dispose(); - } - } - return lcMetadata; - } - - public static Metadata ReadMetadata(Stream aStream) - { - JpegSegmentReader lcSegmentReader = null; - Metadata lcMetadata = null; - try - { - lcSegmentReader = new JpegSegmentReader(aStream); - lcMetadata = JpegMetadataReader.ExtractJpegSegmentReaderMetadata(lcSegmentReader); - - } - finally - { - if (lcSegmentReader != null) - { - // Dispose will call close for this class - lcSegmentReader.Dispose(); - } - } - return lcMetadata; - } - - /// - /// Extracts aMetadata from a SegmentReader - /// - /// where to extract aMetadata - /// the aMetadata found - private static Metadata ExtractJpegSegmentReaderMetadata(JpegSegmentReader aSegmentReader) - { - Metadata lcMetadata = new Metadata(); - try - { - byte[] lcExifSegment = - aSegmentReader.ReadSegment(JpegSegmentReader.SEGMENT_APP1); - new ExifReader(lcExifSegment).Extract(lcMetadata); - } - catch (Exception e) - { - Trace.TraceWarning("Error in reading Exif segment ("+e.Message+")"); - // in the interests of catching as much data as possible, continue - } - - try - { - byte[] lcIptcSegment = - aSegmentReader.ReadSegment(JpegSegmentReader.SEGMENT_APPD); - new IptcReader(lcIptcSegment).Extract(lcMetadata); - } - catch (Exception e) - { - Trace.TraceWarning("Error in reading Iptc segment (" + e.Message + ")"); - } - - try - { - byte[] lcJpegSegment = - aSegmentReader.ReadSegment(JpegSegmentReader.SEGMENT_SOF0); - new JpegReader(lcJpegSegment).Extract(lcMetadata); - } - catch (Exception e) - { - Trace.TraceWarning("Error in reading Jpeg segment (" + e.Message + ")"); - } - - try - { - byte[] lcJpegCommentSegment = - aSegmentReader.ReadSegment(JpegSegmentReader.SEGMENT_COM); - new JpegCommentReader(lcJpegCommentSegment).Extract(lcMetadata); - } - catch (Exception e) - { - Trace.TraceWarning("Error in reading Jpeg Comment segment (" + e.Message + ")"); - } - - return lcMetadata; - } - - /// - /// Reads aMetadata from a JPEGDecodeParam object - /// - /// where to find aMetadata - /// the aMetadata found - public static Metadata ReadMetadata(JPEGDecodeParam aDecodeParam) - { - Metadata lcMetadata = new Metadata(); - - // We should only really be seeing Exif in _data[0]... the 2D array exists - // because markers can theoretically appear multiple times in the aFile. - byte[][] lcExifSegment = - aDecodeParam.GetMarkerData(JPEGDecodeParam.APP1_MARKER); - if (lcExifSegment != null && lcExifSegment[0].Length > 0) - { - new ExifReader(lcExifSegment[0]).Extract(lcMetadata); - } - - // similarly, use only the first IPTC segment - byte[][] lcIptcSegment = - aDecodeParam.GetMarkerData(JPEGDecodeParam.APPD_MARKER); - if (lcIptcSegment != null && lcIptcSegment[0].Length > 0) - { - new IptcReader(lcIptcSegment[0]).Extract(lcMetadata); - } - - // NOTE: Unable to utilise JpegReader for the SOF0 frame here, as the aDecodeParam doesn't contain the byte[] - - // similarly, use only the first Jpeg Comment segment - byte[][] lcJpegCommentSegment = - aDecodeParam.GetMarkerData(JPEGDecodeParam.COMMENT_MARKER); - if (lcJpegCommentSegment != null && lcJpegCommentSegment[0].Length > 0) - { - new JpegCommentReader(lcJpegCommentSegment[0]).Extract(lcMetadata); - } - - return lcMetadata; - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/drew/imaging/jpg/JpegProcessingException.cs b/MetadataExtractCore/Metadata/EXIF/drew/imaging/jpg/JpegProcessingException.cs deleted file mode 100644 index 8ca9ca6..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/imaging/jpg/JpegProcessingException.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System; -using com.drew.lang; - -namespace com.drew.imaging.jpg -{ - /// - /// Represents a JpegProcessing exception - /// - [Serializable] - public class JpegProcessingException : CompoundException - { - /// - /// Constructor of the object - /// - /// The error aMessage - public JpegProcessingException(string aMessage) : base(aMessage) - { - } - - /// - /// Constructor of the object - /// - /// The error aMessage - /// The aCause of the exception - public JpegProcessingException(string aMessage, Exception aCause) : base(aMessage, aCause) - { - } - - /// - /// Constructor of the object - /// - /// The aCause of the exception - public JpegProcessingException(Exception aCause) : base(aCause) - { - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/drew/imaging/jpg/JpegSegmentData.cs b/MetadataExtractCore/Metadata/EXIF/drew/imaging/jpg/JpegSegmentData.cs deleted file mode 100644 index ef3d5a2..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/imaging/jpg/JpegSegmentData.cs +++ /dev/null @@ -1,200 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Collections; -using System.IO; -using System.Runtime.Serialization.Formatters.Binary; -using System.Runtime.Serialization; - - -namespace com.drew.imaging.jpg -{ - [Serializable] - public class JpegSegmentData - { - - /// - /// A map of byte[], keyed by the segment marker. - /// - private IDictionary> segmentDataMap; - - /// - /// Constructor of the object. - /// - public JpegSegmentData() - : base() - { - this.segmentDataMap = new Dictionary>(10); - } - - /// - /// Adds a segment. - /// - /// the marker - /// the value of the segment - public void AddSegment(byte aSegmentMarker, byte[] aSegmentBytes) - { - IList lcSegmentList = this.GetOrCreateSegmentList(aSegmentMarker); - lcSegmentList.Add(aSegmentBytes); - } - - /// - /// Gets a segment using its key. - /// - /// the segment'str key - /// The segment found or null if none found - public byte[] GetSegment(byte aSegmentMarker) - { - return this.GetSegment(aSegmentMarker, 0); - } - - /// - /// Gets a segment using its marker and occurence value. - /// - /// the segment'str marker - /// the segment'str occurence - /// the segment found at the given occurence, or null if none found - public byte[] GetSegment(byte aSegmentMarker, int anOccurrence) - { - IList lcSegmentList = this.GetSegmentList(aSegmentMarker); - - if (lcSegmentList == null || lcSegmentList.Count <= anOccurrence) - { - return null; - } - return lcSegmentList[anOccurrence]; - } - - /// - /// Gets a segment size. - /// - /// the segment'str marker - /// the size of the marker, zero if none found - public int GetSegmentCount(byte aSegmentMarker) - { - IList lcSegmentList = this.GetSegmentList(aSegmentMarker); - if (lcSegmentList == null) - { - return 0; - } - return lcSegmentList.Count; - } - - /// - /// Removes a segment using its marker and occurence value. - /// - /// the segment'str marker - /// the segment'str occurence - public void RemoveSegmentOccurrence(byte aSegmentMarker, int anOccurrence) - { - IList lcSegmentList = this.GetSegmentList(aSegmentMarker); - if (lcSegmentList != null) - { - lcSegmentList.RemoveAt(anOccurrence); - } - - } - - /// - /// Removes a segment using its marker and occurence value. - /// - /// the segment'str marker - public void RemoveSegment(byte aSegmentMarker) - { - if (this.segmentDataMap.ContainsKey(aSegmentMarker)) - { - this.segmentDataMap.Remove(aSegmentMarker); - } - } - - /// - /// Gets the segment list of value. - /// - /// the segment marker - /// the segemnt list of value, null if none found - private IList GetSegmentList(byte aSegmentMarker) - { - if (this.segmentDataMap.ContainsKey(aSegmentMarker)) - { - return this.segmentDataMap[aSegmentMarker]; - } - return null; - } - - /// - /// Gets or creates the segment value with the given marker key. - /// - /// the segment'str marker - /// the segment marker you were looking for, or a new one if none exist - private IList GetOrCreateSegmentList(byte aSegmentMarker) - { - IList lcSegmentList = null; - if (this.segmentDataMap.ContainsKey(aSegmentMarker)) - { - lcSegmentList = this.segmentDataMap[aSegmentMarker]; - } - else - { - lcSegmentList = new List(); - segmentDataMap.Add(aSegmentMarker, lcSegmentList); - } - return lcSegmentList; - } - - /// - /// Indicates if the segment is present or not. - /// - /// the segment'str marker you are looking for - /// true if present false if not - public bool ContainsSegment(byte aSegmentMarker) - { - return this.segmentDataMap.ContainsKey(aSegmentMarker); - } - - /// - /// Writes the aSegmentData to a aFile. - /// - /// where to write the information - /// what to write in the aFile - public static void ToFile(string aFileName, JpegSegmentData aSegmentData) - { - BinaryFormatter lcBinFor = new BinaryFormatter(); - - try - { - using (var lcFileStream = new FileStream(aFileName, FileMode.CreateNew)) { - lcBinFor.Serialize(lcFileStream, aSegmentData); - } - } - catch (Exception) - { - - } - } - - /// - /// Loads a jpegsegmentdata from a file. - /// - /// where to find data - /// the jpegsegment asked - public static JpegSegmentData FromFile(string aFileName) - { - BinaryFormatter lcBinFor = new BinaryFormatter(); - JpegSegmentData res = null; - try - { - using (var lcFileStream = new FileStream(aFileName, FileMode.Open)) - { - res = (JpegSegmentData)lcBinFor.Deserialize(lcFileStream); - } - } - catch (Exception e) - { - throw new JpegProcessingException( - "IOException processing Jpeg file: " + e.Message, - e); - } - return res; - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/drew/imaging/jpg/JpegSegmentReader.cs b/MetadataExtractCore/Metadata/EXIF/drew/imaging/jpg/JpegSegmentReader.cs deleted file mode 100644 index dcc69c5..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/imaging/jpg/JpegSegmentReader.cs +++ /dev/null @@ -1,349 +0,0 @@ -using System; -using System.IO; - -namespace com.drew.imaging.jpg -{ - /// - /// Will analyze a stream form an image - /// - public class JpegSegmentReader - { - private FileInfo file; - - private byte[] data; - - private Stream stream; - - private JpegSegmentData segmentDataMap; - - /// - /// Private, because this segment crashes my algorithm, and searching for it doesn't work (yet). - /// - private const byte SEGMENT_SOS = (byte)0xDA; - - /// - /// Private, because one wouldn't search for it. - /// - private const byte MARKER_EOI = (byte)0xD9; - - /// - /// APP0 Jpeg segment identifier -- Jfif data. - /// - public const byte SEGMENT_APP0 = (byte)0xE0; - /// - /// APP1 Jpeg segment identifier -- where Exif data is kept. - /// - public const byte SEGMENT_APP1 = (byte)0xE1; - /// - /// APP2 Jpeg segment identifier. - /// - public const byte SEGMENT_APP2 = (byte)0xE2; - /// - /// APP3 Jpeg segment identifier. - /// - public const byte SEGMENT_APP3 = (byte)0xE3; - /// - /// APP4 Jpeg segment identifier. - /// - public const byte SEGMENT_APP4 = (byte)0xE4; - /// - /// APP5 Jpeg segment identifier. - /// - public const byte SEGMENT_APP5 = (byte)0xE5; - /// - /// APP6 Jpeg segment identifier. - /// - public const byte SEGMENT_APP6 = (byte)0xE6; - /// - /// APP7 Jpeg segment identifier. - /// - public const byte SEGMENT_APP7 = (byte)0xE7; - /// - /// APP8 Jpeg segment identifier. - /// - public const byte SEGMENT_APP8 = (byte)0xE8; - /// - /// APP9 Jpeg segment identifier. - /// - public const byte SEGMENT_APP9 = (byte)0xE9; - /// - /// APPA Jpeg segment identifier -- can hold Unicode comments. - /// - public const byte SEGMENT_APPA = (byte)0xEA; - /// - /// APPB Jpeg segment identifier. - /// - public const byte SEGMENT_APPB = (byte)0xEB; - /// - /// APPC Jpeg segment identifier. - /// - public const byte SEGMENT_APPC = (byte)0xEC; - /// - /// APPD Jpeg segment identifier -- IPTC data in here. - /// - public const byte SEGMENT_APPD = (byte)0xED; - /// - /// APPE Jpeg segment identifier. - /// - public const byte SEGMENT_APPE = (byte)0xEE; - /// - /// APPF Jpeg segment identifier. - /// - public const byte SEGMENT_APPF = (byte)0xEF; - /// - /// Start Of Image segment identifier. - /// - public const byte SEGMENT_SOI = (byte)0xD8; - /// - /// Define Quantization Table segment identifier. - /// - public const byte SEGMENT_DQT = (byte)0xDB; - /// - /// Define Huffman Table segment identifier. - /// - public const byte SEGMENT_DHT = (byte)0xC4; - /// - /// Start-of-Frame Zero segment identifier. - /// - public const byte SEGMENT_SOF0 = (byte)0xC0; - /// - /// Jpeg comment segment identifier. - /// - public const byte SEGMENT_COM = (byte)0xFE; - - - /// - /// Constructor of the object - /// - /// where to read - public JpegSegmentReader(FileInfo aFile) - : base() - { - this.file = aFile; - this.data = null; - this.stream = null; - this.ReadSegments(); - } - - /// - /// Constructor of the object - /// - /// where to read - public JpegSegmentReader(byte[] aFileContents) - { - this.file = null; - this.stream = null; - this.data = aFileContents; - this.ReadSegments(); - } - - - /// - /// Constructor of the object - /// - /// where to read. - public JpegSegmentReader(Stream aStream) - { - this.stream = aStream; - this.file = null; - this.data = null; - this.ReadSegments(); - } - - /// - /// Reads the first instance of a given Jpeg segment, returning the contents as a byte array. - /// - /// the byte identifier for the desired segment - /// the byte array if found, else null - /// for any problems processing the Jpeg data - public byte[] ReadSegment(byte aSegmentMarker) - { - return this.ReadSegment(aSegmentMarker, 0); - } - - /// - /// Reads the first instance of a given Jpeg segment, returning the contents as a byte array. - /// - /// the byte identifier for the desired segment - /// the anOccurrence of the specified segment within the jpeg aFile - /// the byte array if found, else null - /// for any problems processing the Jpeg data - public byte[] ReadSegment(byte aSegmentMarker, int anOccurrence) - { - return this.segmentDataMap.GetSegment(aSegmentMarker); - } - - /// - /// Gets the number of segment - /// - /// the byte identifier for the desired segment - /// the number of segment or zero if segment does not exist - public int GetSegmentCount(byte aSegmentMarker) - { - return this.segmentDataMap.GetSegmentCount(aSegmentMarker); - } - - /// - /// Reads segments - /// - /// for any problems processing the Jpeg data - private void ReadSegments() - { - this.segmentDataMap = new JpegSegmentData(); - using (var lcInStream = this.GetJpegInputStream()) - { - try - { - int lcOffset = 0; - // first two bytes should be jpeg magic number - if (!this.IsValidJpegHeaderBytes(lcInStream)) - { - throw new JpegProcessingException("not a jpeg file"); - } - lcOffset += 2; - do - { - // next byte is 0xFF - byte lcSegmentIdentifier = (byte)(lcInStream.ReadByte() & 0xFF); - if ((lcSegmentIdentifier & 0xFF) != 0xFF) - { - throw new JpegProcessingException( - "expected jpeg segment start identifier 0xFF at offset " - + lcOffset - + ", not 0x" - + (lcSegmentIdentifier & 0xFF).ToString("X")); - } - lcOffset++; - // next byte is - byte lcSegmentMarker = (byte)(lcInStream.ReadByte() & 0xFF); - lcOffset++; - // next 2-bytes are : [high-byte] [low-byte] - byte[] lcSegmentLengthBytes = new byte[2]; - lcInStream.Read(lcSegmentLengthBytes, 0, 2); - lcOffset += 2; - int lcSegmentLength = - ((lcSegmentLengthBytes[0] << 8) & 0xFF00) - | (lcSegmentLengthBytes[1] & 0xFF); - // segment length includes size bytes, so subtract two - lcSegmentLength -= 2; - if (lcSegmentLength > (lcInStream.Length - lcInStream.Position)) - { - throw new JpegProcessingException("segment size would extend beyond file stream length"); - } - else if (lcSegmentLength < 0) - { - throw new JpegProcessingException("segment size would be less than zero"); - } - byte[] lcSegmentBytes = new byte[lcSegmentLength]; - lcInStream.Read(lcSegmentBytes, 0, lcSegmentLength); - lcOffset += lcSegmentLength; - if ((lcSegmentMarker & 0xFF) == (SEGMENT_SOS & 0xFF)) - { - // The 'Start-Of-Scan' segment'str length doesn't include the image data, instead would - // have to search for the two bytes: 0xFF 0xD9 (EOI). - // It comes last so simply return at this point - return; - } - else if ((lcSegmentMarker & 0xFF) == (MARKER_EOI & 0xFF)) - { - // the 'End-Of-Image' segment -- this should never be found in this fashion - return; - } - else - { - this.segmentDataMap.AddSegment(lcSegmentMarker, lcSegmentBytes); - } - // didn't find the one we're looking for, loop through to the next segment - } while (true); - } - catch (Exception ioe) - { - throw new JpegProcessingException( - "IOException processing Jpeg file: " + ioe.Message, - ioe); - } - } - } - - /// - /// Private helper method to create a BufferedInputStream of Jpeg data - /// from whichever data source was specified upon construction of this instance. - /// - /// a BufferedStream of Jpeg data - /// for any problems processing the Jpeg data - private BufferedStream GetJpegInputStream() - { - if (this.stream != null) - { - if (this.stream is BufferedStream) - { - return (BufferedStream)this.stream; - } - else - { - return new BufferedStream(this.stream); - } - } - Stream lcInputStream = null; - if (this.data == null) - { - try - { - // Added read only access for ASPX use, thanks for Ryan Patridge - lcInputStream = this.file.Open(FileMode.Open, FileAccess.Read); - } - catch (FileNotFoundException e) - { - throw new JpegProcessingException( - "Jpeg file \"" + file.FullName + "\" does not exist", - e); - } - } - else - { - lcInputStream = new MemoryStream(this.data); - } - return new BufferedStream(lcInputStream); - } - - /// - /// Helper method that validates the Jpeg aFile'str magic number. - /// - /// the InputStream to read bytes from, which must be positioned at its start (i.e. no bytes read yet) - /// true if the magic number is Jpeg (0xFFD8) - /// for any problems processing the Jpeg data - private bool IsValidJpegHeaderBytes(BufferedStream aFileStream) - { - byte[] lcHeader = new byte[2]; - aFileStream.Read(lcHeader, 0, 2); - return ((lcHeader[0] & 0xFF) == 0xFF && (lcHeader[1] & 0xFF) == 0xD8); - } - - /// - /// Close the stream. - /// - public void Close() - { - if (this.stream != null) - { - this.stream.Close(); - } - } - - /// - /// Dispose the stream and all object linked with it - /// - public void Dispose() - { - if (this.stream != null) - { - this.stream.Close(); - this.stream.Dispose(); - } - if (this.file != null) - { - this.file = null; - } - } - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/drew/imaging/tiff/TiffMetadataReader.cs b/MetadataExtractCore/Metadata/EXIF/drew/imaging/tiff/TiffMetadataReader.cs deleted file mode 100644 index 74d85e7..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/imaging/tiff/TiffMetadataReader.cs +++ /dev/null @@ -1,68 +0,0 @@ -using System; -using System.IO; -using com.codec.jpeg; -using com.drew.metadata; -using com.drew.metadata.exif; - -namespace com.drew.imaging.tiff -{ - /// - /// This class will extract MetaData from a picture. - /// - public class TiffMetadataReader - { - /// - /// Constructor of the object. - /// - private TiffMetadataReader() - : base() - { - throw new Exception("Do not use"); - } - - /// - /// Constructor of the object. - /// - /// Where to read metadata from - /// a meta data - public static Metadata ReadMetadata(FileInfo aFile) - { - Metadata lcMetadata = null; - try - { - using (var lcStream = aFile.OpenRead()) { - lcMetadata = ReadMetadata(lcStream); - } - - } - catch (Exception e) - { - throw new MetadataException("Error reading metadata from tiff file: " + e.Message, - e); - } - return lcMetadata; - } - - /// - /// Constructor of the object. - /// - /// Where to read information from. Caution, you are responsible for closing this stream. - /// a meta data object - public static Metadata ReadMetadata(Stream aStream) - { - Metadata metadata = new Metadata(); - try - { - byte[] buffer = new byte[(int)aStream.Length]; - aStream.Read(buffer, 0, buffer.Length); - - new ExifReader(buffer).ExtractTiff(metadata); - } - catch (MetadataException e) - { - throw new TiffProcessingException(e); - } - return metadata; - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/drew/imaging/tiff/TiffProcessingException.cs b/MetadataExtractCore/Metadata/EXIF/drew/imaging/tiff/TiffProcessingException.cs deleted file mode 100644 index 9a80e0b..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/imaging/tiff/TiffProcessingException.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; -using com.drew.lang; - -namespace com.drew.imaging.tiff -{ - /// - /// Represents a TiffProcessing exception - /// - [Serializable] - public class TiffProcessingException : CompoundException - { - /// - /// Constructor of the object - /// - /// The error aMessage - public TiffProcessingException(string aMessage) - : base(aMessage) - { - } - - /// - /// Constructor of the object - /// - /// The error aMessage - /// The aCause of the exception - public TiffProcessingException(string aMessage, Exception aCause) - : base(aMessage, aCause) - { - } - - /// - /// Constructor of the object - /// - /// The aCause of the exception - public TiffProcessingException(Exception aCause) - : base(aCause) - { - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/drew/lang/CompoundException.cs b/MetadataExtractCore/Metadata/EXIF/drew/lang/CompoundException.cs deleted file mode 100644 index 11db23d..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/lang/CompoundException.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System; - -namespace com.drew.lang -{ - /// - /// This is Compound exception - /// - [Serializable] - public class CompoundException : Exception - { - /// - /// Constructor of the object - /// - /// The error aMessage - public CompoundException(string aMessage) : base(aMessage) - { - } - - /// - /// Constructor of the object - /// - /// The error aMessage - /// The aCause of the exception - public CompoundException(string aMessage, Exception aCause) : base(aMessage, aCause) - { - } - - /// - /// Constructor of the object - /// - /// The aCause of the exception - public CompoundException(Exception aCause) : base(null, aCause) - { - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/drew/lang/Rational.cs b/MetadataExtractCore/Metadata/EXIF/drew/lang/Rational.cs deleted file mode 100644 index 35d4e4d..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/lang/Rational.cs +++ /dev/null @@ -1,268 +0,0 @@ -using System; - -namespace com.drew.lang -{ - [Serializable] - public class Rational - { - /// - /// Holds the numerator. - /// - private readonly int numerator; - - /// - /// Holds the denominator. - /// - private readonly int denominator; - - private int maxSimplificationCalculations = 1000; - - /// - /// Creates a new instance of Rational. - /// Rational objects are immutable, so once you've set your numerator and - /// denominator values here, you're stuck with them! - /// - /// a numerator - /// a denominator - public Rational(int aNumerator, int aDenominator) - : base() - { - this.numerator = aNumerator; - this.denominator = aDenominator; - } - - /// - /// Returns the value of the specified number as a double. This may involve rounding. - /// - /// the numeric value represented by this object after conversion to type double. - public double DoubleValue() - { - return (double)this.numerator / (double)this.denominator; - } - - /// - /// Returns the value of the specified number as a float. This may involve rounding. - /// - /// the numeric value represented by this object after conversion to type float. - public float FloatValue() - { - return (float)this.numerator / (float)this.denominator; - } - - /// - /// Returns the value of the specified number as a byte. - /// This may involve rounding or truncation. - /// This implementation simply casts the result of doubleValue() to byte. - /// - /// the numeric value represented by this object after conversion to type byte. - public byte ByteValue() - { - return (byte)this.DoubleValue(); - } - - /// - /// Returns the value of the specified number as an int. - /// This may involve rounding or truncation. - /// This implementation simply casts the result of doubleValue() to int. - /// - /// the numeric value represented by this object after conversion to type int. - public int IntValue() - { - return (int)this.DoubleValue(); - } - - /// - /// Returns the value of the specified number as a long. - /// This may involve rounding or truncation. - /// This implementation simply casts the result of doubleValue() to long. - /// - /// the numeric value represented by this object after conversion to type long. - public long LongValue() - { - return (long)this.DoubleValue(); - } - - /// - /// Returns the value of the specified number as a short. - /// This may involve rounding or truncation. - /// This implementation simply casts the result of doubleValue() to short. - /// - /// the numeric value represented by this object after conversion to type short. - public short ShortValue() - { - return (short)this.DoubleValue(); - } - - /// - /// Returns the denominator. - /// - /// the denominator. - public int GetDenominator() - { - return this.denominator; - } - - /// - /// Returns the numerator. - /// - /// the numerator. - public int GetNumerator() - { - return this.numerator; - } - - /// - /// Returns the reciprocal value of this obejct as a new Rational. - /// - /// the reciprocal in a new object - public Rational GetReciprocal() - { - return new Rational(this.denominator, this.numerator); - } - - /// - /// Checks if this rational number is an Integer, either positive or negative. - /// - /// true is Rational is an integer, false otherwize - public bool IsInteger() - { - return (this.denominator == 1 - || (this.denominator != 0 && (this.numerator % this.denominator == 0)) - || (this.denominator == 0 && this.numerator == 0)); - } - - /// - /// Returns a string representation of the object of form numerator/denominator. - /// - /// a string representation of the object. - public override String ToString() - { - return this.numerator + "/" + this.denominator; - } - - /// - /// Returns the simplest represenation of this Rational'str value possible. - /// - /// if true then decimal will be showned - /// the simplest represenation of this Rational'str value possible. - public String ToSimpleString(bool isAllowDecimal) - { - if (this.denominator == 0 && this.numerator != 0) - { - return this.ToString(); - } - else if (this.IsInteger()) - { - return this.IntValue().ToString(); - } - else if (this.numerator != 1 && this.denominator % this.numerator == 0) - { - // common lcFactor between denominator and numerator - int lcNewDenominator = this.denominator / this.numerator; - return new Rational(1, lcNewDenominator).ToSimpleString(isAllowDecimal); - } - else - { - Rational lcSimplifiedInstance = this.GetSimplifiedInstance(); - if (isAllowDecimal) - { - String lcDoubleString = - lcSimplifiedInstance.DoubleValue().ToString(); - if (lcDoubleString.Length < 5) - { - return lcDoubleString; - } - } - return lcSimplifiedInstance.ToString(); - } - } - - - /// - /// Decides whether a brute-force simplification calculation should be avoided by comparing the - /// maximum number of possible calculations with some threshold. - /// - /// true if the simplification should be performed, otherwise false - private bool TooComplexForSimplification() - { - double lcMaxPossibleCalculations = - (((double)(Math.Min(this.denominator, this.numerator) - 1) / 5d) + 2); - return lcMaxPossibleCalculations > this.maxSimplificationCalculations; - } - - /// - /// Compares two Rational instances, returning true if they are mathematically equivalent. - /// - /// the Rational to compare this instance to. - /// true if instances are mathematically equivalent, otherwise false. Will also return false if anObject is not an instance of Rational. - public override bool Equals(object anObject) - { - if (anObject == null) return false; - if (anObject == this) return true; - if (anObject is Rational rational) - { - return this.DoubleValue() == rational.DoubleValue(); - } - return false; - } - - /// - /// Simplifies the Rational number. - /// - /// Prime number series: 1, 2, 3, 5, 7, 9, 11, 13, 17 - /// - /// To reduce a rational, need to see if both numerator and denominator are divisible - /// by a common lcFactor. Using the prime number series in ascending order guarantees - /// the minimun number of checks required. - /// - /// However, generating the prime number series seems to be a hefty task. Perhaps - /// it'str simpler to check if both d & n are divisible by all numbers from 2 -> - /// (Math.min(denominator, numerator) / 2). In doing this, one can check for 2 - /// and 5 once, then ignore all even numbers, and all numbers ending in 0 or 5. - /// This leaves four numbers from every ten to check. - /// - /// Therefore, the max number of pairs of modulus divisions required will be: - /// - /// 4 Math.min(denominator, numerator) - 1 - /// -- * ------------------------------------ + 2 - /// 10 2 - /// - /// Math.min(denominator, numerator) - 1 - /// = ------------------------------------ + 2 - /// 5 - /// - /// a simplified instance, or if the Rational could not be simpliffied, returns itself (unchanged) - public Rational GetSimplifiedInstance() - { - if (this.TooComplexForSimplification()) - { - return this; - } - for (int lcFactor = 2; - lcFactor <= Math.Min(this.denominator, this.numerator); - lcFactor++) - { - if ((lcFactor % 2 == 0 && lcFactor > 2) - || (lcFactor % 5 == 0 && lcFactor > 5)) - { - continue; - } - if (this.denominator % lcFactor == 0 && this.numerator % lcFactor == 0) - { - // found a common lcFactor - return new Rational(this.numerator / lcFactor, this.denominator / lcFactor); - } - } - return this; - } - - /// - /// Returns the hash code of the object - /// - /// the hash code of the object - public override int GetHashCode() - { - return this.denominator.GetHashCode() >> this.numerator.GetHashCode() * this.DoubleValue().GetHashCode(); - } - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/AbstractDirectory.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/AbstractDirectory.cs deleted file mode 100644 index e377476..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/AbstractDirectory.cs +++ /dev/null @@ -1,795 +0,0 @@ -using System; -using System.Text; -using System.Reflection; -using System.Collections.Generic; -using System.Diagnostics; - -using com.drew.lang; -using com.utils.bundle; - -namespace com.drew.metadata -{ - /// - /// Base class for all Metadata directory types with supporting - /// methods for setting and getting tag values. - /// - [Serializable] - - public abstract class AbstractDirectory - { - /// - /// List of date format that will be used if standard format does not work. - /// - private readonly static string[] DATE_FORMATS = new string[] { "dd/MM/yyyy HH:mm:ss", "yyyy:MM:dd HH:mm:ss", "yyyy-MM-dd_HH-mm-ss", "yyyy/MM/dd HH:mm:ss", "dd/MM/yyyy", "yyyy/MM/dd", "yyyy-MM-dd" }; - - /// - /// Map of values hashed by type identifiers. - /// - private IDictionary tagMap; - - /// - /// The descriptor used to interpret tag values. - /// - private AbstractTagDescriptor descriptor; - - /// - /// A convenient list holding tag values in the order in which they were stored.
- /// This is used for creation of an iterator, and for counting the number of defined tags. - ///
- private IList definedTagList; - - /// - /// The bundle name used by this directory. - /// - private string bundleName; - protected string BundleName - { - get - { - return this.bundleName; - } - set - { - this.bundleName = value; - } - } - - /// - /// Indicates if there is error in this directory - /// - private bool hasError; - public bool HasError - { - get - { - return this.hasError; - } - set - { - this.hasError = value; - } - } - - /// - /// Provides the map of tag names, hashed by tag type identifier.
- /// Will contain all tag value and tag name for all descriptor. - ///
- private static IDictionary> tagNameMap; - - - - /// - /// Creates a new Directory. - /// - private AbstractDirectory() : base() - { - this.tagMap = new Dictionary(); - this.definedTagList = new List(); - this.HasError = false; - if (AbstractDirectory.tagNameMap == null) - { - AbstractDirectory.tagNameMap = new Dictionary>(25); - } - } - - /// - /// Creates a new Directory. - /// - /// bundle name for this directory - protected AbstractDirectory(string aBundleName) - : this() - { - this.BundleName = aBundleName; - // Load the bundle - IResourceBundle bundle = ResourceBundleFactory.CreateDefaultBundle(aBundleName); - AbstractDirectory.tagNameMap[this.GetType()] = AbstractDirectory.FillTagMap(this.GetType(), bundle); - } - - /// - /// Indicates whether the specified tag type has been set. - /// - /// the tag type to check for - /// true if a value exists for the specified tag type, false if not - public bool ContainsTag(int aTagType) - { - return this.tagMap.ContainsKey(aTagType); - } - - /// - /// Returns an Iterator of Tag instances that have been set in this Directory. - /// - /// an Iterator of Tag instances - public IEnumerator GetTagIterator() - { - return this.definedTagList.GetEnumerator(); - } - - /// - /// Returns the number of tags set in this Directory. - /// - /// the number of tags set in this Directory - public int GetTagCount() - { - return this.definedTagList.Count; - } - - /// - /// Sets the descriptor used to interperet tag values. - /// - /// the descriptor used to interperet tag values - /// if aDescriptor is null - public void SetDescriptor(AbstractTagDescriptor aDescriptor) - { - if (aDescriptor == null) - { - throw new NullReferenceException("Cannot set a null descriptor"); - } - this.descriptor = aDescriptor; - } - - /// - /// Sets an int array for the specified tag. - /// - /// the tag identifier - /// the int array to store - public virtual void SetIntArray(int aTagType, int[] someInts) - { - this.SetObject(aTagType, someInts); - } - - /// - /// Helper method, containing common functionality for all 'add' methods. - /// - /// the tag value as an int - /// the value for the specified tag - /// if aValue is null - public void SetObject(int aTagType, object aValue) - { - if (aValue == null) - { - throw new NullReferenceException("Cannot set a null object"); - } - - if (!this.tagMap.ContainsKey(aTagType)) - { - this.tagMap.Add(aTagType, aValue); - this.definedTagList.Add(new Tag(aTagType, this)); - } - else - { - // We remove it and re-add it with the new value - this.tagMap.Remove(aTagType); - this.tagMap.Add(aTagType, aValue); - } - } - - /// - /// Returns the specified tag value as an int, if possible. - /// - /// the specified tag type - /// the specified tag value as an int, if possible. - /// if tag not found - public int GetInt(int aTagType) - { - object lcObj = this.GetObject(aTagType); - if (lcObj == null) - { - throw new MetadataException( - "Tag " - + GetTagName(aTagType) - + " has not been set -- check using containsTag() first"); - } - else if (lcObj is string str) - { - try - { - return Convert.ToInt32(str); - } - catch (FormatException) - { - string lcStr = str; - int lcVal = 0; - for (int i = lcStr.Length - 1; i >= 0; i--) - { - lcVal += lcStr[i] << (i * 8); - } - return lcVal; - } - } - else if (lcObj is Rational rational) - { - return (rational).IntValue(); - } - else if (lcObj is byte[] lcTab) - { - if (lcTab.Length > 0) - { - return (int)lcTab[0]; - } - } - else if (lcObj is int || lcObj is byte || lcObj is long || lcObj is float || lcObj is double) - { - try - { - return Convert.ToInt32(lcObj); - } - catch (FormatException e) - { - throw new MetadataException("Unable to parse as int object of type:'" + lcObj.GetType() + "' that look like:'" + lcObj.ToString() + "'", e); - } - } - throw new MetadataException("Obj is :" + lcObj.GetType() + " and look like:" + lcObj.ToString()); - } - - /// - /// Gets the specified tag value as a string array, if possible. Only supported where the tag is set as string[], string, int[], byte[] or Rational[]. - /// - /// the tag identifier - /// the tag value as an array of Strings - /// if tag not found or if it cannot be represented as a string[] - public string[] GetStringArray(int aTagType) - { - object lcObj = GetObject(aTagType); - if (lcObj == null) - { - throw new MetadataException( - "Tag " - + GetTagName(aTagType) - + " has not been set -- check using containsTag() first"); - } - else if (lcObj is string[] strArray) - { - return strArray; - } - else if (lcObj is string str) - { - return new string[] { str }; - } - else if (lcObj is int[] lcInts) - { - string[] lcStrings = new string[lcInts.Length]; - for (int i = 0; i < lcStrings.Length; i++) - { - lcStrings[i] = lcInts[i].ToString(); - } - return lcStrings; - } - else if (lcObj is byte[] lcBytes) - { - string[] lcStrings = new string[lcBytes.Length]; - for (int i = 0; i < lcStrings.Length; i++) - { - lcStrings[i] = lcBytes[i].ToString(); - } - return lcStrings; - } - else if (lcObj is Rational[] lcRationals) - { - string[] lcStrings = new string[lcRationals.Length]; - for (int i = 0; i < lcStrings.Length; i++) - { - lcStrings[i] = lcRationals[i].ToSimpleString(false); - } - return lcStrings; - } - throw new MetadataException("Obj is :" + lcObj.GetType() + " and look like:" + lcObj.ToString()); - } - - /// - /// Gets the specified tag value as an int array, if possible. Only supported where the tag is set as string, int[], byte[] or Rational[]. - /// - /// the tag identifier - /// the tag value as an int array - /// if tag not found or if it cannot be represented as a int[] - public int[] GetIntArray(int aTagType) - { - object lcObj = GetObject(aTagType); - if (lcObj == null) - { - throw new MetadataException( - "Tag " - + GetTagName(aTagType) - + " has not been set -- check using containsTag() first"); - } - else if (lcObj is Rational[] lcRationals) - { - int[] lcInts = new int[lcRationals.Length]; - for (int i = 0; i < lcInts.Length; i++) - { - lcInts[i] = lcRationals[i].IntValue(); - } - return lcInts; - } - else if (lcObj is int[] intArray) - { - return intArray; - } - else if (lcObj is byte[] lcBytes) - { - int[] lcInts = new int[lcBytes.Length]; - for (int i = 0; i < lcBytes.Length; i++) - { - lcInts[i] = lcBytes[i]; - } - return lcInts; - } - else if (lcObj is string lcStr) - { - int[] lcInts = new int[lcStr.Length]; - for (int i = 0; i < lcStr.Length; i++) - { - lcInts[i] = lcStr[i]; - } - return lcInts; - } - throw new MetadataException("Obj is :" + lcObj.GetType() + " and look like:" + lcObj.ToString()); - } - - /// - /// Gets the specified tag value as an byte array, if possible. Only supported where the tag is set as string, int[], byte[] or Rational[]. - /// - /// the tag identifier - /// the tag value as a byte array - /// if tag not found or if it cannot be represented as a byte[] - public byte[] GetByteArray(int aTagType) - { - object lcObj = GetObject(aTagType); - if (lcObj == null) - { - throw new MetadataException( - "Tag " - + GetTagName(aTagType) - + " has not been set -- check using containsTag() first"); - } - else if (lcObj is Rational[] lcRationals) - { - byte[] lcBytes = new byte[lcRationals.Length]; - for (int i = 0; i < lcBytes.Length; i++) - { - lcBytes[i] = lcRationals[i].ByteValue(); - } - return lcBytes; - } - else if (lcObj is byte[] byteArray) - { - return byteArray; - } - else if (lcObj is int[] lcInts) - { - byte[] lcBytes = new byte[lcInts.Length]; - for (int i = 0; i < lcInts.Length; i++) - { - lcBytes[i] = (byte)lcInts[i]; - } - return lcBytes; - } - else if (lcObj is string lcStr) - { - byte[] lcBytes = new byte[lcStr.Length]; - for (int i = 0; i < lcStr.Length; i++) - { - lcBytes[i] = (byte)lcStr[i]; - } - return lcBytes; - } - throw new MetadataException("Obj is :" + lcObj.GetType() + " and look like:" + lcObj.ToString()); - } - - /// - /// Returns the specified tag value as a double, if possible. - /// - /// the specified tag type - /// the specified tag value as a double, if possible. - public double GetDouble(int aTagType) - { - object lcObj = GetObject(aTagType); - if (lcObj == null) - { - throw new MetadataException( - "Tag " - + GetTagName(aTagType) - + " has not been set -- check using containsTag() first"); - } - else if (lcObj is Rational rational) - { - return rational.DoubleValue(); - } - else if (lcObj is double || lcObj is string || lcObj is int || lcObj is byte || lcObj is long || lcObj is float) - { - try - { - return Convert.ToDouble(lcObj); - } - catch (FormatException e) - { - throw new MetadataException("Unable to parse as double object of type:'" + lcObj.GetType() + "' that look like:'" + lcObj.ToString() + "'", e); - } - } - throw new MetadataException("Obj is :" + lcObj.GetType() + " and look like:" + lcObj.ToString()); - } - - /// - /// Returns the specified tag value as a float, if possible. - /// - /// the specified tag type - /// the specified tag value as a float, if possible. - public float GetFloat(int aTagType) - { - object lcObj = GetObject(aTagType); - if (lcObj == null) - { - throw new MetadataException( - "Tag " - + GetTagName(aTagType) - + " has not been set -- check using containsTag() first"); - } - else if (lcObj is Rational rational) - { - return rational.FloatValue(); - } - else if (lcObj is float || lcObj is string || lcObj is int || lcObj is byte || lcObj is long || lcObj is double) - { - try - { - return (float)Convert.ToDouble(lcObj); - } - catch (FormatException e) - { - throw new MetadataException("Unable to parse as float object of type:'" + lcObj.GetType() + "' that look like:'" + lcObj.ToString() + "'", e); - } - } - throw new MetadataException("Obj is :" + lcObj.GetType() + " and look like:" + lcObj.ToString()); - } - - /// - /// Returns the specified tag value as a long, if possible. - /// - /// the specified tag type - /// the specified tag value as a long, if possible. - public long GetLong(int aTagType) - { - object lcObj = GetObject(aTagType); - if (lcObj == null) - { - throw new MetadataException( - "Tag " - + GetTagName(aTagType) - + " has not been set -- check using containsTag() first"); - } - else if (lcObj is Rational rational) - { - return (rational).LongValue(); - } - else if (lcObj is long || lcObj is string || lcObj is int || lcObj is byte || lcObj is float || lcObj is double) - { - try - { - return Convert.ToInt64(lcObj); - } - catch (FormatException e) - { - throw new MetadataException("Unable to parse as long object of type:'" + lcObj.GetType() + "' that look like:'" + lcObj.ToString() + "'", e); - } - } - throw new MetadataException("Obj is :" + lcObj.GetType() + " and look like:" + lcObj.ToString()); - } - - /// - /// Returns the specified tag value as a boolean, if possible. - /// - /// the specified tag type - /// the specified tag value as a boolean, if possible. - public bool GetBoolean(int aTagType) - { - object lcObj = GetObject(aTagType); - if (lcObj == null) - { - throw new MetadataException( - "Tag " - + GetTagName(aTagType) - + " has not been set -- check using containsTag() first"); - } - else if (lcObj is Boolean boolean) - { - return boolean; - } - else if (lcObj is string str) - { - try - { - return Convert.ToBoolean(str); - } - catch (FormatException e) - { - throw new MetadataException("Unable to parse as boolean object of type:'" + lcObj.GetType() + "' that look like:'" + lcObj.ToString() + "'", e); - } - } - throw new MetadataException("Obj is :" + lcObj.GetType() + " and look like:" + lcObj.ToString()); - } - - /// - /// Returns the specified tag value as a date, if possible. - /// - /// the specified tag type - /// the specified tag value as a date, if possible. - public DateTime GetDate(int aTagType) - { - object lcObj = GetObject(aTagType); - if (lcObj == null) - { - throw new MetadataException( - "Tag " - + GetTagName(aTagType) - + " has not been set -- check using containsTag() first"); - } - else if (lcObj is DateTime dateTime) - { - return dateTime; - } - else if (lcObj is string lcDateString) - { - try - { - return DateTime.Parse(lcDateString); - } - catch (FormatException) - { - // Was not able to parse date using standard format - // We try the following format - DateTime resu = AbstractDirectory.ParseDate(lcDateString); - if (resu == DateTime.Today) - { - Trace.TraceWarning("Was not able to parse date '" + lcDateString + "'"); - } - return resu; - } - } - throw new MetadataException("Obj is :" + lcObj.GetType() + " and look like:" + lcObj.ToString()); - } - - /// - /// Will try to transform the string in date.
- /// Will use all date format found in DATE_FORMATS - ///
- /// the date to parse - /// the date found or today if none found (today because null is not a date in C#) - private static DateTime ParseDate(string aDate) - { - if (aDate == null || aDate.Trim().Length == 0) - { - return DateTime.Today; - } - for (int i = 0; i < DATE_FORMATS.Length; i++) - { - try - { - return DateTime.ParseExact(aDate, DATE_FORMATS[i], null); - } - catch (FormatException) - { - Debug.Write("Date '" + aDate + "' does not match patern '" + DATE_FORMATS[i] + "', will try an other one"); - } - } - // If we get here it means that no format worked. - return DateTime.Today; - } - - - /// - /// Returns the specified tag value as a rational, if possible. - /// - /// the specified tag type - /// the specified tag value as a rational, if possible. - public Rational GetRational(int aTagType) - { - object lcObj = GetObject(aTagType); - if (lcObj == null) - { - throw new MetadataException( - "Tag " - + GetTagName(aTagType) - + " has not been set -- check using containsTag() first"); - } - else if (lcObj is Rational rational) - { - return rational; - } - throw new MetadataException("Obj is :" + lcObj.GetType().Name + " and look like:" + lcObj.ToString()); - } - - /// - /// Gets the specified tag value as a rational array, if possible. Only supported where the tag is set as Rational[]. - /// - /// the tag identifier - /// the tag value as a rational array - /// if tag not found or if it cannot be represented as a rational[] - public Rational[] GetRationalArray(int aTagType) - { - object lcObj = GetObject(aTagType); - if (lcObj == null) - { - throw new MetadataException( - "Tag " - + GetTagName(aTagType) - + " has not been set -- check using containsTag() first"); - } - else if (lcObj is Rational[] rationals) - { - return rationals; - } - throw new MetadataException("Obj is :" + lcObj.GetType().Name + " and look like:" + lcObj.ToString()); - } - - /// - /// Returns the specified tag value as a string. - /// This value is the 'raw' value. - /// A more presentable decoding of this value may be obtained from the corresponding Descriptor. - /// - /// the specified tag type - /// the string reprensentation of the tag value, or null if the tag hasn't been defined. - public string GetString(int aTagType) - { - - object lcObj = GetObject(aTagType); - if (lcObj == null) - { - return null; - } - else if (lcObj is Rational rational) - { - return (rational).ToSimpleString(true); - } - else if (lcObj.GetType().IsArray) - { - string lcStr = lcObj.GetType().ToString(); - - int lcArrayLength = 0; - - if (lcStr.IndexOf("Int") != -1) - { - // handle arrays of objects and primitives - lcArrayLength = ((int[])lcObj).Length; - } - else if (lcStr.IndexOf("Rational") != -1) - { - lcArrayLength = ((Rational[])lcObj).Length; - } - else if (lcStr.IndexOf("string") != -1 || lcStr.IndexOf("String") != -1) - { - lcArrayLength = ((string[])lcObj).Length; - } - - StringBuilder lcBuff = new StringBuilder(); - for (int i = 0; i < lcArrayLength; i++) - { - if (i != 0) - { - lcBuff.Append(' '); - } - if (lcStr.IndexOf("Int") != -1) - { - lcBuff.Append(((int[])lcObj)[i].ToString()); - } - else if (lcStr.IndexOf("Rational") != -1) - { - lcBuff.Append(((Rational[])lcObj)[i].ToString()); - } - else if (lcStr.IndexOf("string") != -1 || lcStr.IndexOf("String") != -1) - { - lcBuff.Append(((string[])lcObj)[i].ToString()); - } - } - return lcBuff.ToString(); - } - return lcObj.ToString(); - } - - /// - /// Returns the object hashed for the particular tag type specified, if available. - /// - /// the tag type identifier - /// the tag value as an object if available, else null - public object GetObject(int aTagType) - { - if (this.tagMap.ContainsKey(aTagType)) - { - return this.tagMap[aTagType]; - } - return null; - } - - /// - /// Returns the name of a specified tag as a string. - /// - /// the tag type identifier - /// the tag name as a string - public string GetTagName(int aTagType) - { - if (!AbstractDirectory.tagNameMap[this.GetType()].ContainsKey(aTagType)) - { - StringBuilder buff = new StringBuilder(32); - buff.Append("Unknown tag (0x"); - string lcHex = aTagType.ToString("X"); - for (int i = 0; i < 4 - lcHex.Length; i++) - { - buff.Append('0'); - } - return buff.Append(lcHex).Append(')').ToString(); - } - return AbstractDirectory.tagNameMap[this.GetType()][aTagType]; - } - - /// - /// Provides a description of a tag value using the descriptor set by setDescriptor(Descriptor). - /// - /// the tag type identifier - /// the tag value'str description as a string - /// if a descriptor hasn't been set, or if an error occurs during calculation of the description within the Descriptor - public string GetDescription(int aTagType) - { - if (this.descriptor == null) - { - throw new MetadataException("A descriptor must be set using setDescriptor(...) before descriptions can be provided"); - } - - return this.descriptor.GetDescription(aTagType); - } - - /// - /// Provides the name of the directory, for display purposes. E.g. Exif - /// - /// the name of the directory - public string GetName() - { - return ResourceBundleFactory.CreateDefaultBundle(this.BundleName)["MARKER_NOTE_NAME"]; - } - - /// - /// Fill the map with all (TAG_xxx value, BUNDLE[TAG_xxx name]). - /// - /// where to look for fields like TAG_xxx - /// where to put tag found - protected static IDictionary FillTagMap(Type aType, IResourceBundle aBundle) - { - FieldInfo[] lcAllContTag = aType.GetFields(); - IDictionary lcResu = new Dictionary(lcAllContTag.Length); - for (int i = 0; i < lcAllContTag.Length; i++) - { - string lcMemberName = lcAllContTag[i].Name; - if (lcAllContTag[i].IsPublic && lcMemberName.StartsWith("TAG_")) - { - int lcMemberValue = (int)lcAllContTag[i].GetValue(null); - try - { - lcResu.Add(lcMemberValue, aBundle[lcMemberName]); - } - catch (MissingResourceException mre) - { - Trace.TraceError("Could not find the key '" + aType + "' for type '" + lcMemberName + "' (" + mre.Message + ")"); - } - } - } - return lcResu; - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/AbstractMetadataReader.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/AbstractMetadataReader.cs deleted file mode 100644 index beafddd..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/AbstractMetadataReader.cs +++ /dev/null @@ -1,84 +0,0 @@ -using System; -using System.Collections; -using System.IO; -using com.drew.imaging.jpg; - -namespace com.drew.metadata -{ - /// - /// An abstract reader class - /// - - public abstract class AbstractMetadataReader : IMetadataReader - { - /// - /// The data segment - /// - protected readonly byte[] data; - - /// - /// Creates a new Reader for the specified file. - /// - /// where to read - protected AbstractMetadataReader(FileInfo aFile, byte aSegment) - : this( - new JpegSegmentReader(aFile).ReadSegment( - aSegment)) - { - } - - /// - /// Constructor of the object - /// - /// the data to read - protected AbstractMetadataReader(byte[] aData) - { - this.data = aData; - } - - /// - /// Performs the data extraction, returning a new instance of Metadata. - /// - /// a new instance of Metadata - public Metadata Extract() - { - return Extract(new Metadata()); - } - - /// - /// Extracts aMetadata - /// - /// where to add aMetadata - /// the aMetadata found - public abstract Metadata Extract(Metadata metadata); - - /// - /// Returns an int calculated from two bytes of data at the specified lcOffset (MSB, LSB). - /// - /// position within the data buffer to read first byte - /// the 32 bit int value, between 0x0000 and 0xFFFF - protected virtual int Get32Bits(int anOffset) - { - if (anOffset >= this.data.Length) - { - throw new MetadataException("Attempt to read bytes from outside Iptc data buffer"); - } - return ((this.data[anOffset] & 255) << 8) | (this.data[anOffset + 1] & 255); - } - - /// - /// Returns an int calculated from one byte of data at the specified lcOffset. - /// - /// position within the data buffer to read byte - /// the 16 bit int value, between 0x00 and 0xFF - protected virtual int Get16Bits(int anOffset) - { - if (anOffset >= this.data.Length) - { - throw new MetadataException("Attempt to read bytes from outside Jpeg segment data buffer"); - } - - return (this.data[anOffset] & 255); - } - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/AbstractTagDescriptor.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/AbstractTagDescriptor.cs deleted file mode 100644 index 4f7f015..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/AbstractTagDescriptor.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; -using com.utils.bundle; - -namespace com.drew.metadata -{ - /// - /// This abstract class represent the mother class of all tag descriptor. - /// - [Serializable] - - public abstract class AbstractTagDescriptor - { - /// - /// Contains all commons words. - /// - protected static readonly IResourceBundle BUNDLE = ResourceBundleFactory.CreateDefaultBundle("Commons"); - - protected AbstractDirectory directory; - - /// - /// Constructor of the object - /// - /// a directory - public AbstractTagDescriptor(AbstractDirectory aDirectory) : base() - { - this.directory = aDirectory; - } - - /// - /// Returns a descriptive value of the the specified tag for this image. - /// Where possible, known values will be substituted here in place of the raw tokens actually - /// kept in the Exif segment. - /// If no substitution is available, the value provided by GetString(int) will be returned. - /// This and GetString(int) are the only 'get' methods that won't throw an exception. - /// - /// the tag to find a description for - /// a description of the image'str value for the specified tag, or null if the tag hasn't been defined. - public abstract string GetDescription(int aTagType); - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/IMetadataReader.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/IMetadataReader.cs deleted file mode 100644 index f4d72a2..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/IMetadataReader.cs +++ /dev/null @@ -1,22 +0,0 @@ -namespace com.drew.metadata -{ - /// - /// This interface represents a Metadata reader object - /// - - public interface IMetadataReader - { - /// - /// Extracts aMetadata - /// - /// the aMetadata found - Metadata Extract(); - - /// - /// Extracts aMetadata - /// - /// where to add aMetadata - /// the aMetadata found - Metadata Extract(Metadata aMetadata); - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/Metadata.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/Metadata.cs deleted file mode 100644 index f01ce6c..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/Metadata.cs +++ /dev/null @@ -1,80 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Reflection; - -namespace com.drew.metadata -{ - [Serializable] - - public sealed class Metadata - { - private IDictionary directoryMap; - - /// - /// Creates a new instance of Metadata. - /// - public Metadata() : base() - { - this.directoryMap = new Dictionary(); - } - - /// - /// Creates an Iterator over the tag types set against this image, preserving the - /// order in which they were set. Should the same tag have been set more than once, - /// it'str first position is maintained, even though the final value is used. - /// - /// an Iterator of tag types set for this image - public IEnumerator GetDirectoryIterator() - { - return this.directoryMap.Values.GetEnumerator(); - } - - /// - /// Gets a directory regarding its type - /// - /// the type you are looking for - /// the directory found - /// if aType is not a Directory like class - public AbstractDirectory GetDirectory(string aTypeStr) - { - Type aType = Type.GetType(aTypeStr); - if (!Type.GetType("com.drew.metadata.AbstractDirectory").IsAssignableFrom(aType)) - { - throw new ArgumentException("Class type passed to GetDirectory must be an implementation of com.drew.metadata.AbstractDirectory"); - } - - // check if we've already issued this type of directory - if (this.ContainsDirectory(aType)) - { - return directoryMap[aType]; - } - AbstractDirectory lcDirectory = null; - try - { - ConstructorInfo[] lcConstructor = aType.GetConstructors(); - lcDirectory = (AbstractDirectory) lcConstructor[0].Invoke(null); - } - catch (Exception e) - { - throw new SystemException( - "Cannot instantiate provided Directory type: " - + aType, e); - } - // store the directory in case it'str requested later - this.directoryMap.Add(aType, lcDirectory); - - return lcDirectory; - } - - /// - /// Indicates whether a given directory type has been created in this aMetadata repository. - /// Directories are created by calling getDirectory(Class). - /// - /// the Directory type - /// true if the aMetadata directory has been created - public bool ContainsDirectory(Type aType) - { - return this.directoryMap.ContainsKey(aType); - } - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/MetadataException.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/MetadataException.cs deleted file mode 100644 index 7662570..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/MetadataException.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System; -using com.drew.lang; - -namespace com.drew.metadata -{ - /// - /// This class represents a Metadata exception - /// - - [Serializable] - public class MetadataException : CompoundException - { - /// - /// Constructor of the object - /// - /// The error aMessage - public MetadataException(string aMessage) : base(aMessage) - { - } - - /// - /// Constructor of the object - /// - /// The error aMessage - /// The aCause of the exception - public MetadataException(string aMessage, Exception aCause) : base(aMessage, aCause) - { - } - - /// - /// Constructor of the object - /// - /// The aCause of the exception - public MetadataException(Exception aCause) - : base(aCause.Message, aCause) - { - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/Tag.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/Tag.cs deleted file mode 100644 index 1f7daf6..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/Tag.cs +++ /dev/null @@ -1,130 +0,0 @@ -using System; -using System.Text; -using com.drew.metadata.exif; -using com.drew.metadata.iptc; - -namespace com.drew.metadata -{ - /// - /// This class represent a basic tag - /// - [Serializable] - - public class Tag - { - private int tagType; - private AbstractDirectory directory; - - /// - /// Constructor of the object - /// - /// the type of this tag - /// the directory of this tag - public Tag(int aTagType, AbstractDirectory aDirectory) : base() - { - this.tagType = aTagType; - this.directory = aDirectory; - } - - /// - /// Gets the tag type as an int - /// - /// the tag type as an int - public int GetTagType() - { - return this.tagType; - } - - /// - /// Gets the tag type in hex notation as a string with padded leading zeroes if necessary (i.e. 0x100E). - /// - /// the tag type as a string in hexadecimal notation - public string GetTagTypeHex() - { - string lcHex = this.tagType.ToString("X"); - while (lcHex.Length < 4) - { - lcHex = "0" + lcHex; - } - return "0x" + lcHex; - } - - /// - /// Get a description of the tag'str value, considering enumerated values and units. - /// - /// a description of the tag'str value - public string GetDescription() - { - return this.directory.GetDescription(tagType); - } - - /// - /// Get the name of the tag, such as Aperture, or InteropVersion. - /// - /// the tag'str name - public string GetTagName() - { - return this.directory.GetTagName(tagType); - } - - /// - /// Gets the tag value. - /// - /// the tag value - public object GetTagValue() - { - object obj = this.directory.GetObject(this.tagType); - // In order to make the XML import/export work - // We need to handle Date manually - if (this.tagType == ExifDirectory.TAG_DATETIME - || this.tagType == ExifDirectory.TAG_DATETIME_DIGITIZED - || this.tagType == ExifDirectory.TAG_DATETIME_ORIGINAL - || this.tagType == IptcDirectory.TAG_DATE_CREATED) - { - try - { - return this.directory.GetDate(this.tagType); - } - catch (MetadataException) - { - // Do nothing - } - } - return obj; - } - - - /// - /// Get the name of the directory in which the tag exists, such as Exif, GPS or Interoperability. - /// - /// name of the directory in which this tag exists - public string GetDirectoryName() - { - return this.directory.GetName(); - } - - /// - /// A basic representation of the tag'str type and value in format: FNumber - F2.8. - /// - /// the tag'str type and value - public override string ToString() - { - string lcDescription = null; - try - { - lcDescription = this.GetDescription(); - } - catch (MetadataException ) - { - lcDescription = - this.directory.GetString(GetTagType()) - + " (unable to formulate description)"; - } - StringBuilder buff = new StringBuilder(64); - buff.Append('[').Append(this.directory.GetName()); - buff.Append(']').Append(this.GetTagName()); - buff.Append(" - ").Append(lcDescription); - return buff.ToString(); - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/AbstractCasioTypeDirectory.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/AbstractCasioTypeDirectory.cs deleted file mode 100644 index 7cafccf..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/AbstractCasioTypeDirectory.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using com.drew.metadata; -using com.drew.lang; -using com.utils.bundle; - - -namespace com.drew.metadata.exif -{ - /// - /// Mother class for all CasioMarkerNote directory. - /// - - public abstract class AbstractCasioTypeDirectory : AbstractDirectory - { - /// - /// Creates a new Directory. - /// - /// bundle name for this directory - protected AbstractCasioTypeDirectory(string aBundleName) - : base(aBundleName) - { - } - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/AbstractNikonTypeDirectory.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/AbstractNikonTypeDirectory.cs deleted file mode 100644 index 5ab4df3..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/AbstractNikonTypeDirectory.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace com.drew.metadata.exif -{ - /// - /// Class for all Nikon directory. - /// - - public abstract class AbstractNikonTypeDirectory : AbstractDirectory - { - /// - /// Creates a new Directory. - /// - /// bundle name for this directory - protected AbstractNikonTypeDirectory(string aBundleName) - : base(aBundleName) - { - } - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/CanonDescriptor.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/CanonDescriptor.cs deleted file mode 100644 index ba49275..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/CanonDescriptor.cs +++ /dev/null @@ -1,1124 +0,0 @@ -namespace com.drew.metadata.exif -{ - /// - /// Tag descriptor for a Canon camera - /// - - public class CanonDescriptor : AbstractTagDescriptor - { - /// - /// Constructor of the object - /// - /// a directory - public CanonDescriptor(AbstractDirectory aDirectory) : base(aDirectory) - { - } - - /// - /// Returns a descriptive value of the the specified tag for this image. - /// Where possible, known values will be substituted here in place of the raw tokens actually - /// kept in the Exif segment. - /// If no substitution is available, the value provided by GetString(int) will be returned. - /// This and GetString(int) are the only 'get' methods that won't throw an exception. - /// - /// the tag to find a description for - /// a description of the image'str value for the specified tag, or null if the tag hasn't been defined. - public override string GetDescription(int aTagType) - { - switch(aTagType) - { - case CanonDirectory.TAG_CANON_STATE1_MACRO_MODE: - return this.GetMacroModeDescription(); - case CanonDirectory.TAG_CANON_STATE1_SELF_TIMER_DELAY: - return this.GetSelfTimerDelayDescription(); - case CanonDirectory.TAG_CANON_STATE1_FLASH_MODE: - return this.GetFlashModeDescription(); - case CanonDirectory.TAG_CANON_STATE1_CONTINUOUS_DRIVE_MODE: - return this.GetContinuousDriveModeDescription(); - case CanonDirectory.TAG_CANON_STATE1_FOCUS_MODE_1: - return this.GetFocusMode1Description(); - case CanonDirectory.TAG_CANON_STATE1_IMAGE_SIZE: - return this.GetImageSizeDescription(); - case CanonDirectory.TAG_CANON_STATE1_EASY_SHOOTING_MODE: - return this.GetEasyShootingModeDescription(); - case CanonDirectory.TAG_CANON_STATE1_CONTRAST: - return this.GetContrastDescription(); - case CanonDirectory.TAG_CANON_STATE1_SATURATION: - return this.GetSaturationDescription(); - case CanonDirectory.TAG_CANON_STATE1_SHARPNESS: - return this.GetSharpnessDescription(); - case CanonDirectory.TAG_CANON_STATE1_ISO: - return this.GetIsoDescription(); - case CanonDirectory.TAG_CANON_STATE1_METERING_MODE: - return this.GetMeteringModeDescription(); - case CanonDirectory.TAG_CANON_STATE1_AF_POINT_SELECTED: - return this.GetAfPointSelectedDescription(); - case CanonDirectory.TAG_CANON_STATE1_EXPOSURE_MODE: - return this.GetExposureModeDescription(); - case CanonDirectory.TAG_CANON_STATE1_LONG_FOCAL_LENGTH: - return this.GetLongFocalLengthDescription(); - case CanonDirectory.TAG_CANON_STATE1_SHORT_FOCAL_LENGTH: - return this.GetShortFocalLengthDescription(); - case CanonDirectory.TAG_CANON_STATE1_FOCAL_UNITS_PER_MM: - return this.GetFocalUnitsPerMillimetreDescription(); - case CanonDirectory.TAG_CANON_STATE1_FLASH_DETAILS: - return this.GetFlashDetailsDescription(); - case CanonDirectory.TAG_CANON_STATE1_FOCUS_MODE_2: - return this.GetFocusMode2Description(); - case CanonDirectory.TAG_CANON_STATE2_WHITE_BALANCE: - return this.GetWhiteBalanceDescription(); - case CanonDirectory.TAG_CANON_STATE2_AF_POINT_USED: - return this.GetAfPointUsedDescription(); - case CanonDirectory.TAG_CANON_STATE2_FLASH_BIAS: - return this.GetFlashBiasDescription(); - - case CanonDirectory.TAG_CANON_STATE1_FLASH_ACTIVITY: - return this.GetFlashActivityDescription(); - case CanonDirectory.TAG_CANON_STATE1_FOCUS_TYPE: - return this.GetFocusTypeDescription(); - case CanonDirectory.TAG_CANON_STATE1_DIGITAL_ZOOM: - return this.GetDigitalZoomDescription(); - case CanonDirectory.TAG_CANON_STATE1_QUALITY: - return this.GetQualityDescription(); - case CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_LONG_EXPOSURE_NOISE_REDUCTION: - return this.GetLongExposureNoiseReductionDescription(); - case CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_SHUTTER_AUTO_EXPOSURE_LOCK_BUTTONS: - return this.GetShutterAutoExposureLockButtonDescription(); - case CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_MIRROR_LOCKUP: - return this.GetMirrorLockupDescription(); - case CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_TV_AV_AND_EXPOSURE_LEVEL: - return this.GetTvAndAvExposureLevelDescription(); - case CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_AF_ASSIST_LIGHT: - return this.GetAutoFocusAssistLightDescription(); - case CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_SHUTTER_SPEED_IN_AV_MODE: - return this.GetShutterSpeedInAvModeDescription(); - case CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_BRACKETTING: - return this.GetAutoExposureBrackettingSequenceAndAutoCancellationDescription(); - case CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_SHUTTER_CURTAIN_SYNC: - return this.GetShutterCurtainSyncDescription(); - case CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_AF_STOP: - return this.GetLensAutoFocusStopButtonDescription(); - case CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_FILL_FLASH_REDUCTION: - return this.GetFillFlashReductionDescription(); - case CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_MENU_BUTTON_RETURN: - return this.GetMenuButtonReturnPositionDescription(); - case CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_SET_BUTTON_FUNCTION: - return this.GetSetButtonFunctionWhenShootingDescription(); - case CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_SENSOR_CLEANING: - return this.GetSensorCleaningDescription(); - default: - return base.directory.GetString(aTagType); - } - } - - /// - /// Returns the menu button return position Description. - /// - /// the menu button return position Description. - private string GetMenuButtonReturnPositionDescription() - { - if (!base.directory.ContainsTag(CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_MENU_BUTTON_RETURN)) - { - return null; - } - int lcVal = base.directory.GetInt(CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_MENU_BUTTON_RETURN); - switch (lcVal) - { - case 0: return BUNDLE["TOP"]; - case 1: return BUNDLE["PREVIOUS_VOLATILE"]; - case 2: return BUNDLE["PREVIOUS"]; - default: return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns the set button function when shooting Description. - /// - /// the set button function when shooting Description. - private string GetSetButtonFunctionWhenShootingDescription() - { - if (!base.directory.ContainsTag(CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_SET_BUTTON_FUNCTION)) - { - return null; - } - int lcVal = base.directory.GetInt(CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_SET_BUTTON_FUNCTION); - switch (lcVal) - { - case 0: return BUNDLE["NOT_ASSIGNED"]; - case 1: return BUNDLE["CHANGE_QUALITY"]; - case 2: return BUNDLE["CHANGE_ISO_SPEED"]; - case 3: return BUNDLE["SELECT_PARAMETERS"]; - default: return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns the sensor cleaning Description. - /// - /// the sensor cleaning Description. - private string GetSensorCleaningDescription() - { - if (!base.directory.ContainsTag(CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_SENSOR_CLEANING)) - { - return null; - } - int lcVal = base.directory.GetInt(CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_SENSOR_CLEANING); - switch (lcVal) - { - case 0: return BUNDLE["DISABLED"]; - case 1: return BUNDLE["ENABLED"]; - default: return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns the fill flash reduction Description. - /// - /// the fill flash reduction Description. - private string GetFillFlashReductionDescription() - { - if (!base.directory.ContainsTag(CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_FILL_FLASH_REDUCTION)) - { - return null; - } - int lcVal = base.directory.GetInt(CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_FILL_FLASH_REDUCTION); - switch (lcVal) - { - case 0: return BUNDLE["ENABLED"]; - case 1: return BUNDLE["DISABLED"]; - default: return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns the lens auto focus stop Description. - /// - /// the lens auto focus stop Description. - private string GetLensAutoFocusStopButtonDescription() - { - if (!base.directory.ContainsTag(CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_AF_STOP)) - { - return null; - } - int lcVal = base.directory.GetInt(CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_AF_STOP); - switch (lcVal) - { - case 0: return BUNDLE["AF_STOP"]; - case 1: return BUNDLE["OPERATE_AF"]; - case 2: return BUNDLE["LOCK_AE_AND_START_TIMER"]; - default: return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns the shutter curtain sync Description. - /// - /// the shutter curtain sync Description. - private string GetShutterCurtainSyncDescription() - { - if (!base.directory.ContainsTag(CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_SHUTTER_CURTAIN_SYNC)) - { - return null; - } - int lcVal = base.directory.GetInt(CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_SHUTTER_CURTAIN_SYNC); - switch (lcVal) - { - case 0: return BUNDLE["1_CURTAIN_SYNC"]; - case 1: return BUNDLE["2_CURTAIN_SYNC"]; - default: return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns the auto exposure bracketting sequence and auto cancellation Description. - /// - /// the auto exposure bracketting sequence and auto cancellation Description. - private string GetAutoExposureBrackettingSequenceAndAutoCancellationDescription() - { - if (!base.directory.ContainsTag(CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_BRACKETTING)) - { - return null; - } - int lcVal = base.directory.GetInt(CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_BRACKETTING); - switch (lcVal) - { - case 0: return BUNDLE["0_M_P_ENABLED"]; - case 1: return BUNDLE["0_M_P_DISABLED"]; - case 2: return BUNDLE["M_0_P_ENABLED"]; - case 3: return BUNDLE["M_0_P_DISABLED"]; - default: return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns the shutter speed in Av mode Description. - /// - /// the shutter speed in Av mode Description. - private string GetShutterSpeedInAvModeDescription() - { - if (!base.directory.ContainsTag(CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_SHUTTER_SPEED_IN_AV_MODE)) - { - return null; - } - int lcVal = base.directory.GetInt(CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_SHUTTER_SPEED_IN_AV_MODE); - switch (lcVal) - { - case 0: return BUNDLE["AUTOMATIC"]; - case 1: return BUNDLE["1_200_FIXED"]; - default: return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns the auto focus assist light Description. - /// - /// the auto focus assist light Description. - private string GetAutoFocusAssistLightDescription() - { - if (!base.directory.ContainsTag(CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_AF_ASSIST_LIGHT)) - { - return null; - } - int lcVal = base.directory.GetInt(CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_AF_ASSIST_LIGHT); - switch (lcVal) - { - case 0: return BUNDLE["ON_AUTO"]; - case 1: return BUNDLE["OFF"]; - default: return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns the Tv and Av exposure level Description. - /// - /// the Tv and Av exposure level Description. - private string GetTvAndAvExposureLevelDescription() - { - if (!base.directory.ContainsTag(CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_TV_AV_AND_EXPOSURE_LEVEL)) - { - return null; - } - int lcVal = base.directory.GetInt(CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_TV_AV_AND_EXPOSURE_LEVEL); - switch (lcVal) - { - case 0: - case 1: return BUNDLE["1_2_STOP"]; - default: return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns the mirror lock up Description. - /// - /// the mirror lock up Description. - private string GetMirrorLockupDescription() - { - if (!base.directory.ContainsTag(CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_MIRROR_LOCKUP)) - { - return null; - } - int lcVal = base.directory.GetInt(CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_MIRROR_LOCKUP); - switch (lcVal) - { - case 0: return BUNDLE["DISABLED"]; - case 1: return BUNDLE["ENABLED"]; - default: return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns the shutter auto exposure lock button Description. - /// - /// the shutter auto exposure lock button Description. - private string GetShutterAutoExposureLockButtonDescription() - { - if (!base.directory.ContainsTag(CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_SHUTTER_AUTO_EXPOSURE_LOCK_BUTTONS)) - { - return null; - } - int lcVal = base.directory.GetInt(CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_SHUTTER_AUTO_EXPOSURE_LOCK_BUTTONS); - switch (lcVal) - { - case 0: return BUNDLE["AF_AE_LOCK"]; - case 1: return BUNDLE["AE_LOCK_AF"]; - case 2: return BUNDLE["AE_AF_LOCK"]; - case 3: return BUNDLE["AE_RELEASE_AE_AF"]; - default: return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns the long exposure noise reduction Description. - /// - /// the long exposure noise reduction Description. - private string GetLongExposureNoiseReductionDescription() - { - if (!base.directory.ContainsTag(CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_LONG_EXPOSURE_NOISE_REDUCTION)) - { - return null; - } - int lcVal = base.directory.GetInt(CanonDirectory.TAG_CANON_CUSTOM_FUNCTION_LONG_EXPOSURE_NOISE_REDUCTION); - switch (lcVal) - { - case 0: return BUNDLE["OFF"]; - case 1: return BUNDLE["ON"]; - default: return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns the quality Description. - /// - /// the quality Description. - private string GetQualityDescription() - { - if (!base.directory.ContainsTag(CanonDirectory.TAG_CANON_STATE1_QUALITY)) - { - return null; - } - int lcVal = base.directory.GetInt(CanonDirectory.TAG_CANON_STATE1_QUALITY); - switch (lcVal) - { - case 2: - return BUNDLE["NORMAL"]; - case 3: - return BUNDLE["FINE"]; - case 5: - return BUNDLE["SUPERFINE"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns the digital zoom Description. - /// - /// the digital zoom Description. - private string GetDigitalZoomDescription() - { - if (!base.directory.ContainsTag(CanonDirectory.TAG_CANON_STATE1_DIGITAL_ZOOM)) - { - return null; - } - int lcVal = base.directory.GetInt(CanonDirectory.TAG_CANON_STATE1_DIGITAL_ZOOM); - switch (lcVal) - { - case 0: - return BUNDLE["NO_DIGITAL_ZOOM"]; - case 1: - return BUNDLE["DIGITAL_ZOOM", "2"]; - case 2: - return BUNDLE["DIGITAL_ZOOM", "4"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns the focus type Description. - /// - /// the focus type Description. - private string GetFocusTypeDescription() - { - if (!base.directory.ContainsTag(CanonDirectory.TAG_CANON_STATE1_FOCUS_TYPE)) - { - return null; - } - int lcVal = base.directory.GetInt(CanonDirectory.TAG_CANON_STATE1_FOCUS_TYPE); - switch (lcVal) - { - case 0: - return BUNDLE["MANUAL"]; - case 1: - case 2: - return BUNDLE["AUTO"]; - case 3: - return BUNDLE["CLOSE_UP_MACRO"]; - case 8: - return BUNDLE["LOCKED_PAN_MODE"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns the Flash actvity Description. - /// - /// the Flash activity Description. - private string GetFlashActivityDescription() - { - if (!base.directory.ContainsTag(CanonDirectory.TAG_CANON_STATE1_FLASH_ACTIVITY)) - { - return null; - } - int lcVal = base.directory.GetInt(CanonDirectory.TAG_CANON_STATE1_FLASH_ACTIVITY); - switch (lcVal) - { - case 0: - return BUNDLE["FLASH_DID_NOT_FIRE"]; - case 1: - return BUNDLE["FLASH_FIRED"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - - /// - /// Returns the Flash Bias Description. - /// - /// the Flash Bias Description. - private string GetFlashBiasDescription() - { - if (!base.directory - .ContainsTag(CanonDirectory.TAG_CANON_STATE2_FLASH_BIAS)) - { - return null; - } - int lcVal = - base.directory.GetInt( - CanonDirectory.TAG_CANON_STATE2_FLASH_BIAS); - bool isNegative = false; - if (lcVal > 0xF000) - { - isNegative = true; - lcVal = 0xFFFF - lcVal; - lcVal++; - } - - // this tag is interesting in that the values returned are: - // 0, 0.375, 0.5, 0.626, 1 - // not - // 0, 0.33, 0.5, 0.66, 1 - return BUNDLE["FLASH_BIAS_NEW", ((isNegative) ? "-" : ""), (lcVal / 32.0).ToString()]; - } - - /// - /// Returns Af Point Used Description. - /// - /// the Af Point Used Description. - private string GetAfPointUsedDescription() - { - if (!base.directory - .ContainsTag( - CanonDirectory.TAG_CANON_STATE2_AF_POINT_USED)) - { - return null; - } - int lcVal = - base.directory.GetInt( - CanonDirectory.TAG_CANON_STATE2_AF_POINT_USED); - if ((lcVal & 0x7) == 0) - { - return BUNDLE["RIGHT"]; - } - else if ((lcVal & 0x7) == 1) - { - return BUNDLE["CENTER"]; - } - else if ((lcVal & 0x7) == 2) - { - return BUNDLE["LEFT"]; - } - else - { - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns White Balance Description. - /// - /// the White Balance Description. - private string GetWhiteBalanceDescription() - { - if (!base.directory - .ContainsTag( - CanonDirectory.TAG_CANON_STATE2_WHITE_BALANCE)) - return null; - int lcVal = - base.directory.GetInt( - CanonDirectory.TAG_CANON_STATE2_WHITE_BALANCE); - switch (lcVal) - { - case 0 : - return BUNDLE["AUTO"]; - case 1 : - return BUNDLE["SUNNY"]; - case 2 : - return BUNDLE["CLOUDY"]; - case 3 : - return BUNDLE["TUNGSTEN"]; - case 4 : - return BUNDLE["FLUORESCENT"]; - case 5 : - return BUNDLE["FLASH"]; - case 6 : - return BUNDLE["CUSTOM"]; - default : - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns Focus Mode 2 description. - /// - /// the Focus Mode 2 description - private string GetFocusMode2Description() - { - if (!base.directory - .ContainsTag(CanonDirectory.TAG_CANON_STATE1_FOCUS_MODE_2)) - { - return null; - } - int lcVal = - base.directory.GetInt( - CanonDirectory.TAG_CANON_STATE1_FOCUS_MODE_2); - switch (lcVal) - { - case 0 : - return BUNDLE["SINGLE"]; - case 1 : - return BUNDLE["CONTINUOUS"]; - default : - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns Flash Details description. - /// - /// the Flash Details description - private string GetFlashDetailsDescription() - { - if (!base.directory - .ContainsTag( - CanonDirectory.TAG_CANON_STATE1_FLASH_DETAILS)) - { - return null; - } - int lcVal = - base.directory.GetInt( - CanonDirectory.TAG_CANON_STATE1_FLASH_DETAILS); - if (((lcVal << 14) & 1) > 0) - { - return BUNDLE["EXTERNAL_E_TTL"]; - } - if (((lcVal << 13) & 1) > 0) - { - return BUNDLE["INTERNAL_FLASH"]; - } - if (((lcVal << 11) & 1) > 0) - { - return BUNDLE["FP_SYNC_USED"]; - } - if (((lcVal << 4) & 1) > 0) - { - return BUNDLE["FP_SYNC_ENABLED"]; - } - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - - /// - /// Returns Focal Units Per Millimetre description. - /// - /// the Focal Units Per Millimetre description - private string GetFocalUnitsPerMillimetreDescription() - { - if (!base.directory - .ContainsTag( - CanonDirectory.TAG_CANON_STATE1_FOCAL_UNITS_PER_MM)) - { - return ""; - } - int lcVal = - base.directory.GetInt( - CanonDirectory.TAG_CANON_STATE1_FOCAL_UNITS_PER_MM); - if (lcVal != 0) - { - return lcVal.ToString(); - } - return ""; - } - - /// - /// Returns Short Focal Length description. - /// - /// the Short Focal Length description - private string GetShortFocalLengthDescription() - { - if (!base.directory - .ContainsTag( - CanonDirectory.TAG_CANON_STATE1_SHORT_FOCAL_LENGTH)) - { - return null; - } - int lcVal = - base.directory.GetInt( - CanonDirectory.TAG_CANON_STATE1_SHORT_FOCAL_LENGTH); - string units = GetFocalUnitsPerMillimetreDescription(); - return BUNDLE["FOCAL_LENGTH", lcVal.ToString(), units]; - } - - /// - /// Returns Long Focal Length description. - /// - /// the Long Focal Length description - private string GetLongFocalLengthDescription() - { - if (!base.directory - .ContainsTag( - CanonDirectory.TAG_CANON_STATE1_LONG_FOCAL_LENGTH)) - { - return null; - } - int lcVal = - base.directory.GetInt( - CanonDirectory.TAG_CANON_STATE1_LONG_FOCAL_LENGTH); - string units = GetFocalUnitsPerMillimetreDescription(); - return BUNDLE["FOCAL_LENGTH", lcVal.ToString(), units]; - } - - /// - /// Returns Exposure Mode description. - /// - /// the Exposure Mode description - private string GetExposureModeDescription() - { - if (!base.directory - .ContainsTag( - CanonDirectory.TAG_CANON_STATE1_EXPOSURE_MODE)) - { - return null; - } - int lcVal = - base.directory.GetInt( - CanonDirectory.TAG_CANON_STATE1_EXPOSURE_MODE); - switch (lcVal) - { - case 0 : - return BUNDLE["EASY_SHOOTING"]; - case 1 : - return BUNDLE["PROGRAM"]; - case 2 : - return BUNDLE["TV_PRIORITY"]; - case 3 : - return BUNDLE["AV_PRIORITY"]; - case 4 : - return BUNDLE["MANUAL"]; - case 5 : - return BUNDLE["A_DEP"]; - default : - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns Af Point Selected description. - /// - /// the Af Point Selected description - private string GetAfPointSelectedDescription() - { - if (!base.directory - .ContainsTag( - CanonDirectory.TAG_CANON_STATE1_AF_POINT_SELECTED)) - { - return null; - } - int lcVal = - base.directory.GetInt( - CanonDirectory.TAG_CANON_STATE1_AF_POINT_SELECTED); - switch (lcVal) - { - case 0x3000 : - return BUNDLE["NONE_MF"]; - case 0x3001 : - return BUNDLE["AUTO_SELECTED"]; - case 0x3002 : - return BUNDLE["RIGHT"]; - case 0x3003 : - return BUNDLE["CENTER"]; - case 0x3004 : - return BUNDLE["LEFT"]; - default : - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns Metering Mode description. - /// - /// the Metering Mode description - private string GetMeteringModeDescription() - { - if (!base.directory - .ContainsTag( - CanonDirectory.TAG_CANON_STATE1_METERING_MODE)) - { - return null; - } - int lcVal = - base.directory.GetInt( - CanonDirectory.TAG_CANON_STATE1_METERING_MODE); - switch (lcVal) - { - case 3 : - return BUNDLE["EVALUATIVE"]; - case 4 : - return BUNDLE["PARTIAL"]; - case 5 : - return BUNDLE["CENTER_WEIGHTED"]; - default : - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns ISO description. - /// - /// the ISO description - private string GetIsoDescription() - { - if (!base.directory - .ContainsTag(CanonDirectory.TAG_CANON_STATE1_ISO)) - { - return null; - } - int lcVal = - base.directory.GetInt(CanonDirectory.TAG_CANON_STATE1_ISO); - switch (lcVal) - { - case 0 : - return BUNDLE["ISO_NOT_SPECIFIED"]; - case 15 : - return BUNDLE["AUTO"]; - case 16 : - return BUNDLE["ISO", "50"]; - case 17 : - return BUNDLE["ISO", "100"]; - case 18 : - return BUNDLE["ISO", "200"]; - case 19 : - return BUNDLE["ISO", "400"]; - default : - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns Sharpness description. - /// - /// the Sharpness description - private string GetSharpnessDescription() - { - if (!base.directory - .ContainsTag(CanonDirectory.TAG_CANON_STATE1_SHARPNESS)) - { - return null; - } - int lcVal = - base.directory.GetInt( - CanonDirectory.TAG_CANON_STATE1_SHARPNESS); - switch (lcVal) - { - case 0xFFFF : - return BUNDLE["LOW"]; - case 0x000 : - return BUNDLE["NORMAL"]; - case 0x001 : - return BUNDLE["HIGH"]; - default : - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns Saturation description. - /// - /// the Saturation description - private string GetSaturationDescription() - { - if (!base.directory - .ContainsTag(CanonDirectory.TAG_CANON_STATE1_SATURATION)) - { - return null; - } - int lcVal = - base.directory.GetInt( - CanonDirectory.TAG_CANON_STATE1_SATURATION); - switch (lcVal) - { - case 0xFFFF : - return BUNDLE["LOW"]; - case 0x000 : - return BUNDLE["NORMAL"]; - case 0x001 : - return BUNDLE["HIGH"]; - default : - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns Contrast description. - /// - /// the Contrast description - private string GetContrastDescription() - { - if (!base.directory - .ContainsTag(CanonDirectory.TAG_CANON_STATE1_CONTRAST)) - { - return null; - } - int lcVal = - base.directory.GetInt( - CanonDirectory.TAG_CANON_STATE1_CONTRAST); - switch (lcVal) - { - case 0xFFFF : - return BUNDLE["LOW"]; - case 0x000 : - return BUNDLE["NORMAL"]; - case 0x001 : - return BUNDLE["HIGH"]; - default : - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns Easy Shooting Mode description. - /// - /// the Easy Shooting Mode description - private string GetEasyShootingModeDescription() - { - if (!base.directory - .ContainsTag( - CanonDirectory.TAG_CANON_STATE1_EASY_SHOOTING_MODE)) - { - return null; - } - int lcVal = - base.directory.GetInt( - CanonDirectory.TAG_CANON_STATE1_EASY_SHOOTING_MODE); - switch (lcVal) - { - case 0 : - return BUNDLE["FULL_AUTO"]; - case 1 : - return BUNDLE["MANUAL"]; - case 2 : - return BUNDLE["LANDSCAPE"]; - case 3 : - return BUNDLE["FAST_SHUTTER"]; - case 4 : - return BUNDLE["SLOW_SHUTTER"]; - case 5 : - return BUNDLE["NIGHT"]; - case 6 : - return BUNDLE["BLACK_AND_WHITE"]; - case 7 : - return BUNDLE["SEPIA"]; - case 8 : - return BUNDLE["PORTRAIT"]; - case 9 : - return BUNDLE["SPORTS"]; - case 10 : - return BUNDLE["MACRO_CLOSEUP"]; - case 11 : - return BUNDLE["PAN_FOCUS"]; - default : - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns Image Size description. - /// - /// the Image Size description - private string GetImageSizeDescription() - { - if (!base.directory - .ContainsTag(CanonDirectory.TAG_CANON_STATE1_IMAGE_SIZE)) - { - return null; - } - int lcVal = - base.directory.GetInt( - CanonDirectory.TAG_CANON_STATE1_IMAGE_SIZE); - switch (lcVal) - { - case 0 : - return BUNDLE["LARGE"]; - case 1 : - return BUNDLE["MEDIUM"]; - case 2 : - return BUNDLE["SMALL"]; - default : - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns Focus Mode 1 description. - /// - /// the Focus Mode 1 description - private string GetFocusMode1Description() - { - if (!base.directory - .ContainsTag(CanonDirectory.TAG_CANON_STATE1_FOCUS_MODE_1)) - { - return null; - } - int lcVal = - base.directory.GetInt( - CanonDirectory.TAG_CANON_STATE1_FOCUS_MODE_1); - switch (lcVal) - { - case 0 : - return BUNDLE["ONE_SHOT"]; - case 1 : - return BUNDLE["AI_SERVO"]; - case 2 : - return BUNDLE["AI_FOCUS"]; - case 3 : - return BUNDLE["MF"]; - case 4 : - // TODO should check field 32 here (FOCUS_MODE_2) - return BUNDLE["SINGLE"]; - case 5 : - return BUNDLE["CONTINUOUS"]; - case 6 : - return BUNDLE["MF"]; - default : - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns Continuous Drive Mode description. - /// - /// the Continuous Drive Mode description - private string GetContinuousDriveModeDescription() - { - if (!base.directory - .ContainsTag( - CanonDirectory - .TAG_CANON_STATE1_CONTINUOUS_DRIVE_MODE)) - { - return null; - } - int lcVal = - base.directory.GetInt( - CanonDirectory.TAG_CANON_STATE1_CONTINUOUS_DRIVE_MODE); - switch (lcVal) - { - case 0 : - if (base.directory - .GetInt( - CanonDirectory - .TAG_CANON_STATE1_SELF_TIMER_DELAY) - == 0) - { - return BUNDLE["SINGLE_SHOT"]; - } - else - { - return BUNDLE["SINGLE_SHOT_WITH_SELF_TIMER"]; - } - case 1 : - return BUNDLE["CONTINUOUS"]; - default : - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns Flash Mode description. - /// - /// the Flash Mode description - private string GetFlashModeDescription() - { - if (!base.directory - .ContainsTag(CanonDirectory.TAG_CANON_STATE1_FLASH_MODE)) - { - return null; - } - int lcVal = - base.directory.GetInt( - CanonDirectory.TAG_CANON_STATE1_FLASH_MODE); - switch (lcVal) - { - case 0 : - return BUNDLE["NO_FLASH_FIRED"]; - case 1 : - return BUNDLE["AUTO"]; - case 2 : - return BUNDLE["ON"]; - case 3 : - return BUNDLE["RED_EYE_REDUCTION"]; - case 4 : - return BUNDLE["SLOW_SYNCHRO"]; - case 5 : - return BUNDLE["AUTO_AND_RED_EYE_REDUCTION"]; - case 6 : - return BUNDLE["ON_AND_RED_EYE_REDUCTION"]; - case 16 : - // note: this lcVal not set on Canon D30 - return BUNDLE["EXTERNAL_FLASH"]; - default : - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns Self Timer Delay description. - /// - /// the Self Timer Delay description - private string GetSelfTimerDelayDescription() - { - if (!base.directory - .ContainsTag( - CanonDirectory.TAG_CANON_STATE1_SELF_TIMER_DELAY)) - { - return null; - } - int lcVal = - base.directory.GetInt( - CanonDirectory.TAG_CANON_STATE1_SELF_TIMER_DELAY); - if (lcVal == 0) - { - return BUNDLE["SELF_TIMER_DELAY_NOT_USED"]; - } - // TODO find an image that tests this calculation - return BUNDLE["SELF_TIMER_DELAY", ((double) lcVal * 0.1d).ToString()]; - } - - /// - /// Returns Macro Mode description. - /// - /// the Macro Mode description - private string GetMacroModeDescription() - { - if (!base.directory - .ContainsTag(CanonDirectory.TAG_CANON_STATE1_MACRO_MODE)) - { - return null; - } - int lcVal = - base.directory.GetInt( - CanonDirectory.TAG_CANON_STATE1_MACRO_MODE); - switch (lcVal) - { - case 0: - return BUNDLE["OFF"]; - case 1 : - return BUNDLE["MACRO"]; - case 2 : - return BUNDLE["NORMAL"]; - default : - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/CanonDirectory.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/CanonDirectory.cs deleted file mode 100644 index eca46c1..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/CanonDirectory.cs +++ /dev/null @@ -1,713 +0,0 @@ -namespace com.drew.metadata.exif -{ - /// - /// This class represents CANON marker note. - /// - - public class CanonDirectory : AbstractDirectory - { - // CANON cameras have some funny bespoke fields that need further processing... - public const int TAG_CANON_CAMERA_STATE_1 = 0x0001; - public const int TAG_CANON_CAMERA_STATE_2 = 0x0004; - - public const int TAG_CANON_IMAGE_TYPE = 0x0006; - public const int TAG_CANON_FIRMWARE_VERSION = 0x0007; - public const int TAG_CANON_IMAGE_NUMBER = 0x0008; - public const int TAG_CANON_OWNER_NAME = 0x0009; - /// - /// To display serial number as on camera use: printf( "%04X%05d", highbyte, lowbyte ) - /// TODO handle this in CanonMakernoteDescriptor - /// - public const int TAG_CANON_SERIAL_NUMBER = 0x000C; - /// - /// xb: 15.05.2008 -- http://owl.phy.queensu.ca/~phil/exiftool/TagNames/Canon.html#CameraSettings - /// Old State TAG_CANON_UNKNOWN_1 - /// - public const int TAG_CANON_CanonCameraInfo = 0x000D; - public const int TAG_CANON_CUSTOM_FUNCTIONS = 0x000F; - - // These 'sub'-tag values have been created for consistency -- they don't exist within the exif segment - /// - /// 1 = Macro - /// 2 = Normal - /// - public const int TAG_CANON_STATE1_MACRO_MODE = 0xC101; - public const int TAG_CANON_STATE1_SELF_TIMER_DELAY = 0xC102; - /// - /// 2 = Normal - /// 3 = Fine - /// 5 = Superfine - /// - public const int TAG_CANON_STATE1_QUALITY = 0xC103; - /// - /// 0 = Flash Not Fired - /// 1 = Auto - /// 2 = On - /// 3 = Red Eye Reduction - /// 4 = Slow Synchro - /// 5 = Auto + Red Eye Reduction - /// 6 = On + Red Eye Reduction - /// 16 = External Flash - /// - public const int TAG_CANON_STATE1_FLASH_MODE = 0xC104; - /// - /// 0 = Single Frame or Timer Mode - /// 1 = Continuous - /// - public const int TAG_CANON_STATE1_CONTINUOUS_DRIVE_MODE = 0xC105; - public const int TAG_CANON_STATE1_UNKNOWN_2 = 0xC106; - /// - /// 0 = One-Shot - /// 1 = AI Servo - /// 2 = AI Focus - /// 3 = Manual Focus - /// 4 = Single - /// 5 = Continuous - /// 6 = Manual Focus - /// - public const int TAG_CANON_STATE1_FOCUS_MODE_1 = 0xC107; - public const int TAG_CANON_STATE1_UNKNOWN_3 = 0xC108; - - /// - /// xb: 15.05.2008 -- http://owl.phy.queensu.ca/~phil/exiftool/TagNames/Canon.html#CameraSettings - /// Old State TAG_CANON_STATE1_UNKNOWN_4 - /// 1 = JPEG - /// 2 = CRW+THM - /// 3 = AVI+THM - /// 4 = TIF - /// 5 = TIF+JPEG - /// 6 = CR2 - /// 7 = CR2+JPEG - /// - public const int TAG_CANON_STATE1_RecordMode = 0xC109; - - /// - /// 0 = Large - /// 1 = Medium - /// 2 = Small - /// - public const int TAG_CANON_STATE1_IMAGE_SIZE = 0xC10A; - /// - /// 0 = Full Auto - /// 1 = Manual - /// 2 = Landscape - /// 3 = Fast Shutter - /// 4 = Slow Shutter - /// 5 = Night - /// 6 = Black & White - /// 7 = Sepia - /// 8 = Portrait - /// 9 = Sports - /// 10 = Macro / Close-Up - /// 11 = Pan Focus - /// - public const int TAG_CANON_STATE1_EASY_SHOOTING_MODE = 0xC10B; - /// - /// 0 = No Digital Zoom - /// 1 = 2x - /// 2 = 4x - /// - public const int TAG_CANON_STATE1_DIGITAL_ZOOM = 0xC10C; - /// - /// 0 = Normal - /// 1 = High - /// 65535 = Low - /// - public const int TAG_CANON_STATE1_CONTRAST = 0xC10D; - /// - /// 0 = Normal - /// 1 = High - /// 65535 = Low - /// - public const int TAG_CANON_STATE1_SATURATION = 0xC10E; - /// - /// 0 = Normal - /// 1 = High - /// 65535 = Low - /// - public const int TAG_CANON_STATE1_SHARPNESS = 0xC10F; - /// - /// 0 = Check ISOSpeedRatings EXIF tag for ISO Speed - /// 15 = Auto ISO - /// 16 = ISO 50 - /// 17 = ISO 100 - /// 18 = ISO 200 - /// 19 = ISO 400 - /// - public const int TAG_CANON_STATE1_ISO = 0xC110; - /// - /// 3 = Evaluative - /// 4 = Partial - /// 5 = Center Weighted - /// - public const int TAG_CANON_STATE1_METERING_MODE = 0xC111; - /// - /// 0 = Manual - /// 1 = Auto - /// 3 = Close-up (Macro) - /// 8 = Locked (Pan Mode) - /// - public const int TAG_CANON_STATE1_FOCUS_TYPE = 0xC112; - /// - /// 12288 = None (Manual Focus) - /// 12289 = Auto Selected - /// 12290 = Right - /// 12291 = Center - /// 12292 = Left - /// - public const int TAG_CANON_STATE1_AF_POINT_SELECTED = 0xC113; - /// - /// 0 = Easy Shooting (See Easy Shooting Mode) - /// 1 = Program - /// 2 = Tv-Priority - /// 3 = Av-Priority - /// 4 = Manual - /// 5 = A-DEP - /// - public const int TAG_CANON_STATE1_EXPOSURE_MODE = 0xC114; - public const int TAG_CANON_STATE1_UNKNOWN_7 = 0xC115; - /// - /// xb: 15.05.2008 -- http://owl.phy.queensu.ca/~phil/exiftool/TagNames/Canon.html#CameraSettings - /// Old State TAG_CANON_STATE1_UNKNOWN_8 - /// Canon LensType Values - /// 1 = Canon EF 50mm f/1.8 - /// 2 = Canon EF 28mm f/2.8 - /// 4 = Canon EF 35-105mm f/3.5-4.5 or Sigma UC Zoom 35-135mm f/4-5.6 - /// 6 = Tokina AF193-2 19-35mm f/3.5-4.5 or Sigma Lens - /// 7 = Canon EF 100-300mm f/5.6L - /// ...... - /// - public const int TAG_CANON_STATE1_LensType = 0xC116; - public const int TAG_CANON_STATE1_LONG_FOCAL_LENGTH = 0xC117; - public const int TAG_CANON_STATE1_SHORT_FOCAL_LENGTH = 0xC118; - public const int TAG_CANON_STATE1_FOCAL_UNITS_PER_MM = 0xC119; - /// - /// xb: 15.05.2008 -- http://owl.phy.queensu.ca/~phil/exiftool/TagNames/Canon.html#CameraSettings - /// Old State TAG_CANON_STATE1_UNKNOWN_10 - /// - public const int TAG_CANON_STATE1_MaxAperture = 0xC11A; - /// - /// xb: 15.05.2008 -- http://owl.phy.queensu.ca/~phil/exiftool/TagNames/Canon.html#CameraSettings - /// Old State TAG_CANON_STATE1_UNKNOWN_10 - /// - public const int TAG_CANON_STATE1_MinAperture = 0xC11B; - /// - /// 0 = Flash Did Not Fire - /// 1 = Flash Fired - /// - public const int TAG_CANON_STATE1_FLASH_ACTIVITY = 0xC11C; - public const int TAG_CANON_STATE1_FLASH_DETAILS = 0xC11D; - public const int TAG_CANON_STATE1_UNKNOWN_12 = 0xC11E; - public const int TAG_CANON_STATE1_UNKNOWN_13 = 0xC11F; - /// - /// 0 = Focus Mode: Single - /// 1 = Focus Mode: Continuous - /// - public const int TAG_CANON_STATE1_FOCUS_MODE_2 = 0xC120; - - /// - /// xb: 15.05.2008 -- http://owl.phy.queensu.ca/~phil/exiftool/TagNames/Canon.html#CameraSettings - /// New constante - /// - public const int TAG_CANON_STATE1_AESetting = 0xC121; - /// - /// xb: 15.05.2008 -- http://owl.phy.queensu.ca/~phil/exiftool/TagNames/Canon.html#CameraSettings - /// New constante - /// - public const int TAG_CANON_STATE1_ImageStabilization = 0xC122; - /// - /// xb: 15.05.2008 -- http://owl.phy.queensu.ca/~phil/exiftool/TagNames/Canon.html#CameraSettings - /// New constante - /// - public const int TAG_CANON_STATE1_DisplayAperture = 0xC123; - /// - /// xb: 15.05.2008 -- http://owl.phy.queensu.ca/~phil/exiftool/TagNames/Canon.html#CameraSettings - /// New constante - /// - public const int TAG_CANON_STATE1_ZoomSourceWidth = 0xC124; - /// - /// xb: 15.05.2008 -- http://owl.phy.queensu.ca/~phil/exiftool/TagNames/Canon.html#CameraSettings - /// New constante - /// - public const int TAG_CANON_STATE1_ZoomTargetWidth = 0xC125; - - /// - /// xb: 15.05.2008 -- http://owl.phy.queensu.ca/~phil/exiftool/TagNames/Canon.html#CameraSettings - /// New constante - /// - public const int TAG_CANON_STATE1_SpotMeteringMode = 0xC127; - /// - /// xb: 15.05.2008 -- http://owl.phy.queensu.ca/~phil/exiftool/TagNames/Canon.html#CameraSettings - /// New constante - /// - public const int TAG_CANON_STATE1_PhotoEffect = 0xC128; - /// - /// xb: 15.05.2008 -- http://owl.phy.queensu.ca/~phil/exiftool/TagNames/Canon.html#CameraSettings - /// New constante - /// - public const int TAG_CANON_STATE1_ManualFlashOutput = 0xC129; - /// - /// xb: 15.05.2008 -- http://owl.phy.queensu.ca/~phil/exiftool/TagNames/Canon.html#CameraSettings - /// New constante - /// - public const int TAG_CANON_STATE1_ColorTone = 0xC12A; - - /// - /// xb: 15.05.2008 -- http://owl.phy.queensu.ca/~phil/exiftool/TagNames/Canon.html#CameraSettings - /// New Tags - /// - public const int TAG_CANON_FocalLength_FocalType = 0xC401; - public const int TAG_CANON_FocalLength_FocalLength = 0xC402; - public const int TAG_CANON_FocalLength_FocalPlaneXSize = 0xC403; - public const int TAG_CANON_FocalLength_FocalPlaneYSize = 0xC404; - /// ============================================================================================= - - /// - /// 0 = Auto - /// 1 = Sunny - /// 2 = Cloudy - /// 3 = Tungsten - /// 4 = Fluorescent - /// 5 = Flash - /// 6 = Custom - /// - public const int TAG_CANON_STATE2_WHITE_BALANCE = 0xC207; - public const int TAG_CANON_STATE2_SEQUENCE_NUMBER = 0xC209; - public const int TAG_CANON_STATE2_AF_POINT_USED = 0xC20E; - /// - /// The value of this tag may be translated into a flash bias value, in EV. - /// - /// 0xffc0 = -2 EV - /// 0xffcc = -1.67 EV - /// 0xffd0 = -1.5 EV - /// 0xffd4 = -1.33 EV - /// 0xffe0 = -1 EV - /// 0xffec = -0.67 EV - /// 0xfff0 = -0.5 EV - /// 0xfff4 = -0.33 EV - /// 0x0000 = 0 EV - /// 0x000c = 0.33 EV - /// 0x0010 = 0.5 EV - /// 0x0014 = 0.67 EV - /// 0x0020 = 1 EV - /// 0x002c = 1.33 EV - /// 0x0030 = 1.5 EV - /// 0x0034 = 1.67 EV - /// 0x0040 = 2 EV - /// - public const int TAG_CANON_STATE2_FLASH_BIAS = 0xC20F; - public const int TAG_CANON_STATE2_AUTO_EXPOSURE_BRACKETING = 0xC210; - public const int TAG_CANON_STATE2_AEB_BRACKET_VALUE = 0xC211; - public const int TAG_CANON_STATE2_SUBJECT_DISTANCE = 0xC213; - - /// - /// Long Exposure Noise Reduction - /// 0 = Off - /// 1 = On - /// - public const int TAG_CANON_CUSTOM_FUNCTION_LONG_EXPOSURE_NOISE_REDUCTION = 0xC301; - - /// - /// Shutter/Auto Exposure-lock buttons - /// 0 = AF/AE lock - /// 1 = AE lock/AF - /// 2 = AF/AF lock - /// 3 = AE+release/AE+AF - /// - public const int TAG_CANON_CUSTOM_FUNCTION_SHUTTER_AUTO_EXPOSURE_LOCK_BUTTONS = 0xC302; - - /// - /// Mirror lockup - /// 0 = Disable - /// 1 = Enable - /// - public const int TAG_CANON_CUSTOM_FUNCTION_MIRROR_LOCKUP = 0xC303; - - /// - /// Tv/Av and exposure level - /// 0 = 1/2 stop - /// 1 = 1/3 stop - /// - public const int TAG_CANON_CUSTOM_FUNCTION_TV_AV_AND_EXPOSURE_LEVEL = 0xC304; - - /// - /// AF-assist light - /// 0 = On (Auto) - /// 1 = Off - /// - public const int TAG_CANON_CUSTOM_FUNCTION_AF_ASSIST_LIGHT = 0xC305; - - /// - /// Shutter speed in Av mode - /// 0 = Automatic - /// 1 = 1/200 (fixed) - /// - public const int TAG_CANON_CUSTOM_FUNCTION_SHUTTER_SPEED_IN_AV_MODE = 0xC306; - - /// - /// Auto-Exposure Bracketting sequence/auto cancellation - /// 0 = 0,-,+ / Enabled - /// 1 = 0,-,+ / Disabled - /// 2 = -,0,+ / Enabled - /// 3 = -,0,+ / Disabled - /// - public const int TAG_CANON_CUSTOM_FUNCTION_BRACKETTING = 0xC307; - - /// - /// Shutter Curtain Sync - /// 0 = 1st Curtain Sync - /// 1 = 2nd Curtain Sync - /// - public const int TAG_CANON_CUSTOM_FUNCTION_SHUTTER_CURTAIN_SYNC = 0xC308; - - /// - /// Lens Auto-Focus stop button Function Switch - /// 0 = AF stop - /// 1 = Operate AF - /// 2 = Lock AE and start timer - /// - public const int TAG_CANON_CUSTOM_FUNCTION_AF_STOP = 0xC309; - - /// - /// Auto reduction of fill flash - /// 0 = Enable - /// 1 = Disable - /// - public const int TAG_CANON_CUSTOM_FUNCTION_FILL_FLASH_REDUCTION = 0xC30A; - - /// - /// Menu button return position - /// 0 = Top - /// 1 = Previous (volatile) - /// 2 = Previous - /// - public const int TAG_CANON_CUSTOM_FUNCTION_MENU_BUTTON_RETURN = 0xC30B; - - /// - /// SET button function when shooting - /// 0 = Not Assigned - /// 1 = Change Quality - /// 2 = Change ISO Speed - /// 3 = Select Parameters - /// - public const int TAG_CANON_CUSTOM_FUNCTION_SET_BUTTON_FUNCTION = 0xC30C; - - /// - /// Sensor cleaning - /// 0 = Disable - /// 1 = Enable - /// - public const int TAG_CANON_CUSTOM_FUNCTION_SENSOR_CLEANING = 0xC30D; - - /// - /// Constructor of the object. - /// - public CanonDirectory() - : base("CanonMarkernote") - { - base.SetDescriptor(new CanonDescriptor(this)); - } - - // ============================================================================================== - // xb: 15.05.2008 -- http://owl.phy.queensu.ca/~phil/exiftool/TagNames/Canon.html#CameraSettings - // New Tags - // ============================================================================================== - - /// - /// --> Canon FocalLength Tags - /// - public const int TAG_CANON_FocalLength = 0x0002; - - /// - /// --> Canon CanonModelID Values - /// - public const int TAG_CANON_CanonModelID = 0x0010; - /// - /// --> Canon AFInfo Tags - /// - public const int TAG_CANON_CanonAFInfo = 0x0012; - // public const int TAG_CANON_ThumbnailImageValidArea = 0x0013; // int16u[4] (all zeros for full frame) - /// - /// 0x90000000 = Format 1 - /// 0xa0000000 = Format 2 - /// - public const int TAG_CANON_SerialNumberFormat = 0x0015; - /// - /// N 0 = Off - /// 1 = On (1) - /// 2 = On (2) - /// - public const int TAG_CANON_SuperMacro = 0x001a; - /// - /// (only used in postcard mode) - /// 0 = Off - /// 1 = Date - /// 2 = Date & Time - /// - public const int TAG_CANON_DateStampMode = 0x001c; - /// - /// --> Canon MyColors Tags - /// - public const int TAG_CANON_MyColors = 0x001d; - public const int TAG_CANON_FirmwareRevision = 0x001e; - /// - /// --> Canon FaceDetect1 Tags - /// - public const int TAG_CANON_FaceDetect1 = 0x0024; - /// - /// --> Canon FaceDetect2 Tags - /// - public const int TAG_CANON_FaceDetect2 = 0x0025; - /// - /// --> Canon AFInfo2 Tags - /// - public const int TAG_CANON_CanonAFInfo2 = 0x0026; - public const int TAG_CANON_RawDataOffset = 0x0081; - public const int TAG_CANON_OriginalDecisionDataOffset = 0x0083; - /// - /// --> CanonCustom Functions1D Tags - /// - public const int TAG_CANON_CustomFunctions1D = 0x0090; - /// - /// --> CanonCustom PersonalFuncs Tags - /// - public const int TAG_CANON_PersonalFunctions = 0x0091; - /// - /// --> CanonCustom PersonalFuncValues Tags - /// - public const int TAG_CANON_PersonalFunctionValues = 0x0092; - /// - /// --> Canon FileInfo Tags - /// - public const int TAG_CANON_CanonFileInfo = 0x0093; - /// - /// (EOS 1D -- 5 rows: A1-7, B1-10, C1-11, D1-10, E1-7, center point is C6) - /// - public const int TAG_CANON_AFPointsInFocus1D = 0x0094; - public const int TAG_CANON_LensType = 0x0095; - /// - /// --> Canon SerialInfo Tags - /// - public const int TAG_CANON_InternalSerialNumber = 0x0096; - public const int TAG_CANON_DustRemovalData = 0x0097; - /// - /// --> CanonCustom Functions2 Tags - /// - public const int TAG_CANON_CustomFunctions2 = 0x0099; - /// - /// --> Canon Processing Tags - /// - public const int TAG_CANON_ProcessingInfo = 0x00a0; - public const int TAG_CANON_ToneCurveTable = 0x00a1; - public const int TAG_CANON_SharpnessTable = 0x00a2; - public const int TAG_CANON_SharpnessFreqTable = 0x00a3; - public const int TAG_CANON_WhiteBalanceTable = 0x00a4; - /// - /// --> Canon ColorBalance Tags - /// - public const int TAG_CANON_ColorBalance = 0x00a9; - public const int TAG_CANON_ColorTemperature = 0x00ae; - /// - /// --> Canon Flags Tags - /// - public const int TAG_CANON_CanonFlags = 0x00b0; - /// - /// --> Canon ModifiedInfo Tags - /// - public const int TAG_CANON_ModifiedInfo = 0x00b1; - public const int TAG_CANON_ToneCurveMatching = 0x00b2; - public const int TAG_CANON_WhiteBalanceMatching = 0x00b3; - /// - /// 1 = sRGB - /// 2 = Adobe RGB - /// - public const int TAG_CANON_ColorSpace = 0x00b4; - /// - /// --> Canon PreviewImageInfo Tags - /// - public const int TAG_CANON_PreviewImageInfo = 0x00b6; - /// - /// (offset of VRD "recipe data" if it exists) - /// - public const int TAG_CANON_VRDOffset = 0x00d0; - /// - /// --> Canon SensorInfo Tags - /// - public const int TAG_CANON_SensorInfo = 0x00e0; - /// - /// --> Canon ColorBalance1 Tags - /// --> Canon ColorBalance2 Tags - /// --> Canon ColorBalance3 Tags - /// --> Canon ColorBalance4 Tags - /// - public const int TAG_CANON_ColorBalance1to4 = 0x4001; - public const int TAG_CANON_UnknownBlock1 = 0x4002; - /// - /// --> Canon ColorInfo Tags - /// - public const int TAG_CANON_ColorInfo = 0x4003; - public const int TAG_CANON_UnknownBlock2 = 0x4005; - public const int TAG_CANON_BlackLevel = 0x4008; - - public const int TAG_CANON_STATE2_AutoISO = 0xC201; - public const int TAG_CANON_STATE2_BaseISO = 0xC202; - public const int TAG_CANON_STATE2_MeasuredEV = 0xC203; - public const int TAG_CANON_STATE2_TargetAperture = 0xC204; - public const int TAG_CANON_STATE2_TargetExposureTime = 0xC205; - public const int TAG_CANON_STATE2_ExposureCompensation = 0xC206; - /// - /// 0 = Off - /// 1 = Night Scene - /// 2 = On - /// 3 = None - /// - public const int TAG_CANON_STATE2_SlowShutter = 0xC208; - public const int TAG_CANON_STATE2_OpticalZoomCode = 0xC20A; - public const int TAG_CANON_STATE2_FlashGuideNumber = 0xC212; - public const int TAG_CANON_STATE2_ControlMode = 0xC20D; - public const int TAG_CANON_STATE2_FocusDistanceLower = 0xC214; - public const int TAG_CANON_STATE2_FNumber = 0xC215; - public const int TAG_CANON_STATE2_ExposureTime = 0xC216; - public const int TAG_CANON_STATE2_BulbDuration = 0xC218; - public const int TAG_CANON_STATE2_CameraType = 0xC21A; - public const int TAG_CANON_STATE2_AutoRotate = 0xC21B; - public const int TAG_CANON_STATE2_NDFilter = 0xC21C; - public const int TAG_CANON_STATE2_SelfTimer2 = 0xC21D; - public const int TAG_CANON_STATE2_FlashOutput = 0xC221; - - - /// - /// 0 = Standard - /// 1 = Manual - /// 2 = Custom - /// - public const int TAG_CANON_ProcessingInfo_ToneCurve = 0xC501; - /// - /// (1D and 5D only) - /// - public const int TAG_CANON_ProcessingInfo_Sharpness = 0xC502; - /// - /// 0 = n/a - /// 1 = Lowest - /// 2 = Low - /// 3 = Standard - /// 4 = High - /// 5 = Highest - /// - public const int TAG_CANON_ProcessingInfo_SharpnessFrequency = 0xC503; - public const int TAG_CANON_ProcessingInfo_SensorRedLevel = 0xC504; - public const int TAG_CANON_ProcessingInfo_SensorBlueLevel = 0xC505; - public const int TAG_CANON_ProcessingInfo_WhiteBalanceRed = 0xC506; - public const int TAG_CANON_ProcessingInfo_WhiteBalanceBlue = 0xC507; - /// - /// --> Canon WhiteBalance Values - /// - public const int TAG_CANON_ProcessingInfo_WhiteBalance = 0xC508; - public const int TAG_CANON_ProcessingInfo_ColorTemperature = 0xC509; - /// - /// --> Canon PictureStyle Values - /// - public const int TAG_CANON_ProcessingInfo_PictureStyle = 0xC50a; - public const int TAG_CANON_ProcessingInfo_DigitalGain = 0xC50b; - /// - /// (positive is a shift toward amber) - /// - public const int TAG_CANON_ProcessingInfo_WBShiftAB = 0xC50c; - /// - /// (positive is a shift toward green) - /// - public const int TAG_CANON_ProcessingInfo_WBShiftGM = 0xC50d; - - public const int TAG_CANON_SensorInfo_SensorWidth = 0xC601; - public const int TAG_CANON_SensorInfo_SensorHeight = 0xC602; - public const int TAG_CANON_SensorInfo_SensorLeftBorder = 0xC605; - public const int TAG_CANON_SensorInfo_SensorTopBorder = 0xC606; - public const int TAG_CANON_SensorInfo_SensorRightBorder = 0xC607; - public const int TAG_CANON_SensorInfo_SensorBottomBorder = 0xC608; - public const int TAG_CANON_SensorInfo_BlackMaskLeftBorder = 0xC609; - public const int TAG_CANON_SensorInfo_BlackMaskTopBorder = 0xC60a; - public const int TAG_CANON_SensorInfo_BlackMaskRightBorder = 0xC60b; - public const int TAG_CANON_SensorInfo_BlackMaskBottomBorder = 0xC60c; - - // xb: 15.05.2008 - // ============================================================================================= - - /// - /// We need special handling for selected tags. - /// - /// the tag type - /// what to set - public override void SetIntArray(int tagType, int[] ints) - { - if (tagType == TAG_CANON_CAMERA_STATE_1) - { - // this single tag has multiple values within - int subTagTypeBase = 0xC100; - // we intentionally skip the first array member - for (int i = 1; i < ints.Length; i++) - { - base.SetObject(subTagTypeBase + i, ints[i]); - } - } - else if (tagType == TAG_CANON_CAMERA_STATE_2) - { - // this single tag has multiple values within - int subTagTypeBase = 0xC200; - // we intentionally skip the first array member - for (int i = 1; i < ints.Length; i++) - { - base.SetObject(subTagTypeBase + i, ints[i]); - } - } - - /// xb: 15.05.2008 -- http://owl.phy.queensu.ca/~phil/exiftool/TagNames/Canon.html#CameraSettings - else if (tagType == TAG_CANON_FocalLength) - { - // this single tag has multiple values within - int subTagTypeBase = 0xC400; - // we intentionally skip the first array member - for (int i = 0; i < ints.Length; i++) - { - base.SetObject(subTagTypeBase + i+1, ints[i]); - } - } - else if (tagType == TAG_CANON_ProcessingInfo) - { - // this single tag has multiple values within - int subTagTypeBase = 0xC500; - // we intentionally skip the first array member - for (int i = 1; i < ints.Length; i++) - { - base.SetObject(subTagTypeBase + i, ints[i]); - } - } - else if (tagType == TAG_CANON_SensorInfo) - { - // this single tag has multiple values within - int subTagTypeBase = 0xC600; - // we intentionally skip the first array member - for (int i = 1; i < ints.Length; i++) - { - base.SetObject(subTagTypeBase + i, ints[i]); - } - } - /// xb: 15.05.2008 - - if (tagType == TAG_CANON_CUSTOM_FUNCTIONS) - { - // this single tag has multiple values within - int subTagTypeBase = 0xC300; - // we intentionally skip the first array member - for (int i = 1; i < ints.Length; i++) - { - base.SetObject(subTagTypeBase + i + 1, ints[i] & 0x0F); - } - } - else - { - // no special handling... - base.SetIntArray(tagType, ints); - } - } - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/CasioType1Descriptor.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/CasioType1Descriptor.cs deleted file mode 100644 index b41d080..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/CasioType1Descriptor.cs +++ /dev/null @@ -1,389 +0,0 @@ -namespace com.drew.metadata.exif -{ - /// - /// Tag descriptor for a casio camera - /// - - public class CasioType1Descriptor : AbstractTagDescriptor - { - /// - /// Constructor of the object - /// - /// a base.directory - public CasioType1Descriptor(AbstractDirectory aDirectory) : base(aDirectory) - { - } - - /// - /// Returns a descriptive value of the the specified tag for this image. - /// Where possible, known values will be substituted here in place of the raw tokens actually - /// kept in the Exif segment. - /// If no substitution is available, the value provided by GetString(int) will be returned. - /// This and GetString(int) are the only 'get' methods that won't throw an exception. - /// - /// the tag to find a description for - /// a description of the image'str value for the specified tag, or null if the tag hasn't been defined. - public override string GetDescription(int aTagType) - { - switch(aTagType) - { - case CasioType1Directory.TAG_CASIO_RECORDING_MODE: - return this.GetRecordingModeDescription(); - case CasioType1Directory.TAG_CASIO_QUALITY: - return this.GetQualityDescription(); - case CasioType1Directory.TAG_CASIO_FOCUSING_MODE: - return this.GetFocusingModeDescription(); - case CasioType1Directory.TAG_CASIO_FLASH_MODE: - return this.GetFlashModeDescription(); - case CasioType1Directory.TAG_CASIO_FLASH_INTENSITY: - return this.GetFlashIntensityDescription(); - case CasioType1Directory.TAG_CASIO_OBJECT_DISTANCE: - return this.GetObjectDistanceDescription(); - case CasioType1Directory.TAG_CASIO_WHITE_BALANCE: - return this.GetWhiteBalanceDescription(); - case CasioType1Directory.TAG_CASIO_DIGITAL_ZOOM: - return this.GetDigitalZoomDescription(); - case CasioType1Directory.TAG_CASIO_SHARPNESS: - return this.GetSharpnessDescription(); - case CasioType1Directory.TAG_CASIO_CONTRAST: - return this.GetContrastDescription(); - case CasioType1Directory.TAG_CASIO_SATURATION: - return this.GetSaturationDescription(); - case CasioType1Directory.TAG_CASIO_CCD_SENSITIVITY: - return GetCcdSensitivityDescription(); - default : - return base.directory.GetString(aTagType); - } - } - - /// - /// Returns the Ccd Sensitivity Description. - /// - /// the Ccd Sensitivity Description. - private string GetCcdSensitivityDescription() - { - if (!base.directory - .ContainsTag(CasioType1Directory.TAG_CASIO_CCD_SENSITIVITY)) - { - return null; - } - int lcVal = - base.directory.GetInt( - CasioType1Directory.TAG_CASIO_CCD_SENSITIVITY); - switch (lcVal) - { - // these four for QV3000 - case 64 : - return BUNDLE["NORMAL"]; - case 125 : - return BUNDLE["CCD_P_1"]; - case 250 : - return BUNDLE["CCD_P_2"]; - case 244 : - return BUNDLE["CCD_P_3"]; - // these two for QV8000/2000 - case 80 : - return BUNDLE["NORMAL"]; - case 100 : - return BUNDLE["HIGH"]; - default : - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns the saturation Description. - /// - /// the saturation Description. - private string GetSaturationDescription() - { - if (!base.directory - .ContainsTag(CasioType1Directory.TAG_CASIO_SATURATION)) - { - return null; - } - int lcVal = - base.directory.GetInt(CasioType1Directory.TAG_CASIO_SATURATION); - switch (lcVal) - { - case 0 : - return BUNDLE["NORMAL"]; - case 1 : - return BUNDLE["LOW"]; - case 2 : - return BUNDLE["HIGH"]; - default : - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns the contrast Description. - /// - /// the contrast Description. - private string GetContrastDescription() - { - if (!base.directory - .ContainsTag(CasioType1Directory.TAG_CASIO_CONTRAST)) - { - return null; - } - int lcVal = - base.directory.GetInt(CasioType1Directory.TAG_CASIO_CONTRAST); - switch (lcVal) - { - case 0 : - return BUNDLE["NORMAL"]; - case 1 : - return BUNDLE["LOW"]; - case 2 : - return BUNDLE["HIGH"]; - default : - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns the sharpness Description. - /// - /// the sharpness Description. - private string GetSharpnessDescription() - { - if (!base.directory - .ContainsTag(CasioType1Directory.TAG_CASIO_SHARPNESS)) - { - return null; - } - int lcVal = - base.directory.GetInt(CasioType1Directory.TAG_CASIO_SHARPNESS); - switch (lcVal) - { - case 0 : - return BUNDLE["NORMAL"]; - case 1 : - return BUNDLE["SOFT"]; - case 2 : - return BUNDLE["HARD"]; - default : - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns the Digital Zoom Description. - /// - /// the Digital Zoom Description. - private string GetDigitalZoomDescription() - { - if (!base.directory - .ContainsTag(CasioType1Directory.TAG_CASIO_DIGITAL_ZOOM)) - { - return null; - } - int lcVal = - base.directory.GetInt(CasioType1Directory.TAG_CASIO_DIGITAL_ZOOM); - switch (lcVal) - { - case 0x10000: - return BUNDLE["NO_DIGITAL_ZOOM"]; - case 0x10001: - case 0x20000: - return BUNDLE["DIGITAL_ZOOM", "2"]; - case 0x40000: - return BUNDLE["DIGITAL_ZOOM", "4"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns the White Balance Description. - /// - /// the White Balance Description. - private string GetWhiteBalanceDescription() - { - if (!base.directory - .ContainsTag(CasioType1Directory.TAG_CASIO_WHITE_BALANCE)) - { - return null; - } - int lcVal = - base.directory.GetInt(CasioType1Directory.TAG_CASIO_WHITE_BALANCE); - switch (lcVal) - { - case 1 : - return BUNDLE["AUTO"]; - case 2 : - return BUNDLE["TUNGSTEN"]; - case 3 : - return BUNDLE["DAYLIGHT"]; - case 4 : - return BUNDLE["FLUORESCENT"]; - case 5 : - return BUNDLE["SHADE"]; - case 129 : - return BUNDLE["MANUAL"]; - default : - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns the Object Distance Description. - /// - /// the Object Distance Description. - private string GetObjectDistanceDescription() - { - if (!base.directory - .ContainsTag(CasioType1Directory.TAG_CASIO_OBJECT_DISTANCE)) - { - return null; - } - int lcVal = - base.directory.GetInt( - CasioType1Directory.TAG_CASIO_OBJECT_DISTANCE); - return BUNDLE["DISTANCE_MM", lcVal.ToString()]; - } - - /// - /// Returns the Flash Intensity Description. - /// - /// the Flash Intensity Description. - private string GetFlashIntensityDescription() - { - if (!base.directory - .ContainsTag(CasioType1Directory.TAG_CASIO_FLASH_INTENSITY)) - { - return null; - } - int lcVal = - base.directory.GetInt( - CasioType1Directory.TAG_CASIO_FLASH_INTENSITY); - switch (lcVal) - { - case 11 : - return BUNDLE["WEAK"]; - case 13 : - return BUNDLE["NORMAL"]; - case 15 : - return BUNDLE["STRONG"]; - default : - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns the Flash Mode Description. - /// - /// the Flash Mode Description. - private string GetFlashModeDescription() - { - if (!base.directory - .ContainsTag(CasioType1Directory.TAG_CASIO_FLASH_MODE)) - { - return null; - } - int lcVal = - base.directory.GetInt(CasioType1Directory.TAG_CASIO_FLASH_MODE); - switch (lcVal) - { - case 1 : - return BUNDLE["AUTO"]; - case 2 : - return BUNDLE["ON"]; - case 3 : - return BUNDLE["OFF"]; - case 4 : - // this documented as additional value for off here: - // http://www.ozhiker.com/electronics/pjmt/jpeg_info/casio_mn.html - return BUNDLE["RED_EYE_REDUCTION"]; - default : - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns the Focusing Mode Description. - /// - /// the Focusing Mode Description. - private string GetFocusingModeDescription() - { - if (!base.directory - .ContainsTag(CasioType1Directory.TAG_CASIO_FOCUSING_MODE)) - { - return null; - } - int lcVal = - base.directory.GetInt(CasioType1Directory.TAG_CASIO_FOCUSING_MODE); - switch (lcVal) - { - case 2 : - return BUNDLE["MACRO"]; - case 3 : - return BUNDLE["AUTO_FOCUS"]; - case 4 : - return BUNDLE["MANUAL_FOCUS"]; - case 5 : - return BUNDLE["INFINITY"]; - default : - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns the quality Description. - /// - /// the quality Description. - private string GetQualityDescription() - { - if (!base.directory.ContainsTag(CasioType1Directory.TAG_CASIO_QUALITY)) - { - return null; - } - int lcVal = - base.directory.GetInt(CasioType1Directory.TAG_CASIO_QUALITY); - switch (lcVal) - { - case 1 : - return BUNDLE["ECONOMY"]; - case 2 : - return BUNDLE["NORMAL"]; - case 3 : - return BUNDLE["FINE"]; - default : - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - - /// - /// Returns the Recording Mode Description. - /// - /// the Recording Mode Description. - private string GetRecordingModeDescription() - { - if (!base.directory - .ContainsTag(CasioType1Directory.TAG_CASIO_RECORDING_MODE)) - { - return null; - } - int lcVal = - base.directory.GetInt(CasioType1Directory.TAG_CASIO_RECORDING_MODE); - switch (lcVal) - { - case 1 : - return BUNDLE["SINGLE_SHUTTER"]; - case 2 : - return BUNDLE["PANORAMA"]; - case 3 : - return BUNDLE["NIGHT_SCENE"]; - case 4 : - return BUNDLE["PORTRAIT"]; - case 5 : - return BUNDLE["LANDSCAPE"]; - default : - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/CasioType1Directory.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/CasioType1Directory.cs deleted file mode 100644 index 46e1fe0..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/CasioType1Directory.cs +++ /dev/null @@ -1,40 +0,0 @@ -namespace com.drew.metadata.exif -{ - /// - /// This class represents CASIO marker note. - /// - - public class CasioType1Directory : AbstractCasioTypeDirectory - { - public const int TAG_CASIO_RECORDING_MODE = 0x0001; - public const int TAG_CASIO_QUALITY = 0x0002; - public const int TAG_CASIO_FOCUSING_MODE = 0x0003; - public const int TAG_CASIO_FLASH_MODE = 0x0004; - public const int TAG_CASIO_FLASH_INTENSITY = 0x0005; - public const int TAG_CASIO_OBJECT_DISTANCE = 0x0006; - public const int TAG_CASIO_WHITE_BALANCE = 0x0007; - public const int TAG_CASIO_UNKNOWN_1 = 0x0008; - public const int TAG_CASIO_UNKNOWN_2 = 0x0009; - public const int TAG_CASIO_DIGITAL_ZOOM = 0x000A; - public const int TAG_CASIO_SHARPNESS = 0x000B; - public const int TAG_CASIO_CONTRAST = 0x000C; - public const int TAG_CASIO_SATURATION = 0x000D; - public const int TAG_CASIO_UNKNOWN_3 = 0x000E; - public const int TAG_CASIO_UNKNOWN_4 = 0x000F; - public const int TAG_CASIO_UNKNOWN_5 = 0x0010; - public const int TAG_CASIO_UNKNOWN_6 = 0x0011; - public const int TAG_CASIO_UNKNOWN_7 = 0x0012; - public const int TAG_CASIO_UNKNOWN_8 = 0x0013; - public const int TAG_CASIO_CCD_SENSITIVITY = 0x0014; - - /// - /// Constructor of the object. - /// - public CasioType1Directory() - : base("CasioMarkernote") - { - base.SetDescriptor(new CasioType1Descriptor(this)); - } - - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/CasioType2Descriptor.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/CasioType2Descriptor.cs deleted file mode 100644 index c4197a8..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/CasioType2Descriptor.cs +++ /dev/null @@ -1,640 +0,0 @@ -namespace com.drew.metadata.exif -{ - /// - /// Tag descriptor for a casio camera type 2 - /// - - public class CasioType2Descriptor : AbstractTagDescriptor - { - /// - /// Constructor of the object - /// - /// a base.directory - public CasioType2Descriptor(AbstractDirectory aDirectory) - : base(aDirectory) - { - } - - /// - /// Returns a descriptive value of the the specified tag for this image. - /// Where possible, known values will be substituted here in place of the raw tokens actually - /// kept in the Exif segment. - /// If no substitution is available, the value provided by GetString(int) will be returned. - /// This and GetString(int) are the only 'get' methods that won't throw an exception. - /// - /// the tag to find a description for - /// a description of the image'str value for the specified tag, or null if the tag hasn't been defined. - public override string GetDescription(int aTagType) - { - switch (aTagType) - { - case CasioType2Directory.TAG_CASIO_TYPE2_THUMBNAIL_DIMENSIONS: - return this.GetThumbnailDimensionsDescription(); - case CasioType2Directory.TAG_CASIO_TYPE2_THUMBNAIL_SIZE: - return this.GetThumbnailSizeDescription(); - case CasioType2Directory.TAG_CASIO_TYPE2_THUMBNAIL_OFFSET: - return this.GetThumbnailOffsetDescription(); - case CasioType2Directory.TAG_CASIO_TYPE2_QUALITY_MODE: - return this.GetQualityModeDescription(); - case CasioType2Directory.TAG_CASIO_TYPE2_IMAGE_SIZE: - return this.GetImageSizeDescription(); - case CasioType2Directory.TAG_CASIO_TYPE2_FOCUS_MODE_1: - return this.GetFocusMode1Description(); - case CasioType2Directory.TAG_CASIO_TYPE2_ISO_SENSITIVITY: - return this.GetIsoSensitivityDescription(); - case CasioType2Directory.TAG_CASIO_TYPE2_WHITE_BALANCE_1: - return this.GetWhiteBalance1Description(); - case CasioType2Directory.TAG_CASIO_TYPE2_FOCAL_LENGTH: - return this.GetFocalLengthDescription(); - case CasioType2Directory.TAG_CASIO_TYPE2_SATURATION: - return this.GetSaturationDescription(); - case CasioType2Directory.TAG_CASIO_TYPE2_CONTRAST: - return this.GetContrastDescription(); - case CasioType2Directory.TAG_CASIO_TYPE2_SHARPNESS: - return this.GetSharpnessDescription(); - case CasioType2Directory.TAG_CASIO_TYPE2_PRINT_IMAGE_MATCHING_INFO: - return this.GetPrintImageMatchingInfoDescription(); - case CasioType2Directory.TAG_CASIO_TYPE2_CASIO_PREVIEW_THUMBNAIL: - return this.GetCasioPreviewThumbnailDescription(); - case CasioType2Directory.TAG_CASIO_TYPE2_WHITE_BALANCE_BIAS: - return this.GetWhiteBalanceBiasDescription(); - case CasioType2Directory.TAG_CASIO_TYPE2_WHITE_BALANCE_2: - return this.GetWhiteBalance2Description(); - case CasioType2Directory.TAG_CASIO_TYPE2_OBJECT_DISTANCE: - return this.GetObjectDistanceDescription(); - case CasioType2Directory.TAG_CASIO_TYPE2_FLASH_DISTANCE: - return this.GetFlashDistanceDescription(); - case CasioType2Directory.TAG_CASIO_TYPE2_RECORD_MODE: - return this.GetRecordModeDescription(); - case CasioType2Directory.TAG_CASIO_TYPE2_SELF_TIMER: - return this.GetSelfTimerDescription(); - case CasioType2Directory.TAG_CASIO_TYPE2_QUALITY: - return this.GetQualityDescription(); - case CasioType2Directory.TAG_CASIO_TYPE2_FOCUS_MODE_2: - return this.GetFocusMode2Description(); - case CasioType2Directory.TAG_CASIO_TYPE2_TIME_ZONE: - return this.GetTimeZoneDescription(); - case CasioType2Directory.TAG_CASIO_TYPE2_BESTSHOT_MODE: - return this.GetBestShotModeDescription(); - case CasioType2Directory.TAG_CASIO_TYPE2_CCD_ISO_SENSITIVITY: - return this.GetCcdIsoSensitivityDescription(); - case CasioType2Directory.TAG_CASIO_TYPE2_COLOR_MODE: - return this.GetColorModeDescription(); - case CasioType2Directory.TAG_CASIO_TYPE2_ENHANCEMENT: - return this.GetEnhancementDescription(); - case CasioType2Directory.TAG_CASIO_TYPE2_FILTER: - return this.GetFilterDescription(); - default: - return base.directory.GetString(aTagType); - } - } - - /// - /// Returns filter Description. - /// - /// the filter Description. - private string GetFilterDescription() - { - if (!base.directory.ContainsTag(CasioType2Directory.TAG_CASIO_TYPE2_FILTER)) - { - return null; - } - int lcVal = base.directory.GetInt(CasioType2Directory.TAG_CASIO_TYPE2_FILTER); - switch (lcVal) - { - case 0: - return BUNDLE["OFF"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns enhancement Description. - /// - /// the enhancement Description. - private string GetEnhancementDescription() - { - if (!base.directory.ContainsTag(CasioType2Directory.TAG_CASIO_TYPE2_ENHANCEMENT)) - { - return null; - } - int lcVal = base.directory.GetInt(CasioType2Directory.TAG_CASIO_TYPE2_ENHANCEMENT); - switch (lcVal) - { - case 0: - return BUNDLE["OFF"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns color mode Description. - /// - /// the color mode Description. - private string GetColorModeDescription() - { - if (!base.directory.ContainsTag(CasioType2Directory.TAG_CASIO_TYPE2_COLOR_MODE)) - { - return null; - } - int lcVal = base.directory.GetInt(CasioType2Directory.TAG_CASIO_TYPE2_COLOR_MODE); - switch (lcVal) - { - case 0: - return BUNDLE["OFF"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns CCD ISO sensitivity Description. - /// - /// the CCD ISO sensitivity Description. - private string GetCcdIsoSensitivityDescription() - { - if (!base.directory.ContainsTag(CasioType2Directory.TAG_CASIO_TYPE2_CCD_ISO_SENSITIVITY)) - { - return null; - } - int lcVal = base.directory.GetInt(CasioType2Directory.TAG_CASIO_TYPE2_CCD_ISO_SENSITIVITY); - switch (lcVal) - { - case 0: - return BUNDLE["OFF"]; - case 1: - return BUNDLE["ON"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns best shot mode Description. - /// - /// the best shot mode Description. - private string GetBestShotModeDescription() - { - if (!base.directory.ContainsTag(CasioType2Directory.TAG_CASIO_TYPE2_BESTSHOT_MODE)) - { - return null; - } - int lcVal = base.directory.GetInt(CasioType2Directory.TAG_CASIO_TYPE2_BESTSHOT_MODE); - switch (lcVal) - { - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns time zone Description. - /// - /// the time zone Description. - private string GetTimeZoneDescription() - { - if (!base.directory.ContainsTag(CasioType2Directory.TAG_CASIO_TYPE2_TIME_ZONE)) - { - return null; - } - return base.directory.GetString(CasioType2Directory.TAG_CASIO_TYPE2_TIME_ZONE); - } - - /// - /// Returns focus mode 2 Description. - /// - /// the focus mode 2 Description. - private string GetFocusMode2Description() - { - if (!base.directory.ContainsTag(CasioType2Directory.TAG_CASIO_TYPE2_FOCUS_MODE_2)) - { - return null; - } - int lcVal = base.directory.GetInt(CasioType2Directory.TAG_CASIO_TYPE2_FOCUS_MODE_2); - switch (lcVal) - { - case 1: - return BUNDLE["FIXATION"]; - case 6: - return BUNDLE["MULTI_AREA_FOCUS"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns quality description Description. - /// - /// the quality description Description. - private string GetQualityDescription() - { - if (!base.directory.ContainsTag(CasioType2Directory.TAG_CASIO_TYPE2_QUALITY)) - { - return null; - } - int lcVal = base.directory.GetInt(CasioType2Directory.TAG_CASIO_TYPE2_QUALITY); - switch (lcVal) - { - case 3: - return BUNDLE["FINE"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns self timer Description. - /// - /// the self timer Description. - private string GetSelfTimerDescription() - { - if (!base.directory.ContainsTag(CasioType2Directory.TAG_CASIO_TYPE2_SELF_TIMER)) - { - return null; - } - int lcVal = base.directory.GetInt(CasioType2Directory.TAG_CASIO_TYPE2_SELF_TIMER); - switch (lcVal) - { - case 1: - return BUNDLE["OFF"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns record mode Description. - /// - /// the record mode Description. - private string GetRecordModeDescription() - { - if (!base.directory.ContainsTag(CasioType2Directory.TAG_CASIO_TYPE2_RECORD_MODE)) - { - return null; - } - int lcVal = base.directory.GetInt(CasioType2Directory.TAG_CASIO_TYPE2_RECORD_MODE); - switch (lcVal) - { - case 2: - return BUNDLE["NORMAL"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns flash distance Description. - /// - /// the flash distance Description. - private string GetFlashDistanceDescription() - { - if (!base.directory.ContainsTag(CasioType2Directory.TAG_CASIO_TYPE2_FLASH_DISTANCE)) - { - return null; - } - int lcVal = base.directory.GetInt(CasioType2Directory.TAG_CASIO_TYPE2_FLASH_DISTANCE); - switch (lcVal) - { - case 0: - return BUNDLE["OFF"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns object distance Description. - /// - /// the object distance Description. - private string GetObjectDistanceDescription() - { - if (!base.directory.ContainsTag(CasioType2Directory.TAG_CASIO_TYPE2_OBJECT_DISTANCE)) - { - return null; - } - int lcVal = base.directory.GetInt(CasioType2Directory.TAG_CASIO_TYPE2_OBJECT_DISTANCE); - return BUNDLE["DISTANCE_MM", lcVal.ToString()]; - } - - /// - /// Returns white balance 2 Description. - /// - /// the white balance 2 Description. - private string GetWhiteBalance2Description() - { - if (!base.directory.ContainsTag(CasioType2Directory.TAG_CASIO_TYPE2_WHITE_BALANCE_2)) - { - return null; - } - int lcVal = base.directory.GetInt(CasioType2Directory.TAG_CASIO_TYPE2_WHITE_BALANCE_2); - switch (lcVal) - { - case 0: - return BUNDLE["MANUAL"]; - case 1: - return BUNDLE["AUTO"]; // unsure about this - case 4: - return BUNDLE["FLASH"]; // unsure about this - case 12: - return BUNDLE["FLASH"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns white balance bias Description. - /// - /// the white balance bias Description. - private string GetWhiteBalanceBiasDescription() - { - if (!base.directory.ContainsTag(CasioType2Directory.TAG_CASIO_TYPE2_WHITE_BALANCE_BIAS)) - { - return null; - } - return base.directory.GetString(CasioType2Directory.TAG_CASIO_TYPE2_WHITE_BALANCE_BIAS); - } - - /// - /// Returns casio preview thumbnail Description. - /// - /// the casio preview thumbnail Description. - private string GetCasioPreviewThumbnailDescription() - { - if (!base.directory.ContainsTag(CasioType2Directory.TAG_CASIO_TYPE2_CASIO_PREVIEW_THUMBNAIL)) - { - return null; - } - byte[] lcBytes = base.directory.GetByteArray(CasioType2Directory.TAG_CASIO_TYPE2_CASIO_PREVIEW_THUMBNAIL); - return BUNDLE["BYTES_OF_IMAGE_DATA", lcBytes.Length.ToString()]; - } - - /// - /// Returns Print Image Matching Info Description. - /// - /// the Print Image Matching Info Description. - private string GetPrintImageMatchingInfoDescription() - { - // TODO research PIM specification http://www.ozhiker.com/electronics/pjmt/jpeg_info/pim.html - if (!base.directory.ContainsTag(CasioType2Directory.TAG_CASIO_TYPE2_PRINT_IMAGE_MATCHING_INFO)) - { - return null; - } - return base.directory.GetString(CasioType2Directory.TAG_CASIO_TYPE2_PRINT_IMAGE_MATCHING_INFO); - } - - /// - /// Returns sharpness description Description. - /// - /// the sharpness description Description. - private string GetSharpnessDescription() - { - if (!base.directory.ContainsTag(CasioType2Directory.TAG_CASIO_TYPE2_SHARPNESS)) - { - return null; - } - int lcVal = base.directory.GetInt(CasioType2Directory.TAG_CASIO_TYPE2_SHARPNESS); - switch (lcVal) - { - case 0: - return "-1"; - case 1: - return BUNDLE["NORMAL"]; - case 2: - return "+1"; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns contrast Description. - /// - /// the contrast Description. - private string GetContrastDescription() - { - if (!base.directory.ContainsTag(CasioType2Directory.TAG_CASIO_TYPE2_CONTRAST)) - { - return null; - } - int lcVal = base.directory.GetInt(CasioType2Directory.TAG_CASIO_TYPE2_CONTRAST); - switch (lcVal) - { - case 0: - return "-1"; - case 1: - return BUNDLE["NORMAL"]; - case 2: - return "+1"; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns saturation Description. - /// - /// the saturation Description. - private string GetSaturationDescription() - { - if (!base.directory.ContainsTag(CasioType2Directory.TAG_CASIO_TYPE2_SATURATION)) - { - return null; - } - int lcVal = base.directory.GetInt(CasioType2Directory.TAG_CASIO_TYPE2_SATURATION); - switch (lcVal) - { - case 0: - return "-1"; - case 1: - return BUNDLE["NORMAL"]; - case 2: - return "+1"; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns focal length Description. - /// - /// the focal length Description. - private string GetFocalLengthDescription() - { - if (!base.directory.ContainsTag(CasioType2Directory.TAG_CASIO_TYPE2_FOCAL_LENGTH)) return null; - double lcVal = base.directory.GetDouble(CasioType2Directory.TAG_CASIO_TYPE2_FOCAL_LENGTH); - return BUNDLE["DISTANCE_MM", (lcVal / 10.0).ToString()]; - } - - /// - /// Returns white balance 1 Description. - /// - /// the white balance 1 Description. - private string GetWhiteBalance1Description() - { - if (!base.directory.ContainsTag(CasioType2Directory.TAG_CASIO_TYPE2_WHITE_BALANCE_1)) - { - return null; - } - int lcVal = base.directory.GetInt(CasioType2Directory.TAG_CASIO_TYPE2_WHITE_BALANCE_1); - switch (lcVal) - { - case 0: - return BUNDLE["AUTO"]; - case 1: - return BUNDLE["DAYLIGHT"]; - case 2: - return BUNDLE["SHADE"]; - case 3: - return BUNDLE["TUNGSTEN"]; - case 4: - return BUNDLE["FLUORESCENT"]; - case 5: - return BUNDLE["MANUAL"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns ISO sensitivity Description. - /// - /// the ISO sensitivity Description. - private string GetIsoSensitivityDescription() - { - if (!base.directory.ContainsTag(CasioType2Directory.TAG_CASIO_TYPE2_ISO_SENSITIVITY)) - { - return null; - } - int lcVal = base.directory.GetInt(CasioType2Directory.TAG_CASIO_TYPE2_ISO_SENSITIVITY); - switch (lcVal) - { - case 3: - return BUNDLE["ISO", "50"]; - case 4: - return BUNDLE["ISO","64"]; - case 6: - return BUNDLE["ISO","100"]; - case 9: - return BUNDLE["ISO","200"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns focus mode 1 Description. - /// - /// the focus mode 1 Description. - private string GetFocusMode1Description() - { - if (!base.directory.ContainsTag(CasioType2Directory.TAG_CASIO_TYPE2_FOCUS_MODE_1)) - { - return null; - } - int lcVal = base.directory.GetInt(CasioType2Directory.TAG_CASIO_TYPE2_FOCUS_MODE_1); - switch (lcVal) - { - case 0: - return BUNDLE["NORMAL"]; - case 1: - return BUNDLE["MACRO"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns image size Description. - /// - /// the image size Description. - private string GetImageSizeDescription() - { - if (!base.directory.ContainsTag(CasioType2Directory.TAG_CASIO_TYPE2_IMAGE_SIZE)) - { - return null; - } - int lcVal = base.directory.GetInt(CasioType2Directory.TAG_CASIO_TYPE2_IMAGE_SIZE); - switch (lcVal) - { - case 0: return BUNDLE["PIXELS", "640 x 480"]; - case 4: return BUNDLE["PIXELS", "1600 x 1200"]; - case 5: return BUNDLE["PIXELS", "2048 x 1536"]; - case 20: return BUNDLE["PIXELS", "2288 x 1712"]; - case 21: return BUNDLE["PIXELS", "2592 x 1944"]; - case 22: return BUNDLE["PIXELS", "2304 x 1728"]; - case 36: return BUNDLE["PIXELS", "3008 x 2008"]; - default: return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns quality mode Description. - /// - /// the quality mode Description. - private string GetQualityModeDescription() - { - if (!base.directory.ContainsTag(CasioType2Directory.TAG_CASIO_TYPE2_QUALITY_MODE)) - { - return null; - } - int lcVal = base.directory.GetInt(CasioType2Directory.TAG_CASIO_TYPE2_QUALITY_MODE); - switch (lcVal) - { - case 1: - return BUNDLE["FINE"]; - case 2: - return BUNDLE["SUPERFINE"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns thumbnail lcOffset Description. - /// - /// the thumbnail lcOffset Description. - private string GetThumbnailOffsetDescription() - { - if (!base.directory.ContainsTag(CasioType2Directory.TAG_CASIO_TYPE2_THUMBNAIL_OFFSET)) - { - return null; - } - return base.directory.GetString(CasioType2Directory.TAG_CASIO_TYPE2_THUMBNAIL_OFFSET); - } - - /// - /// Returns thumbnail size Description. - /// - /// the thumbnail size Description. - private string GetThumbnailSizeDescription() - { - if (!base.directory.ContainsTag(CasioType2Directory.TAG_CASIO_TYPE2_THUMBNAIL_SIZE)) - { - return null; - } - int lcVal = base.directory.GetInt(CasioType2Directory.TAG_CASIO_TYPE2_THUMBNAIL_SIZE); - return BUNDLE["BYTES", lcVal.ToString()]; - } - - /// - /// Returns thumbnail dimension Description. - /// - /// the thumbnail dimension Description. - private string GetThumbnailDimensionsDescription() - { - if (!base.directory.ContainsTag(CasioType2Directory.TAG_CASIO_TYPE2_THUMBNAIL_DIMENSIONS)) - { - return null; - } - int[] lcDimensions = base.directory.GetIntArray(CasioType2Directory.TAG_CASIO_TYPE2_THUMBNAIL_DIMENSIONS); - if (lcDimensions.Length != 2) - { - return base.directory.GetString(CasioType2Directory.TAG_CASIO_TYPE2_THUMBNAIL_DIMENSIONS); - } - return BUNDLE["PIXELS_BI", lcDimensions[0].ToString(), lcDimensions[1].ToString()]; - } - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/CasioType2Directory.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/CasioType2Directory.cs deleted file mode 100644 index 81bc28b..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/CasioType2Directory.cs +++ /dev/null @@ -1,175 +0,0 @@ -namespace com.drew.metadata.exif -{ - /// - /// This class represents CASIO marker note type 2. - /// - - public class CasioType2Directory : AbstractCasioTypeDirectory - { - /// - /// 2 values - x,y dimensions in pixels. - /// - public const int TAG_CASIO_TYPE2_THUMBNAIL_DIMENSIONS = 0x0002; - - /// - /// Size in bytes - /// - public const int TAG_CASIO_TYPE2_THUMBNAIL_SIZE = 0x0003; - - /// - /// Offset of Preview Thumbnail - /// - public const int TAG_CASIO_TYPE2_THUMBNAIL_OFFSET = 0x0004; - - /// - /// 1 = Fine - /// 2 = Super Fine - /// - public const int TAG_CASIO_TYPE2_QUALITY_MODE = 0x0008; - - /// - /// 0 = 640 x 480 pixels - /// 4 = 1600 x 1200 pixels - /// 5 = 2048 x 1536 pixels - /// 20 = 2288 x 1712 pixels - /// 21 = 2592 x 1944 pixels - /// 22 = 2304 x 1728 pixels - /// 36 = 3008 x 2008 pixels - /// - public const int TAG_CASIO_TYPE2_IMAGE_SIZE = 0x0009; - - /// - /// 0 = Normal - /// 1 = Macro - /// - public const int TAG_CASIO_TYPE2_FOCUS_MODE_1 = 0x000D; - - /// - /// 3 = 50 - /// 4 = 64 - /// 6 = 100 - /// 9 = 200 - /// - public const int TAG_CASIO_TYPE2_ISO_SENSITIVITY = 0x0014; - - /// - /// 0 = Auto - /// 1 = Daylight - /// 2 = Shade - /// 3 = Tungsten - /// 4 = Fluorescent - /// 5 = Manual - /// - public const int TAG_CASIO_TYPE2_WHITE_BALANCE_1 = 0x0019; - - /// - /// Units are tenths of a millimetre - /// - public const int TAG_CASIO_TYPE2_FOCAL_LENGTH = 0x001D; - - /// - /// 0 = -1 - /// 1 = Normal - /// 2 = +1 - /// - public const int TAG_CASIO_TYPE2_SATURATION = 0x001F; - - /// - /// 0 = -1 - /// 1 = Normal - /// 2 = +1 - /// - public const int TAG_CASIO_TYPE2_CONTRAST = 0x0020; - - /// - /// 0 = -1 - /// 1 = Normal - /// 2 = +1 - /// - public const int TAG_CASIO_TYPE2_SHARPNESS = 0x0021; - - /// - /// See PIM specification here: http://www.ozhiker.com/electronics/pjmt/jpeg_info/pim.html - /// - public const int TAG_CASIO_TYPE2_PRINT_IMAGE_MATCHING_INFO = 0x0E00; - - /// - /// Alternate thumbnail lcOffset - /// - public const int TAG_CASIO_TYPE2_CASIO_PREVIEW_THUMBNAIL = 0x2000; - - public const int TAG_CASIO_TYPE2_WHITE_BALANCE_BIAS = 0x2011; - - /// - /// 12 = Flash - /// 0 = Manual - /// 1 = Auto? - /// 4 = Flash? - /// - public const int TAG_CASIO_TYPE2_WHITE_BALANCE_2 = 0x2012; - - /// - /// Units are millimetres - /// - public const int TAG_CASIO_TYPE2_OBJECT_DISTANCE = 0x2022; - - /// - /// 0 = Off - /// - public const int TAG_CASIO_TYPE2_FLASH_DISTANCE = 0x2034; - - /// - /// 2 = Normal Mode - /// - public const int TAG_CASIO_TYPE2_RECORD_MODE = 0x3000; - - /// - /// 1 = Off? - /// - public const int TAG_CASIO_TYPE2_SELF_TIMER = 0x3001; - - /// - /// 3 = Fine - /// - public const int TAG_CASIO_TYPE2_QUALITY = 0x3002; - - /// - /// 1 = Fixation - /// 6 = Multi-Area Auto Focus - /// - public const int TAG_CASIO_TYPE2_FOCUS_MODE_2 = 0x3003; - - public const int TAG_CASIO_TYPE2_TIME_ZONE = 0x3006; - public const int TAG_CASIO_TYPE2_BESTSHOT_MODE = 0x3007; - - /// - /// 0 = Off - /// 1 = On? - /// - public const int TAG_CASIO_TYPE2_CCD_ISO_SENSITIVITY = 0x3014; - - /// - /// 0 = Off - /// - public const int TAG_CASIO_TYPE2_COLOR_MODE = 0x3015; - - /// - /// 0 = Off - /// - public const int TAG_CASIO_TYPE2_ENHANCEMENT = 0x3016; - - /// - /// 0 = Off - /// - public const int TAG_CASIO_TYPE2_FILTER = 0x3017; - - /// - /// Constructor of the object. - /// - public CasioType2Directory() - : base("CasioMarkernote") - { - base.SetDescriptor(new CasioType2Descriptor(this)); - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/ExifDescriptor.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/ExifDescriptor.cs deleted file mode 100644 index 2858c85..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/ExifDescriptor.cs +++ /dev/null @@ -1,1572 +0,0 @@ -using System; -using System.Text; -using com.drew.lang; -using com.utils; - -namespace com.drew.metadata.exif -{ - /// - /// Tag descriptor for almost every images - /// - - public class ExifDescriptor : AbstractTagDescriptor - { - /// - /// Dictates whether rational values will be represented in decimal format in instances - /// where decimal notation is elegant (such as 1/2 -> 0.5, but not 1/3). - /// - private readonly bool allowDecimalRepresentationOfRationals = true; - - /// - /// Constructor of the object - /// - /// a directory - public ExifDescriptor(AbstractDirectory directory) : base(directory) - { - } - - /// - /// Returns a descriptive value of the the specified tag for this image. - /// Where possible, known values will be substituted here in place of the raw tokens actually - /// kept in the Exif segment. - /// If no substitution is available, the value provided by GetString(int) will be returned. - /// This and GetString(int) are the only 'get' methods that won't throw an exception. - /// - /// the tag to find a description for - /// a description of the image'str value for the specified tag, or null if the tag hasn't been defined. - public override string GetDescription(int aTagType) - { - switch(aTagType) - { - case ExifDirectory.TAG_ORIENTATION: - return GetOrientationDescription(); - case ExifDirectory.TAG_RESOLUTION_UNIT: - return GetResolutionDescription(); - case ExifDirectory.TAG_YCBCR_POSITIONING: - return GetYCbCrPositioningDescription(); - case ExifDirectory.TAG_EXPOSURE_TIME: - return GetExposureTimeDescription(); - case ExifDirectory.TAG_SHUTTER_SPEED: - return GetShutterSpeedDescription(); - case ExifDirectory.TAG_FNUMBER: - return GetFNumberDescription(); - case ExifDirectory.TAG_X_RESOLUTION: - return GetXResolutionDescription(); - case ExifDirectory.TAG_Y_RESOLUTION: - return GetYResolutionDescription(); - case ExifDirectory.TAG_THUMBNAIL_OFFSET: - return GetThumbnailOffSetDescription(); - case ExifDirectory.TAG_THUMBNAIL_LENGTH: - return GetThumbnailLengthDescription(); - case ExifDirectory.TAG_COMPRESSION_LEVEL: - return GetCompressionLevelDescription(); - case ExifDirectory.TAG_SUBJECT_DISTANCE: - return GetSubjectDistanceDescription(); - case ExifDirectory.TAG_METERING_MODE: - return GetMeteringModeDescription(); - case ExifDirectory.TAG_FLASH: - return GetFlashDescription(); - case ExifDirectory.TAG_FOCAL_LENGTH: - return GetFocalLengthDescription(); - case ExifDirectory.TAG_COLOR_SPACE: - return GetColorSpaceDescription(); - case ExifDirectory.TAG_EXIF_IMAGE_WIDTH: - return GetExifImageWidthDescription(); - case ExifDirectory.TAG_EXIF_IMAGE_HEIGHT: - return GetExifImageHeightDescription(); - case ExifDirectory.TAG_FOCAL_PLANE_UNIT: - return GetFocalPlaneResolutionUnitDescription(); - case ExifDirectory.TAG_FOCAL_PLANE_X_RES: - return GetFocalPlaneXResolutionDescription(); - case ExifDirectory.TAG_FOCAL_PLANE_Y_RES: - return GetFocalPlaneYResolutionDescription(); - case ExifDirectory.TAG_THUMBNAIL_IMAGE_WIDTH: - return GetThumbnailImageWidthDescription(); - case ExifDirectory.TAG_THUMBNAIL_IMAGE_HEIGHT: - return GetThumbnailImageHeightDescription(); - case ExifDirectory.TAG_BITS_PER_SAMPLE: - return GetBitsPerSampleDescription(); - case ExifDirectory.TAG_COMPRESSION: - return GetCompressionDescription(); - case ExifDirectory.TAG_PHOTOMETRIC_INTERPRETATION: - return GetPhotometricInterpretationDescription(); - case ExifDirectory.TAG_ROWS_PER_STRIP: - return GetRowsPerStripDescription(); - case ExifDirectory.TAG_STRIP_BYTE_COUNTS: - return GetStripByteCountsDescription(); - case ExifDirectory.TAG_SAMPLES_PER_PIXEL: - return GetSamplesPerPixelDescription(); - case ExifDirectory.TAG_PLANAR_CONFIGURATION: - return GetPlanarConfigurationDescription(); - case ExifDirectory.TAG_YCBCR_SUBSAMPLING: - return GetYCbCrSubsamplingDescription(); - case ExifDirectory.TAG_EXPOSURE_PROGRAM: - return GetExposureProgramDescription(); - case ExifDirectory.TAG_APERTURE: - return GetApertureValueDescription(); - case ExifDirectory.TAG_MAX_APERTURE: - return GetMaxApertureValueDescription(); - case ExifDirectory.TAG_SENSING_METHOD: - return GetSensingMethodDescription(); - case ExifDirectory.TAG_EXPOSURE_BIAS: - return GetExposureBiasDescription(); - case ExifDirectory.TAG_FILE_SOURCE: - return GetFileSourceDescription(); - case ExifDirectory.TAG_SCENE_TYPE: - return GetSceneTypeDescription(); - case ExifDirectory.TAG_COMPONENTS_CONFIGURATION: - return GetComponentConfigurationDescription(); - case ExifDirectory.TAG_EXIF_VERSION: - return GetExifVersionDescription(); - case ExifDirectory.TAG_FLASHPIX_VERSION: - return GetFlashPixVersionDescription(); - case ExifDirectory.TAG_REFERENCE_BLACK_WHITE: - return GetReferenceBlackWhiteDescription(); - case ExifDirectory.TAG_ISO_EQUIVALENT: - return GetIsoEquivalentDescription(); - case ExifDirectory.TAG_THUMBNAIL_DATA: - return GetThumbnailDescription(); - case ExifDirectory.TAG_XP_AUTHOR: - return GetXPAuthorDescription(); - case ExifDirectory.TAG_XP_COMMENTS: - return GetXPCommentsDescription(); - case ExifDirectory.TAG_XP_KEYWORDS: - return GetXPKeywordsDescription(); - case ExifDirectory.TAG_XP_SUBJECT: - return GetXPSubjectDescription(); - case ExifDirectory.TAG_XP_TITLE: - return GetXPTitleDescription(); - case ExifDirectory.TAG_SUBFILE_TYPE: - return GetNewSubfileTypeDescription(); - case ExifDirectory.TAG_NEW_SUBFILE_TYPE : - return GetNewSubfileTypeDescription(); - case ExifDirectory.TAG_THRESHOLDING : - return GetThresholdingDescription(); - case ExifDirectory.TAG_FILL_ORDER : - return GetFillOrderDescription(); - case ExifDirectory.TAG_SUBJECT_DISTANCE_RANGE : - return GetSubjectDistanceRangeDescription(); - case ExifDirectory.TAG_SHARPNESS : - return GetSharpnessDescription(); - case ExifDirectory.TAG_SATURATION : - return GetSaturationDescription(); - case ExifDirectory.TAG_CONTRAST: - return GetContrastDescription(); - case ExifDirectory.TAG_GAIN_CONTROL: - return GetGainControlDescription(); - case ExifDirectory.TAG_SCENE_CAPTURE_TYPE: - return GetSceneCaptureTypeDescription(); - case ExifDirectory.TAG_FOCAL_LENGTH_IN_35MM_FILM: - return Get35mmFilmEquivFocalLengthDescription(); - case ExifDirectory.TAG_DIGITAL_ZOOM_RATIO: - return GetDigitalZoomRatioDescription(); - case ExifDirectory.TAG_WHITE_BALANCE_MODE : - return GetWhiteBalanceModeDescription(); - case ExifDirectory.TAG_EXPOSURE_MODE: - return GetExposureModeDescription(); - - default : - return base.directory.GetString(aTagType); - } - } - - /// - /// Gets the custom rendered description. - /// - /// The custom rendered description - private string GetCustomRenderedDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_CUSTOM_RENDERED)) - { - return null; - } - int lcVal = base.directory.GetInt(ExifDirectory.TAG_CUSTOM_RENDERED); - switch (lcVal) - { - case 0: - return BUNDLE["NORMAL_PROCESS"]; - case 1: - return BUNDLE["CUSTOM_PROCESS"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Gets the exposure mode description. - /// - /// The exposure mode description - private string GetExposureModeDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_EXPOSURE_MODE)) - { - return null; - } - int lcVal = base.directory.GetInt(ExifDirectory.TAG_EXPOSURE_MODE); - switch (lcVal) - { - case 0: - return BUNDLE["AUTO_EXPOSURE"]; - case 1: - return BUNDLE["MANUAL_EXPOSURE"]; - case 2: - return BUNDLE["AUTO_BRACKET"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - - /// - /// Gets the white balance mode description. - /// - /// The white balance mode description - private string GetWhiteBalanceModeDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_WHITE_BALANCE_MODE)) - { - return null; - } - int lcVal = base.directory.GetInt(ExifDirectory.TAG_WHITE_BALANCE_MODE); - switch (lcVal) - { - case 0: - return BUNDLE["AUTO_WHITE_BALANCE"]; - case 1: - return BUNDLE["MANUAL_WHITE_BALANCE"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - - /// - /// Gets the digital zoom ratio description. - /// - /// The digital zoom ratio description - private string GetDigitalZoomRatioDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_DIGITAL_ZOOM_RATIO)) - { - return null; - } - Rational lcRational = base.directory.GetRational(ExifDirectory.TAG_DIGITAL_ZOOM_RATIO); - if (lcRational.GetNumerator() == 0) - { - return BUNDLE["DIGITAL_ZOOM_NOT_USED"]; - } - - return (lcRational.DoubleValue()).ToString(); - } - - /// - /// Gets the 35mm film equivalent focal length description. - /// - /// The 35mm film equivalent focal length description - private string Get35mmFilmEquivFocalLengthDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_FOCAL_LENGTH_IN_35MM_FILM)) - { - return null; - } - int lcEquivalentFocalLength = base.directory.GetInt(ExifDirectory.TAG_FOCAL_LENGTH_IN_35MM_FILM); - - if (lcEquivalentFocalLength == 0) - { - return BUNDLE["UNKNOWN", lcEquivalentFocalLength.ToString()]; - } - return BUNDLE["DISTANCE_MM", lcEquivalentFocalLength.ToString()]; - } - - /// - /// Gets the scene capture type description. - /// - /// The scene capture type description - private string GetSceneCaptureTypeDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_SCENE_CAPTURE_TYPE)) - { - return null; - } - int lcVal = base.directory.GetInt(ExifDirectory.TAG_SCENE_CAPTURE_TYPE); - switch (lcVal) - { - case 0: - return BUNDLE["STANDARD"]; - case 1: - return BUNDLE["LANDSCAPE"]; - case 2: - return BUNDLE["PORTRAIT"]; - case 3: - return BUNDLE["NIGHT_SCENE"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Gets the gain control description. - /// - /// The gain control description - private string GetGainControlDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_GAIN_CONTROL)) - { - return null; - } - int lcVal = base.directory.GetInt(ExifDirectory.TAG_GAIN_CONTROL); - switch (lcVal) - { - case 0: - return BUNDLE["NONE"]; - case 1: - return BUNDLE["LOW_GAIN_UP"]; - case 2: - return BUNDLE["LOW_GAIN_DOWN"]; - case 3: - return BUNDLE["HIGH_GAIN_UP"]; - case 4: - return BUNDLE["HIGH_GAIN_DOWN"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - - /// - /// Gets the contrast description. - /// - /// The constrast description - private string GetContrastDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_CONTRAST)) - { - return null; - } - int lcVal = base.directory.GetInt(ExifDirectory.TAG_CONTRAST); - switch (lcVal) - { - case 0: - return BUNDLE["NONE"]; - case 1: - return BUNDLE["SOFT"]; - case 2: - return BUNDLE["HARD"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Gets the subfile type description. - /// - /// The subfile type description - private string getSubfileTypeDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_SUBFILE_TYPE)) - { - return null; - } - int lcVal = base.directory.GetInt(ExifDirectory.TAG_SUBFILE_TYPE); - switch (lcVal) - { - case 1: return BUNDLE["FULL_RESOLUTION_IMAGE"]; - case 2: return BUNDLE["REDUCED_RESOLUTION_IMAGE"]; - case 3: return BUNDLE["SINGLE_PAGE_OF_MULTI_PAGE_IMAGE"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Gets the new subfile type description. - /// - /// The new subfile type description - private string GetNewSubfileTypeDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_NEW_SUBFILE_TYPE)) - { - return null; - } - int lcVal = base.directory.GetInt(ExifDirectory.TAG_NEW_SUBFILE_TYPE); - switch (lcVal) - { - case 1: return BUNDLE["FULL_RESOLUTION_IMAGE"]; - case 2: return BUNDLE["REDUCED_RESOLUTION_IMAGE"]; - case 3: return BUNDLE["SINGLE_PAGE_OF_MULTI_PAGE_REDUCED_RESOLUTION_IMAGE"]; - case 4: return BUNDLE["TRANSPARENCY_MASK"]; - case 5: return BUNDLE["TRANSPARENCY_MASK_OF_REDUCED_RESOLUTION_IMAGE"]; - case 6: return BUNDLE["TRANSPARENCY_MASK_OF_MULTI_PAGE_IMAGE"]; - case 7: return BUNDLE["TRANSPARENCY_MASK_OF_REDUCED_RESOLUTION_MULTI_PAGE_IMAGE"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Gets the new thresholding description. - /// - /// The thresholding description - private string GetThresholdingDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_THRESHOLDING)) - { - return null; - } - int lcVal = base.directory.GetInt(ExifDirectory.TAG_THRESHOLDING); - switch (lcVal) - { - case 1: return BUNDLE["NO_DITHERING_OR_HALFTONING"]; - case 2: return BUNDLE["ORDERED_DITHER_OR_HALFTONE"]; - case 3: return BUNDLE["RANDOMIZED_DITHER"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Gets the fill order description. - /// - /// The fill order description - private string GetFillOrderDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_FILL_ORDER)) - { - return null; - } - int lcVal = base.directory.GetInt(ExifDirectory.TAG_FILL_ORDER); - switch (lcVal) - { - case 1: return BUNDLE["NORMAL"]; - case 2: return BUNDLE["REVERSED"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Gets the subject distance range description. - /// - /// The subject distance range description - private string GetSubjectDistanceRangeDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_SUBJECT_DISTANCE_RANGE)) - { - return null; - } - int lcVal = base.directory.GetInt(ExifDirectory.TAG_SUBJECT_DISTANCE_RANGE); - switch (lcVal) - { - case 1: - return BUNDLE["MACRO"]; - case 2: - return BUNDLE["CLOSE_VIEW"]; - case 3: - return BUNDLE["DISTANT_VIEW"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Gets the sharpness description. - /// - /// The sharpness description - private string GetSharpnessDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_SHARPNESS)) - { - return null; - } - int lcVal = base.directory.GetInt(ExifDirectory.TAG_SHARPNESS); - switch (lcVal) - { - case 0: - return BUNDLE["NONE"]; - case 1: - return BUNDLE["LOW"]; - case 2: - return BUNDLE["HARD"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Gets the saturation description. - /// - /// The saturation description - private string GetSaturationDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_SATURATION)) - { - return null; - } - int lcVal = base.directory.GetInt(ExifDirectory.TAG_SATURATION); - switch (lcVal) - { - case 0: - return BUNDLE["NONE"]; - case 1: - return BUNDLE["LOW_SATURATION"]; - case 2: - return BUNDLE["HIGH_SATURATION"]; - default: - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - - - /// - /// Returns the Thumbnail Description. - /// - /// the Thumbnail Description. - private string GetThumbnailDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_THUMBNAIL_DATA)) - { - return null; - } - int[] lcThumbnailBytes = - base.directory.GetIntArray(ExifDirectory.TAG_THUMBNAIL_DATA); - return BUNDLE["THUMBNAIL_BYTES", lcThumbnailBytes.Length.ToString()]; - } - - /// - /// Returns the Iso Equivalent Description. - /// - /// the Iso Equivalent Description. - private string GetIsoEquivalentDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_ISO_EQUIVALENT)) - { - return null; - } - int lcIsoEquiv = base.directory.GetInt(ExifDirectory.TAG_ISO_EQUIVALENT); - if (lcIsoEquiv < 50) - { - lcIsoEquiv *= 200; - } - return lcIsoEquiv.ToString(); - } - - /// - /// Returns the Reference Black White Description. - /// - /// the Reference Black White Description. - private string GetReferenceBlackWhiteDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_REFERENCE_BLACK_WHITE)) - { - return null; - } - int[] lcInts = - base.directory.GetIntArray(ExifDirectory.TAG_REFERENCE_BLACK_WHITE); - - string[] lcSPos = new string[] {lcInts[0].ToString(), lcInts[1].ToString(),lcInts[2].ToString(),lcInts[3].ToString(),lcInts[4].ToString(),lcInts[5].ToString()}; - return BUNDLE["POS",lcSPos]; - } - - /// - /// Returns the Exif Version Description. - /// - /// the Exif Version Description. - private string GetExifVersionDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_EXIF_VERSION)) - { - return null; - } - int[] lcInts = base.directory.GetIntArray(ExifDirectory.TAG_EXIF_VERSION); - return ExifDescriptor.ConvertBytesToVersionString(lcInts); - } - - /// - /// Returns the Flash Pix Version Description. - /// - /// the Flash Pix Version Description. - private string GetFlashPixVersionDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_FLASHPIX_VERSION)) - { - return null; - } - int[] lcInts = base.directory.GetIntArray(ExifDirectory.TAG_FLASHPIX_VERSION); - return ExifDescriptor.ConvertBytesToVersionString(lcInts); - } - - /// - /// Returns the Scene Type Description. - /// - /// the Scene Type Description. - private string GetSceneTypeDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_SCENE_TYPE)) - { - return null; - } - int lcSceneType = base.directory.GetInt(ExifDirectory.TAG_SCENE_TYPE); - if (lcSceneType == 1) - { - return BUNDLE["DIRECTLY_PHOTOGRAPHED_IMAGE"]; - } - return BUNDLE["UNKNOWN", lcSceneType.ToString()]; - } - - /// - /// Returns the File Source Description. - /// - /// the File Source Description. - private string GetFileSourceDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_FILE_SOURCE)) - { - return null; - } - int lcFileSource = base.directory.GetInt(ExifDirectory.TAG_FILE_SOURCE); - if (lcFileSource == 3) - { - return BUNDLE["DIGITAL_STILL_CAMERA"]; - } - return BUNDLE["UNKNOWN", lcFileSource.ToString()]; - } - - /// - /// Returns the Exposure Bias Description. - /// - /// the Exposure Bias Description. - private string GetExposureBiasDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_EXPOSURE_BIAS)) - { - return null; - } - Rational lcExposureBias = - base.directory.GetRational(ExifDirectory.TAG_EXPOSURE_BIAS); - return lcExposureBias.ToSimpleString(true); - } - - /// - /// Returns the Max Aperture Value Description. - /// - /// the Max Aperture Value Description. - private string GetMaxApertureValueDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_MAX_APERTURE)) - { - return null; - } - double lcApertureApex = - base.directory.GetDouble(ExifDirectory.TAG_MAX_APERTURE); - double lcRootTwo = Math.Sqrt(2); - double lcFStop = Math.Pow(lcRootTwo, lcApertureApex); - return BUNDLE["APERTURE", lcFStop.ToString("0.#")]; - } - - /// - /// Returns the Aperture Value Description. - /// - /// the Aperture Value Description. - private string GetApertureValueDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_APERTURE)) - { - return null; - } - double lcApertureApex = base.directory.GetDouble(ExifDirectory.TAG_APERTURE); - double lcRootTwo = Math.Sqrt(2); - double lcFStop = Math.Pow(lcRootTwo, lcApertureApex); - return BUNDLE["APERTURE", lcFStop.ToString("0.#")]; - } - - /// - /// Returns the Exposure Program Description. - /// - /// the Exposure Program Description. - private string GetExposureProgramDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_EXPOSURE_PROGRAM)) - { - return null; - } - int lcVal = base.directory.GetInt(ExifDirectory.TAG_EXPOSURE_PROGRAM); - switch (lcVal) - { - case 1 : - return BUNDLE["MANUAL_CONTROL"]; - case 2 : - return BUNDLE["PROGRAM_NORMAL"]; - case 3 : - return BUNDLE["APERTURE_PRIORITY"]; - case 4 : - return BUNDLE["SHUTTER_PRIORITY"]; - case 5 : - return BUNDLE["PROGRAM_CREATIVE"]; - case 6 : - return BUNDLE["PROGRAM_ACTION"]; - case 7 : - return BUNDLE["PORTRAIT_MODE"]; - case 8 : - return BUNDLE["LANDSCAPE_MODE"]; - default : - return BUNDLE["UNKNOWN_PROGRAM", lcVal.ToString()]; - } - } - - /// - /// Returns the YCbCr Subsampling Description. - /// - /// the YCbCr Subsampling Description. - private string GetYCbCrSubsamplingDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_YCBCR_SUBSAMPLING)) - { - return null; - } - int[] lcPositions = - base.directory.GetIntArray(ExifDirectory.TAG_YCBCR_SUBSAMPLING); - if (lcPositions[0] == 2 && lcPositions[1] == 1) - { - return BUNDLE["YCBCR_422"]; - } - else if (lcPositions[0] == 2 && lcPositions[1] == 2) - { - return BUNDLE["YCBCR_420"]; - } - return BUNDLE["UNKNOWN"]; - } - - /// - /// Returns the Planar Configuration Description. - /// - /// the Planar Configuration Description. - private string GetPlanarConfigurationDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_PLANAR_CONFIGURATION)) - { - return null; - } - // When image format is no compression YCbCr, this aValue shows byte aligns of YCbCr - // data. If aValue is '1', Y/Cb/Cr aValue is chunky format, contiguous for each subsampling - // pixel. If aValue is '2', Y/Cb/Cr aValue is separated and stored to Y plane/Cb plane/Cr - // plane format. - - switch (base.directory.GetInt(ExifDirectory.TAG_PLANAR_CONFIGURATION)) - { - case 1 : - return BUNDLE["CHUNKY"]; - case 2 : - return BUNDLE["SEPARATE"]; - default : - return BUNDLE["UNKNOWN_CONFIGURATION"]; - } - } - - /// - /// Returns the Samples Per Pixel Description. - /// - /// the Samples Per Pixel Description. - private string GetSamplesPerPixelDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_SAMPLES_PER_PIXEL)) - { - return null; - } - return BUNDLE["SAMPLES_PIXEL", base.directory.GetString(ExifDirectory.TAG_SAMPLES_PER_PIXEL)]; - } - - /// - /// Returns the Rows Per Strip Description. - /// - /// the Rows Per Strip Description. - private string GetRowsPerStripDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_ROWS_PER_STRIP)) - { - return null; - } - return BUNDLE["ROWS_STRIP", base.directory.GetString(ExifDirectory.TAG_ROWS_PER_STRIP)]; - } - - /// - /// Returns the Strip Byte Counts Description. - /// - /// the Strip Byte Counts Description. - private string GetStripByteCountsDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_STRIP_BYTE_COUNTS)) - { - return null; - } - return BUNDLE["BYTES", base.directory.GetString(ExifDirectory.TAG_STRIP_BYTE_COUNTS)]; - } - - /// - /// Returns the Photometric Interpretation Description. - /// - /// the Photometric Interpretation Description. - private string GetPhotometricInterpretationDescription() - { - if (!base.directory - .ContainsTag(ExifDirectory.TAG_PHOTOMETRIC_INTERPRETATION)) - { - return null; - } - // Shows the color space of the image data components. '1' means monochrome, - // '2' means RGB, '6' means YCbCr. - switch (base.directory - .GetInt(ExifDirectory.TAG_PHOTOMETRIC_INTERPRETATION)) - { - case 0: return BUNDLE["WHITE_IS_ZERO"]; - case 1: return BUNDLE["BLACK_IS_ZERO"]; - case 2: return BUNDLE["RGB"]; - case 3: return BUNDLE["RGB_PALETTE"]; - case 4: return BUNDLE["TRANSPARENCY_MASK"]; - case 5: return BUNDLE["CMYK"]; - case 6: return BUNDLE["YCBCR"]; - case 8: return BUNDLE["CIELAB"]; - case 9: return BUNDLE["ICCLAB"]; - case 10: return BUNDLE["ITULAB"]; - case 32803: return BUNDLE["COLOR_FILTER_ARRAY"]; - case 32844: return BUNDLE["PIXAR_LOGL"]; - case 32845: return BUNDLE["PIXAR_LOGLUV"]; - case 32892: return BUNDLE["LINEAR_RAW"]; - default: return BUNDLE["UNKNOWN_COLOR_SPACE"]; - } - } - - /// - /// Returns the Compression Description. - /// - /// the Compression Description. - private string GetCompressionDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_COMPRESSION)) - { - return null; - } - // '1' means no compression, '6' means JPEG compression. - switch (base.directory.GetInt(ExifDirectory.TAG_COMPRESSION)) - { - case 1: return BUNDLE["UNCOMPRESSED"]; - case 2: return BUNDLE["CCITT_1D"]; - case 3: return BUNDLE["T4_GROUP_3_FAC"]; - case 4: return BUNDLE["T6_GROUP_4_FAC"]; - case 5: return BUNDLE["LZW"]; - case 6: return BUNDLE["JPEG_OLD_STYLE"]; - case 7: return BUNDLE["JPEG"]; - case 8: return BUNDLE["ADOBE_DEFLATE"]; - case 9: return BUNDLE["JBIG_B_W"]; - case 10: return BUNDLE["JBIG_COLOR"]; - case 32766: return BUNDLE["NEXT"]; - case 32771: return BUNDLE["CCIRLEW"]; - case 32773: return BUNDLE["PACKBITS"]; - case 32809: return BUNDLE["THUNDERSCA"]; - case 32895: return BUNDLE["IT8CTPAD"]; - case 32896: return BUNDLE["IT8LW"]; - case 32897: return BUNDLE["IT8MP"]; - case 32898: return BUNDLE["IT8BL"]; - case 32908: return BUNDLE["PIXARFILM"]; - case 32909: return BUNDLE["PIXARLOG"]; - case 32946: return BUNDLE["DEFLATE"]; - case 32947: return BUNDLE["DCS"]; - case 32661: return BUNDLE["JBIG"]; - case 32676: return BUNDLE["SGILOG"]; - case 32677: return BUNDLE["SGILOG24"]; - case 32712: return BUNDLE["JPEG_2000"]; - case 32713: return BUNDLE["NIKON_NEF_COMPRESSED"]; - default: return BUNDLE["UNKNOWN_COMPRESSION"]; - } - } - - /// - /// Returns the Bits Per Sample Description. - /// - /// the Bits Per Sample Description. - private string GetBitsPerSampleDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_BITS_PER_SAMPLE)) - { - return null; - } - return BUNDLE["BITS_COMPONENT_PIXEL",base.directory.GetString(ExifDirectory.TAG_BITS_PER_SAMPLE)]; - } - - /// - /// Returns the Thumbnail Image Width Description. - /// - /// the Thumbnail Image Width Description. - private string GetThumbnailImageWidthDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_THUMBNAIL_IMAGE_WIDTH)) - { - return null; - } - return BUNDLE["PIXELS", base.directory.GetString(ExifDirectory.TAG_THUMBNAIL_IMAGE_WIDTH)]; - } - - /// - /// Returns the Thumbnail Image Height Description. - /// - /// the Thumbnail Image Height Description. - private string GetThumbnailImageHeightDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_THUMBNAIL_IMAGE_HEIGHT)) - { - return null; - } - return BUNDLE["PIXELS", base.directory.GetString(ExifDirectory.TAG_THUMBNAIL_IMAGE_HEIGHT)]; - } - - /// - /// Returns the Focal Plane X Resolution Description. - /// - /// the Focal Plane X Resolution Description. - private string GetFocalPlaneXResolutionDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_FOCAL_PLANE_X_RES)) - { - return null; - } - Rational lcRational = - base.directory.GetRational(ExifDirectory.TAG_FOCAL_PLANE_X_RES); - return BUNDLE["FOCAL_PLANE", lcRational.GetReciprocal().ToSimpleString(allowDecimalRepresentationOfRationals), - GetFocalPlaneResolutionUnitDescription().ToLower()]; - } - - /// - /// Returns the Focal Plane Y Resolution Description. - /// - /// the Focal Plane Y Resolution Description. - private string GetFocalPlaneYResolutionDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_FOCAL_PLANE_Y_RES)) - { - return null; - } - Rational lcRational = - base.directory.GetRational(ExifDirectory.TAG_FOCAL_PLANE_Y_RES); - return BUNDLE["FOCAL_PLANE", lcRational.GetReciprocal().ToSimpleString(allowDecimalRepresentationOfRationals), - GetFocalPlaneResolutionUnitDescription().ToLower()]; - } - - /// - /// Returns the Focal Plane Resolution Unit Description. - /// - /// the Focal Plane Resolution Unit Description. - private string GetFocalPlaneResolutionUnitDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_FOCAL_PLANE_UNIT)) - { - return null; - } - // Unit of FocalPlaneXResoluton/FocalPlaneYResolution. '1' means no-unit, - // '2' inch, '3' centimeter. - switch (base.directory.GetInt(ExifDirectory.TAG_FOCAL_PLANE_UNIT)) - { - case 1 : - return BUNDLE["NO_UNIT"]; - case 2 : - return BUNDLE["INCHES"]; - case 3 : - return BUNDLE["CM"]; - default : - return ""; - } - } - - /// - /// Returns the Exif Image Width Description. - /// - /// the Exif Image Width Description. - private string GetExifImageWidthDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_EXIF_IMAGE_WIDTH)) - { - return null; - } - return BUNDLE["PIXELS", base.directory.GetInt(ExifDirectory.TAG_EXIF_IMAGE_WIDTH).ToString()]; - } - - /// - /// Returns the Exif Image Height Description. - /// - /// the Exif Image Height Description. - private string GetExifImageHeightDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_EXIF_IMAGE_HEIGHT)) - { - return null; - } - return BUNDLE["PIXELS", base.directory.GetInt(ExifDirectory.TAG_EXIF_IMAGE_HEIGHT).ToString()]; - } - - /// - /// Returns the Color Space Description. - /// - /// the Color Space Description. - private string GetColorSpaceDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_COLOR_SPACE)) - { - return null; - } - int lcColorSpace = base.directory.GetInt(ExifDirectory.TAG_COLOR_SPACE); - switch (lcColorSpace) - { - case 1: return BUNDLE["SRGB"]; - case 65535: return BUNDLE["UNDEFINED"]; - default: return BUNDLE["UNKNOWN"]; - } - } - - /// - /// Returns the Focal Length Description. - /// - /// the Focal Length Description. - private string GetFocalLengthDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_FOCAL_LENGTH)) - { - return null; - } - Rational lcFocalLength = - base.directory.GetRational(ExifDirectory.TAG_FOCAL_LENGTH); - return BUNDLE["DISTANCE_MM", (lcFocalLength.DoubleValue()).ToString("0.0##")]; - } - - /// - /// Returns the Flash Description. - /// - /// the Flash Description. - private string GetFlashDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_FLASH)) - { - return null; - } - int lcVal = base.directory.GetInt(ExifDirectory.TAG_FLASH); - StringBuilder sb = new StringBuilder(); - - if ((lcVal & 0x1) != 0) - { - sb.Append(BUNDLE["FLASH_FIRED"]); - } - else - { - sb.Append(BUNDLE["FLASH_DID_NOT_FIRE"]); - } - - // check if we're able to detect a return, before we mention it - if ((lcVal & 0x4) != 0) - { - sb.Append(", "); - if ((lcVal & 0x2) != 0) - { - sb.Append(BUNDLE["RETURN_DETECTED"]); - } - else - { - sb.Append(BUNDLE["RETURN_NOT_DETECTED"]); - } - } - - if ((lcVal & 0x10) != 0) - { - sb.Append(", ").Append(BUNDLE["AUTO"]); - } - - if ((lcVal & 0x40) != 0) - { - sb.Append(", ").Append(BUNDLE["RED_EYE_REDUCTION"]); - } - - return sb.ToString(); - } - - /// - /// Returns the light source Description. - /// - /// the light source Description. - private string GetLightSourceDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_LIGHT_SOURCE)) - { - return null; - } - int lcVal = base.directory.GetInt(ExifDirectory.TAG_LIGHT_SOURCE); - switch (lcVal) - { - case 0 : - return BUNDLE["UNKNOWN"]; - case 1 : - return BUNDLE["DAYLIGHT"]; - case 2 : - return BUNDLE["FLUORESCENT"]; - case 3 : - return BUNDLE["TUNGSTEN"]; - case 10 : - return BUNDLE["FLASH"]; - case 17 : - return BUNDLE["STANDARD_LIGHT"]; - case 18 : - return BUNDLE["STANDARD_LIGHT_B"]; - case 19 : - return BUNDLE["STANDARD_LIGHT_C"]; - case 20 : - return BUNDLE["D55"]; - case 21 : - return BUNDLE["D65"]; - case 22 : - return BUNDLE["D75"]; - case 255 : - return BUNDLE["OTHER"]; - default : - return BUNDLE["UNKNOWN", lcVal.ToString()]; - } - } - - /// - /// Returns the Metering Mode Description. - /// - /// the Metering Mode Description. - private string GetMeteringModeDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_METERING_MODE)) - { - return null; - } - // '0' means unknown, '1' average, '2' center weighted average, '3' spot - // '4' multi-spot, '5' multi-segment, '6' partial, '255' other - int lcMeteringMode = base.directory.GetInt(ExifDirectory.TAG_METERING_MODE); - switch (lcMeteringMode) - { - case 0 : - return BUNDLE["UNKNOWN"]; - case 1 : - return BUNDLE["AVERAGE"]; - case 2 : - return BUNDLE["CENTER_WEIGHTED_AVERAGE"]; - case 3 : - return BUNDLE["SPOT"]; - case 4 : - return BUNDLE["MULTI_SPOT"]; - case 5 : - return BUNDLE["MULTI_SEGMENT"]; - case 6 : - return BUNDLE["PARTIAL"]; - case 255 : - return BUNDLE["OTHER"]; - default : - return ""; - } - } - - /// - /// Returns the Subject Distance Description. - /// - /// the Subject Distance Description. - private string GetSubjectDistanceDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_SUBJECT_DISTANCE)) - { - return null; - } - Rational lcDistance = - base.directory.GetRational(ExifDirectory.TAG_SUBJECT_DISTANCE); - return BUNDLE["METRES", (lcDistance.DoubleValue()).ToString("0.0##")]; - } - - /// - /// Returns the Compression Level Description. - /// - /// the Compression Level Description. - private string GetCompressionLevelDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_COMPRESSION_LEVEL)) - { - return null; - } - Rational lcCompressionRatio = - base.directory.GetRational(ExifDirectory.TAG_COMPRESSION_LEVEL); - string lcRatio = - lcCompressionRatio.ToSimpleString( - allowDecimalRepresentationOfRationals); - if (lcCompressionRatio.IsInteger() && lcCompressionRatio.IntValue() == 1) - { - return BUNDLE["BIT_PIXEL", lcRatio]; - } - return BUNDLE["BITS_PIXEL", lcRatio]; - } - - /// - /// Returns the Thumbnail Length Description. - /// - /// the Thumbnail Length Description. - private string GetThumbnailLengthDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_THUMBNAIL_LENGTH)) - { - return null; - } - return BUNDLE["BYTES", base.directory.GetString(ExifDirectory.TAG_THUMBNAIL_LENGTH)]; - } - - /// - /// Returns the Thumbnail OffSet Description. - /// - /// the Thumbnail OffSet Description. - private string GetThumbnailOffSetDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_THUMBNAIL_OFFSET)) - { - return null; - } - return BUNDLE["BYTES", base.directory.GetString(ExifDirectory.TAG_THUMBNAIL_OFFSET)]; - } - - /// - /// Returns the Y Resolution Description. - /// - /// the Y Resolution Description. - private string GetYResolutionDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_Y_RESOLUTION)) - { - return null; - } - Rational lcResolution = - base.directory.GetRational(ExifDirectory.TAG_Y_RESOLUTION); - return BUNDLE["DOTS_PER", lcResolution.ToSimpleString(allowDecimalRepresentationOfRationals),GetResolutionDescription().ToLower()]; - } - - /// - /// Returns the X Resolution Description. - /// - /// the X Resolution Description. - private string GetXResolutionDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_X_RESOLUTION)) - { - return null; - } - Rational lcResolution = - base.directory.GetRational(ExifDirectory.TAG_X_RESOLUTION); - return BUNDLE["DOTS_PER", lcResolution.ToSimpleString(allowDecimalRepresentationOfRationals),GetResolutionDescription().ToLower()]; - } - - /// - /// Returns the Exposure Time Description. - /// - /// the Exposure Time Description. - private string GetExposureTimeDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_EXPOSURE_TIME)) - { - return null; - } - return BUNDLE["SEC", base.directory.GetString(ExifDirectory.TAG_EXPOSURE_TIME)]; - } - - /// - /// Returns the Shutter Speed Description. - /// - /// the Shutter Speed Description. - private string GetShutterSpeedDescription() - { - // I believe this method to now be stable, but am leaving some - // alternative snippets of code in here, to assist anyone who'lcStr - // looking into this (given that I don't have a public CVS). - if (!base.directory.ContainsTag(ExifDirectory.TAG_SHUTTER_SPEED)) - { - return null; - } - // Thanks to Mark Edwards for spotting and patching a bug in the calculation of this - // description (spotted bug using a Canon EOS 300D) - // thanks also to Gli Blr for spotting this bug - float lcApexValue = base.directory.GetFloat(ExifDirectory.TAG_SHUTTER_SPEED); - if (lcApexValue <= 1) - { - float lcApexPower = (float)(1 / (Math.Exp(lcApexValue * Math.Log(2)))); - long lcApexPower10 = (long)Math.Round((double)lcApexPower * 10.0); - float lcFApexPower = (float)lcApexPower10 / 10.0f; - return BUNDLE["SHUTTER_SPEED_SEC", lcFApexPower.ToString()]; - } - else - { - int apexPower = (int)((Math.Exp(lcApexValue * Math.Log(2)))); - return BUNDLE["SHUTTER_SPEED", apexPower.ToString()]; - } - - // This alternative implementation offered by Bill Richards - // TODO determine which is the correct / more-correct implementation - // double apexValue = base.directory.GetDouble(ExifDirectory.TAG_SHUTTER_SPEED); - // double apexPower = Math.Pow(2.0, apexValue); - - // StringBuilder sb = new StringBuilder(); - // if (apexPower > 1) { - // apexPower = Math.Floor(apexPower); - // } - // if (apexPower < 1) { - // sb.Append((int)Math.Round(1/apexPower)); - // } else { - // sb.Append("1/"); - // sb.Append((int)apexPower); - // } - // sb.Append(" sec"); - // return sb.ToString(); - } - - /// - /// Returns the F Number Description. - /// - /// the F Number Description. - private string GetFNumberDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_FNUMBER)) - { - return null; - } - Rational lcFNumber = base.directory.GetRational(ExifDirectory.TAG_FNUMBER); - return BUNDLE["APERTURE", lcFNumber.DoubleValue().ToString("0.#")]; - } - - /// - /// Returns the YCbCr Positioning Description. - /// - /// the YCbCr Positioning Description. - private string GetYCbCrPositioningDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_YCBCR_POSITIONING)) - { - return null; - } - int lcYCbCrPosition = - base.directory.GetInt(ExifDirectory.TAG_YCBCR_POSITIONING); - switch (lcYCbCrPosition) - { - case 1 : - return BUNDLE["CENTER_OF_PIXEL_ARRAY"]; - case 2 : - return BUNDLE["DATUM_POINT"]; - default : - return lcYCbCrPosition.ToString(); - } - } - - /// - /// Returns the Orientation Description. - /// - /// the Orientation Description. - private string GetOrientationDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_ORIENTATION)) - { - return null; - } - int lcOrientation = base.directory.GetInt(ExifDirectory.TAG_ORIENTATION); - switch (lcOrientation) - { - case 1 : - return BUNDLE["TOP_LEFT_SIDE"]; - case 2 : - return BUNDLE["TOP_RIGHT_SIDE"]; - case 3 : - return BUNDLE["BOTTOM_RIGHT_SIDE"]; - case 4 : - return BUNDLE["BOTTOM_LEFT_SIDE"]; - case 5 : - return BUNDLE["LEFT_SIDE_TOP"]; - case 6 : - return BUNDLE["RIGHT_SIDE_TOP"]; - case 7 : - return BUNDLE["RIGHT_SIDE_BOTTOM"]; - case 8 : - return BUNDLE["LEFT_SIDE_BOTTOM"]; - default : - return lcOrientation.ToString(); - } - } - - /// - /// Returns the Resolution Description. - /// - /// the Resolution Description. - private string GetResolutionDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_RESOLUTION_UNIT)) - { - return ""; - } - // '1' means no-unit, '2' means inch, '3' means centimeter. Default aValue is '2'(inch) - int lcResolutionUnit = base.directory.GetInt(ExifDirectory.TAG_RESOLUTION_UNIT); - switch (lcResolutionUnit) - { - case 1 : - return BUNDLE["NO_UNIT"]; - case 2 : - return BUNDLE["INCHES"]; - case 3 : - return BUNDLE["CM"]; - default : - return ""; - } - } - - /// - /// Returns the Sensing Method Description. - /// - /// the Sensing Method Description. - private string GetSensingMethodDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_SENSING_METHOD)) - { - return null; - } - // '1' Not defined, '2' One-chip color area sensor, '3' Two-chip color area sensor - // '4' Three-chip color area sensor, '5' Color sequential area sensor - // '7' Trilinear sensor '8' Color sequential linear sensor, 'Other' reserved - int lcSensingMethod = base.directory.GetInt(ExifDirectory.TAG_SENSING_METHOD); - switch (lcSensingMethod) - { - case 1 : - return BUNDLE["NOT_DEFINED"]; - case 2 : - return BUNDLE["ONE_CHIP_COLOR"]; - case 3 : - return BUNDLE["TWO_CHIP_COLOR"]; - case 4 : - return BUNDLE["THREE_CHIP_COLOR"]; - case 5 : - return BUNDLE["COLOR_SEQUENTIAL"]; - case 7 : - return BUNDLE["TRILINEAR_SENSOR"]; - case 8 : - return BUNDLE["COLOR_SEQUENTIAL_LINEAR"]; - default : - return ""; - } - } - - /// - /// Returns the XP author description. - /// - /// the XP author description. - private string GetXPAuthorDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_XP_AUTHOR)) - { - return null; - } - return Utils.Decode(base.directory.GetByteArray(ExifDirectory.TAG_XP_AUTHOR), true); - } - - /// - /// Returns the XP comments description. - /// - /// the XP comments description. - private string GetXPCommentsDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_XP_COMMENTS)) - { - return null; - } - return Utils.Decode(base.directory.GetByteArray(ExifDirectory.TAG_XP_COMMENTS), true); - } - - /// - /// Returns the XP keywords description. - /// - /// the XP keywords description. - private string GetXPKeywordsDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_XP_KEYWORDS)) - { - return null; - } - return Utils.Decode(base.directory.GetByteArray(ExifDirectory.TAG_XP_KEYWORDS), true); - } - - /// - /// Returns the XP subject description. - /// - /// the XP subject description. - private string GetXPSubjectDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_XP_SUBJECT)) - { - return null; - } - return Utils.Decode(base.directory.GetByteArray(ExifDirectory.TAG_XP_SUBJECT), true); - } - - /// - /// Returns the XP title description. - /// - /// the XP title description. - private string GetXPTitleDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_XP_TITLE)) - { - return null; - } - return Utils.Decode(base.directory.GetByteArray(ExifDirectory.TAG_XP_TITLE), true); - } - - - /// - /// Returns the Component Configuration Description. - /// - /// the Component Configuration Description. - private string GetComponentConfigurationDescription() - { - if (!base.directory.ContainsTag(ExifDirectory.TAG_COMPONENTS_CONFIGURATION)) - { - return null; - } - int[] lcComponents = - base.directory.GetIntArray(ExifDirectory.TAG_COMPONENTS_CONFIGURATION); - string[] lcComponentStrings = { "", "Y", "Cb", "Cr", "R", "G", "B" }; - StringBuilder lcComponentConfig = new StringBuilder(); - for (int i = 0; i < Math.Min(4, lcComponents.Length); i++) - { - int lcId = lcComponents[i]; - if (lcId > 0 && lcId < lcComponentStrings.Length) - { - lcComponentConfig.Append(lcComponentStrings[lcId]); - } - } - return lcComponentConfig.ToString(); - } - - /// - /// Takes a series of 4 bytes from the specified offSet, and converts these to a - /// well-known version number, where possible. For example, (hex) 30 32 31 30 == 2.10). - /// - /// the four version values - /// the version as a string of form 2.10 - public static string ConvertBytesToVersionString(int[] someComponents) - { - StringBuilder lcVersion = new StringBuilder(); - for (int i = 0; i < 4 && i < someComponents.Length; i++) - { - // In order to avoid strange characters in some version (like Nikon) - if (someComponents[i] > 31) - { - if (i == 2) - { - lcVersion.Append('.'); - } - string digit = ((char)someComponents[i]).ToString(); - if (i == 0 && "0".Equals(digit)) - { - continue; - } - lcVersion.Append(digit); - } - } - return lcVersion.ToString(); - } - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/ExifDirectory.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/ExifDirectory.cs deleted file mode 100644 index c120cf1..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/ExifDirectory.cs +++ /dev/null @@ -1,606 +0,0 @@ -using System; -using System.IO; - -namespace com.drew.metadata.exif -{ - /// - /// The Exif Directory class - /// - - public class ExifDirectory : AbstractDirectory - { - // TODO do these tags belong in the exif directory? - public const int TAG_SUB_IFDS = 0x014A; - public const int TAG_GPS_INFO = 0x8825; - - /// - /// The actual aperture value of lens when the image was taken. Unit is APEX. - /// To convert this value to ordinary F-number (F-stop), calculate this value'str power - /// of root 2 (=1.4142). For example, if the ApertureValue is '5', F-number is 1.4142^5 = F5.6. - /// - public const int TAG_APERTURE = 0x9202; - - /// - /// When image format is no compression, this value shows the number of bits - /// per component for each pixel. Usually this value is '8,8,8'. - /// - public const int TAG_BITS_PER_SAMPLE = 0x0102; - - /// - /// Shows compression method for Thumbnail. - /// 1 = Uncompressed - /// 2 = CCITT 1D - /// 3 = T4/Group 3 Fax - /// 4 = T6/Group 4 Fax - /// 5 = LZW - /// 6 = JPEG (old-style) - /// 7 = JPEG - /// 8 = Adobe Deflate - /// 9 = JBIG B&W - /// 10 = JBIG Color - /// 32766 = Next - /// 32771 = CCIRLEW - /// 32773 = PackBits - /// 32809 = Thunderscan - /// 32895 = IT8CTPAD - /// 32896 = IT8LW - /// 32897 = IT8MP - /// 32898 = IT8BL - /// 32908 = PixarFilm - /// 32909 = PixarLog - /// 32946 = Deflate - /// 32947 = DCS - /// 34661 = JBIG - /// 34676 = SGILog - /// 34677 = SGILog24 - /// 34712 = JPEG 2000 - /// 34713 = Nikon NEF Compressed - /// - public const int TAG_COMPRESSION = 0x0103; - public const int COMPRESSION_NONE = 1; - public const int COMPRESSION_JPEG = 6; - - - /// - /// Shows the color space of the image data components. - /// 0 = WhiteIsZero - /// 1 = BlackIsZero - /// 2 = RGB - /// 3 = RGB Palette - /// 4 = Transparency Mask - /// 5 = CMYK - /// 6 = YCbCr - /// 8 = CIELab - /// 9 = ICCLab - /// 10 = ITULab - /// 32803 = Color Filter Array - /// 32844 = Pixar LogL - /// 32845 = Pixar LogLuv - /// 34892 = Linear Raw - /// - public const int TAG_PHOTOMETRIC_INTERPRETATION = 0x0106; - - /// - /// 1 = No dithering or halftoning - /// 2 = Ordered dither or halftone - /// 3 = Randomized dither - /// - public const int TAG_THRESHOLDING = 0x0107; - public const int PHOTOMETRIC_INTERPRETATION_MONOCHROME = 1; - public const int PHOTOMETRIC_INTERPRETATION_RGB = 2; - public const int PHOTOMETRIC_INTERPRETATION_YCBCR = 6; - - /// - /// The position in the file of raster data. - /// - public const int TAG_STRIP_OFFSETS = 0x0111; - /// - /// Each pixel is composed of this many samples. - /// - public const int TAG_SAMPLES_PER_PIXEL = 0x0115; - /// - /// The raster is codified by a single block of data holding this many rows. - /// - public const int TAG_ROWS_PER_STRIP = 0x116; - /// - /// The size of the raster data in bytes. - /// - public const int TAG_STRIP_BYTE_COUNTS = 0x0117; - public const int TAG_MIN_SAMPLE_VALUE = 0x0118; - public const int TAG_MAX_SAMPLE_VALUE = 0x0119; - - - /// - /// When image format is no compression YCbCr, this value shows byte aligns of YCbCr data. - /// If value is '1', Y/Cb/Cr value is chunky format, contiguous for each subsampling pixel. - /// If value is '2', Y/Cb/Cr value is separated and stored to Y plane/Cb plane/Cr plane format. - /// - public const int TAG_PLANAR_CONFIGURATION = 0x011C; - public const int TAG_YCBCR_SUBSAMPLING = 0x0212; - public const int TAG_IMAGE_DESCRIPTION = 0x010E; - public const int TAG_SOFTWARE = 0x0131; - public const int TAG_DATETIME = 0x0132; - public const int TAG_WHITE_POINT = 0x013E; - public const int TAG_PRIMARY_CHROMATICITIES = 0x013F; - public const int TAG_YCBCR_COEFFICIENTS = 0x0211; - public const int TAG_REFERENCE_BLACK_WHITE = 0x0214; - public const int TAG_COPYRIGHT = 0x8298; - /// - /// The new subfile type tag. - /// 0 = Full-resolution Image - /// 1 = Reduced-resolution image - /// 2 = Single page of multi-page image - /// 3 = Single page of multi-page reduced-resolution image - /// 4 = Transparency mask - /// 5 = Transparency mask of reduced-resolution image - /// 6 = Transparency mask of multi-page image - /// 7 = Transparency mask of reduced-resolution multi-page image - /// - public const int TAG_NEW_SUBFILE_TYPE = 0x00FE; - /// - /// The old subfile type tag. - /// 1 = Full-resolution image (Main image) - /// 2 = Reduced-resolution image (Thumbnail) - /// 3 = Single page of multi-page image - /// - public const int TAG_SUBFILE_TYPE = 0x00FF; - public const int TAG_TRANSFER_FUNCTION = 0x012D; - public const int TAG_ARTIST = 0x013B; - public const int TAG_PREDICTOR = 0x013D; - public const int TAG_TILE_WIDTH = 0x0142; - public const int TAG_TILE_LENGTH = 0x0143; - public const int TAG_TILE_OFFSETS = 0x0144; - public const int TAG_TILE_BYTE_COUNTS = 0x0145; - public const int TAG_JPEG_TABLES = 0x015B; - public const int TAG_CFA_REPEAT_PATTERN_DIM = 0x828D; - - /// - /// There are two definitions for CFA pattern, I don't know the difference... - /// - public const int TAG_CFA_PATTERN_2 = 0x828E; - public const int TAG_BATTERY_LEVEL = 0x828F; - public const int TAG_IPTC_NAA = 0x83BB; - public const int TAG_INTER_COLOR_PROFILE = 0x8773; - public const int TAG_SPECTRAL_SENSITIVITY = 0x8824; - public const int TAG_OECF = 0x8828; - public const int TAG_INTERLACE = 0x8829; - public const int TAG_TIME_ZONE_OFFSET = 0x882A; - public const int TAG_SELF_TIMER_MODE = 0x882B; - public const int TAG_FLASH_ENERGY = 0x920B; - public const int TAG_SPATIAL_FREQ_RESPONSE = 0x920C; - public const int TAG_NOISE = 0x920D; - public const int TAG_IMAGE_NUMBER = 0x9211; - public const int TAG_SECURITY_CLASSIFICATION = 0x9212; - public const int TAG_IMAGE_HISTORY = 0x9213; - public const int TAG_SUBJECT_LOCATION = 0x9214; - - /// - /// There are two definitions for exposure index, I don't know the difference... - /// - public const int TAG_EXPOSURE_INDEX_2 = 0x9215; - public const int TAG_TIFF_EP_STANDARD_ID = 0x9216; - public const int TAG_FLASH_ENERGY_2 = 0xA20B; - public const int TAG_SPATIAL_FREQ_RESPONSE_2 = 0xA20C; - public const int TAG_SUBJECT_LOCATION_2 = 0xA214; - public const int TAG_MAKE = 0x010F; - public const int TAG_MODEL = 0x0110; - public const int TAG_ORIENTATION = 0x0112; - public const int TAG_X_RESOLUTION = 0x011A; - public const int TAG_Y_RESOLUTION = 0x011B; - public const int TAG_PAGE_NAME = 0x011D; - public const int TAG_RESOLUTION_UNIT = 0x0128; - public const int TAG_THUMBNAIL_OFFSET = 0x0201; - public const int TAG_THUMBNAIL_LENGTH = 0x0202; - public const int TAG_YCBCR_POSITIONING = 0x0213; - - /// - /// Exposure time (reciprocal of shutter speed). Unit is second. - /// - public const int TAG_EXPOSURE_TIME = 0x829A; - - /// - /// The actual F-number(F-stop) of lens when the image was taken. - /// - public const int TAG_FNUMBER = 0x829D; - - /// - /// Exposure program that the camera used when image was taken. - /// '1' means manual control, '2' program normal, '3' aperture priority, '4' - /// shutter priority, '5' program creative (slow program), - /// '6' program action (high-speed program), '7' portrait mode, '8' landscape mode. - /// - public const int TAG_EXPOSURE_PROGRAM = 0x8822; - public const int TAG_ISO_EQUIVALENT = 0x8827; - public const int TAG_EXIF_VERSION = 0x9000; - public const int TAG_DATETIME_ORIGINAL = 0x9003; - public const int TAG_DATETIME_DIGITIZED = 0x9004; - public const int TAG_COMPONENTS_CONFIGURATION = 0x9101; - - /// - /// Average (rough estimate) compression level in JPEG bits per pixel. - /// - public const int TAG_COMPRESSION_LEVEL = 0x9102; - - /// - /// Shutter speed by APEX value. To convert this value to ordinary 'Shutter Speed'; - /// calculate this value'str power of 2, then reciprocal. For example, if the - /// ShutterSpeedValue is '4', shutter speed is 1/(24)=1/16 second. - /// - public const int TAG_SHUTTER_SPEED = 0x9201; - public const int TAG_BRIGHTNESS_VALUE = 0x9203; - public const int TAG_EXPOSURE_BIAS = 0x9204; - - /// - /// Maximum aperture value of lens. You can convert to F-number by calculating - /// power of root 2 (same process of ApertureValue:0x9202). - /// The actual aperture value of lens when the image was taken. To convert this - /// value to ordinary f-number(f-stop), calculate the value'lcStr power of root 2 - /// (=1.4142). For example, if the ApertureValue is '5', f-number is 1.41425^5 = F5.6. - /// - public const int TAG_MAX_APERTURE = 0x9205; - /// - /// Indicates the distance the autofocus camera is focused to. Tends to be less accurate as distance increases. - /// - public const int TAG_SUBJECT_DISTANCE = 0x9206; - - /// - /// Exposure metering method. '0' means unknown, '1' average, '2' center - /// weighted average, '3' spot, '4' multi-spot, '5' multi-segment, '6' partial, '255' other. - /// - public const int TAG_METERING_MODE = 0x9207; - - /// - /// White balance (aka light source). '0' means unknown, '1' daylight, - /// '2' fluorescent, '3' tungsten, '10' flash, '17' standard light A, - /// '18' standard light B, '19' standard light C, '20' D55, '21' D65, - /// '22' D75, '255' other. - /// - public const int TAG_LIGHT_SOURCE = 0x9208; - - /// - /// This tag indicates the white balance mode set when the image was shot. - /// Tag = 41987 (A403.H) - /// Type = SHORT - /// Count = 1 - /// Default = none - /// 0 = Auto white balance - /// 1 = Manual white balance - /// Other = reserved - /// - public const int TAG_WHITE_BALANCE_MODE = 0xA403; - - - /// - /// 0x0 = 0000000 = No Flash - /// 0x1 = 0000001 = Fired - /// 0x5 = 0000101 = Fired, Return not detected - /// 0x7 = 0000111 = Fired, Return detected - /// 0x9 = 0001001 = On - /// 0xd = 0001101 = On, Return not detected - /// 0xf = 0001111 = On, Return detected - /// 0x10 = 0010000 = Off - /// 0x18 = 0011000 = Auto, Did not fire - /// 0x19 = 0011001 = Auto, Fired - /// 0x1d = 0011101 = Auto, Fired, Return not detected - /// 0x1f = 0011111 = Auto, Fired, Return detected - /// 0x20 = 0100000 = No flash function - /// 0x41 = 1000001 = Fired, Red-eye reduction - /// 0x45 = 1000101 = Fired, Red-eye reduction, Return not detected - /// 0x47 = 1000111 = Fired, Red-eye reduction, Return detected - /// 0x49 = 1001001 = On, Red-eye reduction - /// 0x4d = 1001101 = On, Red-eye reduction, Return not detected - /// 0x4f = 1001111 = On, Red-eye reduction, Return detected - /// 0x59 = 1011001 = Auto, Fired, Red-eye reduction - /// 0x5d = 1011101 = Auto, Fired, Red-eye reduction, Return not detected - /// 0x5f = 1011111 = Auto, Fired, Red-eye reduction, Return detected - /// 6543210 (positions) - /// - /// This is a bitmask. - /// 0 = flash fired - /// 1 = return detected - /// 2 = return able to be detected - /// 3 = unknown - /// 4 = auto used - /// 5 = unknown - /// 6 = red eye reduction used - /// - public const int TAG_FLASH = 0x9209; - - /// - /// Focal length of lens used to take image. Unit is millimeter. - /// - public const int TAG_FOCAL_LENGTH = 0x920A; - public const int TAG_USER_COMMENT = 0x9286; - public const int TAG_SUBSECOND_TIME = 0x9290; - public const int TAG_SUBSECOND_TIME_ORIGINAL = 0x9291; - public const int TAG_SUBSECOND_TIME_DIGITIZED = 0x9292; - public const int TAG_FLASHPIX_VERSION = 0xA000; - - /// - /// Defines Color Space. DCF image must use sRGB color space so value is always '1'. - /// If the picture uses the other color space, value is '65535':Uncalibrated. - /// - public const int TAG_COLOR_SPACE = 0xA001; - public const int TAG_EXIF_IMAGE_WIDTH = 0xA002; - public const int TAG_EXIF_IMAGE_HEIGHT = 0xA003; - public const int TAG_RELATED_SOUND_FILE = 0xA004; - public const int TAG_FOCAL_PLANE_X_RES = 0xA20E; - public const int TAG_FOCAL_PLANE_Y_RES = 0xA20F; - - /// - /// Unit of FocalPlaneXResoluton/FocalPlaneYResolution. - /// '1' means no-unit, '2' inch, '3' centimeter. - /// - /// Note: Some of Fujifilm'str digicam(e.g.FX2700,FX2900,Finepix4700Z/40i etc) - /// uses value '3' so it must be 'centimeter', but it seems that they use a '8.3mm?' - /// (1/3in.?) to their ResolutionUnit. Fuji'str BUG? Finepix4900Z has been changed to - /// use value '2' but it doesn't match to actual value also. - /// - public const int TAG_FOCAL_PLANE_UNIT = 0xA210; - public const int TAG_EXPOSURE_INDEX = 0xA215; - public const int TAG_SENSING_METHOD = 0xA217; - public const int TAG_FILE_SOURCE = 0xA300; - public const int TAG_SCENE_TYPE = 0xA301; - public const int TAG_CFA_PATTERN = 0xA302; - - public const int TAG_THUMBNAIL_IMAGE_WIDTH = 0x0100; - public const int TAG_THUMBNAIL_IMAGE_HEIGHT = 0x0101; - public const int TAG_THUMBNAIL_DATA = 0xF001; - - // these tags new with Exif 2.2 (?) [A401 - A4 - /// - ///This tag indicates the use of special processing on image data, such as rendering - ///geared to output. When special processing is performed, the reader is expected to - ///disable or minimize any further processing. - ///Tag = 41985 (A401.H) - ///Type = SHORT - ///Count = 1 - ///Default = 0 - /// 0 = Normal process - /// 1 = Custom process - /// Other = reserved - /// - public const int TAG_CUSTOM_RENDERED = 0xA401; - - /// - /// This tag indicates the exposure mode set when the image was shot. In auto-bracketing - /// mode, the camera shoots a series of frames of the same scene at different exposure settings. - /// Tag = 41986 (A402.H) - /// Type = SHORT - /// Count = 1 - /// Default = none - /// 0 = Auto exposure - /// 1 = Manual exposure - /// 2 = Auto bracket - /// Other = reserved - /// - public const int TAG_EXPOSURE_MODE = 0xA402; - - /// - /// This tag indicates the digital zoom ratio when the image was shot. If the - /// numerator of the recorded value is 0, this indicates that digital zoom was - /// not used. - /// Tag = 41988 (A404.H) - /// Type = RATIONAL - /// Count = 1 - /// Default = none - /// - public const int TAG_DIGITAL_ZOOM_RATIO = 0xA404; - - /// - /// This tag indicates the type of scene that was shot. It can also be used to - /// record the mode in which the image was shot. Note that this differs from - /// the scene type (SceneType) tag. - /// Tag = 41990 (A406.H) - /// Type = SHORT - /// Count = 1 - /// Default = 0 - /// 0 = Standard - /// 1 = Landscape - /// 2 = Portrait - /// 3 = Night scene - /// Other = reserved - /// - public const int TAG_SCENE_CAPTURE_TYPE = 0xA406; - - /// - /// This tag indicates the degree of overall image gain adjustment. - /// Tag = 41991 (A407.H) - /// Type = SHORT - /// Count = 1 - /// Default = none - /// 0 = None - /// 1 = Low gain up - /// 2 = High gain up - /// 3 = Low gain down - /// 4 = High gain down - /// Other = reserved - /// - public const int TAG_GAIN_CONTROL = 0xA407; - - /// - /// This tag indicates the direction of contrast processing applied by the camera - /// when the image was shot. - /// Tag = 41992 (A408.H) - /// Type = SHORT - /// Count = 1 - /// Default = 0 - /// 0 = Normal - /// 1 = Soft - /// 2 = Hard - /// Other = reserved - /// - public const int TAG_CONTRAST = 0xA408; - - /// - /// This tag indicates the direction of saturation processing applied by the camera - /// when the image was shot. - /// Tag = 41993 (A409.H) - /// Type = SHORT - /// Count = 1 - /// Default = 0 - /// 0 = Normal - /// 1 = Low saturation - /// 2 = High saturation - /// Other = reserved - /// - public const int TAG_SATURATION = 0xA409; - - /// - /// This tag indicates the direction of sharpness processing applied by the camera - /// when the image was shot. - /// Tag = 41994 (A40A.H) - /// Type = SHORT - /// Count = 1 - /// Default = 0 - /// 0 = Normal - /// 1 = Soft - /// 2 = Hard - /// Other = reserved - /// - public const int TAG_SHARPNESS = 0xA40A; - - // TODO support this tag (I haven't seen a camera'lcStr actual implementation of this yet) - - /// - ///This tag indicates information on the picture-taking conditions of a particular - /// camera model. The tag is used only to indicate the picture-taking conditions in - /// the reader. - /// Tag = 41995 (A40B.H) - /// Type = UNDEFINED - /// Count = Any - /// Default = none - /// - /// The information is recorded in the format shown below. The data is recorded - /// in Unicode using SHORT type for the number of display rows and columns and - /// UNDEFINED type for the camera settings. The Unicode (UCS-2) string including - /// Signature is NULL terminated. The specifics of the Unicode string are as given - /// in ISO/IEC 10464-1. - /// - /// Length Type Meaning - /// ------+-----------+------------------ - /// 2 SHORT Display columns - /// 2 SHORT Display rows - /// Any UNDEFINED Camera setting-1 - /// Any UNDEFINED Camera setting-2 - /// : : : - /// Any UNDEFINED Camera setting-n - /// - public const int TAG_DEVICE_SETTING_DESCRIPTION = 0xA40B; - - /// - /// This tag indicates the distance to the subject. - ///Tag = 41996 (A40C.H) - /// Type = SHORT - /// Count = 1 - /// Default = none - /// 0 = unknown - /// 1 = Macro - /// 2 = Close view - /// 3 = Distant view - /// Other = reserved - /// - public const int TAG_SUBJECT_DISTANCE_RANGE = 0xA40C; - - // Windows Attributes added/found by Ryan Patridge - public const int TAG_XP_TITLE = 0x9C9B; - public const int TAG_XP_COMMENTS = 0x9C9C; - public const int TAG_XP_AUTHOR = 0x9C9D; - public const int TAG_XP_KEYWORDS = 0x9C9E; - public const int TAG_XP_SUBJECT = 0x9C9F; - - - /// - /// This tag indicates the equivalent focal length assuming a 35mm film camera, - /// in mm. A value of 0 means the focal length is unknown. Note that this tag - /// differs from the FocalLength tag. - /// Tag = 41989 (A405.H) - /// Type = SHORT - /// Count = 1 - /// Default = none - /// - public const int TAG_FOCAL_LENGTH_IN_35MM_FILM = 0xA405; - /// - /// This tag indicates an identifier assigned uniquely to each image. It is - /// recorded as an ASCII string equivalent to hexadecimal notation and 128-bit - /// fixed length. - /// Tag = 42016 (A420.H) - /// Type = ASCII - /// Count = 33 - /// Default = none - /// - public const int TAG_IMAGE_UNIQUE_ID = 0xA420; - - - // are these two exif values? - public const int TAG_FILL_ORDER = 0x010A; - public const int TAG_DOCUMENT_NAME = 0x010D; - - public const int TAG_RELATED_IMAGE_FILE_FORMAT = 0x1000; - public const int TAG_RELATED_IMAGE_WIDTH = 0x1001; - public const int TAG_RELATED_IMAGE_LENGTH = 0x1002; - public const int TAG_TRANSFER_RANGE = 0x0156; - public const int TAG_JPEG_PROC = 0x0200; - public const int TAG_EXIF_OFFSET = 0x8769; - public const int TAG_MARKER_NOTE = 0x927C; - public const int TAG_INTEROPERABILITY_OFFSET = 0xA005; - - /// - /// Constructor of the object. - /// - public ExifDirectory() - : base("ExifMarkernote") - { - this.SetDescriptor(new ExifDescriptor(this)); - } - - /// - /// Gets the thumbnail data. - /// - /// the thumbnail data or null if none - public byte[] GetThumbnailData() - { - if (!ContainsThumbnail()) - { - return null; - } - - return this.GetByteArray(ExifDirectory.TAG_THUMBNAIL_DATA); - } - - /// - /// Writes the thumbnail in the given aFile - /// - /// where to write the thumbnail - /// if there is not data in thumbnail - public void WriteThumbnail(string filename) - { - byte[] data = GetThumbnailData(); - - if (data == null) - { - throw new MetadataException("No thumbnail data exists."); - } - - try - { - using (var stream = new FileStream(filename, FileMode.CreateNew)) - { - stream.Write(data, 0, data.Length); - } - } catch (Exception e) - { - throw new ExifProcessingException("Error writing thumbnail: " + e.Message); - } - } - - /// - /// Indicates if there is thumbnail data or not - /// - /// true if there is thumbnail data, false if not - public bool ContainsThumbnail() - { - return ContainsTag(ExifDirectory.TAG_THUMBNAIL_DATA); - } - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/ExifInteropDescriptor.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/ExifInteropDescriptor.cs deleted file mode 100644 index b8b8b78..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/ExifInteropDescriptor.cs +++ /dev/null @@ -1,72 +0,0 @@ -namespace com.drew.metadata.exif -{ - /// - /// Tag descriptor for almost every images - /// - - public class ExifInteropDescriptor : AbstractTagDescriptor - { - /// - /// Constructor of the object - /// - /// a base.directory - public ExifInteropDescriptor(AbstractDirectory aDirectory) : base(aDirectory) - { - } - - /// - /// Returns a descriptive value of the the specified tag for this image. - /// Where possible, known values will be substituted here in place of the raw tokens actually - /// kept in the Exif segment. - /// If no substitution is available, the value provided by GetString(int) will be returned. - /// This and GetString(int) are the only 'get' methods that won't throw an exception. - /// - /// the tag to find a description for - /// a description of the image'str value for the specified tag, or null if the tag hasn't been defined. - public override string GetDescription(int tagType) - { - switch(tagType) - { - case ExifInteropDirectory.TAG_INTEROP_INDEX: - return GetInteropIndexDescription(); - case ExifInteropDirectory.TAG_INTEROP_VERSION: - return GetInteropVersionDescription(); - default: - return base.directory.GetString(tagType); - } - } - - /// - /// Returns the Interop Version Description. - /// - /// the Interop Version Description. - private string GetInteropVersionDescription() - { - if (!base.directory.ContainsTag(ExifInteropDirectory.TAG_INTEROP_VERSION)) - return null; - int[] ints = - base.directory.GetIntArray(ExifInteropDirectory.TAG_INTEROP_VERSION); - return ExifDescriptor.ConvertBytesToVersionString(ints); - } - - /// - /// Returns the Interop index Description. - /// - /// the Interop index Description. - private string GetInteropIndexDescription() - { - if (!base.directory.ContainsTag(ExifInteropDirectory.TAG_INTEROP_INDEX)) - return null; - string interopIndex = - base.directory.GetString(ExifInteropDirectory.TAG_INTEROP_INDEX).Trim(); - if ("R98".Equals(interopIndex.ToUpper())) - { - return BUNDLE["RECOMMENDED_EXIF_INTEROPERABILITY"]; - } - else - { - return BUNDLE["UNKNOWN", interopIndex.ToString()]; - } - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/ExifInteropDirectory.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/ExifInteropDirectory.cs deleted file mode 100644 index 50b0fa5..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/ExifInteropDirectory.cs +++ /dev/null @@ -1,25 +0,0 @@ -namespace com.drew.metadata.exif -{ - /// - /// This class represents EXIF INTEROP marker note. - /// - - public class ExifInteropDirectory : AbstractDirectory - { - public const int TAG_INTEROP_INDEX = 0x0001; - public const int TAG_INTEROP_VERSION = 0x0002; - public const int TAG_RELATED_IMAGE_FILE_FORMAT = 0x1000; - public const int TAG_RELATED_IMAGE_WIDTH = 0x1001; - public const int TAG_RELATED_IMAGE_LENGTH = 0x1002; - - /// - /// Constructor of the object. - /// - public ExifInteropDirectory() - : base("ExifInteropMarkernote") - { - this.SetDescriptor(new ExifInteropDescriptor(this)); - } - - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/ExifProcessingException.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/ExifProcessingException.cs deleted file mode 100644 index ffbf25d..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/ExifProcessingException.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System; - -namespace com.drew.metadata.exif -{ - /// - /// The exception type raised during reading of Exif data in the instance of unexpected data conditions. - /// - - [Serializable] - public class ExifProcessingException : MetadataException - { - /// - /// Constructor of the object - /// - /// The error aMessage - public ExifProcessingException(string message) : base(message) - { - } - - /// - /// Constructor of the object - /// - /// The error aMessage - /// The aCause of the exception - public ExifProcessingException(string message, Exception cause) : base(message, cause) - { - } - - /// - /// Constructor of the object - /// - /// The aCause of the exception - public ExifProcessingException(Exception cause) : base(cause) - { - } - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/ExifReader.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/ExifReader.cs deleted file mode 100644 index 5c0b803..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/ExifReader.cs +++ /dev/null @@ -1,973 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using com.drew.imaging.jpg; -using com.drew.lang; -using com.utils; -using System.Diagnostics; - -namespace com.drew.metadata.exif -{ - /// - /// Extracts Exif data from a JPEG lcHeader segment, providing information about - /// the camera/scanner/capture device (if available). - /// Information is encapsulated in an Metadata object. - /// - - public class ExifReader : AbstractMetadataReader - { - - /// - /// Represents the native byte ordering used in the JPEG segment. - /// If true, then we're using Motorolla ordering (Big endian), else - /// we're using Intel ordering (Little endian). - /// - private bool isMotorollaByteOrder; - - /// - /// Bean instance to store information about the image and camera/scanner/capture device. - /// - private Metadata metadata; - private ExifDirectory _exifDirectory; - private ExifDirectory ExifDirectory - { - get - { - if (this._exifDirectory == null) - { - this._exifDirectory = (ExifDirectory)this.metadata.GetDirectory("com.drew.metadata.exif.ExifDirectory"); - - } - return this._exifDirectory; - } - } - - - /// - /// The number of bytes used per format descriptor. - /// - private static readonly int[] BYTES_PER_FORMAT = { 0, 1, 1, 2, 4, 8, 1, 1, 2, 4, 8, 4, 8 }; - - /// - /// The number of formats known. - /// - private static readonly int MAX_FORMAT_CODE = 12; - - // the format enumeration - // TODO use the new DataFormat enumeration instead of these values - private const int FMT_BYTE = 1; - private const int FMT_STRING = 2; - private const int FMT_USHORT = 3; - private const int FMT_ULONG = 4; - private const int FMT_URATIONAL = 5; - private const int FMT_SBYTE = 6; - private const int FMT_UNDEFINED = 7; - private const int FMT_SSHORT = 8; - private const int FMT_SLONG = 9; - private const int FMT_SRATIONAL = 10; - private const int FMT_SINGLE = 11; - private const int FMT_DOUBLE = 12; - - public const int TAG_EXIF_OFFSET = 0x8769; - public const int TAG_INTEROP_OFFSET = 0xA005; - public const int TAG_GPS_INFO_OFFSET = 0x8825; - public const int TAG_MAKER_NOTE = 0x927C; - - // NOT READONLY - public static int TIFF_HEADER_START_OFFSET = 6; - - private const string MARK_AS_PROCESSED = "processed"; - - - /// - /// Creates a new ExifReader for the specified Jpeg jpegFile. - /// - /// where to read - public ExifReader(FileInfo aFile) - : base(aFile, JpegSegmentReader.SEGMENT_APP1) - { - } - - /// - /// Constructor of the object - /// - /// the data to read - public ExifReader(byte[] aData) - : base(aData) - { - } - - /// - /// Extract tiff information (used by raw files) - /// - /// where to extract information - /// the information extracted - public Metadata ExtractTiff(Metadata aMetadata) - { - return this.ExtractIFD(aMetadata, 0); - } - - /// - /// Reads metatdata from raw file. - /// - /// a meta data - /// an offset - /// the metadata found - private Metadata ExtractIFD(Metadata aMetadata, int aTiffHeaderOffset) - { - this.metadata = aMetadata; - if (base.data == null) - { - return this.metadata; - } - - ExifDirectory directory = this.ExifDirectory; - - // this should be either "MM" or "II" - string byteOrderIdentifier = Utils.Decode(base.data, aTiffHeaderOffset, 2, false); - if (!this.SetByteOrder(byteOrderIdentifier)) - { - directory.HasError = true; - Trace.TraceError("Unclear distinction between Motorola/Intel byte ordering: " - + byteOrderIdentifier); - return this.metadata; - } - - // Check the next two values for correctness. - if (this.Get16Bits(2 + aTiffHeaderOffset) != 0x2a) - { - // directory.AddError("Invalid Exif start - should have 0x2A at offset 8 in Exif header"); - // return this.metadata; - } - - int firstDirectoryOffset = this.Get32Bits(4 + aTiffHeaderOffset) + aTiffHeaderOffset; - - // David Ekholm sent an digital camera image that has this problem - if (firstDirectoryOffset >= base.data.Length - 1) - { - directory.HasError = true; - Trace.TraceError("First exif directory offset is beyond end of Exif data segment"); - // First directory normally starts 14 bytes in -- try it here and catch another error in the worst case - firstDirectoryOffset = 14; - } - - IDictionary processedDirectoryOffsets = new Dictionary(); - - // 0th IFD (we merge with Exif IFD) - try - { - this.ProcessDirectory(directory, processedDirectoryOffsets, - firstDirectoryOffset, aTiffHeaderOffset); - } - catch (Exception e) - { - throw new MetadataException(e); - } - - // after the extraction process, if we have the correct tags, we may be able to store thumbnail information - this.StoreThumbnailBytes(directory, aTiffHeaderOffset); - - return this.metadata; - } - - - /// - /// Performs the Exif data extraction, adding found values to the specified instance of Metadata. - /// - /// where to add meta data - /// the aMetadata - public override Metadata Extract(Metadata metadata) - { - this.metadata = metadata; - if (base.data == null) - { - return this.metadata; - } - - // once we know there'str some data, create the directory and start working on it - AbstractDirectory directory = this.metadata.GetDirectory("com.drew.metadata.exif.ExifDirectory"); - - if (base.data.Length <= 14) - { - directory.HasError = true; - Trace.TraceError("Exif data segment must contain at least 14 bytes"); - return this.metadata; - } - if (!"Exif\0\0".Equals(Utils.Decode(base.data, 0, 6, false))) - { - directory.HasError = true; - Trace.TraceError("Exif data segment doesn't begin with 'Exif'"); - return this.metadata; - } - - // this should be either "MM" or "II" - string byteOrderIdentifier = Utils.Decode(base.data, 6, 2, false); - if (!SetByteOrder(byteOrderIdentifier)) - { - directory.HasError = true; - Trace.TraceError("Unclear distinction between Motorola/Intel byte ordering"); - return this.metadata; - } - - // Check the next two values for correctness. - if (Get16Bits(8) != 0x2a) - { - directory.HasError = true; - Trace.TraceError("Invalid Exif start - should have 0x2A at offSet 8 in Exif header"); - return this.metadata; - } - - int firstDirectoryOffSet = Get32Bits(10) + TIFF_HEADER_START_OFFSET; - - // David Ekholm sent an digital camera image that has this problem - if (firstDirectoryOffSet >= base.data.Length - 1) - { - directory.HasError = true; - Trace.TraceError("First exif directory offSet is beyond end of Exif data segment"); - // First directory normally starts 14 bytes in -- try it here and catch another error in the worst case - firstDirectoryOffSet = 14; - } - - // 0th IFD (we merge with Exif IFD) - //ProcessDirectory(directory, firstDirectoryOffSet); - // after the extraction process, if we have the correct tags, we may be able to extract thumbnail information - //ExtractThumbnail(directory); - - Dictionary processedDirectoryOffsets = new Dictionary(); - - // 0th IFD (we merge with Exif IFD) - ProcessDirectory(directory, processedDirectoryOffsets, firstDirectoryOffSet, TIFF_HEADER_START_OFFSET); - - // after the extraction process, if we have the correct tags, we may be able to store thumbnail information - StoreThumbnailBytes(directory, TIFF_HEADER_START_OFFSET); - - - return this.metadata; - } - - /// - /// Will stock the thumbnail into exif directory if available. - /// - /// where to stock the thumbnail - /// the tiff lcHeader lcOffset value - private void StoreThumbnailBytes(AbstractDirectory exifDirectory, int tiffHeaderOffset) - { - if (!exifDirectory.ContainsTag(ExifDirectory.TAG_COMPRESSION)) - { - return; - } - - if (!exifDirectory.ContainsTag(ExifDirectory.TAG_THUMBNAIL_LENGTH) || - !exifDirectory.ContainsTag(ExifDirectory.TAG_THUMBNAIL_OFFSET)) - { - return; - } - try - { - int offset = exifDirectory.GetInt(ExifDirectory.TAG_THUMBNAIL_OFFSET); - int length = exifDirectory.GetInt(ExifDirectory.TAG_THUMBNAIL_LENGTH); - byte[] result = new byte[length]; - for (int i = 0; i < result.Length; i++) - { - result[i] = base.data[tiffHeaderOffset + offset + i]; - } - exifDirectory.SetObject(ExifDirectory.TAG_THUMBNAIL_DATA, result); - } - catch (Exception e) - { - exifDirectory.HasError = true; - Trace.TraceError("Unable to extract thumbnail: " + e.Message); - } - } - - - /// - /// Sets Motorolla byte order and idicates that it was found. - /// - /// true if the Motorolla byte order is identified - /// - private bool SetByteOrder(string byteOrderIdentifier) - { - if ("MM".Equals(byteOrderIdentifier)) - { - this.isMotorollaByteOrder = true; - return true; - } - else if ("II".Equals(byteOrderIdentifier)) - { - this.isMotorollaByteOrder = false; - return true; - } - return false; - } - - /// - /// Indicates if Directory Length is valid or not - /// - /// where to start - /// The tiff lcHeader lcOffset - /// true if Directory Length is valid - private bool IsDirectoryLengthValid(int dirStartOffset, int tiffHeaderOffset) - { - int dirTagCount = Get16Bits(dirStartOffset); - int dirLength = (2 + (12 * dirTagCount) + 4); - // Note: Files that had thumbnails trimmed with jhead 1.3 or earlier might trigger this - return !(dirLength + dirStartOffset + tiffHeaderOffset >= base.data.Length); - } - - /// - /// Determine the lcOffset at which a given InteropArray entry begins within the specified IFD. - /// - /// the lcOffset at which the IFD starts - /// the zero-based entry number - /// the lcOffset at which a given InteropArray entry begins within the specified IFD - private int CalculateTagOffset(int dirStartOffset, int entryNumber) - { - // add 2 bytes for the tag count - // each entry is 12 bytes, so we skip 12 * the number seen so far - return dirStartOffset + 2 + (12 * entryNumber); - } - - /// - /// Calculates tag value lcOffset - /// - /// the byte count - /// the dir entry lcOffset - /// the tiff lcHeader ofset - /// -1 if error, or the valus lcOffset - private int CalculateTagValueOffset(int byteCount, int dirEntryOffset, int tiffHeaderOffset) - { - if (byteCount > 4) - { - // If its bigger than 4 bytes, the dir entry contains an lcOffset. - // dirEntryOffset must be passed, as some makernote implementations (e.g. FujiFilm) incorrectly use an - // lcOffset relative to the start of the makernote itself, not the TIFF segment. - int offsetVal = Get32Bits(dirEntryOffset + 8); - if (offsetVal + byteCount > base.data.Length) - { - // Bogus pointer lcOffset and / or bytecount value - return -1; // signal error - } - return tiffHeaderOffset + offsetVal; - } - // 4 bytes or less and value is in the dir entry itself - return dirEntryOffset + 8; - } - - - /// - /// Process one of the nested Tiff IFD directories. - /// 2 bytes: number of tags for each tag - /// 2 bytes: tag type - /// 2 bytes: format code - /// 4 bytes: component count - /// - /// the directory - /// where to start - private void ProcessDirectory(AbstractDirectory directory, IDictionary processedDirectoryOffsets, int dirStartOffset, int tiffHeaderOffset) - { - // check for directories we've already visited to avoid stack overflows when recursive/cyclic directory structures exist - if (processedDirectoryOffsets.ContainsKey(dirStartOffset)) - { - return; - } - // remember that we've visited this directory so that we don't visit it again later - processedDirectoryOffsets.Add(dirStartOffset, MARK_AS_PROCESSED); - - if (dirStartOffset >= base.data.Length || dirStartOffset < 0) - { - directory.HasError = true; - Trace.TraceError("Ignored directory marked to start outside data segement"); - return; - } - - if (!IsDirectoryLengthValid(dirStartOffset, tiffHeaderOffset)) - { - directory.HasError = true; - Trace.TraceError("Illegally sized directory"); - return; - } - - // First two bytes in the IFD are the tag count - int dirTagCount = Get16Bits(dirStartOffset); - - // Handle each tag in this directory - for (int tagNumber = 0; tagNumber < dirTagCount; tagNumber++) - { - int tagOffset = CalculateTagOffset(dirStartOffset, tagNumber); - - // 2 bytes for the tag type - int tagType = Get16Bits(tagOffset); - - // 2 bytes for the format code - int formatCode = Get16Bits(tagOffset + 2); - if (formatCode < 1 || formatCode > MAX_FORMAT_CODE) - { - directory.HasError = true; - Trace.TraceError("Invalid format code: " + formatCode); - continue; - } - - // 4 bytes dictate the number of components in this tag'lcStr data - int componentCount = Get32Bits(tagOffset + 4); - if (componentCount < 0) - { - directory.HasError = true; - Trace.TraceError("Negative component count in EXIF"); - continue; - } - - // each component may have more than one byte... calculate the total number of bytes - int byteCount = componentCount * BYTES_PER_FORMAT[formatCode]; - int tagValueOffset = CalculateTagValueOffset(byteCount, tagOffset, tiffHeaderOffset); - if (tagValueOffset < 0 || tagValueOffset > base.data.Length) - { - directory.HasError = true; - Trace.TraceError("Illegal pointer offset value in EXIF"); - continue; - } - - - // Check that this tag isn't going to allocate outside the bounds of the data array. - // This addresses an uncommon OutOfMemoryError. - if (byteCount < 0 || tagValueOffset + byteCount > base.data.Length) - { - directory.HasError = true; - Trace.TraceError("Illegal number of bytes: " + byteCount); - continue; - } - - // Calculate the value as an lcOffset for cases where the tag represents directory - int subdirOffset = tiffHeaderOffset + Get32Bits(tagValueOffset); - - switch (tagType) - { - case TAG_EXIF_OFFSET: - ProcessDirectory(this.metadata.GetDirectory("com.drew.metadata.exif.ExifDirectory"), processedDirectoryOffsets, subdirOffset, tiffHeaderOffset); - continue; - case TAG_INTEROP_OFFSET: - ProcessDirectory(this.metadata.GetDirectory("com.drew.metadata.exif.ExifInteropDirectory"), processedDirectoryOffsets, subdirOffset, tiffHeaderOffset); - continue; - case TAG_GPS_INFO_OFFSET: - ProcessDirectory(this.metadata.GetDirectory("com.drew.metadata.exif.GpsDirectory"), processedDirectoryOffsets, subdirOffset, tiffHeaderOffset); - continue; - case TAG_MAKER_NOTE: - ProcessMakerNote(tagValueOffset, processedDirectoryOffsets, tiffHeaderOffset); - continue; - default: - ProcessTag(directory, tagType, tagValueOffset, componentCount, formatCode); - break; - } - } // End of for - // at the end of each IFD is an optional link to the next IFD - int finalTagOffset = CalculateTagOffset(dirStartOffset, dirTagCount); - int nextDirectoryOffset = Get32Bits(finalTagOffset); - if (nextDirectoryOffset != 0) - { - nextDirectoryOffset += tiffHeaderOffset; - if (nextDirectoryOffset >= base.data.Length) - { - Trace.TraceWarning("Last 4 bytes of IFD reference another IFD with an address that is out of bounds\nNote this could have been caused by jhead 1.3 cropping too much"); - return; - } - else if (nextDirectoryOffset < dirStartOffset) - { - Trace.TraceWarning("Last 4 bytes of IFD reference another IFD with an address that is before the start of this directory"); - return; - } - // the next directory is of same type as this one - ProcessDirectory(directory, processedDirectoryOffsets, nextDirectoryOffset, tiffHeaderOffset); - } - } - - /// - /// Determine the camera model and makernote format - /// - /// the sub lcOffset dir - /// the processed directory offsets - /// the tiff lcHeader lcOffset - private void ProcessMakerNote(int subdirOffset, IDictionary processedDirectoryOffsets, int tiffHeaderOffset) - { - // Console.WriteLine("ProcessMakerNote value="+subdirOffSet); - // Determine the camera model and makernote format - AbstractDirectory exifDirectory = this.metadata.GetDirectory("com.drew.metadata.exif.ExifDirectory"); - if (exifDirectory == null) - { - return; - } - - string cameraModel = exifDirectory.GetString(ExifDirectory.TAG_MAKE); - string firstTwoChars = Utils.Decode(base.data, subdirOffset, 2, false); - string firstThreeChars = Utils.Decode(base.data, subdirOffset, 3, false); - string firstFourChars = Utils.Decode(base.data, subdirOffset, 4, false); - string firstFiveChars = Utils.Decode(base.data, subdirOffset, 5, false); - string firstSixChars = Utils.Decode(base.data, subdirOffset, 6, false); - string firstSevenChars = Utils.Decode(base.data, subdirOffset, 7, false); - string firstEightChars = Utils.Decode(base.data, subdirOffset, 8, false); - - if ("OLYMP".Equals(firstFiveChars) || "EPSON".Equals(firstFiveChars) || "AGFA".Equals(firstFourChars)) - { - Trace.TraceInformation("Found an Olympus/Epson/Agfa directory."); - // Olympus Makernote - // Epson and Agfa use Olypus maker note standard, see: - // http://www.ozhiker.com/electronics/pjmt/jpeg_info/ - ProcessDirectory( - this.metadata.GetDirectory("com.drew.metadata.exif.OlympusDirectory"), processedDirectoryOffsets, subdirOffset + 8, tiffHeaderOffset); - } - else if (cameraModel != null && cameraModel.Trim().ToUpper().StartsWith("NIKON")) - { - if ("Nikon".Equals(Utils.Decode(base.data, subdirOffset, 5, false))) - { - // There are two scenarios here: - // Type 1: - // :0000: 4E 69 6B 6F 6E 00 01 00-05 00 02 00 02 00 06 00 Nikon........... - // :0010: 00 00 EC 02 00 00 03 00-03 00 01 00 00 00 06 00 ................ - // Type 3: - // :0000: 4E 69 6B 6F 6E 00 02 00-00 00 4D 4D 00 2A 00 00 Nikon....MM.*... - // :0010: 00 08 00 1E 00 01 00 07-00 00 00 04 30 32 30 30 ............0200 - if (base.data[subdirOffset + 6] == 1) - { - Trace.TraceInformation("Found an Nykon Type 1 directory."); - ProcessDirectory( - this.metadata.GetDirectory("com.drew.metadata.exif.NikonType1Directory"), processedDirectoryOffsets, subdirOffset + 8, tiffHeaderOffset); - } - else if (base.data[subdirOffset + 6] == 2) - { - Trace.TraceInformation("Found an Nykon Type 2 directory."); - ProcessDirectory( - this.metadata.GetDirectory("com.drew.metadata.exif.NikonType2Directory"), processedDirectoryOffsets, subdirOffset + 18, subdirOffset + 10); - } - else - { - exifDirectory.HasError = true; - Trace.TraceError( - "Unsupported makernote for Nikon data ignored."); - } - } - else - { - Trace.TraceInformation("Found an Nykon Type 2 directory."); - ProcessDirectory( - this.metadata.GetDirectory("com.drew.metadata.exif.NikonType2Directory"), processedDirectoryOffsets, subdirOffset, tiffHeaderOffset); - } - } - else if ("SONY CAM".Equals(firstEightChars) || "SONY DSC".Equals(firstEightChars)) - { - Trace.TraceInformation("Found a Sony directory."); - ProcessDirectory( - this.metadata.GetDirectory("com.drew.metadata.exif.SonyDirectory"), processedDirectoryOffsets, subdirOffset + 12, tiffHeaderOffset); - } - else if ("KDK".Equals(firstThreeChars)) - { - Trace.TraceInformation("Found a Kodak directory."); - ProcessDirectory( - this.metadata.GetDirectory("com.drew.metadata.exif.KodakDirectory"), processedDirectoryOffsets, subdirOffset + 20, tiffHeaderOffset); - } - - - else if (cameraModel != null && "Canon".ToUpper().Equals(cameraModel.ToUpper())) - { - Trace.TraceInformation("Found a Canon directory."); - ProcessDirectory( - this.metadata.GetDirectory("com.drew.metadata.exif.CanonDirectory"), processedDirectoryOffsets, subdirOffset, tiffHeaderOffset); - } - else if (cameraModel != null && cameraModel.ToUpper().StartsWith("CASIO")) - { - if ("QVC\u0000\u0000\u0000".Equals(firstSixChars)) - { - Trace.TraceInformation("Found a Casion Type 2 directory."); - ProcessDirectory(this.metadata.GetDirectory("com.drew.metadata.exif.CasioType2Directory"), processedDirectoryOffsets, subdirOffset + 6, tiffHeaderOffset); - } - else - { - Trace.TraceInformation("Found a Casion Type 1 directory."); - ProcessDirectory(this.metadata.GetDirectory("com.drew.metadata.exif.CasioType1Directory"), processedDirectoryOffsets, subdirOffset, tiffHeaderOffset); - } - } - else if ("FUJIFILM".Equals(firstEightChars) || "Fujifilm".ToUpper().Equals(cameraModel.ToUpper())) - { - Trace.TraceInformation("Found a Fujifilm directory."); - // TODO make this field a passed parameter, to avoid threading issues - bool byteOrderBefore = this.isMotorollaByteOrder; - // bug in fujifilm makernote ifd means we temporarily use Intel byte ordering - this.isMotorollaByteOrder = false; - // the 4 bytes after "FUJIFILM" in the makernote point to the start of the makernote - // IFD, though the lcOffset is relative to the start of the makernote, not the TIFF - // lcHeader (like everywhere else) - int ifdStart = subdirOffset + Get32Bits(subdirOffset + 8); - ProcessDirectory(this.metadata.GetDirectory("com.drew.metadata.exif.FujifilmDirectory"), processedDirectoryOffsets, ifdStart, tiffHeaderOffset); - this.isMotorollaByteOrder = byteOrderBefore; - } - else if (cameraModel != null && cameraModel.ToUpper().StartsWith("MINOLTA")) - { - Trace.TraceInformation("Found a Minolta directory, will use Olympus directory."); - // Cases seen with the model starting with MINOLTA in capitals seem to have a valid Olympus makernote - // area that commences immediately. - ProcessDirectory(this.metadata.GetDirectory("com.drew.metadata.exif. OlympusDirectory"), processedDirectoryOffsets, subdirOffset, tiffHeaderOffset); - } - else if ("KC".Equals(firstTwoChars) || "MINOL".Equals(firstFiveChars) || "MLY".Equals(firstThreeChars) || "+M+M+M+M".Equals(firstEightChars)) - { - // This Konica data is not understood. Header identified in accordance with information at this site: - // http://www.ozhiker.com/electronics/pjmt/jpeg_info/minolta_mn.html - // TODO determine how to process the information described at the above website - Trace.TraceError("Unsupported Konica/Minolta data ignored."); - } - else if ("KYOCERA".Equals(firstSevenChars)) - { - Trace.TraceInformation("Found a Kyocera directory"); - // http://www.ozhiker.com/electronics/pjmt/jpeg_info/kyocera_mn.html - ProcessDirectory(this.metadata.GetDirectory("com.drew.metadata.exif.KyoceraDirectory"), processedDirectoryOffsets, subdirOffset + 22, tiffHeaderOffset); - } - else if ("Panasonic\u0000\u0000\u0000".Equals(Utils.Decode(base.data, subdirOffset, 12, false))) - { - Trace.TraceInformation("Found a panasonic directory"); - // NON-Standard TIFF IFD Data using Panasonic Tags. There is no Next-IFD pointer after the IFD - // Offsets are relative to the start of the TIFF lcHeader at the beginning of the EXIF segment - // more information here: http://www.ozhiker.com/electronics/pjmt/jpeg_info/panasonic_mn.html - ProcessDirectory(this.metadata.GetDirectory("com.drew.metadata.exif.PanasonicDirectory"), processedDirectoryOffsets, subdirOffset + 12, tiffHeaderOffset); - } - else if ("AOC\u0000".Equals(firstFourChars)) - { - Trace.TraceInformation("Found a Casio type 2 directory"); - // NON-Standard TIFF IFD Data using Casio Type 2 Tags - // IFD has no Next-IFD pointer at end of IFD, and - // Offsets are relative to the start of the current IFD tag, not the TIFF lcHeader - // Observed for: - // - Pentax ist D - ProcessDirectory(this.metadata.GetDirectory("com.drew.metadata.exif.CasioType2Directory"), processedDirectoryOffsets, subdirOffset + 6, subdirOffset); - } - else if (cameraModel != null && (cameraModel.ToUpper().StartsWith("PENTAX") || cameraModel.ToUpper().StartsWith("ASAHI"))) - { - Trace.TraceInformation("Found a Pentax directory"); - // NON-Standard TIFF IFD Data using Pentax Tags - // IFD has no Next-IFD pointer at end of IFD, and - // Offsets are relative to the start of the current IFD tag, not the TIFF lcHeader - // Observed for: - // - PENTAX Optio 330 - // - PENTAX Optio 430 - ProcessDirectory(this.metadata.GetDirectory("com.drew.metadata.exif.PentaxDirectory"), processedDirectoryOffsets, subdirOffset, subdirOffset); - } - else - { - // TODO how to store makernote data when it'str not from a supported camera model? - Trace.TraceError("Unsupported directory data ignored."); - } - } - - - /// - /// Processes tag - /// - /// the directory - /// the tag type - /// the lcOffset value - /// the component count - /// the format code - private void ProcessTag( - AbstractDirectory directory, - int tagType, - int tagValueOffset, - int componentCount, - int formatCode) - { - // Directory simply stores raw values - // The display side uses a Descriptor class per directory to turn the raw values into 'pretty' descriptions - switch (formatCode) - { - case FMT_UNDEFINED: - Debug.Write("Found a tag made of bytes"); - // this includes exif user comments - byte[] tagBytes = new byte[componentCount]; - int byteCount = componentCount * BYTES_PER_FORMAT[formatCode]; - for (int i = 0; i < byteCount; i++) - { - tagBytes[i] = base.data[tagValueOffset + i]; - } - directory.SetObject(tagType, tagBytes); - break; - case FMT_STRING: - Debug.Write("Found a tag made of string"); - string lcStr = null; - if (tagType == ExifDirectory.TAG_USER_COMMENT) - { - lcStr = - ReadCommentString( - tagValueOffset, - componentCount, - formatCode); - } - else - { - lcStr = ReadString(tagValueOffset, componentCount); - } - directory.SetObject(tagType, lcStr); - break; - case FMT_SRATIONAL: //goto case FMT_URATIONAL; - case FMT_URATIONAL: - if (componentCount == 1) - { - Debug.Write("Found a tag made of rational"); - Rational rational = new Rational(Get32Bits(tagValueOffset), Get32Bits(tagValueOffset + 4)); - directory.SetObject(tagType, rational); - - } - else - { - Debug.Write("Found a tag made of rationals"); - Rational[] rationals = new Rational[componentCount]; - for (int i = 0; i < componentCount; i++) - { - rationals[i] = new Rational(Get32Bits(tagValueOffset + (8 * i)), Get32Bits(tagValueOffset + 4 + (8 * i))); - } - directory.SetObject(tagType, rationals); - - } - - break; - case FMT_SBYTE: //goto case FMT_BYTE; - case FMT_BYTE: - if (componentCount == 1) - { - Debug.Write("Found a tag made of byte"); - // this may need to be a byte, but I think casting to int is fine - int b = base.data[tagValueOffset]; - directory.SetObject(tagType, b); - } - else - { - Debug.Write("Found a tag made of bytes but will use ints"); - int[] bytes = new int[componentCount]; - for (int i = 0; i < componentCount; i++) - { - bytes[i] = base.data[tagValueOffset + i]; - } - directory.SetIntArray(tagType, bytes); - } - break; - case FMT_SINGLE: //goto case FMT_DOUBLE; - case FMT_DOUBLE: - if (componentCount == 1) - { - Debug.Write("Found a tag made of double but will use int"); - int i = base.data[tagValueOffset]; - directory.SetObject(tagType, i); - } - else - { - Debug.Write("Found a tag made of doubles but will use ints"); - int[] ints = new int[componentCount]; - for (int i = 0; i < componentCount; i++) - { - ints[i] = base.data[tagValueOffset + i]; - } - directory.SetIntArray(tagType, ints); - } - break; - case FMT_USHORT: //goto case FMT_SSHORT; - case FMT_SSHORT: - if (componentCount == 1) - { - Debug.Write("Found a tag made of short but will use int"); - int i = Get16Bits(tagValueOffset); - directory.SetObject(tagType, i); - } - else - { - Debug.Write("Found a tag made of shorts but will use ints"); - int[] ints = new int[componentCount]; - for (int i = 0; i < componentCount; i++) - { - ints[i] = Get16Bits(tagValueOffset + (i * 2)); - } - directory.SetIntArray(tagType, ints); - } - break; - case FMT_SLONG: //goto case FMT_ULONG; - case FMT_ULONG: - if (componentCount == 1) - { - Debug.Write("Found a tag made of long but will use int"); - int i = Get32Bits(tagValueOffset); - directory.SetObject(tagType, i); - } - else - { - Debug.Write("Found a tag made of longs but will use ints"); - int[] ints = new int[componentCount]; - for (int i = 0; i < componentCount; i++) - { - ints[i] = Get32Bits(tagValueOffset + (i * 4)); - } - directory.SetIntArray(tagType, ints); - } - break; - default: - Trace.TraceWarning("Unknown format code " + formatCode + " for tag " + tagType); - break; - } - } - - /// - /// Creates a string from the _data buffer starting at the specified offSet, - /// and ending where byte=='\0' or where Length==maxLength. - /// - /// the lcOffset - /// the max length - /// a string representing what was read - private string ReadString(int offSet, int maxLength) - { - int Length = 0; - while ((offSet + Length) < base.data.Length - && base.data[offSet + Length] != '\0' - && Length < maxLength) - { - Length++; - } - return Utils.Decode(base.data, offSet, Length, false); - } - - /// - /// A special case of ReadString that handle Exif UserComment reading. - /// This method is necessary as certain camere models prefix the comment string - /// with "ASCII\0", which is all that would be returned by ReadString(...). - /// - /// the tag value lcOffset - /// the component count - /// the format code - /// a string - private string ReadCommentString( - int tagValueOffSet, - int componentCount, - int formatCode) - { - // Olympus has this padded with trailing spaces. Remove these first. - // ArrayIndexOutOfBoundsException bug fixed by Hendrik W�rdehoff - 20 Sep 2002 - int byteCount = componentCount * BYTES_PER_FORMAT[formatCode]; - for (int i = byteCount - 1; i >= 0; i--) - { - if (base.data[tagValueOffSet + i] == ' ') - { - base.data[tagValueOffSet + i] = (byte)'\0'; - } - else - { - break; - } - } - // Copy the comment - if ("ASCII".Equals(Utils.Decode(base.data, tagValueOffSet, 5, false))) - { - for (int i = 5; i < 10; i++) - { - byte b = base.data[tagValueOffSet + i]; - if (b != '\0' && b != ' ') - { - return ReadString(tagValueOffSet + i, 1999); - } - } - } - else if ("UNICODE".Equals(Utils.Decode(base.data, tagValueOffSet, 7, false))) - { - int start = tagValueOffSet + 7; - for (int i = start; i < 10 + start; i++) - { - byte b = base.data[i]; - if (b == 0 || (char)b == ' ') - { - continue; - } - else - { - start = i; - break; - } - - } - int end = base.data.Length; - // TODO find a way to cut the string properly - return Utils.Decode(base.data, start, end - start, true); - - } - - // TODO implement support for UNICODE and JIS UserComment encodings..? - return ReadString(tagValueOffSet, 1999); - } - - /// - /// Determine the offSet at which a given InteropArray entry begins within the specified IFD. - /// - /// the offSet at which the IFD starts - /// the zero-based entry number - /// the directory entry lcOffset - private int CalculateDirectoryEntryOffSet( - int ifdStartOffSet, - int entryNumber) - { - return (ifdStartOffSet + 2 + (12 * entryNumber)); - } - - - /// - /// Gets a 16 bit aValue from aFile'str native byte order. Between 0x0000 and 0xFFFF. - /// - /// the lcOffset - /// a 16 bit int - protected override int Get16Bits(int offSet) - { - if (offSet < 0 || offSet >= base.data.Length) - { - throw new IndexOutOfRangeException( - "attempt to read data outside of exif segment (index " - + offSet - + " where max index is " - + (base.data.Length - 1) - + ")"); - } - if (this.isMotorollaByteOrder) - { - // Motorola big first - return (base.data[offSet] << 8 & 0xFF00) | (base.data[offSet + 1] & 0xFF); - } - else - { - // Intel ordering - return (base.data[offSet + 1] << 8 & 0xFF00) | (base.data[offSet] & 0xFF); - } - } - - /// - /// Gets a 32 bit aValue from aFile'str native byte order. - /// - /// the lcOffset - /// a 32b int - protected override int Get32Bits(int offSet) - { - if (offSet < 0 || offSet >= base.data.Length) - { - throw new IndexOutOfRangeException( - "attempt to read data outside of exif segment (index " - + offSet - + " where max index is " - + (base.data.Length - 1) - + ")"); - } - - if (this.isMotorollaByteOrder) - { - // Motorola big first - return (int)(((uint)(base.data[offSet] << 24 & 0xFF000000)) - | ((uint)(base.data[offSet + 1] << 16 & 0xFF0000)) - | ((uint)(base.data[offSet + 2] << 8 & 0xFF00)) - | ((uint)(base.data[offSet + 3] & 0xFF))); - } - else - { - // Intel ordering - return (int)(((uint)(base.data[offSet + 3] << 24 & 0xFF000000)) - | ((uint)(base.data[offSet + 2] << 16 & 0xFF0000)) - | ((uint)(base.data[offSet + 1] << 8 & 0xFF00)) - | ((uint)(base.data[offSet] & 0xFF))); - } - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/FujifilmDescriptor.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/FujifilmDescriptor.cs deleted file mode 100644 index 643ae58..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/FujifilmDescriptor.cs +++ /dev/null @@ -1,425 +0,0 @@ -using com.drew.lang;namespace com.drew.metadata.exif -{ - /// - /// Fujifilm'str digicam added the MakerNote tag from the Year2000'str model - /// (e.g.Finepix1400, Finepix4700). It uses IFD format and start from ASCII character - /// 'FUJIFILM', and next 4 bytes(aValue 0x000c) points the offSet to first IFD entry. - /// Example of actual data structure is shown below. - /// :0000: 46 55 4A 49 46 49 4C 4D-0C 00 00 00 0F 00 00 00 :0000: FUJIFILM........ - /// :0010: 07 00 04 00 00 00 30 31-33 30 00 10 02 00 08 00 :0010: ......0130...... - /// There are two big differences to the other manufacturers. - /// - Fujifilm'str Exif data uses Motorola align, but MakerNote ignores it and uses Intel align. - /// - The other manufacturer'str MakerNote counts the "offSet to data" from the first byte of - /// TIFF lcHeader (same as the other IFD), but Fujifilm counts it from the first byte of MakerNote itself. - /// - - public class FujifilmDescriptor : AbstractTagDescriptor - { - /// - /// Constructor of the object - /// - /// a base.directory - public FujifilmDescriptor(AbstractDirectory aDirectory) : base(aDirectory) - { - } - - /// - /// Returns a descriptive value of the the specified tag for this image. - /// Where possible, known values will be substituted here in place of the raw tokens actually - /// kept in the Exif segment. - /// If no substitution is available, the value provided by GetString(int) will be returned. - /// This and GetString(int) are the only 'get' methods that won't throw an exception. - /// - /// the tag to find a description for - /// a description of the image'str value for the specified tag, or null if the tag hasn't been defined. - public override string GetDescription(int tagType) - { - switch(tagType) - { - case FujifilmDirectory.TAG_FUJIFILM_SHARPNESS : - return GetSharpnessDescription(); - case FujifilmDirectory.TAG_FUJIFILM_WHITE_BALANCE : - return GetWhiteBalanceDescription(); - case FujifilmDirectory.TAG_FUJIFILM_COLOR : - return GetColorDescription(); - case FujifilmDirectory.TAG_FUJIFILM_TONE : - return GetToneDescription(); - case FujifilmDirectory.TAG_FUJIFILM_FLASH_MODE : - return GetFlashModeDescription(); - case FujifilmDirectory.TAG_FUJIFILM_FLASH_STRENGTH : - return GetFlashStrengthDescription(); - case FujifilmDirectory.TAG_FUJIFILM_MACRO : - return GetMacroDescription(); - case FujifilmDirectory.TAG_FUJIFILM_FOCUS_MODE : - return GetFocusModeDescription(); - case FujifilmDirectory.TAG_FUJIFILM_SLOW_SYNCHRO : - return GetSlowSyncDescription(); - case FujifilmDirectory.TAG_FUJIFILM_PICTURE_MODE : - return GetPictureModeDescription(); - case FujifilmDirectory.TAG_FUJIFILM_CONTINUOUS_TAKING_OR_AUTO_BRACKETTING : - return GetContinuousTakingOrAutoBrackettingDescription(); - case FujifilmDirectory.TAG_FUJIFILM_BLUR_WARNING : - return GetBlurWarningDescription(); - case FujifilmDirectory.TAG_FUJIFILM_FOCUS_WARNING : - return GetFocusWarningDescription(); - case FujifilmDirectory.TAG_FUJIFILM_AE_WARNING : - return GetAutoExposureWarningDescription(); - default : - return base.directory.GetString(tagType); - } - } - - /// - /// Returns the Auto Exposure Description. - /// - /// the Auto Exposure Description. - private string GetAutoExposureWarningDescription() - { - if (!base.directory - .ContainsTag(FujifilmDirectory.TAG_FUJIFILM_AE_WARNING)) - return null; - int aValue = - base.directory.GetInt( - FujifilmDirectory.TAG_FUJIFILM_AE_WARNING); - switch (aValue) - { - case 0 : - return BUNDLE["AE_GOOD"]; - case 1 : - return BUNDLE["OVER_EXPOSED"]; - default : - return BUNDLE["UNKNOWN", aValue.ToString()]; - } - } - - /// - /// Returns the Focus Warning Description. - /// - /// the Focus Warning Description. - private string GetFocusWarningDescription() - { - if (!base.directory - .ContainsTag(FujifilmDirectory.TAG_FUJIFILM_FOCUS_WARNING)) - return null; - int aValue = - base.directory.GetInt( - FujifilmDirectory.TAG_FUJIFILM_FOCUS_WARNING); - switch (aValue) - { - case 0 : - return BUNDLE["AUTO_FOCUS_GOOD"]; - case 1 : - return BUNDLE["OUT_OF_FOCUS"]; - default : - return BUNDLE["UNKNOWN", aValue.ToString()]; - } - } - - /// - /// Returns the Blur Warning Description. - /// - /// the Blur Warning Description. - private string GetBlurWarningDescription() - { - if (!base.directory - .ContainsTag(FujifilmDirectory.TAG_FUJIFILM_BLUR_WARNING)) - return null; - int aValue = - base.directory.GetInt( - FujifilmDirectory.TAG_FUJIFILM_BLUR_WARNING); - switch (aValue) - { - case 0 : - return BUNDLE["NO_BLUR_WARNING"]; - case 1 : - return BUNDLE["BLUR_WARNING"]; - default : - return BUNDLE["UNKNOWN", aValue.ToString()]; - } - } - - /// - /// Returns the Continuous Taking Or AutoBracketting Description. - /// - /// the Continuous Taking Or AutoBracketting Description. - private string GetContinuousTakingOrAutoBrackettingDescription() - { - if (!base.directory - .ContainsTag( - FujifilmDirectory - .TAG_FUJIFILM_CONTINUOUS_TAKING_OR_AUTO_BRACKETTING)) - return null; - int aValue = - base.directory.GetInt( - FujifilmDirectory - .TAG_FUJIFILM_CONTINUOUS_TAKING_OR_AUTO_BRACKETTING); - switch (aValue) - { - case 0 : - return BUNDLE["OFF"]; - case 1 : - return BUNDLE["ON"]; - default : - return BUNDLE["UNKNOWN", aValue.ToString()]; - } - } - - /// - /// Returns the Picture Mode Description. - /// - /// the Picture Mode Description. - private string GetPictureModeDescription() - { - if (!base.directory - .ContainsTag(FujifilmDirectory.TAG_FUJIFILM_PICTURE_MODE)) - return null; - int aValue = - base.directory.GetInt( - FujifilmDirectory.TAG_FUJIFILM_PICTURE_MODE); - switch (aValue) - { - case 0 : - return BUNDLE["AUTO"]; - case 1 : - return BUNDLE["PORTRAIT_SCENE"]; - case 2 : - return BUNDLE["LANDSCAPE_SCENE"]; - case 4 : - return BUNDLE["SPORTS_SCENE"]; - case 5 : - return BUNDLE["NIGHT_SCENE"]; - case 6 : - return BUNDLE["PROGRAM_AE"]; - case 256 : - return BUNDLE["APERTURE_PRIORITY_AE"]; - case 512 : - return BUNDLE["SHUTTER_PRIORITY_AE"]; - case 768 : - return BUNDLE["MANUAL_EXPOSURE"]; - default : - return BUNDLE["UNKNOWN", aValue.ToString()]; - } - } - - /// - /// Returns the Slow Sync Description. - /// - /// the Slow Sync Description. - private string GetSlowSyncDescription() - { - if (!base.directory - .ContainsTag(FujifilmDirectory.TAG_FUJIFILM_SLOW_SYNCHRO)) - return null; - int aValue = - base.directory.GetInt( - FujifilmDirectory.TAG_FUJIFILM_SLOW_SYNCHRO); - switch (aValue) - { - case 0 : - return BUNDLE["OFF"]; - case 1 : - return BUNDLE["ON"]; - default : - return BUNDLE["UNKNOWN", aValue.ToString()]; - } - } - - /// - /// Returns the Focus Mode Description. - /// - /// the Focus Mode Description. - private string GetFocusModeDescription() - { - if (!base.directory - .ContainsTag(FujifilmDirectory.TAG_FUJIFILM_FOCUS_MODE)) - return null; - int aValue = - base.directory.GetInt( - FujifilmDirectory.TAG_FUJIFILM_FOCUS_MODE); - switch (aValue) - { - case 0 : - return BUNDLE["AUTO_FOCUS"]; - case 1 : - return BUNDLE["MANUAL_FOCUS"]; - default : - return BUNDLE["UNKNOWN", aValue.ToString()]; - } - } - - /// - /// Returns the Macro Description. - /// - /// the Macro Description. - private string GetMacroDescription() - { - if (!base.directory - .ContainsTag(FujifilmDirectory.TAG_FUJIFILM_MACRO)) - return null; - int aValue = - base.directory.GetInt(FujifilmDirectory.TAG_FUJIFILM_MACRO); - switch (aValue) - { - case 0 : - return BUNDLE["OFF"]; - case 1 : - return BUNDLE["ON"]; - default : - return BUNDLE["UNKNOWN", aValue.ToString()]; - } - } - - /// - /// Returns the Flash Strength Description. - /// - /// the Flash Strength Description. - private string GetFlashStrengthDescription() - { - if (!base.directory - .ContainsTag( - FujifilmDirectory.TAG_FUJIFILM_FLASH_STRENGTH)) - return null; - Rational aValue = - base.directory.GetRational( - FujifilmDirectory.TAG_FUJIFILM_FLASH_STRENGTH); - return BUNDLE["FLASH_STRENGTH", aValue.ToSimpleString(false)]; - } - - /// - /// Returns the Flash Mode Description. - /// - /// the Flash Mode Description. - private string GetFlashModeDescription() - { - if (!base.directory - .ContainsTag(FujifilmDirectory.TAG_FUJIFILM_FLASH_MODE)) - return null; - int aValue = - base.directory.GetInt( - FujifilmDirectory.TAG_FUJIFILM_FLASH_MODE); - switch (aValue) - { - case 0 : - return BUNDLE["AUTO"]; - case 1 : - return BUNDLE["ON"]; - case 2 : - return BUNDLE["OFF"]; - case 3 : - return BUNDLE["RED_EYE_REDUCTION"]; - default : - return BUNDLE["UNKNOWN", aValue.ToString()]; - } - } - - /// - /// Returns the Tone Description. - /// - /// the Tone Description. - private string GetToneDescription() - { - if (!base.directory - .ContainsTag(FujifilmDirectory.TAG_FUJIFILM_TONE)) - return null; - int aValue = - base.directory.GetInt(FujifilmDirectory.TAG_FUJIFILM_TONE); - switch (aValue) - { - case 0 : - return BUNDLE["NORMAL_STD"]; - case 256 : - return BUNDLE["HIGH_HARD"]; - case 512 : - return BUNDLE["LOW_ORG"]; - default : - return BUNDLE["UNKNOWN", aValue.ToString()]; - } - } - - /// - /// Returns the Color Description. - /// - /// the Color Description. - private string GetColorDescription() - { - if (!base.directory - .ContainsTag(FujifilmDirectory.TAG_FUJIFILM_COLOR)) - return null; - int aValue = - base.directory.GetInt(FujifilmDirectory.TAG_FUJIFILM_COLOR); - switch (aValue) - { - case 0 : - return BUNDLE["NORMAL_STD"]; - case 256 : - return BUNDLE["HIGH"]; - case 512 : - return BUNDLE["LOW_ORG"]; - default : - return BUNDLE["UNKNOWN", aValue.ToString()]; - } - } - - /// - /// Returns the White Balance Description. - /// - /// the White Balance Description. - private string GetWhiteBalanceDescription() - { - if (!base.directory - .ContainsTag(FujifilmDirectory.TAG_FUJIFILM_WHITE_BALANCE)) - return null; - int aValue = - base.directory.GetInt( - FujifilmDirectory.TAG_FUJIFILM_WHITE_BALANCE); - switch (aValue) - { - case 0 : - return BUNDLE["AUTO"]; - case 256 : - return BUNDLE["DAYLIGHT"]; - case 512 : - return BUNDLE["CLOUDY"]; - case 768 : - return BUNDLE["DAYLIGHTCOLOR_FLUORESCENCE"]; - case 769 : - return BUNDLE["DAYWHITECOLOR_FLUORESCENCE"]; - case 770 : - return BUNDLE["WHITE_FLUORESCENCE"]; - case 1024 : - return BUNDLE["INCANDENSCENSE"]; - case 3840 : - return BUNDLE["CUSTOM_WHITE_BALANCE"]; - default : - return BUNDLE["UNKNOWN", aValue.ToString()]; - } - } - - /// - /// Returns the Sharpness Description. - /// - /// the Sharpness Description. - private string GetSharpnessDescription() - { - if (!base.directory - .ContainsTag(FujifilmDirectory.TAG_FUJIFILM_SHARPNESS)) - return null; - int aValue = - base.directory.GetInt( - FujifilmDirectory.TAG_FUJIFILM_SHARPNESS); - switch (aValue) - { - case 1 : - case 2 : - return BUNDLE["SOFT"]; - case 3 : - return BUNDLE["NORMAL"]; - case 4 : - case 5 : - return BUNDLE["HARD"]; - default : - return BUNDLE["UNKNOWN", aValue.ToString()]; - } - } - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/FujifilmDirectory.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/FujifilmDirectory.cs deleted file mode 100644 index 22ea299..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/FujifilmDirectory.cs +++ /dev/null @@ -1,38 +0,0 @@ -namespace com.drew.metadata.exif -{ - /// - /// The Fuji Film Makernote Directory - /// - - public class FujifilmDirectory : AbstractDirectory - { - public const int TAG_FUJIFILM_MAKERNOTE_VERSION = 0x0000; - public const int TAG_FUJIFILM_QUALITY = 0x1000; - public const int TAG_FUJIFILM_SHARPNESS = 0x1001; - public const int TAG_FUJIFILM_WHITE_BALANCE = 0x1002; - public const int TAG_FUJIFILM_COLOR = 0x1003; - public const int TAG_FUJIFILM_TONE = 0x1004; - public const int TAG_FUJIFILM_FLASH_MODE = 0x1010; - public const int TAG_FUJIFILM_FLASH_STRENGTH = 0x1011; - public const int TAG_FUJIFILM_MACRO = 0x1020; - public const int TAG_FUJIFILM_FOCUS_MODE = 0x1021; - public const int TAG_FUJIFILM_SLOW_SYNCHRO = 0x1030; - public const int TAG_FUJIFILM_PICTURE_MODE = 0x1031; - public const int TAG_FUJIFILM_UNKNOWN_1 = 0x1032; - public const int TAG_FUJIFILM_CONTINUOUS_TAKING_OR_AUTO_BRACKETTING = 0x1100; - public const int TAG_FUJIFILM_UNKNOWN_2 = 0x1200; - public const int TAG_FUJIFILM_BLUR_WARNING = 0x1300; - public const int TAG_FUJIFILM_FOCUS_WARNING = 0x1301; - public const int TAG_FUJIFILM_AE_WARNING = 0x1302; - - /// - /// Constructor of the object. - /// - public FujifilmDirectory() - : base("FujiFilmMarkernote") - { - this.SetDescriptor(new FujifilmDescriptor(this)); - } - - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/GpsDescriptor.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/GpsDescriptor.cs deleted file mode 100644 index d1a0eec..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/GpsDescriptor.cs +++ /dev/null @@ -1,277 +0,0 @@ -using com.drew.lang; - -namespace com.drew.metadata.exif -{ - /// - /// Tag descriptor for GPS - /// - - public class GpsDescriptor : AbstractTagDescriptor - { - /// - /// Constructor of the object - /// - /// a base.directory - public GpsDescriptor(AbstractDirectory aDirectory) : base(aDirectory) - { - } - - /// - /// Returns a descriptive value of the the specified tag for this image. - /// Where possible, known values will be substituted here in place of the raw tokens actually - /// kept in the Exif segment. - /// If no substitution is available, the value provided by GetString(int) will be returned. - /// This and GetString(int) are the only 'get' methods that won't throw an exception. - /// - /// the tag to find a description for - /// a description of the image'str value for the specified tag, or null if the tag hasn't been defined. - public override string GetDescription(int tagType) - { - switch(tagType) - { - case GpsDirectory.TAG_GPS_ALTITUDE : - return GetGpsAltitudeDescription(); - case GpsDirectory.TAG_GPS_ALTITUDE_REF : - return GetGpsAltitudeRefDescription(); - case GpsDirectory.TAG_GPS_STATUS : - return GetGpsStatusDescription(); - case GpsDirectory.TAG_GPS_MEASURE_MODE : - return GetGpsMeasureModeDescription(); - case GpsDirectory.TAG_GPS_SPEED_REF : - return GetGpsSpeedRefDescription(); - case GpsDirectory.TAG_GPS_TRACK_REF : - case GpsDirectory.TAG_GPS_IMG_DIRECTION_REF : - case GpsDirectory.TAG_GPS_DEST_BEARING_REF : - return GetGpsDirectionReferenceDescription(tagType); - case GpsDirectory.TAG_GPS_TRACK : - case GpsDirectory.TAG_GPS_IMG_DIRECTION : - case GpsDirectory.TAG_GPS_DEST_BEARING : - return GetGpsDirectionDescription(tagType); - case GpsDirectory.TAG_GPS_DEST_DISTANCE_REF : - return GetGpsDestinationReferenceDescription(); - case GpsDirectory.TAG_GPS_TIME_STAMP : - return GetGpsTimeStampDescription(); - // three rational numbers -- displayed in HH"MM"SS.ss - case GpsDirectory.TAG_GPS_LONGITUDE : - return GetGpsLongitudeDescription(); - case GpsDirectory.TAG_GPS_LATITUDE : - return GetGpsLatitudeDescription(); - default : - return base.directory.GetString(tagType); - } - } - - /// - /// Returns the Gps Latitude Description. - /// - /// the Gps Latitude Description. - private string GetGpsLatitudeDescription() - { - if (!base.directory.ContainsTag(GpsDirectory.TAG_GPS_LATITUDE)) - { - return null; - } - return GetHoursMinutesSecondsDescription(GpsDirectory.TAG_GPS_LATITUDE); - } - - /// - /// Returns the Gps Longitude Description. - /// - /// the Gps Longitude Description. - private string GetGpsLongitudeDescription() - { - if (!base.directory.ContainsTag(GpsDirectory.TAG_GPS_LONGITUDE)) - { - return null; - } - return GetHoursMinutesSecondsDescription( - GpsDirectory.TAG_GPS_LONGITUDE); - } - - /// - /// Returns the Hours Minutes Seconds Description. - /// - /// the tag type - /// the Hours Minutes Seconds Description. - private string GetHoursMinutesSecondsDescription(int tagType) - { - Rational[] components = base.directory.GetRationalArray(tagType); - // TODO create an HoursMinutesSecods class ?? - int deg = components[0].IntValue(); - float min = components[1].FloatValue(); - float sec = components[2].FloatValue(); - // carry fractions of minutes into seconds -- thanks Colin Briton - sec += (min % 1) * 60; - string[] tab = new string[] {deg.ToString(), ((int) min).ToString(), sec.ToString()}; - return BUNDLE["HOURS_MINUTES_SECONDS", tab]; - } - - /// - /// Returns the Gps Time Stamp Description. - /// - /// the Gps Time Stamp Description. - private string GetGpsTimeStampDescription() - { - // time in hour, min, sec - if (!base.directory.ContainsTag(GpsDirectory.TAG_GPS_TIME_STAMP)) - { - return null; - } - int[] timeComponents = - base.directory.GetIntArray(GpsDirectory.TAG_GPS_TIME_STAMP); - string[] tab = new string[] {timeComponents[0].ToString(), timeComponents[1].ToString(), timeComponents[2].ToString()}; - return BUNDLE["GPS_TIME_STAMP", tab]; - } - - /// - /// Returns the Gps Destination Reference Description. - /// - /// the Gps Destination Reference Description. - private string GetGpsDestinationReferenceDescription() - { - if (!base.directory.ContainsTag(GpsDirectory.TAG_GPS_DEST_DISTANCE_REF)) - { - return null; - } - string destRef = - base.directory.GetString(GpsDirectory.TAG_GPS_DEST_DISTANCE_REF).Trim().ToUpper(); - switch (destRef) - { - case "K": return BUNDLE["KILOMETERS"]; - case "M": return BUNDLE["MILES"]; - case "N": return BUNDLE["KNOTS"]; - default: return BUNDLE["UNKNOWN", destRef]; - } - } - - /// - /// Returns the Gps Direction Description. - /// - /// the Gps Direction Description. - private string GetGpsDirectionDescription(int tagType) - { - if (!base.directory.ContainsTag(tagType)) - { - return null; - } - string gpsDirection = base.directory.GetString(tagType).Trim(); - return BUNDLE["DEGREES", gpsDirection]; - } - - /// - /// Returns the Gps Direction Reference Description. - /// - /// the Gps Direction Reference Description. - private string GetGpsDirectionReferenceDescription(int tagType) - { - if (!base.directory.ContainsTag(tagType)) - { - return null; - } - string gpsDistRef = base.directory.GetString(tagType).Trim().ToUpper(); - switch (gpsDistRef) - { - case "T": return BUNDLE["TRUE_DIRECTION"]; - case "M": return BUNDLE["MAGNETIC_DIRECTION"]; - default: return BUNDLE["UNKNOWN", gpsDistRef]; - } - } - - /// - /// Returns the Gps Speed Ref Description. - /// - /// the Gps Speed Ref Description. - private string GetGpsSpeedRefDescription() - { - if (!base.directory.ContainsTag(GpsDirectory.TAG_GPS_SPEED_REF)) - { - return null; - } - string gpsSpeedRef = - base.directory.GetString(GpsDirectory.TAG_GPS_SPEED_REF).Trim().ToUpper(); - switch (gpsSpeedRef) - { - case "K": return BUNDLE["KPH"]; - case "M": return BUNDLE["MPH"]; - case "N": return BUNDLE["KNOTS"]; - default: return BUNDLE["UNKNOWN", gpsSpeedRef]; - } - } - - /// - /// Returns the Gps Measure Mode Description. - /// - /// the Gps Measure Mode Description. - private string GetGpsMeasureModeDescription() - { - if (!base.directory.ContainsTag(GpsDirectory.TAG_GPS_MEASURE_MODE)) - { - return null; - } - string gpsSpeedMeasureMode = - base.directory.GetString(GpsDirectory.TAG_GPS_MEASURE_MODE).Trim(); - - switch (gpsSpeedMeasureMode) - { - case "2": - case "3": return BUNDLE["DIMENSIONAL_MEASUREMENT", gpsSpeedMeasureMode]; - default: return BUNDLE["UNKNOWN", gpsSpeedMeasureMode]; - } - } - - /// - /// Returns the Gps Status Description. - /// - /// the Gps Status Description. - private string GetGpsStatusDescription() - { - if (!base.directory.ContainsTag(GpsDirectory.TAG_GPS_STATUS)) - { - return null; - } - string gpsStatus = - base.directory.GetString(GpsDirectory.TAG_GPS_STATUS).Trim().ToUpper(); - switch (gpsStatus) - { - case "A": return BUNDLE["MEASUREMENT_IN_PROGESS"]; - case "V": return BUNDLE["MEASUREMENT_INTEROPERABILITY"]; - default: return BUNDLE["UNKNOWN", gpsStatus]; - } - } - - /// - /// Returns the Gps Altitude Ref Description. - /// - /// the Gps Altitude Ref Description. - private string GetGpsAltitudeRefDescription() - { - if (!base.directory.ContainsTag(GpsDirectory.TAG_GPS_ALTITUDE_REF)) - { - return null; - } - int alititudeRef = base.directory.GetInt(GpsDirectory.TAG_GPS_ALTITUDE_REF); - if (alititudeRef == 0) - { - return BUNDLE["SEA_LEVEL"]; - } - return BUNDLE["UNKNOWN", alititudeRef.ToString()]; - } - - /// - /// Returns the Gps Altitude Description. - /// - /// the Gps Altitude Description. - private string GetGpsAltitudeDescription() - { - if (!base.directory.ContainsTag(GpsDirectory.TAG_GPS_ALTITUDE)) - { - return null; - } - string alititude = - base.directory.GetRational( - GpsDirectory.TAG_GPS_ALTITUDE).ToSimpleString( - true); - return BUNDLE["METRES", alititude]; - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/GpsDirectory.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/GpsDirectory.cs deleted file mode 100644 index 5e8f4c4..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/GpsDirectory.cs +++ /dev/null @@ -1,127 +0,0 @@ -namespace com.drew.metadata.exif -{ - /// - /// The GPS Directory class - /// - - public class GpsDirectory : AbstractDirectory - { - /// - /// GPS tag version GPSVersionID 0 0 BYTE 4 - /// - public const int TAG_GPS_VERSION_ID = 0x0000; - /// - /// North or South Latitude GPSLatitudeRef 1 1 ASCII 2 - /// - public const int TAG_GPS_LATITUDE_REF = 0x0001; - /// - /// Latitude GPSLatitude 2 2 RATIONAL 3 - /// - public const int TAG_GPS_LATITUDE = 0x0002; - /// - /// East or West Longitude GPSLongitudeRef 3 3 ASCII 2 - /// - public const int TAG_GPS_LONGITUDE_REF = 0x0003; - /// - /// Longitude GPSLongitude 4 4 RATIONAL 3 - /// - public const int TAG_GPS_LONGITUDE = 0x0004; - /// - /// Altitude reference GPSAltitudeRef 5 5 BYTE 1 - /// - public const int TAG_GPS_ALTITUDE_REF = 0x0005; - /// - /// Altitude GPSAltitude 6 6 RATIONAL 1 - /// - public const int TAG_GPS_ALTITUDE = 0x0006; - /// - /// GPS time (atomic clock) GPSTimeStamp 7 7 RATIONAL 3 - /// - public const int TAG_GPS_TIME_STAMP = 0x0007; - /// - /// GPS satellites used for measurement GPSSatellites 8 8 ASCII Any - /// - public const int TAG_GPS_SATELLITES = 0x0008; - /// - /// GPS receiver status GPSStatus 9 9 ASCII 2 - /// - public const int TAG_GPS_STATUS = 0x0009; - /// - /// GPS measurement mode GPSMeasureMode 10 A ASCII 2 - /// - public const int TAG_GPS_MEASURE_MODE = 0x000A; - /// - /// Measurement precision GPSDOP 11 B RATIONAL 1 - /// - public const int TAG_GPS_DOP = 0x000B; - /// - /// Speed unit GPSSpeedRef 12 C ASCII 2 - /// - public const int TAG_GPS_SPEED_REF = 0x000C; - /// - /// Speed of GPS receiver GPSSpeed 13 D RATIONAL 1 - /// - public const int TAG_GPS_SPEED = 0x000D; - /// - /// Reference for direction of movement GPSTrackRef 14 E ASCII 2 - /// - public const int TAG_GPS_TRACK_REF = 0x000E; - /// - /// Direction of movement GPSTrack 15 F RATIONAL 1 - /// - public const int TAG_GPS_TRACK = 0x000F; - /// - /// Reference for direction of image GPSImgDirectionRef 16 10 ASCII 2 - /// - public const int TAG_GPS_IMG_DIRECTION_REF = 0x0010; - /// - /// Direction of image GPSImgDirection 17 11 RATIONAL 1 - /// - public const int TAG_GPS_IMG_DIRECTION = 0x0011; - /// - /// Geodetic survey data used GPSMapDatum 18 12 ASCII Any - /// - public const int TAG_GPS_MAP_DATUM = 0x0012; - /// - /// Reference for latitude of destination GPSDestLatitudeRef 19 13 ASCII 2 - /// - public const int TAG_GPS_DEST_LATITUDE_REF = 0x0013; - /// - /// Latitude of destination GPSDestLatitude 20 14 RATIONAL 3 - /// - public const int TAG_GPS_DEST_LATITUDE = 0x0014; - /// - /// Reference for longitude of destination GPSDestLongitudeRef 21 15 ASCII 2 - /// - public const int TAG_GPS_DEST_LONGITUDE_REF = 0x0015; - /// - /// Longitude of destination GPSDestLongitude 22 16 RATIONAL 3 - /// - public const int TAG_GPS_DEST_LONGITUDE = 0x0016; - /// - /// Reference for bearing of destination GPSDestBearingRef 23 17 ASCII 2 - /// - public const int TAG_GPS_DEST_BEARING_REF = 0x0017; - /// - /// Bearing of destination GPSDestBearing 24 18 RATIONAL 1 - /// - public const int TAG_GPS_DEST_BEARING = 0x0018; - /// - /// Reference for distance to destination GPSDestDistanceRef 25 19 ASCII 2 - /// - public const int TAG_GPS_DEST_DISTANCE_REF = 0x0019; - /// - /// Distance to destination GPSDestDistance 26 1A RATIONAL 1 - /// - public const int TAG_GPS_DEST_DISTANCE = 0x001A; - - /// - /// Constructor of the object. - /// - public GpsDirectory() - : base("GpsMarkernote") - { - this.SetDescriptor(new GpsDescriptor(this)); - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/KodakDescriptor.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/KodakDescriptor.cs deleted file mode 100644 index d052043..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/KodakDescriptor.cs +++ /dev/null @@ -1,34 +0,0 @@ -namespace com.drew.metadata.exif -{ - /// - /// Tag descriptor for Kodak - /// - /// Thanks to David Carson for the initial version of this class. - /// - - public class KodakDescriptor : AbstractTagDescriptor - { - /// - /// Constructor of the object - /// - /// a directory - public KodakDescriptor(AbstractDirectory directory) - : base(directory) - { - } - - /// - /// Returns a descriptive value of the the specified tag for this image. - /// Where possible, known values will be substituted here in place of the raw tokens actually - /// kept in the Exif segment. - /// If no substitution is available, the value provided by GetString(int) will be returned. - /// This and GetString(int) are the only 'get' methods that won't throw an exception. - /// - /// the tag to find a description for - /// a description of the image'str value for the specified tag, or null if the tag hasn't been defined. - public override string GetDescription(int aTagType) - { - return base.directory.GetString(aTagType); - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/KodakDirectory.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/KodakDirectory.cs deleted file mode 100644 index 06c7cc1..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/KodakDirectory.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace com.drew.metadata.exif -{ - /// - /// The GPS Directory class - /// - - public class KodakDirectory : AbstractDirectory - { - // No Tag for now - - /// - /// Constructor of the object. - /// - public KodakDirectory() - : base("KodakMarkernote") - { - this.SetDescriptor(new KodakDescriptor(this)); - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/KyoceraDescriptor.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/KyoceraDescriptor.cs deleted file mode 100644 index fc3fac8..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/KyoceraDescriptor.cs +++ /dev/null @@ -1,68 +0,0 @@ -namespace com.drew.metadata.exif -{ - /// - /// Tag descriptor for Kyocera - /// - - public class KyoceraDescriptor : AbstractTagDescriptor - { - /// - /// Constructor of the object - /// - /// a base.directory - public KyoceraDescriptor(AbstractDirectory aDirectory) - : base(aDirectory) - { - } - - /// - /// Returns a descriptive value of the the specified tag for this image. - /// Where possible, known values will be substituted here in place of the raw tokens actually - /// kept in the Exif segment. - /// If no substitution is available, the value provided by GetString(int) will be returned. - /// This and GetString(int) are the only 'get' methods that won't throw an exception. - /// - /// the tag to find a description for - /// a description of the image'str value for the specified tag, or null if the tag hasn't been defined. - public override string GetDescription(int aTagType) - { - switch (aTagType) - { - case KyoceraDirectory.TAG_KYOCERA_PRINT_IMAGE_MATCHING_INFO: - return GetPrintImageMatchingInfoDescription(); - case KyoceraDirectory.TAG_KYOCERA_PROPRIETARY_THUMBNAIL: - return GetProprietaryThumbnailDataDescription(); - default: - return base.directory.GetString(aTagType); - } - } - - /// - /// Returns Print Image Matching (PIM) Info Description. - /// - /// the Print Image Matching (PIM) Info Description. - private string GetPrintImageMatchingInfoDescription() - { - if (!base.directory.ContainsTag(KyoceraDirectory.TAG_KYOCERA_PRINT_IMAGE_MATCHING_INFO)) - { - return null; - } - byte[] bytes = base.directory.GetByteArray(KyoceraDirectory.TAG_KYOCERA_PRINT_IMAGE_MATCHING_INFO); - return BUNDLE["BYTES",bytes.Length.ToString()]; - } - - /// - /// Returns Proprietary Thumbnail Format Data Description. - /// - /// the Proprietary Thumbnail Format Data Description. - private string GetProprietaryThumbnailDataDescription() - { - if (!base.directory.ContainsTag(KyoceraDirectory.TAG_KYOCERA_PROPRIETARY_THUMBNAIL)) - { - return null; - } - byte[] bytes = base.directory.GetByteArray(KyoceraDirectory.TAG_KYOCERA_PROPRIETARY_THUMBNAIL); - return BUNDLE["BYTES", bytes.Length.ToString()]; - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/KyoceraDirectory.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/KyoceraDirectory.cs deleted file mode 100644 index 230a7db..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/KyoceraDirectory.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace com.drew.metadata.exif -{ - /// - /// The GPS Directory class - /// - - public class KyoceraDirectory : AbstractDirectory - { - public const int TAG_KYOCERA_PROPRIETARY_THUMBNAIL = 0x0001; - public const int TAG_KYOCERA_PRINT_IMAGE_MATCHING_INFO = 0x0E00; - - /// - /// Constructor of the object. - /// - public KyoceraDirectory() - : base("KyoceraMarkernote") - { - this.SetDescriptor(new KyoceraDescriptor(this)); - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/NikonType1Descriptor.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/NikonType1Descriptor.cs deleted file mode 100644 index 5e94939..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/NikonType1Descriptor.cs +++ /dev/null @@ -1,285 +0,0 @@ -using com.drew.lang; - -namespace com.drew.metadata.exif -{ - /// - /// There are 3 formats of Nikon'str MakerNote. MakerNote of E700/E800/E900/E900S/E910/E950 starts - /// from ASCII string "Nikon". Data format is the same as IFD, but it starts from offSet 0x08. - /// This is the same as Olympus except start string. Example of actual data structure is shown below. - /// :0000: 4E 69 6B 6F 6E 00 01 00-05 00 02 00 02 00 06 00 Nikon........... - /// :0010: 00 00 EC 02 00 00 03 00-03 00 01 00 00 00 06 00 ................ - /// - - public class NikonType1Descriptor : AbstractTagDescriptor - { - - /// - /// Constructor of the object - /// - /// a base.directory - public NikonType1Descriptor(AbstractDirectory aDirectory) : base(aDirectory) - { - } - - /// - /// Returns a descriptive value of the the specified tag for this image. - /// Where possible, known values will be substituted here in place of the raw tokens actually - /// kept in the Exif segment. - /// If no substitution is available, the value provided by GetString(int) will be returned. - /// This and GetString(int) are the only 'get' methods that won't throw an exception. - /// - /// the tag to find a description for - /// a description of the image'str value for the specified tag, or null if the tag hasn't been defined. - public override string GetDescription(int tagType) - { - switch(tagType) - { - case NikonType1Directory.TAG_NIKON_TYPE1_QUALITY : - return GetQualityDescription(); - case NikonType1Directory.TAG_NIKON_TYPE1_COLOR_MODE : - return GetColorModeDescription(); - case NikonType1Directory.TAG_NIKON_TYPE1_IMAGE_ADJUSTMENT : - return GetImageAdjustmentDescription(); - case NikonType1Directory.TAG_NIKON_TYPE1_CCD_SENSITIVITY : - return GetCcdSensitivityDescription(); - case NikonType1Directory.TAG_NIKON_TYPE1_WHITE_BALANCE : - return GetWhiteBalanceDescription(); - case NikonType1Directory.TAG_NIKON_TYPE1_FOCUS : - return GetFocusDescription(); - case NikonType1Directory.TAG_NIKON_TYPE1_DIGITAL_ZOOM : - return GetDigitalZoomDescription(); - case NikonType1Directory.TAG_NIKON_TYPE1_CONVERTER : - return GetConverterDescription(); - default : - return base.directory.GetString(tagType); - } - } - - /// - /// Returns the Converter Description. - /// - /// the Converter Description. - private string GetConverterDescription() - { - if (!base.directory - .ContainsTag( - NikonType1Directory.TAG_NIKON_TYPE1_CONVERTER)) - { - return null; - } - int aValue = - base.directory.GetInt( - NikonType1Directory.TAG_NIKON_TYPE1_CONVERTER); - switch (aValue) - { - case 0 : - return BUNDLE["NONE"]; - case 1 : - return BUNDLE["FISHEYE_CONVERTER"]; - default : - return BUNDLE["UNKNOWN", aValue.ToString()]; - } - } - - /// - /// Returns the Digital Zoom Description. - /// - /// the Digital Zoom Description. - private string GetDigitalZoomDescription() - { - if (!base.directory - .ContainsTag( - NikonType1Directory.TAG_NIKON_TYPE1_DIGITAL_ZOOM)) - { - return null; - } - Rational aValue = - base.directory.GetRational( - NikonType1Directory.TAG_NIKON_TYPE1_DIGITAL_ZOOM); - if (aValue.GetNumerator() == 0) - { - return BUNDLE["NO_DIGITAL_ZOOM"]; - } - return BUNDLE["DIGITAL_ZOOM", aValue.ToSimpleString(true)]; - } - - /// - /// Returns the Focus Description. - /// - /// the Focus Description. - private string GetFocusDescription() - { - if (!base.directory - .ContainsTag(NikonType1Directory.TAG_NIKON_TYPE1_FOCUS)) - { - return null; - } - Rational aValue = - base.directory.GetRational( - NikonType1Directory.TAG_NIKON_TYPE1_FOCUS); - if (aValue.GetNumerator() == 1 && aValue.GetDenominator() == 0) - { - return BUNDLE["INFINITE"]; - } - return aValue.ToSimpleString(true); - } - - /// - /// Returns the White Balance Description. - /// - /// the White Balance Description. - private string GetWhiteBalanceDescription() - { - if (!base.directory - .ContainsTag( - NikonType1Directory.TAG_NIKON_TYPE1_WHITE_BALANCE)) - { - - return null; - } - int aValue = - base.directory.GetInt( - NikonType1Directory.TAG_NIKON_TYPE1_WHITE_BALANCE); - switch (aValue) - { - case 0 : - return BUNDLE["AUTO"]; - case 1 : - return BUNDLE["PRESET"]; - case 2 : - return BUNDLE["DAYLIGHT"]; - case 3 : - return BUNDLE["INCANDESCENSE"]; - case 4 : - return BUNDLE["FLUORESCENT"]; - case 5 : - return BUNDLE["CLOUDY"]; - case 6 : - return BUNDLE["SPEEDLIGHT"]; - default : - return BUNDLE["UNKNOWN", aValue.ToString()]; - } - } - - /// - /// Returns the Ccd Sensitivity Description. - /// - /// the Ccd Sensitivity Description. - private string GetCcdSensitivityDescription() - { - if (!base.directory - .ContainsTag( - NikonType1Directory.TAG_NIKON_TYPE1_CCD_SENSITIVITY)) - { - return null; - } - int aValue = - base.directory.GetInt( - NikonType1Directory.TAG_NIKON_TYPE1_CCD_SENSITIVITY); - switch (aValue) - { - case 0 : - return BUNDLE["ISO","80"]; - case 2 : - return BUNDLE["ISO","160"]; - case 4 : - return BUNDLE["ISO","320"]; - case 5 : - return BUNDLE["ISO","100"]; - default : - return BUNDLE["UNKNOWN", aValue.ToString()]; - } - } - - /// - /// Returns the Image Adjustment Description. - /// - /// the Image Adjustment Description. - private string GetImageAdjustmentDescription() - { - if (!base.directory - .ContainsTag( - NikonType1Directory.TAG_NIKON_TYPE1_IMAGE_ADJUSTMENT)) - { - return null; - } - int aValue = - base.directory.GetInt( - NikonType1Directory.TAG_NIKON_TYPE1_IMAGE_ADJUSTMENT); - switch (aValue) - { - case 0 : - return BUNDLE["NORMAL"]; - case 1 : - return BUNDLE["BRIGHT_P"]; - case 2 : - return BUNDLE["BRIGHT_M"]; - case 3 : - return BUNDLE["CONTRAST_P"]; - case 4 : - return BUNDLE["CONTRAST_M"]; - default : - return BUNDLE["UNKNOWN", aValue.ToString()]; - } - } - - /// - /// Returns the Color Mode Description. - /// - /// the Color Mode Description. - private string GetColorModeDescription() - { - if (!base.directory - .ContainsTag( - NikonType1Directory.TAG_NIKON_TYPE1_COLOR_MODE)) - { - return null; - } - int aValue = - base.directory.GetInt( - NikonType1Directory.TAG_NIKON_TYPE1_COLOR_MODE); - switch (aValue) - { - case 1 : - return BUNDLE["COLOR"]; - case 2 : - return BUNDLE["MONOCHROME"]; - default : - return BUNDLE["UNKNOWN", aValue.ToString()]; - } - } - - /// - /// Returns the Quality Description. - /// - /// the Quality Description. - private string GetQualityDescription() - { - if (!base.directory - .ContainsTag(NikonType1Directory.TAG_NIKON_TYPE1_QUALITY)) - { - return null; - } - int aValue = - base.directory.GetInt( - NikonType1Directory.TAG_NIKON_TYPE1_QUALITY); - switch (aValue) - { - case 1 : - return BUNDLE["VGA_BASIC"]; - case 2 : - return BUNDLE["VGA_NORMAL"]; - case 3 : - return BUNDLE["VGA_FINE"]; - case 4 : - return BUNDLE["SXGA_BASIC"]; - case 5 : - return BUNDLE["SXGA_NORMAL"]; - case 6 : - return BUNDLE["SXGA_FINE"]; - default : - return BUNDLE["UNKNOWN", aValue.ToString()]; - } - } - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/NikonType1Directory.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/NikonType1Directory.cs deleted file mode 100644 index b445eee..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/NikonType1Directory.cs +++ /dev/null @@ -1,28 +0,0 @@ -namespace com.drew.metadata.exif -{ - - public class NikonType1Directory : AbstractNikonTypeDirectory - { - // TYPE1 is for E-Series cameras prior to (not including) E990 - public const int TAG_NIKON_TYPE1_UNKNOWN_1 = 0x0002; - public const int TAG_NIKON_TYPE1_QUALITY = 0x0003; - public const int TAG_NIKON_TYPE1_COLOR_MODE = 0x0004; - public const int TAG_NIKON_TYPE1_IMAGE_ADJUSTMENT = 0x0005; - public const int TAG_NIKON_TYPE1_CCD_SENSITIVITY = 0x0006; - public const int TAG_NIKON_TYPE1_WHITE_BALANCE = 0x0007; - public const int TAG_NIKON_TYPE1_FOCUS = 0x0008; - public const int TAG_NIKON_TYPE1_UNKNOWN_2 = 0x0009; - public const int TAG_NIKON_TYPE1_DIGITAL_ZOOM = 0x000A; - public const int TAG_NIKON_TYPE1_CONVERTER = 0x000B; - public const int TAG_NIKON_TYPE1_UNKNOWN_3 = 0x0F00; - - /// - /// Constructor of the object. - /// - public NikonType1Directory() - : base("NikonTypeMarkernote") - { - this.SetDescriptor(new NikonType1Descriptor(this)); - } - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/NikonType2Descriptor.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/NikonType2Descriptor.cs deleted file mode 100644 index 798ee53..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/NikonType2Descriptor.cs +++ /dev/null @@ -1,229 +0,0 @@ -using System; -using com.drew.lang; - -namespace com.drew.metadata.exif -{ - /// - /// Tag descriptor for Nikon - /// - - public class NikonType2Descriptor : AbstractTagDescriptor - { - /// - /// Constructor of the object - /// - /// a base.directory - public NikonType2Descriptor(AbstractDirectory aDirectory) - : base(aDirectory) - { - } - - /// - /// Returns a descriptive value of the the specified tag for this image. - /// Where possible, known values will be substituted here in place of the raw tokens actually - /// kept in the Exif segment. - /// If no substitution is available, the value provided by GetString(int) will be returned. - /// This and GetString(int) are the only 'get' methods that won't throw an exception. - /// - /// the tag to find a description for - /// a description of the image'str value for the specified tag, or null if the tag hasn't been defined. - public override string GetDescription(int tagType) - { - switch (tagType) - { - case NikonType2Directory.TAG_NIKON_TYPE2_LENS: - return GetLensDescription(); - case NikonType2Directory.TAG_NIKON_TYPE2_CAMERA_HUE_ADJUSTMENT: - return GetHueAdjustmentDescription(); - case NikonType2Directory.TAG_NIKON_TYPE2_CAMERA_COLOR_MODE: - return GetColorModeDescription(); - case NikonType2Directory.TAG_NIKON_TYPE2_AUTO_FLASH_COMPENSATION: - return GetAutoFlashCompensationDescription(); - case NikonType2Directory.TAG_NIKON_TYPE2_ISO_1: - return GetIsoSettingDescription(); - case NikonType2Directory.TAG_NIKON_TYPE2_DIGITAL_ZOOM: - return GetDigitalZoomDescription(); - case NikonType2Directory.TAG_NIKON_TYPE2_AF_FOCUS_POSITION: - return GetAutoFocusPositionDescription(); - case NikonType2Directory.TAG_NIKON_TYPE2_FIRMWARE_VERSION: - return GetAutoFirmwareVersionDescription(); - default: - return base.directory.GetString(tagType); - } - } - - /// - /// Returns auto focus position Description. - /// - /// the auto focus position Description. - private string GetAutoFocusPositionDescription() - { - if (!base.directory.ContainsTag(NikonType2Directory.TAG_NIKON_TYPE2_AF_FOCUS_POSITION)) - { - return null; - } - int[] values = base.directory.GetIntArray(NikonType2Directory.TAG_NIKON_TYPE2_AF_FOCUS_POSITION); - if (values.Length != 4 || values[0] != 0 || values[2] != 0 || values[3] != 0) - { - return BUNDLE["UNKNOWN", base.directory.GetString(NikonType2Directory.TAG_NIKON_TYPE2_AF_FOCUS_POSITION)]; - } - switch (values[1]) - { - case 0: - return BUNDLE["CENTER"]; - case 1: - return BUNDLE["TOP"]; - case 2: - return BUNDLE["BOTTOM"]; - case 3: - return BUNDLE["LEFT"]; - case 4: - return BUNDLE["RIGHT"]; - default: - return BUNDLE["UNKNOWN", values[1].ToString()]; - } - } - - /// - /// Returns digital zoom Description. - /// - /// the digital zoom Description. - private string GetDigitalZoomDescription() - { - if (!base.directory.ContainsTag(NikonType2Directory.TAG_NIKON_TYPE2_DIGITAL_ZOOM)) - { - return null; - } - Rational rational = base.directory.GetRational(NikonType2Directory.TAG_NIKON_TYPE2_DIGITAL_ZOOM); - if (rational.IntValue() == 1) - { - return BUNDLE["NO_DIGITAL_ZOOM"]; - } - return BUNDLE["DIGITAL_ZOOM", rational.ToSimpleString(true)]; - } - - /// - /// Returns iso setting Description. - /// - /// the iso setting Description. - private string GetIsoSettingDescription() - { - if (!base.directory.ContainsTag(NikonType2Directory.TAG_NIKON_TYPE2_ISO_1)) - { - return null; - } - int[] values = base.directory.GetIntArray(NikonType2Directory.TAG_NIKON_TYPE2_ISO_1); - if (values[0] != 0 || values[1] == 0) - { - return BUNDLE["UNKNOWN", base.directory.GetString(NikonType2Directory.TAG_NIKON_TYPE2_ISO_1)]; - } - return BUNDLE["ISO", values[1].ToString()]; - } - - /// - /// Returns auto flash compensation Description. - /// - /// the auto flash compensation Description. - private Rational GetAutoFlashCompensation() - { - if (!base.directory.ContainsTag(NikonType2Directory.TAG_NIKON_TYPE2_AUTO_FLASH_COMPENSATION)) - { - return null; - } - byte[] bytes = base.directory.GetByteArray(NikonType2Directory.TAG_NIKON_TYPE2_AUTO_FLASH_COMPENSATION); - - if (bytes.Length == 3) - { - byte denominator = bytes[2]; - int numerator = (int)bytes[0] * bytes[1]; - return new Rational(numerator, denominator); - } - return null; - } - - /// - /// Returns auto falsh compensation Description. - /// - /// the auto falsh compensation Description. - private string GetAutoFlashCompensationDescription() - { - Rational ev = this.GetAutoFlashCompensation(); - - if (ev == null) - { - return BUNDLE["UNKNOWN", "null"]; - } - return BUNDLE["FLASH_SIMPLE", ev.FloatValue().ToString("0.##")]; - } - - /// - /// Returns lens Description. - /// - /// the lens Description. - private string GetLensDescription() - { - if (!base.directory.ContainsTag(NikonType2Directory.TAG_NIKON_TYPE2_LENS)) - { - return null; - } - - Rational[] lensValues = base.directory.GetRationalArray(NikonType2Directory.TAG_NIKON_TYPE2_LENS); - - if (lensValues.Length != 4) - { - return base.directory.GetString(NikonType2Directory.TAG_NIKON_TYPE2_LENS); - } - string[] tab = new string[] { lensValues[0].IntValue().ToString(), lensValues[1].IntValue().ToString(), lensValues[2].IntValue().ToString(), lensValues[3].IntValue().ToString() }; - return BUNDLE["LENS", tab]; - } - - /// - /// Returns hue adjustement Description. - /// - /// the hue adjustement Description. - private string GetHueAdjustmentDescription() - { - if (!base.directory.ContainsTag(NikonType2Directory.TAG_NIKON_TYPE2_CAMERA_HUE_ADJUSTMENT)) - { - return null; - } - - return BUNDLE["DEGREES", base.directory.GetString(NikonType2Directory.TAG_NIKON_TYPE2_CAMERA_HUE_ADJUSTMENT)]; - } - - /// - /// Returns color mode Description. - /// - /// the color mode Description. - private string GetColorModeDescription() - { - if (!base.directory.ContainsTag(NikonType2Directory.TAG_NIKON_TYPE2_CAMERA_COLOR_MODE)) - { - return null; - } - - String raw = base.directory.GetString(NikonType2Directory.TAG_NIKON_TYPE2_CAMERA_COLOR_MODE); - if (raw.StartsWith("MODE1")) - { - return BUNDLE["MODE_I_SRGB"]; - } - - return raw; - } - - /// - /// Returns auto firmware version Description. - /// - /// the auto firmware version Description. - private string GetAutoFirmwareVersionDescription() - { - if (!base.directory.ContainsTag(NikonType2Directory.TAG_NIKON_TYPE2_FIRMWARE_VERSION)) - { - return null; - } - - int[] ints = base.directory.GetIntArray(NikonType2Directory.TAG_NIKON_TYPE2_FIRMWARE_VERSION); - return ExifDescriptor.ConvertBytesToVersionString(ints); - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/NikonType2Directory.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/NikonType2Directory.cs deleted file mode 100644 index a6d64af..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/NikonType2Directory.cs +++ /dev/null @@ -1,419 +0,0 @@ -namespace com.drew.metadata.exif -{ - - public class NikonType2Directory : AbstractNikonTypeDirectory - { - /// - /// Values observed - /// - 0200 (D70) - /// - 0200 (D1X) - /// - public const int TAG_NIKON_TYPE2_FIRMWARE_VERSION = 0x0001; - - /// - /// Values observed - /// - 0 250 - /// - 0 400 - /// - public const int TAG_NIKON_TYPE2_ISO_1 = 0x0002; - - /// - /// Values observed - /// - COLOR (seen in the D1X) - /// - public const int TAG_NIKON_TYPE2_COLOR_MODE = 0x0003; - - /// - /// Values observed - /// - FILE - /// - RAW - /// - NORMAL - /// - FINE - /// - public const int TAG_NIKON_TYPE2_QUALITY_AND_FILE_FORMAT = 0x0004; - - /// - /// The white balance as set in the camera. - /// - /// Values observed - /// - AUTO - /// - SUNNY (D70) - /// - FLASH (D1X) - /// (presumably also SHADOW / INCANDESCENT / FLUORESCENT / CLOUDY) - /// - public const int TAG_NIKON_TYPE2_CAMERA_WHITE_BALANCE = 0x0005; - - /// - /// The sharpening as set in the camera. - /// - /// Values observed - /// - AUTO - /// - NORMAL (D70) - /// - NONE (D1X) - /// - public const int TAG_NIKON_TYPE2_CAMERA_SHARPENING = 0x0006; - - /// - /// The auto-focus type used by the camera. - /// - /// Values observed - /// - AF-S - /// - AF-C - /// - MANUAL - /// - public const int TAG_NIKON_TYPE2_AF_TYPE = 0x0007; - - /// - /// Values observed - /// - NORMAL - /// - RED-EYE - /// - /// Note: when TAG_NIKON_TYPE2_AUTO_FLASH_MODE is blank, Nikon Browser displays "Flash Sync Mode: Not Attached" - /// - public const int TAG_NIKON_TYPE2_FLASH_SYNC_MODE = 0x0008; - - /// - /// Values observed - /// - Built-in,TTL - /// - Optional,TTL (with speedlight SB800, flash sync mode as NORMAL. NikonBrowser reports Auto Flash Comp: 0 EV -- which tag is that?) (D70) - /// - NEW_TTL (Nikon Browser interprets as "D-TTL") - /// - (blank -- accompanied FlashSyncMode of NORMAL) (D70) - /// - public const int TAG_NIKON_TYPE2_AUTO_FLASH_MODE = 0x0009; - - /// - /// Added during merge of Type2 & Type3. May apply to earlier models, such as E990 and D1. - /// - public const int TAG_NIKON_TYPE2_UNKNOWN_34 = 0x000A; - - /// - /// Values observed - /// - 0 - /// - public const int TAG_NIKON_TYPE2_CAMERA_WHITE_BALANCE_FINE = 0x000B; - - /// - /// The first two numbers are coefficients to multiply red and blue channels according to white balance as set in the - /// camera. The meaning of the third and the fourth numbers is unknown. - /// - /// Values observed - /// - 2.25882352 1.76078431 0.0 0.0 - /// - 10242/1 34305/1 0/1 0/1 - /// - 234765625/100000000 1140625/1000000 1/1 1/1 - /// - public const int TAG_NIKON_TYPE2_CAMERA_WHITE_BALANCE_RB_COEFF = 0x000C; - - /// - /// Values observed - /// - 0,1,6,0 (hex) - /// - public const int TAG_NIKON_TYPE2_UNKNOWN_1 = 0x000D; - - /// - /// Values observed - /// - î - /// - 0,1,c,0 (hex) - /// - public const int TAG_NIKON_TYPE2_UNKNOWN_2 = 0x000E; - - /// - /// Added during merge of Type2 & Type3. May apply to earlier models, such as E990 and D1. - /// - public const int TAG_NIKON_TYPE2_ISO_SELECTION = 0x000F; - - /// - /// Added during merge of Type2 & Type3. May apply to earlier models, such as E990 and D1. - /// - public const int TAG_NIKON_TYPE2_DATA_DUMP = 0x0010; - - /// - /// Values observed - /// - 914 - /// - 1379 (D70) - /// - 2781 (D1X) - /// - 6942 (D100) - /// - public const int TAG_NIKON_TYPE2_UNKNOWN_3 = 0x0011; - - /// - /// Values observed - /// - (no value -- blank) - /// - public const int TAG_NIKON_TYPE2_AUTO_FLASH_COMPENSATION = 0x0012; - - /// - /// Values observed - /// - 0 250 - /// - 0 400 - /// - public const int TAG_NIKON_TYPE2_ISO_2 = 0x0013; - - /// - /// Values observed - /// - 0 0 49163 53255 - /// - 0 0 3008 2000 (the image dimensions were 3008x2000) (D70) - /// - public const int TAG_NIKON_TYPE2_UNKNOWN_21 = 0x0016; - - /// - /// Values observed - /// - (blank) - /// - public const int TAG_NIKON_TYPE2_UNKNOWN_22 = 0x0017; - - /// - /// Values observed - /// - (blank) - /// - public const int TAG_NIKON_TYPE2_UNKNOWN_23 = 0x0018; - - /// - /// Values observed - /// - 0 - /// - public const int TAG_NIKON_TYPE2_UNKNOWN_24 = 0x0019; - - /// - /// Added during merge of Type2 & Type3. May apply to earlier models, such as E990 and D1. - /// - public const int TAG_NIKON_TYPE2_IMAGE_ADJUSTMENT = 0x0080; - - /// - /// The tone compensation as set in the camera. - /// - /// Values observed - /// - AUTO - /// - NORMAL (D1X, D100) - /// - public const int TAG_NIKON_TYPE2_CAMERA_TONE_COMPENSATION = 0x0081; - - /// - /// Added during merge of Type2 & Type3. May apply to earlier models, such as E990 and D1. - /// - public const int TAG_NIKON_TYPE2_ADAPTER = 0x0082; - - /// - /// Values observed - /// - 6 - /// - 6 (D70) - /// - 2 (D1X) - /// - public const int TAG_NIKON_TYPE2_UNKNOWN_4 = 0x0083; - - /// - /// A pair of focal/max-fstop values that describe the lens used. - /// - /// Values observed - /// - 180.0,180.0,2.8,2.8 (D100) - /// - 240/10 850/10 35/10 45/10 - /// - 18-70mm f/3.5-4.5 (D70) - /// - 17-35mm f/2.8-2.8 (D1X) - /// - 70-200mm f/2.8-2.8 (D70) - /// - /// Nikon Browser identifies the lens as "18-70mm F/3.5-4.5 G" which - /// is identical to lcMetadata extractor, except for the "G". This must - /// be coming from another tag... - /// - public const int TAG_NIKON_TYPE2_LENS = 0x0084; - - /// - /// Added during merge of Type2 & Type3. May apply to earlier models, such as E990 and D1. - /// - public const int TAG_NIKON_TYPE2_MANUAL_FOCUS_DISTANCE = 0x0085; - - /// - /// Added during merge of Type2 & Type3. May apply to earlier models, such as E990 and D1. - /// - public const int TAG_NIKON_TYPE2_DIGITAL_ZOOM = 0x0086; - - /// - /// Values observed - /// - 0 - /// - 9 - /// - 3 (D1X) - /// - public const int TAG_NIKON_TYPE2_UNKNOWN_5 = 0x0087; - - /// - /// Values observed - /// - - /// - public const int TAG_NIKON_TYPE2_AF_FOCUS_POSITION = 0x0088; - - /// - /// Values observed - /// - 0 - /// - 1 - /// - public const int TAG_NIKON_TYPE2_UNKNOWN_7 = 0x0089; - - /// - /// Values observed - /// - 0 - /// - 0 - /// - public const int TAG_NIKON_TYPE2_UNKNOWN_20 = 0x008A; - - /// - /// Values observed - /// - 48,1,c,0 (hex) (D100) - /// - @ - /// - public const int TAG_NIKON_TYPE2_UNKNOWN_8 = 0x008B; - - /// - /// Unknown. Fabrizio believes this may be a lookup table for the user-defined curve. - /// - /// Values observed - /// - (blank) (D1X) - /// - public const int TAG_NIKON_TYPE2_UNKNOWN_9 = 0x008C; - - /// - /// The color space as set in the camera. - /// - /// Values observed - /// - MODE1 - /// - Mode I (sRGB) (D70) - /// - MODE2 (D1X, D100) - /// - public const int TAG_NIKON_TYPE2_CAMERA_COLOR_MODE = 0x008D; - - /// - /// Values observed - /// - NATURAL - /// - SPEEDLIGHT (D70, D1X) - /// - public const int TAG_NIKON_TYPE2_LIGHT_SOURCE = 0x0090; - - /// - /// Values observed - /// - 0100) - /// - 0103 (D70) - /// - 0100 (D1X) - /// - public const int TAG_NIKON_TYPE2_UNKNOWN_11 = 0x0091; - - /// - /// The hue adjustment as set in the camera. - /// - /// Values observed - /// - 0 - /// - public const int TAG_NIKON_TYPE2_CAMERA_HUE_ADJUSTMENT = 0x0092; - - /// - /// Values observed - /// - OFF - /// - public const int TAG_NIKON_TYPE2_NOISE_REDUCTION = 0x0095; - - /// - /// Values observed - /// - 0100 '~e3 - /// - 0103 - /// - public const int TAG_NIKON_TYPE2_UNKNOWN_12 = 0x0097; - - /// - /// Values observed - /// - 0100fht@7b,4x,D"Y - /// - 01015 - /// - 0100w\cH+D$$h$î5Q (D1X) - /// - 30,31,30,30,0,0,b,48,7c,7c,24,24,5,15,24,0,0,0,0,0 (hex) (D100) - /// - public const int TAG_NIKON_TYPE2_UNKNOWN_13 = 0x0098; - - /// - /// Values observed - /// - 2014 662 (D1X) - /// - 1517,1012 (D100) - /// - public const int TAG_NIKON_TYPE2_UNKNOWN_14 = 0x0099; - - /// - /// Values observed - /// - 78/10 78/10 - /// - 78/10 78/10 (D70) - /// - 59/10 59/5 (D1X) - /// - 7.8,7.8 (D100) - /// - public const int TAG_NIKON_TYPE2_UNKNOWN_15 = 0x009A; - - /// - /// Values observed - /// - NO= 00002539 - /// - public const int TAG_NIKON_TYPE2_UNKNOWN_25 = 0x00A0; - - /// - /// Values observed - /// - 1564851 - /// - public const int TAG_NIKON_TYPE2_UNKNOWN_26 = 0x00A2; - - /// - /// Values observed - /// - 0 - /// - public const int TAG_NIKON_TYPE2_UNKNOWN_27 = 0x00A3; - - /// - /// This appears to be a sequence number to indentify the exposure. This value seems to increment - /// for constecutive exposures (observed on D70). - /// - /// Values observed - /// - 5062 - /// - public const int TAG_NIKON_TYPE2_EXPOSURE_SEQUENCE_NUMBER = 0x00A7; - - /// - /// Values observed - /// - 0100 (D70) - /// - public const int TAG_NIKON_TYPE2_UNKNOWN_32 = 0x00A8; - - /// - /// Values observed - /// - NORMAL (D70) - /// - public const int TAG_NIKON_TYPE2_UNKNOWN_33 = 0x00A9; - - /// - /// Nikon Browser suggests this value represents Saturation... - /// Values observed - /// - NORMAL (D70) - /// - public const int TAG_NIKON_TYPE2_UNKNOWN_29 = 0x00AA; - - /// - /// Values observed - /// - AUTO (D70) - /// - (blank) (D70) - /// - public const int TAG_NIKON_TYPE2_UNKNOWN_30 = 0x00AB; - - /// - /// Data about changes set by Nikon Capture Editor. - /// - /// Values observed - /// - public const int TAG_NIKON_TYPE2_CAPTURE_EDITOR_DATA = 0x0E01; - - /// - /// Values observed - /// - 1473 - /// - 7036 (D100) - /// - public const int TAG_NIKON_TYPE2_UNKNOWN_16 = 0x0E10; - - /// - /// Constructor of the object. - /// - public NikonType2Directory() - : base("NikonTypeMarkernote") - { - this.SetDescriptor(new NikonType2Descriptor(this)); - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/OlympusDescriptor.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/OlympusDescriptor.cs deleted file mode 100644 index 1d99ce3..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/OlympusDescriptor.cs +++ /dev/null @@ -1,184 +0,0 @@ -using System.Text; - -namespace com.drew.metadata.exif -{ - /// - /// Tag descriptor for Olympus - /// - - public class OlympusDescriptor : AbstractTagDescriptor - { - /// - /// Constructor of the object - /// - /// a base.directory - public OlympusDescriptor(AbstractDirectory aDirectory) : base(aDirectory) - { - } - - /// - /// Returns a descriptive value of the the specified tag for this image. - /// Where possible, known values will be substituted here in place of the raw tokens actually - /// kept in the Exif segment. - /// If no substitution is available, the value provided by GetString(int) will be returned. - /// This and GetString(int) are the only 'get' methods that won't throw an exception. - /// - /// the tag to find a description for - /// a description of the image'str value for the specified tag, or null if the tag hasn't been defined. - public override string GetDescription(int tagType) - { - switch(tagType) - { - case OlympusDirectory.TAG_OLYMPUS_SPECIAL_MODE : - return GetSpecialModeDescription(); - case OlympusDirectory.TAG_OLYMPUS_JPEG_QUALITY : - return GetJpegQualityDescription(); - case OlympusDirectory.TAG_OLYMPUS_MACRO_MODE : - return GetMacroModeDescription(); - case OlympusDirectory.TAG_OLYMPUS_DIGI_ZOOM_RATIO : - return GetDigiZoomRatioDescription(); - default: - return base.directory.GetString(tagType); - } - } - - /// - /// Returns the Digi Zoom Ratio Description. - /// - /// the Digi Zoom Ratio Description. - private string GetDigiZoomRatioDescription() - { - if (!directory - .ContainsTag(OlympusDirectory.TAG_OLYMPUS_DIGI_ZOOM_RATIO)) - { - return null; - } - int aValue = - directory.GetInt( - OlympusDirectory.TAG_OLYMPUS_DIGI_ZOOM_RATIO); - switch (aValue) - { - case 0 : - return BUNDLE["NORMAL"]; - case 1: - return BUNDLE["DIGITAL_ZOOM", "1"]; - case 2 : - return BUNDLE["DIGITAL_ZOOM", "2"]; - default : - return BUNDLE["UNKNOWN", aValue.ToString()]; - } - } - - /// - /// Returns the Macro Mode Description. - /// - /// the Macro Mode Description. - private string GetMacroModeDescription() - { - if (!directory - .ContainsTag(OlympusDirectory.TAG_OLYMPUS_MACRO_MODE)) - { - return null; - } - int aValue = - directory.GetInt(OlympusDirectory.TAG_OLYMPUS_MACRO_MODE); - switch (aValue) - { - case 0 : - return BUNDLE["NORMAL_NO_MACRO"]; - case 1 : - return BUNDLE["MACRO"]; - default : - return BUNDLE["UNKNOWN", aValue.ToString() ]; - } - } - - /// - /// Returns the Jpeg Quality Description. - /// - /// the Jpeg Quality Description. - private string GetJpegQualityDescription() - { - if (!base.directory - .ContainsTag(OlympusDirectory.TAG_OLYMPUS_JPEG_QUALITY)) - { - return null; - } - int aValue = - base.directory.GetInt( - OlympusDirectory.TAG_OLYMPUS_JPEG_QUALITY); - switch (aValue) - { - case 1 : - return BUNDLE["SQ"]; - case 2 : - return BUNDLE["HQ"]; - case 3 : - return BUNDLE["SHQ"]; - default : - return BUNDLE["UNKNOWN", aValue.ToString() ]; - } - } - - /// - /// Returns the Special Mode Description. - /// - /// the Special Mode Description. - private string GetSpecialModeDescription() - { - if (!directory - .ContainsTag(OlympusDirectory.TAG_OLYMPUS_SPECIAL_MODE)) - { - return null; - } - var values = - directory.GetIntArray( - OlympusDirectory.TAG_OLYMPUS_SPECIAL_MODE); - var desc = new StringBuilder(); - switch (values[0]) - { - case 0 : - desc.Append(BUNDLE["NORMAL_PICTURE_TAKING_MODE"]); - break; - case 1 : - desc.Append(BUNDLE["UNKNOWN_PICTURE_TAKING_MODE"]); - break; - case 2 : - desc.Append(BUNDLE["FAST_PICTURE_TAKING_MODE"]); - break; - case 3 : - desc.Append(BUNDLE["PANORAMA_PICTURE_TAKING_MODE"]); - break; - default : - desc.Append(BUNDLE["UNKNOWN_PICTURE_TAKING_MODE"]); - break; - } - desc.Append(" - "); - switch (values[1]) - { - case 0 : - desc.Append(BUNDLE["UNKNOWN_SEQUENCE_NUMBER"]); - break; - default : - desc.Append(BUNDLE["X_RD_IN_A_SEQUENCE", values[1].ToString()]); - break; - } - switch (values[2]) - { - case 1 : - desc.Append(BUNDLE["LEFT_TO_RIGHT_PAN_DIR"]); - break; - case 2 : - desc.Append(BUNDLE["RIGHT_TO_LEFT_PAN_DIR"]); - break; - case 3 : - desc.Append(BUNDLE["BOTTOM_TO_TOP_PAN_DIR"]); - break; - case 4 : - desc.Append(BUNDLE["TOP_TO_BOTTOM_PAN_DIR"]); - break; - } - return desc.ToString(); - } - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/OlympusDirectory.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/OlympusDirectory.cs deleted file mode 100644 index b7f8431..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/OlympusDirectory.cs +++ /dev/null @@ -1,170 +0,0 @@ -namespace com.drew.metadata.exif -{ - - public class OlympusDirectory : AbstractDirectory - { - /// - /// Used by Konica / Minolta cameras. - /// - public const int TAG_OLYMPUS_MAKERNOTE_VERSION = 0x0000; - - /// - /// Used by Konica / Minolta cameras. - /// - public const int TAG_OLYMPUS_CAMERA_SETTINGS_1 = 0x0001; - - /// - /// Alternate Camera Settings Tag. Used by Konica / Minolta cameras. - /// - public const int TAG_OLYMPUS_CAMERA_SETTINGS_2 = 0x0003; - - /// - /// Used by Konica / Minolta cameras. - /// - public const int TAG_OLYMPUS_COMPRESSED_IMAGE_SIZE = 0x0040; - - /// - /// Used by Konica / Minolta cameras. - /// - public const int TAG_OLYMPUS_MINOLTA_THUMBNAIL_OFFSET_1 = 0x0081; - - /// - /// Alternate Thumbnail Offset. Used by Konica / Minolta cameras. - /// - public const int TAG_OLYMPUS_MINOLTA_THUMBNAIL_OFFSET_2 = 0x0088; - - /// - /// Length of thumbnail in bytes. Used by Konica / Minolta cameras. - /// - public const int TAG_OLYMPUS_MINOLTA_THUMBNAIL_LENGTH = 0x0089; - - /// - /// Used by Konica / Minolta cameras - /// 0 = Natural Color - /// 1 = Black & White - /// 2 = Vivid color - /// 3 = Solarization - /// 4 = AdobeRGB - /// - public const int TAG_OLYMPUS_COLOR_MODE = 0x0101; - - /// - /// Used by Konica / Minolta cameras. - /// 0 = Raw - /// 1 = Super Fine - /// 2 = Fine - /// 3 = Standard - /// 4 = Extra Fine - /// - public const int TAG_OLYMPUS_IMAGE_QUALITY_1 = 0x0102; - - /// - /// Not 100% sure about this tag. - /// - /// Used by Konica / Minolta cameras. - /// 0 = Raw - /// 1 = Super Fine - /// 2 = Fine - /// 3 = Standard - /// 4 = Extra Fine - /// - public const int TAG_OLYMPUS_IMAGE_QUALITY_2 = 0x0103; - - - /// - /// Three values: - /// Value 1: 0=Normal, 2=Fast, 3=Panorama - /// Value 2: Sequence Number Value 3: - /// 1 = Panorama Direction: Left to Right - /// 2 = Panorama Direction: Right to Left - /// 3 = Panorama Direction: Bottom to Top - /// 4 = Panorama Direction: Top to Bottom - /// - public const int TAG_OLYMPUS_SPECIAL_MODE = 0x0200; - - /// - /// 1 = Standard Quality - /// 2 = High Quality - /// 3 = Super High Quality - /// - public const int TAG_OLYMPUS_JPEG_QUALITY = 0x0201; - - /// - /// 0 = Normal (Not Macro) - /// 1 = Macro - /// - public const int TAG_OLYMPUS_MACRO_MODE = 0x0202; - - - public const int TAG_OLYMPUS_UNKNOWN_1 = 0x0203; - - /// - /// Zoom Factor (0 or 1 = normal) - /// - public const int TAG_OLYMPUS_DIGI_ZOOM_RATIO = 0x0204; - - - public const int TAG_OLYMPUS_UNKNOWN_2 = 0x0205; - public const int TAG_OLYMPUS_UNKNOWN_3 = 0x0206; - public const int TAG_OLYMPUS_FIRMWARE_VERSION = 0x0207; - public const int TAG_OLYMPUS_PICT_INFO = 0x0208; - public const int TAG_OLYMPUS_CAMERA_ID = 0x0209; - - /// - /// Used by Epson cameras - /// Units = pixels - /// - public const int TAG_OLYMPUS_IMAGE_WIDTH = 0x020B; - - /// - /// Used by Epson cameras - /// Units = pixels - /// - public const int TAG_OLYMPUS_IMAGE_HEIGHT = 0x020C; - - /// - /// A string. Used by Epson cameras. - /// - public const int TAG_OLYMPUS_ORIGINAL_MANUFACTURER_MODEL = 0x020D; - - /// - /// See the PIM specification here: - /// http://www.ozhiker.com/electronics/pjmt/jpeg_info/pim.html - /// - public const int TAG_OLYMPUS_PRINT_IMAGE_MATCHING_INFO = 0x0E00; - - - public const int TAG_OLYMPUS_DATA_DUMP = 0x0F00; - public const int TAG_OLYMPUS_FLASH_MODE = 0x1004; - public const int TAG_OLYMPUS_BRACKET = 0x1006; - public const int TAG_OLYMPUS_FOCUS_MODE = 0x100B; - public const int TAG_OLYMPUS_FOCUS_DISTANCE = 0x100C; - public const int TAG_OLYMPUS_ZOOM = 0x100D; - public const int TAG_OLYMPUS_MACRO_FOCUS = 0x100E; - public const int TAG_OLYMPUS_SHARPNESS = 0x100F; - public const int TAG_OLYMPUS_COLOR_MATRIX = 0x1011; - public const int TAG_OLYMPUS_BLACK_LEVEL = 0x1012; - public const int TAG_OLYMPUS_WHITE_BALANCE = 0x1015; - public const int TAG_OLYMPUS_RED_BIAS = 0x1017; - public const int TAG_OLYMPUS_BLUE_BIAS = 0x1018; - public const int TAG_OLYMPUS_SERIAL_NUMBER = 0x101A; - public const int TAG_OLYMPUS_FLASH_BIAS = 0x1023; - public const int TAG_OLYMPUS_CONTRAST = 0x1029; - public const int TAG_OLYMPUS_SHARPNESS_FACTOR = 0x102A; - public const int TAG_OLYMPUS_COLOR_CONTROL = 0x102B; - public const int TAG_OLYMPUS_VALID_BITS = 0x102C; - public const int TAG_OLYMPUS_CORING_FILTER = 0x102D; - public const int TAG_OLYMPUS_FINAL_WIDTH = 0x102E; - public const int TAG_OLYMPUS_FINAL_HEIGHT = 0x102F; - public const int TAG_OLYMPUS_COMPRESSION_RATIO = 0x1034; - - /// - /// Constructor of the object. - /// - public OlympusDirectory() - : base("OlympusMarkernote") - { - this.SetDescriptor(new OlympusDescriptor(this)); - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/PanasonicDescriptor.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/PanasonicDescriptor.cs deleted file mode 100644 index 66a88dc..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/PanasonicDescriptor.cs +++ /dev/null @@ -1,104 +0,0 @@ -namespace com.drew.metadata.exif -{ - /// - /// Tag descriptor for Panasonic - /// - - public class PanasonicDescriptor : AbstractTagDescriptor - { - /// - /// Constructor of the object - /// - /// a base.directory - public PanasonicDescriptor(AbstractDirectory aDirectory) - : base(aDirectory) - { - } - - /// - /// Returns a descriptive value of the the specified tag for this image. - /// Where possible, known values will be substituted here in place of the raw tokens actually - /// kept in the Exif segment. - /// If no substitution is available, the value provided by GetString(int) will be returned. - /// This and GetString(int) are the only 'get' methods that won't throw an exception. - /// - /// the tag to find a description for - /// a description of the image'str value for the specified tag, or null if the tag hasn't been defined. - public override string GetDescription(int tagType) - { - switch (tagType) - { - case PanasonicDirectory.TAG_PANASONIC_MACRO_MODE: - return GetMacroModeDescription(); - case PanasonicDirectory.TAG_PANASONIC_RECORD_MODE: - return GetRecordModeDescription(); - case PanasonicDirectory.TAG_PANASONIC_PRINT_IMAGE_MATCHING_INFO: - return GetPrintImageMatchingInfoDescription(); - default: - return base.directory.GetString(tagType); - } - } - - /// - /// Returns the print image matching info Description. - /// - /// the print image matching info Description. - private string GetPrintImageMatchingInfoDescription() - { - if (!base.directory.ContainsTag(PanasonicDirectory.TAG_PANASONIC_PRINT_IMAGE_MATCHING_INFO)) - { - return null; - } - byte[] bytes = base.directory.GetByteArray(PanasonicDirectory.TAG_PANASONIC_PRINT_IMAGE_MATCHING_INFO); - return BUNDLE["BYTES", bytes.Length.ToString()]; - } - - /// - /// Returns the macro mode Description. - /// - /// the macro mode Description. - private string GetMacroModeDescription() - { - if (!base.directory.ContainsTag(PanasonicDirectory.TAG_PANASONIC_MACRO_MODE)) - { - return null; - } - int value = base.directory.GetInt(PanasonicDirectory.TAG_PANASONIC_MACRO_MODE); - switch (value) - { - case 1: - return BUNDLE["ON"]; - case 2: - return BUNDLE["OFF"]; - default: - return BUNDLE["UNKNOWN", value.ToString()]; - } - } - - /// - /// Returns record mode Description. - /// - /// the record mode Description. - private string GetRecordModeDescription() - { - if (!base.directory.ContainsTag(PanasonicDirectory.TAG_PANASONIC_RECORD_MODE)) - { - return null; - } - int value = base.directory.GetInt(PanasonicDirectory.TAG_PANASONIC_RECORD_MODE); - switch (value) - { - case 1: - return BUNDLE["NORMAL"]; - case 2: - return BUNDLE["PORTRAIT"]; - case 9: - return BUNDLE["MACRO"]; - default: - return BUNDLE["UNKNOWN", value.ToString()]; - } - } - - - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/PanasonicDirectory.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/PanasonicDirectory.cs deleted file mode 100644 index 9085f7c..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/PanasonicDirectory.cs +++ /dev/null @@ -1,35 +0,0 @@ -namespace com.drew.metadata.exif -{ - /// - /// The panasonic directory class. - /// - - public class PanasonicDirectory : AbstractDirectory - { - public const int TAG_PANASONIC_QUALITY_MODE = 0x0001; - public const int TAG_PANASONIC_VERSION = 0x0002; - - /// - /// 1 = On - /// 2 = Off - /// - public const int TAG_PANASONIC_MACRO_MODE = 0x001C; - - /// - /// 1 = Normal - /// 2 = Portrait - /// 9 = Macro - /// - public const int TAG_PANASONIC_RECORD_MODE = 0x001F; - public const int TAG_PANASONIC_PRINT_IMAGE_MATCHING_INFO = 0x0E00; - - /// - /// Constructor of the object. - /// - public PanasonicDirectory() - : base("PanasonicMarkernote") - { - this.SetDescriptor(new PanasonicDescriptor(this)); - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/PentaxDescriptor.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/PentaxDescriptor.cs deleted file mode 100644 index d96a34f..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/PentaxDescriptor.cs +++ /dev/null @@ -1,298 +0,0 @@ -namespace com.drew.metadata.exif -{ - /// - /// Tag descriptor for pentax - /// - - public class PentaxDescriptor : AbstractTagDescriptor - { - /// - /// Constructor of the object - /// - /// a base.directory - public PentaxDescriptor(AbstractDirectory aDirectory) - : base(aDirectory) - { - } - - /// - /// Returns a descriptive value of the the specified tag for this image. - /// Where possible, known values will be substituted here in place of the raw tokens actually - /// kept in the Exif segment. - /// If no substitution is available, the value provided by GetString(int) will be returned. - /// This and GetString(int) are the only 'get' methods that won't throw an exception. - /// - /// the tag to find a description for - /// a description of the image'str value for the specified tag, or null if the tag hasn't been defined. - public override string GetDescription(int tagType) - { - switch (tagType) - { - case PentaxDirectory.TAG_PENTAX_CAPTURE_MODE: - return GetCaptureModeDescription(); - case PentaxDirectory.TAG_PENTAX_QUALITY_LEVEL: - return GetQualityLevelDescription(); - case PentaxDirectory.TAG_PENTAX_FOCUS_MODE: - return GetFocusModeDescription(); - case PentaxDirectory.TAG_PENTAX_FLASH_MODE: - return GetFlashModeDescription(); - case PentaxDirectory.TAG_PENTAX_WHITE_BALANCE: - return GetWhiteBalanceDescription(); - case PentaxDirectory.TAG_PENTAX_DIGITAL_ZOOM: - return GetDigitalZoomDescription(); - case PentaxDirectory.TAG_PENTAX_SHARPNESS: - return GetSharpnessDescription(); - case PentaxDirectory.TAG_PENTAX_CONTRAST: - return GetContrastDescription(); - case PentaxDirectory.TAG_PENTAX_SATURATION: - return GetSaturationDescription(); - case PentaxDirectory.TAG_PENTAX_ISO_SPEED: - return GetIsoSpeedDescription(); - case PentaxDirectory.TAG_PENTAX_COLOR: - return GetColorDescription(); - case PentaxDirectory.TAG_PENTAX_PRINT_IMAGE_MATCHING_INFO: - return GetPrintImageMatchingInfoDescription(); - default: - return base.directory.GetString(tagType); - } - } - - /// - /// Returns the color Description. - /// - /// the color Description. - private string GetColorDescription() - { - if (!base.directory.ContainsTag(PentaxDirectory.TAG_PENTAX_COLOR)) - { - return null; - } - int aValue = base.directory.GetInt(PentaxDirectory.TAG_PENTAX_COLOR); - switch (aValue) - { - case 1: return BUNDLE["NORMAL"]; - case 2: return BUNDLE["BLACK_AND_WHITE"]; - case 3: return BUNDLE["SEPIA"]; - default: return BUNDLE["UNKNOWN", aValue.ToString()]; - } - } - - /// - /// Returns the iso speed Description. - /// - /// the iso speed Description. - private string GetIsoSpeedDescription() - { - if (!base.directory.ContainsTag(PentaxDirectory.TAG_PENTAX_ISO_SPEED)) - { - return null; - } - int aValue = base.directory.GetInt(PentaxDirectory.TAG_PENTAX_ISO_SPEED); - switch (aValue) - { - case 100: - case 10: return BUNDLE["ISO", "100"]; - case 16: - case 200: return BUNDLE["ISO", "200"]; - default: return BUNDLE["UNKNOWN", aValue.ToString()]; - } - } - - /// - /// Returns the saturation Description. - /// - /// the saturation Description. - private string GetSaturationDescription() - { - if (!base.directory.ContainsTag(PentaxDirectory.TAG_PENTAX_SATURATION)) - { - return null; - } - int aValue = base.directory.GetInt(PentaxDirectory.TAG_PENTAX_SATURATION); - switch (aValue) - { - case 0: return BUNDLE["NORMAL"]; - case 1: return BUNDLE["LOW"]; - case 2: return BUNDLE["HIGH"]; - default: return BUNDLE["UNKNOWN", aValue.ToString()]; - } - } - - /// - /// Returns the contrast Description. - /// - /// the contrast Description. - private string GetContrastDescription() - { - if (!base.directory.ContainsTag(PentaxDirectory.TAG_PENTAX_CONTRAST)) - { - return null; - } - int aValue = base.directory.GetInt(PentaxDirectory.TAG_PENTAX_CONTRAST); - switch (aValue) - { - case 0: return BUNDLE["NORMAL"]; - case 1: return BUNDLE["LOW"]; - case 2: return BUNDLE["HIGH"]; - default: return BUNDLE["UNKNOWN", aValue.ToString()]; - } - } - - /// - /// Returns the sharpness Description. - /// - /// the sharpness Description. - private string GetSharpnessDescription() - { - if (!base.directory.ContainsTag(PentaxDirectory.TAG_PENTAX_SHARPNESS)) - { - return null; - } - int aValue = base.directory.GetInt(PentaxDirectory.TAG_PENTAX_SHARPNESS); - switch (aValue) - { - case 0: return BUNDLE["NORMAL"]; - case 1: return BUNDLE["SOFT"]; - case 2: return BUNDLE["HARD"]; - default: return BUNDLE["UNKNOWN", aValue.ToString()]; - } - } - - /// - /// Returns the digial zoom Description. - /// - /// the digital zoom Description. - private string GetDigitalZoomDescription() - { - if (!base.directory.ContainsTag(PentaxDirectory.TAG_PENTAX_DIGITAL_ZOOM)) - { - return null; - } - float aValue = base.directory.GetFloat(PentaxDirectory.TAG_PENTAX_DIGITAL_ZOOM); - if (aValue == 0) - { - return BUNDLE["OFF"]; - } - return aValue.ToString(); - } - - /// - /// Returns the white balance Description. - /// - /// the white balance Description. - private string GetWhiteBalanceDescription() - { - if (!base.directory.ContainsTag(PentaxDirectory.TAG_PENTAX_WHITE_BALANCE)) - { - return null; - } - int aValue = base.directory.GetInt(PentaxDirectory.TAG_PENTAX_WHITE_BALANCE); - switch (aValue) - { - case 0: return BUNDLE["AUTO"]; - case 1: return BUNDLE["DAYLIGHT"]; - case 2: return BUNDLE["SHADE"]; - case 3: return BUNDLE["TUNGSTEN"]; - case 4: return BUNDLE["FLUORESCENT"]; - case 5: return BUNDLE["MANUAL"]; - default: return BUNDLE["UNKNOWN", aValue.ToString()]; - } - } - - /// - /// Returns the flash mode Description. - /// - /// the dlash mode Description. - private string GetFlashModeDescription() - { - if (!base.directory.ContainsTag(PentaxDirectory.TAG_PENTAX_FLASH_MODE)) - { - return null; - } - int aValue = base.directory.GetInt(PentaxDirectory.TAG_PENTAX_FLASH_MODE); - switch (aValue) - { - case 1: return BUNDLE["AUTO"]; - case 2: return BUNDLE["FLASH_ON"]; - case 4: return BUNDLE["FLASH_OFF"]; - case 6: return BUNDLE["RED_EYE_REDUCTION"]; - default: return BUNDLE["UNKNOWN", aValue.ToString()]; - } - } - - /// - /// Returns the focus mode Description. - /// - /// the focus mode Description. - private string GetFocusModeDescription() - { - if (!base.directory.ContainsTag(PentaxDirectory.TAG_PENTAX_FOCUS_MODE)) - { - return null; - } - int aValue = base.directory.GetInt(PentaxDirectory.TAG_PENTAX_FOCUS_MODE); - switch (aValue) - { - case 2: return BUNDLE["CUSTOM"]; - case 3: return BUNDLE["AUTO"]; - default: return BUNDLE["UNKNOWN", aValue.ToString()]; - } - } - - /// - /// Returns the quality level Description. - /// - /// the quality level Description. - private string GetQualityLevelDescription() - { - if (!base.directory.ContainsTag(PentaxDirectory.TAG_PENTAX_QUALITY_LEVEL)) - { - return null; - } - int aValue = base.directory.GetInt(PentaxDirectory.TAG_PENTAX_QUALITY_LEVEL); - switch (aValue) - { - case 0: return BUNDLE["GOOD"]; - case 1: return BUNDLE["BETTER"]; - case 2: return BUNDLE["BEST"]; - default: return BUNDLE["UNKNOWN", aValue.ToString()]; - } - } - - /// - /// Returns the capture mode Description. - /// - /// the capture mode Description. - private string GetCaptureModeDescription() - { - if (!base.directory.ContainsTag(PentaxDirectory.TAG_PENTAX_CAPTURE_MODE)) - { - return null; - } - int aValue = base.directory.GetInt(PentaxDirectory.TAG_PENTAX_CAPTURE_MODE); - switch (aValue) - { - case 1: return BUNDLE["AUTO"]; - case 2: return BUNDLE["NIGHT_SCENE"]; - case 3: return BUNDLE["MANUAL"]; - case 4: return BUNDLE["MULTIPLE"]; - default: return BUNDLE["UNKNOWN", aValue.ToString()]; - } - } - - /// - /// Returns the print image matching info Description. - /// - /// the print image matching info Description. - private string GetPrintImageMatchingInfoDescription() - { - if (!base.directory.ContainsTag(PentaxDirectory.TAG_PENTAX_PRINT_IMAGE_MATCHING_INFO)) - { - return null; - } - byte[] bytes = base.directory.GetByteArray(PentaxDirectory.TAG_PENTAX_PRINT_IMAGE_MATCHING_INFO); - return BUNDLE["BYTES", bytes.Length.ToString()]; - } - - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/PentaxDirectory.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/PentaxDirectory.cs deleted file mode 100644 index 3751cca..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/PentaxDirectory.cs +++ /dev/null @@ -1,116 +0,0 @@ -namespace com.drew.metadata.exif -{ - /// - /// The pentax directory class. - /// - - public class PentaxDirectory : AbstractDirectory - { - /// - /// 0 = Auto - /// 1 = Night-scene - /// 2 = Manual - /// 4 = Multiple - /// - public const int TAG_PENTAX_CAPTURE_MODE = 0x0001; - - /// - /// 0 = Good - /// 1 = Better - /// 2 = Best - /// - public const int TAG_PENTAX_QUALITY_LEVEL = 0x0002; - - /// - /// 2 = Custom - /// 3 = Auto - /// - public const int TAG_PENTAX_FOCUS_MODE = 0x0003; - - /// - /// 1 = Auto - /// 2 = Flash on - /// 4 = Flash off - /// 6 = Red-eye Reduction - /// - public const int TAG_PENTAX_FLASH_MODE = 0x0004; - - /// - /// 0 = Auto - /// 1 = Daylight - /// 2 = Shade - /// 3 = Tungsten - /// 4 = Fluorescent - /// 5 = Manual - /// - public const int TAG_PENTAX_WHITE_BALANCE = 0x0007; - - /// - /// (0 = Off) - /// - public const int TAG_PENTAX_DIGITAL_ZOOM = 0x000A; - - /// - /// 0 = Normal - /// 1 = Soft - /// 2 = Hard - /// - public const int TAG_PENTAX_SHARPNESS = 0x000B; - - /// - /// 0 = Normal - /// 1 = Low - /// 2 = High - /// - public const int TAG_PENTAX_CONTRAST = 0x000C; - - /// - /// 0 = Normal - /// 1 = Low - /// 2 = High - /// - public const int TAG_PENTAX_SATURATION = 0x000D; - - /// - /// 10 = ISO 100 - /// 16 = ISO 200 - /// 100 = ISO 100 - /// 200 = ISO 200 - /// - public const int TAG_PENTAX_ISO_SPEED = 0x0014; - - /// - /// 1 = Normal - /// 2 = Black & White - /// 3 = Sepia - /// - public const int TAG_PENTAX_COLOR = 0x0017; - - /// - /// See Print Image Matching for specification. - /// http://www.ozhiker.com/electronics/pjmt/jpeg_info/pim.html - /// - public const int TAG_PENTAX_PRINT_IMAGE_MATCHING_INFO = 0x0E00; - - /// - /// (String). - /// - public const int TAG_PENTAX_TIME_ZONE = 0x1000; - - /// - /// (String). - /// - public const int TAG_PENTAX_DAYLIGHT_SAVINGS = 0x1001; - - - /// - /// Constructor of the object. - /// - public PentaxDirectory() - : base("PentaxMarkernote") - { - this.SetDescriptor(new PentaxDescriptor(this)); - } - - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/SonyDescriptor.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/SonyDescriptor.cs deleted file mode 100644 index 321c7da..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/SonyDescriptor.cs +++ /dev/null @@ -1,33 +0,0 @@ -namespace com.drew.metadata.exif -{ - /// - /// Tag descriptor for sony - /// - - public class SonyDescriptor : AbstractTagDescriptor - { - /// - /// Constructor of the object - /// - /// a directory - public SonyDescriptor(AbstractDirectory directory) - : base(directory) - { - } - - /// - /// Returns a descriptive value of the the specified tag for this image. - /// Where possible, known values will be substituted here in place of the raw tokens actually - /// kept in the Exif segment. - /// If no substitution is available, the value provided by GetString(int) will be returned. - /// This and GetString(int) are the only 'get' methods that won't throw an exception. - /// - /// the tag to find a description for - /// a description of the image'str value for the specified tag, or null if the tag hasn't been defined. - public override string GetDescription(int tagType) - { - return base.directory.GetString(tagType); - } - - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/SonyDirectory.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/SonyDirectory.cs deleted file mode 100644 index d7bf959..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/exif/SonyDirectory.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace com.drew.metadata.exif -{ - /// - /// The sony directory class. - /// - - public class SonyDirectory : AbstractDirectory - { - // No tag for now - - /// - /// Constructor of the object. - /// - public SonyDirectory() - : base("SonyMarkernote") - { - this.SetDescriptor(new SonyDescriptor(this)); - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/iptc/IptcDescriptor.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/iptc/IptcDescriptor.cs deleted file mode 100644 index 07f0448..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/iptc/IptcDescriptor.cs +++ /dev/null @@ -1,66 +0,0 @@ -namespace com.drew.metadata.iptc -{ - /// - /// Tag descriptor for IPTC - /// - - public class IptcDescriptor : AbstractTagDescriptor - { - /// - /// Constructor of the object - /// - /// a base.directory - public IptcDescriptor(AbstractDirectory aDirectory) : base(aDirectory) - { - } - - /// - /// Returns a descriptive value of the the specified tag for this image. - /// Where possible, known values will be substituted here in place of the raw tokens actually - /// kept in the Exif segment. - /// If no substitution is available, the value provided by GetString(int) will be returned. - /// This and GetString(int) are the only 'get' methods that won't throw an exception. - /// - /// the tag to find a description for - /// a description of the image'str value for the specified tag, or null if the tag hasn't been defined. - public override string GetDescription(int tagType) - { - switch (tagType) - { - case IptcDirectory.TAG_URGENCY : - return GetUrgencyDescription(); - default: - return base.directory.GetString(tagType); - } - - } - - /// - /// Returns urgency Description. - /// - /// the urgency Description. - private string GetUrgencyDescription() - { - if (!base.directory - .ContainsTag(IptcDirectory.TAG_URGENCY)) - { - return null; - } - int aValue = - base.directory.GetInt( - IptcDirectory.TAG_URGENCY); - switch (aValue) - { - case 49: - return BUNDLE["HIGH"]; - case 54: - return BUNDLE["NORMAL"]; - case 56: - return BUNDLE["LOW"]; - default: - return BUNDLE["UNKNOWN", aValue.ToString()]; - } - } - - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/iptc/IptcDirectory.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/iptc/IptcDirectory.cs deleted file mode 100644 index 72739cb..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/iptc/IptcDirectory.cs +++ /dev/null @@ -1,44 +0,0 @@ -namespace com.drew.metadata.iptc -{ - /// - /// The Iptc Directory class - /// - - public class IptcDirectory : AbstractDirectory - { - public const int TAG_RECORD_VERSION = 0x0200; - public const int TAG_CAPTION = 0x0278; - public const int TAG_WRITER = 0x027a; - public const int TAG_HEADLINE = 0x0269; - public const int TAG_SPECIAL_INSTRUCTIONS = 0x0228; - public const int TAG_BY_LINE = 0x0250; - public const int TAG_BY_LINE_TITLE = 0x0255; - public const int TAG_CREDIT = 0x026e; - public const int TAG_SOURCE = 0x0273; - public const int TAG_OBJECT_NAME = 0x0205; - public const int TAG_DATE_CREATED = 0x0237; - public const int TAG_CITY = 0x025a; - public const int TAG_PROVINCE_OR_STATE = 0x025f; - public const int TAG_COUNTRY_OR_PRIMARY_LOCATION = 0x0265; - public const int TAG_ORIGINAL_TRANSMISSION_REFERENCE = 0x0267; - public const int TAG_CATEGORY = 0x020f; - public const int TAG_SUPPLEMENTAL_CATEGORIES = 0x0214; - public const int TAG_URGENCY = 0x0200 | 10; - public const int TAG_KEYWORDS = 0x0200 | 25; - public const int TAG_COPYRIGHT_NOTICE = 0x0274; - public const int TAG_RELEASE_DATE = 0x0200 | 30; - public const int TAG_RELEASE_TIME = 0x0200 | 35; - public const int TAG_TIME_CREATED = 0x0200 | 60; - public const int TAG_ORIGINATING_PROGRAM = 0x0200 | 65; - - /// - /// Constructor of the object. - /// - public IptcDirectory() - : base("IptcMarkernote") - { - this.SetDescriptor(new IptcDescriptor(this)); - } - - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/iptc/IptcProcessingException.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/iptc/IptcProcessingException.cs deleted file mode 100644 index 43c49dc..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/iptc/IptcProcessingException.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; - -namespace com.drew.metadata.iptc -{ - /// - /// The exception type raised during reading of Iptc data in the instance of unexpected data conditions. - /// - - [Serializable] - public class IptcProcessingException : MetadataException - { - /// - /// Constructor of the object - /// - /// The error aMessage - public IptcProcessingException(string aMessage) - : base(aMessage) - { - } - - /// - /// Constructor of the object - /// - /// The error aMessage - /// The aCause of the exception - public IptcProcessingException(string aMessage, Exception aCause) - : base(aMessage, aCause) - { - } - - /// - /// Constructor of the object - /// - /// The aCause of the exception - public IptcProcessingException(Exception aCause) - : base(aCause.Message, aCause) - { - } - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/iptc/IptcReader.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/iptc/IptcReader.cs deleted file mode 100644 index 3b6efac..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/iptc/IptcReader.cs +++ /dev/null @@ -1,209 +0,0 @@ -using System; -using System.IO; -using com.drew.imaging.jpg; -using com.utils; -using System.Diagnostics; - -namespace com.drew.metadata.iptc -{ - /// - /// The Iptc reader class - /// - - public class IptcReader : AbstractMetadataReader - { - - /// - /// Creates a new IptcReader for the specified Jpeg jpegFile. - /// - /// where to read - public IptcReader(FileInfo aFile) : base(aFile, JpegSegmentReader.SEGMENT_APPD) - { - } - - /// - /// Constructor of the object - /// - /// the data to read - public IptcReader(byte[] aData) - : base(aData) - { - } - - /// - /// Extracts aMetadata - /// - /// where to add aMetadata - /// the aMetadata found - public override Metadata Extract(Metadata aMetadata) - { - if (base.data == null) - { - return aMetadata; - } - - AbstractDirectory lcDirectory = aMetadata.GetDirectory("com.drew.metadata.iptc.IptcDirectory"); - - // find start of data - int offset = 0; - try - { - while (offset < base.data.Length - 1 && Get32Bits(offset) != 0x1c02) - { - offset++; - } - } - catch (MetadataException e) - { - lcDirectory.HasError = true; - Trace.TraceError( - "Couldn't find start of Iptc data (invalid segment) ("+e.Message+")"); - return aMetadata; - } - - // for each tag - while (offset < base.data.Length) - { - // identifies start of a tag - if (base.data[offset] != 0x1c) - { - break; - } - // we need at least five bytes left to read a tag - if ((offset + 5) >= base.data.Length) - { - break; - } - - offset++; - - int directoryType; - int tagType; - int tagByteCount; - try - { - directoryType = base.data[offset++]; - tagType = base.data[offset++]; - tagByteCount = Get32Bits(offset); - } - catch (MetadataException e) - { - lcDirectory.HasError = true; - Trace.TraceError( - "Iptc data segment ended mid-way through tag descriptor ("+e.Message+")"); - return aMetadata; - } - offset += 2; - if ((offset + tagByteCount) > base.data.Length) - { - lcDirectory.HasError = true; - Trace.TraceError( - "Data for tag extends beyond end of IPTC segment"); - break; - } - - ProcessTag(lcDirectory, directoryType, tagType, offset, tagByteCount); - offset += tagByteCount; - } - - return aMetadata; - } - - - /// - /// This method serves as marsheller of objects for dataset. - /// It converts from IPTC octets to relevant java object. - /// - /// the directory - /// the directory type - /// the tag type - /// the lcOffset - /// the tag byte count - private void ProcessTag( - AbstractDirectory aDirectory, - int aDirectoryType, - int aTagType, - int anOffset, - int aTagByteCount) - { - int tagIdentifier = aTagType | (aDirectoryType << 8); - - switch (tagIdentifier) - { - case IptcDirectory.TAG_RECORD_VERSION: - // short - short shortValue = (short)((base.data[anOffset] << 8) | base.data[anOffset + 1]); - aDirectory.SetObject(tagIdentifier, shortValue); - return; - case IptcDirectory.TAG_URGENCY: - // byte - aDirectory.SetObject(tagIdentifier, base.data[anOffset]); - return; - case IptcDirectory.TAG_RELEASE_DATE: - case IptcDirectory.TAG_DATE_CREATED: - // Date object - if (aTagByteCount >= 8) - { - string dateStr = Utils.Decode(base.data, anOffset, aTagByteCount, false); - try - { - int year = Convert.ToInt32(dateStr.Remove(4)); - int month = Convert.ToInt32(dateStr.Substring(4, 2)); //No -1 here; - int day = Convert.ToInt32(dateStr.Substring(6, 2)); - DateTime date = new DateTime(year, month, day); - aDirectory.SetObject(tagIdentifier, date); - return; - } - catch (FormatException) - { - // fall through and we'll store whatever was there as a String - } - } - break; // Added for .Net compiler - //case IptcDirectory.TAG_RELEASE_TIME: - //case IptcDirectory.TAG_TIME_CREATED: - } - // If no special handling by now, treat it as a string - string str = null; - if (aTagByteCount < 1) - { - str = ""; - } - else - { - str = Utils.Decode(base.data, anOffset, aTagByteCount, false); - } - if (aDirectory.ContainsTag(tagIdentifier)) - { - string[] oldStrings; - string[] newStrings; - try - { - oldStrings = aDirectory.GetStringArray(tagIdentifier); - } - catch (MetadataException) - { - oldStrings = null; - } - if (oldStrings == null) - { - newStrings = new String[1]; - } - else - { - newStrings = new string[oldStrings.Length + 1]; - for (int i = 0; i < oldStrings.Length; i++) - { - newStrings[i] = oldStrings[i]; - } - } - newStrings[newStrings.Length - 1] = str; - aDirectory.SetObject(tagIdentifier, newStrings); - } - else - { - aDirectory.SetObject(tagIdentifier, str); - } - } - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/jpeg/JpegCommentDescriptor.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/jpeg/JpegCommentDescriptor.cs deleted file mode 100644 index 5f9a3ac..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/jpeg/JpegCommentDescriptor.cs +++ /dev/null @@ -1,31 +0,0 @@ -namespace com.drew.metadata.jpeg -{ - /// - /// Tag descriptor for Jpeg - /// - - public class JpegCommentDescriptor : AbstractTagDescriptor - { - /// - /// Constructor of the object - /// - /// a directory - public JpegCommentDescriptor(AbstractDirectory directory) : base(directory) - { - } - - /// - /// Returns a descriptive value of the the specified tag for this image. - /// Where possible, known values will be substituted here in place of the raw tokens actually - /// kept in the Exif segment. - /// If no substitution is available, the value provided by GetString(int) will be returned. - /// This and GetString(int) are the only 'get' methods that won't throw an exception. - /// - /// the tag to find a description for - /// a description of the image'str value for the specified tag, or null if the tag hasn't been defined. - public override string GetDescription(int tagType) - { - return base.directory.GetString(tagType); - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/jpeg/JpegCommentDirectory.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/jpeg/JpegCommentDirectory.cs deleted file mode 100644 index 473b2b6..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/jpeg/JpegCommentDirectory.cs +++ /dev/null @@ -1,23 +0,0 @@ -namespace com.drew.metadata.jpeg -{ - /// - /// The JpegComment Directory class - /// - - public class JpegCommentDirectory : AbstractDirectory - { - /// - /// This is in bits/sample, usually 8 (12 and 16 not supported by most software). - /// - public static int TAG_JPEG_COMMENT = 0; - - /// - /// Constructor of the object. - /// - public JpegCommentDirectory() - : base("JpegMarkernote") - { - this.SetDescriptor(new JpegCommentDescriptor(this)); - } - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/jpeg/JpegCommentReader.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/jpeg/JpegCommentReader.cs deleted file mode 100644 index 79b3edc..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/jpeg/JpegCommentReader.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System.IO; -using com.drew.imaging.jpg; -using com.utils; - -namespace com.drew.metadata.jpeg -{ - /// - /// The Jpeg reader class - /// - - public class JpegCommentReader : AbstractMetadataReader - { - - /// - /// Creates a new JpegCommentReader for the specified Jpeg jpegFile. - /// - /// where to read - public JpegCommentReader(FileInfo aFile) : base(aFile, JpegSegmentReader.SEGMENT_COM) - { - } - - /// - /// Constructor of the object - /// - /// the data to read - public JpegCommentReader(byte[] aData) - : base(aData) - { - } - - /// - /// Extracts aMetadata - /// - /// where to add aMetadata - /// the aMetadata found - public override Metadata Extract(Metadata aMetadata) - { - if (base.data == null) - { - return aMetadata; - } - - AbstractDirectory lcDirectory = aMetadata.GetDirectory("com.drew.metadata.jpeg.JpegCommentDirectory"); - string comment = Utils.Decode(base.data, true); - lcDirectory.SetObject(JpegCommentDirectory.TAG_JPEG_COMMENT,comment); - return aMetadata; - } - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/jpeg/JpegComponent.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/jpeg/JpegComponent.cs deleted file mode 100644 index 4d759cd..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/jpeg/JpegComponent.cs +++ /dev/null @@ -1,107 +0,0 @@ -using System; -using System.Text; - -namespace com.drew.metadata.jpeg -{ - /// - /// The Jpeg component class - /// - [Serializable] - - public class JpegComponent - { - private int componentId; - public int ComponentId - { - get - { - return this.componentId; - } - } - - private int quantizationTableNumber; - public int QuantizationTableNumber - { - get - { - return this.quantizationTableNumber; - } - } - - private int samplingFactorByte; - /// - /// Gets the Horizontal Sampling Factor - /// - /// the Horizontal Sampling Factor - public int HorizontalSamplingFactor - { - get - { - return this.samplingFactorByte & 0x0F; - } - } - /// - /// Gets the Vertical Sampling Factor - /// - /// the Vertical Sampling Factor - public int VerticalSamplingFactor - { - get - { - return (this.samplingFactorByte >> 4) & 0x0F; - } - } - - /// - /// The constructor of the object - /// - /// the component id - /// the sampling lcFactor byte - /// the quantization table number - public JpegComponent( - int aComponentId, - int aSamplingFactorByte, - int aQuantizationTableNumber) : base() - { - this.componentId = aComponentId; - this.samplingFactorByte = aSamplingFactorByte; - this.quantizationTableNumber = aQuantizationTableNumber; - } - - /// - /// The component name - /// - /// The component name - public string GetComponentName() - { - switch (this.componentId) - { - case 1 : - return "Y"; - case 2 : - return "Cb"; - case 3 : - return "Cr"; - case 4 : - return "I"; - case 5 : - return "Q"; - default : - throw new MetadataException("Unsupported component id: " + this.componentId); - } - } - - /// - /// Gives a representation of the JpegComponent. - /// - /// The JpegComponent in a readable way - public override string ToString() - { - StringBuilder buff = new StringBuilder(); - buff.Append(this.componentId).Append(','); - buff.Append(this.samplingFactorByte).Append(','); - buff.Append(this.quantizationTableNumber).Append(','); - return buff.ToString(); - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/jpeg/JpegDescriptor.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/jpeg/JpegDescriptor.cs deleted file mode 100644 index 0fa626c..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/jpeg/JpegDescriptor.cs +++ /dev/null @@ -1,99 +0,0 @@ -namespace com.drew.metadata.jpeg -{ - /// - /// Tag descriptor for Jpeg - /// - - public class JpegDescriptor : AbstractTagDescriptor - { - /// - /// Constructor of the object - /// - /// a directory - public JpegDescriptor(AbstractDirectory directory) : base(directory) - { - } - - /// - /// Returns a descriptive value of the the specified tag for this image. - /// Where possible, known values will be substituted here in place of the raw tokens actually - /// kept in the Exif segment. - /// If no substitution is available, the value provided by GetString(int) will be returned. - /// This and GetString(int) are the only 'get' methods that won't throw an exception. - /// - /// the tag to find a description for - /// a description of the image'str value for the specified tag, or null if the tag hasn't been defined. - public override string GetDescription(int tagType) - { - switch(tagType) - { - case JpegDirectory.TAG_JPEG_COMPONENT_DATA_1 : - return GetComponentDataDescription(0); - case JpegDirectory.TAG_JPEG_COMPONENT_DATA_2 : - return GetComponentDataDescription(1); - case JpegDirectory.TAG_JPEG_COMPONENT_DATA_3 : - return GetComponentDataDescription(2); - case JpegDirectory.TAG_JPEG_COMPONENT_DATA_4 : - return GetComponentDataDescription(3); - case JpegDirectory.TAG_JPEG_DATA_PRECISION : - return GetDataPrecisionDescription(); - case JpegDirectory.TAG_JPEG_IMAGE_HEIGHT : - return GetImageHeightDescription(); - case JpegDirectory.TAG_JPEG_IMAGE_WIDTH : - return GetImageWidthDescription(); - default : - return base.directory.GetString(tagType); - } - } - - /// - /// Gets the image width description - /// - /// the image width description - public string GetImageWidthDescription() - { - return BUNDLE["PIXELS", base.directory.GetString(JpegDirectory.TAG_JPEG_IMAGE_WIDTH)]; - } - - /// - /// Gets the image height description - /// - /// the image height description - public string GetImageHeightDescription() - { - return BUNDLE["PIXELS", base.directory.GetString(JpegDirectory.TAG_JPEG_IMAGE_HEIGHT)]; - } - - /// - /// Gets the Data Precision description - /// - /// the Data Precision description - public string GetDataPrecisionDescription() - { - return BUNDLE["BITS", base.directory.GetString(JpegDirectory.TAG_JPEG_DATA_PRECISION)]; - } - - /// - /// Gets the Component Data description - /// - /// the component number - /// the Component Data description - public string GetComponentDataDescription(int componentNumber) - { - JpegComponent component = - ((JpegDirectory)base.directory).GetComponent(componentNumber); - if (component == null) - { - throw new MetadataException("No Jpeg component exists with number " + componentNumber); - } - - // {0} component: Quantization table {1}, Sampling factors {2} horiz/{3} vert - string[] tab = new string[] {component.GetComponentName(), - component.QuantizationTableNumber.ToString(), - component.HorizontalSamplingFactor.ToString(), - component.VerticalSamplingFactor.ToString()}; - - return BUNDLE["COMPONENT_DATA", tab]; - } - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/jpeg/JpegDirectory.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/jpeg/JpegDirectory.cs deleted file mode 100644 index e350118..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/jpeg/JpegDirectory.cs +++ /dev/null @@ -1,105 +0,0 @@ -namespace com.drew.metadata.jpeg -{ - /// - /// The Jpeg Directory class - /// - - public class JpegDirectory : AbstractDirectory - { - /// - /// This is in bits/sample, usually 8 (12 and 16 not supported by most software). - /// - public const int TAG_JPEG_DATA_PRECISION = 0; - - /// - /// The image'str height. Necessary for decoding the image, so it should always be there. - /// - public const int TAG_JPEG_IMAGE_HEIGHT = 1; - - /// - /// The image'str width. Necessary for decoding the image, so it should always be there. - /// - public const int TAG_JPEG_IMAGE_WIDTH = 3; - - /// - /// Usually 1 = grey scaled, 3 = color YcbCr or YIQ, 4 = color CMYK Each component TAG_COMPONENT_DATA_[1-4], - /// has the following meaning: component Id(1byte)(1 = Y, 2 = Cb, 3 = Cr, 4 = I, 5 = Q), - /// sampling factors (1byte) (bit 0-3 vertical., 4-7 horizontal.), - /// quantization table number (1 byte). - /// This info is from http://www.funducode.com/freec/Fileformats/format3/format3b.htm - /// - public const int TAG_JPEG_NUMBER_OF_COMPONENTS = 5; - - // NOTE! Component tag type int values must increment in steps of 1 - - /// - /// the first of a possible 4 color components. Number of components specified in TAG_JPEG_NUMBER_OF_COMPONENTS. - /// - public const int TAG_JPEG_COMPONENT_DATA_1 = 6; - - /// - /// the second of a possible 4 color components. Number of components specified in TAG_JPEG_NUMBER_OF_COMPONENTS. - /// - public const int TAG_JPEG_COMPONENT_DATA_2 = 7; - - /// - /// the third of a possible 4 color components. Number of components specified in TAG_JPEG_NUMBER_OF_COMPONENTS. - /// - public const int TAG_JPEG_COMPONENT_DATA_3 = 8; - - /// - /// the fourth of a possible 4 color components. Number of components specified in TAG_JPEG_NUMBER_OF_COMPONENTS. - /// - public const int TAG_JPEG_COMPONENT_DATA_4 = 9; - - /// - /// Constructor of the object. - /// - public JpegDirectory() - : base("JpegMarkernote") - { - this.SetDescriptor(new JpegDescriptor(this)); - } - - /// - /// Gets the component - /// - /// The zero-based index of the component. This number is normally between 0 and 3. Use GetNumberOfComponents for bounds-checking. - /// the JpegComponent - public JpegComponent GetComponent(int componentNumber) - { - int tagType = JpegDirectory.TAG_JPEG_COMPONENT_DATA_1 + componentNumber; - - JpegComponent component = (JpegComponent) GetObject(tagType); - - return component; - } - - /// - /// Gets image width - /// - /// image width - public int GetImageWidth() - { - return GetInt(JpegDirectory.TAG_JPEG_IMAGE_WIDTH); - } - - /// - /// Gets image height - /// - /// image height - public int GetImageHeight() - { - return GetInt(JpegDirectory.TAG_JPEG_IMAGE_HEIGHT); - } - - /// - /// Gets the Number Of Components - /// - /// the Number Of Components - public int GetNumberOfComponents() - { - return GetInt(JpegDirectory.TAG_JPEG_NUMBER_OF_COMPONENTS); - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/drew/metadata/jpeg/JpegReader.cs b/MetadataExtractCore/Metadata/EXIF/drew/metadata/jpeg/JpegReader.cs deleted file mode 100644 index 4d88d1e..0000000 --- a/MetadataExtractCore/Metadata/EXIF/drew/metadata/jpeg/JpegReader.cs +++ /dev/null @@ -1,100 +0,0 @@ -using System.IO; -using com.drew.imaging.jpg; -using System.Diagnostics; - -namespace com.drew.metadata.jpeg -{ - /// - /// The JPEG reader class - /// - - public class JpegReader : AbstractMetadataReader - { - - /// - /// Creates a new JpegReader for the specified Jpeg jpegFile. - /// - /// where to read - public JpegReader(FileInfo aFile) : base(aFile, JpegSegmentReader.SEGMENT_SOF0) - { - } - - /// - /// Constructor of the object - /// - /// the data to read - public JpegReader(byte[] aData) - : base(aData) - { - } - - /// - /// Extracts aMetadata - /// - /// where to add aMetadata - /// the aMetadata found - public override Metadata Extract(Metadata aMetadata) - { - if (base.data == null) - { - return aMetadata; - } - - AbstractDirectory lcDirectory = aMetadata.GetDirectory("com.drew.metadata.jpeg.JpegDirectory"); - - try - { - // data precision - int dataPrecision = - base.Get16Bits(JpegDirectory.TAG_JPEG_DATA_PRECISION); - lcDirectory.SetObject( - JpegDirectory.TAG_JPEG_DATA_PRECISION, - dataPrecision); - - // process height - int height = base.Get32Bits(JpegDirectory.TAG_JPEG_IMAGE_HEIGHT); - lcDirectory.SetObject(JpegDirectory.TAG_JPEG_IMAGE_HEIGHT, height); - - // process width - int width = base.Get32Bits(JpegDirectory.TAG_JPEG_IMAGE_WIDTH); - lcDirectory.SetObject(JpegDirectory.TAG_JPEG_IMAGE_WIDTH, width); - - // number of components - int numberOfComponents = - base.Get16Bits(JpegDirectory.TAG_JPEG_NUMBER_OF_COMPONENTS); - lcDirectory.SetObject( - JpegDirectory.TAG_JPEG_NUMBER_OF_COMPONENTS, - numberOfComponents); - - // for each component, there are three bytes of data: - // 1 - Component ID: 1 = Y, 2 = Cb, 3 = Cr, 4 = I, 5 = Q - // 2 - Sampling factors: bit 0-3 vertical, 4-7 horizontal - // 3 - Quantization table number - int offset = 6; - for (int i = 0; i < numberOfComponents; i++) - { - int componentId = base.Get16Bits(offset++); - int samplingFactorByte = base.Get16Bits(offset++); - int quantizationTableNumber = base.Get16Bits(offset++); - JpegComponent lcJpegComponent = - new JpegComponent( - componentId, - samplingFactorByte, - quantizationTableNumber); - lcDirectory.SetObject( - JpegDirectory.TAG_JPEG_COMPONENT_DATA_1 + i, - lcJpegComponent); - } - - } - catch (MetadataException me) - { - lcDirectory.HasError = true; - Trace.TraceError("MetadataException: " + me.Message); - } - - return aMetadata; - } - - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/utils/Utils.cs b/MetadataExtractCore/Metadata/EXIF/utils/Utils.cs deleted file mode 100644 index c890923..0000000 --- a/MetadataExtractCore/Metadata/EXIF/utils/Utils.cs +++ /dev/null @@ -1,87 +0,0 @@ -using System; -using System.Text; -using System.IO; -using System.Collections.Generic; - -namespace com.utils -{ - /// - /// Class that try to recreate some Java functionnalities. - /// - - public sealed class Utils - { - /// - /// Constructor of the object - /// - /// always - private Utils() - : base() - { - throw new UnauthorizedAccessException("Do not use"); - } - - /// - /// Builds a string from a byte array - /// - /// the array of byte - /// where to start - /// the length to transform in string - /// if true, spaces will be avoid - /// a string representing the array of byte - public static string Decode(byte[] anArray, int offset, int length, bool removeSpace) - { - StringBuilder sb = new StringBuilder(length); - for(int i=offset; i - /// Builds a string from a byte array - ///
- /// the array of byte - /// if true, spaces will be avoid - /// a string representing the array of byte - public static string Decode(byte[] anArray, bool removeSpace) - { - return Decode(anArray, 0, anArray.Length, removeSpace); - } - - /// - /// Search for files in the given directory. - /// - /// Where to start the search - /// if true will do sub directories as well - /// if not null will take only file with the given axtension (ex "*.jpg") - /// a list of file name - public static List SearchAllFileIn(String aRootDirectory, bool doRecurse, string aSearchPattern) - { - List lcResult = new List(); - if (Directory.Exists(aRootDirectory)) - { - string[] lc2List = Directory.GetFiles(aRootDirectory, aSearchPattern, (doRecurse) ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly); - for (int i = 0; i < lc2List.Length; i++) - { - lcResult.Add(lc2List[i]); - } - } - return lcResult; - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/utils/bundle/AbstractResourceBundle.cs b/MetadataExtractCore/Metadata/EXIF/utils/bundle/AbstractResourceBundle.cs deleted file mode 100644 index 4cfde15..0000000 --- a/MetadataExtractCore/Metadata/EXIF/utils/bundle/AbstractResourceBundle.cs +++ /dev/null @@ -1,131 +0,0 @@ -using System.Collections.Generic; -namespace com.utils.bundle -{ - /// - /// This class is an abstract bundle class.
- /// - /// Used for internationalisation (multi-language).
- /// - /// Allow the use of messages with holes.
- /// - /// Example: - ///
-    /// KEY1=Hello
-    /// KEY2=Hello {0}
-    /// KEY3=Hello {0} with an age of {1}
-    /// Then you will use :
-    /// myBundle["KEY1"];
-    /// myBundle["KEY2", "Jhon"];
-    /// myBundle["KEY3", "Jhon", 32.ToString()];
-    /// myBundle["KEY3", new string[] {"Jhon", 32.ToString()}];
-    /// 
- ///
- - abstract class AbstractResourceBundle : IResourceBundle - { - private string name; - - public string Name - { - get { return this.name; } - set { this.name = value; } - } - - private string fullName; - - public string Fullname - { - get { return this.fullName; } - set { this.fullName = value; } - } - - public abstract IDictionary Entries - { - get; - } - - /// - /// Indexator on a simple aMessage. - /// - /// the referenced key - /// the aMessage attached to this key, or launch a MissingResourceException if none found - public string this[string aKey] - { - get - { - return this[aKey, new string[] { null }]; - } - } - - /// - /// Indexator on a aMessage with one hole {0} in it. - /// - /// the referenced key - /// what to put in hole {0} - /// the aMessage attached to this key, or launch a MissingResourceException if none found - public string this[string aKey, string fillGapWith] - { - get - { - return this[aKey, new string[] { fillGapWith }]; - } - } - - /// - /// Indexator on a aMessage with two holes {0} and {1} in it. - /// - /// the referenced key - /// what to put in hole {0} - /// what to put in hole {1} - /// the aMessage attached to this key, or launch a MissingResourceException if none found - public string this[string aKey, string fillGap0, string fillGap1] - { - get - { - return this[aKey, new string[] { fillGap0, fillGap1 }]; - } - } - - - /// - /// Indexator on a aMessage with many holes {0}, {1}, {2] ... in it. - /// - /// the referenced key - /// what to put in holes. fillGapWith[0] used for {0}, fillGapWith[1] used for {1} ... - /// the aMessage attached to this key, or launch a MissingResourceException if none found - public abstract string this[string aKey, string[] fillGapWith] - { - get; - } - - /// - /// Constructor of the object. - /// - /// Keep private, use the other one. - /// - protected AbstractResourceBundle() - : base() - { - } - - - /// - /// Fills the gap in a string. - /// - /// where to fill the gap. A gap is {0} or {1} ... - /// what to put in the gap. fillGapWith[0] will go in {0} and so on - /// - protected string replace(string aLine, string[] fillGapWith) - { - for (int i = 0; i < fillGapWith.Length; i++) - { - if (fillGapWith[i] == null) - { - fillGapWith[i] = ""; - } - aLine = aLine.Replace("{" + i + "}", fillGapWith[i]); - } - return aLine; - } - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/utils/bundle/IResourceBundle.cs b/MetadataExtractCore/Metadata/EXIF/utils/bundle/IResourceBundle.cs deleted file mode 100644 index 93dc28b..0000000 --- a/MetadataExtractCore/Metadata/EXIF/utils/bundle/IResourceBundle.cs +++ /dev/null @@ -1,88 +0,0 @@ -using System.Collections.Generic; - -namespace com.utils.bundle -{ - /// - /// This interface represent a bundle class.
- /// - /// Used for internationalisation (multi-language).
- /// - /// Allow the use of messages with holes.
- /// - ///
- - public interface IResourceBundle - { - /// - /// Gets/sets the name of this bundle (ex: CanonMarkernote). - /// - string Name - { - get; - set; - } - - /// - /// Gets/sets the full name of this bundle (ex: /resources/en/CanonMarkernote.txt) - /// - string Fullname - { - get; - set; - } - - /// - /// Gets the dictionnaries entry for this bundle. - /// - IDictionary Entries - { - get; - } - - - - /// - /// Indexator on a simple aMessage. - /// - /// the referenced key - /// the aMessage attached to this key, or launch a MissingResourceException if none found - string this[string aKey] - { - get; - } - - /// - /// Indexator on a aMessage with one hole {0} in it. - /// - /// the referenced key - /// what to put in hole {0} - /// the aMessage attached to this key, or launch a MissingResourceException if none found - string this[string aKey, string fillGapWith] - { - get; - } - - /// - /// Indexator on a aMessage with two holes {0} and {1} in it. - /// - /// the referenced key - /// what to put in hole {0} - /// what to put in hole {1} - /// the aMessage attached to this key, or launch a MissingResourceException if none found - string this[string aKey, string fillGap0, string fillGap1] - { - get; - } - - /// - /// Indexator on a aMessage with many holes {0}, {1}, {2] ... in it. - /// - /// the referenced key - /// what to put in holes. fillGapWith[0] used for {0}, fillGapWith[1] used for {1} ... - /// the aMessage attached to this key, or launch a MissingResourceException if none found - string this[string aKey, string[] fillGapWith] - { - get; - } - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/utils/bundle/MissingResourceException.cs b/MetadataExtractCore/Metadata/EXIF/utils/bundle/MissingResourceException.cs deleted file mode 100644 index a77bf4e..0000000 --- a/MetadataExtractCore/Metadata/EXIF/utils/bundle/MissingResourceException.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System; -using com.drew.lang; - -namespace com.utils.bundle -{ - /// - /// This class represents a missing resource exception. - /// - /// Used by ResourveBundle class. - /// - - [Serializable] - public class MissingResourceException : CompoundException - { - /// - /// Constructor of the object - /// - /// The error aMessage - public MissingResourceException(string message) : base(message) - { - } - - /// - /// Constructor of the object - /// - /// The error aMessage - /// The aCause of the exception - public MissingResourceException(string message, Exception cause) : base(message, cause) - { - } - - /// - /// Constructor of the object - /// - /// The aCause of the exception - public MissingResourceException(Exception cause) - : base(cause) - { - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/utils/bundle/ResourceBundle.cs b/MetadataExtractCore/Metadata/EXIF/utils/bundle/ResourceBundle.cs deleted file mode 100644 index b25d4db..0000000 --- a/MetadataExtractCore/Metadata/EXIF/utils/bundle/ResourceBundle.cs +++ /dev/null @@ -1,148 +0,0 @@ -using System; -using System.Text; -using System.IO; -using System.Reflection; -using System.Collections.Generic; -using System.Globalization; - -namespace com.utils.bundle -{ - /// - /// This class is a bundle class.
- /// - /// Used for internationalisation (multi-language).
- /// - /// Allow the use of messages with holes.
- /// - /// Example: - ///
-    /// KEY1=Hello
-    /// KEY2=Hello {0}
-    /// KEY3=Hello {0} with an age of {1}
-    /// Then you will use :
-    /// myBundle["KEY1"];
-    /// myBundle["KEY2", "Jhon"];
-    /// myBundle["KEY3", "Jhon", 32.ToString()];
-    /// myBundle["KEY3", new string[] {"Jhon", 32.ToString()}];
-    /// 
- ///
- - sealed class ResourceBundle : AbstractResourceBundle - { - private IDictionary resourceManager; - public override IDictionary Entries - { - get { return this.resourceManager; } - } - - - /// - /// Indexator on a aMessage with many holes {0}, {1}, {2] ... in it. - /// - /// the referenced key - /// what to put in holes. fillGapWith[0] used for {0}, fillGapWith[1] used for {1} ... - /// the aMessage attached to this key, or launch a MissingResourceException if none found - public override string this[string aKey, string[] fillGapWith] - { - get - { - string resu = this.resourceManager[aKey]; - if (resu == null) - { - throw new MissingResourceException("\"" + aKey + "\" Not found"); - } - return replace(resu, fillGapWith); - } - } - - /// - /// Constructor of the object. - /// - /// Keep private, use the other one. - /// - private ResourceBundle() - : base() - { - } - - /// - /// Constructor of the object.
- /// Will use default resources by default. - ///
- /// The resource file where to find keys. Do not add the extension and do not forget to add your resource file into the assembly. - public ResourceBundle(string aPropertyFileName) - : this(aPropertyFileName, null) - { - } - - /// - /// Constructor of the object. - /// - /// The resource file where to find keys. Do not add the extension and do not forget to add your resource file into the assembly. - /// The culture info. Can be null - public ResourceBundle(string aPropertyFileName, CultureInfo aCultureInfo) - : base() - { - Assembly assembly = Assembly.GetExecutingAssembly(); - string cultureInfo = ""; - if (aCultureInfo != null && !aCultureInfo.IsNeutralCulture) - { - cultureInfo = aCultureInfo.TwoLetterISOLanguageName + "."; - } - string rsFile = assembly.GetName().Name +".resources." + cultureInfo + aPropertyFileName + ".txt"; - string defaultFile = assembly.GetName().Name + ".resources." + aPropertyFileName + ".txt"; - Encoding useEncoding = Encoding.UTF8; - try - { - using (var reader = new StreamReader(assembly.GetManifestResourceStream(rsFile), useEncoding)) - { - resourceManager = this.LoadFromFile(reader); - } - } - catch (Exception) - { - try - { - using (var reader = new StreamReader(assembly.GetManifestResourceStream(defaultFile), useEncoding)) - { - resourceManager = this.LoadFromFile(reader); - } - } - catch (Exception e2) - { - Console.Error.WriteLine("Caution : Default Resource file '" + defaultFile + "' was not found too ! (" + e2.Message + ")."); - resourceManager = new Dictionary(0); - } - } - Name = aPropertyFileName; - Fullname = rsFile; - } - - /// - /// Reads a stream and take out the bundle.
- /// This method was created beacause resources file is a pain in the ace to handle for consol application. - ///
- /// A stream. Caution : you are responsible for opening and closing this stream. - /// A dictionnary with all info stored as key=value - private IDictionary LoadFromFile(StreamReader aStream) - { - string line = null; - IDictionary bundle = new Dictionary(); - while (!aStream.EndOfStream) - { - line = aStream.ReadLine(); - if (line != null && !line.StartsWith("#") && line.Length > 0) - { - int id = line.IndexOf("="); - if (id > 0) - { - string key = line.Remove(id); - string valueFk = line.Substring(id + 1); - bundle.Add(key, valueFk); - } - } - } - return bundle; - } - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/utils/bundle/ResourceBundleFactory.cs b/MetadataExtractCore/Metadata/EXIF/utils/bundle/ResourceBundleFactory.cs deleted file mode 100644 index 158caf0..0000000 --- a/MetadataExtractCore/Metadata/EXIF/utils/bundle/ResourceBundleFactory.cs +++ /dev/null @@ -1,108 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Globalization; - -namespace com.utils.bundle -{ - /// - /// This class is a bundle factory class.
- /// - /// You can switch the implementation or ResourceBundle using this class.
- /// - ///
- - public sealed class ResourceBundleFactory - { - public static int USE_MANAGER = 0; - public static int USE_TXTFILE = 1; - - /// - /// Indicates the default instance you want to use for ALL your bundle. - /// - private static int DEFAULT_USE = USE_TXTFILE; - - /// - /// All bundle stored in this dictionnary. - /// - private static IDictionary BUNDLES = new Dictionary(); - - - - /// - /// Constructor of the object.
- /// Does nothing, do not use. - ///
- private ResourceBundleFactory() - { - } - - /// - /// Gives an instance of resource bundle using default choice (see DEFAULT_USE). - /// Caution CultureInfo.CurrentCulture will be used. - /// - /// Name of the bundle you are looking for (ex: CanonMarkernote) - /// - public static IResourceBundle CreateDefaultBundle(string aName) - { - return ResourceBundleFactory.CreateBundle(aName, CultureInfo.CurrentCulture, ResourceBundleFactory.DEFAULT_USE); - } - - /// - /// Gives an instance of resource bundle using default choice (see DEFAULT_USE). - /// - /// Name of the bundle you are looking for (ex: CanonMarkernote) - /// a cultural info. Can be null - /// - public static IResourceBundle CreateDefaultBundle(string aName, CultureInfo aCulturalInfo) - { - return ResourceBundleFactory.CreateBundle(aName, aCulturalInfo, ResourceBundleFactory.DEFAULT_USE); - } - - /// - /// Gives an instance of resource bundle. - /// - /// Name of the bundle you are looking for (ex: CanonMarkernote) - /// a cultural info. Can be null - /// a type of bundle (See USE_MANAGER or USE_TXTFILE) - /// the bundle found or loade. - public static IResourceBundle CreateBundle(string aName, CultureInfo aCulturalInfo, int aType) - { - string key = aName; - if (aCulturalInfo != null) - { - key += "_" + aCulturalInfo.ToString(); - } - - IResourceBundle resu = null; - if (!ResourceBundleFactory.BUNDLES.ContainsKey(key)) - { - try - { - if (aType == ResourceBundleFactory.USE_MANAGER) - { - resu = new ResourceBundleWithManager(aName, aCulturalInfo); - } - else if (aType == ResourceBundleFactory.USE_TXTFILE) - { - resu = new ResourceBundle(aName, aCulturalInfo); - } - } - catch (Exception e) - { - Trace.TraceError("Could not load bundle '" + aName + "' (" + e.Message + ")"); - } - if (resu == null || resu["TEST"] == null) - { - throw new Exception("Error while loading bundle '" + aName + "' for cultural '" + aCulturalInfo + "'"); - } - ResourceBundleFactory.BUNDLES.Add(key, resu); - } - else - { - resu = ResourceBundleFactory.BUNDLES[key]; - } - return resu; - } - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/utils/bundle/ResourceBundleWithManager.cs b/MetadataExtractCore/Metadata/EXIF/utils/bundle/ResourceBundleWithManager.cs deleted file mode 100644 index 9737647..0000000 --- a/MetadataExtractCore/Metadata/EXIF/utils/bundle/ResourceBundleWithManager.cs +++ /dev/null @@ -1,103 +0,0 @@ -using System.Reflection; -using System.Collections; -using System.Collections.Generic; -using System.Resources; -using System.Globalization; - -namespace com.utils.bundle -{ - /// - /// This class is a bundle class that try to use the xxx.resources file.
- /// - /// For some misterious reason I could not make it work so it is not use.
- /// I keep it in cas I would need it some day.
- ///
- - sealed class ResourceBundleWithManager : AbstractResourceBundle - { - private CultureInfo culturalInfo; - private ResourceManager resourceManager; - - private IDictionary resourceManagerAsDic; - public override IDictionary Entries - { - get { return this.resourceManagerAsDic; } - } - - - /// - /// Indexator on a aMessage with many holes {0}, {1}, {2] ... in it. - /// - /// the referenced key - /// what to put in holes. fillGapWith[0] used for {0}, fillGapWith[1] used for {1} ... - /// the aMessage attached to this key, or launch a MissingResourceException if none found - public override string this[string aKey, string[] fillGapWith] - { - get - { - string resu = this.resourceManager.GetString(aKey, this.culturalInfo); - if (resu == null) - { - throw new MissingResourceException("\"" + aKey + "\" Not found"); - } - return replace(resu, fillGapWith); - } - } - - /// - /// Constructor of the object. - /// - /// Keep private, use the other one. - /// - private ResourceBundleWithManager() - : base() - { - } - - /// - /// Constructor of the object. - /// - /// The resource file where to find keys. Do not add the extension and do not forget to add your resource file into the assembly. - public ResourceBundleWithManager(string aPropertyFileName) - : this(aPropertyFileName, null) - { - } - - /// - /// Constructor of the object. - /// - /// The resource file where to find keys. Do not add the extension and do not forget to add your resource file into the assembly. - /// The culture info. Can be null - public ResourceBundleWithManager(string aPropertyFileName, CultureInfo aCulturalInfo) - : base() - { - this.resourceManager = new ResourceManager(aPropertyFileName, Assembly.GetExecutingAssembly()); - this.resourceManagerAsDic = new Dictionary(); - if (aCulturalInfo != null) - { - ResourceSet rs = this.resourceManager.GetResourceSet(aCulturalInfo, false, false); - IDictionaryEnumerator idicnum = rs.GetEnumerator(); - while (idicnum.MoveNext()) - { - this.resourceManagerAsDic.Add((string)idicnum.Key, (string)idicnum.Value); - } - } - this.Name = aPropertyFileName; - this.Fullname = this.resourceManager.BaseName; - - this.culturalInfo = aCulturalInfo; - } - - /// - /// Clean the object. - /// - public void Dispose() - { - if (this.resourceManager != null) - { - this.resourceManager.ReleaseAllResources(); - this.resourceManager = null; - } - } - } -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/utils/bundle/SpecialResourceWriter.cs b/MetadataExtractCore/Metadata/EXIF/utils/bundle/SpecialResourceWriter.cs deleted file mode 100644 index de5e957..0000000 --- a/MetadataExtractCore/Metadata/EXIF/utils/bundle/SpecialResourceWriter.cs +++ /dev/null @@ -1,48 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using System.Resources; - -namespace com.utils.bundle -{ - - public sealed class SpecialResourceWriter - { - public SpecialResourceWriter() - { - // Load all bunlde - IList allBundle = new List(20); - allBundle.Add(ResourceBundleFactory.CreateBundle("CanonMarkernote", null, ResourceBundleFactory.USE_TXTFILE)); - allBundle.Add(ResourceBundleFactory.CreateBundle("CasioMarkernote", null, ResourceBundleFactory.USE_TXTFILE)); - allBundle.Add(ResourceBundleFactory.CreateBundle("Commons", null, ResourceBundleFactory.USE_TXTFILE)); - allBundle.Add(ResourceBundleFactory.CreateBundle("ExifInteropMarkernote", null, ResourceBundleFactory.USE_TXTFILE)); - allBundle.Add(ResourceBundleFactory.CreateBundle("ExifMarkernote", null, ResourceBundleFactory.USE_TXTFILE)); - allBundle.Add(ResourceBundleFactory.CreateBundle("FujiFilmMarkernote", null, ResourceBundleFactory.USE_TXTFILE)); - allBundle.Add(ResourceBundleFactory.CreateBundle("GpsMarkernote", null, ResourceBundleFactory.USE_TXTFILE)); - allBundle.Add(ResourceBundleFactory.CreateBundle("IptcMarkernote", null, ResourceBundleFactory.USE_TXTFILE)); - allBundle.Add(ResourceBundleFactory.CreateBundle("JpegMarkernote", null, ResourceBundleFactory.USE_TXTFILE)); - allBundle.Add(ResourceBundleFactory.CreateBundle("KodakMarkernote", null, ResourceBundleFactory.USE_TXTFILE)); - allBundle.Add(ResourceBundleFactory.CreateBundle("KyoceraMarkernote", null, ResourceBundleFactory.USE_TXTFILE)); - allBundle.Add(ResourceBundleFactory.CreateBundle("NikonTypeMarkernote", null, ResourceBundleFactory.USE_TXTFILE)); - allBundle.Add(ResourceBundleFactory.CreateBundle("OlympusMarkernote", null, ResourceBundleFactory.USE_TXTFILE)); - allBundle.Add(ResourceBundleFactory.CreateBundle("PanasonicMarkernote", null, ResourceBundleFactory.USE_TXTFILE)); - allBundle.Add(ResourceBundleFactory.CreateBundle("PentaxMarkernote", null, ResourceBundleFactory.USE_TXTFILE)); - allBundle.Add(ResourceBundleFactory.CreateBundle("SonyMarkernote", null, ResourceBundleFactory.USE_TXTFILE)); - - IEnumerator enumRb = allBundle.GetEnumerator(); - while (enumRb.MoveNext()) - { - IResourceBundle bdl = enumRb.Current; - IDictionary idic = bdl.Entries; - IDictionaryEnumerator enumDic = (IDictionaryEnumerator)idic.GetEnumerator(); - using (var rw = new ResourceWriter(bdl.Fullname + ".resources")) - { - while (enumDic.MoveNext()) - { - rw.AddResource((string)enumDic.Key, (string)enumDic.Value); - } - } - } - } - } - -} \ No newline at end of file diff --git a/MetadataExtractCore/Metadata/EXIF/utils/xml/IOutPutTextStreamHandler.cs b/MetadataExtractCore/Metadata/EXIF/utils/xml/IOutPutTextStreamHandler.cs deleted file mode 100644 index ae5a3cd..0000000 --- a/MetadataExtractCore/Metadata/EXIF/utils/xml/IOutPutTextStreamHandler.cs +++ /dev/null @@ -1,35 +0,0 @@ -using com.drew.metadata; - -namespace com.utils.xml -{ - /// - /// This class handles output text format for metadata. - /// - - public interface IOutPutTextStreamHandler - { - /// - /// Get/set the unknown option - /// - bool DoUnknown - { - get; - set; - } - - /// - /// Get/set the metdata attribute - /// - Metadata Metadata - { - get; - set; - } - - /// - /// Transform the Metadata object into a text stream. - /// - /// The Metadata object as a text stream - string AsText(); - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/utils/xml/TxtOutPutStreamHandler.cs b/MetadataExtractCore/Metadata/EXIF/utils/xml/TxtOutPutStreamHandler.cs deleted file mode 100644 index 94be3e3..0000000 --- a/MetadataExtractCore/Metadata/EXIF/utils/xml/TxtOutPutStreamHandler.cs +++ /dev/null @@ -1,149 +0,0 @@ -using System.Collections.Generic; -using System.Text; -using com.drew.metadata; -using System.Globalization; - -namespace com.utils.xml -{ - /// - /// This class will handle text for a metatdata class - /// - - public class TxtOutPutStreamHandler : IOutPutTextStreamHandler - { - private Metadata metadata; - public Metadata Metadata - { - get - { - return this.metadata; - } - set - { - this.metadata = value; - } - } - - /// - /// Get/set the unknown option - /// - private bool doUnknown; - public bool DoUnknown - { - get - { - return this.doUnknown; - } - set - { - this.doUnknown = value; - } - } - - /// - /// Constructor of the object. - /// - public TxtOutPutStreamHandler() - : this(null) - { - } - - /// - /// Constructor of the object. - /// - /// the metadata that shoud be transformed into txt - public TxtOutPutStreamHandler(Metadata aMetadata) - : base() - { - this.Metadata = aMetadata; - } - - /// - /// Gives all forbiden letter in txt standard and their correspondance. - /// - /// All forbiden chars and their txt correspondance - public string RemoveAccentsWithNormalization(string inputString) - { - string normalizedString = inputString.Normalize(NormalizationForm.FormD); - StringBuilder sb = new StringBuilder(); - for (int i = 0; i < normalizedString.Length; i++) - { - UnicodeCategory uc = CharUnicodeInfo.GetUnicodeCategory(normalizedString[i]); - if (uc != UnicodeCategory.NonSpacingMark) - { - sb.Append(normalizedString[i]); - } - } - return (sb.ToString().Normalize(NormalizationForm.FormC)); - } - - /// - /// Creates an TXT tag using the Tag object info. - /// - /// where to put tag - /// the tag - protected virtual void CreateTag(StringBuilder aBuff, Tag aTag) - { - if (aTag != null) - { - string lcDescription = null; - try - { - lcDescription = aTag.GetDescription(); - } - catch (MetadataException) - { - // Does not care here - } - string lcName = aTag.GetTagName(); - if (!this.DoUnknown && (lcName.ToLower().StartsWith("unknown") || lcDescription.ToLower().StartsWith("unknown"))) - { - // No unKnown and is unKnown so do nothing - return; - } - aBuff.Append(RemoveAccentsWithNormalization(lcName)); - aBuff.Append('='); - aBuff.Append(RemoveAccentsWithNormalization(lcDescription)); - aBuff.AppendLine(); - } - } - - /// - /// Creates a directory tag. - /// - /// where to put info - /// the information to add - protected virtual void CreateDirectory(StringBuilder aBuff, AbstractDirectory aDirectory) - { - if (aDirectory != null) - { - aBuff.Append("--| ").Append(aDirectory.GetName()).Append(" |--"); - aBuff.AppendLine(); - IEnumerator lcTagsEnum = aDirectory.GetTagIterator(); - while (lcTagsEnum.MoveNext()) - { - Tag lcTag = lcTagsEnum.Current; - CreateTag(aBuff, lcTag); - lcTag = null; - } - } - } - - /// - /// Transform the metatdat object into an TXT stream. - /// - /// The metadata object as TXT stream - public virtual string AsText() - { - StringBuilder lcBuff = new StringBuilder(); - IEnumerator lcDirectoryEnum = this.Metadata.GetDirectoryIterator(); - while (lcDirectoryEnum.MoveNext()) - { - AbstractDirectory lcDirectory = lcDirectoryEnum.Current; - CreateDirectory(lcBuff, lcDirectory); - lcDirectory = null; - } - return lcBuff.ToString(); - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/utils/xml/XmlNewOutPutStreamHandler.cs b/MetadataExtractCore/Metadata/EXIF/utils/xml/XmlNewOutPutStreamHandler.cs deleted file mode 100644 index 33f43c2..0000000 --- a/MetadataExtractCore/Metadata/EXIF/utils/xml/XmlNewOutPutStreamHandler.cs +++ /dev/null @@ -1,565 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Text; -using System.IO; -using com.drew.metadata; -using com.drew.metadata.jpeg; -using com.drew.lang; - -namespace com.utils.xml -{ - /// - /// This class will handle XML for a Directory class. - /// - /// For default XML stream you can have a look to MetadataExtractor.dtd file and sampleFile.xml. - /// - - public class XmlNewOutPutStreamHandler : IOutPutTextStreamHandler - { - private static Dictionary FORBIDEN_CHAR; - - /// - /// The cached DTD. - /// - private static string LOADED_DTD = null; - - /// - /// The DTD path and file name. - /// - private string dtdFileName; - public string DtdFileName - { - get - { - return this.dtdFileName; - } - set - { - this.dtdFileName = value; - LoadDtd(); - } - } - - - private Metadata metadata; - public Metadata Metadata - { - get - { - return this.metadata; - } - set - { - this.metadata = value; - } - } - - private bool useCDData; - public bool UseCDData - { - get - { - return this.useCDData; - } - set - { - this.useCDData = value; - } - } - - /// - /// Get/set the unknown option - /// - private bool doUnknown; - public bool DoUnknown - { - get - { - return this.doUnknown; - } - set - { - this.doUnknown = value; - } - } - - - /// - /// Constructor of the object. - /// - public XmlNewOutPutStreamHandler() - : this(null) - { - } - - /// - /// Constructor of the object. - /// - /// the metadata that shoud be transformed into XML - public XmlNewOutPutStreamHandler(Metadata aMetadata) - : base() - { - this.Metadata = aMetadata; - this.DtdFileName = "MetadataExtractorNew.dtd"; - XmlNewOutPutStreamHandler.FORBIDEN_CHAR = XmlNewOutPutStreamHandler.BuildForbidenChar(); - } - - /// - /// Gives all forbiden letter in XML standard and their correspondance. - /// - /// All forbiden chars and their XML correspondance - private void LoadDtd() - { - try - { - StringBuilder lcBuff = new StringBuilder(); - using (var lcStreamReader = new StreamReader(File.Open(this.DtdFileName, FileMode.Open, FileAccess.Read))) - { - while (!lcStreamReader.EndOfStream) - { - lcBuff.Append(lcStreamReader.ReadLine()); - lcBuff.AppendLine(); - } - } - LOADED_DTD = lcBuff.ToString(); - } - catch (Exception) - { - // Oups Dtd not found - LOADED_DTD = null; - } - } - - /// - /// Gives all forbiden letter in XML standard and their correspondance. - /// - /// All forbiden chars and their XML correspondance - private static Dictionary BuildForbidenChar() - { - Dictionary lcResu = new Dictionary(5); - lcResu.Add("<", "<"); - lcResu.Add(">", ">"); - lcResu.Add("&", "&"); - lcResu.Add("\'", "'"); - lcResu.Add("\"", """); - return lcResu; - } - - /// - /// Start out put stream - /// - /// where to put informations - /// Specify encoding here in 0, in 1 you can add a XSLT ref, in 2 the number of files, in 3 the dtd path, in 4 true or false for the use of CDDATA - public void StartTextStream(StringBuilder aBuff, string[] someParam) - { - aBuff.Append("").AppendLine(); - - if (someParam.Length > 4) - { - // We want to use CDDATA - this.UseCDData = "true".Equals(someParam[4], StringComparison.OrdinalIgnoreCase); - } - else - { - this.UseCDData = false; - } - - if (someParam.Length > 3) - { - // We've got a DTD - this.DtdFileName = someParam[3]; - } - - // If we have a DTD - if (LOADED_DTD != null) - { - aBuff.Append(""); - aBuff.AppendLine(); - } - - if (someParam.Length > 1 && someParam[1] != null) - { - aBuff.Append(""); - } - if (someParam.Length > 2) - { - int lcNbFile = 0; - try - { - lcNbFile = Convert.ToInt16(someParam[2]); - // Finally will Open tag - } - catch (FormatException e) - { - // An error occured - aBuff.Append(""); - lcNbFile = -1; - } - finally - { - // Then we deal with more than one file - Open(aBuff, "metadataExtractor", "nbFile", lcNbFile.ToString(), true); - } - } - } - - /// - /// Finish out put stream - /// - /// where to put informations - /// Should contain nb file in [2] - public void EndTextStream(StringBuilder aBuff, string[] someParam) - { - if (someParam.Length >= 2) - { - int lcNbFile = 0; - try - { - lcNbFile = Convert.ToInt16(someParam[2]); - // Finally will close files tag - } - catch (FormatException e) - { - // An error occured - aBuff.Append(""); - } - finally - { - Close(aBuff, "metadataExtractor", true); - } - } - } - - - /// - /// Normalize a value into XML - /// - /// where to put new XML value - /// the value to normalize - /// if true will use CDATA, if false will replace FORBIDEN chars by their normal value - public virtual void Normalize(StringBuilder aBuff, string aValue, bool useCdata) - { - if (aValue != null) - { - aValue = aValue.Trim(); - if (useCdata) - { - aBuff.Append(""); - } - else - { - // check if value contains strange char and replace them if needed - IEnumerator lcEnumChar = FORBIDEN_CHAR.GetEnumerator(); - while(lcEnumChar.MoveNext()) - { - KeyValuePair lcPair = (KeyValuePair)lcEnumChar.Current; - aValue = aValue.Replace(lcPair.Key, lcPair.Value); - } - aBuff.Append(aValue); - } - } - } - - /// - /// Opens an XML tag. - /// - /// where to Open tag - /// what to put inside the tag - /// if true will go to new line after Open - private void Close(StringBuilder aBuff, string aTag, bool isNewLine) - { - aBuff.Append("'); - if (isNewLine) - { - aBuff.AppendLine(); - } - } - - /// - /// Opens an XML tag. - /// - /// where to open tag - /// what to put inside the tag - /// if true will go to new line after open - private void Open(StringBuilder aBuff, string aTagName, bool isNewLine) - { - aBuff.Append('<').Append(aTagName).Append('>'); - if (isNewLine) - { - aBuff.AppendLine(); - } - } - - /// - /// Opens an XML tag. - /// - /// where to open tag - /// what to put inside the tag - /// name of an attribute for this tag (can be null) - /// value of the first attribute for this tag - /// if true will go to new line after open - private void Open(StringBuilder aBuff, string aTagName, string attName1, object attValue1, bool isNewLine) - { - aBuff.Append('<').Append(aTagName); - if (attName1 != null) - { - aBuff.Append(' ').Append(attName1).Append("=\""); - aBuff.Append(attValue1).Append('\"'); - } - aBuff.Append('>'); - if (isNewLine) - { - aBuff.AppendLine(); - } - } - - /// - /// Opens an XML tag. - /// - /// where to open tag - /// what to put inside the tag - /// name of an attribute for this tag (can be null) - /// value of the first attribute for this tag - /// name of a second attribute for this tag (can be null) - /// value of the second attribute for this tag - /// if true will go to new line after open - private void Open(StringBuilder aBuff, string aTagName, string attName1, object attValue1, string attName2, object attValue2, bool isNewLine) - { - aBuff.Append('<').Append(aTagName); - if (attName1 != null) - { - aBuff.Append(' ').Append(attName1).Append("=\""); - aBuff.Append(attValue1).Append('\"'); - } - if (attName2 != null) - { - aBuff.Append(' ').Append(attName2).Append("=\""); - aBuff.Append(attValue2).Append('\"'); - } - aBuff.Append('>'); - if (isNewLine) - { - aBuff.AppendLine(); - } - } - - /// - /// Creates an XML tag using the Tag object info. - /// Examples : - ///
-        /// <tag type="0x0044">
-        ///   <tagLabel>White Balance</tagLabel>
-        ///   <tagDescription><![CDATA[Very bright]]></tagDescription>
-        /// </tag>
-        /// 
- /// <tag type="0x0044"> - /// <tagLabel>White Balance</tagLabel> - /// <tagDescription/> - /// </tag> - ///
- /// <tag type="0x0044"> - /// <tagLabel>White Balance</tagLabel> - /// <tagDescription/> - /// <tagError><![CDATA[Oups something is wrong]]></tagError> - /// </tag> - ///
- ///
- /// where to put tag - /// the tag - protected virtual void CreateTag(StringBuilder aBuff, Tag aTag) - { - if (aTag != null) - { - string lcDescription = null; - string lcError = null; - try - { - lcDescription = aTag.GetDescription(); - } - catch (MetadataException e) - { - lcError = e.Message; - } - string lcName = aTag.GetTagName(); - string lcHexName = aTag.GetTagTypeHex(); - object lcValue = aTag.GetTagValue(); - string lcValueStr = (lcValue != null) ? lcValue.ToString() : null; - - if (!this.DoUnknown - && (lcName.ToLower().StartsWith("unknown") || (lcDescription != null && lcDescription - .ToLower().StartsWith("unknown")))) - { - // No unKnown and is unKnown so do nothing - return; - } - this.Open(aBuff, "tag", "typeHex", lcHexName,"type",aTag.GetTagType(), true); - - this.Open(aBuff, "tagLabel", false); - this.Normalize(aBuff, lcName, UseCDData); - this.Close(aBuff, "tagLabel", true); - - if (lcDescription != null && lcDescription.Trim().Length > 0) - { - this.Open(aBuff, "tagDescription", false); - this.Normalize(aBuff, lcDescription, UseCDData); - this.Close(aBuff, "tagDescription", true); - } - else - { - aBuff.Append("").AppendLine(); - } - - if (lcValueStr == null || lcValueStr.Trim().Length == 0 - || "null".Equals(lcValueStr)) - { - aBuff.Append("").AppendLine(); - } - else - { - this.Open(aBuff, "tagValue", "class", lcValue.GetType(), false); - if (lcValue.GetType().IsArray) - { - if (this.UseCDData) - { - aBuff.Append(""); - } - } - else if (lcValue.GetType().Equals(typeof(DateTime))) - { - if (this.UseCDData) - { - aBuff.Append(""); - } - } - else - { - this.Normalize(aBuff, lcValueStr, UseCDData); - } - this.Close(aBuff, "tagValue", true); - } - - if (lcError != null) - { - lcError = lcError + " for typeHex=\"" + lcHexName + "\" type=\"" + aTag.GetTagType() + "\""; - this.Open(aBuff, "tagError", false); - this.Normalize(aBuff, lcError, UseCDData); - this.Close(aBuff, "tagError", true); - } - this.Close(aBuff, "tag", true); - } - } - - - - /// - /// Creates a directory tag. - /// - /// Examples : - ///
-        /// <directory name="Exif">
-        ///   <tag>
-        ///     ...
-        ///   </tag>
-        ///   <tag>
-        ///     ...
-        ///   </tag>
-        /// </directory>
-        /// 
- ///
- /// where to put info - /// the information to add - protected virtual void CreateDirectory(StringBuilder aBuff, AbstractDirectory aDirectory) - { - if (aDirectory != null) - { - this.Open(aBuff, "directory", "name", aDirectory.GetName(),"class", aDirectory.GetType(), true); - IEnumerator lcTagsEnum = aDirectory.GetTagIterator(); - while (lcTagsEnum.MoveNext()) - { - this.CreateTag(aBuff, lcTagsEnum.Current); - } - this.Close(aBuff, "directory", true); - } - } - - - /// - /// Transform the metatdat object into an XML stream. - /// - /// The metadata object as XML stream - public virtual string AsText() - { - StringBuilder lcBuff = new StringBuilder(); - IEnumerator lcDirectoryEnum = this.Metadata.GetDirectoryIterator(); - while (lcDirectoryEnum.MoveNext()) - { - AbstractDirectory lcDirectory = lcDirectoryEnum.Current; - CreateDirectory(lcBuff, lcDirectory); - lcDirectory = null; - } - return lcBuff.ToString(); - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIF/utils/xml/XmlOutPutStreamHandler.cs b/MetadataExtractCore/Metadata/EXIF/utils/xml/XmlOutPutStreamHandler.cs deleted file mode 100644 index 59506a3..0000000 --- a/MetadataExtractCore/Metadata/EXIF/utils/xml/XmlOutPutStreamHandler.cs +++ /dev/null @@ -1,423 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Text; -using System.IO; -using com.drew.metadata; - -namespace com.utils.xml -{ - /// - /// This class will handle XML for a Directory class. - /// - /// For default XML stream you can have a look to MetadataExtractor.dtd file and sampleFile.xml. - /// - - public class XmlOutPutStreamHandler : IOutPutTextStreamHandler - { - private static Dictionary FORBIDEN_CHAR = XmlOutPutStreamHandler.BuildForbidenChar(); - - /// - /// The cached DTD. - /// - private static string LOADED_DTD = null; - - /// - /// The DTD path and file name. - /// - private string dtdFileName; - public string DtdFileName - { - get - { - return this.dtdFileName; - } - set - { - this.dtdFileName = value; - LoadDtd(); - } - } - - - private Metadata metadata; - public Metadata Metadata - { - get - { - return this.metadata; - } - set - { - this.metadata = value; - } - } - - /// - /// Get/set the unknown option - /// - private bool doUnknown; - public bool DoUnknown - { - get - { - return this.doUnknown; - } - set - { - this.doUnknown = value; - } - } - - - /// - /// Constructor of the object. - /// - public XmlOutPutStreamHandler() - : this(null) - { - } - - /// - /// Constructor of the object. - /// - /// the metadata that shoud be transformed into XML - public XmlOutPutStreamHandler(Metadata aMetadata) - : base() - { - this.Metadata = aMetadata; - this.DtdFileName = "MetadataExtractor.dtd"; - } - - /// - /// Gives all forbiden letter in XML standard and their correspondance. - /// - /// All forbiden chars and their XML correspondance - private void LoadDtd() - { - try - { - StringBuilder lcBuff = new StringBuilder(); - using (var lcStreamReader = new StreamReader(File.Open(this.DtdFileName, FileMode.Open, FileAccess.Read))) - { - while (!lcStreamReader.EndOfStream) - { - lcBuff.Append(lcStreamReader.ReadLine()); - lcBuff.AppendLine(); - } - } - LOADED_DTD = lcBuff.ToString(); - } - catch (Exception) - { - // Oups Dtd not found - LOADED_DTD = null; - } - } - - - /// - /// Gives all forbiden letter in XML standard and their correspondance. - /// - /// All forbiden chars and their XML correspondance - protected static Dictionary BuildForbidenChar() - { - Dictionary lcResu = new Dictionary(5); - lcResu.Add("<", "<"); - lcResu.Add(">", ">"); - lcResu.Add("&", "&"); - lcResu.Add("\'", "'"); - lcResu.Add("\"", """); - return lcResu; - } - - /// - /// Start out put stream - /// - /// where to put informations - /// Specify encoding here in 0, in 1 you can add a XSLT ref, in 2 the number of files, in 3 the dtd path - public void StartTextStream(StringBuilder aBuff, string[] someParam) - { - aBuff.Append("").AppendLine(); - if (someParam.Length > 3) - { - // We've got a DTD - this.DtdFileName = someParam[3]; - } - - // If we have a DTD - if (LOADED_DTD != null) - { - aBuff.Append(""); - aBuff.AppendLine(); - } - - if (someParam.Length > 1 && someParam[1] != null) - { - aBuff.Append(""); - } - if (someParam.Length > 2) - { - int lcNbFile = 0; - try - { - lcNbFile = Convert.ToInt16(someParam[2]); - // Finally will open tag - } - catch (FormatException e) - { - // An error occured - aBuff.Append(""); - lcNbFile = -1; - } - finally - { - // Then we deal with more than one file - Open(aBuff, "metadataExtractor", "nbFile", lcNbFile.ToString(), true); - } - } - } - - /// - /// Finish out put stream - /// - /// where to put informations - /// Should contain nb file in [2] - public void EndTextStream(StringBuilder aBuff, string[] someParam) - { - if (someParam.Length >= 2) - { - int lcNbFile = 0; - try - { - lcNbFile = Convert.ToInt16(someParam[2]); - // Finally will close files tag - } - catch (FormatException e) - { - // An error occured - aBuff.Append(""); - } - finally - { - Close(aBuff, "metadataExtractor", true); - } - } - } - - - /// - /// Normalize a value into XML - /// - /// where to put new XML value - /// the value to normalize - /// if true will use CDATA, if false will replace FORBIDEN chars by their normal value - public virtual void Normalize(StringBuilder aBuff, string aValue, bool useCdata) - { - if (aValue != null) - { - aValue = aValue.Trim(); - if (useCdata) - { - aBuff.Append(""); - } - else - { - // check if value contains strange char and replace them if needed - IEnumerator lcEnumChar = FORBIDEN_CHAR.GetEnumerator(); - while (lcEnumChar.MoveNext()) - { - KeyValuePair lcPair = (KeyValuePair)lcEnumChar.Current; - aValue = aValue.Replace(lcPair.Key, lcPair.Value); - } - aBuff.Append(aValue); - } - } - } - - /// - /// Opens an XML tag. - /// - /// where to open tag - /// what to put inside the tag - /// if true will go to new line after open - private void Close(StringBuilder aBuff, string aTag, bool isNewLine) - { - aBuff.Append("'); - if (isNewLine) - { - aBuff.AppendLine(); - } - } - - /// - /// Closes an XML tag. - /// - /// where to close tag - /// what to put inside the tag - /// if true will go to new line after close - private void Open(StringBuilder aBuff, string aTag, bool isNewLine) - { - aBuff.Append('<').Append(aTag).Append('>'); - if (isNewLine) - { - aBuff.AppendLine(); - } - } - - /// - /// Opens an XML tag. - /// - /// where to open tag - /// what to put inside the tag - /// name of an attribute for this tag (can be null) - /// value of the first attribute for this tag - /// if true will go to new line after open - private void Open(StringBuilder aBuff, string aTagName, string attName1, object attValue1, bool isNewLine) - { - aBuff.Append('<').Append(aTagName); - if (attName1 != null) - { - aBuff.Append(' ').Append(attName1).Append("=\""); - aBuff.Append(attValue1).Append('\"'); - } - aBuff.Append('>'); - if (isNewLine) - { - aBuff.AppendLine(); - } - } - - /// - /// Creates an XML tag using the Tag object info. - /// Examples : - ///
-        /// <tag type="0x0044">
-        ///   <tagLabel>White Balance</tagLabel>
-        ///   <tagDescription><![CDATA[Very bright]]></tagDescription>
-        /// </tag>
-        /// 
- /// <tag type="0x0044"> - /// <tagLabel>White Balance</tagLabel> - /// <tagDescription/> - /// </tag> - ///
- /// <tag type="0x0044"> - /// <tagLabel>White Balance</tagLabel> - /// <tagDescription/> - /// <tagError><![CDATA[Oups something is wrong]]></tagError> - /// </tag> - ///
- ///
- /// where to put tag - /// the tag - protected virtual void CreateTag(StringBuilder aBuff, Tag aTag) - { - if (aTag != null) - { - string lcDescription = null; - string lcError = null; - try - { - lcDescription = aTag.GetDescription(); - } - catch (MetadataException e) - { - lcError = e.Message; - } - string lcName = aTag.GetTagName(); - string lcHexName = aTag.GetTagTypeHex(); - - if (!this.DoUnknown && lcDescription != null && (lcName.ToLower().StartsWith("unknown") || lcDescription.ToLower().StartsWith("unknown"))) - { - // No unKnown and is unKnown so do nothing - return; - } - Open(aBuff, "tag", "type", lcHexName, true); - - Open(aBuff, "tagLabel", false); - Normalize(aBuff, lcName, false); - Close(aBuff, "tagLabel", false); - - if (!string.IsNullOrEmpty(lcDescription)) - { - Open(aBuff, "tagDescription", false); - Normalize(aBuff, lcDescription, false); - Close(aBuff, "tagDescription", false); - } - else - { - aBuff.Append("").AppendLine(); - } - - if (lcError != null) - { - Open(aBuff, "tagError", false); - Normalize(aBuff, lcError, false); - Close(aBuff, "tagError", false); - } - else - { - // Does nothing if no error, this will limit the size of the XML - // stream since 99% of tag will be fine - // aBuff.Append(""); - } - Close(aBuff, "tag", true); - } - } - - /// - /// Creates a directory tag. - /// - /// Examples : - ///
-        /// <directory name="Exif">
-        ///   <tag>
-        ///     ...
-        ///   </tag>
-        ///   <tag>
-        ///     ...
-        ///   </tag>
-        /// </directory>
-        /// 
- ///
- /// where to put info - /// the information to add - protected virtual void CreateDirectory(StringBuilder aBuff, AbstractDirectory aDirectory) - { - if (aDirectory != null) - { - Open(aBuff, "directory name=\"" + aDirectory.GetName() + "\"", true); - IEnumerator lcTagsEnum = aDirectory.GetTagIterator(); - while (lcTagsEnum.MoveNext()) - { - Tag lcTag = lcTagsEnum.Current; - CreateTag(aBuff, lcTag); - lcTag = null; - } - Close(aBuff, "directory", true); - } - } - - - /// - /// Transform the metatdat object into an XML stream. - /// - /// The metadata object as XML stream - public virtual string AsText() - { - StringBuilder lcBuff = new StringBuilder(); - IEnumerator lcDirectoryEnum = this.Metadata.GetDirectoryIterator(); - while (lcDirectoryEnum.MoveNext()) - { - AbstractDirectory lcDirectory = lcDirectoryEnum.Current; - CreateDirectory(lcBuff, lcDirectory); - lcDirectory = null; - } - return lcBuff.ToString(); - } - } -} diff --git a/MetadataExtractCore/Metadata/EXIFDocument.cs b/MetadataExtractCore/Metadata/EXIFDocument.cs index e7589a8..9359738 100644 --- a/MetadataExtractCore/Metadata/EXIFDocument.cs +++ b/MetadataExtractCore/Metadata/EXIFDocument.cs @@ -1,87 +1,136 @@ using MetadataExtractCore.Diagrams; using MetadataExtractCore.Utilities; +using MetadataExtractor.Formats.Jpeg; using System; using System.Collections.Generic; +using System.Globalization; using System.IO; +using System.Linq; namespace MetadataExtractCore.Extractors { public class EXIFDocument : DocumentExtractor { - private string strExt; + private static readonly string[] IgnoredExifDirectories = new[] { "JPEG", "JFIF", "XMP", "File Type", "Interoperability", "ICC Profile", "IPTC", "PrintIM" }; - public EXIFDocument(Stream stm, string strExt) : base(stm) + public EXIFDocument(Stream stm) : base(stm) { - this.strExt = strExt; } public override FileMetadata AnalyzeFile() { - com.drew.metadata.Metadata m; try { this.foundMetadata = new FileMetadata(); - if (strExt == ".raw" || - strExt == ".cr2" || - strExt == ".crw") - { - m = com.drew.imaging.tiff.TiffMetadataReader.ReadMetadata(this.fileStream); - } - else - { - m = com.drew.imaging.jpg.JpegMetadataReader.ReadMetadata(this.fileStream); - } - IEnumerator lcDirectoryEnum = m.GetDirectoryIterator(); - while (lcDirectoryEnum.MoveNext()) + IReadOnlyList directories = MetadataExtractor.ImageMetadataReader.ReadMetadata(this.fileStream); + + foreach (MetadataExtractor.Directory currentDir in directories.Where(p => !IgnoredExifDirectories.Contains(p.Name))) { - if (lcDirectoryEnum.Current.GetName() != "Jpeg Makernote") + if (currentDir is MetadataExtractor.Formats.Exif.ExifThumbnailDirectory) { - Dictionary dicTags = new Dictionary(); - com.drew.metadata.AbstractDirectory lcDirectory = lcDirectoryEnum.Current; - IEnumerator lcTagsEnum = lcDirectory.GetTagIterator(); - while (lcTagsEnum.MoveNext()) + try { - com.drew.metadata.Tag tag = lcTagsEnum.Current; - if (tag.GetTagName() == "Thumbnail Data") - { - foundMetadata.Thumbnail = (byte[])tag.GetTagValue(); - } - string lcDescription = ""; - try - { - lcDescription = tag.GetDescription(); - } - catch { }; - string lcName = tag.GetTagName(); - if (lcName.ToLower().StartsWith("unknown") || lcDescription.ToLower().StartsWith("unknown")) + uint offset = (uint)currentDir.GetObject(MetadataExtractor.Formats.Exif.ExifThumbnailDirectory.TagThumbnailOffset) + (uint)MetadataExtractor.Formats.Exif.ExifReader.JpegSegmentPreamble.Length; + uint length = (uint)currentDir.GetObject(MetadataExtractor.Formats.Exif.ExifThumbnailDirectory.TagThumbnailLength); + + long currentPosition = this.fileStream.Position; + this.fileStream.Seek(0, SeekOrigin.Begin); + JpegSegment app1Segment = JpegSegmentReader.ReadSegments(new MetadataExtractor.IO.SequentialStreamReader(this.fileStream), new[] { JpegSegmentType.App1 }).FirstOrDefault(); + if (app1Segment != null) { - continue; + byte[] thumb = new byte[length]; + Array.Copy(app1Segment.Bytes, offset, thumb, 0, length); + this.foundMetadata.Thumbnail = thumb; } - lcName = Functions.RemoveAccentsWithNormalization(lcName); - lcDescription = Functions.RemoveAccentsWithNormalization(lcDescription); - if (lcName.ToLower() == "owner name" || lcName.ToLower() == "copyright") + this.fileStream.Seek(currentPosition, SeekOrigin.Begin); + } + catch (Exception) + { + } + } + else if (currentDir is MetadataExtractor.Formats.Exif.GpsDirectory gps) + { + if (this.foundMetadata.GPS == null) + { + MetadataExtractor.GeoLocation gpsLocation = gps.GetGeoLocation(); + if (gpsLocation != null) { - if (!string.IsNullOrEmpty(lcDescription) && lcDescription.Trim() != string.Empty && - !lcDescription.ToLower().Contains("digital") && !lcDescription.ToLower().Contains("camera") && !lcDescription.ToLower().Contains("(c)") && - !lcDescription.ToLower().Contains("copyright")) + this.foundMetadata.GPS = new GeoLocation(gpsLocation.ToDmsString(), gpsLocation.Longitude, gpsLocation.Latitude); + if (gps.ContainsTag(MetadataExtractor.Formats.Exif.GpsDirectory.TagAltitude)) { - this.foundMetadata.Add(new User(lcDescription, false, "Copyright/Owner name")); + this.foundMetadata.GPS.Altitude = $"{gps.GetDescription(MetadataExtractor.Formats.Exif.GpsDirectory.TagAltitude)} ({gps.GetDescription(MetadataExtractor.Formats.Exif.GpsDirectory.TagAltitudeRef)})"; ; } } - if (lcName.ToLower() == "software") + } + } + else + { + Dictionary dicTags = new Dictionary(); + foreach (MetadataExtractor.Tag tag in currentDir.Tags) + { + string lcDescription = tag.Description?.Trim(); + string lcName = tag.Name?.Trim(); + + if (!String.IsNullOrWhiteSpace(lcName) && !String.IsNullOrWhiteSpace(lcDescription) && + !lcName.StartsWith("unknown", StringComparison.OrdinalIgnoreCase) && !lcDescription.ToLower().StartsWith("unknown", StringComparison.OrdinalIgnoreCase)) { - string strSoftware = Analysis.ApplicationAnalysis.GetApplicationsFromString(lcDescription.Trim()); - this.foundMetadata.Add(new Application(strSoftware)); + lcName = Functions.RemoveAccentsWithNormalization(lcName); + lcDescription = Functions.RemoveAccentsWithNormalization(lcDescription); + + switch (tag.Type) + { + case MetadataExtractor.Formats.Exif.ExifDirectoryBase.TagWinAuthor: + case MetadataExtractor.Formats.Exif.ExifDirectoryBase.TagArtist: + case MetadataExtractor.Formats.Exif.ExifDirectoryBase.TagCameraOwnerName: + this.foundMetadata.Add(new User(lcDescription, false, "EXIF")); + break; + case MetadataExtractor.Formats.Exif.ExifDirectoryBase.TagSoftware: + string strSoftware = Analysis.ApplicationAnalysis.GetApplicationsFromString(lcDescription); + if (!String.IsNullOrEmpty(strSoftware)) + { + this.foundMetadata.Add(new Application(strSoftware)); + } + break; + case MetadataExtractor.Formats.Exif.ExifDirectoryBase.TagDateTime: + case MetadataExtractor.Formats.Exif.ExifDirectoryBase.TagDateTimeDigitized: + case MetadataExtractor.Formats.Exif.ExifDirectoryBase.TagDateTimeOriginal: + if (DateTime.TryParseExact(lcDescription, "yyyy:MM:dd HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime date) && + date > DateTime.MinValue && (!foundMetadata.Dates.CreationDate.HasValue || this.foundMetadata.Dates.CreationDate > date)) + { + this.foundMetadata.Dates.CreationDate = date; + } + break; + case MetadataExtractor.Formats.Exif.ExifDirectoryBase.TagModel: + this.foundMetadata.Model = lcDescription; + break; + case MetadataExtractor.Formats.Exif.ExifDirectoryBase.TagHostComputer: + this.foundMetadata.OperatingSystem = lcDescription; + break; + default: + break; + } + + if (!dicTags.ContainsKey(lcName)) + { + dicTags.Add(lcName, lcDescription); + } } - if (lcName.ToLower() == "model") - this.foundMetadata.Model = lcDescription.Trim(); - if (!dicTags.ContainsKey(lcName)) + } + + if (dicTags.Count > 0) + { + string makerKey = currentDir.Name; + int i = 1; + while (foundMetadata.Makernotes.ContainsKey(makerKey)) { - dicTags.Add(lcName, lcDescription); + makerKey = $"{currentDir.Name} ({i})"; + i++; } + + foundMetadata.Makernotes.Add(makerKey, dicTags); } - foundMetadata.Makernotes.Add(lcDirectory.GetName(), dicTags); } + } } catch (Exception e) diff --git a/MetadataExtractCore/Metadata/Office972003.cs b/MetadataExtractCore/Metadata/Office972003.cs index 79d4273..7eb6c34 100644 --- a/MetadataExtractCore/Metadata/Office972003.cs +++ b/MetadataExtractCore/Metadata/Office972003.cs @@ -120,11 +120,14 @@ private void GetPrinters(OleDocument doc) if (tam > 0) { Stream table = doc.OpenStream((tipo & 2) == 2 ? "1Table" : "0Table"); - Byte[] DriverImpresora = new Byte[tam]; - table.Seek(dir, SeekOrigin.Begin); - table.Read(DriverImpresora, 0, (int)tam); - this.foundMetadata.Add(new Printer(Functions.FilterPrinter(Encoding.Default.GetString(DriverImpresora).Replace("\0", "")))); - table.Close(); + if (table != null) + { + Byte[] DriverImpresora = new Byte[tam]; + table.Seek(dir, SeekOrigin.Begin); + table.Read(DriverImpresora, 0, (int)tam); + this.foundMetadata.Add(new Printer(Functions.FilterPrinter(Encoding.Default.GetString(DriverImpresora).Replace("\0", "")))); + table.Close(); + } } } } @@ -438,7 +441,7 @@ private void GetImagesDoc(OleDocument doc) { using (MemoryStream msJPG = new MemoryStream(bufferPIC, lstJPEG[0], bufferPIC.Length - lstJPEG[0])) { - using (EXIFDocument eDoc = new EXIFDocument(msJPG, ".jpg")) + using (EXIFDocument eDoc = new EXIFDocument(msJPG)) { FileMetadata exifMetadata = eDoc.AnalyzeFile(); foundMetadata.EmbeddedImages.Add(strImageName, exifMetadata); @@ -476,7 +479,7 @@ private void GetImagesPpt(OleDocument doc) using (MemoryStream msJPG = new MemoryStream(bufferPIC, 0x11, bufferPIC.Length - 0x11)) { FileMetadata exifMetadata = null; - using (EXIFDocument eDoc = new EXIFDocument(msJPG, ".jpg")) + using (EXIFDocument eDoc = new EXIFDocument(msJPG)) { exifMetadata = eDoc.AnalyzeFile(); } diff --git a/MetadataExtractCore/Metadata/OfficeOpenXML.cs b/MetadataExtractCore/Metadata/OfficeOpenXML.cs index 4402a5d..581cb0a 100644 --- a/MetadataExtractCore/Metadata/OfficeOpenXML.cs +++ b/MetadataExtractCore/Metadata/OfficeOpenXML.cs @@ -26,6 +26,32 @@ public override FileMetadata AnalyzeFile() this.foundMetadata = new FileMetadata(); using (Package pZip = Package.Open(this.fileStream)) { + if (pZip.PackageProperties != null) + { + this.foundMetadata.Add(new User(pZip.PackageProperties.Creator, false)); + this.foundMetadata.Add(new User(pZip.PackageProperties.LastModifiedBy, false)); + if (pZip.PackageProperties.Created.HasValue) + { + this.foundMetadata.Dates.CreationDate = pZip.PackageProperties.Created.Value; + } + if (pZip.PackageProperties.Modified.HasValue) + { + this.foundMetadata.Dates.ModificationDate = pZip.PackageProperties.Modified.Value; + } + if (pZip.PackageProperties.LastPrinted.HasValue) + { + this.foundMetadata.Dates.PrintingDate = pZip.PackageProperties.LastPrinted.Value; + } + if (!String.IsNullOrWhiteSpace(pZip.PackageProperties.Title)) + { + this.foundMetadata.Title = pZip.PackageProperties.Title; + } + if (!String.IsNullOrWhiteSpace(pZip.PackageProperties.Keywords)) + { + this.foundMetadata.Keywords = pZip.PackageProperties.Keywords; + } + } + Uri uriFile = new Uri("/docProps/core.xml", UriKind.Relative); if (pZip.PartExists(uriFile)) { @@ -44,6 +70,7 @@ public override FileMetadata AnalyzeFile() AnalizeFileApp(stmDoc); } } + //Control de versiones if (strExtlo == ".docx") { @@ -134,9 +161,10 @@ public override FileMetadata AnalyzeFile() strFileNameLo.StartsWith("/ppt/media/") || strFileNameLo.StartsWith("/xl/media/")) && (strFileNameLo.EndsWith(".jpg") || - strFileNameLo.EndsWith(".jpeg"))) + strFileNameLo.EndsWith(".jpeg") || + strFileNameLo.EndsWith(".png"))) { - using (EXIFDocument eDoc = new EXIFDocument(pp.GetStream(FileMode.Open, FileAccess.Read), System.IO.Path.GetExtension(strFileNameLo))) + using (EXIFDocument eDoc = new EXIFDocument(pp.GetStream(FileMode.Open, FileAccess.Read))) { FileMetadata exifMetadata = eDoc.AnalyzeFile(); foundMetadata.EmbeddedImages.Add(System.IO.Path.GetFileName(strFileName), exifMetadata); diff --git a/MetadataExtractCore/Metadata/OleDocument.cs b/MetadataExtractCore/Metadata/OleDocument.cs index 352ced3..bf2450a 100644 --- a/MetadataExtractCore/Metadata/OleDocument.cs +++ b/MetadataExtractCore/Metadata/OleDocument.cs @@ -120,100 +120,92 @@ public void readMSAT() this.ofh.NumberOfSectorsMSAT != 0 && this.ofh.FirstSecIDMSAT >= 0) { - using (BinaryReader br = new BinaryReader(this.stmDocument)) + //Must not use using clausule because it closes the main stream + BinaryReader br = new BinaryReader(this.stmDocument); + int nextSecID = this.ofh.FirstSecIDMSAT; + int j = 109; + while (nextSecID != (int)SecIDType.EOFSecID && j < this.ofh.NumberOfSectorsSAT) { - int nextSecID = this.ofh.FirstSecIDMSAT; - int j = 109; - while (nextSecID != (int)SecIDType.EOFSecID && j < this.ofh.NumberOfSectorsSAT) + this.stmDocument.Seek(SectorOffset(nextSecID), SeekOrigin.Begin); + for (int i = 0; i < ((this.ofh.SizeOfSector - 4) / 4) && j < this.ofh.NumberOfSectorsSAT; i++, j++) { - this.stmDocument.Seek(SectorOffset(nextSecID), SeekOrigin.Begin); - for (int i = 0; i < ((this.ofh.SizeOfSector - 4) / 4) && j < this.ofh.NumberOfSectorsSAT; i++, j++) - { - this.MSAT[j] = br.ReadInt32(); - } - nextSecID = br.ReadInt32(); + this.MSAT[j] = br.ReadInt32(); } + nextSecID = br.ReadInt32(); } } } public void readSAT() { - using (BinaryReader br = new BinaryReader(this.stmDocument)) + BinaryReader br = new BinaryReader(this.stmDocument); + this.SAT = new Int32[this.ofh.NumberOfSectorsSAT * this.ofh.SizeOfSector]; + int p = 0; + for (int i = 0; i < this.ofh.NumberOfSectorsSAT; i++) { - this.SAT = new Int32[this.ofh.NumberOfSectorsSAT * this.ofh.SizeOfSector]; - int p = 0; - for (int i = 0; i < this.ofh.NumberOfSectorsSAT; i++) + this.stmDocument.Seek(SectorOffset(MSAT[i]), SeekOrigin.Begin); + for (int j = 0; j < this.ofh.SizeOfSector / 4; j++, p++) { - this.stmDocument.Seek(SectorOffset(MSAT[i]), SeekOrigin.Begin); - for (int j = 0; j < this.ofh.SizeOfSector / 4; j++, p++) - { - this.SAT[p] = br.ReadInt32(); - } + this.SAT[p] = br.ReadInt32(); } } } public void readSSAT() { - using (BinaryReader br = new BinaryReader(this.stmDocument)) - { - - this.SSAT = new Int32[this.ofh.NumberOfSectorsSSAT * this.ofh.SizeOfSector]; + BinaryReader br = new BinaryReader(this.stmDocument); + this.SSAT = new Int32[this.ofh.NumberOfSectorsSSAT * this.ofh.SizeOfSector]; - int p = 0; - int NextSecID = this.ofh.FirstSecIDSSAT; - for (int i = 0; i < this.ofh.NumberOfSectorsSSAT; i++) + int p = 0; + int nextSecID = this.ofh.FirstSecIDSSAT; + for (int i = 0; i < this.ofh.NumberOfSectorsSSAT; i++) + { + if (nextSecID < 0) { - if (NextSecID < 0) - { - throw new Exception("Error leyendo secuencia SSAT"); - } - this.stmDocument.Seek(SectorOffset(NextSecID), SeekOrigin.Begin); - for (int j = 0; j < this.ofh.SizeOfSector / 4; j++, p++) - { - this.SSAT[p] = br.ReadInt32(); - } - NextSecID = SAT[NextSecID]; + throw new Exception("Error leyendo secuencia SSAT"); + } + this.stmDocument.Seek(SectorOffset(nextSecID), SeekOrigin.Begin); + for (int j = 0; j < this.ofh.SizeOfSector / 4; j++, p++) + { + this.SSAT[p] = br.ReadInt32(); } + nextSecID = SAT[nextSecID]; } } public void readDir() { - using (BinaryReader br = new BinaryReader(this.stmDocument)) + BinaryReader br = new BinaryReader(this.stmDocument); + this.DirEntries = new List(); + Int32 NextSecID = this.ofh.FirstSecIDDirectory; + while (NextSecID >= 0) { - this.DirEntries = new List(); - Int32 NextSecID = this.ofh.FirstSecIDDirectory; - while (NextSecID >= 0) - { - this.stmDocument.Seek(SectorOffset(NextSecID), SeekOrigin.Begin); + this.stmDocument.Seek(SectorOffset(NextSecID), SeekOrigin.Begin); - for (int i = 0; i < (this.ofh.SizeOfSector / 128); i++) - { - DirEntry Directorio = new DirEntry(); - - Directorio.EntryName = br.ReadBytes(64); - Directorio.EntryNameLength = br.ReadUInt16(); - Directorio.EntryType = br.ReadByte(); - Directorio.NodeColourEntry = br.ReadByte(); - Directorio.DirIDLeftChild = br.ReadInt32(); - Directorio.DirIDRigthChild = br.ReadInt32(); - Directorio.DirIDRootNodeEntry = br.ReadInt32(); - Directorio.UID = br.ReadBytes(16); - Directorio.flags = br.ReadInt32(); - Directorio.CreationTime = br.ReadBytes(8); - Directorio.ModificationTime = br.ReadBytes(8); - Directorio.FirstSecIDStream = br.ReadInt32(); - Directorio.LengthStream = br.ReadInt32(); - Directorio.Reserved = br.ReadInt32(); - this.DirEntries.Add(Directorio); - } - - if (NextSecID == this.SAT[NextSecID]) - return; - NextSecID = this.SAT[NextSecID]; + for (int i = 0; i < (this.ofh.SizeOfSector / 128); i++) + { + DirEntry Directorio = new DirEntry(); + + Directorio.EntryName = br.ReadBytes(64); + Directorio.EntryNameLength = br.ReadUInt16(); + Directorio.EntryType = br.ReadByte(); + Directorio.NodeColourEntry = br.ReadByte(); + Directorio.DirIDLeftChild = br.ReadInt32(); + Directorio.DirIDRigthChild = br.ReadInt32(); + Directorio.DirIDRootNodeEntry = br.ReadInt32(); + Directorio.UID = br.ReadBytes(16); + Directorio.flags = br.ReadInt32(); + Directorio.CreationTime = br.ReadBytes(8); + Directorio.ModificationTime = br.ReadBytes(8); + Directorio.FirstSecIDStream = br.ReadInt32(); + Directorio.LengthStream = br.ReadInt32(); + Directorio.Reserved = br.ReadInt32(); + this.DirEntries.Add(Directorio); } + + if (NextSecID == this.SAT[NextSecID]) + return; + NextSecID = this.SAT[NextSecID]; } } diff --git a/MetadataExtractCore/Metadata/OpenOfficeDocument.cs b/MetadataExtractCore/Metadata/OpenOfficeDocument.cs index e64451b..69102b2 100644 --- a/MetadataExtractCore/Metadata/OpenOfficeDocument.cs +++ b/MetadataExtractCore/Metadata/OpenOfficeDocument.cs @@ -80,13 +80,13 @@ public override FileMetadata AnalyzeFile() string strFileNameLo = strFileName.ToLower(); //Filtro que obtiene las imagenes *.jpg, *.jpeg dentro de la carpeta "Pictures/" if (strFileNameLo.StartsWith("pictures/") && - (strFileNameLo.EndsWith(".jpg") || strFileNameLo.EndsWith(".jpeg"))) + (strFileNameLo.EndsWith(".jpg") || strFileNameLo.EndsWith(".jpeg") || strFileNameLo.EndsWith(".png"))) { using (Stream stmXML = new MemoryStream()) { zip.Extract(strFileName, stmXML); stmXML.Seek(0, SeekOrigin.Begin); - using (EXIFDocument eDoc = new EXIFDocument(stmXML, System.IO.Path.GetExtension(strFileNameLo))) + using (EXIFDocument eDoc = new EXIFDocument(stmXML)) { FileMetadata exifMetadata = eDoc.AnalyzeFile(); //Añadimos al diccionario la imagen encontrada junto con la información EXIF de la misma @@ -295,69 +295,64 @@ private void analizeFileSettings(Stream stm) { foreach (XmlNode xn in xnl) { - if (xn.Attributes.GetNamedItem("config:name").Value == "PrinterName") - if (xn.HasChildNodes) - this.foundMetadata.Add(new Printer(Functions.FilterPrinter(xn.FirstChild.Value))); - else if (xn.Attributes.GetNamedItem("config:name").Value == "CurrentDatabaseDataSource") - { - if (xn.HasChildNodes) // TODO - always false - this.foundMetadata.DataBase = xn.FirstChild.Value; - } - /* else if (xn.Attributes.GetNamedItem("config:name").Value == "PrintFaxName") - { + if (xn.Attributes.GetNamedItem("config:name").Value == "PrinterName" && xn.HasChildNodes) + { + this.foundMetadata.Add(new Printer(Functions.FilterPrinter(xn.FirstChild.Value))); + } + else if (xn.Attributes.GetNamedItem("config:name").Value == "CurrentDatabaseDataSource" && xn.HasChildNodes) + { + this.foundMetadata.DataBase = xn.FirstChild.Value; + } + /* else if (xn.Attributes.GetNamedItem("config:name").Value == "PrintFaxName") + { + if (xn.HasChildNodes) + escritor("Fax: " + xn.FirstChild.Value, objeto); + } + else if (xn.Attributes.GetNamedItem("config:name").Value == "CurrentDatabaseCommandType") + { + if (!resumen) + if (xn.HasChildNodes && xn.FirstChild.Value != "0") + escritor("Current Database Command Type: " + xn.FirstChild.Value, objeto); + } + else if (xn.Attributes.GetNamedItem("config:name").Value == "CurrentDatabaseCommand") + { + if (!resumen) if (xn.HasChildNodes) - escritor("Fax: " + xn.FirstChild.Value, objeto); - } - else if (xn.Attributes.GetNamedItem("config:name").Value == "CurrentDatabaseCommandType") - { - if (!resumen) - if (xn.HasChildNodes && xn.FirstChild.Value != "0") - escritor("Current Database Command Type: " + xn.FirstChild.Value, objeto); - } - else if (xn.Attributes.GetNamedItem("config:name").Value == "CurrentDatabaseCommand") - { - if (!resumen) - if (xn.HasChildNodes) - escritor("Current Database Command: " + xn.FirstChild.Value, objeto); - }*/ - //Solo aparecen en ficheros ODP y ODG file:/// - else if (xn.Attributes.GetNamedItem("config:name").Value == "ColorTableURL") - { - if (xn.HasChildNodes) // TODO - always false - if (PathAnalysis.CleanPath(xn.FirstChild.Value) != "$(user)/config/") - this.foundMetadata.Add(new Diagrams.Path(PathAnalysis.CleanPath(xn.FirstChild.Value), true)); - } - else if (xn.Attributes.GetNamedItem("config:name").Value == "BitmapTableURL") - { - if (xn.HasChildNodes) // TODO - always false - if (PathAnalysis.CleanPath(xn.FirstChild.Value) != "$(user)/config/") - this.foundMetadata.Add(new Diagrams.Path(PathAnalysis.CleanPath(xn.FirstChild.Value), true)); - } - else if (xn.Attributes.GetNamedItem("config:name").Value == "DashTableURL") - { - if (xn.HasChildNodes) // TODO - always false - if (PathAnalysis.CleanPath(xn.FirstChild.Value) != "$(user)/config/") - this.foundMetadata.Add(new Diagrams.Path(PathAnalysis.CleanPath(xn.FirstChild.Value), true)); - } - else if (xn.Attributes.GetNamedItem("config:name").Value == "GradientTableURL") - { - if (xn.HasChildNodes) // TODO - always false - if (PathAnalysis.CleanPath(xn.FirstChild.Value) != "$(user)/config/") - this.foundMetadata.Add(new Diagrams.Path(PathAnalysis.CleanPath(xn.FirstChild.Value), true)); - } - else if (xn.Attributes.GetNamedItem("config:name").Value == "HatchTableURL") - { - if (xn.HasChildNodes) // TODO - always false - if (PathAnalysis.CleanPath(xn.FirstChild.Value) != "$(user)/config/") - this.foundMetadata.Add(new Diagrams.Path(PathAnalysis.CleanPath(xn.FirstChild.Value), true)); - } - else if (xn.Attributes.GetNamedItem("config:name").Value == "LineEndTableURL") - { - if (xn.HasChildNodes) // TODO - always false - if (PathAnalysis.CleanPath(xn.FirstChild.Value) != "$(user)/config/") - this.foundMetadata.Add(new Diagrams.Path(PathAnalysis.CleanPath(xn.FirstChild.Value), true)); - } + escritor("Current Database Command: " + xn.FirstChild.Value, objeto); + }*/ + //Solo aparecen en ficheros ODP y ODG file:/// + else if (xn.Attributes.GetNamedItem("config:name").Value == "ColorTableURL" && xn.HasChildNodes) + { + if (PathAnalysis.CleanPath(xn.FirstChild.Value) != "$(user)/config/") + this.foundMetadata.Add(new Diagrams.Path(PathAnalysis.CleanPath(xn.FirstChild.Value), true)); + } + else if (xn.Attributes.GetNamedItem("config:name").Value == "BitmapTableURL" && xn.HasChildNodes) + { + if (PathAnalysis.CleanPath(xn.FirstChild.Value) != "$(user)/config/") + this.foundMetadata.Add(new Diagrams.Path(PathAnalysis.CleanPath(xn.FirstChild.Value), true)); + } + else if (xn.Attributes.GetNamedItem("config:name").Value == "DashTableURL" && xn.HasChildNodes) + { + if (PathAnalysis.CleanPath(xn.FirstChild.Value) != "$(user)/config/") + this.foundMetadata.Add(new Diagrams.Path(PathAnalysis.CleanPath(xn.FirstChild.Value), true)); + } + else if (xn.Attributes.GetNamedItem("config:name").Value == "GradientTableURL" && xn.HasChildNodes) + { + if (PathAnalysis.CleanPath(xn.FirstChild.Value) != "$(user)/config/") + this.foundMetadata.Add(new Diagrams.Path(PathAnalysis.CleanPath(xn.FirstChild.Value), true)); + } + else if (xn.Attributes.GetNamedItem("config:name").Value == "HatchTableURL" && xn.HasChildNodes) + { + if (PathAnalysis.CleanPath(xn.FirstChild.Value) != "$(user)/config/") + this.foundMetadata.Add(new Diagrams.Path(PathAnalysis.CleanPath(xn.FirstChild.Value), true)); + } + else if (xn.Attributes.GetNamedItem("config:name").Value == "LineEndTableURL" && xn.HasChildNodes) + { + if (PathAnalysis.CleanPath(xn.FirstChild.Value) != "$(user)/config/") + this.foundMetadata.Add(new Diagrams.Path(PathAnalysis.CleanPath(xn.FirstChild.Value), true)); + } } + } } catch (Exception e) diff --git a/MetadataExtractCore/MetadataExtractCore.csproj b/MetadataExtractCore/MetadataExtractCore.csproj index bf1911e..03aeb7d 100644 --- a/MetadataExtractCore/MetadataExtractCore.csproj +++ b/MetadataExtractCore/MetadataExtractCore.csproj @@ -80,6 +80,7 @@ + @@ -89,6 +90,7 @@ + @@ -96,88 +98,12 @@ + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -237,6 +163,9 @@ 1.11.16 + + 2.1.0 + 12.0.2