Initial commit

This commit is contained in:
Ray 2022-11-06 01:07:42 +00:00
commit 477056c521
17 changed files with 1603 additions and 0 deletions

5
.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
/.vs
/bin
/obj
/*.user
/Properties/PublishProfiles/*.user

72
AppResource.Designer.cs generated Normal file
View File

@ -0,0 +1,72 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WebsiteSSLCertificateChecker {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class AppResource {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal AppResource() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WebsiteSSLCertificateChecker.AppResource", typeof(AppResource).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Looks up a localized string similar to https://www.hiimray.co.uk/software-random-file-runner.
/// </summary>
internal static string AppHelpURL {
get {
return ResourceManager.GetString("AppHelpURL", resourceCulture);
}
}
}
}

123
AppResource.resx Normal file
View File

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="AppHelpURL" xml:space="preserve">
<value>https://www.hiimray.co.uk/software-random-file-runner</value>
</data>
</root>

357
MainForm.Designer.cs generated Normal file
View File

@ -0,0 +1,357 @@

namespace WebsiteSSLCertificateChecker
{
partial class MainForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
this.label9 = new System.Windows.Forms.Label();
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.newToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem15 = new System.Windows.Forms.ToolStripSeparator();
this.exitToolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem();
this.toolsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.optionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.helpToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.viewHelpToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem16 = new System.Windows.Forms.ToolStripSeparator();
this.aboutToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.label1 = new System.Windows.Forms.Label();
this.button1 = new RyzStudio.Windows.ThemedForms.TButton();
this.tHorizontalSeparator2 = new RyzStudio.Windows.Forms.THorizontalSeparator();
this.memoBox1 = new RyzStudio.Windows.ThemedForms.ButtonMemoBox.TClearableMemoBox();
this.button5 = new RyzStudio.Windows.ThemedForms.TButton();
this.memoBox2 = new RyzStudio.Windows.ThemedForms.ButtonMemoBox.TClearableMemoBox();
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.menuStrip1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
this.SuspendLayout();
//
// pictureBox1
//
this.pictureBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.pictureBox1.ErrorImage = null;
this.pictureBox1.InitialImage = null;
this.pictureBox1.Location = new System.Drawing.Point(13, 705);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(40, 37);
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
this.pictureBox1.TabIndex = 15;
this.pictureBox1.TabStop = false;
//
// label9
//
this.label9.Location = new System.Drawing.Point(10, 9);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(101, 17);
this.label9.TabIndex = 27;
this.label9.Text = "URL Address List";
this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// menuStrip1
//
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.fileToolStripMenuItem,
this.toolsToolStripMenuItem,
this.helpToolStripMenuItem1});
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Size = new System.Drawing.Size(464, 24);
this.menuStrip1.TabIndex = 32;
//
// fileToolStripMenuItem
//
this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.newToolStripMenuItem,
this.toolStripMenuItem15,
this.exitToolStripMenuItem2});
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
this.fileToolStripMenuItem.Text = "&File";
//
// newToolStripMenuItem
//
this.newToolStripMenuItem.Name = "newToolStripMenuItem";
this.newToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N)));
this.newToolStripMenuItem.Size = new System.Drawing.Size(141, 22);
this.newToolStripMenuItem.Text = "&New";
this.newToolStripMenuItem.Click += new System.EventHandler(this.newToolStripMenuItem_Click);
//
// toolStripMenuItem15
//
this.toolStripMenuItem15.Name = "toolStripMenuItem15";
this.toolStripMenuItem15.Size = new System.Drawing.Size(138, 6);
//
// exitToolStripMenuItem2
//
this.exitToolStripMenuItem2.Name = "exitToolStripMenuItem2";
this.exitToolStripMenuItem2.Size = new System.Drawing.Size(141, 22);
this.exitToolStripMenuItem2.Text = "E&xit";
this.exitToolStripMenuItem2.Click += new System.EventHandler(this.exitToolStripMenuItem2_Click);
//
// toolsToolStripMenuItem
//
this.toolsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.optionsToolStripMenuItem});
this.toolsToolStripMenuItem.Name = "toolsToolStripMenuItem";
this.toolsToolStripMenuItem.Size = new System.Drawing.Size(46, 20);
this.toolsToolStripMenuItem.Text = "&Tools";
//
// optionsToolStripMenuItem
//
this.optionsToolStripMenuItem.Enabled = false;
this.optionsToolStripMenuItem.Name = "optionsToolStripMenuItem";
this.optionsToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.F12)));
this.optionsToolStripMenuItem.Size = new System.Drawing.Size(168, 22);
this.optionsToolStripMenuItem.Text = "&Options";
this.optionsToolStripMenuItem.Click += new System.EventHandler(this.optionsToolStripMenuItem_Click);
//
// helpToolStripMenuItem1
//
this.helpToolStripMenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.viewHelpToolStripMenuItem1,
this.toolStripMenuItem16,
this.aboutToolStripMenuItem1});
this.helpToolStripMenuItem1.Name = "helpToolStripMenuItem1";
this.helpToolStripMenuItem1.Size = new System.Drawing.Size(44, 20);
this.helpToolStripMenuItem1.Text = "&Help";
//
// viewHelpToolStripMenuItem1
//
this.viewHelpToolStripMenuItem1.Name = "viewHelpToolStripMenuItem1";
this.viewHelpToolStripMenuItem1.ShortcutKeys = System.Windows.Forms.Keys.F1;
this.viewHelpToolStripMenuItem1.Size = new System.Drawing.Size(146, 22);
this.viewHelpToolStripMenuItem1.Text = "&View Help";
this.viewHelpToolStripMenuItem1.Click += new System.EventHandler(this.viewHelpToolStripMenuItem1_Click);
//
// toolStripMenuItem16
//
this.toolStripMenuItem16.Name = "toolStripMenuItem16";
this.toolStripMenuItem16.Size = new System.Drawing.Size(143, 6);
//
// aboutToolStripMenuItem1
//
this.aboutToolStripMenuItem1.Name = "aboutToolStripMenuItem1";
this.aboutToolStripMenuItem1.Size = new System.Drawing.Size(146, 22);
this.aboutToolStripMenuItem1.Text = "&About";
this.aboutToolStripMenuItem1.Click += new System.EventHandler(this.aboutToolStripMenuItem1_Click);
//
// label1
//
this.label1.Location = new System.Drawing.Point(10, 10);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(181, 17);
this.label1.TabIndex = 40;
this.label1.Text = "SSL Certificate Results";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// button1
//
this.button1.AcceptButton = null;
this.button1.ActiveImage = null;
this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.button1.BackColor = System.Drawing.Color.Transparent;
this.button1.HoverImage = null;
this.button1.IdleImage = null;
this.button1.LabelText = "&Close";
this.button1.Location = new System.Drawing.Point(296, 705);
this.button1.Margin = new System.Windows.Forms.Padding(10, 0, 0, 10);
this.button1.Name = "button1";
this.button1.Padding = new System.Windows.Forms.Padding(4, 4, 3, 3);
this.button1.Size = new System.Drawing.Size(149, 37);
this.button1.TabIndex = 6;
this.button1.TabStop = false;
this.button1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.button1_MouseClick);
//
// tHorizontalSeparator2
//
this.tHorizontalSeparator2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tHorizontalSeparator2.AutoScrollMargin = new System.Drawing.Size(0, 0);
this.tHorizontalSeparator2.AutoScrollMinSize = new System.Drawing.Size(0, 0);
this.tHorizontalSeparator2.BackColor = System.Drawing.Color.Transparent;
this.tHorizontalSeparator2.Location = new System.Drawing.Point(8, 673);
this.tHorizontalSeparator2.Margin = new System.Windows.Forms.Padding(0, 10, 0, 10);
this.tHorizontalSeparator2.MaximumSize = new System.Drawing.Size(5760, 22);
this.tHorizontalSeparator2.MinimumSize = new System.Drawing.Size(0, 22);
this.tHorizontalSeparator2.Name = "tHorizontalSeparator2";
this.tHorizontalSeparator2.Size = new System.Drawing.Size(448, 22);
this.tHorizontalSeparator2.TabIndex = 42;
this.tHorizontalSeparator2.TabStop = false;
//
// memoBox1
//
this.memoBox1.AcceptButton = null;
this.memoBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.memoBox1.AutoScroll = true;
this.memoBox1.BackColor = System.Drawing.Color.Transparent;
this.memoBox1.ClearedValue = "";
this.memoBox1.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
this.memoBox1.HighlightImage = ((System.Drawing.Image)(resources.GetObject("memoBox1.HighlightImage")));
this.memoBox1.Lines = new string[0];
this.memoBox1.Location = new System.Drawing.Point(10, 33);
this.memoBox1.Margin = new System.Windows.Forms.Padding(10, 10, 10, 0);
this.memoBox1.Name = "memoBox1";
this.memoBox1.NormalImage = ((System.Drawing.Image)(resources.GetObject("memoBox1.NormalImage")));
this.memoBox1.Padding = new System.Windows.Forms.Padding(4, 4, 3, 3);
this.memoBox1.ReadOnly = true;
this.memoBox1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
this.memoBox1.Size = new System.Drawing.Size(432, 399);
this.memoBox1.TabIndex = 4;
this.memoBox1.TabStop = false;
this.memoBox1.WordWrap = false;
this.memoBox1.OnButtonClick += new System.EventHandler(this.memoBox1_OnButtonClick);
//
// button5
//
this.button5.AcceptButton = null;
this.button5.ActiveImage = null;
this.button5.BackColor = System.Drawing.Color.Transparent;
this.button5.HoverImage = null;
this.button5.IdleImage = null;
this.button5.LabelText = "&Run";
this.button5.Location = new System.Drawing.Point(127, 705);
this.button5.Margin = new System.Windows.Forms.Padding(10, 0, 0, 10);
this.button5.Name = "button5";
this.button5.Padding = new System.Windows.Forms.Padding(4, 4, 3, 3);
this.button5.Size = new System.Drawing.Size(149, 37);
this.button5.TabIndex = 5;
this.button5.TabStop = false;
this.button5.MouseClick += new System.Windows.Forms.MouseEventHandler(this.button5_MouseClick);
//
// memoBox2
//
this.memoBox2.AcceptButton = null;
this.memoBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.memoBox2.AutoScroll = true;
this.memoBox2.BackColor = System.Drawing.Color.Transparent;
this.memoBox2.ClearedValue = "";
this.memoBox2.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
this.memoBox2.HighlightImage = ((System.Drawing.Image)(resources.GetObject("memoBox2.HighlightImage")));
this.memoBox2.Lines = new string[0];
this.memoBox2.Location = new System.Drawing.Point(10, 32);
this.memoBox2.Margin = new System.Windows.Forms.Padding(10, 10, 10, 0);
this.memoBox2.Name = "memoBox2";
this.memoBox2.NormalImage = ((System.Drawing.Image)(resources.GetObject("memoBox2.NormalImage")));
this.memoBox2.Padding = new System.Windows.Forms.Padding(4, 4, 3, 3);
this.memoBox2.ReadOnly = false;
this.memoBox2.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
this.memoBox2.Size = new System.Drawing.Size(432, 158);
this.memoBox2.TabIndex = 46;
this.memoBox2.TabStop = false;
this.memoBox2.WordWrap = false;
this.memoBox2.OnButtonClick += new System.EventHandler(this.memoBox2_OnButtonClick);
//
// splitContainer1
//
this.splitContainer1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.splitContainer1.Location = new System.Drawing.Point(3, 27);
this.splitContainer1.Name = "splitContainer1";
this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.Controls.Add(this.label9);
this.splitContainer1.Panel1.Controls.Add(this.memoBox2);
this.splitContainer1.Panel1MinSize = 160;
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.Controls.Add(this.label1);
this.splitContainer1.Panel2.Controls.Add(this.memoBox1);
this.splitContainer1.Size = new System.Drawing.Size(456, 643);
this.splitContainer1.SplitterDistance = 200;
this.splitContainer1.TabIndex = 47;
//
// MainForm
//
this.AllowDrop = true;
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));
this.ClientSize = new System.Drawing.Size(464, 761);
this.Controls.Add(this.splitContainer1);
this.Controls.Add(this.button5);
this.Controls.Add(this.tHorizontalSeparator2);
this.Controls.Add(this.button1);
this.Controls.Add(this.menuStrip1);
this.Controls.Add(this.pictureBox1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "MainForm";
this.Text = "Website SSL Certificate Checker";
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private RyzStudio.Windows.ThemedForms.TButton button1;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.ToolTip toolTip1;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.MenuStrip menuStrip1;
private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem newToolStripMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem15;
private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem2;
private System.Windows.Forms.ToolStripMenuItem toolsToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem optionsToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem helpToolStripMenuItem1;
private System.Windows.Forms.ToolStripMenuItem viewHelpToolStripMenuItem1;
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem16;
private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem1;
private RyzStudio.Windows.ThemedForms.ButtonMemoBox.TClearableMemoBox memoBox1;
private System.Windows.Forms.Label label1;
private RyzStudio.Windows.Forms.THorizontalSeparator tHorizontalSeparator2;
private RyzStudio.Windows.ThemedForms.TButton button5;
private RyzStudio.Windows.ThemedForms.ButtonMemoBox.TClearableMemoBox memoBox2;
private System.Windows.Forms.SplitContainer splitContainer1;
}
}

284
MainForm.cs Normal file
View File

@ -0,0 +1,284 @@
using RyzStudio.IO;
using RyzStudio.Windows.Forms;
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Diagnostics.Metrics;
using System.Net.Http;
using System.Net.Security;
using System.Reflection.Emit;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WebsiteSSLCertificateChecker
{
public partial class MainForm : Form
{
protected const string DEFAULLT_LABEL_RESULTS = "SSL Certificate Results";
protected CancellationTokenSource cancellationToken = new CancellationTokenSource();
protected bool isBusy = false;
protected bool requestCancel = false;
public MainForm()
{
InitializeComponent();
//memoBox1.TextBox.BackColor = memoBox1.BackColor;
memoBox2.ReadOnly = false;
Clear();
}
protected override void OnClosing(CancelEventArgs e)
{
base.OnClosing(e);
if (this.IsBusy)
{
e.Cancel = true;
return;
}
}
public bool IsBusy
{
get => isBusy;
set
{
isBusy = value;
UIControl.SetEnable(memoBox2, !isBusy);
UIControl.SetEnable(memoBox1, !isBusy);
UIControl.SetValue(pictureBox1, (isBusy ? UIcon.GetIcon(typeof(UIResource), "loading_block") : null));
UIControl.SetEnable(button5, !isBusy);
UIControl.SetEnable(button1, !isBusy);
}
}
/// <summary>
/// New
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void newToolStripMenuItem_Click(object sender, EventArgs e)
{
if (this.IsBusy)
{
return;
}
Clear();
}
/// <summary>
/// Close
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void exitToolStripMenuItem2_Click(object sender, EventArgs e)
{
if (this.IsBusy)
{
return;
}
this.Close();
}
/// <summary>
/// Options
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void optionsToolStripMenuItem_Click(object sender, EventArgs e)
{
// do nothing
}
/// <summary>
/// Help
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void viewHelpToolStripMenuItem1_Click(object sender, EventArgs e)
{
try
{
System.Diagnostics.Process.Start(new ProcessStartInfo()
{
FileName = AppResource.AppHelpURL,
UseShellExecute = true
});
}
catch
{
// do nothing
}
}
/// <summary>
/// About
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void aboutToolStripMenuItem1_Click(object sender, EventArgs e)
{
MessageBox.Show(Application.ProductName + " v" + Application.ProductVersion, "About", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
/// <summary>
/// Clear URL address list
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void memoBox2_OnButtonClick(object sender, EventArgs e)
{
if (this.IsBusy)
{
return;
}
UIControl.SetText(memoBox2, string.Empty);
}
/// <summary>
/// Clear SSL certificate results
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void memoBox1_OnButtonClick(object sender, EventArgs e)
{
if (this.IsBusy)
{
return;
}
UIControl.SetText(label1, DEFAULLT_LABEL_RESULTS);
UIControl.SetText(memoBox1, string.Empty);
}
/// <summary>
/// Run
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private async void button5_MouseClick(object sender, MouseEventArgs e)
{
if (this.IsBusy)
{
return;
}
this.IsBusy = true;
int counter = 0;
foreach (string line in memoBox2.Lines)
{
if (string.IsNullOrWhiteSpace(line))
{
continue;
}
counter++;
UIControl.SetText(label1, string.Format("{0} ({1})", DEFAULLT_LABEL_RESULTS, counter.ToString()));
await RetrieveSSLInfo(line);
}
this.IsBusy = false;
}
/// <summary>
/// Close
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_MouseClick(object sender, MouseEventArgs e)
{
if (this.IsBusy)
{
return;
}
this.Close();
}
protected void AddText(string text)
{
UIControl.AddLine(memoBox1, text);
}
private void Clear()
{
label1.Text = DEFAULLT_LABEL_RESULTS;
memoBox1.Text = memoBox2.Text = string.Empty;
memoBox1.WordWrap = memoBox2.WordWrap = false;
}
protected string ReFormatDateTime(string datetime)
{
if (string.IsNullOrWhiteSpace(datetime))
{
return string.Empty;
}
if (!DateTime.TryParse(datetime, out DateTime result))
{
return string.Empty;
}
return result.ToString("yyyy-MM-dd HH:mm:ss");
}
private async Task RetrieveSSLInfo(string url)
{
AddText("> " + url);
HttpClientHandler clientHandler = new HttpClientHandler();
clientHandler.ServerCertificateCustomValidationCallback = (requestMessage, certificate, chain, sslErrors) => {
AddText("Requested URL = " + requestMessage.RequestUri);
AddText("Subject = " + certificate?.Subject ?? string.Empty);
AddText("Issuer = " + certificate?.Issuer ?? string.Empty);
AddText("Effective Date = " + ReFormatDateTime(certificate!.GetEffectiveDateString()));
AddText("Expiration Date = " + ReFormatDateTime(certificate.GetExpirationDateString()));
AddText("Thumbprint = " + certificate.Thumbprint);
AddText("Error = " + sslErrors);
AddText(String.Empty);
return sslErrors == SslPolicyErrors.None;
};
HttpClient webClient = new HttpClient(clientHandler);
try
{
HttpResponseMessage response = await webClient.SendAsync(new HttpRequestMessage(HttpMethod.Head, url));
response.EnsureSuccessStatusCode();
}
catch (HttpRequestException exc)
{
AddText("Error = " + exc.Message);
}
catch (Exception exc)
{
AddText("Error = " + exc.Message);
}
AddText(String.Empty.PadLeft(84, '-'));
clientHandler.Dispose();
webClient.Dispose();
}
}
}

407
MainForm.resx Normal file
View File

@ -0,0 +1,407 @@
<root>
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>716, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="memoBox1.HighlightImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wQAADsEBuJFr7QAAAN5JREFUOE/tUzsKwkAUXLCyFMHjeIvdB4Gk8ALamU4rsbLaTWz0AOYGOYMewTqe
QLEQnZc8WRMSsBYHhrzPzJBin2pC60PPGLs3xl3Bp5DrHe9E1g2tHUH8QMjKmGReketyZkRWh9abfhTZ
YRimI4jWRPYSBMngkzzjHWtYyx6xK4X0Anz/7rcsxM4BdoxBTuTOqCdEaUyU6DrTuNqxxuXsEXsFDLfg
UdpOsIa10nr8A34p4CRtJ1jTGoC3PsPiBi78ETXplqzBwU3F5sHHgWWGJ3rHt+3tg+Uu84ek1AsYYd8q
EsfwCwAAAABJRU5ErkJggg==
</value>
</data>
<data name="memoBox1.NormalImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wQAADsEBuJFr7QAAAOFJREFUOE/tk0EKwjAQRQNuktBSRPAoQpPgLap7L6A7u9OVeAQ3eoHewDPoEbqu
J6i4KPqnHWmpLbgWPzzIzPyZpjARn4oGWruTUjYHTybX2hypxqZ+wTwHhdZ2p5RbE9XZFmDGtrZC5fuT
keeZsZRmr5S5BYEbNqEc1chDXurh5vKrGXhf91sybhcCk6dS2jOSKf5/gWvHIGoRVzWbkpd6uL0SkgcU
Lxz2ijzk5bDWf8APDTBXDntFns4BmLwCd2zYBltXPqI22MQteXBecltToUIhgeEBunafQM0l9UMS4gXi
C24mZ5wisQAAAABJRU5ErkJggg==
</value>
</data>
<data name="memoBox2.HighlightImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wQAADsEBuJFr7QAAAN5JREFUOE/tUzsKwkAUXLCyFMHjeIvdB4Gk8ALamU4rsbLaTWz0AOYGOYMewTqe
QLEQnZc8WRMSsBYHhrzPzJBin2pC60PPGLs3xl3Bp5DrHe9E1g2tHUH8QMjKmGReketyZkRWh9abfhTZ
YRimI4jWRPYSBMngkzzjHWtYyx6xK4X0Anz/7rcsxM4BdoxBTuTOqCdEaUyU6DrTuNqxxuXsEXsFDLfg
UdpOsIa10nr8A34p4CRtJ1jTGoC3PsPiBi78ETXplqzBwU3F5sHHgWWGJ3rHt+3tg+Uu84ek1AsYYd8q
EsfwCwAAAABJRU5ErkJggg==
</value>
</data>
<data name="memoBox2.NormalImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wQAADsEBuJFr7QAAAOFJREFUOE/tk0EKwjAQRQNuktBSRPAoQpPgLap7L6A7u9OVeAQ3eoHewDPoEbqu
J6i4KPqnHWmpLbgWPzzIzPyZpjARn4oGWruTUjYHTybX2hypxqZ+wTwHhdZ2p5RbE9XZFmDGtrZC5fuT
keeZsZRmr5S5BYEbNqEc1chDXurh5vKrGXhf91sybhcCk6dS2jOSKf5/gWvHIGoRVzWbkpd6uL0SkgcU
Lxz2ijzk5bDWf8APDTBXDntFns4BmLwCd2zYBltXPqI22MQteXBecltToUIhgeEBunafQM0l9UMS4gXi
C24mZ5wisQAAAABJRU5ErkJggg==
</value>
</data>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>52</value>
</metadata>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAQAMDAAAAEAIACoJQAARgAAACAgAAABACAAqBAAAO4lAAAYGAAAAQAgAIgJAACWNgAAEBAAAAEA
IABoBAAAHkAAACgAAAAwAAAAYAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMz
MygzMzPXMzMzszIyMmU1NTUYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAMTExOTQ0NO00NDT/NDU1/zMzM/8zMzP9MzMzyDMzM3k0NDQsAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAA0NDRFMzQ09D0+Pv6htbX/xODh/5apqv9ncXL/Ojs7/jMzM/8zMzP/NDQ04DQ0
NJkyMjJNMzMzBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAADMzM180NDT7T1BQ/b/R0f/S7/D/0O7v/9Du7//Q7u//y+np/6e9
vf93hIT/QkVF/jMzM/8zMzP/NDQ08DMzM6o0NDReMzMzDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMzMzdzU1Nf5eYWH+xtna/9nx8v/Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//zuzt/7DIyf+CkZH/UlhY/jMzM/8zMzP/MzMz/DMzM8QzMzNvNTU1HQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFVVVQMzMzOVNTU1/2xwcP7O4+P/3PLz/9Xw
8f/Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/7zW1/+Ro6P/Ymtr/zY2
Nv4zMzP/MzMz/zMzM9UzMzOIMzMzPAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkBzMzM6k5OTn/eH5+/9Po
6f/c8vP/2/Lz/9Hu7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/8Xh4v+csLD/bHd3/zs9Pf4zMzP/MzMz/zQ0NOI0NDSZMjIyTSQkJAcAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtLS0RMzMzwjw8
PP+Ij5D/2O7v/9zy8//c8vP/1/Hy/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/8vo6f+jubr/dICA/0NGRv4zMzP/MzMz/zQ0
NPIyMjJrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADc3
NxwzMzPVQUFB/5Wfn//a8fL/3PLz/9zy8//c8vP/0+/w/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/8/t
7v+wyMn/gZCQ/zk6Ov4zMzPEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAMTExKjQ0NOJGRkb/oKys/9zy8//c8vP/3PLz/9zy8//b8vP/0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/19naP80NDT5JCQkBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAyMjI4NTU17UhISP6turr/3PLz/9zy8//c8vP/3PLz/9zy8//X8fH/0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/4KRkv8zMzP/MTExOQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAADQ0NE80NDT3Tk9P/bnJyv/c8vP/3PLz/9zy8//c8vP/3PLz/9zy
8//T7/D/0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/6a8vf8zMzP/MzMzcwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyYTQ0NPxUVlb9wtPU/9zy8//c8vP/3PLz/9zy
8//c8vP/3PLz/9vy8//Q7u//0O7v/8fk5f/O7O3/0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/8nm
5/81NTX+NDQ0rQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMzN3MzMz/11gYP3K3d3/3PLz/9zy
8//c8vP/3PLz/9zy8//c8vP/3PLz/9jx8v/Q7u//i6Cg/wMEBP8hJib/rcbH/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7/9RV1f/MzMz6gAAAAAAAAAAAAAAAAAAAAAAAAAAVVVVAzIyMpgzMzP/Z2tr/tDk
5f/c8vP/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/3PLz/9bw8f/Q7u//TVlZ/wAAAP8AAAD/CgsL/4ic
nf/Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7/91goL/MzMz/zMzMyMAAAAAAAAAAAAAAABAQEAIMzMzqzMz
M/9yeHj/1uvr/93z8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/3PLz/9Pv8P/Q7u//TVhY/wAA
AP8AAAD/AAAA/wAAAP9baGj/zOnq/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7/+Zra7/MzMz/zQ0NF4AAAAAAAAAAAAA
AAAzMzPCMzMz/3uEhP/a7/D/3fPz/93z8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/2/Lz/9Du
7//Q7u//TVhY/wAAAP8AAAD/AAAA/wAAAP8AAAD/MDc3/7vW1//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7/++2dr/MzMz/zQ0
NJkAAAAAAAAAAAAAAAAzMzPNPD09/tvx8v/d8/T/3fPz/93z8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy
8//c8vP/2fHy/9Du7//Q7u//TVhY/wAAAP8AAAD/YnBw/wYHB/8AAAD/AAAA/xQWFv+ds7T/0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//REdH/jQ0NNQAAAAAAAAAAAAAAAAyMjKTMzMz/8ve3//d8/T/3fPz/93z8//c8vP/3PLz/9zy
8//c8vP/3PLz/9zy8//c8vP/1/Hx/9Du7//Q7u//TVhY/wAAAP8AAAD/s8zN/6e/wP8bHx//AAAA/wAA
AP8DBAT/b39//8/t7v/Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//aHJz/zMzM/0tLS0RAAAAAAAAAAA0NDRZMzMz/6u6u//d8/T/3fPz/93z
8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/1fDx/9Du7//Q7u//TVhY/wAAAP8AAAD/s8zN/9Du
7//A3N3/OkJD/wAAAP8AAAD/AAAA/0BJSf/E4OH/0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//jJ2e/zMzM/8yMjJIAAAAAAAAAAAzMzMeMzMz/4aQ
kP/d8/T/3fPz/93z8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/1O/w/9Du7//Q7u//TVhY/wAA
AP8AAAD/s8zN/9Du7//Q7u//z+3u/29/f/8CAgL/AAAA/wAAAP8fIyT/rMXG/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//sMfI/zMzM/8zMzOCAAAAAAAA
AAAAAAAAMzMz5FpfX/7d8/T/3fPz/93z8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/0u/w/9Du
7//Q7u//TVhY/wAAAP8AAAD/s8zN/9Du7//Q7u//0O7v/9Du7/+Uqar/DhAQ/wAAAP8AAAD/CgsL/4md
nf/Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//zuvs/zo7
O/40NDS8AAAAAAAAAAAAAAAAMzMzqTY2N//V6er/3fPz/93z8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy
8//c8vP/0e7v/9Du7//Q7u//TVhY/wAAAP8AAAD/s8zN/9Du7//Q7u//0O7v/9Du7//Q7u//tM7P/yct
Lf8AAAD/AAAA/wAAAP9baWn/zerr/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/1tjY/80NDT1QEBABAAAAAAAAAAAMzMzbzMzM/+4ycn/3fPz/93z8//c8vP/3PLz/9zy
8//c8vP/3PLz/9zy8//c8vP/0e7v/9Du7//Q7u//TVhY/wAAAP8AAAD/s8zN/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/8nm5/9OWlr/AAAA/wAAAP8AAAD/a3p7/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/36Njf8zMzP/MzMzMgAAAAAAAAAAMTExNDMzM/+UoaH/3fPz/93z
8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/0O7v/9Du7//Q7u//TVhY/wAAAP8AAAD/s8zN/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/8nm5/9OWlr/AAAA/wAAAP8AAAD/a3p7/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/6O4uf8zMzP/MzMzbQAAAAAAAAAAQEBABDQ0
NPRrcnL/3fP0/93z8//d8/P/3PLz/9zy8//c8vP/3PLz/9zy8//b8vP/0O7v/9Du7//Q7u//TVhY/wAA
AP8AAAD/s8zN/9Du7//Q7u//0O7v/9Du7//Q7u//tM7P/yctLf8AAAD/AAAA/wAAAP9baWn/zerr/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/8bi4/80NDT/MjIypwAA
AAAAAAAAAAAAADMzM749Pj7+3PHx/93z8//d8/P/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/0O7v/9Du
7//Q7u//TVhY/wAAAP8AAAD/s8zN/9Du7//Q7u//0O7v/9Du7/+Uqar/DxER/wAAAP8AAAD/CgsL/4ic
nf/Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7/9NUVL+NDQ04gAAAAAAAAAAAAAAADIyMoQzMzP/w9bW/93z8//d8/P/3PLz/9zy8//c8vP/3PLz/9zy
8//c8vP/0e7v/9Du7//Q7u//TVhY/wAAAP8AAAD/s8zN/9Du7//Q7u//z+3u/29/f/8CAgL/AAAA/wAA
AP8fIyT/rMXG/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7/9yfn//MzMz/zU1NR0AAAAAAAAAADQ0NEozMzP/oa+w/93z8//d8/P/3PLz/9zy
8//c8vP/3PLz/9zy8//c8vP/0u/w/9Du7//Q7u//TVhY/wAAAP8AAAD/s8zN/9Du7//A3N3/O0ND/wAA
AP8AAAD/AAAA/0BJSf/D3+D/0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7/+WqKn/MzMz/zIyMlcAAAAAAAAAADAwMBAzMzP9eIGB/93z
8//d8/P/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/1O/w/9Du7//Q7u//TVhY/wAAAP8AAAD/s8zN/6e/
wP8bHx//AAAA/wAAAP8CAwP/b39//8/t7v/Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7/+50tP/MzMz/zMzM5EAAAAAAAAAAAAA
AAA0NDTUSk1N/t3z8//d8/P/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/1fDx/9Du7//Q7u//TVhY/wAA
AP8AAAD/YnBw/wYHB/8AAAD/AAAA/xQWFv+ds7T/0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//O7O3/Oz09/jMz
M80AAAAAAAAAAAAAAAA0NDSZMzMz/87i4//d8/P/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/2PHy/9Du
7//Q7u//TVhY/wAAAP8AAAD/AAAA/wAAAP8AAAD/MDc3/7vW1//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/8zp
6v9qdHT/MzMz/zMzM8IAAAAAAAAAAAAAAAAyMjJgMzMz/6u8vP/d8/P/3PLz/9zy8//c8vP/3PLz/9zy
8//c8vP/2/Lz/9Du7//Q7u//TVhY/wAAAP8AAAD/AAAA/wAAAP9baGj/zOnq/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//yOXm/19oaP8zMzP/MzMzuTs7Ow0AAAAAAAAAAAAAAAAwMDAlMzMz/4WRkf/d8/P/3PLz/9zy
8//c8vP/3PLz/9zy8//c8vP/3PLz/9Pv8P/Q7u//TVlZ/wAAAP8AAAD/CgsL/4icnf/Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//B3d7/UVdX/jMzM/8zMzOgMzMzBQAAAAAAAAAAAAAAAAAAAAAAAAAAMzMz6Vlf
X//d8/P/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/3PLz/9fx8v/Q7u//i6Cg/wMEBP8hJib/rcbH/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/7vV1v9KTk79MzMz/zMzM4gAAAABAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAMzMzrzU1Nf7V6+z/3fPz/9zy8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy8//R7/D/0O7v/8fk
5f/O7O3/0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//sMjI/0FDQ/0zMzP9MzMzaQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAMjIydTMzM/+4ysv/3fPz/9zy8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy
8//X8fH/0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7/+nvb3/OTs7/TQ0NPkyMjJWAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANDQ0OzMzM/+ToKH/3fPz/9zy8//c8vP/3PLz/9zy
8//c8vP/3PLz/9zy8//c8vP/0+/w/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/5eqq/81Njb+NDU18TEx
MT4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkBzMzM/hpcXH/3fPz/9zy
8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/2vLz/9Hu7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//i5yd/zQ0
NP80NDTnMTExLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMz
M8Q5Ojr+jZqa/8DT1P/b8vL/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/3PLz/9nx8v/R7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/87s
7f91goL/MzMz/zMzM9U3NzccAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAADIyMms0NDTyMzMz/zMzM/9KTU3+hY+P/7XHyP/Y7u//3PLz/9zy8//c8vP/3PLz/9zy
8//Z8fL/0e7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//y+jp/2dwcf8zMzP/MzMzwi0tLREAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVVVUDMzMzPDMzM4g0NDTbMzMz/zMzM/89Pj7+cnp6/6W0
tP/R5ub/3PLz/9zy8//c8vP/2fHy/9Lv8P/Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
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
AAAAAAAAAAAAAAAAAAAAAAAAMjIyVzg4OPmKmpv+eomJ/kVKSvY1Njb8PD09xDIyMmszMzMeAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAADU1NW5BQkL6tcXG/9Hu7//Q7u//0O7v/7vV1v+LnJ3/WF9f9jQ1
Nf06OzvfNDQ0iTMzMzwAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE4ODiDTU5O+sDS0v/Y8fL/0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//xODh/5ywsP9pc3P4ODk5+jg5OfA3NzemMjIyTSQkJAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMzMFOTk5qVdaWvjK3d3/3PLz/9Pv8P/Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//L6en/ore4/3F9ffs+QED4Nzc39zs8PLIyMjJcNzc3DgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKysrDDo8PMBobGz40eXm/9zy8//b8vP/0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/8/t7v+vx8f/fYyN/kBD
Q/czMzN4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADY2NhM8Pj7Pdnx8+NXq6//c8vP/3PLz/9fw
8f/Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//i5yc/zs8PLsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2NjYhOzw84YGIiPrY7+//3PLz/9zy
8//c8vP/0+/w/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7/+vx8f/ODk58gAAAAEAAAAAAAAAAAAAAAAAAAAAMzMzLTo7O+2PmZn82vHy/9zy
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
8//W8PH/xODh/wEBAf8ICQn/hZiZ/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//i5yc/TY3N/c0NDRJAAAAAAAAAAAAAAAAMjIyKTk6Ovva8PD/3PLz/9zy
8//c8vP/3PLz/9vy8//R7u//l62t/7DKyv/Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//z+3u/3mIiPw3ODjyMTExOQAAAAAAAAAAAAAAAAAAAAAAAAABODk58sDS
0//c8vP/3PLz/9zy8//c8vP/3PLz/9bw8f/Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/8zp6v9ncXL5Nzk55jY2NiYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAA7Pj69nKqr/9zy8//c8vP/3PLz/9zy8//c8vP/3PLz/9Lv8P/Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//I5eb/XGRk+Ds8PNU3NzcXAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAADMzM3hCRET3jZqb/r/S0v/b8vL/3PLz/9zy8//c8vP/2/Lz/9Lv8P/Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//wdzd/0tRUfc5OjrAKysrDAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAANzc3DjIyMlw5OjqwNjc39kZISPeAiov7tMXG/9ju7v/c8vP/2vLz/9Lv
8P/Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/7jS0v9DRkb4OTs7qjMzMwUAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEAEMzMzPDc3N5Q4OTnqOjs7+211
dvijsrL/z+Tl/9bw8f/Q7u//0O7v/9Du7//Q7u//0O7v/9Du7/+wyMj/PT4/+Dc3N5UAAAACAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAA1NTUrMzMzdzo7O840NDT+V1xc9o6cnP+60dL/0e7v/9Du7//Q7u//pry8/zg5Ofo3Nzd4AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAADMzMx4yMjJrOjs7wjU1NftGS0vzfImK/IiYmf42Nzf6MjIyVwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANzc3DjIyMlY5OzuqOTo65jIy
MkIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/g////wB///4AB//4A
AD/8AAAH+AAAB/AAAAfgAAADwAAAA4AAAAMAAAADAAAAAwAAAAEAAAABAAAAAQAAAAGAAAAAgAAAAIAA
AACAAAAAwAAAAMAAAADAAAABwAAAA8AAAAfgAAAP4AAAH+AAAD/8AAB//8AB///4A////wf/KAAAABgA
AAAwAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAOz4+Vzs8PO1DRkavMjIyUS4uLgsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/Pz9pX2Nj78Le3/+rwsP/d4SF8EVI
SO1CRUXQODg4ci8vLxsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAUJERotxd3fz0+rr/9Du7//Q7u//0O7v/9Du7/+2z9D/hJOU9k1SUus+QEDjPD4+hzIy
MjMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEAEQkNDq4WPj/Pa8PH/1fDx/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7/+/2tv/j6Ch/VdeXu8/QUHoQUNDnC8vLxsAAAAAAAAAAAAA
AAAAAAAAAAAAAC4uLgtFSEjEl6Oj9tvy8v/c8vP/0e7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//I5eb/eYaH/Tk5OXUAAAAAAAAAAAAAAAAAAAAAOTk5EkVISNKmsrP53PLz/9zy
8//Z8fL/0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//ssrL/0NH
R74AAAAAAAAAAAAAAAAwMDAgRkhI4q++wP3c8vP/3PLz/9zy8//W8PH/i5+f/5yys//Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//z+zt/z9BQuoAAAAAAAAAADQ0NCxHSUnnvtDQ/dzy
8//c8vP/3PLz/9zy8//S7/D/Jisr/wIDA/9tfX7/z+3u/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/9Du
7//Q7u//0O7v/1JYWOowMDAgAAAAADs9PezH2tv/3fPz/9zy8//c8vP/3PLz/9vy8//Q7u//Jisr/xgc
HP8CAgL/QElJ/8Tg4f/Q7u//0O7v/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/36NjfY1NTVcAAAAAENG
RtDN4eH/3fPz/9zy8//c8vP/3PLz/9rx8v/Q7u//Jisr/1pnZ/+Uqar/DxER/x0iIv+qw8T/0O7v/9Du
7//Q7u//0O7v/9Du7//Q7u//0O7v/6W7u/9CRkalAAAAAD5AQIutvL3+3fPz/9zy8//c8vP/3PLz/9jx
8v/Q7u//Jisr/1pnZ//Q7u//uNLT/ywyM/8HBwf/gJOT/9Du7//Q7u//0O7v/9Du7//Q7u//0O7v/8jk
5f9BQ0PgAAAAADIyMkeDjY3x3fPz/9zy8//c8vP/3PLz/9bw8f/Q7u//Jisr/1pnZ//Q7u//0O7v/8nn
5/9QW1z/AAAA/2Z1df/Q7u//0O7v/9Du7//Q7u//0O7v/9Du7/9GS0vsMzMzDzc3Nw5VWFnt3fPz/9zy
8//c8vP/3PLz/9bw8f/Q7u//Jisr/1pnZ//Q7u//0O7v/8nn5/9QW1z/AAAA/2Z1df/Q7u//0O7v/9Du
7//Q7u//0O7v/9Du7/9teXnvNDQ0RQAAAABARETi1+vs/9zy8//c8vP/3PLz/9bw8f/Q7u//Jisr/1pn
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
rEGAAKxBgAGsQYADrEHgD6xB/B+sQQ==
</value>
</data>
</root>

20
Program.cs Normal file
View File

@ -0,0 +1,20 @@
using System;
using System.Windows.Forms;
namespace WebsiteSSLCertificateChecker
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.SetHighDpiMode(HighDpiMode.SystemAware);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
}

BIN
References/RyzStudio3.dll Normal file

Binary file not shown.

BIN
Resources/loading-block.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
Resources/trash-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 364 B

BIN
Resources/trash.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 B

93
UIResource.Designer.cs generated Normal file
View File

@ -0,0 +1,93 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WebsiteSSLCertificateChecker {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class UIResource {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal UIResource() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WebsiteSSLCertificateChecker.UIResource", typeof(UIResource).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap loading_block {
get {
object obj = ResourceManager.GetObject("loading_block", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap trash {
get {
object obj = ResourceManager.GetObject("trash", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap trash_2 {
get {
object obj = ResourceManager.GetObject("trash_2", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}

130
UIResource.resx Normal file
View File

@ -0,0 +1,130 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="loading_block" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\loading-block.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="trash" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\trash.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="trash_2" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\trash-2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@ -0,0 +1,82 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net6.0-windows8.0</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
<AssemblyName>sslreportgenerator</AssemblyName>
<Authors>Ray Lam</Authors>
<Company>Hi, I'm Ray</Company>
<Product>Website SSL Certificate Checker</Product>
<Copyright>Ray Lam</Copyright>
<ApplicationIcon>favicon.ico</ApplicationIcon>
<NoWin32Manifest>true</NoWin32Manifest>
<Version>0.1.0.007</Version>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<DebugType>none</DebugType>
<DebugSymbols>false</DebugSymbols>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<Compile Remove="Resources\**" />
<Compile Remove="RyzStudio\**" />
<EmbeddedResource Remove="Resources\**" />
<EmbeddedResource Remove="RyzStudio\**" />
<None Remove="Resources\**" />
<None Remove="RyzStudio\**" />
</ItemGroup>
<ItemGroup>
<None Remove=".gitignore" />
<None Remove="build.bat" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\trash-2.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\trash.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\loading-block.gif" />
</ItemGroup>
<ItemGroup>
<Reference Include="RyzStudio3">
<HintPath>References\RyzStudio3.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Update="AppResource.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>AppResource.resx</DependentUpon>
</Compile>
<Compile Update="UIResource.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>UIResource.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="AppResource.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>AppResource.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Update="UIResource.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
<LastGenOutput>UIResource.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
</Project>

5
build.bat Normal file
View File

@ -0,0 +1,5 @@
rmdir /s /q "bin\Release\64\"
dotnet publish skye.sln -r win-x64 -c Release /p:PublishSingleFile=true /p:SelfContained=false /p:PublishReadyToRunfalse=true /p:PublishDir="bin\Release\64\"
rmdir /s /q "bin\Release\86\"
dotnet publish skye.sln -r win-x86 -c Release /p:PublishSingleFile=true /p:SelfContained=false /p:PublishReadyToRunfalse=true /p:PublishDir="bin\Release\86\"

BIN
favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

25
skye.sln Normal file
View File

@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.3.32929.385
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebsiteSSLCertificateChecker", "WebsiteSSLCertificateChecker.csproj", "{5F301DDB-6E01-4492-BABC-E134722EF0AC}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{5F301DDB-6E01-4492-BABC-E134722EF0AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5F301DDB-6E01-4492-BABC-E134722EF0AC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5F301DDB-6E01-4492-BABC-E134722EF0AC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5F301DDB-6E01-4492-BABC-E134722EF0AC}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {07C35049-4E29-477E-84DD-ED9E52F0F257}
EndGlobalSection
EndGlobal