Disassembled CarotDav v1.14.7 with dotPeek 2017.2

This commit is contained in:
2017-10-06 17:20:58 +02:00
commit 2002a53fb5
191 changed files with 69359 additions and 0 deletions

View File

@@ -0,0 +1,12 @@
using System.Reflection;
using System.Runtime.InteropServices;
[assembly: AssemblyCompany("Rei Software")]
[assembly: AssemblyCopyright("Copyright (C) Rei HOBARA 2007-2016")]
[assembly: AssemblyDescription("WebDAV Support Library")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyTitle("Rei.Fs.WebDAV")]
[assembly: AssemblyProduct("Rei.Fs.WebDAV")]
[assembly: Guid("72c8af21-4017-4407-a1e4-2bba7bae25f0")]
[assembly: ComVisible(false)]
[assembly: AssemblyVersion("1.13.2.18288")]

View File

@@ -0,0 +1,275 @@
// Decompiled with JetBrains decompiler
// Type: Rei.Fs.Webdav.ConnectionSetting
// Assembly: Rei.Fs.Webdav, Version=1.13.2.18288, Culture=neutral, PublicKeyToken=null
// MVID: D30DD1E3-8520-48B5-AAE5-C87970350A82
// Assembly location: F:\Eigene Dateien\Dropbox\portable Collection\Progs\CarotDAV\Rei.Fs.Webdav.dll
using Microsoft.VisualBasic.CompilerServices;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Net;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Windows.Forms;
using System.Xml.Serialization;
namespace Rei.Fs.Webdav
{
[Serializable]
public class ConnectionSetting : ConnectionSettingBase
{
public bool UseDefaultCredential;
public List<string> ClientCertificates;
public bool UsePreAuthentication_Basic;
public bool UsePreAuthentication_WSSE;
private string[] pAuthModules;
[XmlIgnore]
public SslProtocols DisableTlsVersions;
public string URIRequestEncoding;
public string URIResponseEncoding;
public string CredentialEncoding;
public bool DontRequestGzip;
public bool DontRequestDeflate;
public bool RequestTranslatef;
public bool DontExpect100;
public bool SendEmptyPUT;
public bool DontUpdateProperty;
public bool UseFullUriInDestinationHeader;
public string UploadCompression;
public bool DontVerifyContentRange;
public bool RedirectionCollectionOnly;
public bool RemoveLastSlashOnMKCOL;
public bool DisableUploadResume;
public ConnectionSetting()
{
this.UseDefaultCredential = false;
this.UsePreAuthentication_Basic = false;
this.UsePreAuthentication_WSSE = false;
this.AuthModules = new string[0];
this.DisableTlsVersions = SslProtocols.None;
this.ClientCertificates = new List<string>();
this.URIRequestEncoding = "UTF-8";
this.URIResponseEncoding = "UTF-8";
this.CredentialEncoding = "UTF-8";
this.DontRequestGzip = false;
this.DontRequestDeflate = false;
this.RequestTranslatef = true;
this.DontExpect100 = false;
this.SendEmptyPUT = false;
this.DontUpdateProperty = false;
this.UseFullUriInDestinationHeader = true;
this.DontVerifyContentRange = false;
this.RedirectionCollectionOnly = false;
this.RemoveLastSlashOnMKCOL = true;
this.UploadCompression = "None";
this.DisableUploadResume = true;
}
public static string TypeName
{
get
{
return "WebDAV";
}
}
public static bool TryCreate(Uri target, ref ConnectionSettingBase c)
{
if (Operators.CompareString(target.Scheme, Uri.UriSchemeHttp, false) != 0 && Operators.CompareString(target.Scheme, Uri.UriSchemeHttps, false) != 0)
return false;
c = (ConnectionSettingBase) new ConnectionSetting();
c.TargetUri = target;
return true;
}
public new static Icon GetDefaultFavicon()
{
return Rei.Fs.Webdav.My.Resources.Resources.WebDAVFolder;
}
public override SecureType SecureType
{
get
{
return Operators.CompareString(this.TargetUri.Scheme, Uri.UriSchemeHttps, false) == 0 ? SecureType.Secure : SecureType.None;
}
}
[XmlIgnore]
public string[] AuthModules
{
get
{
return this.pAuthModules;
}
set
{
if (value == null)
value = new string[0];
this.pAuthModules = value;
}
}
[Browsable(false)]
[XmlElement("AuthModules")]
public string AuthModules_ForSerialization
{
get
{
return string.Join(",", this.pAuthModules);
}
set
{
this.pAuthModules = value.Split(new char[2]
{
' ',
','
}, StringSplitOptions.RemoveEmptyEntries);
}
}
[XmlElement("DisableTlsVersions")]
[Browsable(false)]
public string DisableTlsVersions_ForSerialization
{
get
{
string str = "";
if ((this.DisableTlsVersions & SslProtocols.Ssl2) != SslProtocols.None)
str += "ssl2 ";
if ((this.DisableTlsVersions & SslProtocols.Ssl3) != SslProtocols.None)
str += "ssl3 ";
if ((this.DisableTlsVersions & SslProtocols.Tls) != SslProtocols.None)
str += "tls10 ";
if ((this.DisableTlsVersions & SslProtocols.Tls11) != SslProtocols.None)
str += "tls11 ";
if ((this.DisableTlsVersions & SslProtocols.Tls12) != SslProtocols.None)
str += "tls12 ";
return str.Trim();
}
set
{
this.DisableTlsVersions = SslProtocols.None;
value = value.ToLowerInvariant();
if (value.Contains("ssl2"))
this.DisableTlsVersions = this.DisableTlsVersions | SslProtocols.Ssl2;
if (value.Contains("ssl3"))
this.DisableTlsVersions = this.DisableTlsVersions | SslProtocols.Ssl3;
if (value.Contains("tls10"))
this.DisableTlsVersions = this.DisableTlsVersions | SslProtocols.Tls;
if (value.Contains("tls11"))
this.DisableTlsVersions = this.DisableTlsVersions | SslProtocols.Tls11;
if (!value.Contains("tls12"))
return;
this.DisableTlsVersions = this.DisableTlsVersions | SslProtocols.Tls12;
}
}
public override FsBase GetBaseClient()
{
return (FsBase) this.InnerGetClient();
}
public WebdavFs InnerGetClient()
{
WebdavFs webdavFs = new WebdavFs(this);
webdavFs.UseDefaultCredential = this.UseDefaultCredential;
webdavFs.UsePreAuthentication_Basic = this.UsePreAuthentication_Basic;
webdavFs.UsePreAuthentication_WSSE = this.UsePreAuthentication_WSSE;
webdavFs.AuthModules = this.AuthModules;
webdavFs.DisableTlsVersions = this.DisableTlsVersions;
X509Store x509Store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
x509Store.Open(OpenFlags.ReadOnly);
try
{
int num1 = 0;
int num2 = checked (this.ClientCertificates.Count - 1);
int index1 = num1;
while (index1 <= num2)
{
int num3 = 0;
int num4 = checked (x509Store.Certificates.Count - 1);
int index2 = num3;
while (index2 <= num4)
{
if (Operators.CompareString(this.ClientCertificates[index1], x509Store.Certificates[index2].Thumbprint, false) == 0)
{
webdavFs.ClientCertificates.Add(x509Store.Certificates[index2]);
break;
}
checked { ++index2; }
}
checked { ++index1; }
}
}
finally
{
x509Store.Close();
}
webdavFs.URIRequestEncoding = Encoding.GetEncoding(this.URIRequestEncoding.Trim());
webdavFs.URIResponseEncoding = Encoding.GetEncoding(this.URIResponseEncoding.Trim());
webdavFs.CredentialEncoding = Encoding.GetEncoding(this.CredentialEncoding.Trim());
webdavFs.DontRequestGzip = this.DontRequestGzip;
webdavFs.DontRequestDeflate = this.DontRequestDeflate;
webdavFs.RequestTranslatef = this.RequestTranslatef;
webdavFs.DontExpect100 = this.DontExpect100;
webdavFs.SendEmptyPUT = this.SendEmptyPUT;
webdavFs.DontUpdateProperty = this.DontUpdateProperty;
webdavFs.UseFullUriInDestinationHeader = this.UseFullUriInDestinationHeader;
webdavFs.DontVerifyContentRange = this.DontVerifyContentRange;
webdavFs.RedirectionCollectionOnly = this.RedirectionCollectionOnly;
webdavFs.UploadCompression = this.UploadCompression;
webdavFs.RemoveLastSlashOnMKCOL = this.RemoveLastSlashOnMKCOL;
webdavFs.DisableUploadResume = this.DisableUploadResume;
if (this.Proxy == ProxyType.Default)
webdavFs.Proxy = WebRequest.GetSystemWebProxy();
else if (this.Proxy == ProxyType.Specify)
{
int length = this.ProxyUserName.IndexOf("\\");
NetworkCredential networkCredential = length < 0 ? new NetworkCredential(this.ProxyUserName, this.ProxyPassword) : new NetworkCredential(this.ProxyUserName.Substring(checked (length + 1)), this.ProxyPassword, this.ProxyUserName.Substring(0, length));
webdavFs.Proxy = (IWebProxy) new WebProxy(this.ProxyUri, this.ProxyByPassLocal, this.ProxyByPassList, (ICredentials) networkCredential);
}
else
webdavFs.Proxy = (IWebProxy) null;
webdavFs.ConnectTimeout = this.ConnectTimeout;
webdavFs.ReadWriteTimeout = this.ReadWriteTimeout;
return webdavFs;
}
public override Form GetSettingForm()
{
return (Form) new ConnectionSettingForm();
}
public override bool DoAuthorization(Uri target, bool PersistSelectable)
{
using (AuthDialog authDialog = new AuthDialog())
{
authDialog.Target = target.ToString();
authDialog.UserName = this.UserName;
authDialog.Password = this.Password;
if (PersistSelectable && !this.DontSave)
{
authDialog.ShowRememberCheckBox = true;
authDialog.Remember = false;
}
else
{
authDialog.ShowRememberCheckBox = false;
authDialog.Remember = true;
}
if (authDialog.ShowDialog() == DialogResult.OK)
{
this.SetUserPass(authDialog.UserName, authDialog.Password);
if (authDialog.Remember)
this.NeedPersist = true;
return true;
}
}
return false;
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,120 @@
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,889 @@
// Decompiled with JetBrains decompiler
// Type: Rei.Fs.Webdav.ConnectionTestForm
// Assembly: Rei.Fs.Webdav, Version=1.13.2.18288, Culture=neutral, PublicKeyToken=null
// MVID: D30DD1E3-8520-48B5-AAE5-C87970350A82
// Assembly location: F:\Eigene Dateien\Dropbox\portable Collection\Progs\CarotDAV\Rei.Fs.Webdav.dll
using Microsoft.VisualBasic.CompilerServices;
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.Net;
using System.Net.Security;
using System.Runtime.CompilerServices;
using System.Windows.Forms;
namespace Rei.Fs.Webdav
{
[DesignerGenerated]
public class ConnectionTestForm : Form
{
private IContainer components;
[AccessedThroughProperty("OPTIONSCheck")]
private CheckBox _OPTIONSCheck;
[AccessedThroughProperty("DAVClass1Check")]
private CheckBox _DAVClass1Check;
[AccessedThroughProperty("DAVClass2Check")]
private CheckBox _DAVClass2Check;
[AccessedThroughProperty("ResolveDNSCheck")]
private CheckBox _ResolveDNSCheck;
[AccessedThroughProperty("UriTextBox")]
private TextBox _UriTextBox;
[AccessedThroughProperty("Label1")]
private Label _Label1;
[AccessedThroughProperty("OKButton")]
private Button _OKButton;
[AccessedThroughProperty("ValidURICheck")]
private CheckBox _ValidURICheck;
[AccessedThroughProperty("Timer1")]
private System.Windows.Forms.Timer _Timer1;
[AccessedThroughProperty("HTTP11Check")]
private CheckBox _HTTP11Check;
[AccessedThroughProperty("PROPFINDCheck")]
private CheckBox _PROPFINDCheck;
[AccessedThroughProperty("OPTIONSAuthText")]
private TextBox _OPTIONSAuthText;
[AccessedThroughProperty("PROPFINDAuthText")]
private TextBox _PROPFINDAuthText;
[AccessedThroughProperty("DetailTextBox")]
private TextBox _DetailTextBox;
[AccessedThroughProperty("CertAvailCheckBox")]
private CheckBox _CertAvailCheckBox;
[AccessedThroughProperty("CertChainCheckBox")]
private CheckBox _CertChainCheckBox;
[AccessedThroughProperty("CertNameCheckBox")]
private CheckBox _CertNameCheckBox;
[AccessedThroughProperty("GroupBox1")]
private GroupBox _GroupBox1;
[AccessedThroughProperty("DAVClass3Check")]
private CheckBox _DAVClass3Check;
[AccessedThroughProperty("MethodsTextBox")]
private TextBox _MethodsTextBox;
[AccessedThroughProperty("Label2")]
private Label _Label2;
[AccessedThroughProperty("TextBoxSSLVersion")]
private TextBox _TextBoxSSLVersion;
[AccessedThroughProperty("Label3")]
private Label _Label3;
private string puser;
private string ppass;
private ConnectionSetting pSetting;
private const string GroupName = "Test";
public ConnectionTestForm()
{
this.Load += new EventHandler(this.ConnectionTestForm_Load);
this.InitializeComponent();
}
[DebuggerNonUserCode]
protected override void Dispose(bool disposing)
{
try
{
if (!disposing || this.components == null)
return;
this.components.Dispose();
}
finally
{
base.Dispose(disposing);
}
}
[DebuggerStepThrough]
private void InitializeComponent()
{
this.components = (IContainer) new System.ComponentModel.Container();
this.OPTIONSCheck = new CheckBox();
this.DAVClass1Check = new CheckBox();
this.DAVClass2Check = new CheckBox();
this.ResolveDNSCheck = new CheckBox();
this.UriTextBox = new TextBox();
this.Label1 = new Label();
this.OKButton = new Button();
this.ValidURICheck = new CheckBox();
this.Timer1 = new System.Windows.Forms.Timer(this.components);
this.HTTP11Check = new CheckBox();
this.PROPFINDCheck = new CheckBox();
this.OPTIONSAuthText = new TextBox();
this.PROPFINDAuthText = new TextBox();
this.DetailTextBox = new TextBox();
this.CertAvailCheckBox = new CheckBox();
this.CertChainCheckBox = new CheckBox();
this.CertNameCheckBox = new CheckBox();
this.GroupBox1 = new GroupBox();
this.Label3 = new Label();
this.TextBoxSSLVersion = new TextBox();
this.DAVClass3Check = new CheckBox();
this.MethodsTextBox = new TextBox();
this.Label2 = new Label();
this.GroupBox1.SuspendLayout();
this.SuspendLayout();
this.OPTIONSCheck.AutoCheck = false;
this.OPTIONSCheck.AutoSize = true;
CheckBox optionsCheck1 = this.OPTIONSCheck;
Point point1 = new Point(16, 104);
Point point2 = point1;
optionsCheck1.Location = point2;
this.OPTIONSCheck.Name = "OPTIONSCheck";
CheckBox optionsCheck2 = this.OPTIONSCheck;
Size size1 = new Size(72, 16);
Size size2 = size1;
optionsCheck2.Size = size2;
this.OPTIONSCheck.TabIndex = 5;
this.OPTIONSCheck.Text = "OPTIONS";
this.OPTIONSCheck.UseVisualStyleBackColor = true;
this.DAVClass1Check.AutoCheck = false;
this.DAVClass1Check.AutoSize = true;
CheckBox davClass1Check1 = this.DAVClass1Check;
point1 = new Point(32, 128);
Point point3 = point1;
davClass1Check1.Location = point3;
this.DAVClass1Check.Name = "DAVClass1Check";
CheckBox davClass1Check2 = this.DAVClass1Check;
size1 = new Size(89, 16);
Size size3 = size1;
davClass1Check2.Size = size3;
this.DAVClass1Check.TabIndex = 7;
this.DAVClass1Check.Text = "DAV class 1";
this.DAVClass1Check.UseVisualStyleBackColor = true;
this.DAVClass2Check.AutoCheck = false;
this.DAVClass2Check.AutoSize = true;
CheckBox davClass2Check1 = this.DAVClass2Check;
point1 = new Point(32, 152);
Point point4 = point1;
davClass2Check1.Location = point4;
this.DAVClass2Check.Name = "DAVClass2Check";
CheckBox davClass2Check2 = this.DAVClass2Check;
size1 = new Size(89, 16);
Size size4 = size1;
davClass2Check2.Size = size4;
this.DAVClass2Check.TabIndex = 8;
this.DAVClass2Check.Text = "DAV class 2";
this.DAVClass2Check.UseVisualStyleBackColor = true;
this.ResolveDNSCheck.AutoCheck = false;
this.ResolveDNSCheck.AutoSize = true;
CheckBox resolveDnsCheck1 = this.ResolveDNSCheck;
point1 = new Point(16, 56);
Point point5 = point1;
resolveDnsCheck1.Location = point5;
this.ResolveDNSCheck.Name = "ResolveDNSCheck";
CheckBox resolveDnsCheck2 = this.ResolveDNSCheck;
size1 = new Size(92, 16);
Size size5 = size1;
resolveDnsCheck2.Size = size5;
this.ResolveDNSCheck.TabIndex = 3;
this.ResolveDNSCheck.Text = "Resolve DNS";
this.ResolveDNSCheck.UseVisualStyleBackColor = true;
this.UriTextBox.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
TextBox uriTextBox1 = this.UriTextBox;
point1 = new Point(48, 8);
Point point6 = point1;
uriTextBox1.Location = point6;
this.UriTextBox.Name = "UriTextBox";
this.UriTextBox.ReadOnly = true;
TextBox uriTextBox2 = this.UriTextBox;
size1 = new Size(336, 19);
Size size6 = size1;
uriTextBox2.Size = size6;
this.UriTextBox.TabIndex = 1;
this.Label1.AutoSize = true;
Label label1_1 = this.Label1;
point1 = new Point(16, 8);
Point point7 = point1;
label1_1.Location = point7;
this.Label1.Name = "Label1";
Label label1_2 = this.Label1;
size1 = new Size(24, 12);
Size size7 = size1;
label1_2.Size = size7;
this.Label1.TabIndex = 0;
this.Label1.Text = "URI";
this.Label1.TextAlign = ContentAlignment.MiddleLeft;
this.OKButton.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
this.OKButton.DialogResult = DialogResult.Cancel;
Button okButton1 = this.OKButton;
point1 = new Point(312, 314);
Point point8 = point1;
okButton1.Location = point8;
this.OKButton.Name = "OKButton";
Button okButton2 = this.OKButton;
size1 = new Size(72, 24);
Size size8 = size1;
okButton2.Size = size8;
this.OKButton.TabIndex = 16;
this.OKButton.Text = "OK";
this.OKButton.UseVisualStyleBackColor = true;
this.ValidURICheck.AutoCheck = false;
this.ValidURICheck.AutoSize = true;
CheckBox validUriCheck1 = this.ValidURICheck;
point1 = new Point(16, 32);
Point point9 = point1;
validUriCheck1.Location = point9;
this.ValidURICheck.Name = "ValidURICheck";
CheckBox validUriCheck2 = this.ValidURICheck;
size1 = new Size(73, 16);
Size size9 = size1;
validUriCheck2.Size = size9;
this.ValidURICheck.TabIndex = 2;
this.ValidURICheck.Text = "Valid URI";
this.ValidURICheck.UseVisualStyleBackColor = true;
this.HTTP11Check.AutoCheck = false;
this.HTTP11Check.AutoSize = true;
CheckBox httP11Check1 = this.HTTP11Check;
point1 = new Point(16, 80);
Point point10 = point1;
httP11Check1.Location = point10;
this.HTTP11Check.Name = "HTTP11Check";
CheckBox httP11Check2 = this.HTTP11Check;
size1 = new Size(73, 16);
Size size10 = size1;
httP11Check2.Size = size10;
this.HTTP11Check.TabIndex = 4;
this.HTTP11Check.Text = "HTTP/1.1";
this.HTTP11Check.UseVisualStyleBackColor = true;
this.PROPFINDCheck.AutoCheck = false;
this.PROPFINDCheck.AutoSize = true;
CheckBox propfindCheck1 = this.PROPFINDCheck;
point1 = new Point(16, 200);
Point point11 = point1;
propfindCheck1.Location = point11;
this.PROPFINDCheck.Name = "PROPFINDCheck";
CheckBox propfindCheck2 = this.PROPFINDCheck;
size1 = new Size(80, 16);
Size size11 = size1;
propfindCheck2.Size = size11;
this.PROPFINDCheck.TabIndex = 12;
this.PROPFINDCheck.Text = "PROPFIND";
this.PROPFINDCheck.UseVisualStyleBackColor = true;
TextBox optionsAuthText1 = this.OPTIONSAuthText;
point1 = new Point(104, 104);
Point point12 = point1;
optionsAuthText1.Location = point12;
this.OPTIONSAuthText.Name = "OPTIONSAuthText";
this.OPTIONSAuthText.ReadOnly = true;
TextBox optionsAuthText2 = this.OPTIONSAuthText;
size1 = new Size(104, 19);
Size size12 = size1;
optionsAuthText2.Size = size12;
this.OPTIONSAuthText.TabIndex = 6;
TextBox propfindAuthText1 = this.PROPFINDAuthText;
point1 = new Point(104, 200);
Point point13 = point1;
propfindAuthText1.Location = point13;
this.PROPFINDAuthText.Name = "PROPFINDAuthText";
this.PROPFINDAuthText.ReadOnly = true;
TextBox propfindAuthText2 = this.PROPFINDAuthText;
size1 = new Size(104, 19);
Size size13 = size1;
propfindAuthText2.Size = size13;
this.PROPFINDAuthText.TabIndex = 13;
this.DetailTextBox.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
TextBox detailTextBox1 = this.DetailTextBox;
point1 = new Point(16, 232);
Point point14 = point1;
detailTextBox1.Location = point14;
this.DetailTextBox.Multiline = true;
this.DetailTextBox.Name = "DetailTextBox";
this.DetailTextBox.ReadOnly = true;
TextBox detailTextBox2 = this.DetailTextBox;
size1 = new Size(368, 74);
Size size14 = size1;
detailTextBox2.Size = size14;
this.DetailTextBox.TabIndex = 15;
this.CertAvailCheckBox.AutoCheck = false;
this.CertAvailCheckBox.AutoSize = true;
CheckBox certAvailCheckBox1 = this.CertAvailCheckBox;
point1 = new Point(8, 72);
Point point15 = point1;
certAvailCheckBox1.Location = point15;
this.CertAvailCheckBox.Name = "CertAvailCheckBox";
CheckBox certAvailCheckBox2 = this.CertAvailCheckBox;
size1 = new Size(139, 16);
Size size15 = size1;
certAvailCheckBox2.Size = size15;
this.CertAvailCheckBox.TabIndex = 2;
this.CertAvailCheckBox.Text = "Certificate Availabitily";
this.CertAvailCheckBox.UseVisualStyleBackColor = true;
this.CertChainCheckBox.AutoCheck = false;
this.CertChainCheckBox.AutoSize = true;
CheckBox certChainCheckBox1 = this.CertChainCheckBox;
point1 = new Point(8, 24);
Point point16 = point1;
certChainCheckBox1.Location = point16;
this.CertChainCheckBox.Name = "CertChainCheckBox";
CheckBox certChainCheckBox2 = this.CertChainCheckBox;
size1 = new Size(111, 16);
Size size16 = size1;
certChainCheckBox2.Size = size16;
this.CertChainCheckBox.TabIndex = 0;
this.CertChainCheckBox.Text = "Certificate Chain";
this.CertChainCheckBox.UseVisualStyleBackColor = true;
this.CertNameCheckBox.AutoCheck = false;
this.CertNameCheckBox.AutoSize = true;
CheckBox certNameCheckBox1 = this.CertNameCheckBox;
point1 = new Point(8, 48);
Point point17 = point1;
certNameCheckBox1.Location = point17;
this.CertNameCheckBox.Name = "CertNameCheckBox";
CheckBox certNameCheckBox2 = this.CertNameCheckBox;
size1 = new Size(111, 16);
Size size17 = size1;
certNameCheckBox2.Size = size17;
this.CertNameCheckBox.TabIndex = 1;
this.CertNameCheckBox.Text = "Certificate Name";
this.CertNameCheckBox.UseVisualStyleBackColor = true;
this.GroupBox1.Controls.Add((Control) this.Label3);
this.GroupBox1.Controls.Add((Control) this.TextBoxSSLVersion);
this.GroupBox1.Controls.Add((Control) this.CertChainCheckBox);
this.GroupBox1.Controls.Add((Control) this.CertAvailCheckBox);
this.GroupBox1.Controls.Add((Control) this.CertNameCheckBox);
GroupBox groupBox1_1 = this.GroupBox1;
point1 = new Point(216, 32);
Point point18 = point1;
groupBox1_1.Location = point18;
this.GroupBox1.Name = "GroupBox1";
GroupBox groupBox1_2 = this.GroupBox1;
size1 = new Size(168, 136);
Size size18 = size1;
groupBox1_2.Size = size18;
this.GroupBox1.TabIndex = 14;
this.GroupBox1.TabStop = false;
this.GroupBox1.Text = "Security";
this.Label3.AutoSize = true;
Label label3_1 = this.Label3;
point1 = new Point(8, 96);
Point point19 = point1;
label3_1.Location = point19;
this.Label3.Name = "Label3";
Label label3_2 = this.Label3;
size1 = new Size(68, 12);
Size size19 = size1;
label3_2.Size = size19;
this.Label3.TabIndex = 10;
this.Label3.Text = "SSL Version";
this.Label3.TextAlign = ContentAlignment.MiddleLeft;
TextBox textBoxSslVersion1 = this.TextBoxSSLVersion;
point1 = new Point(8, 112);
Point point20 = point1;
textBoxSslVersion1.Location = point20;
this.TextBoxSSLVersion.Name = "TextBoxSSLVersion";
this.TextBoxSSLVersion.ReadOnly = true;
TextBox textBoxSslVersion2 = this.TextBoxSSLVersion;
size1 = new Size(152, 19);
Size size20 = size1;
textBoxSslVersion2.Size = size20;
this.TextBoxSSLVersion.TabIndex = 3;
this.DAVClass3Check.AutoCheck = false;
this.DAVClass3Check.AutoSize = true;
CheckBox davClass3Check1 = this.DAVClass3Check;
point1 = new Point(32, 176);
Point point21 = point1;
davClass3Check1.Location = point21;
this.DAVClass3Check.Name = "DAVClass3Check";
CheckBox davClass3Check2 = this.DAVClass3Check;
size1 = new Size(89, 16);
Size size21 = size1;
davClass3Check2.Size = size21;
this.DAVClass3Check.TabIndex = 9;
this.DAVClass3Check.Text = "DAV class 3";
this.DAVClass3Check.UseVisualStyleBackColor = true;
this.MethodsTextBox.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
TextBox methodsTextBox1 = this.MethodsTextBox;
point1 = new Point(152, 176);
Point point22 = point1;
methodsTextBox1.Location = point22;
this.MethodsTextBox.Name = "MethodsTextBox";
this.MethodsTextBox.ReadOnly = true;
TextBox methodsTextBox2 = this.MethodsTextBox;
size1 = new Size(232, 19);
Size size22 = size1;
methodsTextBox2.Size = size22;
this.MethodsTextBox.TabIndex = 11;
this.Label2.AutoSize = true;
Label label2_1 = this.Label2;
point1 = new Point(152, 160);
Point point23 = point1;
label2_1.Location = point23;
this.Label2.Name = "Label2";
Label label2_2 = this.Label2;
size1 = new Size(48, 12);
Size size23 = size1;
label2_2.Size = size23;
this.Label2.TabIndex = 10;
this.Label2.Text = "Methods";
this.Label2.TextAlign = ContentAlignment.MiddleLeft;
this.AutoScaleDimensions = new SizeF(6f, 12f);
this.AutoScaleMode = AutoScaleMode.Font;
size1 = new Size(392, 346);
this.ClientSize = size1;
this.Controls.Add((Control) this.Label2);
this.Controls.Add((Control) this.MethodsTextBox);
this.Controls.Add((Control) this.DAVClass3Check);
this.Controls.Add((Control) this.GroupBox1);
this.Controls.Add((Control) this.DetailTextBox);
this.Controls.Add((Control) this.PROPFINDAuthText);
this.Controls.Add((Control) this.OPTIONSAuthText);
this.Controls.Add((Control) this.DAVClass2Check);
this.Controls.Add((Control) this.DAVClass1Check);
this.Controls.Add((Control) this.OPTIONSCheck);
this.Controls.Add((Control) this.PROPFINDCheck);
this.Controls.Add((Control) this.HTTP11Check);
this.Controls.Add((Control) this.ValidURICheck);
this.Controls.Add((Control) this.OKButton);
this.Controls.Add((Control) this.Label1);
this.Controls.Add((Control) this.UriTextBox);
this.Controls.Add((Control) this.ResolveDNSCheck);
this.MaximizeBox = false;
this.MinimizeBox = false;
size1 = new Size(408, 384);
this.MinimumSize = size1;
this.Name = nameof (ConnectionTestForm);
this.ShowInTaskbar = false;
this.StartPosition = FormStartPosition.CenterParent;
this.Text = "Connection Test";
this.GroupBox1.ResumeLayout(false);
this.GroupBox1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
internal virtual CheckBox OPTIONSCheck
{
get
{
return this._OPTIONSCheck;
}
[MethodImpl(MethodImplOptions.Synchronized)] set
{
this._OPTIONSCheck = value;
}
}
internal virtual CheckBox DAVClass1Check
{
get
{
return this._DAVClass1Check;
}
[MethodImpl(MethodImplOptions.Synchronized)] set
{
this._DAVClass1Check = value;
}
}
internal virtual CheckBox DAVClass2Check
{
get
{
return this._DAVClass2Check;
}
[MethodImpl(MethodImplOptions.Synchronized)] set
{
this._DAVClass2Check = value;
}
}
internal virtual CheckBox ResolveDNSCheck
{
get
{
return this._ResolveDNSCheck;
}
[MethodImpl(MethodImplOptions.Synchronized)] set
{
this._ResolveDNSCheck = value;
}
}
internal virtual TextBox UriTextBox
{
get
{
return this._UriTextBox;
}
[MethodImpl(MethodImplOptions.Synchronized)] set
{
this._UriTextBox = value;
}
}
internal virtual Label Label1
{
get
{
return this._Label1;
}
[MethodImpl(MethodImplOptions.Synchronized)] set
{
this._Label1 = value;
}
}
internal virtual Button OKButton
{
get
{
return this._OKButton;
}
[MethodImpl(MethodImplOptions.Synchronized)] set
{
this._OKButton = value;
}
}
internal virtual CheckBox ValidURICheck
{
get
{
return this._ValidURICheck;
}
[MethodImpl(MethodImplOptions.Synchronized)] set
{
this._ValidURICheck = value;
}
}
internal virtual System.Windows.Forms.Timer Timer1
{
get
{
return this._Timer1;
}
[MethodImpl(MethodImplOptions.Synchronized)] set
{
EventHandler eventHandler = new EventHandler(this.Timer1_Tick);
if (this._Timer1 != null)
this._Timer1.Tick -= eventHandler;
this._Timer1 = value;
if (this._Timer1 == null)
return;
this._Timer1.Tick += eventHandler;
}
}
internal virtual CheckBox HTTP11Check
{
get
{
return this._HTTP11Check;
}
[MethodImpl(MethodImplOptions.Synchronized)] set
{
this._HTTP11Check = value;
}
}
internal virtual CheckBox PROPFINDCheck
{
get
{
return this._PROPFINDCheck;
}
[MethodImpl(MethodImplOptions.Synchronized)] set
{
this._PROPFINDCheck = value;
}
}
internal virtual TextBox OPTIONSAuthText
{
get
{
return this._OPTIONSAuthText;
}
[MethodImpl(MethodImplOptions.Synchronized)] set
{
this._OPTIONSAuthText = value;
}
}
internal virtual TextBox PROPFINDAuthText
{
get
{
return this._PROPFINDAuthText;
}
[MethodImpl(MethodImplOptions.Synchronized)] set
{
this._PROPFINDAuthText = value;
}
}
internal virtual TextBox DetailTextBox
{
get
{
return this._DetailTextBox;
}
[MethodImpl(MethodImplOptions.Synchronized)] set
{
this._DetailTextBox = value;
}
}
internal virtual CheckBox CertAvailCheckBox
{
get
{
return this._CertAvailCheckBox;
}
[MethodImpl(MethodImplOptions.Synchronized)] set
{
this._CertAvailCheckBox = value;
}
}
internal virtual CheckBox CertChainCheckBox
{
get
{
return this._CertChainCheckBox;
}
[MethodImpl(MethodImplOptions.Synchronized)] set
{
this._CertChainCheckBox = value;
}
}
internal virtual CheckBox CertNameCheckBox
{
get
{
return this._CertNameCheckBox;
}
[MethodImpl(MethodImplOptions.Synchronized)] set
{
this._CertNameCheckBox = value;
}
}
internal virtual GroupBox GroupBox1
{
get
{
return this._GroupBox1;
}
[MethodImpl(MethodImplOptions.Synchronized)] set
{
this._GroupBox1 = value;
}
}
internal virtual CheckBox DAVClass3Check
{
get
{
return this._DAVClass3Check;
}
[MethodImpl(MethodImplOptions.Synchronized)] set
{
this._DAVClass3Check = value;
}
}
internal virtual TextBox MethodsTextBox
{
get
{
return this._MethodsTextBox;
}
[MethodImpl(MethodImplOptions.Synchronized)] set
{
this._MethodsTextBox = value;
}
}
internal virtual Label Label2
{
get
{
return this._Label2;
}
[MethodImpl(MethodImplOptions.Synchronized)] set
{
this._Label2 = value;
}
}
internal virtual TextBox TextBoxSSLVersion
{
get
{
return this._TextBoxSSLVersion;
}
[MethodImpl(MethodImplOptions.Synchronized)] set
{
this._TextBoxSSLVersion = value;
}
}
internal virtual Label Label3
{
get
{
return this._Label3;
}
[MethodImpl(MethodImplOptions.Synchronized)] set
{
this._Label3 = value;
}
}
public string TargetUri
{
get
{
return this.UriTextBox.Text;
}
set
{
this.UriTextBox.Text = value;
}
}
public string Username
{
get
{
return this.puser;
}
set
{
this.puser = value;
}
}
public string Password
{
get
{
return this.ppass;
}
set
{
this.ppass = value;
}
}
public ConnectionSetting Setting
{
get
{
return this.pSetting;
}
set
{
this.pSetting = value;
}
}
private void Check()
{
Uri result = (Uri) null;
if (!Uri.TryCreate(this.UriTextBox.Text, UriKind.Absolute, out result))
return;
this.ValidURICheck.Checked = true;
if (Operators.CompareString(result.Scheme, "https", false) == 0)
{
this.CertChainCheckBox.Enabled = true;
this.CertNameCheckBox.Enabled = true;
this.CertAvailCheckBox.Enabled = true;
}
else
{
this.CertChainCheckBox.Enabled = false;
this.CertNameCheckBox.Enabled = false;
this.CertAvailCheckBox.Enabled = false;
}
IPAddress address = (IPAddress) null;
if (IPAddress.TryParse(result.Host, out address))
{
this.ResolveDNSCheck.CheckState = CheckState.Indeterminate;
}
else
{
try
{
Dns.GetHostEntry(result.Host);
}
catch (Exception ex)
{
ProjectData.SetProjectError(ex);
this.DetailTextBox.Text = ex.Message;
ProjectData.ClearProjectError();
return;
}
this.ResolveDNSCheck.Checked = true;
}
WebdavFs client = this.Setting.InnerGetClient();
client.GroupName = "Test";
this.Setting.CertErrorIgnores = SslPolicyErrors.RemoteCertificateNotAvailable | SslPolicyErrors.RemoteCertificateNameMismatch | SslPolicyErrors.RemoteCertificateChainErrors;
try
{
DavResourceOptions resourceOptions = client.GetResourceOptions(result);
if (resourceOptions.ProtocolVersion > new Version(1, 0))
this.HTTP11Check.Checked = true;
this.OPTIONSCheck.Checked = true;
this.OPTIONSAuthText.Text = client.LastAuthType;
this.DAVClass1Check.Checked = resourceOptions.DAVSupported("1");
this.DAVClass2Check.Checked = resourceOptions.DAVSupported("2");
this.DAVClass3Check.Checked = resourceOptions.DAVSupported("3");
this.MethodsTextBox.Text = resourceOptions.AllowedMethods;
this.TextBoxSSLVersion.Text = resourceOptions.SSLVersionString;
}
catch (Exception ex)
{
ProjectData.SetProjectError(ex);
Exception exception = ex;
this.DetailTextBox.Text = exception.Message + "\r\n" + exception.StackTrace;
client.ResetConnection();
ProjectData.ClearProjectError();
return;
}
finally
{
if (Operators.CompareString(result.Scheme, "https", false) == 0)
{
this.CertChainCheckBox.Checked = (this.Setting.LastCertError & SslPolicyErrors.RemoteCertificateChainErrors) == SslPolicyErrors.None;
this.CertNameCheckBox.Checked = (this.Setting.LastCertError & SslPolicyErrors.RemoteCertificateNameMismatch) == SslPolicyErrors.None;
this.CertAvailCheckBox.Checked = (this.Setting.LastCertError & SslPolicyErrors.RemoteCertificateNotAvailable) == SslPolicyErrors.None;
}
}
try
{
client.GetInfoAndEntries(result);
this.PROPFINDCheck.Checked = true;
this.PROPFINDAuthText.Text = client.LastAuthType;
}
catch (Exception ex)
{
ProjectData.SetProjectError(ex);
Exception exception = ex;
this.DetailTextBox.Text = exception.Message + "\r\n" + exception.StackTrace;
client.ResetConnection();
ProjectData.ClearProjectError();
return;
}
client.ResetConnection();
}
private void Timer1_Tick(object sender, EventArgs e)
{
this.Timer1.Stop();
Cursor.Current = Cursors.WaitCursor;
this.Check();
Cursor.Current = Cursors.Default;
this.OKButton.Enabled = true;
}
private void ConnectionTestForm_Load(object sender, EventArgs e)
{
this.Icon = ConnectionSetting.GetDefaultFavicon();
this.Timer1.Start();
this.OKButton.Enabled = false;
}
}
}

View File

@@ -0,0 +1,120 @@
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,188 @@
// Decompiled with JetBrains decompiler
// Type: Rei.Fs.Webdav.DavResourceOptions
// Assembly: Rei.Fs.Webdav, Version=1.13.2.18288, Culture=neutral, PublicKeyToken=null
// MVID: D30DD1E3-8520-48B5-AAE5-C87970350A82
// Assembly location: F:\Eigene Dateien\Dropbox\portable Collection\Progs\CarotDAV\Rei.Fs.Webdav.dll
using Microsoft.VisualBasic.CompilerServices;
using System;
using System.Net;
using System.Reflection;
using System.Runtime.CompilerServices;
namespace Rei.Fs.Webdav
{
public class DavResourceOptions
{
private HttpWebResponse pResponse2;
private Uri pResUri;
private Version pVersion;
private string pAllowHeader;
private string pDAVHeader;
private string pSSLVersionString;
internal DavResourceOptions(Uri responseuri, HttpWebResponse response)
{
this.pResUri = responseuri;
this.pVersion = response.ProtocolVersion;
this.pAllowHeader = response.Headers["Allow"];
this.pDAVHeader = response.Headers["DAV"];
this.pSSLVersionString = "";
FieldInfo field1 = typeof (HttpWebResponse).GetField("m_ConnectStream", BindingFlags.Instance | BindingFlags.NonPublic);
if (field1 == null)
return;
object objectValue1 = RuntimeHelpers.GetObjectValue(field1.GetValue((object) response));
FieldInfo field2 = objectValue1.GetType().GetField("m_Connection", BindingFlags.Instance | BindingFlags.NonPublic);
if (field2 == null)
return;
object objectValue2 = RuntimeHelpers.GetObjectValue(field2.GetValue(RuntimeHelpers.GetObjectValue(objectValue1)));
FieldInfo field3 = objectValue2.GetType().BaseType.GetField("m_NetworkStream", BindingFlags.Instance | BindingFlags.NonPublic);
if (field3 == null)
return;
object objectValue3 = RuntimeHelpers.GetObjectValue(field3.GetValue(RuntimeHelpers.GetObjectValue(objectValue2)));
FieldInfo field4 = objectValue3.GetType().GetField("m_Worker", BindingFlags.Instance | BindingFlags.NonPublic);
if (field4 == null)
return;
object objectValue4 = RuntimeHelpers.GetObjectValue(field4.GetValue(RuntimeHelpers.GetObjectValue(objectValue3)));
PropertyInfo property = objectValue4.GetType().GetProperty("SslProtocol", BindingFlags.Instance | BindingFlags.NonPublic);
if (property == null)
return;
this.pSSLVersionString = RuntimeHelpers.GetObjectValue(property.GetValue(RuntimeHelpers.GetObjectValue(objectValue4), (object[]) null)).ToString().ToUpperInvariant();
}
public Uri ResponseUri
{
get
{
return this.pResUri;
}
}
public Version ProtocolVersion
{
get
{
return this.pVersion;
}
}
public bool MethodAllowed(string method)
{
if (this.pAllowHeader == null)
return false;
string[] strArray1 = this.pAllowHeader.ToUpper().Split(',');
method = method.ToUpper();
string[] strArray2 = strArray1;
int index = 0;
while (index < strArray2.Length)
{
if (Operators.CompareString(strArray2[index].Trim(), method, false) == 0)
return true;
checked { ++index; }
}
return false;
}
public string AllowedMethods
{
get
{
if (this.pAllowHeader == null)
return "";
return this.pAllowHeader;
}
}
public bool DAVSupported(string version)
{
if (this.ProtocolVersion.CompareTo(HttpVersion.Version11) < 0 || this.pDAVHeader == null)
return false;
string[] strArray1 = this.pDAVHeader.ToUpper().Split(new char[1]
{
','
}, StringSplitOptions.RemoveEmptyEntries);
version = version.Trim().ToUpper();
string[] strArray2 = strArray1;
int index = 0;
while (index < strArray2.Length)
{
if (Operators.CompareString(strArray2[index].Trim(), version, false) == 0)
return true;
checked { ++index; }
}
return false;
}
public bool CanRead
{
get
{
return this.MethodAllowed("GET");
}
}
public bool CanWrite
{
get
{
return this.MethodAllowed("PUT");
}
}
public bool CanDelete
{
get
{
return this.MethodAllowed("DELETE");
}
}
public bool CanCreateCollection
{
get
{
return this.MethodAllowed("MKCOL");
}
}
public bool CanGetProperty
{
get
{
return this.MethodAllowed("PROPFIND");
}
}
public bool CanSetProperty
{
get
{
return this.MethodAllowed("PROPPATCH");
}
}
public bool CanMove
{
get
{
return this.MethodAllowed("MOVE");
}
}
public bool CanCopy
{
get
{
return this.MethodAllowed("COPY");
}
}
public string SSLVersionString
{
get
{
return this.pSSLVersionString;
}
}
}
}

View File

@@ -0,0 +1,18 @@
// Decompiled with JetBrains decompiler
// Type: Rei.Fs.Webdav.My.MyApplication
// Assembly: Rei.Fs.Webdav, Version=1.13.2.18288, Culture=neutral, PublicKeyToken=null
// MVID: D30DD1E3-8520-48B5-AAE5-C87970350A82
// Assembly location: F:\Eigene Dateien\Dropbox\portable Collection\Progs\CarotDAV\Rei.Fs.Webdav.dll
using Microsoft.VisualBasic.ApplicationServices;
using System.CodeDom.Compiler;
using System.ComponentModel;
namespace Rei.Fs.Webdav.My
{
[GeneratedCode("MyTemplate", "8.0.0.0")]
[EditorBrowsable(EditorBrowsableState.Never)]
internal class MyApplication : ApplicationBase
{
}
}

View File

@@ -0,0 +1,24 @@
// Decompiled with JetBrains decompiler
// Type: Rei.Fs.Webdav.My.MyComputer
// Assembly: Rei.Fs.Webdav, Version=1.13.2.18288, Culture=neutral, PublicKeyToken=null
// MVID: D30DD1E3-8520-48B5-AAE5-C87970350A82
// Assembly location: F:\Eigene Dateien\Dropbox\portable Collection\Progs\CarotDAV\Rei.Fs.Webdav.dll
using Microsoft.VisualBasic.Devices;
using System.CodeDom.Compiler;
using System.ComponentModel;
using System.Diagnostics;
namespace Rei.Fs.Webdav.My
{
[EditorBrowsable(EditorBrowsableState.Never)]
[GeneratedCode("MyTemplate", "8.0.0.0")]
internal class MyComputer : Computer
{
[DebuggerHidden]
[EditorBrowsable(EditorBrowsableState.Never)]
public MyComputer()
{
}
}
}

View File

@@ -0,0 +1,148 @@
// Decompiled with JetBrains decompiler
// Type: Rei.Fs.Webdav.My.MyProject
// Assembly: Rei.Fs.Webdav, Version=1.13.2.18288, Culture=neutral, PublicKeyToken=null
// MVID: D30DD1E3-8520-48B5-AAE5-C87970350A82
// Assembly location: F:\Eigene Dateien\Dropbox\portable Collection\Progs\CarotDAV\Rei.Fs.Webdav.dll
using Microsoft.VisualBasic;
using Microsoft.VisualBasic.ApplicationServices;
using Microsoft.VisualBasic.CompilerServices;
using Microsoft.VisualBasic.MyServices.Internal;
using System;
using System.CodeDom.Compiler;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
namespace Rei.Fs.Webdav.My
{
[StandardModule]
[HideModuleName]
[GeneratedCode("MyTemplate", "8.0.0.0")]
internal sealed class MyProject
{
private static readonly MyProject.ThreadSafeObjectProvider<MyComputer> m_ComputerObjectProvider = new MyProject.ThreadSafeObjectProvider<MyComputer>();
private static readonly MyProject.ThreadSafeObjectProvider<MyApplication> m_AppObjectProvider = new MyProject.ThreadSafeObjectProvider<MyApplication>();
private static readonly MyProject.ThreadSafeObjectProvider<User> m_UserObjectProvider = new MyProject.ThreadSafeObjectProvider<User>();
private static readonly MyProject.ThreadSafeObjectProvider<MyProject.MyWebServices> m_MyWebServicesObjectProvider = new MyProject.ThreadSafeObjectProvider<MyProject.MyWebServices>();
[HelpKeyword("My.Computer")]
internal static MyComputer Computer
{
[DebuggerHidden] get
{
return MyProject.m_ComputerObjectProvider.GetInstance;
}
}
[HelpKeyword("My.Application")]
internal static MyApplication Application
{
[DebuggerHidden] get
{
return MyProject.m_AppObjectProvider.GetInstance;
}
}
[HelpKeyword("My.User")]
internal static User User
{
[DebuggerHidden] get
{
return MyProject.m_UserObjectProvider.GetInstance;
}
}
[HelpKeyword("My.WebServices")]
internal static MyProject.MyWebServices WebServices
{
[DebuggerHidden] get
{
return MyProject.m_MyWebServicesObjectProvider.GetInstance;
}
}
[EditorBrowsable(EditorBrowsableState.Never)]
[MyGroupCollection("System.Web.Services.Protocols.SoapHttpClientProtocol", "Create__Instance__", "Dispose__Instance__", "")]
internal sealed class MyWebServices
{
[EditorBrowsable(EditorBrowsableState.Never)]
[DebuggerHidden]
public override bool Equals(object o)
{
return base.Equals(RuntimeHelpers.GetObjectValue(o));
}
[EditorBrowsable(EditorBrowsableState.Never)]
[DebuggerHidden]
public override int GetHashCode()
{
return base.GetHashCode();
}
[EditorBrowsable(EditorBrowsableState.Never)]
[DebuggerHidden]
internal new Type GetType()
{
return typeof (MyProject.MyWebServices);
}
[DebuggerHidden]
[EditorBrowsable(EditorBrowsableState.Never)]
public override string ToString()
{
return base.ToString();
}
[DebuggerHidden]
private static T Create__Instance__<T>(T instance) where T : new()
{
if ((object) instance == null)
return Activator.CreateInstance<T>();
return instance;
}
[DebuggerHidden]
private void Dispose__Instance__<T>(ref T instance)
{
instance = default (T);
}
[DebuggerHidden]
[EditorBrowsable(EditorBrowsableState.Never)]
public MyWebServices()
{
}
}
[EditorBrowsable(EditorBrowsableState.Never)]
[ComVisible(false)]
internal sealed class ThreadSafeObjectProvider<T> where T : new()
{
private readonly ContextValue<T> m_Context;
internal T GetInstance
{
[DebuggerHidden] get
{
T instance = this.m_Context.Value;
if ((object) instance == null)
{
instance = Activator.CreateInstance<T>();
this.m_Context.Value = instance;
}
return instance;
}
}
[DebuggerHidden]
[EditorBrowsable(EditorBrowsableState.Never)]
public ThreadSafeObjectProvider()
{
this.m_Context = new ContextValue<T>();
}
}
}
}

View File

@@ -0,0 +1,29 @@
// Decompiled with JetBrains decompiler
// Type: Rei.Fs.Webdav.My.MySettings
// Assembly: Rei.Fs.Webdav, Version=1.13.2.18288, Culture=neutral, PublicKeyToken=null
// MVID: D30DD1E3-8520-48B5-AAE5-C87970350A82
// Assembly location: F:\Eigene Dateien\Dropbox\portable Collection\Progs\CarotDAV\Rei.Fs.Webdav.dll
using System.CodeDom.Compiler;
using System.ComponentModel;
using System.Configuration;
using System.Runtime.CompilerServices;
namespace Rei.Fs.Webdav.My
{
[CompilerGenerated]
[EditorBrowsable(EditorBrowsableState.Advanced)]
[GeneratedCode("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
internal sealed class MySettings : ApplicationSettingsBase
{
private static MySettings defaultInstance = (MySettings) SettingsBase.Synchronized((SettingsBase) new MySettings());
public static MySettings Default
{
get
{
return MySettings.defaultInstance;
}
}
}
}

View File

@@ -0,0 +1,30 @@
// Decompiled with JetBrains decompiler
// Type: Rei.Fs.Webdav.My.MySettingsProperty
// Assembly: Rei.Fs.Webdav, Version=1.13.2.18288, Culture=neutral, PublicKeyToken=null
// MVID: D30DD1E3-8520-48B5-AAE5-C87970350A82
// Assembly location: F:\Eigene Dateien\Dropbox\portable Collection\Progs\CarotDAV\Rei.Fs.Webdav.dll
using Microsoft.VisualBasic;
using Microsoft.VisualBasic.CompilerServices;
using System.ComponentModel.Design;
using System.Diagnostics;
using System.Runtime.CompilerServices;
namespace Rei.Fs.Webdav.My
{
[HideModuleName]
[StandardModule]
[CompilerGenerated]
[DebuggerNonUserCode]
internal sealed class MySettingsProperty
{
[HelpKeyword("My.Settings")]
internal static MySettings Settings
{
get
{
return MySettings.Default;
}
}
}
}

View File

@@ -0,0 +1,61 @@
// Decompiled with JetBrains decompiler
// Type: Rei.Fs.Webdav.My.Resources.Resources
// Assembly: Rei.Fs.Webdav, Version=1.13.2.18288, Culture=neutral, PublicKeyToken=null
// MVID: D30DD1E3-8520-48B5-AAE5-C87970350A82
// Assembly location: F:\Eigene Dateien\Dropbox\portable Collection\Progs\CarotDAV\Rei.Fs.Webdav.dll
using Microsoft.VisualBasic;
using Microsoft.VisualBasic.CompilerServices;
using System.CodeDom.Compiler;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.Globalization;
using System.Resources;
using System.Runtime.CompilerServices;
namespace Rei.Fs.Webdav.My.Resources
{
[StandardModule]
[GeneratedCode("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
[HideModuleName]
[CompilerGenerated]
[DebuggerNonUserCode]
internal sealed class Resources
{
private static ResourceManager resourceMan;
private static CultureInfo resourceCulture;
[EditorBrowsable(EditorBrowsableState.Advanced)]
internal static ResourceManager ResourceManager
{
get
{
if (object.ReferenceEquals((object) Rei.Fs.Webdav.My.Resources.Resources.resourceMan, (object) null))
Rei.Fs.Webdav.My.Resources.Resources.resourceMan = new ResourceManager("Rei.Fs.Webdav.Resources", typeof (Rei.Fs.Webdav.My.Resources.Resources).Assembly);
return Rei.Fs.Webdav.My.Resources.Resources.resourceMan;
}
}
[EditorBrowsable(EditorBrowsableState.Advanced)]
internal static CultureInfo Culture
{
get
{
return Rei.Fs.Webdav.My.Resources.Resources.resourceCulture;
}
set
{
Rei.Fs.Webdav.My.Resources.Resources.resourceCulture = value;
}
}
internal static Icon WebDAVFolder
{
get
{
return (Icon) RuntimeHelpers.GetObjectValue(Rei.Fs.Webdav.My.Resources.Resources.ResourceManager.GetObject(nameof (WebDAVFolder), Rei.Fs.Webdav.My.Resources.Resources.resourceCulture));
}
}
}
}

View File

@@ -0,0 +1,143 @@
// Decompiled with JetBrains decompiler
// Type: Rei.Fs.Webdav.PassportAuthHelper
// Assembly: Rei.Fs.Webdav, Version=1.13.2.18288, Culture=neutral, PublicKeyToken=null
// MVID: D30DD1E3-8520-48B5-AAE5-C87970350A82
// Assembly location: F:\Eigene Dateien\Dropbox\portable Collection\Progs\CarotDAV\Rei.Fs.Webdav.dll
using Microsoft.VisualBasic.CompilerServices;
using System;
using System.IO;
using System.Net;
namespace Rei.Fs.Webdav
{
public class PassportAuthHelper
{
private static Uri _InitialRedirectorUri = new Uri("https://nexus.passport.com/rdr/pprdr.asp");
private static Uri _LoginUri;
public string UserAgent;
public int ReadWriteTimeout;
public int ConnectTimeout;
public CookieContainer CookieContainer;
public IWebProxy Proxy;
public string GroupName;
public static Uri InitialRedirectorUri
{
get
{
return PassportAuthHelper._InitialRedirectorUri;
}
}
public static bool CheckPassportAuth(HttpWebResponse res)
{
return res.StatusCode == HttpStatusCode.Found && res.Headers[HttpResponseHeader.WwwAuthenticate] != null && res.Headers[HttpResponseHeader.WwwAuthenticate].Trim().StartsWith("Passport1.4 ");
}
private HttpWebRequest CreateRequest(Uri uri)
{
HttpWebRequest httpWebRequest = (HttpWebRequest) WebRequest.Create(uri);
httpWebRequest.UserAgent = this.UserAgent;
httpWebRequest.Proxy = this.Proxy;
httpWebRequest.ReadWriteTimeout = this.ReadWriteTimeout;
httpWebRequest.Timeout = this.ConnectTimeout;
httpWebRequest.CookieContainer = this.CookieContainer;
httpWebRequest.ConnectionGroupName = this.GroupName;
httpWebRequest.KeepAlive = false;
httpWebRequest.PreAuthenticate = false;
httpWebRequest.AllowAutoRedirect = false;
return httpWebRequest;
}
public Uri GetPassportLoginUri()
{
if ((object) PassportAuthHelper._LoginUri != null)
return PassportAuthHelper._LoginUri;
try
{
HttpWebRequest request = this.CreateRequest(PassportAuthHelper._InitialRedirectorUri);
request.Method = "GET";
using (HttpWebResponse response = (HttpWebResponse) request.GetResponse())
{
string[] strArray = response.Headers["PassportURLs"].Split(',');
int num1 = 0;
int num2 = checked (strArray.Length - 1);
int index = num1;
while (index <= num2)
{
if (strArray[index].Contains("DALogin"))
{
PassportAuthHelper._LoginUri = new Uri("https://" + strArray[index].Substring(checked (strArray[index].IndexOf("=") + 1)));
return PassportAuthHelper._LoginUri;
}
checked { ++index; }
}
}
throw new UnauthorizedException("Cannot access Passport authentication system.", (Exception) null, false);
}
catch (Exception ex)
{
ProjectData.SetProjectError(ex);
throw new UnauthorizedException("Cannot access Passport authentication system.", ex, false);
}
}
public string GetPassportToken(HttpWebResponse orgres, string user, string pass)
{
string str1 = orgres.Headers[HttpResponseHeader.WwwAuthenticate].Trim();
int startIndex = str1.IndexOf(" ");
string str2 = str1.Substring(startIndex).Trim();
string str3 = string.Format("Passport1.4 sign-in={0},pwd={1},OrgVerb={2},OrgUrl={3},{4}", (object) Uri.EscapeDataString(user), (object) Uri.EscapeDataString(pass), (object) orgres.Method, (object) orgres.ResponseUri.AbsoluteUri, (object) str2);
try
{
HttpWebRequest request = this.CreateRequest(this.GetPassportLoginUri());
request.Method = "GET";
request.Headers.Add(HttpRequestHeader.Authorization, str3);
using (HttpWebResponse response = (HttpWebResponse) request.GetResponse())
{
string str4 = response.Headers["Authentication-Info"].Trim();
string[] strArray = str4.Substring(checked (str4.IndexOf(' ') + 1)).Split(',');
int num1 = 0;
int num2 = checked (strArray.Length - 1);
int index = num1;
while (index <= num2)
{
if (strArray[index].Contains("from-PP"))
return "Passport1.4 " + strArray[index];
checked { ++index; }
}
}
throw new UnauthorizedException("Passport login failure", (Exception) null, true);
}
catch (WebException ex)
{
ProjectData.SetProjectError((Exception) ex);
WebException webException = ex;
using (WebResponse response = webException.Response)
{
using (new StreamReader(response.GetResponseStream()))
;
}
throw new UnauthorizedException("Passport login failure", (Exception) webException, true);
}
catch (Exception ex)
{
ProjectData.SetProjectError(ex);
throw new UnauthorizedException("Passport login failure", ex, true);
}
}
public bool ResetConnection()
{
bool flag = true;
if ((object) PassportAuthHelper._LoginUri != null)
{
ServicePoint servicePoint = ServicePointManager.FindServicePoint(PassportAuthHelper._LoginUri);
flag &= servicePoint.CloseConnectionGroup("");
}
ServicePoint servicePoint1 = ServicePointManager.FindServicePoint(PassportAuthHelper._InitialRedirectorUri);
return flag & servicePoint1.CloseConnectionGroup("");
}
}
}

View File

@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--Project was exported from assembly: F:\Eigene Dateien\Dropbox\portable Collection\Progs\CarotDAV\Rei.Fs.Webdav.dll-->
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{D0DC76C1-5AA0-466F-84D3-D6C4DEB083DE}</ProjectGuid>
<OutputType>Library</OutputType>
<AssemblyName>Rei.Fs.Webdav</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<ApplicationVersion>1.13.2.18288</ApplicationVersion>
<FileAlignment>512</FileAlignment>
<RootNamespace>Rei.Fs.Webdav</RootNamespace>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.VisualBasic" />
<Reference Include="Rei.Fs">
<HintPath>lib\Rei.Fs.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="System.Security" />
</ItemGroup>
<ItemGroup>
<Compile Include="ConnectionSetting.cs" />
<Compile Include="ConnectionSettingForm.cs" />
<Compile Include="ConnectionTestForm.cs" />
<Compile Include="DavResourceOptions.cs" />
<Compile Include="PassportAuthHelper.cs" />
<Compile Include="WebdavFs.cs" />
<Compile Include="WsseClient.cs" />
<Compile Include="My\MyApplication.cs" />
<Compile Include="My\MyComputer.cs" />
<Compile Include="My\MyProject.cs" />
<Compile Include="My\MySettings.cs" />
<Compile Include="My\MySettingsProperty.cs" />
<Compile Include="My\Resources\Resources.cs" />
<Compile Include="AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="ConnectionSettingForm.resx" />
<EmbeddedResource Include="ConnectionTestForm.resx" />
<EmbeddedResource Include="Resources.resx" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@@ -0,0 +1,500 @@
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="WebDAVFolder" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAYAMDAAAAEACACoDgAAZgAAACAgAAABAAgAqAgAAA4PAAAQEAAAAQAIAGgFAAC2FwAAMDAAAAEA
IACoJQAAHh0AACAgAAABACAAqBAAAMZCAAAQEAAAAQAgAGgEAABuUwAAKAAAADAAAABgAAAAAQAIAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbVUAxV9CAMZgQwDHY0kAzmhMALhSLAC6VDIAvlg2AMJc
OgCrRRoApkIZAK5IHgC0TiYAqmhPAKQ+EACoQhUAqVMuANBqPgCbNQEAnTcGAKA7CwCiQxYAoTsAAJ44
AACdNwAAp0IMALFLEwCIOxIAZDojAFhFOgBWT0sAp0EAAKU/AACjPQAAlUQSAGtCKACtRwAAqkQAAKlD
AACtSwoAn1YnALROAACzTQAAsUsAAK9JAACNQQYAzHEtALxWAAC7VQAAuVMAALZQAAC5Wg4AxF4AAMFb
AAC+WAAA1W8QAM9pAADMZgAAy2UAAMljAADGYAAAlk0IAKxfEwDZeBkAsGomAI9hNQDalVQAhmVDANlz
AADWcAAA1W8AANNtAADRawAA04AlAIFTIwCRfWgA4nwAAN54AADcdgAA23UAAN96AgDuiAwAolwIAKKG
ZAD/8eAA74kAAO2HAADrhQAA6YMAAOeBAADKcwAA54cOAOmLFQDnlCcA451BAOOeRAD/8d8A/pgAAPyW
AAD3kQAA840AANaAAADjjQAA/50IAKxuCwD/ohEA1IoaAP+rJADBgRwA/68rAMimcgDJggMA/7U4AP+7
RADxqiIA/8ddANyWBgD/0W8A464rAMSTBgC0iQYAdGY7AIdoAAC7lQcA892IAJ+GAgCslQwA8OWXAMm8
RwD/+cAA2NBtAGReAADz8rMAeXsAAI2QBQBkZTAA///fAHaDAACYqi4AWGQoAK7EVgBZcgAASF0JANHm
mgDv/NMAP14BAFeKAABblAUAZqAYAElmIwA4aAEARoUAAEiWBQBqrywAs9+MALvklgDM8bEANmQXADaR
AgAodwAAktV4ACpmFQBywlUAVLQ1AByCAAAbfgAAIZgFABdnCQANcQAADXwAAAtqAAB80nIAz/fLAApm
BQCY45QAA2YBAACOAAAAhwAAAIQAAACBAAAAfgAAAHoAAAB5AAAAdQAAAHMAAABvAAAAbAAAAGkAAITb
hAAsry8ABZ4KABKlGABby2QArfKzABOsJgA+vUsAGLEvABqzNAActTkAH7g9ACC5QQAiu0MAkOqjACO8
RwBOzmsAJb5LACfATgB14ZAAKsNUAGbchgAux1sAL8hdAFPWegBY2H8AXtuDADHKYgA3zWgAOc5qAD7P
bQBB0XAAS9R2AIru/wCs7foAzfX9AFfV9QCA5v8AKsHrACq43gArueAAcNbwAJLd8QAZrNgAM67WAEe0
2AApqtUAB4CxABaNvAABcqQAAW+iAAJ1qADl5ucA////AKampgCZmZkAc3NzAHBwcABqamoAYmJiAF5e
XgBbW1sAWFhYAFJSUgBAQEAAJiYmAAAAAAD/////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////b7+/v7+/v2////////////////////////////////////////
////9vv7+/v78O7u7u7w8O/9+/v7+/v79v/////////////////////////////////+/v7+/v7+6OPk
5eTk4+z+/v7+/v7++//////////////////////////////////09fX19fX16OHh4eHh4ez19fX19fX+
+//////////////////////////////////08/Pz8/Pz6+be4uLe5u3z8/Pz8/P++///////////////
///////////////////08fHx8fHx6+ff39/f5+3x8fHx8fH++///////////////////////////////
///0YWFVYVVV6d/g4ODg3+1hYWFhYWH+9v/////////////////////////////////09PT09PT06vHy
8vLy4O309PT09PT0////////////////////////////////////////////6+rq6unr6+r/////////
//////////////////////////////////////////////RV8fP1/vv/////////////////////////
//////////////////////////////RV8fP1/vv/////////////////////////////////////////
//////////////RV8fP1/vv///////////////////////////////////////////////////////RV
8fP1/vz////////////////////////////////////////////////////3RA5DL0EpHSQf+ff/////
////////////////////////////////////////VEE4LxISAQEFBQgbHB779///////////////////
/////////////////////1RtQBIEAw4OAwMEBQEBAQ0cHvf/////////////////////////////////
////b1wvCAcGEUQRBgYHBwkCBAEEFh35//////////////////////////////////9vUgYNDBAPFYhL
FRUPCgwGBwkEBQwd+f///////////////////////////////19dDA8TExkZGJaWLhgZExMVCg0HCQUM
Hfj/////////////////////////////X14aExkXIiEgJ56inj4gIRcZExQKDQgECx74////////////
////////////////XygZFyEnJSUsK5K8sJItJSYgIhgTFREODhz8//////////////////////////9f
ShghJiUrKjMyMYS6uquEMystJSAXGUtEDhEk9f////////////////////////9fKCAlLDMxMDY1U6C4
uLm6UzEyKy0mIYh6RA4j+/////////////////////////9fJyUqMjc1PDo5jrW1tba3jj02MTMsJYyM
ekQpHvX///////////////////////8vLSoxNjw5SUdGpbOzs7Smhjk6PTcyPqKWjHpCJPX/////////
/////////////2A0KjA1OklGRU5Oh7GxsYZOUEZIaamoq66iloh6I/f//////////////////////2Aq
MDU6SEVPTWaZk6efeVlaTU5Qqre5uryonpaII/r//////////////////////2AxNjpIRU55n7+nh5mU
eFZWWHB+s7W3ubq8qJ6MU/v//////////////////////2A3O0lFTpTAwHyHwJViYmNkZVZZirO1t7m7
sKKWU/r//////////////////////2A9OUZOfsDDw8XFmmxsbGpoY2VWWZOztaB7hI+eU/f/////////
/////////////2A7SFBwwMPFx8jKyo1ycnFsamJlV5+ypra5u7CiU/f///////////////////////9A
Rk55w8bJzM/R0dGNdHRybmpjZX6Ys7W3uryoP/////////////////////////9gRU15xsnP09ja29rN
fXZ0cmxoZIexsrS2ubuXQv////////////////////////9gT3C+yc/Y293V0tXd1YB2dHFqY5mxirOq
uLp7TP//////////////////////////a5XHztPb1dKQr9DSnYV9dHJsYmeTirKguKlp////////////
////////////////YMXJ0dnd0puFwsutiYKhg3JzeGVYh7K0t4ZU////////////////////////////
/8zM09vW0MvCwq3LkZ3cwYGkw4dYTZi0oG3////////////////////////////////E08HX0MvCha3C
ha/d2M6aY1ZZTVuleP//////////////////////////////////i6PXocuAncKdgK/d2M6+dVZZTkVt
/////////////////////////////////////8HWva+cnJCc0Nfc1MzHf1dNUW3/////////////////
//////////////////////+NoaGvy8u90tXa0crGf1ldbf//////////////////////////////////
/////////42Nvb3S1cHYzsi+i23/////////////////////////////////////////////////vYO9
rG53yMj/////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////8AAP//
/////wAA///wD///AAD/+AAAH/8AAP/wAAAf/wAA//AAAB//AAD/8AAAH/8AAP/wAAAf/wAA//AAAB//
AAD/8AAAP/8AAP//4B///wAA///wH///AAD///Af//8AAP//8B///wAA///wH///AAD//8AD//8AAP//
AAD//wAA//wAAH//AAD/+AAAP/8AAP/wAAAf/wAA/+AAAA//AAD/wAAAB/8AAP/AAAAH/wAA/4AAAAP/
AAD/gAAAA/8AAP+AAAAB/wAA/4AAAAH/AAD/AAAAAf8AAP8AAAAB/wAA/wAAAAH/AAD/AAAAAf8AAP8A
AAAB/wAA/wAAAAH/AAD/gAAAA/8AAP+AAAAD/wAA/4AAAAP/AAD/wAAAB/8AAP/AAAAH/wAA/+AAAA//
AAD/8AAAH/8AAP/4AAA//wAA//wAAH//AAD//gAA//8AAP//gAP//wAA///gH///AAD///////8AAP//
/////wAA////////AAAoAAAAIAAAAEAAAAABAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNt
VwDFaFEAyGJGAMxmTAC+WjwAzmhKALVPKQC6VC8AuVMwALpUMQC+WDUAw107AK5XOQCvSSAAzWc9AKFm
TwChOwsApD4RAKZAEwCrRxwAnTcFAJhGHgCPQxwAeTsdAKA6AACdNwAAnVo0AF8/LgBbQjQAV0pDAKdB
AACkPgAAojwAALhUFQCBRB4AvXBBAKxGAACqRAAAqUMAAMhiIADVbygAakQrALROAACzTQAAsUsAAK9J
AACyTwYAhD4MAL1XAAC6VAAAuVMAALdRAACkSwAA2HIdAIhIEwCRURsAxV8AAMBaAAC+WAAAxmsXAM5o
AADNZwAAymQAAMljAACjYBwA2XMAANdxAADVbwAA0mwAANFrAADYdwsAxXQfANWSRwCPYjMAjoFzAON9
AADgegAA3HYAANt1AADlgwkAgEoIAIFQFACEZkIAlXZRAP/x4ADxiwAA74kAAO2HAADoggAA5oAAAOuH
BACvlXMArZqBAP/x3wD1jwAA8owAAPqUAQDSfAEA/poGAPKbHQCLXBgA6KZIAMiVSgD/px0A/68rAOqs
TgDjr1sA6LlwAH5mPwDMhQMA/7Q1AP+7QwC/lEEA/8hfAPrShgCmcwAA4qAPALeAAQCBYRMA68dvAP/c
hgCXdgYA1bIyAPLagQB7ZwAAg3IAALafEADXx10AkIMAAGRgKACdlwsA//3NAH5+AQBdXwEAs7Y+AImT
AQCOlxYAgowDAGJmMQDZ4ZAAbYIAAHmSCABPXRAA4/CuAJ24PgBliwAAwuGQAEJuAADH5poAT4wBAGuk
HQB9tz0ARmYjAJ/QcQBapBsAN4AAADplGwAoZgAAPpcHAKDdhwDB8bAAJmYTAHTGWgCs5poAG3wAABtl
CABCqyQAMqMZAHXIYgC576wAIZoHAFS6QwAOfgAADocAAMX5wACY4pIAC2YGABWeDwB71HcABmgDAACR
AAAAjgAAAIoAAACFAAAAgwAAAIAAAAB9AAAAegAAAHYAAAB1AAAAcQAAAG4AAABtAAABaAEAuvS8AAyl
FwAmry4Ah9+MAEPATwCi7akAFK0oABewLQAbtDUAfuCOAB63OwBGyF8AH7g9ACG6QgCY7akAIrtEACO8
RwCG6J0AJr9MACfATgApwlMAYNuDAHXikgAtxloALsddADPLYgBR1noAV9l/ADjNaAA9z20ARdJyAEvU
dgB53/cAteXxANHx+QAVrdkAKsHrACq53wAlqtUAMa3VAEi12QBHrtIABX6vABSNuwABcqQAAW+iAAJ2
qQD///8ApqamAJmZmQBzc3MAcHBwAG1tbQBcXFwAW1tbAFhYWABTU1MATU1NAEBAQAAmJiYAAAAAAP//
////////////////+v39/f36///////////////////////////2+vr6+vHv7+/x8P36+vr6+vb/////
/////////////v7+/v7+5ufo6Oft/v7+/v7++v/////////////////08/Pz8/Pp4+Pj4+7z8/Pz8/76
//////////////////ReXl5VVerk5eXk7l5eXl5e/vb/////////////////9PT09PT06+Xy8uXu9PT0
9PT0///////////////////////////p6+vq6uz////////////////////////////////////0VfP+
+v////////////////////////////////////RV8/78////////////////////////////////S0pB
JEkkMCoe+f//////////////////////////XUgpDwICBAEBBgsXHfj//////////////////////2c2
DAoJUw0JCQsMAwEIGPv///////////////////9JKA4TERWCUhUREhQHCwMDGPv/////////////////
ayIVGhkhII+dUSAZGhUTBwUFGPr//////////////2o8GiAfJS4thrSmNSUnIBoVFBANHPr/////////
////ahkfLiw0MjGGv8CeMystJiE3UxAW+/f//////////2pIJiwzOzk/dLu8vL19OjIrJVKLbRsq9///
////////ai8rMTk+RkSNuLi5pXo9QDs0j5mLUyP3//////////9sKzFARkNOTY21tpZMTkJ+vsDCopmL
OPn//////////2wxQEVCYoqflp+rV1hZdpy7vsDCopll+v//////////ajlGQnayxIOom2NhYWBugbi7
vsGxnWX4//////////9qPkNiqMnKy8V7b2loY19YlrmllJ6md/X//////////2pGTo7JzdLV1seAcnBo
Y2CSt629wLF39f//////////akdNic3V2t/g4LN8cnBoYY62uLy/wkH1////////////Zm7L1dzh2MzY
3pV5cmljiJKurb6UVP/////////////FxdDa4diTkNTDhJN4b3VgWbe6vXr1///////////////T09zd
2dHDw9GE4s6Rp4NZdLmNXP///////////////6mpzt7ZyK/DoZDd29N/VlpPhXH/////////////////
/6ma3dmklaqkxuLb0JdXTFBJ//////////////////////+Vs8yw1Mze4NfPm1tkbP//////////////
//////////+MjKCa3qOY06yHeP//////////////////////////////c3Nzc3Nzc///////////////
/////A///wAAP/4AAD/+AAA//gAAP/4AAH//+B////wf///8H///4Af//4AB//8AAP/+AAB//AAAP/gA
AB/4AAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/4AAAf+AAAH/wAAD/8AAB//gAA//+A
Af//wAf///Af/ygAAAAQAAAAIAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkkgAJlL
LgDMcE4AekApALljPgBXTkoAckw2AE5DPQC/RwAAn0MLALNNDgCbQg0AqWU1AKxLAADPbRQAy4RBAP/x
4ACqYgAA2IcfAP/x3wC7dAAA/6giAMeCAAC+kjEA5tKcAHBfLACkkg0AYFkrAG1kAACilAQA1sxkAISA
SQBZVhIAub1HAMDHewBZjQAAXpQBAEZgHQBYkggAPHcAAKTQggCy3JYA2PLJAEKjHgAZfQAAA3gAAA1r
CgAAdwAAo+ymAIXcjQCV66QAmu6rACq/TgAWv0UAb+KQADHJXwDN9/8Au+XvANrr7wAVrdkAKMDqACvB
6wAquN8Ar+TyANTu9QAlp9IAMq3VAE222AAVkL4ALqvVAECy2QBHrtIAS7fbAAV+rwAZj70AAXapAAFx
owABb6IAAnWoAP///wCZmZkAfn5+AHBwcABYWFgAVVVVAEBAQAAmJiYAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFhYWFhY
VFZWVlRYWFhYWFhYU1RUTE1NT05WVFRUU1hYV1dXVzw+Pz1KV1dXV1RYWFEUFBFDOjlASxQUFFdTWFhR
UVFRRDtQQUVRUVFRWFhYWFhYWEJHSUZIWFhYWFhYWFhYWFhYURFXVFhYWFhYWFhYWFhYDVERV1VYWFhY
WFhYWFhYDQ0FAwQIVVhYWFhYWFhYEAsMIQoBAgZSWFhYWFhYWBAJEi4dDhoHUlhYWFhYWFgPFSclFygv
HFJYWFhYWFhYEyw2IhYkMCZSWFhYWFhYWCM1NzEfHi0gWFhYWFhYWFhYMjM0OBsYWFhYWFhYWFhYWFgr
KikZWFhYWFhYWPwf///AAf//gAH//4AB9FWAA/z/+D////w////4P///8B///+AP///gD/9L4A8kSeAP
Kh7gH///8D////h///8oAAAAMAAAAGAAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAADAAAACPAAAApwAAAKcAAACnAAAApwAA
AKcAAACnAAAAjwAAADAAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAI8AAACnAAAApwAAAKcAAACnAAAApwF2qf8BcaP/AXGj/wFx
pP8Cc6X/AnWn/wJ1qP8Bb6L/AAAAvwAAAKcAAACnAAAApwAAAKcAAACnAAAApwAAAI8AAAAYAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJiYm/yYmJv8mJib/JiYm/yYmJv8mJib/JiYm/xWt
2f8rwev/Krjf/yu54P8pud7/Krje/yjA6v8Ffq//JiYm/yYmJv8mJib/JiYm/yYmJv8mJib/JiYm/wAA
AKcAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmZmZ/3Nzc/9zc3P/c3Nz/3Nz
c/9zc3P/c3Nz/x2r1/9Sze3/WNX0/1zc+/9c2/v/W9b2/0/O8P8JgrP/c3Nz/3Nzc/9zc3P/c3Nz/3Nz
c/9zc3P/JiYm/wAAAKcAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmZmZ/6am
pv+mpqb/pqam/6ampv+mpqb/pqam/ySs1/9z1u7/hur//4Dm//9/5f//jfL//2zV8f8Ph7f/pqam/6am
pv+mpqb/pqam/6ampv+mpqb/JiYm/wAAAKcAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAmZmZ/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/yus1v+Y3e//qPD//6Ls//+i7f//r/n//4zc
8v8Zjr3/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/JiYm/wAAAKcAAAAYAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAmZmZ///x3///8d////Hg///x3///8eD///Hg/zKt1f+75e//zff//8fz
///H8///0////6/k8v8Zj73///Hf///x3///8d////Hf///x3///8d//JiYm/wAAAI8AAAAYAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmZmZ/5mZmf+ZmZn/mZmZ/5mZmf+ZmZn/mZmZ/022
2P/a6+///////////////////////9Tu9f8VkL7/mZmZ/5mZmf+ZmZn/mZmZ/5mZmf+ZmZn/mZmZ/wAA
ABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAACWn0v9Astn/S7fb/0a12v80rtb/K6rV/y6r1f9HrtL/AAAAMAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZmZn///Hg/+bm5v+mpqb/c3Nz/yYmJv8AAACnAAAAGAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZmZn///Hg/+bm5v+mpqb/c3Nz/yYm
Jv8AAACnAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZmZn///Hg/+bm
5v+mpqb/c3Nz/yYmJv8AAACnAAAAHwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAEAAA
ACWZmZn///Hg/+bm5v+mpqb/c3Nz/yYmJv8AAACvAAAATwAAACUAAAASAAAABgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAA
ABYAAAA/Gw4AelYrAL6xfkz/2pVU/8h8Ov+0aCr/m1sr/2o3E/9BGgDTDwYAtAAAAKEAAAB3AAAAQAAA
ABgAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAKAAAAM2A1AJefVQDd1W8Q/9FrJf/SbD3/0WtD/9RuVf/UblX/0GpI/9BqSv/DXTH/sUsT/3kt
AOszEgDKAAAApwAAAHoAAAA0AAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
AP++WAD/uVMA/5RRAf8qZhX/Q2Yh/1tmLf90Zjr/kGA4/2InANwAAACAAAAAEgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD3znO1uVoO/7VP
AP+8VgD/xF4A/8xmAP/RawD/1nAA/9lzAP/ddwD/33kA/42BAP8AjQD/AI0A/wCLAP9/gQD/3ngA/9t1
AP/XcQD/020A/6hrAP8McQD/GGsA/wtoAP8KZgX/LWYX/0dmI/9fZi//e2Y+/4o4AO4AAACVAAAAFQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD3033FtE4A/7xWAP/FXwD/zWcA/9NtAP/YcgD/3HYA/+F7AP/WgAD/SJAA/1mQAP8elAD/LJIA/7CI
AP/pgwD/54EA/+N9AP/feQD/23UA/w19AP8AeQD/AHMA/wBuAP8AaQD/EWYI/zFmGf9OZif/ZmYz/5NJ
C/cAAACkAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADxxHL/ulQA/8JcAP/MZgD/020A/9lzAP/eeAD/uoQC/zyVBv8Fngr/I5wK/4uV
CP9CnAz/X5kH/8aQAv/wigD/7ogA/+uFAP/KggD/mn8A/wCEAP8AfwD/AHkA/wBzAP8AbgD/AGgA/xxm
Dv85Zh3/VWYq/6JWDf8AAACnAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADuwHD/v1kA/8pkAP/RawD/2HIA/995AP9Ykgf/F6AR/wuk
Fv+7lQf/lJ0N/x+oHv9pohP//pgA//6YAP/7lQD/95EA//KMAP/uiAD/6IIA/3KDAP8AhAD/AH4A/wB4
AP8AcQD/AGwA/wNmAf8pZhX/R2Yj/6NZC/8AAACkAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD314z/xmAA/89pAP/WcAD/3ngA/6CK
B/8MpRj/EKkg/xStKP8XsC3/GLEw/2+uKv//qyP//60n//+pIP//oxP//50I//yWAP/0jgD/7ogA/+iC
AP9WhAD/AIMA/wB9AP8mcwD/hGAA/2dcAP9IXQn/NmYb/6JdCf8AAACVAAAAFQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD656PDy2UA/9Nt
AP/bdQD/x4ED/w6nHP8UrSj/GLEw/xy1OP8etzz/IrtD/yK7Q/+su0X//7xH//+6Qv//tTj//60n//+h
EP/9lwD/9I4A/+2HAP86iwD/AIcA/xt+AP8AegD/AHMA/wBtAP8DZwH/KGYU/5pZBvYAAAB/AAAAEgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD77Kuy1XkV/9ZwAP/eeAD/sIoJ/xWuKv8btDX/ILk//yS9SP8nwE//KsNT/yvEVv8qw1T/oslf///M
Zv//xlr//7tF//+vK///oRD//JYA//KMAP+iiAD/SIcA/wCFAP8AfgD/AHcA/wBvAP8AaQD/GGYM/6VS
AOwAAABYAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAD78bVy455E/9p0AP/ifAD/tY8M/xu0Nf8hukL/J8BO/y3GWv8zy2T/Oc5q/z3P
bf86zmv/Ts5r/+bbhf//1Xj//8pj//+7Q///rSf//5wH//aQAP+GjwD/AI8A/wCIAP8AgAD/AHoA/wBy
AP8AbAD/OGgB/3I6AM0AAAA0AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/97sg8s2B/9x2AP/JgwX/J7Aw/yC5Qf8nwE7/MMlg/z3P
bf9L1Hb/UtZ7/2nZgP9T13z/TdV4/1bTdf//5Jb//9V4///GWv//tTj//6IS//uVAP9NlgL/AJIA/3+C
AP8AhAD/DXsA/wB0AP8AbgD/iXAA/0UkAJcAAAAWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
AAAAAAAAAAAAAP/yszD766py9eKdhfTdk4b014uG9NOBhvDLeHfbtWQ4AAAABAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD///AP//8AAP/4AAAf/wAA//AAAA//
AAD/8AAAD/8AAP/wAAAP/wAA//AAAA//AAD/8AAAD/8AAP/wAAAP/wAA//AAAB//AAD//+AP//8AAP//
8A///wAA///wD///AAD//+AH//8AAP//gAH//wAA//4AAH//AAD//AAAP/8AAP/4AAAf/wAA//AAAA//
AAD/4AAAB/8AAP/AAAAD/wAA/8AAAAP/AAD/gAAAAf8AAP+AAAAB/wAA/wAAAAD/AAD/AAAAAP8AAP8A
AAAA/wAA/wAAAAD/AAD/AAAAAP8AAP8AAAAA/wAA/wAAAAD/AAD/AAAAAP8AAP8AAAAA/wAA/wAAAAD/
AAD/AAAAAP8AAP8AAAAB/wAA/4AAAAH/AAD/gAAAA/8AAP/AAAAD/wAA/8AAAAf/AAD/4AAAD/8AAP/w
AAAf/wAA//gAAD//AAD//AAAf/8AAP//AAH//wAA///gD///AAD///////8AAP///////wAAKAAAACAA
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
Ff8AAACjAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwx3n/zWcA/9dxAP/SfAL/KKEX/xKr
Jf8XsC3/GrM0/yu1OP/VsjL//7Mz//+tKP//pBf//poF//WPAP/shgD/SIcA/wCDAP8aeQD/PmwA/y1j
AP8cZg7/gGEQ/wAAAIwAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOvCdtLRawD/3HYA/3qT
D/8Vrir/HbY5/yK7RP8mv0z/J8BO/0PAT//Xx13//8VY//+7Q///qiL//poF//ONAP9niwD/AIkA/w5/
AP8AdgD/AG4A/wtmBv96VwjxAAAAbgAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/PG0odh3
C//gegD/jpcW/x63PP8mv03/Lsdb/zjNaP89z23/Pc9t/3bTdP/y2oH//8xm//+7Q///qB3/+pQA/3iQ
AP8AjQD/AIQA/wB7AP8AcQD/AGkA/5VNAOAAAABFAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD/+sJA6KZI/8mCBv8btDb/Jb5L/zLKYf9G0nP/YdmA/37fjP9h3IX/Vdh9/8Tmmf//3Ib//8he//+w
Lv/+mgX/iZMB/2OKAP8OhwD/DX0A/wB0AP9GcAD/ZDYArgAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAD556fQI6wp/yC5Qf8sxVn/RNFx/1/bhP/B4pL/4vKz/4bonf+58L////3N/8Lg
jv/mymP//7Q2/+KgD//yjAD/6YMA/wCLAP8AgAD/AHYA/5dyAPMAAABFAAAABgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//zECM2H7/I7xH/zPLY/9R1nr/dOKR/5Pspv+09Lb/vvW9/5zt
q////cz/S9R2/0nIXf+duD7/Qqsk/5uVCv/oggD/pnsA/wCCAP9rgwD/bT4AjAAAABMAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//zI91yGL/Q8hg/1nZgP9245P/ou2p/8X5
wP+7+L//wfGw/+PtqP9Q1nr/Lsdd/yO8Rv+2nxD/8YsA/+aAAP/bdQD/fn4B/6lvAL4AAAAcAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP70uJ+y0HT/UtZ7/3Xi
kv+k5Zj/yuie/7nvrP+055v/h9+M/0vUdv8ux13/IbpC/2ukHf/uiAD/430A/+WDCf/NfgvDAAAAGwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
zHDH5Jf/f9V5/4Dgjv+Y4pL/huid/33hj/9a2YH/Ps9t/ynCU/8fuD3/WaMd/+uHBP/ymx3/1ZAgmQAA
AA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAP//zCD98LCg2eGQ/6Ddh/+Mz23/Vdh9/3TGWv99tz3/I7xH/1S6Q/+ztj7/56g9rrGA
LC4AAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/97sQ/PK1YfjoqJP74JPC+MVhxPjSe8Txy3WX68BmaKqI
RBgAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAA//gAAH/4A
AB/+AAAf/gAAH/4AAD//+A////AH///AAf//gAD//wAAf/4AAD/8AAAf+AAAD/gAAA/wAAAH8AAAB/AA
AAfwAAAH8AAAB/AAAAfwAAAH8AAAB/AAAAfwAAAP+AAAD/gAAB/8AAA//gAAf/8AAP//gAH//+AH/ygA
AAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAYAAAAGAAA
ADAAAACnAAAAvwAAAL8AAAC/AAAApwAAADAAAAAYAAAAGAAAABgAAAAAAAAAAAAAABgAAACPAAAApwAA
AKcBdqn/AXGj/wFxo/8Cdaj/AW+i/wAAAL8AAACnAAAApwAAAKcAAACPAAAAGAAAAAAmJib/JiYm/yYm
Jv8mJib/Fa3Z/yvB6/8quN//KMDq/wV+r/8mJib/JiYm/yYmJv8mJib/AAAApwAAABgAAAAAmZmZ///x
3///8d////Hg/zKt1f+75e//zff//6/k8v8Zj73///Hf///x3///8d//JiYm/wAAAI8AAAAYAAAAAJmZ
mf+ZmZn/mZmZ/5mZmf9Nttj/2uvv///////U7vX/FZC+/5mZmf+ZmZn/mZmZ/5mZmf8AAAAYAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAJafS/0Cy2f9Lt9v/LqvV/0eu0v8AAAAwAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeZmZn///Hg/yYmJv8AAACnAAAAGwAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAABCmZmZ///x4P8mJib/AAAAqgAAADYAAAAFAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeFSwV6nVAa4bljPv/McE7/ekAp/xgJAcMAAACBAAAAKAAA
AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNhyVfskoK+5tCDf9ZVhL/n0ML/7ZJIP+UQSPyFAcBtgAA
AFwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwWwd1r9HAP+qYgD/A3gA/21kAP+sSwD/cF8s/1sw
FtwAAAB8AAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9sE/67dAD/WJII/16UAf/HggD/PHcA/w1r
Cv9UTBvtAAAAegAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXhRv6QqMe/xa/Rf+5vUf//6gi/1mN
AP8AdwD/NVEI6QAAAFcAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArLVRwSq/Tv9v4pD/o+ym/9bM
ZP+ilAT/GX0A/1JNALYAAAAiAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLysz562YLpleuk/5ru
q/8xyV//pJIN/7B6BNFKLAAvAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5/W6K7zp
o5aZ0HTAgb5TucyjNX2hZQ0bAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAwAEAAIAAAACAAAAAgAAAAIAB
AAD4HwAA+B8AAPAPAADgBwAA4AcAAOAHAATgBwAV4AcALuAHAFXgD5n/8B/g/w==
</value>
</data>
</root>

2727
Rei.Fs.Webdav/WebdavFs.cs Normal file

File diff suppressed because it is too large Load Diff

144
Rei.Fs.Webdav/WsseClient.cs Normal file
View File

@@ -0,0 +1,144 @@
// Decompiled with JetBrains decompiler
// Type: Rei.Fs.Webdav.WsseClient
// Assembly: Rei.Fs.Webdav, Version=1.13.2.18288, Culture=neutral, PublicKeyToken=null
// MVID: D30DD1E3-8520-48B5-AAE5-C87970350A82
// Assembly location: F:\Eigene Dateien\Dropbox\portable Collection\Progs\CarotDAV\Rei.Fs.Webdav.dll
using Microsoft.VisualBasic.CompilerServices;
using System;
using System.Globalization;
using System.Net;
using System.Security.Cryptography;
using System.Text;
namespace Rei.Fs.Webdav
{
public class WsseClient : IAuthenticationModule
{
private static RNGCryptoServiceProvider Rnd = new RNGCryptoServiceProvider();
internal const string AuthType = "WSSE";
internal const string Signature = "WSSE";
internal const int NonceLength = 16;
private static byte[] AsciiHex;
public Authorization Authenticate(string challenge, WebRequest request, ICredentials credentials)
{
if (!WsseClient.ContainsSignatureInChallenge(challenge, "WSSE"))
return (Authorization) null;
return this.InnerAuthenticate(request, credentials);
}
public string AuthenticationType
{
get
{
return "WSSE";
}
}
public bool CanPreAuthenticate
{
get
{
return true;
}
}
public Authorization PreAuthenticate(WebRequest request, ICredentials credentials)
{
return this.InnerAuthenticate(request, credentials);
}
private Authorization InnerAuthenticate(WebRequest request, ICredentials credentials)
{
Authorization authorization;
try
{
if (credentials == null)
{
authorization = (Authorization) null;
}
else
{
NetworkCredential credential = credentials.GetCredential(request.RequestUri, "WSSE");
if (credential == null)
{
authorization = (Authorization) null;
}
else
{
ICredentialPolicy credentialPolicy = AuthenticationManager.CredentialPolicy;
if (credentialPolicy != null && !credentialPolicy.ShouldSendCredential(request.RequestUri, request, credential, (IAuthenticationModule) this))
{
authorization = (Authorization) null;
}
else
{
request.Headers.Add("X-WSSE", WsseClient.GetAuthString(credential, Encoding.UTF8));
authorization = new Authorization("WSSE profile=\"UsernameToken\"", true);
}
}
}
}
catch (Exception ex)
{
ProjectData.SetProjectError(ex);
authorization = (Authorization) null;
ProjectData.ClearProjectError();
}
return authorization;
}
public static string GetAuthString(NetworkCredential credential, Encoding encoding)
{
byte[] nonce = WsseClient.CreateNonce();
string str = DateTime.Now.ToUniversalTime().ToString(DateTimeFormatInfo.InvariantInfo.SortableDateTimePattern) + "Z";
byte[] buffer = new byte[checked (nonce.Length + encoding.GetByteCount(str + credential.Password) - 1 + 1)];
nonce.CopyTo((Array) buffer, 0);
encoding.GetBytes(str + credential.Password).CopyTo((Array) buffer, nonce.Length);
string base64String = Convert.ToBase64String(SHA1.Create().ComputeHash(buffer));
return string.Join("", new string[13]
{
"UsernameToken ",
"Username=\"",
credential.UserName,
"\", ",
"PasswordDigest=\"",
base64String,
"\", ",
"Nonce=\"",
Convert.ToBase64String(nonce),
"\", ",
"Created=\"",
str,
"\""
});
}
private static byte[] CreateNonce()
{
byte[] data = new byte[16];
WsseClient.Rnd.GetBytes(data);
return data;
}
private static bool ContainsSignatureInChallenge(string challenge, string signature)
{
int num1;
for (int startIndex = 0; startIndex < challenge.Length; startIndex = checked (num1 + 1))
{
int num2 = challenge.IndexOf("\"", startIndex);
if (num2 < 0)
num2 = challenge.Length;
if (challenge.Substring(startIndex, checked (num2 - startIndex)).Contains(signature))
return true;
if (checked (num2 + 1) >= challenge.Length)
return false;
num1 = challenge.IndexOf("\"", checked (num2 + 1));
if (num1 < 0)
return false;
}
return false;
}
}
}

Binary file not shown.