├── .tfignore
├── WindowsFormsApplication1
├── ClassDiagram1.cd
├── tool.ico
├── Resources
│ ├── pkgID.png
│ ├── react.png
│ ├── rotesX.png
│ ├── iconawap2.png
│ ├── stuff_split.png
│ └── gruener-haken.gif
├── Properties
│ ├── Settings.settings
│ ├── AssemblyInfo.cs
│ ├── Settings.Designer.cs
│ ├── Resources.Designer.cs
│ └── Resources.resx
├── Program.cs
├── App.config
├── settingswin.cs
├── pkgINFO.cs
├── psnstuff.csproj
├── settingswin.Designer.cs
├── pkgINFO.Designer.cs
├── pkgID.cs
├── pkgID.Designer.cs
├── main.cs
└── pkgID.resx
├── Download Helper
├── tool.ico
├── App.config
├── Properties
│ └── AssemblyInfo.cs
├── Program.cs
├── Download Helper.csproj
└── app.manifest
├── .gitignore
└── psnstuff.sln
/.tfignore:
--------------------------------------------------------------------------------
1 | \.git
--------------------------------------------------------------------------------
/WindowsFormsApplication1/ClassDiagram1.cd:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/Download Helper/tool.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xXxTheDarkprogramerxXx/psnstuff/HEAD/Download Helper/tool.ico
--------------------------------------------------------------------------------
/WindowsFormsApplication1/tool.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xXxTheDarkprogramerxXx/psnstuff/HEAD/WindowsFormsApplication1/tool.ico
--------------------------------------------------------------------------------
/WindowsFormsApplication1/Resources/pkgID.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xXxTheDarkprogramerxXx/psnstuff/HEAD/WindowsFormsApplication1/Resources/pkgID.png
--------------------------------------------------------------------------------
/WindowsFormsApplication1/Resources/react.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xXxTheDarkprogramerxXx/psnstuff/HEAD/WindowsFormsApplication1/Resources/react.png
--------------------------------------------------------------------------------
/WindowsFormsApplication1/Resources/rotesX.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xXxTheDarkprogramerxXx/psnstuff/HEAD/WindowsFormsApplication1/Resources/rotesX.png
--------------------------------------------------------------------------------
/WindowsFormsApplication1/Resources/iconawap2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xXxTheDarkprogramerxXx/psnstuff/HEAD/WindowsFormsApplication1/Resources/iconawap2.png
--------------------------------------------------------------------------------
/WindowsFormsApplication1/Resources/stuff_split.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xXxTheDarkprogramerxXx/psnstuff/HEAD/WindowsFormsApplication1/Resources/stuff_split.png
--------------------------------------------------------------------------------
/WindowsFormsApplication1/Resources/gruener-haken.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xXxTheDarkprogramerxXx/psnstuff/HEAD/WindowsFormsApplication1/Resources/gruener-haken.gif
--------------------------------------------------------------------------------
/Download Helper/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | Thumbs.db
2 | *.obj
3 | *.exe
4 | *.pdb
5 | *.user
6 | *.aps
7 | *.pch
8 | *.vspscc
9 | *_i.c
10 | *_p.c
11 | *.ncb
12 | *.suo
13 | *.sln.docstates
14 | *.tlb
15 | *.tlh
16 | *.bak
17 | *.cache
18 | *.ilk
19 | *.log
20 | [Bb]in
21 | [Dd]ebug*/
22 | *.lib
23 | *.sbr
24 | obj/
25 | [Rr]elease*/
26 | _ReSharper*/
27 | [Tt]est[Rr]esult*
28 | *.vssscc
29 | $tf*/
--------------------------------------------------------------------------------
/WindowsFormsApplication1/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/WindowsFormsApplication1/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Threading.Tasks;
5 | using System.Windows.Forms;
6 |
7 | namespace WindowsFormsApplication1
8 | {
9 | static class Program
10 | {
11 | ///
12 | /// Der Haupteinstiegspunkt für die Anwendung.
13 | ///
14 | [STAThread]
15 | static void Main()
16 | {
17 | Application.EnableVisualStyles();
18 | Application.SetCompatibleTextRenderingDefault(false);
19 | Application.Run(new psnStuff());
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/WindowsFormsApplication1/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/Download Helper/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("Download Helper")]
9 | [assembly: AssemblyDescription("Download helper for psnstuff")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("The Darkprogramer")]
12 | [assembly: AssemblyProduct("Download Helper")]
13 | [assembly: AssemblyCopyright("Copyright © 2016")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(true)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("02513d7b-5683-4966-a5e6-acd9a30ffc99")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/WindowsFormsApplication1/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // Allgemeine Informationen über eine Assembly werden über die folgenden
6 | // Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
7 | // die mit einer Assembly verknüpft sind.
8 | [assembly: AssemblyTitle("PSNStuff")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("PSNStuff")]
13 | [assembly: AssemblyCopyright("LoOzers © 2014")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar
18 | // für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von
19 | // COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest.
20 | [assembly: ComVisible(false)]
21 |
22 | // Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
23 | [assembly: Guid("917e7732-6e59-484d-9876-343a4879cb64")]
24 |
25 | // Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
26 | //
27 | // Hauptversion
28 | // Nebenversion
29 | // Buildnummer
30 | // Revision
31 | //
32 | // Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
33 | // übernehmen, indem Sie "*" eingeben:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("3.0.0.0")]
36 | [assembly: AssemblyFileVersion("3.0.0.0")]
37 |
--------------------------------------------------------------------------------
/Download Helper/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Download_Helper
8 | {
9 | class Program
10 | {
11 | static void Main(string[] args)
12 | {
13 |
14 | string mainstr = @"
15 | *********************************************************
16 | * PSNStuff Download Helper *
17 | *********************************************************
18 | ";
19 |
20 | if (args.Length == 0)
21 | {
22 | Console.WriteLine(mainstr);
23 | Console.WriteLine("Arguments where incorectly passed \n\nPress any key to exit.");
24 | Console.ReadKey();
25 | }
26 | else
27 | {
28 | Console.WriteLine(mainstr);
29 |
30 | //copy the data
31 | string fileName = args[0];
32 | string sourcePath = args[1];
33 | string targetPath = args[2];
34 |
35 | Console.WriteLine("Replacing '{0}'\n\nsourcepath: '{1}'\n\ntargetpath: '{2}'",fileName,sourcePath,targetPath);
36 |
37 | // Use Path class to manipulate file and directory paths.
38 | string sourceFile = sourcePath;
39 | string destFile = targetPath;
40 |
41 | // To copy a file to another location and
42 | // overwrite the destination file if it already exists.
43 | System.IO.File.Copy(sourceFile, destFile, true);
44 |
45 | Console.WriteLine("Done... starting new version of psnstuff");
46 |
47 | // Keep console window open in debug mode.
48 | //Console.WriteLine("Press any key to exit.");
49 | // Console.ReadKey();
50 | if (System.IO.File.Exists("psnstuff.exe"))
51 | {
52 | System.Diagnostics.Process.Start("psnstuff.exe");
53 | }
54 | }
55 | }
56 | }
57 |
58 | }
59 |
--------------------------------------------------------------------------------
/WindowsFormsApplication1/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace psnstuff.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 |
26 | [global::System.Configuration.UserScopedSettingAttribute()]
27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
28 | [global::System.Configuration.DefaultSettingValueAttribute("")]
29 | public string DownloadDirectory {
30 | get {
31 | return ((string)(this["DownloadDirectory"]));
32 | }
33 | set {
34 | this["DownloadDirectory"] = value;
35 | }
36 | }
37 |
38 | [global::System.Configuration.UserScopedSettingAttribute()]
39 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
40 | [global::System.Configuration.DefaultSettingValueAttribute("")]
41 | public string USBToSaveTo {
42 | get {
43 | return ((string)(this["USBToSaveTo"]));
44 | }
45 | set {
46 | this["USBToSaveTo"] = value;
47 | }
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/psnstuff.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 2012
4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "psnstuff", "WindowsFormsApplication1\psnstuff.csproj", "{3334D56D-6118-4A4B-A982-2458ADD2B9A7}"
5 | EndProject
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Download Helper", "Download Helper\Download Helper.csproj", "{F13AA45C-78B8-4DE0-AC1A-7EBD55273633}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Debug|Mixed Platforms = Debug|Mixed Platforms
12 | Debug|x86 = Debug|x86
13 | Release|Any CPU = Release|Any CPU
14 | Release|Mixed Platforms = Release|Mixed Platforms
15 | Release|x86 = Release|x86
16 | EndGlobalSection
17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
18 | {3334D56D-6118-4A4B-A982-2458ADD2B9A7}.Debug|Any CPU.ActiveCfg = Debug|x86
19 | {3334D56D-6118-4A4B-A982-2458ADD2B9A7}.Debug|Any CPU.Build.0 = Debug|x86
20 | {3334D56D-6118-4A4B-A982-2458ADD2B9A7}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
21 | {3334D56D-6118-4A4B-A982-2458ADD2B9A7}.Debug|Mixed Platforms.Build.0 = Debug|x86
22 | {3334D56D-6118-4A4B-A982-2458ADD2B9A7}.Debug|x86.ActiveCfg = Debug|x86
23 | {3334D56D-6118-4A4B-A982-2458ADD2B9A7}.Debug|x86.Build.0 = Debug|x86
24 | {3334D56D-6118-4A4B-A982-2458ADD2B9A7}.Release|Any CPU.ActiveCfg = Debug|x86
25 | {3334D56D-6118-4A4B-A982-2458ADD2B9A7}.Release|Any CPU.Build.0 = Debug|x86
26 | {3334D56D-6118-4A4B-A982-2458ADD2B9A7}.Release|Mixed Platforms.ActiveCfg = Release|x86
27 | {3334D56D-6118-4A4B-A982-2458ADD2B9A7}.Release|Mixed Platforms.Build.0 = Release|x86
28 | {3334D56D-6118-4A4B-A982-2458ADD2B9A7}.Release|x86.ActiveCfg = Release|x86
29 | {3334D56D-6118-4A4B-A982-2458ADD2B9A7}.Release|x86.Build.0 = Release|x86
30 | {F13AA45C-78B8-4DE0-AC1A-7EBD55273633}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
31 | {F13AA45C-78B8-4DE0-AC1A-7EBD55273633}.Debug|Any CPU.Build.0 = Debug|Any CPU
32 | {F13AA45C-78B8-4DE0-AC1A-7EBD55273633}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
33 | {F13AA45C-78B8-4DE0-AC1A-7EBD55273633}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
34 | {F13AA45C-78B8-4DE0-AC1A-7EBD55273633}.Debug|x86.ActiveCfg = Debug|Any CPU
35 | {F13AA45C-78B8-4DE0-AC1A-7EBD55273633}.Release|Any CPU.ActiveCfg = Release|Any CPU
36 | {F13AA45C-78B8-4DE0-AC1A-7EBD55273633}.Release|Any CPU.Build.0 = Release|Any CPU
37 | {F13AA45C-78B8-4DE0-AC1A-7EBD55273633}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
38 | {F13AA45C-78B8-4DE0-AC1A-7EBD55273633}.Release|Mixed Platforms.Build.0 = Release|Any CPU
39 | {F13AA45C-78B8-4DE0-AC1A-7EBD55273633}.Release|x86.ActiveCfg = Release|Any CPU
40 | EndGlobalSection
41 | GlobalSection(SolutionProperties) = preSolution
42 | HideSolutionNode = FALSE
43 | EndGlobalSection
44 | EndGlobal
45 |
--------------------------------------------------------------------------------
/Download Helper/Download Helper.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {F13AA45C-78B8-4DE0-AC1A-7EBD55273633}
8 | Exe
9 | Properties
10 | Download_Helper
11 | Download Helper
12 | v4.5
13 | 512
14 |
15 |
16 | AnyCPU
17 | true
18 | full
19 | false
20 | bin\Debug\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 |
25 |
26 | AnyCPU
27 | pdbonly
28 | true
29 | bin\Release\
30 | TRACE
31 | prompt
32 | 4
33 |
34 |
35 |
36 | tool.ico
37 |
38 |
39 |
40 |
41 |
42 |
43 | app.manifest
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 | Always
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
75 |
--------------------------------------------------------------------------------
/Download Helper/app.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
52 |
59 |
60 |
61 |
75 |
76 |
77 |
--------------------------------------------------------------------------------
/WindowsFormsApplication1/settingswin.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Threading.Tasks;
9 | using System.Windows.Forms;
10 | using System.IO;
11 |
12 | namespace psnstuff
13 | {
14 | public partial class settingswin : Form
15 | {
16 | public settingswin()
17 | {
18 | InitializeComponent();
19 | }
20 |
21 | private void button1_Click(object sender, EventArgs e)
22 | {
23 | FolderBrowserDialog savepath = new FolderBrowserDialog();
24 | savepath.RootFolder = Environment.SpecialFolder.MyDocuments;
25 | savepath.ShowNewFolderButton = true;
26 | savepath.Description = "Please select a location to save your psn titles";
27 | if (savepath.ShowDialog() == DialogResult.OK)
28 | {
29 | textBox1.Text = savepath.SelectedPath + "\\PSNStuff\\Downloads";
30 | if(!Directory.Exists(savepath.SelectedPath + "\\PSNStuff\\Downloads"))
31 | {
32 | Directory.CreateDirectory(savepath.SelectedPath + "\\PSNStuff\\Downloads");
33 | }
34 | Properties.Settings.Default.DownloadDirectory = textBox1.Text;
35 | Properties.Settings.Default.Save();
36 | }
37 | }
38 |
39 | private void settingswin_Load(object sender, EventArgs e)
40 | {
41 | if (Properties.Settings.Default.DownloadDirectory != string.Empty)
42 | {
43 | textBox1.Text = Properties.Settings.Default.DownloadDirectory.ToString();
44 | }
45 | else
46 | {
47 | textBox1.Text = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\PSNStuff\\Downloads";
48 | Properties.Settings.Default.DownloadDirectory = textBox1.Text;
49 | Properties.Settings.Default.Save();
50 | }
51 |
52 | //load the usb drives
53 | var drives = DriveInfo.GetDrives();
54 | foreach (var drive in drives)
55 | {
56 | if (drive.DriveType == DriveType.Removable)
57 | {
58 | comboBox1.Items.Add(drive.Name);
59 | }
60 | }
61 | if (comboBox1.Items.Count == 0)
62 | {
63 | comboBox1.Text = "No Removable Drives detected";
64 | }
65 | //check for download helper
66 |
67 | if (File.Exists(Application.StartupPath + "\\Download Helper.exe"))
68 | {
69 | pictureBox1.Image = Properties.Resources.gruener_haken;
70 | }
71 | else
72 | {
73 | pictureBox1.Image = Properties.Resources.rotesX;
74 | if (MessageBox.Show("Download Helper is not installed would you like to download it now ?", "Download Helper", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
75 | {
76 | //download the file to the startup path
77 | }
78 | }
79 |
80 | //Load Versions From Servers
81 | lblCurV.Text = Application.ProductVersion;
82 |
83 | if (!System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable())
84 | {
85 |
86 | lblServerV.Text = "Network not avaialable";
87 | }
88 | else
89 | {
90 | //load from server here
91 | lblServerV.Text = "3.0.0.0";
92 | }
93 | }
94 | }
95 | }
96 |
--------------------------------------------------------------------------------
/WindowsFormsApplication1/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // Dieser Code wurde von einem Tool generiert.
4 | // Laufzeitversion:4.0.30319.34003
5 | //
6 | // Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
7 | // der Code erneut generiert wird.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace psnstuff.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
17 | ///
18 | // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
19 | // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
20 | // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
21 | // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("psnstuff.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
51 | /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 |
63 | ///
64 | /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
65 | ///
66 | internal static System.Drawing.Bitmap gruener_haken {
67 | get {
68 | object obj = ResourceManager.GetObject("gruener_haken", resourceCulture);
69 | return ((System.Drawing.Bitmap)(obj));
70 | }
71 | }
72 |
73 | ///
74 | /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
75 | ///
76 | internal static System.Drawing.Bitmap iconawap2 {
77 | get {
78 | object obj = ResourceManager.GetObject("iconawap2", resourceCulture);
79 | return ((System.Drawing.Bitmap)(obj));
80 | }
81 | }
82 |
83 | ///
84 | /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
85 | ///
86 | internal static System.Drawing.Bitmap pkgID {
87 | get {
88 | object obj = ResourceManager.GetObject("pkgID", resourceCulture);
89 | return ((System.Drawing.Bitmap)(obj));
90 | }
91 | }
92 |
93 | ///
94 | /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
95 | ///
96 | internal static System.Drawing.Bitmap react {
97 | get {
98 | object obj = ResourceManager.GetObject("react", resourceCulture);
99 | return ((System.Drawing.Bitmap)(obj));
100 | }
101 | }
102 |
103 | ///
104 | /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
105 | ///
106 | internal static System.Drawing.Bitmap rotesX {
107 | get {
108 | object obj = ResourceManager.GetObject("rotesX", resourceCulture);
109 | return ((System.Drawing.Bitmap)(obj));
110 | }
111 | }
112 |
113 | ///
114 | /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
115 | ///
116 | internal static System.Drawing.Bitmap stuff_split {
117 | get {
118 | object obj = ResourceManager.GetObject("stuff_split", resourceCulture);
119 | return ((System.Drawing.Bitmap)(obj));
120 | }
121 | }
122 | }
123 | }
124 |
--------------------------------------------------------------------------------
/WindowsFormsApplication1/pkgINFO.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Threading.Tasks;
9 | using System.Windows.Forms;
10 | using System.Net;
11 | using System.IO;
12 |
13 | namespace psnstuff
14 | {
15 | public partial class pkgINFO : Form
16 | {
17 | public pkgINFO(string url, string png)
18 | {
19 | InitializeComponent();
20 | textBox1.Text = url;
21 | pictureBox1.ImageLocation = png;
22 | long sha1pos;
23 | long sizebyte;
24 |
25 | try
26 | {
27 | textBox2.Text = "";
28 | textBox3.Text = "";
29 | textBox4.Text = "";
30 | textBox5.Text = "";
31 | textBox6.Text = "";
32 | textBox7.Text = "";
33 |
34 | string link = textBox1.Text;
35 | string URL;
36 | if (!link.StartsWith("http://", StringComparison.OrdinalIgnoreCase))
37 | {
38 | URL = ("http://" + link);
39 | }
40 | else
41 | {
42 | URL = link;
43 | }
44 |
45 | if (textBox1.Text.Contains(".pkg"))
46 | {
47 | HttpWebRequest request;
48 | request = WebRequest.Create(URL) as HttpWebRequest;
49 |
50 | request.AddRange(0, 319); //48, 83
51 |
52 |
53 | using (WebResponse response = request.GetResponse())
54 | {
55 | string[] contran = response.Headers.GetValues(0);
56 | string[] contrans = contran[0].Split('/');
57 | double b = Convert.ToInt64(contrans[1]);
58 | string sizeb = contrans[1];
59 |
60 | sizebyte = Convert.ToInt64(contrans[1]);
61 | sha1pos = Convert.ToInt64(sizeb) - 32;
62 |
63 |
64 |
65 |
66 | //rest infos
67 | if (b < 1048576)
68 | {
69 | double kb = Math.Round(b / 1024, 2);
70 | textBox4.Text = kb + " KB" + " " + "(" + sizeb + " Byte)";
71 | }
72 | else
73 | {
74 | double mb = Math.Round(b / 1024 / 1024, 2);
75 | textBox4.Text = mb + " MB" + " " + "(" + sizeb + " Byte)";
76 | }
77 | try
78 | {
79 | using (Stream stream = response.GetResponseStream())
80 | {
81 | byte[] buffer = new byte[319];
82 | int read = stream.Read(buffer, 0, 319);
83 | //Array.Resize(ref buffer, read);
84 |
85 | byte[] contentID = new byte[36];
86 | Array.Copy(buffer, 48, contentID, 0, 36);
87 |
88 | //contentID
89 | textBox2.Text = Encoding.ASCII.GetString(contentID);
90 |
91 | //id
92 | textBox3.Text = textBox2.Text.Substring(7, 9);
93 |
94 | //pkgver
95 | byte[] ver = new byte[2];
96 | Array.Copy(buffer, 254, ver, 0, 2);
97 | string verstr = BitConverter.ToString(ver);
98 | verstr = verstr.Replace("-", ".");
99 | textBox6.Text = verstr;
100 |
101 |
102 | //fwcalc
103 | byte[] fwcal = new byte[2];
104 | Array.Copy(buffer, 38, fwcal, 0, 2);
105 | string fwcalcstr = BitConverter.ToString(fwcal);
106 | fwcalcstr = fwcalcstr.Replace("-", "");
107 | string fwcalc = (Convert.ToInt32(fwcalcstr) - 60 + 9).ToString();
108 | int fwcalcs = Convert.ToInt32(fwcalc, 16);
109 |
110 | //fw
111 | byte[] fw = new byte[2];
112 | Array.Copy(buffer, fwcalcs, fw, 0, 2);
113 | string fwstr = BitConverter.ToString(fw);
114 | fwstr = fwstr.Replace("-", ".");
115 | textBox5.Text = fwstr;
116 |
117 | }
118 | }
119 | catch { }
120 | }
121 | //sha1
122 | HttpWebRequest request2;
123 | request2 = WebRequest.Create(URL) as HttpWebRequest;
124 |
125 | request2.AddRange(sha1pos, sizebyte);
126 |
127 | using (WebResponse response2 = request2.GetResponse())
128 | {
129 | using (Stream stream2 = response2.GetResponseStream())
130 | {
131 | byte[] buffer2 = new byte[20];
132 | int read = stream2.Read(buffer2, 0, 20);
133 | string sha1 = BitConverter.ToString(buffer2);
134 | sha1 = sha1.Replace("-", "");
135 | textBox7.Text = sha1;
136 | }
137 | }
138 | }
139 | else { MessageBox.Show("Link missing or wrong"); }
140 | }
141 | catch { }
142 |
143 |
144 | }
145 |
146 |
147 | }
148 | }
149 |
--------------------------------------------------------------------------------
/WindowsFormsApplication1/psnstuff.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {3334D56D-6118-4A4B-A982-2458ADD2B9A7}
8 | WinExe
9 | Properties
10 | psnstuff
11 | psnstuff
12 | v4.5
13 | 512
14 |
15 |
16 |
17 | AnyCPU
18 | true
19 | full
20 | false
21 | bin\Debug\
22 | DEBUG;TRACE
23 | prompt
24 | 4
25 | false
26 |
27 |
28 | AnyCPU
29 | pdbonly
30 | true
31 | bin\Release\
32 | TRACE
33 | prompt
34 | 4
35 | false
36 |
37 |
38 | tool.ico
39 |
40 |
41 | true
42 | bin\x86\Debug\
43 | DEBUG;TRACE
44 | full
45 | x86
46 | prompt
47 | MinimumRecommendedRules.ruleset
48 | false
49 |
50 |
51 | bin\x86\Release\
52 | TRACE
53 | true
54 | pdbonly
55 | x86
56 | prompt
57 | MinimumRecommendedRules.ruleset
58 | false
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 | Form
79 |
80 |
81 | main.cs
82 |
83 |
84 | Form
85 |
86 |
87 | pkgID.cs
88 |
89 |
90 | Form
91 |
92 |
93 | pkgINFO.cs
94 |
95 |
96 |
97 |
98 | Form
99 |
100 |
101 | settingswin.cs
102 |
103 |
104 | main.cs
105 |
106 |
107 | pkgID.cs
108 |
109 |
110 | pkgINFO.cs
111 |
112 |
113 | ResXFileCodeGenerator
114 | Resources.Designer.cs
115 | Designer
116 |
117 |
118 | True
119 | Resources.resx
120 | True
121 |
122 |
123 | settingswin.cs
124 |
125 |
126 |
127 | SettingsSingleFileGenerator
128 | Settings.Designer.cs
129 |
130 |
131 | True
132 | Settings.settings
133 | True
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 | {f13aa45c-78b8-4de0-ac1a-7ebd55273633}
154 | Download Helper
155 |
156 |
157 |
158 |
165 |
--------------------------------------------------------------------------------
/WindowsFormsApplication1/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 |
122 | ..\Resources\rotesX.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
123 |
124 |
125 | ..\Resources\gruener-haken.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
126 |
127 |
128 | ..\Resources\react.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
129 |
130 |
131 | ..\Resources\iconawap2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
132 |
133 |
134 | ..\Resources\stuff_split.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
135 |
136 |
137 | ..\Resources\pkgID.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
138 |
139 |
--------------------------------------------------------------------------------
/WindowsFormsApplication1/settingswin.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace psnstuff
2 | {
3 | partial class settingswin
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(settingswin));
32 | this.groupBox1 = new System.Windows.Forms.GroupBox();
33 | this.label1 = new System.Windows.Forms.Label();
34 | this.textBox1 = new System.Windows.Forms.TextBox();
35 | this.button1 = new System.Windows.Forms.Button();
36 | this.label2 = new System.Windows.Forms.Label();
37 | this.comboBox1 = new System.Windows.Forms.ComboBox();
38 | this.label3 = new System.Windows.Forms.Label();
39 | this.lblCurV = new System.Windows.Forms.Label();
40 | this.label5 = new System.Windows.Forms.Label();
41 | this.lblServerV = new System.Windows.Forms.Label();
42 | this.label4 = new System.Windows.Forms.Label();
43 | this.pictureBox1 = new System.Windows.Forms.PictureBox();
44 | this.groupBox1.SuspendLayout();
45 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
46 | this.SuspendLayout();
47 | //
48 | // groupBox1
49 | //
50 | this.groupBox1.Controls.Add(this.comboBox1);
51 | this.groupBox1.Controls.Add(this.label2);
52 | this.groupBox1.Controls.Add(this.button1);
53 | this.groupBox1.Controls.Add(this.textBox1);
54 | this.groupBox1.Controls.Add(this.label1);
55 | this.groupBox1.Location = new System.Drawing.Point(12, 12);
56 | this.groupBox1.Name = "groupBox1";
57 | this.groupBox1.Size = new System.Drawing.Size(913, 123);
58 | this.groupBox1.TabIndex = 0;
59 | this.groupBox1.TabStop = false;
60 | this.groupBox1.Text = "Settings";
61 | //
62 | // label1
63 | //
64 | this.label1.AutoSize = true;
65 | this.label1.Location = new System.Drawing.Point(7, 41);
66 | this.label1.Name = "label1";
67 | this.label1.Size = new System.Drawing.Size(136, 17);
68 | this.label1.TabIndex = 0;
69 | this.label1.Text = "Download Location :";
70 | //
71 | // textBox1
72 | //
73 | this.textBox1.Location = new System.Drawing.Point(149, 38);
74 | this.textBox1.Name = "textBox1";
75 | this.textBox1.Size = new System.Drawing.Size(653, 22);
76 | this.textBox1.TabIndex = 1;
77 | //
78 | // button1
79 | //
80 | this.button1.Location = new System.Drawing.Point(823, 35);
81 | this.button1.Name = "button1";
82 | this.button1.Size = new System.Drawing.Size(75, 23);
83 | this.button1.TabIndex = 2;
84 | this.button1.Text = "...";
85 | this.button1.UseVisualStyleBackColor = true;
86 | this.button1.Click += new System.EventHandler(this.button1_Click);
87 | //
88 | // label2
89 | //
90 | this.label2.AutoSize = true;
91 | this.label2.Location = new System.Drawing.Point(7, 85);
92 | this.label2.Name = "label2";
93 | this.label2.Size = new System.Drawing.Size(120, 17);
94 | this.label2.TabIndex = 3;
95 | this.label2.Text = "Removable Drive:";
96 | //
97 | // comboBox1
98 | //
99 | this.comboBox1.FormattingEnabled = true;
100 | this.comboBox1.Location = new System.Drawing.Point(149, 85);
101 | this.comboBox1.Name = "comboBox1";
102 | this.comboBox1.Size = new System.Drawing.Size(164, 24);
103 | this.comboBox1.TabIndex = 4;
104 | //
105 | // label3
106 | //
107 | this.label3.AutoSize = true;
108 | this.label3.Location = new System.Drawing.Point(22, 191);
109 | this.label3.Name = "label3";
110 | this.label3.Size = new System.Drawing.Size(121, 17);
111 | this.label3.TabIndex = 1;
112 | this.label3.Text = "PSNStuff Version:";
113 | //
114 | // lblCurV
115 | //
116 | this.lblCurV.AutoSize = true;
117 | this.lblCurV.Location = new System.Drawing.Point(158, 191);
118 | this.lblCurV.Name = "lblCurV";
119 | this.lblCurV.Size = new System.Drawing.Size(121, 17);
120 | this.lblCurV.TabIndex = 2;
121 | this.lblCurV.Text = "PSNStuff Version:";
122 | //
123 | // label5
124 | //
125 | this.label5.AutoSize = true;
126 | this.label5.Location = new System.Drawing.Point(388, 191);
127 | this.label5.Name = "label5";
128 | this.label5.Size = new System.Drawing.Size(102, 17);
129 | this.label5.TabIndex = 3;
130 | this.label5.Text = "Server Version";
131 | //
132 | // lblServerV
133 | //
134 | this.lblServerV.AutoSize = true;
135 | this.lblServerV.Location = new System.Drawing.Point(515, 191);
136 | this.lblServerV.Name = "lblServerV";
137 | this.lblServerV.Size = new System.Drawing.Size(121, 17);
138 | this.lblServerV.TabIndex = 4;
139 | this.lblServerV.Text = "PSNStuff Version:";
140 | //
141 | // label4
142 | //
143 | this.label4.AutoSize = true;
144 | this.label4.Location = new System.Drawing.Point(753, 148);
145 | this.label4.Name = "label4";
146 | this.label4.Size = new System.Drawing.Size(172, 17);
147 | this.label4.TabIndex = 5;
148 | this.label4.Text = "Download Helper Installed";
149 | //
150 | // pictureBox1
151 | //
152 | this.pictureBox1.Image = global::psnstuff.Properties.Resources.rotesX;
153 | this.pictureBox1.Location = new System.Drawing.Point(795, 168);
154 | this.pictureBox1.Name = "pictureBox1";
155 | this.pictureBox1.Size = new System.Drawing.Size(100, 50);
156 | this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
157 | this.pictureBox1.TabIndex = 6;
158 | this.pictureBox1.TabStop = false;
159 | //
160 | // settingswin
161 | //
162 | this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
163 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
164 | this.BackColor = System.Drawing.Color.White;
165 | this.ClientSize = new System.Drawing.Size(936, 220);
166 | this.Controls.Add(this.groupBox1);
167 | this.Controls.Add(this.pictureBox1);
168 | this.Controls.Add(this.label4);
169 | this.Controls.Add(this.lblServerV);
170 | this.Controls.Add(this.label5);
171 | this.Controls.Add(this.lblCurV);
172 | this.Controls.Add(this.label3);
173 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
174 | this.Name = "settingswin";
175 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
176 | this.Text = "Settings";
177 | this.Load += new System.EventHandler(this.settingswin_Load);
178 | this.groupBox1.ResumeLayout(false);
179 | this.groupBox1.PerformLayout();
180 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
181 | this.ResumeLayout(false);
182 | this.PerformLayout();
183 |
184 | }
185 |
186 | #endregion
187 |
188 | private System.Windows.Forms.GroupBox groupBox1;
189 | private System.Windows.Forms.Label label1;
190 | private System.Windows.Forms.TextBox textBox1;
191 | private System.Windows.Forms.Button button1;
192 | private System.Windows.Forms.Label label2;
193 | private System.Windows.Forms.ComboBox comboBox1;
194 | private System.Windows.Forms.Label label3;
195 | private System.Windows.Forms.Label lblCurV;
196 | private System.Windows.Forms.Label label5;
197 | private System.Windows.Forms.Label lblServerV;
198 | private System.Windows.Forms.Label label4;
199 | private System.Windows.Forms.PictureBox pictureBox1;
200 | }
201 | }
--------------------------------------------------------------------------------
/WindowsFormsApplication1/pkgINFO.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace psnstuff
2 | {
3 | partial class pkgINFO
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(pkgINFO));
32 | this.textBox1 = new System.Windows.Forms.TextBox();
33 | this.textBox2 = new System.Windows.Forms.TextBox();
34 | this.textBox3 = new System.Windows.Forms.TextBox();
35 | this.label1 = new System.Windows.Forms.Label();
36 | this.label2 = new System.Windows.Forms.Label();
37 | this.label3 = new System.Windows.Forms.Label();
38 | this.textBox4 = new System.Windows.Forms.TextBox();
39 | this.label4 = new System.Windows.Forms.Label();
40 | this.label5 = new System.Windows.Forms.Label();
41 | this.label6 = new System.Windows.Forms.Label();
42 | this.textBox5 = new System.Windows.Forms.TextBox();
43 | this.textBox6 = new System.Windows.Forms.TextBox();
44 | this.textBox7 = new System.Windows.Forms.TextBox();
45 | this.label7 = new System.Windows.Forms.Label();
46 | this.pictureBox1 = new System.Windows.Forms.PictureBox();
47 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
48 | this.SuspendLayout();
49 | //
50 | // textBox1
51 | //
52 | this.textBox1.Location = new System.Drawing.Point(73, 12);
53 | this.textBox1.Name = "textBox1";
54 | this.textBox1.ReadOnly = true;
55 | this.textBox1.Size = new System.Drawing.Size(410, 20);
56 | this.textBox1.TabIndex = 0;
57 | //
58 | // textBox2
59 | //
60 | this.textBox2.Location = new System.Drawing.Point(73, 38);
61 | this.textBox2.Name = "textBox2";
62 | this.textBox2.ReadOnly = true;
63 | this.textBox2.Size = new System.Drawing.Size(410, 20);
64 | this.textBox2.TabIndex = 1;
65 | //
66 | // textBox3
67 | //
68 | this.textBox3.Location = new System.Drawing.Point(73, 62);
69 | this.textBox3.Name = "textBox3";
70 | this.textBox3.ReadOnly = true;
71 | this.textBox3.Size = new System.Drawing.Size(142, 20);
72 | this.textBox3.TabIndex = 2;
73 | //
74 | // label1
75 | //
76 | this.label1.AutoSize = true;
77 | this.label1.Location = new System.Drawing.Point(12, 15);
78 | this.label1.Name = "label1";
79 | this.label1.Size = new System.Drawing.Size(53, 13);
80 | this.label1.TabIndex = 3;
81 | this.label1.Text = "pkg URL:";
82 | //
83 | // label2
84 | //
85 | this.label2.AutoSize = true;
86 | this.label2.Location = new System.Drawing.Point(6, 41);
87 | this.label2.Name = "label2";
88 | this.label2.Size = new System.Drawing.Size(61, 13);
89 | this.label2.TabIndex = 4;
90 | this.label2.Text = "Content ID:";
91 | //
92 | // label3
93 | //
94 | this.label3.AutoSize = true;
95 | this.label3.Location = new System.Drawing.Point(23, 65);
96 | this.label3.Name = "label3";
97 | this.label3.Size = new System.Drawing.Size(44, 13);
98 | this.label3.TabIndex = 5;
99 | this.label3.Text = "Title ID:";
100 | //
101 | // textBox4
102 | //
103 | this.textBox4.Location = new System.Drawing.Point(73, 89);
104 | this.textBox4.Name = "textBox4";
105 | this.textBox4.ReadOnly = true;
106 | this.textBox4.Size = new System.Drawing.Size(298, 20);
107 | this.textBox4.TabIndex = 7;
108 | //
109 | // label4
110 | //
111 | this.label4.AutoSize = true;
112 | this.label4.Location = new System.Drawing.Point(37, 92);
113 | this.label4.Name = "label4";
114 | this.label4.Size = new System.Drawing.Size(30, 13);
115 | this.label4.TabIndex = 8;
116 | this.label4.Text = "Size:";
117 | //
118 | // label5
119 | //
120 | this.label5.AutoSize = true;
121 | this.label5.Location = new System.Drawing.Point(37, 119);
122 | this.label5.Name = "label5";
123 | this.label5.Size = new System.Drawing.Size(27, 13);
124 | this.label5.TabIndex = 9;
125 | this.label5.Text = "FW:";
126 | //
127 | // label6
128 | //
129 | this.label6.AutoSize = true;
130 | this.label6.Location = new System.Drawing.Point(4, 146);
131 | this.label6.Name = "label6";
132 | this.label6.Size = new System.Drawing.Size(63, 13);
133 | this.label6.TabIndex = 10;
134 | this.label6.Text = "pkgVersion:";
135 | //
136 | // textBox5
137 | //
138 | this.textBox5.Location = new System.Drawing.Point(73, 116);
139 | this.textBox5.Name = "textBox5";
140 | this.textBox5.ReadOnly = true;
141 | this.textBox5.Size = new System.Drawing.Size(142, 20);
142 | this.textBox5.TabIndex = 11;
143 | //
144 | // textBox6
145 | //
146 | this.textBox6.Location = new System.Drawing.Point(73, 143);
147 | this.textBox6.Name = "textBox6";
148 | this.textBox6.ReadOnly = true;
149 | this.textBox6.Size = new System.Drawing.Size(142, 20);
150 | this.textBox6.TabIndex = 12;
151 | //
152 | // textBox7
153 | //
154 | this.textBox7.Location = new System.Drawing.Point(73, 170);
155 | this.textBox7.Name = "textBox7";
156 | this.textBox7.ReadOnly = true;
157 | this.textBox7.Size = new System.Drawing.Size(298, 20);
158 | this.textBox7.TabIndex = 13;
159 | //
160 | // label7
161 | //
162 | this.label7.AutoSize = true;
163 | this.label7.Location = new System.Drawing.Point(27, 173);
164 | this.label7.Name = "label7";
165 | this.label7.Size = new System.Drawing.Size(38, 13);
166 | this.label7.TabIndex = 14;
167 | this.label7.Text = "SHA1:";
168 | //
169 | // pictureBox1
170 | //
171 | this.pictureBox1.ErrorImage = global::psnstuff.Properties.Resources.iconawap2;
172 | this.pictureBox1.Image = global::psnstuff.Properties.Resources.iconawap2;
173 | this.pictureBox1.InitialImage = global::psnstuff.Properties.Resources.iconawap2;
174 | this.pictureBox1.Location = new System.Drawing.Point(377, 65);
175 | this.pictureBox1.Name = "pictureBox1";
176 | this.pictureBox1.Size = new System.Drawing.Size(106, 101);
177 | this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
178 | this.pictureBox1.TabIndex = 15;
179 | this.pictureBox1.TabStop = false;
180 | //
181 | // pkgINFO
182 | //
183 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
184 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
185 | this.ClientSize = new System.Drawing.Size(495, 223);
186 | this.Controls.Add(this.pictureBox1);
187 | this.Controls.Add(this.label7);
188 | this.Controls.Add(this.textBox7);
189 | this.Controls.Add(this.textBox6);
190 | this.Controls.Add(this.textBox5);
191 | this.Controls.Add(this.label6);
192 | this.Controls.Add(this.label5);
193 | this.Controls.Add(this.label4);
194 | this.Controls.Add(this.textBox4);
195 | this.Controls.Add(this.label3);
196 | this.Controls.Add(this.label2);
197 | this.Controls.Add(this.label1);
198 | this.Controls.Add(this.textBox3);
199 | this.Controls.Add(this.textBox2);
200 | this.Controls.Add(this.textBox1);
201 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
202 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
203 | this.MaximizeBox = false;
204 | this.Name = "pkgINFO";
205 | this.Text = "pkgINFO";
206 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
207 | this.ResumeLayout(false);
208 | this.PerformLayout();
209 |
210 | }
211 |
212 | #endregion
213 |
214 | private System.Windows.Forms.TextBox textBox1;
215 | private System.Windows.Forms.TextBox textBox2;
216 | private System.Windows.Forms.TextBox textBox3;
217 | private System.Windows.Forms.Label label1;
218 | private System.Windows.Forms.Label label2;
219 | private System.Windows.Forms.Label label3;
220 | private System.Windows.Forms.TextBox textBox4;
221 | private System.Windows.Forms.Label label4;
222 | private System.Windows.Forms.Label label5;
223 | private System.Windows.Forms.Label label6;
224 | private System.Windows.Forms.TextBox textBox5;
225 | private System.Windows.Forms.TextBox textBox6;
226 | private System.Windows.Forms.TextBox textBox7;
227 | private System.Windows.Forms.Label label7;
228 | private System.Windows.Forms.PictureBox pictureBox1;
229 | }
230 | }
--------------------------------------------------------------------------------
/WindowsFormsApplication1/pkgID.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Threading.Tasks;
9 | using System.Windows.Forms;
10 | using System.IO;
11 | using System.Net;
12 | using System.Security.Cryptography;
13 |
14 | namespace psnstuff
15 | {
16 | public partial class pkgID : Form
17 | {
18 | public pkgID()
19 | {
20 | InitializeComponent();
21 | }
22 | string shavalue;
23 | private void button1_Click_1(object sender, EventArgs e)
24 | {
25 |
26 | if (textBox1.Text.Contains("/cdn/"))
27 | {
28 | button2.Enabled = false;
29 | long sha1pos;
30 | long sizebyte;
31 |
32 |
33 | try
34 | {
35 | textBox2.Text = "";
36 | textBox3.Text = "";
37 | textBox4.Text = "";
38 | textBox5.Text = "";
39 | textBox6.Text = "";
40 | textBox7.Text = "";
41 | pictureBox2.Image = null;
42 |
43 | string link = textBox1.Text;
44 | string URL;
45 | if (!link.StartsWith("http://", StringComparison.OrdinalIgnoreCase))
46 | {
47 | URL = ("http://" + link);
48 | }
49 | else
50 | {
51 | URL = link;
52 | }
53 |
54 | if (textBox1.Text.Contains(".pkg"))
55 | {
56 | HttpWebRequest request;
57 | request = WebRequest.Create(URL) as HttpWebRequest;
58 |
59 | request.AddRange(0, 319); //48, 83
60 |
61 |
62 | using (WebResponse response = request.GetResponse())
63 | {
64 | string[] contran = response.Headers.GetValues(0);
65 | string[] contrans = contran[0].Split('/');
66 | double b = Convert.ToInt64(contrans[1]);
67 | string sizeb = contrans[1];
68 |
69 | sizebyte = Convert.ToInt64(contrans[1]);
70 | sha1pos = Convert.ToInt64(sizeb) - 32;
71 |
72 |
73 |
74 |
75 | //rest infos
76 | if (b < 1048576)
77 | {
78 | double kb = Math.Round(b / 1024, 2);
79 | textBox4.Text = kb + " KB" + " " + "(" + sizeb + " Byte)";
80 | }
81 | else
82 | {
83 | double mb = Math.Round(b / 1024 / 1024, 2);
84 | textBox4.Text = mb + " MB" + " " + "(" + sizeb + " Byte)";
85 | }
86 | try
87 | {
88 | using (Stream stream = response.GetResponseStream())
89 | {
90 | byte[] buffer = new byte[319];
91 | int read = stream.Read(buffer, 0, 319);
92 | //Array.Resize(ref buffer, read);
93 |
94 | byte[] contentID = new byte[36];
95 | Array.Copy(buffer, 48, contentID, 0, 36);
96 |
97 | //contentID
98 | textBox2.Text = Encoding.ASCII.GetString(contentID);
99 |
100 | //id
101 | textBox3.Text = textBox2.Text.Substring(7, 9);
102 |
103 | //pkgver
104 | byte[] ver = new byte[2];
105 | Array.Copy(buffer, 254, ver, 0, 2);
106 | string verstr = BitConverter.ToString(ver);
107 | verstr = verstr.Replace("-", ".");
108 | textBox6.Text = verstr;
109 |
110 |
111 | //fwcalc
112 | byte[] fwcal = new byte[2];
113 | Array.Copy(buffer, 38, fwcal, 0, 2);
114 | string fwcalcstr = BitConverter.ToString(fwcal);
115 | fwcalcstr = fwcalcstr.Replace("-", "");
116 | string fwcalc = (Convert.ToInt32(fwcalcstr) - 60 + 9).ToString();
117 | int fwcalcs = Convert.ToInt32(fwcalc, 16);
118 |
119 | //fw
120 | byte[] fw = new byte[2];
121 | Array.Copy(buffer, fwcalcs, fw, 0, 2);
122 | string fwstr = BitConverter.ToString(fw);
123 | fwstr = fwstr.Replace("-", ".");
124 | textBox5.Text = fwstr;
125 |
126 | }
127 | }
128 | catch { }
129 | }
130 |
131 |
132 | //sha1
133 |
134 | HttpWebRequest request2;
135 | request2 = WebRequest.Create(URL) as HttpWebRequest;
136 |
137 | request2.AddRange(sha1pos, sizebyte);
138 |
139 | using (WebResponse response2 = request2.GetResponse())
140 | {
141 | using (Stream stream2 = response2.GetResponseStream())
142 | {
143 | byte[] buffer2 = new byte[20];
144 | int read = stream2.Read(buffer2, 0, 20);
145 | string sha1 = BitConverter.ToString(buffer2).ToLower();
146 | sha1 = sha1.Replace("-", "");
147 | textBox7.Text = sha1;
148 | }
149 | }
150 |
151 | }
152 | else { MessageBox.Show("Link missing or wrong"); }
153 | }
154 | catch { }
155 | }
156 |
157 | else if (textBox1.Text.Contains(".pkg"))
158 | {
159 |
160 | button2.Enabled = true;
161 | // Local pkg
162 | BinaryReader local = new BinaryReader(File.OpenRead(textBox1.Text));
163 |
164 | //contentID
165 | local.BaseStream.Position = 0x30;
166 | byte[] contID = local.ReadBytes(0x24);
167 | textBox2.Text = Encoding.ASCII.GetString(contID);
168 |
169 | //id
170 | textBox3.Text = textBox2.Text.Substring(7, 9);
171 | try
172 | {
173 | //pkgversion
174 | local.BaseStream.Position = 0xfe;
175 | byte[] pkgversion = local.ReadBytes(0x2);
176 | string pkgver = BitConverter.ToString(pkgversion);
177 | pkgver = pkgver.Replace("-", ".");
178 | textBox6.Text = pkgver;
179 | }
180 | catch { }
181 | //size
182 | double si = local.BaseStream.Length;
183 | if (si < 1048576)
184 | {
185 | double kb = Math.Round(si / 1024, 2);
186 | textBox4.Text = kb + " KB" + " " + "(" + si + " Byte)";
187 | }
188 | else
189 | {
190 | double mb = Math.Round(si / 1024 / 1024, 2);
191 | textBox4.Text = mb + " MB" + " " + "(" + si + " Byte)";
192 | }
193 | try
194 | {
195 | //FWcalc
196 | local.BaseStream.Position = 0x26;
197 | byte[] cal = local.ReadBytes(0x2);
198 | string calc = BitConverter.ToString(cal);
199 | calc = calc.Replace("-", "");
200 | string offset = (Convert.ToInt32(calc) - 60 + 9).ToString();
201 | int off = Convert.ToInt32(offset, 16);
202 |
203 | //FW
204 | local.BaseStream.Position = off;
205 | byte[] fwbyte = local.ReadBytes(0x2);
206 | string fwby = BitConverter.ToString(fwbyte);
207 | fwby = fwby.Replace("-", ".");
208 | textBox5.Text = fwby;
209 | }
210 | catch { }
211 | //SHA1
212 | long shaoffset = Convert.ToInt64(si) - 32;
213 | local.BaseStream.Position = shaoffset;
214 | byte[] sha = local.ReadBytes(20);
215 | shavalue = BitConverter.ToString(sha).ToLower();
216 | shavalue = shavalue.Replace("-", "");
217 | textBox7.Text = shavalue;
218 |
219 | local.Close();
220 |
221 | }
222 | else { MessageBox.Show("Wrong URL or file!"); }
223 | }
224 | //Drag & Drop
225 | private void textBox1_DragEnter(object sender, DragEventArgs e)
226 | {
227 | e.Effect = DragDropEffects.All;
228 | }
229 |
230 | private void textBox1_DragDrop(object sender, DragEventArgs e)
231 | {
232 | textBox1.Text = null;
233 | string[] filename =(string[]) e.Data.GetData(DataFormats.FileDrop);
234 | if (filename[0].Contains(".pkg"))
235 | {
236 | textBox1.Text = filename[0];
237 | textBox2.Text = "";
238 | textBox3.Text = "";
239 | textBox4.Text = "";
240 | textBox5.Text = "";
241 | textBox6.Text = "";
242 | textBox7.Text = "";
243 | pictureBox2.Image = null;
244 | }
245 | else
246 | MessageBox.Show("File not supported");
247 |
248 | }
249 |
250 | private void button2_Click(object sender, EventArgs e)
251 | {
252 | backgroundWorker1.RunWorkerAsync(shavalue);
253 | }
254 |
255 | private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
256 | {
257 | string filePath = textBox1.Text;
258 |
259 | byte[] buffer;
260 | int bytesRead;
261 | long size;
262 | long totalBytesRead = 0;
263 |
264 | using (Stream file = File.OpenRead(filePath))
265 | {
266 | size = file.Length -32 ;
267 |
268 |
269 | using (HashAlgorithm hasher = SHA1.Create())
270 | {
271 | do
272 | {
273 | buffer = new byte[4096];
274 | if (totalBytesRead + 4096 > size)
275 | {
276 | int last = (int)(size - totalBytesRead);
277 | buffer = new byte[last];
278 | }
279 | bytesRead = file.Read(buffer, 0, buffer.Length);
280 |
281 | totalBytesRead += bytesRead;
282 |
283 | hasher.TransformBlock(buffer, 0, bytesRead, null, 0);
284 |
285 | backgroundWorker1.ReportProgress((int)((double)totalBytesRead / size * 100));
286 | }
287 | while (totalBytesRead < size);
288 |
289 | hasher.TransformFinalBlock(buffer, 0, 0);
290 |
291 | e.Result = MakeHashString(hasher.Hash);
292 | }
293 | }
294 | }
295 | private static string MakeHashString(byte[] hashBytes)
296 | {
297 | StringBuilder hash = new StringBuilder(32);
298 |
299 | foreach (byte b in hashBytes)
300 | hash.Append(b.ToString("X2").ToLower());
301 |
302 | return hash.ToString();
303 | }
304 |
305 | private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
306 | {
307 | progressBar1.Value = e.ProgressPercentage;
308 | }
309 |
310 | private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
311 | {
312 | button2.Enabled = false;
313 | progressBar1.Value = 0;
314 | try
315 | {
316 | if (textBox7.Text == e.Result.ToString())
317 | {
318 | MessageBox.Show("Package is valid!", "Validating");
319 | pictureBox2.Image = psnstuff.Properties.Resources.gruener_haken;
320 | }
321 | else
322 | {
323 | MessageBox.Show("Package is corrupt!", "Validating");
324 | pictureBox2.Image = psnstuff.Properties.Resources.rotesX;
325 | }
326 | }
327 | catch { }
328 | }
329 |
330 | private void button3_Click(object sender, EventArgs e)
331 | {
332 | if (openFileDialog1.ShowDialog() == DialogResult.OK)
333 | {
334 | textBox1.Text = openFileDialog1.FileName;
335 | textBox2.Text = "";
336 | textBox3.Text = "";
337 | textBox4.Text = "";
338 | textBox5.Text = "";
339 | textBox6.Text = "";
340 | textBox7.Text = "";
341 | pictureBox2.Image = null;
342 | }
343 | }
344 | }
345 | }
346 |
--------------------------------------------------------------------------------
/WindowsFormsApplication1/pkgID.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace psnstuff
2 | {
3 | partial class pkgID
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(pkgID));
32 | this.label7 = new System.Windows.Forms.Label();
33 | this.textBox7 = new System.Windows.Forms.TextBox();
34 | this.textBox6 = new System.Windows.Forms.TextBox();
35 | this.textBox5 = new System.Windows.Forms.TextBox();
36 | this.label6 = new System.Windows.Forms.Label();
37 | this.label5 = new System.Windows.Forms.Label();
38 | this.label4 = new System.Windows.Forms.Label();
39 | this.textBox4 = new System.Windows.Forms.TextBox();
40 | this.button1 = new System.Windows.Forms.Button();
41 | this.label3 = new System.Windows.Forms.Label();
42 | this.label2 = new System.Windows.Forms.Label();
43 | this.label1 = new System.Windows.Forms.Label();
44 | this.textBox3 = new System.Windows.Forms.TextBox();
45 | this.textBox2 = new System.Windows.Forms.TextBox();
46 | this.textBox1 = new System.Windows.Forms.TextBox();
47 | this.button2 = new System.Windows.Forms.Button();
48 | this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker();
49 | this.progressBar1 = new System.Windows.Forms.ProgressBar();
50 | this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
51 | this.button3 = new System.Windows.Forms.Button();
52 | this.pictureBox2 = new System.Windows.Forms.PictureBox();
53 | this.pictureBox1 = new System.Windows.Forms.PictureBox();
54 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
55 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
56 | this.SuspendLayout();
57 | //
58 | // label7
59 | //
60 | this.label7.AutoSize = true;
61 | this.label7.Location = new System.Drawing.Point(59, 167);
62 | this.label7.Name = "label7";
63 | this.label7.Size = new System.Drawing.Size(38, 13);
64 | this.label7.TabIndex = 29;
65 | this.label7.Text = "SHA1:";
66 | //
67 | // textBox7
68 | //
69 | this.textBox7.Location = new System.Drawing.Point(105, 164);
70 | this.textBox7.Name = "textBox7";
71 | this.textBox7.ReadOnly = true;
72 | this.textBox7.Size = new System.Drawing.Size(298, 20);
73 | this.textBox7.TabIndex = 28;
74 | //
75 | // textBox6
76 | //
77 | this.textBox6.Location = new System.Drawing.Point(105, 137);
78 | this.textBox6.Name = "textBox6";
79 | this.textBox6.ReadOnly = true;
80 | this.textBox6.Size = new System.Drawing.Size(142, 20);
81 | this.textBox6.TabIndex = 27;
82 | //
83 | // textBox5
84 | //
85 | this.textBox5.Location = new System.Drawing.Point(105, 110);
86 | this.textBox5.Name = "textBox5";
87 | this.textBox5.ReadOnly = true;
88 | this.textBox5.Size = new System.Drawing.Size(142, 20);
89 | this.textBox5.TabIndex = 26;
90 | //
91 | // label6
92 | //
93 | this.label6.AutoSize = true;
94 | this.label6.Location = new System.Drawing.Point(33, 140);
95 | this.label6.Name = "label6";
96 | this.label6.Size = new System.Drawing.Size(66, 13);
97 | this.label6.TabIndex = 25;
98 | this.label6.Text = "pkg Version:";
99 | //
100 | // label5
101 | //
102 | this.label5.AutoSize = true;
103 | this.label5.Location = new System.Drawing.Point(72, 113);
104 | this.label5.Name = "label5";
105 | this.label5.Size = new System.Drawing.Size(27, 13);
106 | this.label5.TabIndex = 24;
107 | this.label5.Text = "FW:";
108 | //
109 | // label4
110 | //
111 | this.label4.AutoSize = true;
112 | this.label4.Location = new System.Drawing.Point(69, 86);
113 | this.label4.Name = "label4";
114 | this.label4.Size = new System.Drawing.Size(30, 13);
115 | this.label4.TabIndex = 23;
116 | this.label4.Text = "Size:";
117 | //
118 | // textBox4
119 | //
120 | this.textBox4.Location = new System.Drawing.Point(105, 83);
121 | this.textBox4.Name = "textBox4";
122 | this.textBox4.ReadOnly = true;
123 | this.textBox4.Size = new System.Drawing.Size(298, 20);
124 | this.textBox4.TabIndex = 22;
125 | //
126 | // button1
127 | //
128 | this.button1.Location = new System.Drawing.Point(141, 190);
129 | this.button1.Name = "button1";
130 | this.button1.Size = new System.Drawing.Size(106, 41);
131 | this.button1.TabIndex = 21;
132 | this.button1.Text = "Get ID";
133 | this.button1.UseVisualStyleBackColor = true;
134 | this.button1.Click += new System.EventHandler(this.button1_Click_1);
135 | //
136 | // label3
137 | //
138 | this.label3.AutoSize = true;
139 | this.label3.Location = new System.Drawing.Point(55, 59);
140 | this.label3.Name = "label3";
141 | this.label3.Size = new System.Drawing.Size(44, 13);
142 | this.label3.TabIndex = 20;
143 | this.label3.Text = "Title ID:";
144 | //
145 | // label2
146 | //
147 | this.label2.AutoSize = true;
148 | this.label2.Location = new System.Drawing.Point(38, 35);
149 | this.label2.Name = "label2";
150 | this.label2.Size = new System.Drawing.Size(61, 13);
151 | this.label2.TabIndex = 19;
152 | this.label2.Text = "Content ID:";
153 | //
154 | // label1
155 | //
156 | this.label1.AutoSize = true;
157 | this.label1.Location = new System.Drawing.Point(19, 9);
158 | this.label1.Name = "label1";
159 | this.label1.Size = new System.Drawing.Size(80, 13);
160 | this.label1.TabIndex = 18;
161 | this.label1.Text = "pkg URL/Path:";
162 | //
163 | // textBox3
164 | //
165 | this.textBox3.Location = new System.Drawing.Point(105, 56);
166 | this.textBox3.Name = "textBox3";
167 | this.textBox3.ReadOnly = true;
168 | this.textBox3.Size = new System.Drawing.Size(142, 20);
169 | this.textBox3.TabIndex = 17;
170 | //
171 | // textBox2
172 | //
173 | this.textBox2.Location = new System.Drawing.Point(105, 32);
174 | this.textBox2.Name = "textBox2";
175 | this.textBox2.ReadOnly = true;
176 | this.textBox2.Size = new System.Drawing.Size(410, 20);
177 | this.textBox2.TabIndex = 16;
178 | //
179 | // textBox1
180 | //
181 | this.textBox1.AllowDrop = true;
182 | this.textBox1.Location = new System.Drawing.Point(105, 6);
183 | this.textBox1.Name = "textBox1";
184 | this.textBox1.Size = new System.Drawing.Size(370, 20);
185 | this.textBox1.TabIndex = 15;
186 | this.textBox1.Text = " Type URL or Path | drag&drop pkg here | or c" +
187 | "lick ->";
188 | this.textBox1.DragDrop += new System.Windows.Forms.DragEventHandler(this.textBox1_DragDrop);
189 | this.textBox1.DragEnter += new System.Windows.Forms.DragEventHandler(this.textBox1_DragEnter);
190 | //
191 | // button2
192 | //
193 | this.button2.Enabled = false;
194 | this.button2.Location = new System.Drawing.Point(276, 190);
195 | this.button2.Name = "button2";
196 | this.button2.Size = new System.Drawing.Size(101, 40);
197 | this.button2.TabIndex = 30;
198 | this.button2.Text = "Validate";
199 | this.button2.UseVisualStyleBackColor = true;
200 | this.button2.Click += new System.EventHandler(this.button2_Click);
201 | //
202 | // backgroundWorker1
203 | //
204 | this.backgroundWorker1.WorkerReportsProgress = true;
205 | this.backgroundWorker1.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorker1_DoWork);
206 | this.backgroundWorker1.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.backgroundWorker1_ProgressChanged);
207 | this.backgroundWorker1.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorker1_RunWorkerCompleted);
208 | //
209 | // progressBar1
210 | //
211 | this.progressBar1.Location = new System.Drawing.Point(11, 237);
212 | this.progressBar1.Name = "progressBar1";
213 | this.progressBar1.Size = new System.Drawing.Size(503, 23);
214 | this.progressBar1.TabIndex = 31;
215 | //
216 | // openFileDialog1
217 | //
218 | this.openFileDialog1.Filter = "Package|*.pkg";
219 | //
220 | // button3
221 | //
222 | this.button3.Location = new System.Drawing.Point(481, 6);
223 | this.button3.Name = "button3";
224 | this.button3.Size = new System.Drawing.Size(33, 20);
225 | this.button3.TabIndex = 33;
226 | this.button3.Text = "...";
227 | this.button3.UseVisualStyleBackColor = true;
228 | this.button3.Click += new System.EventHandler(this.button3_Click);
229 | //
230 | // pictureBox2
231 | //
232 | this.pictureBox2.ErrorImage = null;
233 | this.pictureBox2.InitialImage = null;
234 | this.pictureBox2.Location = new System.Drawing.Point(409, 164);
235 | this.pictureBox2.Name = "pictureBox2";
236 | this.pictureBox2.Size = new System.Drawing.Size(20, 20);
237 | this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
238 | this.pictureBox2.TabIndex = 34;
239 | this.pictureBox2.TabStop = false;
240 | //
241 | // pictureBox1
242 | //
243 | this.pictureBox1.Image = global::psnstuff.Properties.Resources.iconawap2;
244 | this.pictureBox1.Location = new System.Drawing.Point(415, 83);
245 | this.pictureBox1.Name = "pictureBox1";
246 | this.pictureBox1.Size = new System.Drawing.Size(100, 70);
247 | this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
248 | this.pictureBox1.TabIndex = 32;
249 | this.pictureBox1.TabStop = false;
250 | //
251 | // pkgID
252 | //
253 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
254 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
255 | this.ClientSize = new System.Drawing.Size(526, 273);
256 | this.Controls.Add(this.pictureBox2);
257 | this.Controls.Add(this.button3);
258 | this.Controls.Add(this.pictureBox1);
259 | this.Controls.Add(this.progressBar1);
260 | this.Controls.Add(this.button2);
261 | this.Controls.Add(this.label7);
262 | this.Controls.Add(this.textBox7);
263 | this.Controls.Add(this.textBox6);
264 | this.Controls.Add(this.textBox5);
265 | this.Controls.Add(this.label6);
266 | this.Controls.Add(this.label5);
267 | this.Controls.Add(this.label4);
268 | this.Controls.Add(this.textBox4);
269 | this.Controls.Add(this.button1);
270 | this.Controls.Add(this.label3);
271 | this.Controls.Add(this.label2);
272 | this.Controls.Add(this.label1);
273 | this.Controls.Add(this.textBox3);
274 | this.Controls.Add(this.textBox2);
275 | this.Controls.Add(this.textBox1);
276 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
277 | this.MaximizeBox = false;
278 | this.Name = "pkgID";
279 | this.Text = "pkgID";
280 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit();
281 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
282 | this.ResumeLayout(false);
283 | this.PerformLayout();
284 |
285 | }
286 |
287 | #endregion
288 |
289 | private System.Windows.Forms.Label label7;
290 | private System.Windows.Forms.TextBox textBox7;
291 | private System.Windows.Forms.TextBox textBox6;
292 | private System.Windows.Forms.TextBox textBox5;
293 | private System.Windows.Forms.Label label6;
294 | private System.Windows.Forms.Label label5;
295 | private System.Windows.Forms.Label label4;
296 | private System.Windows.Forms.TextBox textBox4;
297 | private System.Windows.Forms.Button button1;
298 | private System.Windows.Forms.Label label3;
299 | private System.Windows.Forms.Label label2;
300 | private System.Windows.Forms.Label label1;
301 | private System.Windows.Forms.TextBox textBox3;
302 | private System.Windows.Forms.TextBox textBox2;
303 | private System.Windows.Forms.TextBox textBox1;
304 | private System.Windows.Forms.Button button2;
305 | private System.ComponentModel.BackgroundWorker backgroundWorker1;
306 | private System.Windows.Forms.ProgressBar progressBar1;
307 | private System.Windows.Forms.PictureBox pictureBox1;
308 | private System.Windows.Forms.OpenFileDialog openFileDialog1;
309 | private System.Windows.Forms.Button button3;
310 | private System.Windows.Forms.PictureBox pictureBox2;
311 | }
312 | }
--------------------------------------------------------------------------------
/WindowsFormsApplication1/main.cs:
--------------------------------------------------------------------------------
1 | using psnstuff;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.ComponentModel;
5 | using System.Data;
6 | using System.Drawing;
7 | using System.Linq;
8 | using System.Text;
9 | using System.Threading;
10 | using System.Windows.Forms;
11 | using System.IO;
12 | using System.IO.Compression;
13 | using System.Diagnostics;
14 | using System.Net;
15 | using System.Collections.Specialized;
16 | using System.Globalization;
17 | using System.Security.Cryptography;
18 | using System.Xml;
19 |
20 | namespace WindowsFormsApplication1
21 | {
22 | public partial class psnStuff : Form
23 | {
24 | DataTable dt = new DataTable();
25 | public psnStuff()
26 | {
27 |
28 | InitializeComponent();
29 | pictureBox6.AllowDrop = true;
30 |
31 | Thread updat = new Thread(updatet);
32 | updat.Start();
33 |
34 | //update db
35 | try
36 | {
37 | if (!File.Exists("database"))
38 | {
39 | WebClient update = new WebClient();
40 | update.DownloadFile(new Uri("http://sin.spdns.eu/loozers/d/db"), @"database");
41 | updateico.ShowBalloonTip(2000, "Download", "Database downloaded successfully!", ToolTipIcon.Info);
42 | FileInfo downf = new FileInfo(@"database");
43 | downf.Attributes = FileAttributes.Hidden;
44 | }
45 | else
46 | {
47 | FileInfo sourceFile = new FileInfo(@"database");
48 | sourceFile.Attributes = FileAttributes.Normal;
49 | var request = (HttpWebRequest)WebRequest.Create(@"http://sin.spdns.eu/loozers/d/db");
50 | request.Method = "HEAD";
51 | request.Timeout = 5000;
52 | var response = (HttpWebResponse)request.GetResponse();
53 | sourceFile.Attributes = FileAttributes.Hidden;
54 |
55 |
56 |
57 | if (response.LastModified > sourceFile.LastWriteTime)
58 | {
59 |
60 | WebClient update = new WebClient();
61 | sourceFile.Attributes = FileAttributes.Normal;
62 | update.DownloadFile(new Uri("http://sin.spdns.eu/loozers/d/db"), @"database");
63 | sourceFile.Attributes = FileAttributes.Hidden;
64 |
65 | updateico.ShowBalloonTip(2000, "Update", "Database updated successfully!", ToolTipIcon.Info);
66 |
67 | }
68 | }
69 |
70 | }
71 | catch { }
72 |
73 | try
74 | {
75 | var n = new WebClient().DownloadString("http://sin.spdns.eu/loozers/n/news.txt");
76 | newstxt.Text = Convert.ToString(n);
77 | }
78 | catch { }
79 |
80 | //csv read line by line and add to table
81 | dt.Columns.Add("ID");
82 | dt.Columns.Add("Name");
83 | dt.Columns.Add("Typ");
84 | dt.Columns.Add("Region");
85 | dt.Columns.Add("psnlink");
86 | dt.Columns.Add("pnglink");
87 | dt.Columns.Add("rapname");
88 | dt.Columns.Add("rapdata");
89 | dt.Columns.Add("info");
90 | dt.Columns.Add("postedby");
91 |
92 | try
93 | {
94 |
95 | FileInfo sourceFile = new FileInfo(@"database");
96 | sourceFile.Attributes = FileAttributes.Normal;
97 | string line;
98 | string[] linesplit;
99 |
100 |
101 | byte[] db = File.ReadAllBytes(@"database");
102 |
103 | // byte[] db = Decompress(dbpack);
104 |
105 | string getstr = Encoding.GetEncoding(1252).GetString(db);
106 | StringReader file = new StringReader(getstr);
107 |
108 | while ((line = file.ReadLine()) != null)
109 | {
110 | linesplit = line.Split(';');
111 | dt.Rows.Add(linesplit);
112 | count.Text = dt.Rows.Count.ToString();
113 |
114 | }
115 |
116 | dataGridView1.DataSource = dt;
117 | dataGridView1.Columns[0].Width = 100;
118 | dataGridView1.Columns[1].Width = 352;
119 | dataGridView1.Columns[2].Width = 72;
120 | dataGridView1.Columns[3].Width = 60;
121 | dataGridView1.Columns[4].Visible = false;
122 | dataGridView1.Columns[5].Visible = false;
123 | dataGridView1.Columns[6].Visible = false;
124 | dataGridView1.Columns[7].Visible = false;
125 | dataGridView1.Columns[8].Visible = false;
126 | dataGridView1.Columns[9].Visible = false;
127 |
128 | sourceFile.Attributes = FileAttributes.Hidden;
129 | file.Close();
130 | }
131 | catch
132 | {
133 | MessageBox.Show("Could not load Database", "Database", MessageBoxButtons.OK, MessageBoxIcon.Error);
134 | FileInfo sourceFile = new FileInfo(@"database");
135 | sourceFile.Attributes = FileAttributes.Hidden;
136 | }
137 |
138 | //set "All" for combobox
139 | comboBox1.SelectedIndex = comboBox1.FindStringExact("All");
140 |
141 | }
142 |
143 |
144 | private string DownloadDir()
145 | {
146 | string thedir = string.Empty;
147 | if (psnstuff.Properties.Settings.Default.DownloadDirectory != string.Empty)
148 | {
149 | thedir = psnstuff.Properties.Settings.Default.DownloadDirectory.ToString();
150 | }
151 | else
152 | {
153 | thedir = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\PSNStuff\\Downloads";
154 | psnstuff.Properties.Settings.Default.DownloadDirectory = textBox1.Text;
155 | psnstuff.Properties.Settings.Default.Save();
156 | }
157 |
158 | if (!Directory.Exists(thedir))
159 | {
160 | Directory.CreateDirectory(thedir);
161 | }
162 | return thedir;
163 |
164 | }
165 |
166 | //icon & info & rapbutton & change
167 | private void dataGridView1_SelectionChanged(object sender, EventArgs e)
168 | {
169 | if (dataGridView1.RowCount == 0) return;
170 | richTextBox1.Text = dataGridView1.CurrentRow.Cells["info"].Value.ToString();
171 | size.Text = "Size";
172 | pictureBox1.ImageLocation = dataGridView1.CurrentRow.Cells["pnglink"].Value.ToString();
173 | pictureBox1.Image = pictureBox1.InitialImage;
174 | richTextBox2.Text = dataGridView1.CurrentRow.Cells["postedby"].Value.ToString();
175 | textBox2.Text = dataGridView1.CurrentRow.Cells["ID"].Value.ToString();
176 | if (richTextBox2.Text == "")
177 | { richTextBox2.Text = "anonymous"; }
178 |
179 | //rapbutton
180 | string rapbutton = dataGridView1.CurrentRow.Cells["rapdata"].Value.ToString();
181 | if (rapbutton == " " || rapbutton == "")
182 | {
183 | button2.Enabled = false;
184 | }
185 | }
186 |
187 | //Download
188 | WebClient webClient;
189 | Stopwatch sw = new Stopwatch();
190 | string filename;
191 | private void button1_Click_1(object sender, EventArgs e)
192 | {
193 | if (dt.Rows.Count == 0) return;
194 |
195 | /* so lets add some user friendlyniss to this app */
196 |
197 |
198 |
199 | filename = DownloadDir()+"\\" + dataGridView1.CurrentRow.Cells["ID"].Value.ToString() + " " + dataGridView1.CurrentRow.Cells["name"].Value.ToString() + ".pkg";
200 | if (button1.Text == "Download Package")
201 | {
202 | if (File.Exists(filename))
203 | {
204 | DialogResult result = MessageBox.Show("Download again?", "Already downloaded!", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
205 | if (result == DialogResult.OK)
206 | {
207 | goto down;
208 | }
209 | else
210 | {
211 | return;
212 | }
213 | }
214 |
215 | down:
216 | if (!Directory.Exists("pkg"))
217 | {
218 | Directory.CreateDirectory("pkg");
219 | }
220 | button1.Text = "Cancel";
221 | webClient = new WebClient();
222 |
223 | webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
224 | webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);
225 |
226 | // start stopwatch to calc downloadspeed
227 | sw.Start();
228 |
229 | string link = dataGridView1.CurrentRow.Cells["psnlink"].Value.ToString();
230 | string URL;
231 | // Is "http://"
232 | if (!link.StartsWith("http://", StringComparison.OrdinalIgnoreCase))
233 | {
234 | URL = ("http://" + link);
235 | }
236 | else
237 | {
238 | URL = link;
239 | }
240 | // start download
241 | webClient.DownloadFileAsync(new Uri(URL), filename);
242 | downl.Text = dataGridView1.CurrentRow.Cells["name"].Value.ToString();
243 | label16.Text = "Downloading:";
244 | }
245 | else
246 | {
247 | webClient.CancelAsync();
248 | button1.Text = "Download Package";
249 | }
250 |
251 | }
252 |
253 |
254 | // Progressbar
255 | private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e)
256 | {
257 | try
258 | {
259 | double actkb = (e.TotalBytesToReceive - e.BytesReceived) / 1024;
260 | double speed = e.BytesReceived / 1024 / sw.Elapsed.TotalSeconds;
261 | double time = actkb / speed;
262 | // Download Speed
263 | if (prozent.Text != (Convert.ToDouble(e.BytesReceived) / 1024 / sw.Elapsed.TotalSeconds).ToString("0"))
264 | speed1.Text = (Convert.ToDouble(e.BytesReceived) / 1024 / sw.Elapsed.TotalSeconds).ToString("0.00") + " kb/s";
265 |
266 | // procentual output
267 | if (progressBar1.Value != e.ProgressPercentage)
268 | progressBar1.Value = e.ProgressPercentage;
269 |
270 | // procentual output
271 | if (prozent.Text != e.ProgressPercentage.ToString() + "%")
272 | prozent.Text = e.ProgressPercentage.ToString() + "%";
273 |
274 | // downloaded / total size
275 | downl1.Text = (Convert.ToDouble(e.BytesReceived) / 1024 / 1024).ToString("0.00") + " MB" + " / " + (Convert.ToDouble(e.TotalBytesToReceive) / 1024 / 1024).ToString("0.00") + " MB";
276 |
277 | }
278 | catch { }
279 | }
280 |
281 |
282 |
283 | // if webclient finish...msgbox
284 | string etag;
285 | private void Completed(object sender, AsyncCompletedEventArgs e)
286 | {
287 | string dname = dataGridView1.CurrentRow.Cells["name"].Value.ToString();
288 |
289 | sw.Reset();
290 | if (e.Cancelled == true)
291 | {
292 | File.Delete("pkg/" + dname + ".pkg"); // remove unfinished download
293 | button1.Text = "Download Package";
294 | label16.Text = "Canceled:";
295 | progressBar1.Value = 0;
296 | prozent.Text = "";
297 | downl1.Text = "";
298 | speed1.Text = "";
299 |
300 | }
301 | else
302 | { //complete
303 | MessageBox.Show("Download completed!");
304 |
305 | button1.Text = "Download Package";
306 | label16.Text = "Downloaded:";
307 | progressBar1.Value = 0;
308 | prozent.Text = "";
309 | downl1.Text = "";
310 | speed1.Text = "";
311 |
312 | //validate
313 | try
314 | {
315 | string kukik = webClient.ResponseHeaders["ETag"];
316 | kukik = kukik.Replace("\"", "");
317 | string[] kakik = kukik.Split(':');
318 | etag = kakik[0];
319 | }
320 | catch
321 | {
322 | MessageBox.Show("Validation not possible!");
323 | return;
324 | }
325 | DialogResult result = MessageBox.Show("Validate Package?", "Validation", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
326 | if (result == DialogResult.OK)
327 | {
328 | label16.Text = "Validating:";
329 | backgroundWorker1.RunWorkerAsync(filename);
330 | }
331 | }
332 | }
333 |
334 | //md5 validation background
335 | private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
336 | {
337 | string filePath = e.Argument.ToString();
338 |
339 | byte[] buffer;
340 | int bytesRead;
341 | long size;
342 | long totalBytesRead = 0;
343 |
344 | using (System.IO.Stream file = File.OpenRead(filePath))
345 | {
346 | size = file.Length;
347 |
348 | using (HashAlgorithm hasher = MD5.Create())
349 | {
350 | do
351 | {
352 | buffer = new byte[4096];
353 |
354 | bytesRead = file.Read(buffer, 0, buffer.Length);
355 |
356 | totalBytesRead += bytesRead;
357 |
358 | hasher.TransformBlock(buffer, 0, bytesRead, null, 0);
359 |
360 | backgroundWorker1.ReportProgress((int)((double)totalBytesRead / size * 100));
361 | }
362 | while (bytesRead != 0);
363 |
364 | hasher.TransformFinalBlock(buffer, 0, 0);
365 |
366 | e.Result = MakeHashString(hasher.Hash);
367 | }
368 | }
369 | }
370 | private static string MakeHashString(byte[] hashBytes)
371 | {
372 | StringBuilder hash = new StringBuilder(32);
373 |
374 | foreach (byte b in hashBytes)
375 | hash.Append(b.ToString("X2").ToLower());
376 |
377 | return hash.ToString();
378 | }
379 |
380 |
381 |
382 | private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
383 | {
384 | progressBar1.Value = e.ProgressPercentage;
385 | }
386 |
387 | private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
388 | {
389 |
390 |
391 | progressBar1.Value = 0;
392 | label16.Text = "Validated:";
393 | if (etag == e.Result.ToString())
394 | {
395 | MessageBox.Show("Package is valid!", "Validating");
396 | }
397 | else
398 | {
399 | MessageBox.Show("Package is corrupt!", "Validating");
400 | }
401 |
402 |
403 | }
404 |
405 | //rap string to byte
406 | public static byte[] StringToByteArray(string hex)
407 | {
408 | return Enumerable.Range(0, hex.Length)
409 | .Where(x => x % 2 == 0)
410 | .Select(x => Convert.ToByte(hex.Substring(x, 2), 16))
411 | .ToArray();
412 | }
413 |
414 |
415 | //create rap
416 | private void button2_Click(object sender, EventArgs e)
417 | {
418 | if (!Directory.Exists("exdata"))
419 | {
420 | Directory.CreateDirectory("exdata");
421 | }
422 | try
423 | {
424 | string rap = dataGridView1.CurrentRow.Cells["rapname"].Value.ToString();
425 | string rapdata = dataGridView1.CurrentRow.Cells["rapdata"].Value.ToString();
426 |
427 | File.WriteAllBytes("exdata/" + rap, StringToByteArray(rapdata));
428 | MessageBox.Show("Rap has been saved to exdata!", "rap", MessageBoxButtons.OK, MessageBoxIcon.Information);
429 | }
430 | catch { MessageBox.Show("No rap available!"); }
431 |
432 | }
433 | //submit
434 | private void submit_Click(object sender, EventArgs e)
435 | {
436 | try
437 | {
438 | if (addpsn.Text.Contains(".pkg") && addpsn.Text.Contains("zeus") || addpsn.Text.Contains("ares"))
439 | {
440 | goto Send;
441 | }
442 |
443 | MessageBox.Show("Link is missing or wrong");
444 | goto End;
445 | Send:
446 |
447 | string url = "http://sin.spdns.eu/loozers/s/submit.php";
448 |
449 |
450 | WebClient wclient = new WebClient();
451 | {
452 | NameValueCollection postData = new NameValueCollection()
453 | {
454 |
455 | { "titleid", addtitle.Text }, //order: {"parameter name", "parameter value"}
456 | { "name", addname.Text },
457 | { "typ", combotyp.Text },
458 | { "reg", comboreg.Text },
459 | { "psn", addpsn.Text },
460 | { "png", addpng.Text },
461 | { "rap", addrap.Text },
462 | { "rapd", addrapdata.Text },
463 | { "info", addinfo.Text },
464 | { "postedby", postedby.Text }
465 | };
466 |
467 | wclient.Encoding = Encoding.UTF8;
468 | byte[] responseArray = wclient.UploadValues(url, "POST", postData);
469 | MessageBox.Show(Encoding.ASCII.GetString(responseArray), "Upload finished!");
470 | }
471 | End: ;
472 | }
473 | catch { MessageBox.Show("Connection failed. Please try again later."); }
474 | }
475 |
476 |
477 | //drag effect
478 | private void dragdrop_DragEnter(object sender, DragEventArgs e)
479 | {
480 | e.Effect = DragDropEffects.All;
481 | }
482 | //drag n drop
483 | private void dragdrop_DragDrop(object sender, DragEventArgs e)
484 | {
485 |
486 | string[] test = (string[])e.Data.GetData(DataFormats.FileDrop);
487 | foreach (string file in test)
488 | {
489 |
490 | FileInfo filen = new FileInfo(file);
491 | if (filen.Extension == ".rap")
492 | {
493 | addrap.Text = filen.Name;
494 |
495 | BinaryReader br = new BinaryReader(File.OpenRead(file));
496 | byte[] hex = File.ReadAllBytes(file);
497 | string rephex = BitConverter.ToString(hex);
498 | string stringhex = rephex.Replace("-", "");
499 | addrapdata.Text = stringhex;
500 | }
501 | else
502 | {
503 | MessageBox.Show("This is no rap!");
504 | }
505 |
506 |
507 | }
508 |
509 | }
510 | //Pkg get size
511 | private void dataGridView1_MouseDoubleClick(object sender, MouseEventArgs e)
512 | {
513 |
514 | string sizet;
515 | string newurllink;
516 | string urllink = dataGridView1.CurrentRow.Cells["psnlink"].Value.ToString();
517 | if (!urllink.StartsWith("http://", StringComparison.OrdinalIgnoreCase))
518 | {
519 | newurllink = ("http://" + urllink);
520 | }
521 | else
522 | {
523 | newurllink = urllink;
524 | }
525 |
526 | try
527 | {
528 | var request = (HttpWebRequest)WebRequest.Create(newurllink);
529 | request.Method = "HEAD";
530 | request.Timeout = 3000;
531 | var response = (HttpWebResponse)request.GetResponse();
532 | double length = response.ContentLength;
533 |
534 | if (length > 1073741287)
535 | {
536 | sizet = Math.Round(length / 1024 / 1024 / 1024, 2).ToString() + " GB";
537 | size.Text = sizet;
538 | }
539 | if (length <= 1073741287 & length >= 1048576)
540 | {
541 | sizet = Math.Round(length / 1024 / 1024, 2).ToString() + " MB";
542 | size.Text = sizet;
543 | }
544 | if (length < 1048576)
545 | {
546 | sizet = Math.Round(length / 1024, 2).ToString() + " KB";
547 | size.Text = sizet;
548 | }
549 | }
550 | catch (WebException)
551 | {
552 | size.Text = "unknown";
553 | }
554 |
555 |
556 | }
557 | //copy to clipboard
558 | //private void listView1_MouseClick(object sender, MouseEventArgs e)
559 | //{
560 | //if (Control.ModifierKeys == Keys.Alt && e.Button == MouseButtons.Right)
561 | //{
562 | // Clipboard.SetText(listView1.SelectedItems[0].SubItems[4].Text);
563 |
564 | //}
565 |
566 | //}
567 |
568 | //Toolupdate
569 | static void updatet()
570 | {
571 | Thread.Sleep(6000);
572 | try
573 | {
574 | string change = new WebClient().DownloadString("http://sin.spdns.eu/loozers/u/upd.txt");
575 | string strMeldung = "Do you want to download the new PSN Stuff v" + change + "?";
576 |
577 | decimal act = 2.01m;
578 | decimal chv = Convert.ToDecimal(change, CultureInfo.InvariantCulture);
579 | if (chv > act)
580 | {
581 | DialogResult result = MessageBox.Show(strMeldung, "Update Available!", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
582 | if (result == DialogResult.OK)
583 | {
584 | WebClient download = new WebClient();
585 | download.DownloadFile("http://sin.spdns.eu/loozers/u/update.php", "psnstuff_ver_" + change + ".rar");
586 | MessageBox.Show("Download succesfull", "Update", MessageBoxButtons.OK, MessageBoxIcon.Information);
587 | }
588 | }
589 |
590 | }
591 |
592 | catch { }
593 | }
594 | //Filter
595 | private void comboBox1_SelectedValueChanged(object sender, EventArgs e)
596 | {
597 | if (comboBox1.Text == "All")
598 | {
599 | dt.DefaultView.RowFilter = "Name LIKE " + "'*" + textBox1.Text + "*'" + "OR ID LIKE " + "'*" + textBox1.Text + "*'";
600 | dataGridView1.DataSource = dt.DefaultView;
601 | }
602 | else
603 | {
604 | dt.DefaultView.RowFilter = "Typ=" + "'" + comboBox1.Text + "'" + "AND (Name LIKE " + "'%" + textBox1.Text + "%'" + "OR ID LIKE " + "'*" + textBox1.Text + "*')";
605 | dataGridView1.DataSource = dt.DefaultView;
606 | }
607 | count.Text = dataGridView1.RowCount.ToString();
608 |
609 | }
610 | //Search
611 | private void textBox1_TextChanged(object sender, EventArgs e)
612 | {
613 | if (comboBox1.Text == "All")
614 | {
615 | dt.DefaultView.RowFilter = "Name LIKE " + "'*" + textBox1.Text + "*'" + "OR ID LIKE " + "'*" + textBox1.Text + "*'";
616 | dataGridView1.DataSource = dt.DefaultView;
617 | }
618 | else
619 | {
620 | dt.DefaultView.RowFilter = "Typ=" + "'" + comboBox1.Text + "'" + "AND (Name LIKE " + "'%" + textBox1.Text + "%'" + "OR ID LIKE " + "'*" + textBox1.Text + "*')";
621 | dataGridView1.DataSource = dt.DefaultView;
622 | }
623 | count.Text = dataGridView1.RowCount.ToString();
624 | }
625 |
626 | //link clickable newstextbox
627 | private void newstxt_LinkClicked(object sender, LinkClickedEventArgs e)
628 | {
629 | Process.Start(e.LinkText);
630 | }
631 |
632 | private void richTextBox2_LinkClicked(object sender, LinkClickedEventArgs e)
633 | {
634 | Process.Start(e.LinkText);
635 | }
636 |
637 | // File split
638 | private void pictureBox6_DragEnter(object sender, DragEventArgs e)
639 | {
640 | e.Effect = DragDropEffects.All;
641 | }
642 |
643 | string foldername;
644 |
645 | private void pictureBox6_DragDrop(object sender, DragEventArgs e)
646 | {
647 |
648 |
649 | string[] test = (string[])e.Data.GetData(DataFormats.FileDrop);
650 |
651 | FolderBrowserDialog fbd = new FolderBrowserDialog();
652 | DialogResult result = fbd.ShowDialog();
653 |
654 | if (result == DialogResult.OK)
655 | {
656 | foldername = fbd.SelectedPath;
657 | backgroundWorker2.RunWorkerAsync(test);
658 | }
659 | else return;
660 |
661 |
662 | }
663 |
664 | private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e)
665 | {
666 | string[] test = (string[])e.Argument;
667 |
668 | foreach (string file in test)
669 | {
670 | FileInfo fileinf = new FileInfo(file);
671 | long size = fileinf.Length;
672 |
673 | if (size > 4294967295)
674 | {
675 | label18.Invoke(new Action(() =>
676 | {
677 | label18.Text = fileinf.Name;
678 | }
679 | ));
680 | long chunkSize = 4294967294;
681 | const uint BUFFER_SIZE = 20 * 1024;
682 | byte[] buffer = new byte[BUFFER_SIZE];
683 |
684 | using (System.IO.Stream input = File.OpenRead(file))
685 | {
686 | uint index = 0;
687 | while (input.Position < input.Length)
688 | {
689 | using (System.IO.Stream output = File.Create(foldername + "\\" + fileinf.Name + ".6660" + index))
690 | {
691 | long totalbytesread = 0;
692 | long remaining = chunkSize, bytesRead;
693 | while (remaining > 0 && (bytesRead = input.Read(buffer, 0, Convert.ToInt32(Math.Min(remaining, BUFFER_SIZE)))) > 0)
694 | {
695 | output.Write(buffer, 0, Convert.ToInt32(bytesRead));
696 | remaining -= bytesRead;
697 | totalbytesread += bytesRead;
698 | backgroundWorker2.ReportProgress((int)((double)input.Position / size * 100));
699 | }
700 |
701 | index++;
702 |
703 | }
704 |
705 | }
706 | }
707 | }
708 | else { MessageBox.Show(fileinf.Name + "\r\n" + "Splitting is not needed!", "Split", MessageBoxButtons.OK, MessageBoxIcon.Information); }
709 | }
710 |
711 | }
712 |
713 |
714 | private void backgroundWorker2_ProgressChanged(object sender, ProgressChangedEventArgs e)
715 | {
716 | progressBar2.Value = e.ProgressPercentage;
717 | }
718 |
719 | private void backgroundWorker2_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
720 | {
721 | progressBar2.Value = 0;
722 | label18.Text = "";
723 | MessageBox.Show("Done", "Split", MessageBoxButtons.OK, MessageBoxIcon.Information);
724 | }
725 |
726 | //pkgID open
727 | private void toolStripButton1_Click(object sender, EventArgs e)
728 | {
729 | pkgID open = new pkgID();
730 | open.Show();
731 | }
732 |
733 | // Context menu
734 | private void copiePSNLinkToolStripMenuItem_Click(object sender, EventArgs e)
735 | {
736 | Clipboard.SetText(dataGridView1.CurrentRow.Cells["psnlink"].Value.ToString());
737 | }
738 |
739 | private void copieTitleIDToolStripMenuItem_Click(object sender, EventArgs e)
740 | {
741 | Clipboard.SetText(dataGridView1.CurrentRow.Cells["ID"].Value.ToString());
742 | }
743 |
744 | private void copieNameToolStripMenuItem_Click(object sender, EventArgs e)
745 | {
746 | Clipboard.SetText(dataGridView1.CurrentRow.Cells["Name"].Value.ToString());
747 | }
748 |
749 | private void showInfoToolStripMenuItem_Click(object sender, EventArgs e)
750 | {
751 | pkgINFO open = new pkgINFO(dataGridView1.CurrentRow.Cells["psnlink"].Value.ToString(), dataGridView1.CurrentRow.Cells["pnglink"].Value.ToString());
752 | open.Show();
753 | }
754 |
755 |
756 | //Game Updater
757 |
758 | private void button5_Click(object sender, EventArgs e)
759 | {
760 | listView2.Items.Clear();
761 | label23.Text = "";
762 | string xml;
763 |
764 | try
765 | {
766 | string id = textBox2.Text.ToUpper();
767 | string url = "https://a0.ww.np.dl.playstation.net/tpl/np/" + id + "/" + id + "-ver.xml";
768 | ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
769 | WebClient updcon = new WebClient();
770 | updcon.Encoding = Encoding.UTF8;
771 | xml = updcon.DownloadString(url);
772 |
773 | using (XmlReader reader = XmlReader.Create(new StringReader(xml)))
774 | {
775 |
776 | reader.ReadToFollowing("package");
777 | while (reader.HasAttributes)
778 | {
779 | reader.MoveToFirstAttribute();
780 | string version = reader.Value;
781 |
782 | reader.MoveToNextAttribute();
783 | string sizeb = reader.Value;
784 | string size = null;
785 |
786 | if (Convert.ToDouble(sizeb) >= 1048576)
787 | {
788 | size = (Convert.ToDouble(sizeb) / 1024 / 1024).ToString("0.00") + " MB";
789 | }
790 |
791 | else if (Convert.ToDouble(sizeb) >= 1024)
792 | {
793 | size = (Convert.ToDouble(sizeb) / 1024).ToString("0.00") + "KB";
794 | }
795 |
796 |
797 | reader.MoveToNextAttribute();
798 | string sha1sum = reader.Value;
799 |
800 | reader.MoveToNextAttribute();
801 | string pkgurl = reader.Value;
802 |
803 | reader.MoveToNextAttribute();
804 | string fw = reader.Value;
805 |
806 | ListViewItem item = new ListViewItem(version);
807 | item.SubItems.Add(fw);
808 | item.SubItems.Add(size);
809 | item.SubItems.Add(sha1sum);
810 | item.SubItems.Add(pkgurl);
811 |
812 | item.Checked = true;
813 | listView2.Items.Add(item);
814 |
815 | listView2.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
816 |
817 | reader.ReadToFollowing("package");
818 |
819 | }
820 |
821 | }
822 | using (XmlReader reader2 = XmlReader.Create(new StringReader(xml)))
823 | {
824 | reader2.ReadToFollowing("TITLE");
825 | label23.Text = reader2.ReadElementContentAsString();
826 |
827 |
828 | }
829 | }
830 | catch { MessageBox.Show("No Game/update found!", "Game Updater", MessageBoxButtons.OK, MessageBoxIcon.Information); }
831 |
832 |
833 |
834 | }
835 |
836 | WebClient webClient2;
837 | Stopwatch sw2 = new Stopwatch();
838 | string filename2;
839 | private void button4_Click(object sender, EventArgs e)
840 | {
841 | if (!Directory.Exists("update"))
842 | {
843 | Directory.CreateDirectory("update");
844 | }
845 |
846 | try
847 | {
848 | string url = listView2.SelectedItems[0].SubItems[4].Text;
849 |
850 | if (button4.Text == "Download")
851 | {
852 |
853 |
854 | filename2 = url;
855 | filename2 = filename2.Substring(84);
856 |
857 | button4.Text = "Cancel";
858 | webClient2 = new WebClient();
859 |
860 | webClient2.DownloadFileCompleted += new AsyncCompletedEventHandler(Complete);
861 | webClient2.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChan);
862 | sw2.Start();
863 | webClient2.DownloadFileAsync(new Uri(url), @"update\" + filename2);
864 | label25.Text = "Downloading: " + filename2;
865 | }
866 | else
867 | {
868 | webClient2.CancelAsync();
869 | button4.Text = "Download";
870 | }
871 | }
872 | catch { }
873 | }
874 |
875 | private void ProgressChan(object sender, DownloadProgressChangedEventArgs e)
876 | {
877 |
878 | try
879 | {
880 | double actkb = (e.TotalBytesToReceive - e.BytesReceived) / 1024;
881 | double speed = e.BytesReceived / 1024 / sw2.Elapsed.TotalSeconds;
882 | double time = actkb / speed;
883 | // Download Speed
884 | if (prozent1.Text != (Convert.ToDouble(e.BytesReceived) / 1024 / sw2.Elapsed.TotalSeconds).ToString("0"))
885 | speed2.Text = (Convert.ToDouble(e.BytesReceived) / 1024 / sw2.Elapsed.TotalSeconds).ToString("0.00") + " kb/s";
886 |
887 | // procentual output
888 | if (progressBar3.Value != e.ProgressPercentage)
889 | progressBar3.Value = e.ProgressPercentage;
890 |
891 | // procentual output
892 | if (prozent1.Text != e.ProgressPercentage.ToString() + "%")
893 | prozent1.Text = e.ProgressPercentage.ToString() + "%";
894 |
895 | // downloaded / total size
896 | downl2.Text = (Convert.ToDouble(e.BytesReceived) / 1024 / 1024).ToString("0.00") + " MB" + " / " + (Convert.ToDouble(e.TotalBytesToReceive) / 1024 / 1024).ToString("0.00") + " MB";
897 |
898 | }
899 | catch { }
900 | }
901 |
902 | private void Complete(object sender, AsyncCompletedEventArgs e)
903 | {
904 | if (e.Cancelled == true)
905 | {
906 | button4.Text = "Download";
907 | MessageBox.Show("Download cancelled!", "Game Updater", MessageBoxButtons.OK, MessageBoxIcon.Information);
908 | sw2.Reset();
909 | progressBar3.Value = 0;
910 | prozent1.Text = "";
911 | speed2.Text = "";
912 | downl2.Text = "";
913 | label25.Text = "Cancelled: " + filename2;
914 | }
915 | else
916 | {
917 | button4.Text = "Download";
918 | MessageBox.Show("Download finished!", "Game Updater", MessageBoxButtons.OK, MessageBoxIcon.Information);
919 | sw2.Reset();
920 | progressBar3.Value = 0;
921 | prozent1.Text = "";
922 | speed2.Text = "";
923 | downl2.Text = "";
924 | label25.Text = "Downloaded: " + filename2;
925 | }
926 | }
927 |
928 | private void copyPSNLinkToolStripMenuItem1_Click(object sender, EventArgs e)
929 | {
930 | Clipboard.SetText(listView2.SelectedItems[0].SubItems[4].Text);
931 | }
932 |
933 | private void copySHA1ToolStripMenuItem_Click(object sender, EventArgs e)
934 | {
935 | Clipboard.SetText(listView2.SelectedItems[0].SubItems[3].Text);
936 | }
937 |
938 | private void copySizeToolStripMenuItem_Click(object sender, EventArgs e)
939 | {
940 | Clipboard.SetText(listView2.SelectedItems[0].SubItems[2].Text);
941 | }
942 |
943 | private void copyFWToolStripMenuItem_Click(object sender, EventArgs e)
944 | {
945 | Clipboard.SetText(listView2.SelectedItems[0].SubItems[1].Text);
946 | }
947 |
948 | private void copyVersionToolStripMenuItem_Click(object sender, EventArgs e)
949 | {
950 | Clipboard.SetText(listView2.SelectedItems[0].Text);
951 | }
952 |
953 |
954 | static byte[] Decompress(byte[] gzip)
955 | {
956 | // Create a GZIP stream with decompression mode.
957 | // ... Then create a buffer and write into while reading from the GZIP stream.
958 | using (GZipStream stream = new GZipStream(new MemoryStream(gzip), CompressionMode.Decompress))
959 | {
960 | const int size = 4096;
961 | byte[] buffer = new byte[size];
962 | using (MemoryStream memory = new MemoryStream())
963 | {
964 | int count = 0;
965 | do
966 | {
967 | count = stream.Read(buffer, 0, size);
968 | if (count > 0)
969 | {
970 | memory.Write(buffer, 0, count);
971 | }
972 | }
973 | while (count > 0);
974 | return memory.ToArray();
975 | }
976 | }
977 | }
978 |
979 | private void tabControl_SelectedIndexChanged(object sender, EventArgs e)
980 | {
981 | if (tabControl.SelectedTab == tabControl.TabPages["tabMetacritic"])
982 | {
983 | WindowState = FormWindowState.Maximized;
984 | }
985 | else
986 | {
987 | WindowState = FormWindowState.Normal;
988 | }
989 |
990 | }
991 |
992 | private void button3_Click(object sender, EventArgs e)
993 | {
994 | settingswin settings = new settingswin();
995 | settings.ShowDialog();
996 | }
997 |
998 | private void button6_Click(object sender, EventArgs e)
999 | {
1000 | //here we just copy everything to the usb sellected in either settings or in the combobopx
1001 |
1002 |
1003 | }
1004 |
1005 | private void psnStuff_Load(object sender, EventArgs e)
1006 | {
1007 | //load the usb drives
1008 | var drives = DriveInfo.GetDrives();
1009 | foreach (var drive in drives)
1010 | {
1011 | if (drive.DriveType == DriveType.Removable)
1012 | {
1013 | comboBox2.Items.Add(drive.Name +"-"+ drive.VolumeLabel);
1014 | }
1015 | }
1016 | if (comboBox2.Items.Count == 0)
1017 | {
1018 | comboBox2.Text = "No Removable Drives detected";
1019 | }
1020 | }
1021 |
1022 | }
1023 | }
--------------------------------------------------------------------------------
/WindowsFormsApplication1/pkgID.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | 17, 17
122 |
123 |
124 | 181, 17
125 |
126 |
127 |
128 |
129 | AAABAAQAEBAAAAAAIABoBAAARgAAACAgAAAAACAAqBAAAK4EAAAwMAAAAAAgAKglAABWFQAAQEAAAAAA
130 | IAAoQgAA/joAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAD///8B////Af//
131 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
132 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
133 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
134 | /wE0MsdHFBTaNf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
135 | /wH///8BISLLtSQm4nf///8B////Af///wH///8BTEnLJRoayWUVFc0f////Af///wH///8B////Af//
136 | /wH///8B////AS4xybUuMN7FLzDTV05N2gs9PeQP////ATg8wkskJcyfMjTc8yss6xn///8B////Af//
137 | /wH///8B////Af///wE3OdS9PkHapUtO5O0/P9a/ODrgjWBc13lCQ9OfQULWoyos0ulEReN1LjPOJ///
138 | /wH///8B////Af///wH///8BP0PR4VZZ9FU/QdbZREbc2UZI5tlQUeTxSUrV0z9B4alZXebnRUnd0zM2
139 | 1u80NtnrOTrNiTM118srL9XBODvkKVFT3v9iZvDrUlTl90dJ1bVtcO7/YWTsvUhL1aVWWO+DPD/RxU1Q
140 | 7WU8PtHFSk3gaTs8wnU6PeCvQUTIfV1g6dVgYtNRTVDNQ0lM2ClNTtyfWl3mk4iK6ulWWd5vc3bp4UpM
141 | 3/dUVupPREfa31RX8k1CRMGFQ0XklUNDpQtHSt75////Af///wH///8BVFfcv2tt9mdKTLsT////AURK
142 | rQlGSK0XbGnSI0xP3ONaXNlTSUvQhVpd7oNhX9CBXV/s1f///wH///8B////AXN221VgY+wl////Af//
143 | /wH///8B////AWVm3adbX+/nXmDx61tb3q9hYu39W17x11Za4DX///8B////Af///wH///8B////Af//
144 | /wH///8B////Af///wH///8BQkqtA0JKrQNkZ9UvcXPqSUtQxgP///8B////Af///wH///8B////Af//
145 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
146 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
147 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAAD//wAA
148 | //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//ygA
149 | AAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAD///8B////Af///wH///8B////Af//
150 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
151 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
152 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
153 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
154 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
155 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
156 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
157 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
158 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
159 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
160 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
161 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
162 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
163 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
164 | /wH///8B////Af///wH///8B////Af///wH///8B////ATY4qjE0Mc3nFBTazf///wH///8B////Af//
165 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
166 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BNzm5aRIU1f8eIN/v////Af//
167 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
168 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wE7P7ZpGxzR/yos
169 | 5e////8B////Af///wH///8B////Af///wH///8B////Af///wFCQq0HTUnNix8fz8kUFcPFFRXNcRgY
170 | ygX///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AT9F
171 | tGklJ8v/LzHl8S8t0SczM7MZ////Af///wH///8B////Af///wH///8B////AUREqhM4PMT3KCrW/xQV
172 | zf8ZG9r/HB7X1zEx9wn///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
173 | /wH///8BODnOaSsvzv8yNN//KSvX/yos1fM7PdZR////AU5N2i09PeQ1////Af///wH///8B////AS81
174 | vCFCRK8pNzy1VUtN0/VHSev/KizqXf///wH///8B////Af///wH///8B////Af///wH///8B////Af//
175 | /wH///8B////Af///wE8P9FpMTPS/0FE3fc0NcvtWVvo/z1A5/FHR8lNP0DY+TAz2/1OTvAZQkqtA2Bb
176 | 0JM+PNehJiZ1EVBSxC0+QLRhLjK+pyMl2P84OeeV////Af///wH///8B////Af///wH///8B////Af//
177 | /wH///8B////Af///wH///8B////AUJDz481N9r/S1HspTEx1gtTVtnDREjm/0tN2bUyM9b/OTvh/2Ji
178 | /xtkYs1RXlre/zY53/9XV8jJUk/i/y4y2/8uL9j/Ki7S/zc65MVqZdx5LjLRcy83xif///8B////Af//
179 | /wH///8B////Af///wH///8B////Af///wH///8BQ0a2tTk93v9VWPel////AUJEyJk2ON3/VVXZtTc6
180 | 3P9AQuT/VlbjZXp04Os6PuL/WFve5UxM2f88P+T9NznTuXp86v1ESen/PEDh/1VY2/81N9z/LzHa+S8y
181 | 2uczM8/HMDLFa0lJsClHR8mTKyvZnScq1Z0xM7ppKSnWA////wFFScfVP0Hg/1da8q////8BTEzMzzw/
182 | 3/9VVdy1Oz/c/0NG5/9ITOj/SErk/0lL6tdDRbdlOTvW/0dI6e3///8BRkvRo1td7/9CRubXPkDFczo9
183 | x8EwM9b/QELh/y4x2P8wM9rTREXKwS4w1/8xNd7/Ky7Z/y0w3P84O+WbQkLdBUlM0/9NT+j/U1jy/UlN
184 | 3a1jYtn7SEzo/1BT1YtCQ9b/TlPv/4uO9v9QUu//S1DfM0JEtWE8P93/TE3s7f///wE9QMSJODre/0tO
185 | 78n///8BP0LPczU41f9MUOapPD+8Yzc4zh85PMnBLzLY/01S73E8PbqBRkrU+2hr7v9BRetzTE7N/2Fj
186 | 8f+Hifn/XWDx/0tO6v9SVOjjSk7TTUZI0/9VV+3/hIbl/4KF9f9RVeHBRke6MVda3v9fYPD7ZWz7IT1C
187 | v4s/QdX/T1Lryf///wFDRcSlOz7Y/1FT75v///8BMTGACTw9ves2ONz/UFX3Tf///wE8Qb1zdHfj/0RJ
188 | 6udNUMKHbm/ht0pOzFNOUM65Sk3ch0VFyR9TU+4/SUvW/1xe7/VHScWJoqTs/21x8/9iZPVZT1LOr6mq
189 | 9f9ZXO/pRkrN6UdL3/9XWe7J////AUVIz71AQuL/T1Pvm////wE3O5ANP0G9/zs+3/9FReZN////ATs7
190 | mRk+QtLrR0ro/////wH///8B////Af///wH///8B////AVdX8j9NTtn/Zmjxz////wFXWMejqKn0/1ld
191 | 6ZlISLYbW1/Np2Vn6/lMT+j/TU7n8U1R4nH///8BR0vMvUZI5v9ZWvWb////AUFEpg1FSMn/Sk3o/0lL
192 | 5An///8BUFC3EUpM1PtMT+j/////Af///wH///8B////Af///wH///8BUVLMd1RW4v9pa/TP////AUJK
193 | rQlLTL5DSkqtA////wH///8BREqtHUVHrUNJSa0V////Af///wFGSsO9TE3p/2Bj84////8BQketDUlM
194 | 2P9XWe3/fH//A////wFiYMCHbWrl/1NX7fP///8B////Af///wH///8B////Af///wFITLqLXF/w/21w
195 | +M////8B////Af///wH///8B////Af///wH///8B////Af///wFvb+4Ta2jOc0tOzs9RVOz/WFvMpTk5
196 | kxVER68NSkvL/15h8P9SUsALT0+7f2ln4/1VV+7/X2f3X////wH///8B////Af///wH///8B////AUlM
197 | vWeGiOjnYGPsjf///wH///8B////Af///wH///8B////Af///wH///8B////AVRTzJlsb/L/XWL0/1xf
198 | 8/9maPT/W1/z+2Rk4GlSU9n/ZWby/1VV1PtcXvH/Wl30/1hc5rtLS7EL////Af///wH///8B////Af//
199 | /wH///8B////AUJKrQP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BUFTMP25w
200 | 1MFYW+THWmDs11hc6OddXvLHW1vkVV9h3/9navT/YWT3/15h8uFWWud9QkKsDf///wH///8B////Af//
201 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
202 | /wH///8B////Af///wFCSq0HQkqtC////wFGT7sFZWfWuXt+7claW+NXS1DGCf///wH///8B////Af//
203 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
204 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
205 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
206 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
207 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
208 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
209 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
210 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
211 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
212 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
213 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
214 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
215 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
216 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
217 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAAAAAAAA
218 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
219 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
220 | AAAoAAAAMAAAAGAAAAABACAAAAAAAIAlAAAAAAAAAAAAAAAAAAAAAAAA////Af///wH///8B////Af//
221 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
222 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
223 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
224 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
225 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
226 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
227 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
228 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
229 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
230 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
231 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
232 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
233 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
234 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
235 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
236 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
237 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
238 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
239 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
240 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
241 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
242 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
243 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
244 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
245 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
246 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
247 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
248 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
249 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
250 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
251 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
252 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUpKrRteWMpvHhzha///
253 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
254 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
255 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BNDqKETc2
256 | v9keG9T/CAnP/ycn7Gf///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
257 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
258 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
259 | /wH///8BQkOqHyUmy/8PENP/DhDS/0JD/2f///8B////Af///wH///8B////Af///wH///8B////Af//
260 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
261 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
262 | /wH///8B////Af///wH///8BQkesHykrzP8SFNL/FhrX/0JD/mf///8B////Af///wH///8B////Af//
263 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BQkqtKUNDplkpKWof////Af//
264 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
265 | /wH///8B////Af///wH///8B////Af///wH///8BQkmtHzEzwf8YGdL/Jinh/zk582f///8B////Af//
266 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUVHtF9PStXnHRra8w8P
267 | z/8KDNDvGBjKwQoK1kU4OK0D////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
268 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BQEivHzg/t/8eINL/LjDm/ywz
269 | 4Wv///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUFD
270 | rZ8zN9D/Li/f/w4Q0f8PD9L/DxLW/xMU2f8hI82t////Af///wH///8B////Af///wH///8B////Af//
271 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BNjnQHzc6
272 | wf8iJNL/Nzno/ywr2NkpKte1LS/CtSsr1Cf///8B////Af///wH///8B////Af///wH///8B////Af//
273 | /wH///8B////ATc6sUU2PMW7Oz3Iuy0wu7snKsHpLC/b/1NX7v8eH+H1NDf6N////wH///8B////Af//
274 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
275 | /wH///8BNDTdHzc7xv8oLNb/NDfh/yss1/8oK9f/KSvX/zEy3OlCQstN////Af///wFOTdphQ0LnYyEp
276 | 1hX///8B////Af///wH///8B////Af///wH///8B////Af///wE6QLQ3MjPB6YWH6/8oKeX/KCnnq///
277 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
278 | /wH///8B////Af///wH///8BODneHzo9x/8tLtj/RUfm/y4x0/8uL9X/PkDj/z095P8+QerhRUXqIU5O
279 | zaFCQtb/KSzV/zo75KH///8B////AUJAmiNTUM6BVFDngSwsgEf///8B////AUVJrBFBRakRLy++YSst
280 | zf8hJdz/OzvswSEhxgP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
281 | /wH///8B////Af///wH///8B////Af///wH///8BPkLjHzw90/8xMtj/S0/q+UNGrWE+Pr1/U1bb95ye
282 | /P84O+H/SEnwhTw8xt8vL9b/Ki3W/1BR8qf///8B////AV5dy4tvaeH/LCzX/z4/66dCRK1FZ2LZn0ZG
283 | 0P0xM8X/MTPE1SgsyP8gI9P/ODvo4yEjyxv///8B////Af///wH///8B////Af///wH///8B////Af//
284 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BR0e4czs93P81N9v/S1Ls9f//
285 | /wH///8BNjnUgU9Q4/80Ot//Ulfzrz8/xN8wMdf/MDTc/1RU9Kf///8BU1G8OXt23t9HROD/MTTc/0dK
286 | 1vNpZcvvWFXo/y4z2v8vM9z/LS/Z/zc53v8kKdX/Nzvp/0lIy5lvauS9Ki7UvTA2zms5Qbcv////Af//
287 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BRUatjz1C
288 | 0P83O9z/VVb29f///wH///8BOTzhZT0/yP80Ntv/XFzxrz9Bx98yN9z/Nzjd/1dc9qdERLA1iIPa0WVg
289 | 5/8yON7/S1Hv/2trxf9OTNr/MDHZ/0hJ6v8zNcv/aGnq/2ht8v81OeL/O0Hn/0FCz/9BRd//LC/a/y8w
290 | 3P8xM9rxLC7b3TU1zN0tLcOTLCyma////wH///8BRUWtVz09xG0vL9xtIyXWbTIzpm0xMXsF////Af//
291 | /wH///8BSEm/jz5Cz/87Pd7/VFn09f///wH///8BSEnecT8/yf85Od7/Xl7zr0FBx982Od3/ODvf/0ZH
292 | 6/1TVN/Lbmvk/zc53f9IS+//REXdVUxM0P82O97/PEDi/1NX93kyOdEfSE3N1aut+f9BQ+z/Q0fs/zg6
293 | xOtvcuL9Q0Xc/y4x2P8tMNn/Oz/h/zA02v8wMt3/Mjfd/Tg4001PTr3XRUTf/yst1/8oKdf/KCzZ/ysv
294 | 3P8yNdPxLi7bPf///wH///8BRkrF2UFF1v9AQ+H/WV3090JC3Rf///8BSUrB1UtM4f8+QeH/XV33r0RH
295 | yN86Pt7/QUTl/09S8f9JTO7/P0Pj/0hM7f9IS+KlP0a4F0JEvP82ON3/S0vq/z8/413///8BMjXWV1pd
296 | 3f9ERun/RUjq/zg+4y89PrRRQEa3dTo8x/8vMtj/SUvp/zEz1P8uMdf/MDLZ/Tc34Ec9Psj/Ki7V/zQ4
297 | 3v8zNt//Ki7Y/yss2f8sMNr/Nzvk7UVJ7kP///8BSkzQ/0VK5v9PUOj/T1Tv/1RX8806PLF3ZWPC9V5f
298 | 7f9HSuf/WFz2iUNDvt9AQ+H/REnm/32C/f9cYO//Tk7u/09U58tCSeYLQkOwET5Bwf86O9//Tk/r/0JH
299 | 5l3///8BQEa0Vzk61f84Ot//Sk7v/0RK6S////8BOj7fLTs+yP8yNdr/TFDp7Tw+vlE8QLupNzjORTI5
300 | 3iE5O8b/LjHX/0BH6fU1Nc5LOzy9qTg5w/FOU+X/W13r/z9D6+1HUPEZSUm4/0hK5v9VWO//bnL6/01T
301 | 7/9PU+//TlLm/0hK5v9aXfX/WGD3P0lJsd9CROD/TVHr/3h89//N0f3/VFbv/1ha8tszOaUhSUmtEUNE
302 | yv1JS+b/REbo/2Zm/HX///8BQkatRzs/2Ps6PN3/SErq/2Rk/S////8BQEjiL0FEyv82Ot3/UFHt5///
303 | /wH///8B////ATc/2CM9QMb/MjXa/0dI7PP///8B////AUBAsENEScb5ubvw/0hM5f9OUvGFR0nE/2tt
304 | 8P9gYvH/h4f3/5WX/P9VW+//Sk7q/09Q7P9QUtu/////AUhKwd9ISeb/UVPp/1NU4P99f+P/uLv8/1NX
305 | 7/9SVtvVPD6hCURGw59qcOn/bm/z/11g87lKUu8NOkOdV0NExP8+QOD/S03o/3B1/y////8BQEO0nUJE
306 | zv87Pt7/UVPw5////wH///8B////ATMzlpFAQMr/Nznc/0BE5/P///8B////Af///wE8P7iFW17W/1NW
307 | 7v9ITe3/Rki+lXFz2P9naOfnTU7SW0xSyMdQUdb/S0/lyUhI0YVCQq0d////AUtLzN9JS+b/Vljs/1lc
308 | 5cFGScPTrK7t/5uc+f9XXfL/Xl/1XUJIt0VXWtbvxsf8/2Nk8v9VWe3NP0KzzUZKxP9ESOX/UFHp/3t9
309 | /y////8BQ0i9nUNF3/89QeL/TlPv5////wH///8B////ATk6npFBQsn/OT3d/z9B4/P///8B////Af//
310 | /wE6Opg1P0TD8Tw/5P9OUez/QkmsB0VIuy9CQq0f////AUJCrAlCRK0vQkqtCf///wH///8B////AVBQ
311 | 0d9MUOf/XV7x/3Z5+EtCSa8ZVVbP18vL9f92evT/Zmj52////wFFRsGTcHHW/6+w/P9aXPP/T1Ls/01Q
312 | 7f9NTuv/Ulbw/2Fk+C////8BRkm/nUhJ5/9EReX/Ulbz5////wH///8B////AT9ErJFFR8v/P0Hg/0ZH
313 | 5cn///8B////Af///wFISK0NQkPT1T0/4f9PUe3/////Af///wH///8B////Af///wH///8B////Af//
314 | /wH///8B////AU1Nzt9RUe3/XmDt/4yP/zf///8BRES8XWdpzvu1tfr/VFjj4////wFKSq0FSUrMQU5S
315 | yu9ZW+X7Tk/o/0pN5P9MTOThR0jLZUpS7wP///8BREq3nUhK4v9GSOX/W1v25////wH///8B////AUNH
316 | uZFFSNX/QkXj/2Fl9oP///8B////Af///wFSUrodT1LF/0FG5P9WWOz/////Af///wH///8B////Af//
317 | /wH///8B////Af///wH///8BOzuTMVRVz/NTVu7/ZGXy/4yM/zf///8B////AUhNwkdLS7djSkqtB///
318 | /wH///8B////Af///wFESq1BR0qtY0VGrWH///8B////Af///wH///8BREi0nUxO4f9MTen/X2Ly5///
319 | /wH///8B////AUVJu5FMTur/SEnm/3N3+4P///8B////Af///wFbWreZg33f/0hL5v9aXPL/////Af//
320 | /wH///8B////Af///wH///8B////Af///wH///8BQkeqUVtd5/9ZWu7/YWbz/4mJ/zf///8B////Af//
321 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BQkixnUtO
322 | 3f9PUOz/YWbpt////wH///8B////AUNIs5FLTN//Skzn/3x8+4P///8B////AUZGq210ctf9bWnu/0pP
323 | 6P9gZvWN////Af///wH///8B////Af///wH///8B////Af///wH///8BQkmsUU9Tzv9dYPP/bHD5/3l5
324 | /zf///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BQkKtBWtp
325 | yIVta9ujTlHQxU9S4/9SVez/WlzP8Tg4jCU5OZQv////AURHr5FNTdf/TlHr/3+D+4NCQq0TR0m1iWlm
326 | 3fliYOr/T1Hr/19k+N1gafkT////Af///wH///8B////Af///wH///8B////Af///wH///8BQkatSVNX
327 | 0P23t/r/ZWn24WNj9xv///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
328 | /wH///8BW1jMZV9d3O1dYvT/XWP2/2Bj9/9bXfH/bG71/1ld8/taXPD7XV3SiVNT0ZFSUtr/U1Xu/2Nj
329 | y/tfXd35Y2H0/1RZ7v9ZW/L/XmL1+1FV0W3///8B////Af///wH///8B////Af///wH///8B////Af//
330 | /wH///8B////AVJSzU9TWtJhUFDJRf///wH///8B////Af///wH///8B////Af///wH///8B////Af//
331 | /wH///8B////Af///wH///8BTk7NaWpt1v+Qk/v/XGHx/1td8f9dYfT/Y2X1/1xg9P9eYPT/a2v4jVtb
332 | 5pFQUtr/V1nt/25v9/9YW/H/W13z/15j+P9dYvbjSE7Cb////wH///8B////Af///wH///8B////Af//
333 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
334 | /wH///8B////Af///wH///8B////Af///wH///8BSkqtD0hOvWVTVMWrTlPMq15j86tYXuXRWFzk11td
335 | 6clcXPCrVFTSX1pc5pFqat//bG/z/2Vn+f9kaPr/XGDs51ZZ46tQVuch////Af///wH///8B////Af//
336 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
337 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
338 | /wFCSq0NQUmsD0JKrQv///8B////AUxRyF92d+b/mZv8/2Fk9cdUVdd7S1DGFf///wH///8B////Af//
339 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
340 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
341 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wFHSq1NQkSsR////wH///8B////Af//
342 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
343 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
344 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
345 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
346 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
347 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
348 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
349 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
350 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
351 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
352 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
353 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
354 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
355 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
356 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
357 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
358 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
359 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
360 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
361 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
362 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
363 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
364 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
365 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
366 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
367 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
368 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
369 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
370 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
371 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
372 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
373 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
374 | /wH///8B////Af///wH///8BAAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA
375 | AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA
376 | //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA
377 | AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA
378 | //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA
379 | AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA
380 | //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//KAAAAEAAAACAAAAAAQAgAAAA
381 | AAAAQgAAAAAAAAAAAAAAAAAAAAAAAP///wH///8B////Af///wH///8B////Af///wH///8B////Af//
382 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
383 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
384 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
385 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
386 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
387 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
388 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
389 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
390 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
391 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
392 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
393 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
394 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
395 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
396 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
397 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
398 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
399 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
400 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
401 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
402 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
403 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
404 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
405 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
406 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
407 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
408 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
409 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
410 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
411 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
412 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
413 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
414 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
415 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
416 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
417 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
418 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
419 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
420 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
421 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
422 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
423 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
424 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
425 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
426 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
427 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
428 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
429 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
430 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
431 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
432 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
433 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
434 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
435 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
436 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
437 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
438 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
439 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
440 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
441 | /wH///8B////AUlJxRVHR7OzUEja5xkZ3OcJC9Rz////Af///wH///8B////Af///wH///8B////Af//
442 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
443 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
444 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
445 | /wH///8B////Af///wH///8B////Af///wE0NqerMC/M/xEP1f8HCM7/IiLo3////wH///8B////Af//
446 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
447 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
448 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
449 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BNTW30xcX2v8ODtL/Cg3Q/zEx
450 | 8d////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
451 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
452 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
453 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////ATg9
454 | u9MXGtj/DRDR/w8S0f8xNfDf////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
455 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
456 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
457 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
458 | /wH///8B////Af///wE4O7rTHx/X/xQW0v8YHNb/ODj23////wH///8B////Af///wH///8B////Af//
459 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BQkqtH1JL
460 | zjc9O9RdMzW3yy4uoMsQELpJLi7AMf///wH///8B////Af///wH///8B////Af///wH///8B////Af//
461 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
462 | /wH///8B////Af///wH///8B////Af///wH///8BPUOz0yMjzP8YGNH/IiXc/zg58t////8B////Af//
463 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
464 | /wH///8BQkKtG0hKutdRSOD/Gxjb/wkJ0/8JDNH/CgvU/xYWyfMMDNafFBTOEzk5rQP///8B////Af//
465 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
466 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUJIrdMpL8f/Hh7R/ycq
467 | 4P8zOe3f////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
468 | /wH///8B////Af///wH///8B////AUVFrStBRq3/KCrb/zIy3v8PEND/DRDR/w4O0v8OD9T/DhLW/x8g
469 | 1v8eH8N/////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
470 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
471 | /wE8Q7vTLC/E/yEi0f8uL+L/NDTm6zQxzFUpKdZHMDC/Rzk5lB3///8B////Af///wH///8B////Af//
472 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wFDQ6YfLjC64UhOz/9CR+H/HR/K/x0e
473 | xf8XGM3/FxjX/zAx5/8SFtb/IyPm3TEx9x3///8B////Af///wH///8B////Af///wH///8B////Af//
474 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
475 | /wH///8B////Af///wH///8BNzjO0zAxx/8kKNT/NDbi/zM24/8sK9j/JynW/ycr0P8sLNLNODjIG0JC
476 | rQX///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUJK
477 | rS8kKcVRQkKuUUJGr1FCRa1RMTa62y8xyf+Bh/v/XmLw/x4h4P8xNfV3////Af///wH///8B////Af//
478 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
479 | /wH///8B////Af///wH///8B////Af///wH///8B////ATg7z9MxN8f/KSzW/y8z3P8xMt7/KizW/ykr
480 | 2P8pLNb/LS3a/zo92v9CQs4p////Af///wExMd4rWFbZg05K7IMhKdZR////Af///wH///8B////Af//
481 | /wH///8B////Af///wH///8B////Af///wH///8B////AUJKrSUwMrrZRkjM/4CA/P8hId7/KCjl/f//
482 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
483 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wE7Pc/TMzbJ/ysu
484 | 1/89P+H/PD7h/ywu1v8sLdf/NTfd/zo74/8yNN//QEXsyUJC5x1CQqUrTlDQ5UlI3f8pK9X/LzHb9zo6
485 | 4zH///8B////Af///wE5OZY9VlLaV2Zg8Vc4OLFPAAAAEf///wH///8B////Af///wH///8BLS2+Ky0w
486 | wf8tLeD/HSLa/zs77f3///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
487 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
488 | /wH///8BPEDT0zY3z/8xM9n/QUTj/0pOz+E+QrnVOjvE5UpN4v+sr/7/RUfr/0BB6P9MTPJtRkarfzs7
489 | 3f8tLtb/Ky/W/z5A5f9gYP01////Af///wFCSq0NYlvPvWxn2/89O97/MTHR4SwslB9CQq0RT02/K1FU
490 | xYtBQbbBO0CywTc5tHEsMcD/IiXS/x4i1f8+QO3/ISHGV////wH///8B////Af///wH///8B////Af//
491 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
492 | /wH///8B////Af///wH///8B////AUBC4tM1Ntf/MTPY/0JH5/9ra/9J////ATEx1ik7Pszfhons/2lp
493 | 8/80Od//R0rx60JCrX8yMtX/Ly/X/ykr1v9CROj/YmL/Nf///wH///8BaGbcR2xpz/9fWev/KSzW/zs8
494 | 6P9KTvdtQkWsvXdw2v9UUe3/KizV/ygp1v8nKNT/Li7U/y0yvf8hJNT/Oz3u/yEp1lX///8B////Af//
495 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
496 | /wH///8B////Af///wH///8B////Af///wH///8B////AUpKrWlBQs3/ODrd/zY42/9CSuf/a3L/Sf//
497 | /wH///8BNDjdMzs90v9AROj/Mjne/1RY8+tJSa1/NzfW/zAy1/8wNt3/SEnq/2Ji/zX///8BSkqtL2ln
498 | z8l7deb/MzPa/y8y2v9HSeb/TE++/Xlw1P9TUOr/KSvW/zc/5P8vMtz/LzLb/zI03f82N+P/JSnV/zxB
499 | 7v80NNK/aGTL5Wtm6/0nK9j9NjrIzycv0mdCSq0v////Af///wH///8B////Af///wH///8B////Af//
500 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFFRa1pQUa7/zo9
501 | 3/82Otv/T1Dy/2Rl/0n///8B////ATY74DE/QcL/NTne/zM12v9bW/HrRUWtfzc62v8yN9z/MjTZ/01P
502 | 7v9iaf81RESwJ2dmxa2Yjej/QUHh/y812/9ITfL/hYfe/09Quv9WUuf/LzHZ/0JD6P8+QOD/LjLR/1BR
503 | 6f99gff/PUHo/zE23v8+ROv/OTrc/01Py/89Qd//KizY/y4w3P8vMdv/MDLX5Sks2dEuLtLRPDy6zSYm
504 | r1MrK7k7MTFrE////wH///8BQ0OtLUpKrTsxMd07Ly/cOyMk1jssMMo7MjKGK////wH///8B////Af//
505 | /wH///8BSkqvaUFFuf88QeH/OT3e/1Za+f9XXPhJ////Af///wFHR+cxSEjE/zc53v85Od7/Xl7z60lJ
506 | rX8+P97/Mznd/zg53f9JSu3/SUvtl2Je3KWJhOP/WVbp/zI12v9GS/D/RUnuv0dJt9dZWOj/Mjfd/zI4
507 | 3f9OUfH3PT3CWzc5x4dOUMv7zc78/2Nm8v9ARuz/REnu/zQ4z/89P8z/jpH2/01Q5f8wMdn/LS7Z/zAz
508 | 3f8zNd3/Mjbe/zU14P8uLtv/MDPS/zU1vFtSUrwJSUivl1NR1Oc7Psz/KirY/yoq2P8kJ9b/Ki7X/yot
509 | weU6Pb6TKSnWB////wH///8B////AUpK3WlDSMH/PDze/z0/3v9cXfT/QkbnSf///wH///8BQEW2d0RF
510 | yf85Pd7/OTne/15e8+tCQq1/OT3Z/zg63f80Odz/QULn/0dK7P9HS9j/aWXs/zQ52f9CRer/S07o/0JG
511 | 1xNCQrPBPkHV/zE12v87PN//UVP18f///wH///8BLTXRb15k3f+Qk/z/PD/n/0hM7/81OtDNOTrApUJE
512 | yv89Qcf/KzLU/y8z2/8sLtf/QETl/zo93v8pLtb/MTLa/y4z2v8xMtnnTk7UgUxLxP85ON3/JinU/ysu
513 | 2f8sL9n/Ky/a/ykt2v8sMN7/LzPg/zMz4bk5OecJ////Af///wFDRrftRkvU/0FF4/9BQ+L/XWD2/0pP
514 | 6nX///8B////AUZJt8deWur/PELe/0JD4/9cXPjrSUmtf0FG3v86Pt7/PkDi/1dd+f9ITOv/S07w/0BD
515 | 5P9CR+f/UFP190JE1mc5Qr0DQ0m4wT8/yv84ON3/Q0Pk/1BQ7sX///8B////ATM01B87PsT/YGH1/z4/
516 | 4/9MTu7/OkDlk0JCrQk8PbYfQkqtH0RFvOk2N8z/MDTZ/0ZI6f9AQtj/MDTb/y4x1v8xMtr/MjbZZTs7
517 | 4IE9Pr7/Ki/V/zAw1v88Qej/MTXd/ysu2P8tMNn/KyzY/ywy2f8zOOD/REjvr0JC3RX///8BSUrH/0lP
518 | 6/9CReH/UlPq/05V8P9WWfT1TE3qYywtfVdfXcDvc27h/z9F5P9ITOn/VVn12URErX9DQ9j/P0Lg/zs/
519 | 3/9gZf7/f4P4/0hM6v9MTO3/UVby/0lR6X3///8B////AUFEtME7Pc//OTne/0RF5f9RV+7F////Af//
520 | /wE/RbYfPUDF/zg53f84Ot//TVHx/0JI55P///8B////Af///wE+P87lNjrO/zE02f9GSub/VFrYcTs7
521 | wKc8QbrhNjjOYTk5zhkzOd6BOz2+/y4x1v8rMdf/Uln4uTY2ym06PL3hPDy77zI11P9LUe7/S07p/zs/
522 | 5/9DSO+n////AUlJuP9JTOH/Rkfk/1lb8P9ZXvT/TlTw/1JY9f9JTeD/UVXT/2pp7/9CReT/WFry/2Zu
523 | /1VGRq1/REbC/0FD3/89RuL/YWX8/9PV/v+Rlfn/SUvs/1pb8P9OTtBR////Af///wFERLfBO0De/0JE
524 | 5/9EROf/WFj38f///wH///8BQkqtGzxAyO85Pd7/OTre/0dH7P9XW/eT////Af///wH///8BQEbQ5Tk8
525 | 0P81Ntv/SUro/2tu/zf///8B////Af///wH///8BNT3egT0+vv8xMdj/MTXa/1hc/Zv///8B////AUJC
526 | rTc7PbvtX2TT/9DS//9LTun/PkLo60pK7zlHR6//Skrd/0pN5/9bXfL/hYf+/4WJ+f9RU+v/TVHu/0pP
527 | 7P9JSuf/T1Pu/1xe9+dMVPA3Skq/f0ZIwf9CRuP/REfj/2Rm+P9rb+b/3eH9/3x+9/9MUe3/V1zx6TEx
528 | oTv///8BR0e9i0FDyP9fYvj/SUvq/15g9PH///8B////AUJFrRs+Q8jxQEDU/zw83v86Pt7/amr/k///
529 | /wH///8BOUKcLUNGzu88PdD/OD3e/0tM6v9ra/83////Af///wH///8BMTF7CTY7xK8/QL//NDfb/zU3
530 | 2/9WWP2b////Af///wH///8BQEavNzg/yeORk9r/j5L1/zs/4/9RWvafR0rB/1pc5/+Fh/n/WVzw/3Fy
531 | 9v+hovj/gYP8/1Ra8P9KTun/TlDt/1BR6f9NTcij////AUtQ239JScP/SEnm/0hI5P9mZ/X/SUrP/3+A
532 | 4//Z2v//Z2vy/1RY8f9RVc/hPD6hD0ZIuCtDRcf/en/w/4aH+P9OUOn7Zm38f0pS7wc4QJgfPUG9/0RF
533 | xf8+Qd//QEHi/3J4/5P///8B////AT9CpH1HR9H/PUHU/zw+3v9NUO7/ZGv/N////wH///8B////ATAw
534 | gRk4OLP/QkLB/zg53f83Odz/S1Hxm////wH///8B////Af///wE/QbOzRUfI/2pv9v87PuP/TlLx/0ZJ
535 | vqVXWMr/pKX4/1xe8P1PT913R07C01RYzv1TVez/S1Ho/UpK1flGRs1nQkKtEf///wFSUup/R0fF/0pK
536 | 5/9KS+f/aWv1/0hJxaVHSsn/s7bk/8XH/f9ZXPD/XWX3/1ZX8W1CSq0RQke8vWZn4v/V1f7/c3b4/1la
537 | 8f9PVOOlOzycpT1Drf9FScX/Q0bk/0JC4v97fv+T////Af///wFCRq19REjc/0BC3f89QuL/S0/s/2Jm
538 | /zf///8B////Af///wE1NYgZOzu1/0BCwf85Pt7/OTze/0lJ6Zv///8B////Af///wH///8BOjqXWUBE
539 | tv9BRuf/Ojvg/1Zb8f////8BREq2e0REuJNCQq1N////Af///wFCQqxRQkStk0JKrSH///8B////Af//
540 | /wH///8BVVXyf0hKxf9KT+f/TU3q/3J499VKSucfQkmwYUxO1P/Gx/r/sLH9/01T6v9rbPzNa2v/G///
541 | /wFDRsf9iYng/9TU/v9lZfL/VFjy/09T7v9OT+z/TFDs/0dL5/9HS+f/dHT/k////wH///8BQkatfUlK
542 | 4/9CQuT/QEPk/0xR7f9aX/s3////Af///wH///8BOEKXGT9DvP9DRMH/PUHe/z4+4f9BQeOb////Af//
543 | /wH///8B////AURErQs+QsutOTrd/zg84P9WVvH/////Af///wH///8B////Af///wH///8B////Af//
544 | /wH///8B////Af///wH///8B////AVhY9X9KTMb/T1Hp/1BS7f+Iif6d////AUJCrQNKSs2LcnLT/+Hi
545 | +P+Jivn/XWDz/3B3/T////8BSEi2Z01Qzs93e93/lZX6/11h+P9PU+z/S03p/05P7P9RUe7/T1Ll/1FX
546 | 8m////8B////AUJIrX1MTeL/RUjm/0ZG5f9WWfX/U1j1N////wH///8B////AUBCoBlFSMb/RUfE/0FC
547 | 4P9LT+r/REXgH////wH///8B////Af///wFHR60ZR0jE70NF5v8+QOD/WFrx/////wH///8B////Af//
548 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wFXV+9/SUnI/1JS7f9RUuf/iY39nf//
549 | /wH///8BQUGsJ0VGu92Fh+X/sLD4/1JV4u1KU8g7////Af///wFKSs4VQ0m2t01P1e1UVeP9TU7m/0pR
550 | 5P9JSuT5S0ve0UVFxFf///8B////Af///wFCSq19SErU/0lK5/9FSOX/Xl73/1FR7jf///8B////Af//
551 | /wFCR60ZRkjK/0NI0f9CR+X/WVvv/2tu/AX///8B////Af///wH///8BVlW9J1BUu/9NUOn/O0De/15h
552 | 8f////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wE5OYwLVVXTvU5Q
553 | yP9TVu//Wlrv/4mJ/p3///8B////Af///wFCSq0lTE7Pg0lJrYNKSq0L////Af///wH///8B////Af//
554 | /wH///8BREqtc0lJrYNCRa2DSUmtVf///wH///8B////Af///wH///8BQkatfUxO0v9LTOn/TE7p/2Nm
555 | 9f9NTec3////Af///wH///8BQkatGUpMzv9LTOn/Rkrn/2Vo9P97f/8F////Af///wH///8B////AU9O
556 | rLOQiNr/UlXo/0dK5/9fYfb/////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
557 | /wH///8BQUOkFVFTzf9VWOH/WFnv/1JX7/+Jif6d////Af///wH///8B////Af///wH///8B////Af//
558 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUJJ
559 | rX1FSsn/TE/p/01N6v9lafbhS1LnJf///wH///8B////AUJJrRlGTMT/Skvm/0pK5/9nZ/T/fX7/Bf//
560 | /wH///8B////AUtMrHF6dtf3iYHq/0pL5v9LUeb/XWL00f///wH///8B////Af///wH///8B////Af//
561 | /wH///8B////Af///wH///8B////AUJKrRVQVMr/XmDy/1lb7/9cYfL/g4P+nf///wH///8B////Af//
562 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
563 | /wH///8BNjaJH0JCrQ1CRa19SUzL/1FS6/9QU+3/Y2jh5Tk5oSf///8B////Af///wFCRa0ZRUez/01O
564 | 5v9LT+j/b3D2/4iJ/wX///8BQkKtA0JCoWleXtD3enfg/19e7/9KTun/XmX132ty/x3///8B////Af//
565 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wFCSq0VQkat/1lf6/9eYfP/am/3/3Z3
566 | /53///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
567 | /wH///8B////Af///wH///8Bb2/uS3Ftw+1ubOizU1XcxU1P1/9SVe3/UlXq/2Jk3P86PJaJOTmUBTg4
568 | lE////8BRkqxGURFr/9QUOT/UFLt/21y9P+IjP8FQkKtH0NHrpNbWc3/dXHz/1ZV6v9MTun/XmL3/19m
569 | +oH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BQkatFUpP
570 | v/95fOX/trb+/2hs+v9jZPdl////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
571 | /wH///8B////Af///wH///8B////Af///wH///8BS0quO2Bc1rVoZe3/W1/z/1ti9v9hZfj/XV/0/1lb
572 | 8P9ydPf/WVnt/Vlg9vVZWe37VlbDtVRU1hlPT8H/VVXp/1JT7v94evf/QD+d9V5c1vdrZ/b/WF3x/1JT
573 | 6/9YW/H/YWP5/1dc491LS7En////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
574 | /wH///8B////AUJCrAVISLyBYWPRz3+E6c1XWNbLSkzAB////wH///8B////Af///wH///8B////Af//
575 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AURErntWVtr/fH7w/3N5
576 | +f9bY/H/W17y/1xh9P9gYPX/b3H5/15h9f9aYfX/YGH1/3R0+7thYfMZUlLP/1NU6f9XV+7/dHX2/11d
577 | 6/9aWvD/V1ju/1Vb8P9eZPr/YGP5/1JX1+VKUdYt////Af///wH///8B////Af///wH///8B////Af//
578 | /wH///8B////Af///wH///8B////Af///wH///8B////AUJKrQVCSq0F////Af///wH///8B////Af//
579 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
580 | /wFQUMcDUFTM+YOE2f2Cg/n/XWLx/19f8/9bYvD/XWHz/11e8/9bYfL/X1/z/1td8v9hYfS7Y2P2GVRU
581 | 0f9WW+n/WVrv/2xv+P9bXfH/XWP3/2Fh9/9iZfn/XGD3/Vdb7ZFCQqwv////Af///wH///8B////Af//
582 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
583 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
584 | /wH///8B////Af///wH///8B////Af///wFESqx3SUqtj0JGrY9aX+qPWWDqn1dc4cFYXeO5UVbW6WJi
585 | 9o9aWu+PTU3AaV9j9hlSVNH/f3/y/3p89f9fZfX/aWr9/2Rn+P9XXOP5XmP3j0ZHumf///8B////Af//
586 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
587 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
588 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUJJ
589 | rQdCSq0RQkmtD0JKrR////8B////Af///wFGT7sTT1PR3Y2P7/+7vv7/Y2X3/2Nk971OUMubS1DGJf//
590 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
591 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
592 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
593 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AVpa3itNUbzbWFnM0V1j
594 | 8lNaY+8D////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
595 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
596 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
597 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
598 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
599 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
600 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
601 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
602 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
603 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
604 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
605 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
606 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
607 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
608 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
609 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
610 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
611 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
612 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
613 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
614 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
615 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
616 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
617 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
618 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
619 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
620 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
621 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
622 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
623 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
624 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
625 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
626 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
627 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
628 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
629 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
630 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
631 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
632 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
633 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
634 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
635 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
636 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
637 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
638 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
639 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
640 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
641 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
642 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
643 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
644 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
645 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
646 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
647 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
648 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
649 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
650 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
651 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
652 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
653 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
654 | /wH///8B////Af///wH///8B////Af///wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
655 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
656 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
657 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
658 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
659 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
660 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
661 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
662 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
663 |
664 |
665 |
--------------------------------------------------------------------------------