This commit is contained in:
承诺 2024-01-18 13:48:31 +08:00
parent 05f2d636ba
commit 0d0e804288
870 changed files with 860132 additions and 1 deletions

BIN
.vs/SeTools/v16/.suo Normal file

Binary file not shown.

Binary file not shown.

View File

BIN
.vs/SetTools/v14/.suo Normal file

Binary file not shown.

BIN
.vs/SetTools/v16/.suo Normal file

Binary file not shown.

BIN
.vs/SetTools/v17/.suo Normal file

Binary file not shown.

67
C# 获取当前目录.txt Normal file
View File

@ -0,0 +1,67 @@
C# 获取当前目录
一、获取当前文件的路径
1、获得当前执行的exe的文件名
string fileName = Process.GetCurrentProcess().MainModule.FileName;
2、获取和设置当前目录即该进程从中启动的目录的完全限定路径。
string path = Environment.CurrentDirectory;
(备注:按照定义如果该进程在本地或网络驱动器的根目录中启动则此属性的值为驱动器名称后跟一个尾部反斜杠如“C:\”)。如果该进程在子目录中启动,则此属性的值为不带尾部反斜杠的驱动器和子目录路径[如“C:\mySubDirectory”])。
3、获取应用程序的当前工作目录
string path = Directory.GetCurrentDirectory();
4、获取基目录它由程序集冲突解决程序用来探测程序集。
string path = AppDomain.CurrentDomain.BaseDirectory;
5、获取启动了应用程序的可执行文件的路径不包括可执行文件的名称。
string path = Application.StartupPath;
6、获取启动了应用程序的可执行文件的路径包括可执行文件的名称。
string path = Application.ExecutablePath;
7、获取或设置包含该应用程序的目录的名称。
string path = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
获取模块的完整路径。
System.Environment.CurrentDirectory
获取和设置当前目录(该进程从中启动的目录)的完全限定目录。
System.IO.Directory.GetCurrentDirectory()
获取应用程序的当前工作目录。
这个不一定是程序从中启动的目录啊有可能程序放在C:\www里,这个函数有可能返回C:\Documents and Settings\ZYB,或者C:\Program Files\Adobe,有时不一定返回什么东东这是任何应用程序最后一次操作过的目录比如你用Word打开了E:\doc\my.doc这个文件此时执行这个方法就返回了E:\doc了。
System.AppDomain.CurrentDomain.BaseDirectory
获取程序的基目录。
System.Windows.Forms.Application.StartupPath
获取启动了应用程序的可执行文件的路径。效果和2、5一样。只是5返回的字符串后面多了一个""而已。
System.Windows.Forms.Application.ExecutablePath
获取启动了应用程序的可执行文件的路径及文件名效果和1一样。
System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase
获取和设置包括该应用程序的目录的名称。
二、操作环境变量
取得系统环境变量方法:
System.Environment.GetEnvironmentVariable()
以下是一些常用的环境变量取值:
System.Environment.GetEnvironmentVariable(“windir”);
System.Environment.GetEnvironmentVariable(“INCLUDE”);
System.Environment.GetEnvironmentVariable(“TMP”);
System.Environment.GetEnvironmentVariable(“TEMP”);
System.Environment.GetEnvironmentVariable(“Path”);
三、应用实例
案例编写了一个WinForm程序项目文件存放于D:\Projects\Demo编译后的文件位于D:\Projects\Demo\bin\Debug最后的结果如下
方法 取得值
System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName D:\Projects\Demo\bin\Debug\Demo.vshost.exe
System.Environment.CurrentDirectory D:\Projects\Demo\bin\Debug
System.IO.Directory.GetCurrentDirectory() D:\Projects\Demo\bin\Debug
System.AppDomain.CurrentDomain.BaseDirectory D:\Projects\Demo\bin\Debug\
System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase D:\Projects\Demo\bin\Debug\
System.Windows.Forms.Application.StartupPath D:\Projects\Demo\bin\Debug
System.Windows.Forms.Application.ExecutablePath D:\Projects\Demo\bin\Debug\Demo.EXE
System.Environment.GetEnvironmentVariable(“windir”) C:\WINDOWS
System.Environment.GetEnvironmentVariable(“INCLUDE”) C:\Program Files\Microsoft Visual Studio.NET 2005\SDK\v2.0\include\
System.Environment.GetEnvironmentVariable(“TMP”) C:\DOCUME1\ADMINI1\LOCALS~1\Temp
System.Environment.GetEnvironmentVariable(“TEMP”) C:\DOCUME1\ADMINI1\LOCALS~1\Temp
System.Environment.GetEnvironmentVariable(“Path”) C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Microsoft SQL Server\90\Tools\binn\

36
README.en.md Normal file
View File

@ -0,0 +1,36 @@
# SetTools
#### Description
SetTools
#### Software Architecture
Software architecture description
#### Installation
1. xxxx
2. xxxx
3. xxxx
#### Instructions
1. xxxx
2. xxxx
3. xxxx
#### Contribution
1. Fork the repository
2. Create Feat_xxx branch
3. Commit your code
4. Create Pull Request
#### Gitee Feature
1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
4. The most valuable open source project [GVP](https://gitee.com/gvp)
5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)

View File

@ -1,2 +1,37 @@
# ct_pc # SetTools
#### 介绍
SetTools
#### 软件架构
软件架构说明
#### 安装教程
1. xxxx
2. xxxx
3. xxxx
#### 使用说明
1. xxxx
2. xxxx
3. xxxx
#### 参与贡献
1. Fork 本仓库
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request
#### 特技
1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)

25
SetTools.sln Normal file
View File

@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.4.33205.214
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SetTools", "SetTools\SetTools.csproj", "{FED4ED29-4637-45D7-897E-3A20DE32A9C3}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{FED4ED29-4637-45D7-897E-3A20DE32A9C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FED4ED29-4637-45D7-897E-3A20DE32A9C3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FED4ED29-4637-45D7-897E-3A20DE32A9C3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FED4ED29-4637-45D7-897E-3A20DE32A9C3}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {2AAF1528-34F2-443A-B5A9-42B910152D40}
EndGlobalSection
EndGlobal

BIN
SetTools/1.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

38
SetTools/App.config Normal file
View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.ReportViewer.WinForms" publicKeyToken="89845dcd8080cc91" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.ReportViewer.Common" publicKeyToken="89845dcd8080cc91" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.ReportViewer.DataVisualization" publicKeyToken="89845dcd8080cc91" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-15.0.0.0" newVersion="15.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

106
SetTools/Config.ini Normal file
View File

@ -0,0 +1,106 @@
[CONFIG]
BaudRate=57600
DataBits=8
StopBits=1
G_PARITY=
[COMMAND]
Cmd1=10 10
Cmd2=20 20
Cmd3=
Cmd4=
Cmd5=
Cmd6=
Cmd7=
Cmd8=
Cmd9=
Cmd10=
Cmd11=
Cmd12=12 12 12
Cmd13=
Cmd14=
Cmd15=
Cmd16=
Cmd17=
Cmd18=
Cmd19=
Cmd20=
[DESCRIPTION]
Desc1=
Desc2=
Desc3=
Desc4=
Desc5=
Desc6=
Desc7=
Desc8=
Desc9=
Desc10=
Desc11=
Desc12=描述
Desc13=
Desc14=
Desc15=
Desc16=
Desc17=
Desc18=
Desc19=
Desc20=
[COMPARM]
CParm1=60
CParm2=0
CParm3=0
CParm4=5
CParm5=120
CParm6=0
CParm7=192.168.0.1
CParm8=192.168.0.1
CParm9=29970
CParm10=0
CParm11=5
CParm12=0
CParm13=0
CParm14=0
CParm15=0
CParm16=0
CParm17=0
CParm18=0
CParm19=0
CParm20=0
[SETPARM]
SParm1=1
SParm2=GPC12020021800013202
SParm3=0000013921544812
SParm4=无锡华耀生物科技有限公司
SParm5=GPC12020021800013202
SParm6=123
SParm7=气囊压力监控仪器
SParm8=32020001
SParm9=0
[PRESSPARM]
PParm1=90
PParm2=10
PParm3=5
PParm4=1
PParm5=2
PParm6=3
PParm7=4
PParm8=4
PParm9=5
PParm10=6
PParm11=7
PParm12=8
PParm13=9
PParm14=10
PParm15=11
PParm16=12
PParm17=15
PParm18=1
PParm19=27
PParm20=0
[DPARM]
DParm1=5
DParm2=12
DParm3=13
DParm4=14
DParm5=15
DParm6=16

24
SetTools/Program.cs Normal file
View File

@ -0,0 +1,24 @@
using SetTools.Views;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace SetTools
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new FormDevice());//FormMain
//Application.Run(new Register());
}
}
}

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("SetTools")]
[assembly: AssemblyDescription("HY")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("HY")]
[assembly: AssemblyProduct("SetTools")]
[assembly: AssemblyCopyright("Copyright © 2020")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("fed4ed29-4637-45d7-897e-3a20de32a9c3")]
// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -0,0 +1,63 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
namespace SetTools.Properties {
using System;
/// <summary>
/// 一个强类型的资源类,用于查找本地化的字符串等。
/// </summary>
// 此类是由 StronglyTypedResourceBuilder
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
// (以 /str 作为命令选项),或重新生成 VS 项目。
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// 返回此类使用的缓存的 ResourceManager 实例。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SetTools.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// 重写当前线程的 CurrentUICulture 属性,对
/// 使用此强类型资源类的所有资源查找执行重写。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
}
}

View File

@ -0,0 +1,117 @@
<?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.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: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" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</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" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

26
SetTools/Properties/Settings.Designer.cs generated Normal file
View File

@ -0,0 +1,26 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
namespace SetTools.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.4.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
}
}

View File

@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

37
SetTools/Roundbutton.Designer.cs generated Normal file
View File

@ -0,0 +1,37 @@
namespace SetTools
{
partial class UserControl1
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region
/// <summary>
/// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
}
#endregion
}
}

20
SetTools/Roundbutton.cs Normal file
View File

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace SetTools
{
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
}
}

120
SetTools/Roundbutton.resx Normal file
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,62 @@
//using System;
//namespace SetTools.Serial
//{
// public class ToSendData
// {
// public static event EventHandler DataChanged;
// private int _id;
// private string _text;
// private bool _hex;
// private string _commit;
// public int id
// {
// get
// {
// return _id;
// }
// set
// {
// _id = value;
// DataChanged(0, EventArgs.Empty);
// }
// }
// public string text
// {
// get
// {
// return _text;
// }
// set
// {
// _text = value;
// DataChanged(0, EventArgs.Empty);
// }
// }
// public bool hex
// {
// get
// {
// return _hex;
// }
// set
// {
// _hex = value;
// DataChanged(0, EventArgs.Empty);
// }
// }
// public string commit
// {
// get
// {
// return _commit;
// }
// set
// {
// _commit = value;
// DataChanged(0, EventArgs.Empty);
// }
// }
// }
//}

185
SetTools/Serial/Uart.cs Normal file
View File

@ -0,0 +1,185 @@
//using System;
//using System.Collections.Generic;
//using System.IO;
//using System.IO.Ports;
//namespace SetTools.Serial
//{
// class Uart
// {
// public SerialPort serial = new SerialPort();
// public event EventHandler UartDataRecived;
// public event EventHandler UartDataSent;
// private Stream lastPortBaseStream = null;
// private static readonly object objLock = new object();
// /// <summary>
// /// 初始化串口各个触发函数
// /// </summary>
// public Uart()
// {
// //声明接收到事件
// serial.DataReceived += Serial_DataReceived;
// }
// /// <summary>
// /// 刷新串口对象
// /// </summary>
// private void refreshSerialDevice()
// {
// try
// {
// lastPortBaseStream?.Dispose();
// }
// catch (Exception e)
// {
// Console.WriteLine($"portBaseStream?.Dispose error:{e.Message}");
// }
// try
// {
// serial.BaseStream.Dispose();
// }
// catch (Exception e)
// {
// Console.WriteLine($"serial.BaseStream.Dispose error:{e.Message}");
// }
// serial.Dispose();
// serial = new SerialPort();
// //声明接收到事件
// //serial.DataReceived += Serial_DataReceived;
// //serial.BaudRate = 57600;// Tools.Global.setting.baudRate;
// //serial.Parity = (Parity)Tools.Global.setting.parity;
// //serial.DataBits = Tools.Global.setting.dataBits;
// //serial.StopBits = (StopBits)Tools.Global.setting.stopBit;
// }
// /// <summary>
// /// 获取串口设备COM名
// /// </summary>
// /// <returns></returns>
// public string GetName()
// {
// return serial.PortName;
// }
// /// <summary>
// /// 设置串口设备COM名
// /// </summary>
// /// <returns></returns>
// public void SetName(string s)
// {
// serial.PortName = s;
// }
// /// <summary>
// /// 查看串口打开状态
// /// </summary>
// /// <returns></returns>
// public bool IsOpen()
// {
// return serial.IsOpen;
// }
// /// <summary>
// /// 开启串口
// /// </summary>
// public void Open()
// {
// string temp = serial.PortName;
// refreshSerialDevice();
// serial.PortName = temp;
// serial.Open();
// lastPortBaseStream = serial.BaseStream;
// }
// /// <summary>
// /// 关闭串口
// /// </summary>
// public void Close()
// {
// refreshSerialDevice();
// serial.Close();
// }
// /// <summary>
// /// 发送数据
// /// </summary>
// /// <param name="data">数据内容</param>
// public void SendStringData(byte[] data)
// {
// if (IsOpen())
// {
// if (data.Length == 0)
// return;
// serial.Write(data, 0, data.Length);
// Tools.Global.setting.SentCount += data.Length;
// UartDataSent(data, EventArgs.Empty);//回调
// }
// }
// //接收到事件
// private void Serial_DataReceived(object sender, SerialDataReceivedEventArgs e)
// {
// lock (objLock)
// {
// if(Tools.Global.setting.timeout > 0)
// System.Threading.Thread.Sleep(Tools.Global.setting.timeout);//等待时间
// List<byte> result = new List<byte>();
// while (true)//循环读
// {
// if (!serial.IsOpen)//串口被关了,不读了
// break;
// try
// {
// int length = ((SerialPort)sender).BytesToRead;
// if (length == 0)//没数据,退出去
// break;
// byte[] rev = new byte[length];
// ((SerialPort)sender).Read(rev, 0, length);//读数据
// if (rev.Length == 0)
// break;
// result.AddRange(rev);//加到list末尾
// }catch { break; }//崩了?
// if (result.Count > Tools.Global.setting.maxLength)//长度超了
// break;
// if (Tools.Global.setting.bitDelay && Tools.Global.setting.timeout > 0)//如果是设置了等待间隔时间
// {
// System.Threading.Thread.Sleep(Tools.Global.setting.timeout);//等待时间
// }
// }
// Tools.Global.setting.ReceivedCount += result.Count;
// if(result.Count > 0)
// UartDataRecived(result.ToArray(), EventArgs.Empty);//回调事件
// System.Diagnostics.Debug.WriteLine("end");
// }
// }
// ///// <summary>
// ///// 发送数据
// ///// </summary>
// ///// <param name="data">数据内容</param>
// //public Boolean send(TerminalCommand tc)
// //{
// // if (size == 0)
// // return false;
// // try
// // {
// // Constants.GpsWebService.SaveTerminalCommand(tc);
// // serial.Write(data, 0, size);
// // Tools.Global.setting.SentCount += size;
// // UartDataSent(data, EventArgs.Empty);//回调
// // }
// // catch (Exception ex)
// // {
// // return false;
// // }
// // return true;
// //}
// }
//}

311
SetTools/SetTools.csproj Normal file
View File

@ -0,0 +1,311 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\Microsoft.SqlServer.Types.160.1000.6\build\net462\Microsoft.SqlServer.Types.props" Condition="Exists('..\packages\Microsoft.SqlServer.Types.160.1000.6\build\net462\Microsoft.SqlServer.Types.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{FED4ED29-4637-45D7-897E-3A20DE32A9C3}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>SetTools</RootNamespace>
<AssemblyName>磁条测试平台</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<SccProjectName>
</SccProjectName>
<SccLocalPath>
</SccLocalPath>
<SccAuxPath>
</SccAuxPath>
<SccProvider>
</SccProvider>
<TargetFrameworkProfile />
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<IsWebBootstrapper>false</IsWebBootstrapper>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</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>
<PropertyGroup>
<ApplicationIcon>磁条.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="App.Metrics.Abstractions, Version=4.3.0.0, Culture=neutral, PublicKeyToken=0d5193a913d1b812, processorArchitecture=MSIL">
<HintPath>..\packages\App.Metrics.Abstractions.4.3.0\lib\net461\App.Metrics.Abstractions.dll</HintPath>
</Reference>
<Reference Include="App.Metrics.Concurrency, Version=4.3.0.0, Culture=neutral, PublicKeyToken=0d5193a913d1b812, processorArchitecture=MSIL">
<HintPath>..\packages\App.Metrics.Concurrency.4.3.0\lib\netstandard2.0\App.Metrics.Concurrency.dll</HintPath>
</Reference>
<Reference Include="App.Metrics.Core, Version=4.3.0.0, Culture=neutral, PublicKeyToken=0d5193a913d1b812, processorArchitecture=MSIL">
<HintPath>..\packages\App.Metrics.Core.4.3.0\lib\net461\App.Metrics.Core.dll</HintPath>
</Reference>
<Reference Include="App.Metrics.Formatters.Ascii, Version=4.3.0.0, Culture=neutral, PublicKeyToken=0d5193a913d1b812, processorArchitecture=MSIL">
<HintPath>..\packages\App.Metrics.Formatters.Ascii.4.3.0\lib\net461\App.Metrics.Formatters.Ascii.dll</HintPath>
</Reference>
<Reference Include="App.Metrics.Formatters.InfluxDB, Version=4.3.0.0, Culture=neutral, PublicKeyToken=0d5193a913d1b812, processorArchitecture=MSIL">
<HintPath>..\packages\App.Metrics.Formatters.InfluxDB.4.3.0\lib\netstandard2.0\App.Metrics.Formatters.InfluxDB.dll</HintPath>
</Reference>
<Reference Include="App.Metrics.Reporting.Console, Version=4.3.0.0, Culture=neutral, PublicKeyToken=0d5193a913d1b812, processorArchitecture=MSIL">
<HintPath>..\packages\App.Metrics.Reporting.Console.4.3.0\lib\netstandard2.0\App.Metrics.Reporting.Console.dll</HintPath>
</Reference>
<Reference Include="App.Metrics.Reporting.InfluxDB, Version=4.3.0.0, Culture=neutral, PublicKeyToken=0d5193a913d1b812, processorArchitecture=MSIL">
<HintPath>..\packages\App.Metrics.Reporting.InfluxDB.4.3.0\lib\netstandard2.0\App.Metrics.Reporting.InfluxDB.dll</HintPath>
</Reference>
<Reference Include="BetterFolderBrowser, Version=1.2.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\BetterFolderBrowser.1.2.0\lib\BetterFolderBrowser.dll</HintPath>
</Reference>
<Reference Include="CodeArtEng.Controls, Version=3.0.2.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\CodeArtEng.Controls.3.0.2\lib\net472\CodeArtEng.Controls.dll</HintPath>
</Reference>
<Reference Include="Cyotek.Windows.Forms.ColorPicker, Version=1.0.0.0, Culture=neutral, PublicKeyToken=58daa28b0b2de221, processorArchitecture=MSIL">
<HintPath>..\packages\Cyotek.Windows.Forms.ColorPicker.1.7.2\lib\net35\Cyotek.Windows.Forms.ColorPicker.dll</HintPath>
</Reference>
<Reference Include="log4net, Version=2.0.15.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
<HintPath>..\packages\log4net.2.0.15\lib\net45\log4net.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=7.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.7.0.0\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.DependencyInjection, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.DependencyInjection.7.0.0\lib\net462\Microsoft.Extensions.DependencyInjection.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.7.0.0\lib\net462\Microsoft.Extensions.DependencyInjection.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Office.Interop.Excel, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Office.Interop.Excel.15.0.4795.1001\lib\net20\Microsoft.Office.Interop.Excel.dll</HintPath>
<EmbedInteropTypes>False</EmbedInteropTypes>
</Reference>
<Reference Include="Microsoft.ReportViewer.Common, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Reporting.WinForms.v11.1.0.0.0\lib\Microsoft.ReportViewer.Common.dll</HintPath>
</Reference>
<Reference Include="Microsoft.ReportViewer.DataVisualization, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.ReportingServices.ReportViewerControl.WebForms.150.1537.0\lib\net40\Microsoft.ReportViewer.DataVisualization.dll</HintPath>
</Reference>
<Reference Include="Microsoft.ReportViewer.Design, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.ReportingServices.ReportViewerControl.WebForms.150.1537.0\lib\net40\Microsoft.ReportViewer.Design.dll</HintPath>
</Reference>
<Reference Include="Microsoft.ReportViewer.ProcessingObjectModel, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Reporting.WinForms.v11.1.0.0.0\lib\Microsoft.ReportViewer.ProcessingObjectModel.DLL</HintPath>
</Reference>
<Reference Include="Microsoft.ReportViewer.WebDesign, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.ReportingServices.ReportViewerControl.WebForms.150.1537.0\lib\net40\Microsoft.ReportViewer.WebDesign.dll</HintPath>
</Reference>
<Reference Include="Microsoft.ReportViewer.WebForms, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.ReportingServices.ReportViewerControl.WebForms.150.1537.0\lib\net40\Microsoft.ReportViewer.WebForms.dll</HintPath>
</Reference>
<Reference Include="Microsoft.ReportViewer.WinForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Reporting.WinForms.v11.1.0.0.0\lib\Microsoft.ReportViewer.WinForms.DLL</HintPath>
</Reference>
<Reference Include="Microsoft.SqlServer.Types, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Reporting.WinForms.v11.1.0.0.0\lib\Microsoft.SqlServer.Types.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="ScottPlot, Version=4.1.63.0, Culture=neutral, PublicKeyToken=86698dc10387c39e, processorArchitecture=MSIL">
<HintPath>..\packages\ScottPlot.4.1.63\lib\net462\ScottPlot.dll</HintPath>
</Reference>
<Reference Include="ScottPlot.WinForms, Version=4.1.63.0, Culture=neutral, PublicKeyToken=5df1dfa5321e734b, processorArchitecture=MSIL">
<HintPath>..\packages\ScottPlot.WinForms.4.1.63\lib\net48\ScottPlot.WinForms.dll</HintPath>
</Reference>
<Reference Include="SunnyUI, Version=3.3.4.0, Culture=neutral, PublicKeyToken=27d7d2e821d97aeb, processorArchitecture=MSIL">
<HintPath>..\packages\SunnyUI.3.3.4\lib\net472\SunnyUI.dll</HintPath>
</Reference>
<Reference Include="SunnyUI.Common, Version=3.3.2.0, Culture=neutral, PublicKeyToken=5a271fb7ba597231, processorArchitecture=MSIL">
<HintPath>..\packages\SunnyUI.Common.3.3.2\lib\net472\SunnyUI.Common.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Design" />
<Reference Include="System.Drawing.Common, Version=4.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Drawing.Common.4.7.2\lib\net461\System.Drawing.Common.dll</HintPath>
</Reference>
<Reference Include="System.Management" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\portable-net45+win8+wp8+wpa81\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\netstandard1.0\System.ValueTuple.dll</HintPath>
</Reference>
<Reference Include="System.Web" />
<Reference Include="System.Web.Extensions" />
<Reference Include="System.Windows" />
<Reference Include="System.Windows.Forms.DataVisualization" />
<Reference Include="System.Xaml" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="UIAutomationProvider" />
<Reference Include="WindowsBase" />
<Reference Include="WindowsFormsIntegration" />
</ItemGroup>
<ItemGroup>
<Compile Include="Views\Register.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Views\Register.Designer.cs">
<DependentUpon>Register.cs</DependentUpon>
</Compile>
<Compile Include="Views\FormData.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Views\FormData.Designer.cs">
<DependentUpon>FormData.cs</DependentUpon>
</Compile>
<Compile Include="Tools\Global.cs" />
<Compile Include="Tools\Logger.cs" />
<Compile Include="Tools\ParseUtil.cs" />
<Compile Include="Tools\Util.cs" />
<Compile Include="Views\FormDevice.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Views\FormDevice.Designer.cs">
<DependentUpon>FormDevice.cs</DependentUpon>
</Compile>
<Compile Include="Views\FormMain.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Views\FormMain.Designer.cs">
<DependentUpon>FormMain.cs</DependentUpon>
</Compile>
<Compile Include="Tools\IniFile.cs" />
<Compile Include="Storage\Profile.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="Views\FormData.resx">
<DependentUpon>FormData.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Views\FormDevice.resx">
<DependentUpon>FormDevice.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Views\FormMain.resx">
<DependentUpon>FormMain.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<EmbeddedResource Include="Views\Register.resx">
<DependentUpon>Register.cs</DependentUpon>
</EmbeddedResource>
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<None Include="Views\Import.xlsx" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.8">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4.8 %28x86 和 x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<COMReference Include="Microsoft.Office.Core">
<Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
<VersionMajor>2</VersionMajor>
<VersionMinor>8</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>primary</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
<COMReference Include="VBIDE">
<Guid>{0002E157-0000-0000-C000-000000000046}</Guid>
<VersionMajor>5</VersionMajor>
<VersionMinor>3</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>primary</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
</ItemGroup>
<ItemGroup>
<Content Include="favicon.ico" />
<Content Include="mt.ico" />
<Content Include="磁条.ico" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Microsoft.SqlServer.Types.160.1000.6\build\net462\Microsoft.SqlServer.Types.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.SqlServer.Types.160.1000.6\build\net462\Microsoft.SqlServer.Types.props'))" />
</Target>
</Project>

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PublishUrlHistory>publish\</PublishUrlHistory>
<InstallUrlHistory />
<SupportUrlHistory />
<UpdateUrlHistory />
<BootstrapperUrlHistory />
<ErrorReportUrlHistory />
<FallbackCulture>zh-CN</FallbackCulture>
<VerifyUploadedFiles>false</VerifyUploadedFiles>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,10 @@
""
{
"FILE_VERSION" = "9237"
"ENLISTMENT_CHOICE" = "NEVER"
"PROJECT_FILE_RELATIVE_PATH" = ""
"NUMBER_OF_EXCLUDED_FILES" = "0"
"ORIGINAL_PROJECT_FILE_PATH" = ""
"NUMBER_OF_NESTED_PROJECTS" = "0"
"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
}

106
SetTools/Storage/Config.ini Normal file
View File

@ -0,0 +1,106 @@
[CONFIG]
BaudRate=115200
DataBits=8
StopBits=1
G_PARITY=
[COMMAND]
Cmd1=10 10
Cmd2=20 20
Cmd3=
Cmd4=
Cmd5=
Cmd6=
Cmd7=
Cmd8=
Cmd9=
Cmd10=
Cmd11=
Cmd12=12 12 12
Cmd13=
Cmd14=
Cmd15=
Cmd16=
Cmd17=
Cmd18=
Cmd19=
Cmd20=
[DESCRIPTION]
Desc1=
Desc2=
Desc3=
Desc4=
Desc5=
Desc6=
Desc7=
Desc8=
Desc9=
Desc10=
Desc11=
Desc12=描述
Desc13=
Desc14=
Desc15=
Desc16=
Desc17=
Desc18=
Desc19=
Desc20=
[COMPARM]
CParm1=60
CParm2=0
CParm3=0
CParm4=5
CParm5=120
CParm6=0
CParm7=192.168.0.1
CParm8=192.168.0.1
CParm9=29970
CParm10=0
CParm11=5
CParm12=0
CParm13=0
CParm14=0
CParm15=0
CParm16=0
CParm17=0
CParm18=0
CParm19=0
CParm20=0
[SETPARM]
SParm1=1
SParm2=GPC12020021800013202
SParm3=0000013921544812
SParm4=无锡华耀生物科技有限公司
SParm5=GPC12020021800013202
SParm6=123
SParm7=气囊压力监控仪器
SParm8=32020001
SParm9=0
[PRESSPARM]
PParm1=90
PParm2=10
PParm3=5
PParm4=1
PParm5=2
PParm6=3
PParm7=4
PParm8=4
PParm9=5
PParm10=6
PParm11=7
PParm12=8
PParm13=9
PParm14=10
PParm15=11
PParm16=12
PParm17=15
PParm18=1
PParm19=27
PParm20=0
[DPARM]
DParm1=5
DParm2=12
DParm3=13
DParm4=14
DParm5=15
DParm6=16

461
SetTools/Storage/Profile.cs Normal file
View File

@ -0,0 +1,461 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace INIFILE
{
class Profile
{
public static void LoadProfile()
{
string strPath = AppDomain.CurrentDomain.BaseDirectory;
_file = new IniFile(strPath + "Config.ini");
//CONFIG
G_BAUDRATE = _file.ReadString("CONFIG", "BaudRate", "57600"); //读数据,下同
G_DATABITS = _file.ReadString("CONFIG", "DataBits", "8");
G_STOP = _file.ReadString("CONFIG", "StopBits", "1");
G_PARITY = _file.ReadString("CONFIG", "Parity", "NONE");
//COMMAND
txtCmd1 = _file.ReadString("COMMAND", "Cmd1", "");
txtCmd2 = _file.ReadString("COMMAND", "Cmd2", "");
txtCmd3 = _file.ReadString("COMMAND", "Cmd3", "");
txtCmd4 = _file.ReadString("COMMAND", "Cmd4", "");
txtCmd5 = _file.ReadString("COMMAND", "Cmd5", "");
txtCmd6 = _file.ReadString("COMMAND", "Cmd6", "");
txtCmd7 = _file.ReadString("COMMAND", "Cmd7", "");
txtCmd8 = _file.ReadString("COMMAND", "Cmd8", "");
txtCmd9 = _file.ReadString("COMMAND", "Cmd9", "");
txtCmd10 = _file.ReadString("COMMAND", "Cmd10", "");
txtCmd11 = _file.ReadString("COMMAND", "Cmd11", "");
txtCmd12 = _file.ReadString("COMMAND", "Cmd12", "");
txtCmd13 = _file.ReadString("COMMAND", "Cmd13", "");
txtCmd14 = _file.ReadString("COMMAND", "Cmd14", "");
txtCmd15 = _file.ReadString("COMMAND", "Cmd15", "");
txtCmd16 = _file.ReadString("COMMAND", "Cmd16", "");
txtCmd17 = _file.ReadString("COMMAND", "Cmd17", "");
txtCmd18 = _file.ReadString("COMMAND", "Cmd18", "");
txtCmd19 = _file.ReadString("COMMAND", "Cmd19", "");
txtCmd20 = _file.ReadString("COMMAND", "Cmd20", "");
//DESCRIPTION
txtDesc1 = _file.ReadString("DESCRIPTION", "Desc1", "");
txtDesc2 = _file.ReadString("DESCRIPTION", "Desc2", "");
txtDesc3 = _file.ReadString("DESCRIPTION", "Desc3", "");
txtDesc4 = _file.ReadString("DESCRIPTION", "Desc4", "");
txtDesc5 = _file.ReadString("DESCRIPTION", "Desc5", "");
txtDesc6 = _file.ReadString("DESCRIPTION", "Desc6", "");
txtDesc7 = _file.ReadString("DESCRIPTION", "Desc7", "");
txtDesc8 = _file.ReadString("DESCRIPTION", "Desc8", "");
//[COMPARM]
txtCParm1 = _file.ReadString("COMPARM", "CParm1", "");
txtCParm2 = _file.ReadString("COMPARM", "CParm2", "");
txtCParm3 = _file.ReadString("COMPARM", "CParm3", "");
txtCParm4 = _file.ReadString("COMPARM", "CParm4", "");
txtCParm5 = _file.ReadString("COMPARM", "CParm5", "");
txtCParm6 = _file.ReadString("COMPARM", "CParm6", "");
txtCParm7 = _file.ReadString("COMPARM", "CParm7", "");
txtCParm8 = _file.ReadString("COMPARM", "CParm8", "");
txtCParm9 = _file.ReadString("COMPARM", "CParm9", "");
txtCParm10 = _file.ReadString("COMPARM", "CParm10", "");
txtCParm11 = _file.ReadString("COMPARM", "CParm11", "");
txtCParm12 = _file.ReadString("COMPARM", "CParm12", "");
txtCParm13 = _file.ReadString("COMPARM", "CParm13", "");
txtCParm14 = _file.ReadString("COMPARM", "CParm14", "");
txtCParm15 = _file.ReadString("COMPARM", "CParm15", "");
txtCParm16 = _file.ReadString("COMPARM", "CParm16", "");
txtCParm17 = _file.ReadString("COMPARM", "CParm17", "");
txtCParm18 = _file.ReadString("COMPARM", "CParm18", "");
txtCParm19 = _file.ReadString("COMPARM", "CParm19", "");
txtCParm20 = _file.ReadString("COMPARM", "CParm20", "");
txtCParm21 = _file.ReadString("COMPARM", "CParm21", "");
txtCParm22 = _file.ReadString("COMPARM", "CParm22", "");
txtCParm23 = _file.ReadString("COMPARM", "CParm23", "");
txtCParm24 = _file.ReadString("COMPARM", "CParm24", "");
txtCParm25 = _file.ReadString("COMPARM", "CParm25", "");
txtCParm26 = _file.ReadString("COMPARM", "CParm26", "");
txtCParm27 = _file.ReadString("COMPARM", "CParm27", "");
txtCParm28 = _file.ReadString("COMPARM", "CParm28", "");
txtCParm29 = _file.ReadString("COMPARM", "CParm29", "");
txtCParm30 = _file.ReadString("COMPARM", "CParm30", "");
//[SETPARM]
txtSParm1 = _file.ReadString("SETPARM", "SParm1", "");
txtSParm2 = _file.ReadString("SETPARM", "SParm2", "");
txtSParm3 = _file.ReadString("SETPARM", "SParm3", "");
txtSParm4 = _file.ReadString("SETPARM", "SParm4", "");
txtSParm5 = _file.ReadString("SETPARM", "SParm5", "");
txtSParm6 = _file.ReadString("SETPARM", "SParm6", "");
txtSParm7 = _file.ReadString("SETPARM", "SParm7", "");
txtSParm8 = _file.ReadString("SETPARM", "SParm8", "");
txtSParm9 = _file.ReadString("SETPARM", "SParm9", "");
//[PRESSPARM]
txtPParm1 = _file.ReadString("PRESSPARM", "PParm1", "");
txtPParm2 = _file.ReadString("PRESSPARM", "PParm2", "");
txtPParm3 = _file.ReadString("PRESSPARM", "PParm3", "");
txtPParm4 = _file.ReadString("PRESSPARM", "PParm4", "");
txtPParm5 = _file.ReadString("PRESSPARM", "PParm5", "");
txtPParm6 = _file.ReadString("PRESSPARM", "PParm6", "");
txtPParm7 = _file.ReadString("PRESSPARM", "PParm7", "");
txtPParm8 = _file.ReadString("PRESSPARM", "PParm8", "");
txtPParm9 = _file.ReadString("PRESSPARM", "PParm9", "");
txtPParm10 = _file.ReadString("PRESSPARM", "PParm10", "");
txtPParm11 = _file.ReadString("PRESSPARM", "PParm11", "");
txtPParm12 = _file.ReadString("PRESSPARM", "PParm12", "");
txtPParm13 = _file.ReadString("PRESSPARM", "PParm13", "");
txtPParm14 = _file.ReadString("PRESSPARM", "PParm14", "");
txtPParm15 = _file.ReadString("PRESSPARM", "PParm15", "");
txtPParm16 = _file.ReadString("PRESSPARM", "PParm16", "");
txtPParm17 = _file.ReadString("PRESSPARM", "PParm17", "");
txtPParm18 = _file.ReadString("PRESSPARM", "PParm18", "");
txtPParm19 = _file.ReadString("PRESSPARM", "PParm19", "");
txtPParm20 = _file.ReadString("PRESSPARM", "PParm20", "");
txtPParm21 = _file.ReadString("PRESSPARM", "PParm21", "");
txtPParm22 = _file.ReadString("PRESSPARM", "PParm22", "");
txtPParm23 = _file.ReadString("PRESSPARM", "PParm23", "");
txtPParm24 = _file.ReadString("PRESSPARM", "PParm24", "");
txtPParm25 = _file.ReadString("PRESSPARM", "PParm25", "");
txtPParm26 = _file.ReadString("PRESSPARM", "PParm26", "");
txtPParm27 = _file.ReadString("PRESSPARM", "PParm27", "");
txtPParm28 = _file.ReadString("PRESSPARM", "PParm28", "");
txtPParm29 = _file.ReadString("PRESSPARM", "PParm29", "");
txtPParm30 = _file.ReadString("PRESSPARM", "PParm30", "");
txtPParm31 = _file.ReadString("PRESSPARM", "PParm31", "");
txtPParm32 = _file.ReadString("PRESSPARM", "PParm32", "");
txtPParm33 = _file.ReadString("PRESSPARM", "PParm33", "");
txtPParm34 = _file.ReadString("PRESSPARM", "PParm34", "");
txtPParm35 = _file.ReadString("PRESSPARM", "PParm35", "");
txtPParm36 = _file.ReadString("PRESSPARM", "PParm36", "");
txtPParm37 = _file.ReadString("PRESSPARM", "PParm37", "");
txtPParm38 = _file.ReadString("PRESSPARM", "PParm38", "");
txtPParm39 = _file.ReadString("PRESSPARM", "PParm39", "");
txtPParm40 = _file.ReadString("PRESSPARM", "PParm40", "");
txtPParm41 = _file.ReadString("PRESSPARM", "PParm41", "");
txtPParm42 = _file.ReadString("PRESSPARM", "PParm42", "");
txtPParm43 = _file.ReadString("PRESSPARM", "PParm43", "");
txtPParm44 = _file.ReadString("PRESSPARM", "PParm44", "");
txtPParm45 = _file.ReadString("PRESSPARM", "PParm45", "");
txtPParm46 = _file.ReadString("PRESSPARM", "PParm46", "");
txtPParm47 = _file.ReadString("PRESSPARM", "PParm47", "");
txtPParm48 = _file.ReadString("PRESSPARM", "PParm48", "");
txtPParm49 = _file.ReadString("PRESSPARM", "PParm49", "");
//[DPARM]
txtDParm1 = _file.ReadString("DPARM", "DParm1", "");
txtDParm2 = _file.ReadString("DPARM", "DParm2", "");
txtDParm3 = _file.ReadString("DPARM", "DParm3", "");
txtDParm4 = _file.ReadString("DPARM", "DParm4", "");
txtDParm5 = _file.ReadString("DPARM", "DParm5", "");
txtDParm6 = _file.ReadString("DPARM", "DParm6", "");
}
public static void SaveProfile()
{
string strPath = AppDomain.CurrentDomain.BaseDirectory;
_file = new IniFile(strPath + "Config.ini");
//CONFIG
_file.WriteString("CONFIG", "BaudRate", G_BAUDRATE); //写数据,下同
_file.WriteString("CONFIG", "DataBits", G_DATABITS);
_file.WriteString("CONFIG", "StopBits", G_STOP);
_file.WriteString("CONFIG", "G_PARITY", G_PARITY);
//COMMAND
_file.WriteString("COMMAND", "Cmd1", txtCmd1);
_file.WriteString("COMMAND", "Cmd2", txtCmd2);
_file.WriteString("COMMAND", "Cmd3", txtCmd3);
_file.WriteString("COMMAND", "Cmd4", txtCmd4);
_file.WriteString("COMMAND", "Cmd5", txtCmd5);
_file.WriteString("COMMAND", "Cmd6", txtCmd6);
_file.WriteString("COMMAND", "Cmd7", txtCmd7);
_file.WriteString("COMMAND", "Cmd8", txtCmd8);
_file.WriteString("COMMAND", "Cmd9", txtCmd9);
_file.WriteString("COMMAND", "Cmd10", txtCmd10);
_file.WriteString("COMMAND", "Cmd11", txtCmd11);
_file.WriteString("COMMAND", "Cmd12", txtCmd12);
_file.WriteString("COMMAND", "Cmd13", txtCmd13);
_file.WriteString("COMMAND", "Cmd14", txtCmd14);
_file.WriteString("COMMAND", "Cmd15", txtCmd15);
_file.WriteString("COMMAND", "Cmd16", txtCmd16);
_file.WriteString("COMMAND", "Cmd17", txtCmd17);
_file.WriteString("COMMAND", "Cmd18", txtCmd18);
_file.WriteString("COMMAND", "Cmd19", txtCmd19);
_file.WriteString("COMMAND", "Cmd20", txtCmd20);
//DESCRIPTION
_file.WriteString("DESCRIPTION", "Desc1", txtDesc1);
_file.WriteString("DESCRIPTION", "Desc2", txtDesc2);
_file.WriteString("DESCRIPTION", "Desc3", txtDesc3);
_file.WriteString("DESCRIPTION", "Desc4", txtDesc4);
_file.WriteString("DESCRIPTION", "Desc5", txtDesc5);
_file.WriteString("DESCRIPTION", "Desc6", txtDesc6);
_file.WriteString("DESCRIPTION", "Desc7", txtDesc7);
_file.WriteString("DESCRIPTION", "Desc8", txtDesc8);
//COMPARM
_file.WriteString("COMPARM", "CParm1", txtCParm1);
_file.WriteString("COMPARM", "CParm2", txtCParm2);
_file.WriteString("COMPARM", "CParm3", txtCParm3);
_file.WriteString("COMPARM", "CParm4", txtCParm4);
_file.WriteString("COMPARM", "CParm5", txtCParm5);
_file.WriteString("COMPARM", "CParm6", txtCParm6);
_file.WriteString("COMPARM", "CParm7", txtCParm7);
_file.WriteString("COMPARM", "CParm8", txtCParm8);
_file.WriteString("COMPARM", "CParm9", txtCParm9);
_file.WriteString("COMPARM", "CParm10", txtCParm10);
_file.WriteString("COMPARM", "CParm11", txtCParm11);
_file.WriteString("COMPARM", "CParm12", txtCParm12);
_file.WriteString("COMPARM", "CParm13", txtCParm13);
_file.WriteString("COMPARM", "CParm14", txtCParm14);
_file.WriteString("COMPARM", "CParm15", txtCParm15);
_file.WriteString("COMPARM", "CParm16", txtCParm16);
_file.WriteString("COMPARM", "CParm17", txtCParm17);
_file.WriteString("COMPARM", "CParm18", txtCParm18);
_file.WriteString("COMPARM", "CParm19", txtCParm19);
_file.WriteString("COMPARM", "CParm20", txtCParm20);
_file.WriteString("COMPARM", "CParm21", txtCParm21);
_file.WriteString("COMPARM", "CParm22", txtCParm22);
_file.WriteString("COMPARM", "CParm23", txtCParm23);
_file.WriteString("COMPARM", "CParm24", txtCParm24);
_file.WriteString("COMPARM", "CParm25", txtCParm25);
_file.WriteString("COMPARM", "CParm26", txtCParm26);
_file.WriteString("COMPARM", "CParm27", txtCParm27);
_file.WriteString("COMPARM", "CParm28", txtCParm28);
_file.WriteString("COMPARM", "CParm29", txtCParm29);
_file.WriteString("COMPARM", "CParm30", txtCParm30);
//SETPARM
_file.WriteString("SETPARM", "SParm1", txtSParm1);
_file.WriteString("SETPARM", "SParm2", txtSParm2);
_file.WriteString("SETPARM", "SParm3", txtSParm3);
_file.WriteString("SETPARM", "SParm4", txtSParm4);
_file.WriteString("SETPARM", "SParm5", txtSParm5);
_file.WriteString("SETPARM", "SParm6", txtSParm6);
_file.WriteString("SETPARM", "SParm7", txtSParm7);
_file.WriteString("SETPARM", "SParm8", txtSParm8);
_file.WriteString("SETPARM", "SParm9", txtSParm9);
//[PRESSPARM]
_file.WriteString("PRESSPARM", "PParm1", txtPParm1);
_file.WriteString("PRESSPARM", "PParm2", txtPParm2);
_file.WriteString("PRESSPARM", "PParm3", txtPParm3);
_file.WriteString("PRESSPARM", "PParm4", txtPParm4);
_file.WriteString("PRESSPARM", "PParm5", txtPParm5);
_file.WriteString("PRESSPARM", "PParm6", txtPParm6);
_file.WriteString("PRESSPARM", "PParm7", txtPParm7);
_file.WriteString("PRESSPARM", "PParm8", txtPParm8);
_file.WriteString("PRESSPARM", "PParm9", txtPParm9);
_file.WriteString("PRESSPARM", "PParm10", txtPParm10);
_file.WriteString("PRESSPARM", "PParm11", txtPParm11);
_file.WriteString("PRESSPARM", "PParm12", txtPParm12);
_file.WriteString("PRESSPARM", "PParm13", txtPParm13);
_file.WriteString("PRESSPARM", "PParm14", txtPParm14);
_file.WriteString("PRESSPARM", "PParm15", txtPParm15);
_file.WriteString("PRESSPARM", "PParm16", txtPParm16);
_file.WriteString("PRESSPARM", "PParm17", txtPParm17);
_file.WriteString("PRESSPARM", "PParm18", txtPParm18);
_file.WriteString("PRESSPARM", "PParm19", txtPParm19);
_file.WriteString("PRESSPARM", "PParm20", txtPParm20);
_file.WriteString("PRESSPARM", "PParm21", txtPParm21);
_file.WriteString("PRESSPARM", "PParm22", txtPParm22);
_file.WriteString("PRESSPARM", "PParm23", txtPParm23);
_file.WriteString("PRESSPARM", "PParm24", txtPParm24);
_file.WriteString("PRESSPARM", "PParm25", txtPParm25);
_file.WriteString("PRESSPARM", "PParm26", txtPParm26);
_file.WriteString("PRESSPARM", "PParm27", txtPParm27);
_file.WriteString("PRESSPARM", "PParm28", txtPParm28);
_file.WriteString("PRESSPARM", "PParm29", txtPParm29);
_file.WriteString("PRESSPARM", "PParm30", txtPParm30);
_file.WriteString("PRESSPARM", "PParm31", txtPParm31);
_file.WriteString("PRESSPARM", "PParm32", txtPParm32);
_file.WriteString("PRESSPARM", "PParm33", txtPParm33);
_file.WriteString("PRESSPARM", "PParm34", txtPParm34);
_file.WriteString("PRESSPARM", "PParm35", txtPParm35);
_file.WriteString("PRESSPARM", "PParm36", txtPParm36);
_file.WriteString("PRESSPARM", "PParm37", txtPParm37);
_file.WriteString("PRESSPARM", "PParm38", txtPParm38);
_file.WriteString("PRESSPARM", "PParm39", txtPParm39);
_file.WriteString("PRESSPARM", "PParm40", txtPParm40);
_file.WriteString("PRESSPARM", "PParm41", txtPParm41);
_file.WriteString("PRESSPARM", "PParm42", txtPParm42);
_file.WriteString("PRESSPARM", "PParm43", txtPParm43);
_file.WriteString("PRESSPARM", "PParm44", txtPParm44);
_file.WriteString("PRESSPARM", "PParm45", txtPParm45);
_file.WriteString("PRESSPARM", "PParm46", txtPParm46);
_file.WriteString("PRESSPARM", "PParm47", txtPParm47);
_file.WriteString("PRESSPARM", "PParm48", txtPParm48);
_file.WriteString("PRESSPARM", "PParm49", txtPParm49);
//[DPARM]
_file.WriteString("DPARM", "DParm1", txtDParm1);
_file.WriteString("DPARM", "DParm2", txtDParm2);
_file.WriteString("DPARM", "DParm3", txtDParm3);
_file.WriteString("DPARM", "DParm4", txtDParm4);
_file.WriteString("DPARM", "DParm5", txtDParm5);
_file.WriteString("DPARM", "DParm6", txtDParm6);
}
private static IniFile _file;//内置了一个对象
public static string G_BAUDRATE = "57600";//给ini文件赋新值并且影响界面下拉框的显示
public static string G_DATABITS = "8";
public static string G_STOP = "1";
public static string G_PARITY = "NONE";
public static string txtCmd1 = "";
public static string txtCmd2 = "";
public static string txtCmd3 = "";
public static string txtCmd4 = "";
public static string txtCmd5 = "";
public static string txtCmd6 = "";
public static string txtCmd7 = "";
public static string txtCmd8 = "";
public static string txtCmd9 = "";
public static string txtCmd10 = "";
public static string txtCmd11 = "";
public static string txtCmd12 = "";
public static string txtCmd13 = "";
public static string txtCmd14 = "";
public static string txtCmd15 = "";
public static string txtCmd16 = "";
public static string txtCmd17 = "";
public static string txtCmd18 = "";
public static string txtCmd19 = "";
public static string txtCmd20 = "";
//DESCRIPTION
public static string txtDesc1 = "";
public static string txtDesc2 = "";
public static string txtDesc3 = "";
public static string txtDesc4 = "";
public static string txtDesc5 = "";
public static string txtDesc6 = "";
public static string txtDesc7 = "";
public static string txtDesc8 = "";
//COMPARM
public static string txtCParm1 = "";
public static string txtCParm2 = "";
public static string txtCParm3 = "";
public static string txtCParm4 = "";
public static string txtCParm5 = "";
public static string txtCParm6 = "";
public static string txtCParm7 = "";
public static string txtCParm8 = "";
public static string txtCParm9 = "";
public static string txtCParm10 = "";
public static string txtCParm11 = "";
public static string txtCParm12 = "";
public static string txtCParm13 = "";
public static string txtCParm14 = "";
public static string txtCParm15 = "";
public static string txtCParm16 = "";
public static string txtCParm17 = "";
public static string txtCParm18 = "";
public static string txtCParm19 = "";
public static string txtCParm20 = "";
public static string txtCParm21 = "";
public static string txtCParm22 = "";
public static string txtCParm23 = "";
public static string txtCParm24 = "";
public static string txtCParm25 = "";
public static string txtCParm26 = "";
public static string txtCParm27 = "";
public static string txtCParm28 = "";
public static string txtCParm29 = "";
public static string txtCParm30 = "";
//[SETPARM]
public static string txtSParm1 = "";
public static string txtSParm2 = "";
public static string txtSParm3 = "";
public static string txtSParm4 = "";
public static string txtSParm5 = "";
public static string txtSParm6 = "";
public static string txtSParm7 = "";
public static string txtSParm8 = "";
public static string txtSParm9 = "";
public static string txtSParm10 = "";
public static string txtSParm11 = "";
//[PRESSPARM]
public static string txtPParm1 = "";
public static string txtPParm2 = "";
public static string txtPParm3 = "";
public static string txtPParm4 = "";
public static string txtPParm5 = "";
public static string txtPParm6 = "";
public static string txtPParm7 = "";
public static string txtPParm8 = "";
public static string txtPParm9 = "";
public static string txtPParm10 = "";
public static string txtPParm11 = "";
public static string txtPParm12 = "";
public static string txtPParm13 = "";
public static string txtPParm14 = "";
public static string txtPParm15 = "";
public static string txtPParm16 = "";
public static string txtPParm17 = "";
public static string txtPParm18 = "";
public static string txtPParm19 = "";
public static string txtPParm20 = "";
public static string txtPParm21 = "";
public static string txtPParm22 = "";
public static string txtPParm23 = "";
public static string txtPParm24 = "";
public static string txtPParm25 = "";
public static string txtPParm26 = "";
public static string txtPParm27 = "";
public static string txtPParm28 = "";
public static string txtPParm29 = "";
public static string txtPParm30 = "";
public static string txtPParm31 = "";
public static string txtPParm32 = "";
public static string txtPParm33 = "";
public static string txtPParm34 = "";
public static string txtPParm35 = "";
public static string txtPParm36 = "";
public static string txtPParm37 = "";
public static string txtPParm38 = "";
public static string txtPParm39 = "";
public static string txtPParm40 = "";
public static string txtPParm41 = "";
public static string txtPParm42 = "";
public static string txtPParm43 = "";
public static string txtPParm44 = "";
public static string txtPParm45 = "";
public static string txtPParm46 = "";
public static string txtPParm47 = "";
public static string txtPParm48 = "";
public static string txtPParm49 = "";
//[DPARM]
public static string txtDParm1 = "";
public static string txtDParm2 = "";
public static string txtDParm3 = "";
public static string txtDParm4 = "";
public static string txtDParm5 = "";
public static string txtDParm6 = "";
}
}

383
SetTools/Tools/Global.cs Normal file
View File

@ -0,0 +1,383 @@
//using System.Windows;
//using Newtonsoft.Json;
//using System;
//using System.Collections.Generic;
//using System.Globalization;
//using System.IO;
//using System.IO.Ports;
//using System.Linq;
//using System.Management;
//using System.Text;
//using System.Text.RegularExpressions;
//using System.Threading.Tasks;
//namespace SetTools.Tools
//{
// class Global
// {
// //api接口文档网址
// public static string apiDocumentUrl = "https://github.com/chenxuuu/llcom/blob/master/LuaApi.md";
// //主窗口是否被关闭?
// public static bool isMainWindowsClosed = false;
// //给全局使用的设置参数项
// public static Serial.Settings setting;
// public static Serial.Uart uart = new Serial.Uart();
// /// <summary>
// /// 软件打开后,所有东西的初始化流程
// /// </summary>
// public static void Initial()
// {
// //C:\Users\chenx\AppData\Local\Temp\7zO05433053\user_script_run
// if(AppDomain.CurrentDomain.BaseDirectory.IndexOf(@"C:\Users\") == 0 &&
// AppDomain.CurrentDomain.BaseDirectory.Contains(@"\AppData\Local\Temp\"))
// {
// System.Windows.Forms.MessageBox.Show("请勿在压缩包内直接打开本软件。");
// Environment.Exit(1);
// }
// try
// {
// if (!Directory.Exists("core_script"))
// {
// Directory.CreateDirectory("core_script");
// }
// CreateFile("DefaultFiles/core_script/head.lua", "core_script/head.lua", false);
// CreateFile("DefaultFiles/core_script/JSON.lua", "core_script/JSON.lua", false);
// CreateFile("DefaultFiles/core_script/log.lua", "core_script/log.lua", false);
// CreateFile("DefaultFiles/core_script/once.lua", "core_script/once.lua", false);
// CreateFile("DefaultFiles/core_script/strings.lua", "core_script/strings.lua", false);
// CreateFile("DefaultFiles/core_script/sys.lua", "core_script/sys.lua", false);
// if (!Directory.Exists("logs"))
// Directory.CreateDirectory("logs");
// if (!Directory.Exists("user_script_run"))
// {
// Directory.CreateDirectory("user_script_run");
// CreateFile("DefaultFiles/user_script_run/AT控制TCP连接-快发模式.lua", "user_script_run/AT控制TCP连接-快发模式.lua");
// CreateFile("DefaultFiles/user_script_run/AT控制TCP连接-慢发模式.lua", "user_script_run/AT控制TCP连接-慢发模式.lua");
// CreateFile("DefaultFiles/user_script_run/example.lua", "user_script_run/example.lua");
// CreateFile("DefaultFiles/user_script_run/循环发送快捷发送区数据.lua", "user_script_run/循环发送快捷发送区数据.lua");
// }
// if (!Directory.Exists("user_script_run/requires"))
// Directory.CreateDirectory("user_script_run/requires");
// if (!Directory.Exists("user_script_run/logs"))
// Directory.CreateDirectory("user_script_run/logs");
// if (!Directory.Exists("user_script_send_convert"))
// {
// Directory.CreateDirectory("user_script_send_convert");
// CreateFile("DefaultFiles/user_script_send_convert/16进制数据.lua", "user_script_send_convert/16进制数据.lua");
// CreateFile("DefaultFiles/user_script_send_convert/GPS NMEA.lua", "user_script_send_convert/GPS NMEA.lua");
// CreateFile("DefaultFiles/user_script_send_convert/加上换行回车.lua", "user_script_send_convert/加上换行回车.lua");
// CreateFile("DefaultFiles/user_script_send_convert/解析换行回车的转义字符.lua", "user_script_send_convert/解析换行回车的转义字符.lua");
// CreateFile("DefaultFiles/user_script_send_convert/默认.lua", "user_script_send_convert/默认.lua");
// }
// CreateFile("DefaultFiles/LICENSE", "LICENSE", false);
// CreateFile("DefaultFiles/反馈网址.txt", "反馈网址.txt", false);
// }
// catch(Exception e)
// {
// System.Windows.Forms.MessageBox.Show("生成文件结构失败,请确保本软件处于有读写权限的目录下再打开。\r\n错误信息"+e.Message);
// Environment.Exit(1);
// }
// //配置文件
// if(File.Exists("settings.json"))
// {
// setting = JsonConvert.DeserializeObject<Serial.Settings>(File.ReadAllText("settings.json"));
// setting.SentCount = 0;
// setting.ReceivedCount = 0;
// }
// else
// {
// ////导入之前的配置文件
// //if (Properties.Settings.Default.UpgradeRequired)
// //{
// // Properties.Settings.Default.Upgrade();
// // //Properties.Settings.Default.UpgradeRequired = false;
// // //Properties.Settings.Default.Save();
// //}
// //setting = new Serial.Settings();
// //if(Properties.Settings.Default.quickData != "done" &&
// // Properties.Settings.Default.dataToSend !=
// // "uart dataplVIzj85gvLDrDqtVxftzTb78")//不是第一次用
// //{
// // setting.dataToSend = Properties.Settings.Default.dataToSend;
// // setting.baudRate = Properties.Settings.Default.BaudRate;
// // setting.autoReconnect = Properties.Settings.Default.autoReconnect;
// // setting.autoSaveLog = Properties.Settings.Default.autoSaveLog;
// // setting.showHex = Properties.Settings.Default.showHex;
// // setting.parity = Properties.Settings.Default.parity;
// // setting.timeout = Properties.Settings.Default.timeout;
// // setting.dataBits = Properties.Settings.Default.dataBits;
// // setting.stopBit = Properties.Settings.Default.stopBit;
// // setting.sendScript = Properties.Settings.Default.sendScript;
// // setting.runScript = Properties.Settings.Default.runScript;
// // setting.topmost = Properties.Settings.Default.topmost;
// // setting.quickData = Properties.Settings.Default.quickData;
// // setting.bitDelay = Properties.Settings.Default.bitDelay;
// // setting.autoUpdate = Properties.Settings.Default.autoUpdate;
// // setting.maxLength = Properties.Settings.Default.maxLength;
// // Properties.Settings.Default.quickData = "done";
// //}
// }
// setting.UpdateQuickSend();
// uart.serial.BaudRate = setting.baudRate;
// uart.serial.Parity = (Parity)setting.parity;
// uart.serial.DataBits = setting.dataBits;
// uart.serial.StopBits = (StopBits)setting.stopBit;
// //uart.UartDataRecived += Uart_UartDataRecived;
// //uart.UartDataSent += Uart_UartDataSent;
// }
// ///// <summary>
// ///// 已发送记录到日志
// ///// </summary>
// ///// <param name="sender"></param>
// ///// <param name="e"></param>
// //private static void Uart_UartDataSent(object sender, EventArgs e)
// //{
// // Logger.AddUartLog($"[INFO]==>{Byte2String((byte[])sender)}");
// // Logger.AddUartLog($"[DEBUG][HEX]\"{Byte2Hex((byte[])sender, " ")}\"");
// //}
// ///// <summary>
// ///// 收到的数据记录到日志
// ///// </summary>
// ///// <param name="sender"></param>
// ///// <param name="e"></param>
// //private static void Uart_UartDataRecived(object sender, EventArgs e)
// //{
// // Logger.AddUartLog($"[INFO]<=={Byte2String((byte[])sender)}");
// // Logger.AddUartLog($"[DEBUG][HEX]\"{Byte2Hex((byte[])sender, " ")}\"");
// //}
// //public static Encoding GetEncoding() => Encoding.GetEncoding(setting.encoding);
// ///// <summary>
// ///// 字符串转hex值
// ///// </summary>
// ///// <param name="str">字符串</param>
// ///// <param name="space">间隔符号</param>
// ///// <returns>结果</returns>
// //public static string String2Hex(string str, string space)
// //{
// // return BitConverter.ToString(GetEncoding().GetBytes(str)).Replace("-", space);
// //}
// ///// <summary>
// ///// hex值转字符串
// ///// </summary>
// ///// <param name="mHex">hex值</param>
// ///// <returns>原始字符串</returns>
// //public static string Hex2String(string mHex)
// //{
// // mHex = Regex.Replace(mHex, "[^0-9A-Fa-f]", "");
// // if (mHex.Length % 2 != 0)
// // mHex = mHex.Remove(mHex.Length - 1, 1);
// // if (mHex.Length <= 0) return "";
// // byte[] vBytes = new byte[mHex.Length / 2];
// // for (int i = 0; i < mHex.Length; i += 2)
// // if (!byte.TryParse(mHex.Substring(i, 2), NumberStyles.HexNumber, null, out vBytes[i / 2]))
// // vBytes[i / 2] = 0;
// // return GetEncoding().GetString(vBytes);
// //}
// ///// <summary>
// ///// byte转string
// ///// </summary>
// ///// <param name="mHex"></param>
// ///// <returns></returns>
// //public static string Byte2String(byte[] vBytes)
// //{
// // var br = from e in vBytes
// // where e != 0
// // select e;
// // return GetEncoding().GetString(br.ToArray());
// //}
// ///// <summary>
// ///// hex转byte
// ///// </summary>
// ///// <param name="mHex">hex值</param>
// ///// <returns>原始字符串</returns>
// //public static byte[] Hex2Byte(string mHex)
// //{
// // mHex = Regex.Replace(mHex, "[^0-9A-Fa-f]", "");
// // if (mHex.Length % 2 != 0)
// // mHex = mHex.Remove(mHex.Length - 1, 1);
// // if (mHex.Length <= 0) return new byte[0];
// // byte[] vBytes = new byte[mHex.Length / 2];
// // for (int i = 0; i < mHex.Length; i += 2)
// // if (!byte.TryParse(mHex.Substring(i, 2), NumberStyles.HexNumber, null, out vBytes[i / 2]))
// // vBytes[i / 2] = 0;
// // return vBytes;
// //}
// //public static string Byte2Hex(byte[] d, string s = "")
// //{
// // return BitConverter.ToString(d).Replace("-", s);
// //}
// /// <summary>
// /// 导入SSCOM配置文件数据
// /// </summary>
// /// <param name="path"></param>
// /// <returns></returns>
// public static List<Serial.ToSendData> ImportFromSSCOM(string path)
// {
// var lines = File.ReadAllLines(path, Encoding.GetEncoding("GB2312"));
// var r = new List<Serial.ToSendData>();
// Regex title = new Regex(@"N1\d\d=\d*,");
// for (int i = 0; i < lines.Length; i++)
// {
// try
// {
// var temp = new Serial.ToSendData();
// //Console.WriteLine(lines[i]);
// if (title.IsMatch(lines[i]))//匹配上了
// {
// var strs = lines[i].Split(",".ToCharArray()[0]);
// temp.commit = strs[1].Replace(((char)2).ToString(), ",");
// if (string.IsNullOrWhiteSpace(temp.commit))
// temp.commit = "发送";
// //Console.WriteLine(temp.commit);
// int dot = lines[i + 1].IndexOf(",");
// temp.hex = lines[i + 1].Substring(dot - 1, 1) == "H";
// //Console.WriteLine(strs[0].Substring(strs[0].Length - 1));
// string text = lines[i + 1].Substring(dot + 1);
// if (!string.IsNullOrWhiteSpace(text))
// {
// temp.text = text.Replace(((char)2).ToString(), ",");
// r.Add(temp);
// }
// }
// }
// catch
// {
// //先不处理
// }
// }
// return r;
// }
// /// <summary>
// /// 读取软件资源文件内容
// /// </summary>
// /// <param name="path">路径</param>
// /// <returns>内容字节数组</returns>
// public static byte[] GetAssetsFileContent(string path)
// {
// byte[] f = {0};
// Uri uri = new Uri(path, UriKind.Relative);
// //var source = System.Windows.Application.GetResourceStream(uri).Stream;
// //byte[] f = new byte[source.Length];
// //source.Read(f, 0, (int)source.Length);
// return f;
// }
// /// <summary>
// /// 取出文件
// /// </summary>
// /// <param name="insidePath">软件内部的路径</param>
// /// <param name="outPath">需要释放到的路径</param>
// /// <param name="d">是否覆盖</param>
// public static void CreateFile(string insidePath, string outPath, bool d = true)
// {
// if(!File.Exists(outPath) || d)
// File.WriteAllBytes(outPath, GetAssetsFileContent(insidePath));
// }
// /// <summary>
// /// 更换语言文件
// /// </summary>
// /// <param name="languagefileName"></param>
// public static void LoadLanguageFile(string languagefileName)
// {
// //try
// //{
// // System.Windows.Forms.Application.Current.Resources.MergedDictionaries[0] = new System.Windows.ResourceDictionary()
// // {
// // Source = new Uri($"pack://application:,,,/languages/{languagefileName}.xaml", UriKind.RelativeOrAbsolute)
// // };
// //}
// //catch
// //{
// // System.Windows.Application.Current.Resources.MergedDictionaries[0] = new System.Windows.ResourceDictionary()
// // {
// // Source = new Uri("pack://application:,,,/languages/en-US.xaml", UriKind.RelativeOrAbsolute)
// // };
// //}
// }
// /// <summary>
// /// 获取时间戳
// /// </summary>
// /// <returns></returns>
// public static uint GetTimeStamp()
// {
// TimeSpan ts = DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0);
// return Convert.ToUInt32(ts.TotalSeconds);
// }
// public static byte[] StringToByte(string InString)
// {
// string[] ByteStrings;
// ByteStrings = InString.Split(" ".ToCharArray());
// byte[] ByteOut;
// ByteOut = new byte[ByteStrings.Length];
// for (int i = 0; i < ByteStrings.Length; i++)
// {
// ByteOut[i] = Convert.ToByte(ByteStrings[i], 16);
// }
// return ByteOut;
// }
// public static byte[] StringToHexBytes(string InString)//加空格
// {
// string r = Regex.Replace(InString, @"(?<=[0-9A-F]{2})[0-9A-F]{2}", " $0");//加空格
// return StringToByte(r);
// }
// public static string ByteToString(byte[] InBytes)
// {
// string StringOut = "";
// foreach (byte InByte in InBytes)
// {
// StringOut = StringOut + String.Format("{0:X2} ", InByte);
// }
// return StringOut;
// }
// public static string ToHexString(byte[] bytes) // 0xae00cf => "AE00CF "
// {
// string hexString = string.Empty;
// if (bytes != null)
// {
// StringBuilder strB = new StringBuilder();
// for (int i = 0; i < bytes.Length; i++)
// {
// strB.Append(bytes[i].ToString("X2"));
// }
// hexString = strB.ToString();
// }
// return hexString;
// }
// }
//}

192
SetTools/Tools/IniFile.cs Normal file
View File

@ -0,0 +1,192 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace INIFILE
{
public abstract class CustomIniFile
{
public CustomIniFile(string AFileName)
{
FFileName = AFileName;
}
private string FFileName;
public string FileName
{
get { return FFileName; }
}
public virtual bool SectionExists(string Section)
{
List<string> vStrings = new List<string>();
ReadSections(vStrings);
return vStrings.Contains(Section);
}
public virtual bool ValueExists(string Section, string Ident)
{
List<string> vStrings = new List<string>();
ReadSection(Section, vStrings);
return vStrings.Contains(Ident);
}
public abstract string ReadString(string Section, string Ident, string Default);
public abstract bool WriteString(string Section, string Ident, string Value);
public abstract bool ReadSectionValues(string Section, List<string> Strings);
public abstract bool ReadSection(string Section, List<string> Strings);
public abstract bool ReadSections(List<string> Strings);
public abstract bool EraseSection(string Section);
public abstract bool DeleteKey(string Section, string Ident);
public abstract bool UpdateFile();
}
/// <summary>
/// 存储本地INI文件的类。
/// </summary>
public class IniFile : CustomIniFile
{
[DllImport("kernel32")]
private static extern uint GetPrivateProfileString(
string lpAppName, // points to section name
string lpKeyName, // points to key name
string lpDefault, // points to default string
byte[] lpReturnedString, // points to destination buffer
uint nSize, // size of destination buffer
string lpFileName // points to initialization filename
);
[DllImport("kernel32")]
private static extern bool WritePrivateProfileString(
string lpAppName, // pointer to section name
string lpKeyName, // pointer to key name
string lpString, // pointer to string to add
string lpFileName // pointer to initialization filename
);
/// <summary>
/// 构造IniFile实例。
/// <param name="AFileName">指定文件名</param>
/// </summary>
public IniFile(string AFileName)
: base(AFileName)
{
}
/// <summary>
/// 析够IniFile实例。
/// </summary>
~IniFile()
{
UpdateFile();
}
/// <summary>
/// 读取字符串值。
/// <param name="Ident">指定变量标识。</param>
/// <param name="Section">指定所在区域。</param>
/// <param name="Default">指定默认值。</param>
/// <returns>返回读取的字符串。如果读取失败则返回该值。</returns>
/// </summary>
public override string ReadString(string Section, string Ident, string Default)
{
byte[] vBuffer = new byte[2048];
uint vCount = GetPrivateProfileString(Section,
Ident, Default, vBuffer, (uint)vBuffer.Length, FileName);
return Encoding.Default.GetString(vBuffer, 0, (int)vCount);
}
/// <summary>
/// 写入字符串值。
/// </summary>
/// <param name="Section">指定所在区域。</param>
/// <param name="Ident">指定变量标识。</param>
/// <param name="Value">所要写入的变量值。</param>
/// <returns>返回写入是否成功。</returns>
public override bool WriteString(string Section, string Ident, string Value)
{
return WritePrivateProfileString(Section, Ident, Value, FileName);
}
/// <summary>
/// 获得区域的完整文本。(变量名=值格式)。
/// </summary>
/// <param name="Section">指定区域标识。</param>
/// <param name="Strings">输出处理结果。</param>
/// <returns>返回读取是否成功。</returns>
public override bool ReadSectionValues(string Section, List<string> Strings)
{
List<string> vIdentList = new List<string>();
if (!ReadSection(Section, vIdentList)) return false;
foreach (string vIdent in vIdentList)
Strings.Add(string.Format("{0}={1}", vIdent, ReadString(Section, vIdent, "")));
return true;
}
/// <summary>
/// 读取区域变量名列表。
/// </summary>
/// <param name="Section">指定区域名。</param>
/// <param name="Strings">指定输出列表。</param>
/// <returns>返回获取是否成功。</returns>
public override bool ReadSection(string Section, List<string> Strings)
{
byte[] vBuffer = new byte[16384];
uint vLength = GetPrivateProfileString(Section, null, null, vBuffer,
(uint)vBuffer.Length, FileName);
int j = 0;
for (int i = 0; i < vLength; i++)
if (vBuffer[i] == 0)
{
Strings.Add(Encoding.Default.GetString(vBuffer, j, i - j));
j = i + 1;
}
return true;
}
/// <summary>
/// 读取区域名列表。
/// </summary>
/// <param name="Strings">指定输出列表。</param>
/// <returns></returns>
public override bool ReadSections(List<string> Strings)
{
byte[] vBuffer = new byte[16384];
uint vLength = GetPrivateProfileString(null, null, null, vBuffer,
(uint)vBuffer.Length, FileName);
int j = 0;
for (int i = 0; i < vLength; i++)
if (vBuffer[i] == 0)
{
Strings.Add(Encoding.Default.GetString(vBuffer, j, i - j));
j = i + 1;
}
return true;
}
/// <summary>
/// 删除指定区域。
/// </summary>
/// <param name="Section">指定区域名。</param>
/// <returns>返回删除是否成功。</returns>
public override bool EraseSection(string Section)
{
return WritePrivateProfileString(Section, null, null, FileName);
}
/// <summary>
/// 删除指定变量。
/// </summary>
/// <param name="Section">变量所在区域。</param>
/// <param name="Ident">变量标识。</param>
/// <returns>返回删除是否成功。</returns>
public override bool DeleteKey(string Section, string Ident)
{
return WritePrivateProfileString(Section, Ident, null, FileName);
}
/// <summary>
/// 更新文件。
/// </summary>
/// <returns>返回更新是否成功。</returns>
public override bool UpdateFile()
{
return WritePrivateProfileString(null, null, null, FileName);
}
}
}

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace llcom.Tools
{
class InputDialog
{
public static Tuple<bool, string> OpenDialog(string prompt, string defaultInput = "", string title = null)
{
InputDialogWindow dialog = new InputDialogWindow(prompt, defaultInput, title);
bool ret = dialog.ShowDialog() ?? false;
return Tuple.Create<bool, string>(ret, dialog.Value);
}
}
}

92
SetTools/Tools/Logger.cs Normal file
View File

@ -0,0 +1,92 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SetTools.Tools
{
class Logger
{
//显示日志数据的回调函数
public static event EventHandler<DataShowPara> DataShowEvent;
//清空显示的回调函数
public static event EventHandler DataClearEvent;
//清空日志显示
public static void ClearData()
{
DataClearEvent?.Invoke(null,null);
}
//显示日志数据
public static void ShowData(byte[] data, bool send)
{
DataShowEvent?.Invoke(null, new DataShowPara
{
data = data,
send = send
});
}
private static string uartLogFile = "";
private static string luaLogFile = "";
/// <summary>
/// 初始化串口日志文件
/// </summary>
public static void InitUartLog()
{
uartLogFile = "logs/" + DateTime.Now.ToString("yyyyMMdd-HHmmss") + ".log";
AddUartLog("[INFO]Logs by LLCOM. https://github.com/chenxuuu/llcom");
}
/// <summary>
/// 写入一条串口日志
/// </summary>
/// <param name="l"></param>
public static void AddUartLog(string l)
{
if (uartLogFile == "")
InitUartLog();
try
{
File.AppendAllText(uartLogFile, DateTime.Now.ToString("[yyyy-MM-dd HH:mm:ss:ffff]") + l + "\r\n");
}
catch { }
}
/// <summary>
/// 初始化lua日志文件
/// </summary>
public static void InitLuaLog()
{
luaLogFile = "user_script_run/logs/" + DateTime.Now.ToString("yyyyMMdd-HHmmss") + ".log";
}
/// <summary>
/// 写入一条lua日志
/// </summary>
/// <param name="l"></param>
public static void AddLuaLog(string l)
{
if (luaLogFile == "")
InitLuaLog();
try
{
File.AppendAllText(luaLogFile, DateTime.Now.ToString("[yyyy-MM-dd HH:mm:ss:ffff]") + l + "\r\n");
}
catch { }
}
}
/// <summary>
/// 显示到日志显示页面的类
/// </summary>
class DataShowPara
{
public byte[] data;
public bool send;
}
}

136
SetTools/Tools/ParseUtil.cs Normal file
View File

@ -0,0 +1,136 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Net;
namespace SetTools.Protocol
{
public class ParseUtil
{
public BinaryReader reader {get;set;}
public BinaryReader newReader(Byte[] byBuffer, int nReceived)
{
return newReader(byBuffer, 0, nReceived);
}
public BinaryReader newReader(Byte[] byBuffer, int start, int nReceived)
{
MemoryStream memoryStream = new MemoryStream(byBuffer, start, nReceived);
return new BinaryReader(memoryStream);
}
public Byte Parse()
{
return reader.ReadByte();
}
//从字节流中读取时间
public DateTime ParseDateTime()
{
Int16 year = IPAddress.NetworkToHostOrder(reader.ReadInt16());
Byte month = reader.ReadByte();
Byte day = reader.ReadByte();
Byte hour = reader.ReadByte();
Byte minute = reader.ReadByte();
Byte sec = reader.ReadByte();
return new DateTime(year, month, day, hour, minute, sec);
}
public UInt32 ParseUInt32()
{
Byte[] vBytes = reader.ReadBytes(4);
Array.Reverse(vBytes);
return BitConverter.ToUInt32(vBytes, 0);
}
public Int32 ParseInt32()
{
int flow = reader.ReadInt32();
return IPAddress.NetworkToHostOrder(flow);
}
public Int16 ParseInt16()
{
Int16 test = reader.ReadInt16();
//byte[] bytes = BitConverter.GetBytes(test);
//string str = Convert.ToString(test, 2);
Int16 test2 = IPAddress.NetworkToHostOrder(test);
//bytes = BitConverter.GetBytes(test2);
//str = Convert.ToString(test2, 2);
return test2;
}
public String ParseStringBZ(int intLength)
{
string strReturn = "";
for (int i = 0; i < intLength; i++)
{
strReturn += Parse().ToString("x2");
}
return strReturn;
}
public string ParseString(int len)
{
Byte[] bytes = reader.ReadBytes(len);
if (bytes[0] != '\0')
return System.Text.Encoding.ASCII.GetString(bytes);
return "";
}
public string ParseString(int len, Encoding encoding)
{
Byte[] bytes = reader.ReadBytes(len);
if (bytes[0] != '\0')
return encoding.GetString(bytes);
return "";
}
public static string ToHexString(byte[] bytes, int len)
{
return ToHexString(bytes, 0, len);
}
public static string ToHexString(byte[] bytes, int start, int len)
{
string strReturn = "";
for (int i = start; i < (start + len); i++)
{
byte bt = bytes[i];
strReturn += bt.ToString("x2") + " ";
}
return strReturn;
}
public static byte[] ToByesByHex(string hexStr)
{
int len = hexStr.Length;
byte[] data = new byte[len / 2];
for (int k = 0; k < data.Length; k++)
{
data[k] = Convert.ToByte(hexStr.Substring(k * 2, 2), 16);
//k = k* 2;
}
return data;
}
}
}

98
SetTools/Tools/Util.cs Normal file
View File

@ -0,0 +1,98 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SetTools
{
class Util
{
//16进制string转byte数组
public static byte[] hexString2bytes(int size, String src)
{
if (size <= 0) return null;
byte[] bs = new byte[size];
int i;
for (i = 0; i < size; i++)
{
bs[i] = Convert.ToByte(src.Substring(i * 2, 2), 16);
}
return bs;
}
//ascii string转byte数组
public static byte[] ascString2bytes(int size, String src)
{
if (size <= 0) return null;
byte[] ss = System.Text.Encoding.ASCII.GetBytes(src);
byte[] bs = new byte[size];
int i = size;
if (i > ss.Length)
{
i = ss.Length;
}
while (i > 0)
{
i--;
bs[i] = ss[i];
}
return bs;
}
//将单个字节数值转string 2位可视16进制字符显示
public static string byteHex2String(Byte value)
{
String t = Convert.ToString(value, 16);
if (t.Length < 2)
{
t = "0" + t;
}
return (t);
}
//16进制byte数组转string
//byte bt = 0x35;
//bt.ToString("x2") = "35"
public static string bytesHex2String(byte[] value)
{
int i, size = value.Length;
StringBuilder sb = new StringBuilder();
for (i = 0; i < size; i++)
{
sb.Append(byteHex2String(value[i]));
}
return (sb.ToString());
}
//byte数组转string
public static string bytes2String(byte[] value)
{
return System.Text.Encoding.GetEncoding("GB18030").GetString(value);
}
//32位数字转string
public static string uint2HexString(UInt32 value) {
return(value.ToString("X2"));
}
//byte转bcd
//bin:0-99
public static byte bin2BCD(byte bin){
byte msb;
if (bin > 99)
{
return (0x99);
}
msb = (byte)(bin / 10);
return (byte)(bin + msb * 6);//bin = msb * 10 + lsb
}
//bcd转byte
public static byte bcd2bin(byte bcd)
{//2位BCD码转二进制
byte msb;//高4位即10位上的值
msb =(byte)(bcd >> 4);
return (byte)(bcd - msb * 6);//bcd = msb*16 + lsb
}
}
}

26
SetTools/Tools/Win32.cs Normal file
View File

@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace llcom.Tools
{
class Win32
{
[DllImport("user32.dll")]
private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
[DllImport("user32.dll")]
private static extern int GetWindowLong(IntPtr hWnd, int nIndex);
private const int GWL_STYLE = -16;
private const int WS_SYSMENU = 0x80000;
// 隐藏窗口右上角按钮
internal static bool HideControlBox(IntPtr hWnd)
{
return SetWindowLong(hWnd, GWL_STYLE, GetWindowLong(hWnd, GWL_STYLE) & ~WS_SYSMENU) > 0;
}
}
}

481
SetTools/Views/FormData.Designer.cs generated Normal file
View File

@ -0,0 +1,481 @@
namespace SetTools
{
partial class FormData
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormData));
this.label1 = new System.Windows.Forms.Label();
this.textBox1 = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.label7 = new System.Windows.Forms.Label();
this.textBox2 = new System.Windows.Forms.TextBox();
this.textBox3 = new System.Windows.Forms.TextBox();
this.textBox4 = new System.Windows.Forms.TextBox();
this.textBox5 = new System.Windows.Forms.TextBox();
this.textBox6 = new System.Windows.Forms.TextBox();
this.textBox7 = new System.Windows.Forms.TextBox();
this.textBox8 = new System.Windows.Forms.TextBox();
this.textBox9 = new System.Windows.Forms.TextBox();
this.textBox10 = new System.Windows.Forms.TextBox();
this.textBox11 = new System.Windows.Forms.TextBox();
this.textBox12 = new System.Windows.Forms.TextBox();
this.label8 = new System.Windows.Forms.Label();
this.label9 = new System.Windows.Forms.Label();
this.label10 = new System.Windows.Forms.Label();
this.label11 = new System.Windows.Forms.Label();
this.label12 = new System.Windows.Forms.Label();
this.textBox13 = new System.Windows.Forms.TextBox();
this.label13 = new System.Windows.Forms.Label();
this.button1 = new System.Windows.Forms.Button();
this.textBox14 = new System.Windows.Forms.TextBox();
this.label14 = new System.Windows.Forms.Label();
this.textBox15 = new System.Windows.Forms.TextBox();
this.label15 = new System.Windows.Forms.Label();
this.textBox16 = new System.Windows.Forms.TextBox();
this.label16 = new System.Windows.Forms.Label();
this.label17 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label1.Location = new System.Drawing.Point(30, 30);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(106, 24);
this.label1.TabIndex = 0;
this.label1.Text = "测试人员";
//
// textBox1
//
this.textBox1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.textBox1.Location = new System.Drawing.Point(150, 27);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(200, 35);
this.textBox1.TabIndex = 1;
this.textBox1.Text = "admin";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label2.Location = new System.Drawing.Point(30, 105);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(106, 24);
this.label2.TabIndex = 2;
this.label2.Text = "磁条编号";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label3.Location = new System.Drawing.Point(30, 180);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(106, 24);
this.label3.TabIndex = 3;
this.label3.Text = "天 气";
//
// label4
//
this.label4.AutoSize = true;
this.label4.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label4.Location = new System.Drawing.Point(30, 255);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(106, 24);
this.label4.TabIndex = 4;
this.label4.Text = "名 称";
//
// label5
//
this.label5.AutoSize = true;
this.label5.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label5.Location = new System.Drawing.Point(30, 330);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(106, 24);
this.label5.TabIndex = 5;
this.label5.Text = "型号规格";
//
// label6
//
this.label6.AutoSize = true;
this.label6.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label6.Location = new System.Drawing.Point(30, 405);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(106, 24);
this.label6.TabIndex = 6;
this.label6.Text = "测试设备";
//
// label7
//
this.label7.AutoSize = true;
this.label7.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label7.Location = new System.Drawing.Point(30, 555);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(106, 24);
this.label7.TabIndex = 7;
this.label7.Text = "注意事项";
//
// textBox2
//
this.textBox2.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.textBox2.Location = new System.Drawing.Point(150, 102);
this.textBox2.Name = "textBox2";
this.textBox2.Size = new System.Drawing.Size(200, 35);
this.textBox2.TabIndex = 8;
this.textBox2.Text = "CT000001";
//
// textBox3
//
this.textBox3.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.textBox3.Location = new System.Drawing.Point(150, 177);
this.textBox3.Name = "textBox3";
this.textBox3.Size = new System.Drawing.Size(200, 35);
this.textBox3.TabIndex = 9;
this.textBox3.Text = "晴";
//
// textBox4
//
this.textBox4.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.textBox4.Location = new System.Drawing.Point(150, 252);
this.textBox4.Name = "textBox4";
this.textBox4.Size = new System.Drawing.Size(200, 35);
this.textBox4.TabIndex = 10;
this.textBox4.Text = "定位器磁条";
//
// textBox5
//
this.textBox5.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.textBox5.Location = new System.Drawing.Point(150, 327);
this.textBox5.Name = "textBox5";
this.textBox5.Size = new System.Drawing.Size(200, 35);
this.textBox5.TabIndex = 11;
this.textBox5.Text = "#50";
//
// textBox6
//
this.textBox6.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.textBox6.Location = new System.Drawing.Point(150, 402);
this.textBox6.Name = "textBox6";
this.textBox6.Size = new System.Drawing.Size(200, 35);
this.textBox6.TabIndex = 12;
this.textBox6.Text = "LP-200-SP";
//
// textBox7
//
this.textBox7.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.textBox7.Location = new System.Drawing.Point(150, 552);
this.textBox7.Name = "textBox7";
this.textBox7.Size = new System.Drawing.Size(406, 35);
this.textBox7.TabIndex = 13;
this.textBox7.Text = "导磁体材料使用热处理后的高镍材料";
//
// textBox8
//
this.textBox8.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.textBox8.Location = new System.Drawing.Point(570, 402);
this.textBox8.Name = "textBox8";
this.textBox8.Size = new System.Drawing.Size(200, 35);
this.textBox8.TabIndex = 25;
this.textBox8.Text = "####-####";
//
// textBox9
//
this.textBox9.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.textBox9.Location = new System.Drawing.Point(570, 327);
this.textBox9.Name = "textBox9";
this.textBox9.Size = new System.Drawing.Size(200, 35);
this.textBox9.TabIndex = 24;
this.textBox9.Text = "磁铁";
//
// textBox10
//
this.textBox10.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.textBox10.Location = new System.Drawing.Point(570, 252);
this.textBox10.Name = "textBox10";
this.textBox10.Size = new System.Drawing.Size(200, 35);
this.textBox10.TabIndex = 23;
this.textBox10.Text = "莱谱尔";
//
// textBox11
//
this.textBox11.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.textBox11.Location = new System.Drawing.Point(570, 177);
this.textBox11.Name = "textBox11";
this.textBox11.Size = new System.Drawing.Size(200, 35);
this.textBox11.TabIndex = 22;
this.textBox11.Text = "莱谱尔实验室";
//
// textBox12
//
this.textBox12.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.textBox12.Location = new System.Drawing.Point(570, 102);
this.textBox12.Name = "textBox12";
this.textBox12.Size = new System.Drawing.Size(200, 35);
this.textBox12.TabIndex = 21;
this.textBox12.Text = "20℃";
//
// label8
//
this.label8.AutoSize = true;
this.label8.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label8.Location = new System.Drawing.Point(450, 405);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(106, 24);
this.label8.TabIndex = 20;
this.label8.Text = "联系方式";
//
// label9
//
this.label9.AutoSize = true;
this.label9.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label9.Location = new System.Drawing.Point(450, 330);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(106, 24);
this.label9.TabIndex = 19;
this.label9.Text = "材 质";
//
// label10
//
this.label10.AutoSize = true;
this.label10.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label10.Location = new System.Drawing.Point(450, 255);
this.label10.Name = "label10";
this.label10.Size = new System.Drawing.Size(106, 24);
this.label10.TabIndex = 18;
this.label10.Text = "制 造 商";
//
// label11
//
this.label11.AutoSize = true;
this.label11.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label11.Location = new System.Drawing.Point(450, 180);
this.label11.Name = "label11";
this.label11.Size = new System.Drawing.Size(106, 24);
this.label11.TabIndex = 17;
this.label11.Text = "测试地址";
//
// label12
//
this.label12.AutoSize = true;
this.label12.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label12.Location = new System.Drawing.Point(450, 105);
this.label12.Name = "label12";
this.label12.Size = new System.Drawing.Size(106, 24);
this.label12.TabIndex = 16;
this.label12.Text = "温 度";
//
// textBox13
//
this.textBox13.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.textBox13.Location = new System.Drawing.Point(570, 27);
this.textBox13.Name = "textBox13";
this.textBox13.ReadOnly = true;
this.textBox13.Size = new System.Drawing.Size(200, 35);
this.textBox13.TabIndex = 15;
this.textBox13.Text = "####.##.##";
this.textBox13.TextChanged += new System.EventHandler(this.textBox13_TextChanged);
//
// label13
//
this.label13.AutoSize = true;
this.label13.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label13.Location = new System.Drawing.Point(450, 30);
this.label13.Name = "label13";
this.label13.Size = new System.Drawing.Size(106, 24);
this.label13.TabIndex = 14;
this.label13.Text = "测试时间";
//
// button1
//
this.button1.DialogResult = System.Windows.Forms.DialogResult.OK;
this.button1.Location = new System.Drawing.Point(608, 582);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(129, 52);
this.button1.TabIndex = 26;
this.button1.Text = "保存";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// textBox14
//
this.textBox14.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.textBox14.Location = new System.Drawing.Point(150, 477);
this.textBox14.Name = "textBox14";
this.textBox14.ReadOnly = true;
this.textBox14.Size = new System.Drawing.Size(200, 35);
this.textBox14.TabIndex = 28;
this.textBox14.Text = "#";
//
// label14
//
this.label14.AutoSize = true;
this.label14.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label14.Location = new System.Drawing.Point(30, 480);
this.label14.Name = "label14";
this.label14.Size = new System.Drawing.Size(58, 24);
this.label14.TabIndex = 27;
this.label14.Text = "步长";
//
// textBox15
//
this.textBox15.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.textBox15.Location = new System.Drawing.Point(570, 477);
this.textBox15.Name = "textBox15";
this.textBox15.ReadOnly = true;
this.textBox15.Size = new System.Drawing.Size(200, 35);
this.textBox15.TabIndex = 30;
this.textBox15.Text = "###";
//
// label15
//
this.label15.AutoSize = true;
this.label15.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label15.Location = new System.Drawing.Point(450, 480);
this.label15.Name = "label15";
this.label15.Size = new System.Drawing.Size(106, 24);
this.label15.TabIndex = 29;
this.label15.Text = "运行模式";
//
// textBox16
//
this.textBox16.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.textBox16.Location = new System.Drawing.Point(150, 629);
this.textBox16.Name = "textBox16";
this.textBox16.Size = new System.Drawing.Size(406, 35);
this.textBox16.TabIndex = 32;
//
// label16
//
this.label16.AutoSize = true;
this.label16.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label16.Location = new System.Drawing.Point(30, 632);
this.label16.Name = "label16";
this.label16.Size = new System.Drawing.Size(82, 24);
this.label16.TabIndex = 31;
this.label16.Text = "关键字";
//
// label17
//
this.label17.AutoSize = true;
this.label17.Font = new System.Drawing.Font("宋体", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label17.Location = new System.Drawing.Point(147, 667);
this.label17.Name = "label17";
this.label17.Size = new System.Drawing.Size(263, 16);
this.label17.TabIndex = 33;
this.label17.Text = "用于区分不同测试及打印报告的命名";
//
// FormData
//
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 719);
this.Controls.Add(this.label17);
this.Controls.Add(this.textBox16);
this.Controls.Add(this.label16);
this.Controls.Add(this.textBox15);
this.Controls.Add(this.label15);
this.Controls.Add(this.textBox14);
this.Controls.Add(this.label14);
this.Controls.Add(this.button1);
this.Controls.Add(this.textBox8);
this.Controls.Add(this.textBox9);
this.Controls.Add(this.textBox10);
this.Controls.Add(this.textBox11);
this.Controls.Add(this.textBox12);
this.Controls.Add(this.label8);
this.Controls.Add(this.label9);
this.Controls.Add(this.label10);
this.Controls.Add(this.label11);
this.Controls.Add(this.label12);
this.Controls.Add(this.textBox13);
this.Controls.Add(this.label13);
this.Controls.Add(this.textBox7);
this.Controls.Add(this.textBox6);
this.Controls.Add(this.textBox5);
this.Controls.Add(this.textBox4);
this.Controls.Add(this.textBox3);
this.Controls.Add(this.textBox2);
this.Controls.Add(this.label7);
this.Controls.Add(this.label6);
this.Controls.Add(this.label5);
this.Controls.Add(this.label4);
this.Controls.Add(this.label3);
this.Controls.Add(this.label2);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.label1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "FormData";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "测试信息";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.Label label10;
private System.Windows.Forms.Label label11;
private System.Windows.Forms.Label label12;
private System.Windows.Forms.Label label13;
private System.Windows.Forms.Label label14;
private System.Windows.Forms.Label label15;
private System.Windows.Forms.Label label16;
public System.Windows.Forms.TextBox textBox1;
public System.Windows.Forms.TextBox textBox2;
public System.Windows.Forms.TextBox textBox3;
public System.Windows.Forms.TextBox textBox4;
public System.Windows.Forms.TextBox textBox5;
public System.Windows.Forms.TextBox textBox6;
public System.Windows.Forms.TextBox textBox7;
public System.Windows.Forms.TextBox textBox8;
public System.Windows.Forms.TextBox textBox9;
public System.Windows.Forms.TextBox textBox10;
public System.Windows.Forms.TextBox textBox11;
public System.Windows.Forms.TextBox textBox12;
public System.Windows.Forms.TextBox textBox14;
public System.Windows.Forms.TextBox textBox13;
public System.Windows.Forms.TextBox textBox15;
public System.Windows.Forms.TextBox textBox16;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Label label17;
}
}

View File

@ -0,0 +1,93 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace SetTools
{
public partial class FormData : Form
{
public String ConSql = @"Provider=Microsoft.Jet.OleDb.4.0; Data Source = " + System.IO.Directory.GetCurrentDirectory() + "\\rqdata.mdb";
public int UOP_ID = 0;//操作时记录ID
SerialPort sp1 = new SerialPort();//sp1.ReceivedBytesThreshold = 1;//只要有1个字符送达端口时便触发DataReceived事件
public FormData()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//插入到数据库
//定义字段
//string UL = FormMain.UOP_ID;//人员编码ID
string UA = textBox1.Text;//测试人员
string UB = textBox2.Text;//磁条编号
string UC = textBox3.Text;//天气
string UD = textBox4.Text;//名称
string UE = textBox5.Text;//型号规格
string UF = textBox6.Text;//测试设备
string UG = textBox7.Text;//注意事项
string UH = textBox8.Text;//联系方式
string UI = textBox9.Text;//材质
string UJ = textBox10.Text;//制造商
string UK = textBox11.Text;//测试地址
string UL = textBox12.Text;//温度
string UM = textBox13.Text;//测试时间
string UN = textBox14.Text;//步长
string UO = textBox15.Text;//运行模式
string UP = textBox16.Text;//备注
//插入数据库
OleDbConnection conn;
conn = new OleDbConnection(ConSql);
conn.Open();
//建立SQL语句
string sqlstr = "";
sqlstr = @"INSERT INTO 测试信息([测试人员],[磁条编号],[天气],[名称],[型号规格],[测试设备],[注意事项],[联系方式],[材质],[制造商],[测试地址],[温度],[测试时间],[测试编号],[步长],[运行模式],[备注]) VALUES(";
sqlstr += "'" + UA + "','" + UB + "','" + UC + "','" + UD + "','" + UE + "','" + UF + "','" + UG + "','" + UH + "','" + UI + "','" + UJ + "','" + UK + "','" + UL + "','" + UM + "','" + UOP_ID + "','" + UN + "','" + UO + "','" + UP + "')";
OleDbCommand cmd = conn.CreateCommand();
cmd.CommandText = sqlstr;
cmd.ExecuteNonQuery();
//获取当前插入数据的ID
cmd.CommandText = "SELECT @@IDENTITY";
//public int UOP_ID = 0;//操作时记录ID
//UOP_ID = (int)cmd.ExecuteScalar();
conn.Close();
//插入数据库
OleDbConnection comn;
comn = new OleDbConnection(ConSql);
comn.Open();
//建立SQL语句
string cqlstr = "";
cqlstr = @"UPDATE 磁条测试记录 set [磁条编号] = '" + textBox2.Text + "'";
cqlstr += " where [ID] = " + UOP_ID + "";
OleDbCommand smd = comn.CreateCommand();
smd.CommandText = cqlstr;
smd.ExecuteNonQuery();
comn.Close();
this.Close();
}
private void textBox13_TextChanged(object sender, EventArgs e)
{
this.textBox13.Text = System.DateTime.Now.ToString("g");
}
}
}

View File

@ -0,0 +1,382 @@
<?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="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAMAEBAAAAEAIABoBAAANgAAACAgAAABACAAKBEAAJ4EAAAwMAAAAQAgAGgmAADGFQAAKAAAABAA
AAAgAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMzMtMjIylDMz
M9cyMjL4MzMz+TMzM9kzMzOXMTExLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAgzMzOVMjIy/TMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/0yMjKYQEBACAAAAAAAAAAAAAAAACAgIAgzMzO+MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zIyMsBAQEAIAAAAAAAAAAAzMzOXMzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MjIymAAAAAAxMTEvMzMz/TMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/0xMTEvMzMzlzMz
M/8zMzP/MzMz/zMzM+8zMzPhMzMz7jIyMukzMzP5MjIy8zMzM9QzMzPyMzMz/DMzM/UzMzP/MzMzlzMz
M9kzMzP/MzMzzzIyMmcxMTFDHBwcCTAwMBAyMjJSMzMzxDExMT4zMzNBMDAwUDIyMkIyMjKoMzMz/zMz
M9kzMzP5MzMz/zIyMlcxMTE/Li4uJzExMRovLy8bMzMzlzMzM7AqKioSMjIyKTU1NR0uLi4hMzMziDMz
M/8zMzP5MjIy+DMzM/8zMzOXMTExPjIyMoAyMjI9Ly8vMTMzM5YzMzOhMzMzIzMzMwUsLCwdNDQ0QDMz
M5AzMzP/MjIy+DMzM9czMzP/MzMznDMzMzI0NDSUJycnDTExMSoyMjJ/MzMz2DQ0NFguLi4WLy8vKzMz
M3MzMzP+MzMz/zMzM9cyMjKUMzMz/zMzM/8zMzP/MzMz/zMzM+UzMzPmMzMz/jMzM/8zMzP/MzMz5jIy
MtUzMzP/MzMz/zMzM/8yMjKUMzMzLTIyMv0zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8yMjL9MzMzLQAAAAAyMjKUMzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMzlQAAAAAAAAAAJCQkBzQ0NLwzMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMzviAgIAgAAAAAAAAAAAAAAAAkJCQHMjIylDIyMv0zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP9MzMzlyAgIAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMzMtMjIylDMz
M9cyMjL4MzMz+TMzM9kzMzOXMTExLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAACAAAABAAAAAAQAgAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAuLi4LNDQ0VDMzM5YzMzPHMzMz6DMzM/ozMzP7MzMz6zIyMsszMzObNDQ0WTc3Nw4AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAwMDAgMzMzljIyMvMzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz9TMz
M5szMzMjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAkJCQHMzMzgzIyMvgzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/kyMjKJQEBACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAMTExHzMzM80zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzPRNDQ0IgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAADQ0NCwzMzPmMzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8yMjLpMjIyLgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAuLi4hMzMz5zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8yMjLpNDQ0IgAA
AAAAAAAAAAAAAAAAAAAAAAAAICAgCDMzM88zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzPRQEBACAAAAAAAAAAAAAAAAAAAAAAzMzOHMzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8yMjKJAAAAAAAAAAAAAAAAMzMzIzMzM/kzMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/kzMzMjAAAAAAAAAAAzMzObMzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM5sAAAAANzc3DjMzM/UzMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz9Tc3Nw40NDRZMzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/QyMjLKMzMz8DIyMpUzMzO9MzMz/jMzM78zMzPmMzMz/zMz
M+gyMjLQMzMz/zMzM+0yMjJnMjIyyjMzM/8zMzP/MzMz9DMzM9czMzP/MzMz/zMzM/8zMzP/NDQ0WTMz
M5szMzP/MzMz/zMzM/8zMzP/MzMzzTMzM8kzMzPSMjIylAAAAAAAAAACAAAAAwAAAAAnJycNKioqDDEx
MVQzMzP/MzMzX0BAQAQyMjJxMTExRAAAAAAkJCQHMjIy2zMzM5IsLCwXMTExKjMzM/wzMzP/MzMz/zMz
M/8zMzObMjIyyzMzM/8zMzP/MzMz/zMzM/8yMjJxAAAAAAAAAAAyMjJHLy8vMTExMRoqKioGNjY2Ey4u
LiEuLi4LMjIy3zMzM/8zMzOzMjIyZzU1NR0yMjJrMzMzVQAAAAAxMTFdLS0tETIyMk0zMzOLMzMz8TMz
M/8zMzP/MzMz/zIyMsszMzPrMzMz/zMzM/8zMzP/MzMz4zExMUQ0NDQsMjIyWy8vLzEyMjJmAAAAADQ0
NEozMzNfAAAAADIyMoAzMzP/MzMz/zMzM8gsLCwXMjIyKTExMS82NjYTAAAAADMzMygvLy8rNTU1HTIy
Mn8zMzP/MzMz/zMzM/8zMzP/MzMz6zMzM/szMzP/MzMz/zMzM/8wMDA1AAAAAC4uLiczMzNQMzMzBQAA
AAAxMTEfAAAAAAAAAAAzMzMPJCQkBzMzM9czMzPiNTU1GAAAAAA5OTkJNDQ0TzY2NhMAAAAAMzMzSzAw
MDsAAAABAAAAATIyMqIzMzP/MzMz/zMzM/8zMzP7MzMz+jMzM/8zMzP/MzMz/zMzM80qKioMAAAAAAAA
AAAxMTFOMjIyMzExMTQwMDBALy8vKzMzMyg1NTUrMzMzxzMzM4stLS0RAAAAAAAAAAAAAAAAICAgCDEx
MVMwMDAgAAAAAAAAAAAkJCQHMzMzQTMzM/8zMzP/MzMz/zMzM/ozMzPoMzMz/zMzM/8zMzP/MzMz/zMz
M4YgICAIMjIy8DMzM/8yMjJ/AAAAADIyMoAyMjJxAAAAADMzM34zMzPoMzMz/zMzM+ozMzNGMzMzRicn
Jw0AAAAAAAAAAAAAAAAwMDA1MzMzzTMzM/szMzP/MzMz/zMzM/8zMzP/MzMz6DMzM8czMzP/MzMz/zMz
M/8zMzP8MjIyTQAAAAAzMzNQMzMzuTMzMxQAAAAAAAAAAAAAAAAAAAAAAAAAADQ0NIozMzP/MzMzZAAA
AAAAAAAAAAAAADMzMzcyMjKJAAAAAwAAAAAxMTFOMjIy/TMzM/8zMzP/MzMz/zMzM/8zMzPHMzMzljMz
M/8zMzP/MzMz/zMzM+UzMzNBMzMzPDExMT4zMzOQMzMz9DIyMiQwMDAQMzMzqgAAAAAyMjJ1MzMz/DMz
M/8zMzP/MzMz3TQ0NIU0NDQiAAAAAAAAAAA0NDQiMzMzjDMzM/IzMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M5Y0NDRTMzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz7TMzM6szMzPjMzMzuDMz
M/wzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/wzMzOfMjIyazMzM+ozMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/NDQ0VC4uLgszMzPyMzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zIyMvMuLi4LAAAAADIyMpUzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMzlgAAAAAAAAAAMTExHzMzM/czMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zIyMvgwMDAgAAAAAAAAAAAAAAAAMzMzgjMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMzgwAAAAAAAAAAAAAAAAAAAAAqKioGMjIyyzMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM80kJCQHAAAAAAAAAAAAAAAAAAAAAAAA
AAAzMzMeMzMz5TMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzPmMTExHwAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAyMjIpMzMz5TMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz5zQ0NCwAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMzMeMjIyyzMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM88uLi4hAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqKioGMzMzgjMzM/czMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/kzMzOHICAgCAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExHzIy
MpUzMzPyMzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/UzMzObMzMzIwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAC4uLgs0NDRTMzMzljMzM8czMzPoMzMz+jMzM/szMzPrMjIyyzMzM5s0NDRZNzc3DgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAADAA
AABgAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEzMzMPMDAwIDIyMkIzMzN9MzMzrjMz
M9IyMjLrMzMz+zQ0NPwzMzPtMzMz1zMzM7QyMjKEMjIySDQ0NCIwMDAQAAAAAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLy8vKzMzM28zMzOrMzMz4DMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM+UzMzOwMzMzdDAw
MDBVVVUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADc3NxcyMjKTMzMz4DMz
M/gzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz+jMzM+IzMzOaNzc3HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEqKioSNDQ0ZjMz
M+wzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz8DMzM242NjYTAAAAAQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQ0
NDYzMzOvMzMz+TMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/ozMzO0NTU1OgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAMjIyVjMzM+QzMzP9MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP+MzMz5zQ0NF4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAACoqKgYyMjJmMzMz8TMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zIyMvMyMjJrKioqBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMmczMzPpMzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzPrMjIyawAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMzMzWjMzM/EzMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MjIy8zQ0
NF4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEyMjI4MzMz5TMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM+c1NTU6AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADY2NhM0NDSyMzMz/jMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/4zMzO0NjY2EwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIy
MmwzMzP5MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP6MzMzbgAAAAAAAAAAAAAAAAAA
AAAAAAAALy8vGzMzM+8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz8Dc3
NxwAAAAAAAAAAAAAAABVVVUDNDQ0mDMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM5pVVVUDAAAAAAAAAAAwMDAwMzMz4jMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM+IwMDAwAAAAAAAAAAIzMzN0MzMz+jMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/ozMzN0AAAAAjAwMBAzMzOwMzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP5MzMz+zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP3MzMz3DMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzOwMDAwEDQ0
NCIzMzPlMzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/kyMjK8MzMzrzMz
M9kzMzO6Ly8vQTQ0NHYyMjLaMzMz/jIyMrYzMzOLMzMz6zMzM/8zMzP/NDQ0wTIyMoszMzP1MzMz/zMz
M/UyMjJ6NjY2ITIyMnszMzP1MzMz/zMzM/8zMzP/MzMz4DIyMpMzMzP8MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzPlNDQ0IjIyMkgzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP9MzMz5TMzM+szMzPwMzMz7zMz
M9oyMjI9AAAAAAAAAAEgICAIAAAAAgAAAAAAAAACLi4uITMzMyMAAAABMDAwZTMzM/8zMzPtMzMzNwAA
AAIxMTFDMjIyyzIyMosqKioGAAAAAEBAQAQzMzN3MzMz9TMzM94zMzODNzc3DjExMRUzMzO9MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MjIySDIyMoQzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzPyMjIyRzEx
MUMxMTFTMjIyUTMzM0sxMTEqAAAAASQkJAcsLCwXAAAAAQAAAAAAAAAAMzMzIwAAAAAyMjIkMjIy1TMz
M/8yMjLAMDAwMAAAAAIAAAAAMTExFTIyMiQyMjJXNzc3DgAAAAAyMjJIMzMzfTQ0NCwAAAABAAAAAEBA
QAgzMzOCMzMz+TMzM/8zMzP/MzMz/zMzM/8zMzP/MjIyhDMzM7QzMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzPxNjY2JgAAAAAAAAAAAAAAAC4uLhwxMTGhLi4uHDMzMwUzMzMPKioqDDExMTQAAAAALi4uLCoq
KgwxMTGBMzMz+zMzM/8zMzP2MzMz4TIyMr4zMzNuLi4uHDMzMzwyMjLIMzMzHgAAAAAzMzNQMDAwTycn
Jw0yMjJMMzMzkTMzM84zMzPpMzMz/TMzM/8zMzP/MzMz/zMzM/8zMzP/MzMztDMzM9czMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/wzMzPYNjY2ITMzMw8yMjKFMzMzHjMzMxkyMjKzMjIyhAAAAAAtLS0RMzMzkjMz
M7gzMzMZAAAAADExMW4zMzPoMzMz/zMzM/8zMzP/MjIywTAwMCAyMjI4MjIyRzIyMkgyMjJMLi4uCwAA
AAAzMzMeMjIySDIyMkgwMDBANDQ0LDExMVQzMzP5MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz1zMz
M+0zMzP/MzMz/zMzM/8zMzP/MzMz/zIyMrYxMTEvQEBABDMzMw8yMjKLMTExHwAAAAIqKioGOTk5CQAA
AAAAAAAALy8vGzExMRUzMzMKAAAAADY2NhM0NDSyMzMz/jMzM/8zMzPXNDQ0RAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAC0tLREzMzObMzMz+DMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz7TQ0NPwzMzP/MzMz/zMzM/8zMzP/MzMz/zIyMj0AAAAAAAAAACoqKgwxMTFpNTU1GFVV
VQM5OTkJAAAAAC8vLyswMDAgAAAAAAAAAAAzMzMFNDQ0IgAAAAE0NDRFMzMz6jMzM+80NDRYVVVVAwAA
AAAAAAAAMzMzGTMzM20zMzNzLi4uCwAAAAAxMTEaMjIyrjIyMnosLCwdAAAAAAAAAAA2NjYTMjIyvTMz
M/8zMzP/MzMz/zMzM/8zMzP/NDQ0/DMzM/szMzP/MzMz/zMzM/8zMzP/MzMz/zQ0NN4yMjI4AAAAAQAA
AAAAAAAAAAAAADExMRoyMjJnOTk5CTExMRoxMTFUNTU1GC8vLxsAAAAAMTExXTc3Nw4wMDAwMzMz4DMz
M8gqKioSQEBABAAAAAAAAAAAAAAAAAAAAAAAAAACMzMzFDMzM34xMTF3Li4uHAAAAAAAAAAAAAAAAAAA
AAFAQEAIMzMzSzMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz+zIyMuszMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/4zMzO9Li4uFlVVVQMwMDBFMTExfDQ0NI8zMzPRMDAwNVVVVQMzMzNGMjIyuzQ0NLIzMzMKJycnDTMz
M3gzMzPUMzMz/jMzM+AzMzOkNDQ0ijIyMlYvLy8rLy8vGwAAAAAAAAAAAAAAADMzMwUAAAAAAAAAADMz
MwoyMjIzMzMzWjMzM3wzMzOXNDQ0sjMzM/8zMzP/MzMz/zMzM/8zMzP/MjIy6zMzM9IzMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP7NDQ0XQAAAAEzMzNvMjIy+DMzM/8zMzPeMTExPgAAAAAtLS0RMzMzczIy
MnYzMzMZAAAAADQ0NDYzMzOSMzMz8jMzM/8zMzP/MjIyxzY2NiY3NzcXMTExXjAwMCUAAAAAAAAAAAAA
AAAAAAAAAAAAADExMRozMzOrMzMz8TMzM/0zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz0jMz
M64zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzPQMjIyZQAAAAAwMDA1MzMzljMzM70yMjKdMzMzCgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTEVMzMz2jMzM/8zMzPfLy8vKwAAAAAAAAAAAAAAAAAA
AAAAAAACNDQ0STIyMokxMTEfAAAAAAAAAAAnJycNMzMzljMzM/4zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMzrjMzM30zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/kzMzNvAAAAAQAAAAAAAAAAAAAAADIy
MjMzMzO1MzMzeDIyMi4AAAAAQEBACDExMWIuLi4WAAAAAC8vLyYzMzN5MzMz5TMzM/8zMzPlMzMznzMz
M2oxMTE0MzMzBQAAAAAAAAACMzMzNzMzM2owMDAlAAAAASAgIAgyMjJHMzMzoDMzM/wzMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMzfTMzM0EzMzP+MzMz/zMzM/8zMzP/MzMz/zIyMvgyMjKjMzMzajIy
MmYyMjJlMzMzaTIyMoQzMzPvMzMz8jQ0NCcAAAAANjY2ITMzM+IwMDA6AAAAADMzMy0yMjLfMzMz/zMz
M/8zMzP/MzMz/zMzM/gzMzPlNDQ0vDExMVRAQEAIAAAAAAAAAABAQEAENDQ0WTIyMsAzMzPsMzMz/TMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MjIyQjAwMCAzMzPfMzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zIyMvQzMzOgMzMzbzMzM+8zMzOCNDQ0ozMz
M/YzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/0zMzPINDQ0RTAwMCAyMjJ7MzMz8zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzPgMDAwIDMzMw8zMzOrMzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/jMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz9DMz
M9czMzP8MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzOrMzMzDwAA
AAEzMzNuMzMz+DMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/gzMzNvAAAAAQAAAAAvLy8rMzMz3zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM+AvLy8rAAAAAAAAAAAAAAACMzMzkTMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zIyMpMAAAACAAAAAAAAAAAAAAAAOjo6FjMzM+ozMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz7Dc3NxcAAAAAAAAAAAAAAAAAAAAAAAAAADQ0
NGMzMzP5MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP5NDQ0ZgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAC0tLRE0NDStMzMz/TMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/0zMzOvKioqEgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAExMTE0MzMz4zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M+Q0NDQ2AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANTU1UjMzM/AzMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz8TIyMlYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEx
MWIzMzPnMzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzPpMjIyZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAADMzMwUxMTFiMzMz8DMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/EyMjJnKioqBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANTU1UjMzM+MzMzP9MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP+MzMz5TMzM1oAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMTQ0NDStMzMz+TMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/k0NDSyMjIyOAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAEtLS0RNDQ0YzMzM+ozMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz7zIyMmw2NjYTAAAAAQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAADo6OhYzMzORMzMz3zMzM/gzMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz+jMzM+I0NDSYLy8vGwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLy8vKzMzM24zMzOrMzMz3zMz
M/4zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM+UzMzOwMzMzdDAw
MDBVVVUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAEzMzMPMDAwIDMzM0EzMzN9MzMzrjMzM9IyMjLrMzMz+zQ0NPwzMzPtMzMz1zMzM7QyMjKEMjIySDQ0
NCIwMDAQAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
</value>
</data>
</root>

300
SetTools/Views/FormDevice.Designer.cs generated Normal file
View File

@ -0,0 +1,300 @@
namespace SetTools
{
partial class FormDevice
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormDevice));
this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
this.tmSend = new System.Windows.Forms.Timer(this.components);
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
this.label1 = new System.Windows.Forms.Label();
this.label7 = new System.Windows.Forms.Label();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.button2 = new System.Windows.Forms.Button();
this.textBox2 = new System.Windows.Forms.TextBox();
this.textBox1 = new System.Windows.Forms.TextBox();
this.btnSend = new System.Windows.Forms.Button();
this.btnOpen = new System.Windows.Forms.Button();
this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator();
this.退ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.panel1 = new System.Windows.Forms.Panel();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.statusStrip1.SuspendLayout();
this.groupBox1.SuspendLayout();
this.contextMenuStrip1.SuspendLayout();
this.panel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.SuspendLayout();
//
// toolStripStatusLabel1
//
this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
this.toolStripStatusLabel1.Size = new System.Drawing.Size(690, 24);
this.toolStripStatusLabel1.Spring = true;
this.toolStripStatusLabel1.Text = "技术支持:无锡莱谱尔科技有限公司";
this.toolStripStatusLabel1.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// statusStrip1
//
this.statusStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripStatusLabel1});
this.statusStrip1.Location = new System.Drawing.Point(0, 311);
this.statusStrip1.Name = "statusStrip1";
this.statusStrip1.Padding = new System.Windows.Forms.Padding(2, 0, 21, 0);
this.statusStrip1.Size = new System.Drawing.Size(713, 31);
this.statusStrip1.TabIndex = 39;
this.statusStrip1.Text = "statusStrip1";
//
// tmSend
//
this.tmSend.Interval = 5000;
this.tmSend.Tick += new System.EventHandler(this.TmSend_Tick);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label1.Location = new System.Drawing.Point(54, 69);
this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(82, 24);
this.label1.TabIndex = 7;
this.label1.Text = "用户名:";
//
// label7
//
this.label7.AutoSize = true;
this.label7.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label7.Location = new System.Drawing.Point(56, 125);
this.label7.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(74, 24);
this.label7.TabIndex = 27;
this.label7.Text = "密 码:";
//
// groupBox1
//
this.groupBox1.Controls.Add(this.button2);
this.groupBox1.Controls.Add(this.textBox2);
this.groupBox1.Controls.Add(this.textBox1);
this.groupBox1.Controls.Add(this.btnSend);
this.groupBox1.Controls.Add(this.label1);
this.groupBox1.Controls.Add(this.btnOpen);
this.groupBox1.Controls.Add(this.label7);
this.groupBox1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.groupBox1.Location = new System.Drawing.Point(341, 13);
this.groupBox1.Margin = new System.Windows.Forms.Padding(4);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Padding = new System.Windows.Forms.Padding(4);
this.groupBox1.Size = new System.Drawing.Size(356, 288);
this.groupBox1.TabIndex = 35;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "用户登录";
//
// button2
//
this.button2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.button2.Location = new System.Drawing.Point(11, 209);
this.button2.Margin = new System.Windows.Forms.Padding(4);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(105, 38);
this.button2.TabIndex = 33;
this.button2.Text = "注册";
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// textBox2
//
this.textBox2.Location = new System.Drawing.Point(148, 115);
this.textBox2.Margin = new System.Windows.Forms.Padding(4);
this.textBox2.Name = "textBox2";
this.textBox2.PasswordChar = '*';
this.textBox2.Size = new System.Drawing.Size(157, 31);
this.textBox2.TabIndex = 29;
this.textBox2.Text = "12345678";
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(148, 63);
this.textBox1.Margin = new System.Windows.Forms.Padding(4);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(157, 31);
this.textBox1.TabIndex = 28;
this.textBox1.Text = "admin";
//
// btnSend
//
this.btnSend.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnSend.Location = new System.Drawing.Point(124, 209);
this.btnSend.Margin = new System.Windows.Forms.Padding(4);
this.btnSend.Name = "btnSend";
this.btnSend.Size = new System.Drawing.Size(105, 38);
this.btnSend.TabIndex = 31;
this.btnSend.Text = "登录";
this.btnSend.UseVisualStyleBackColor = true;
this.btnSend.Click += new System.EventHandler(this.BtnSend_Click);
//
// btnOpen
//
this.btnOpen.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnOpen.Location = new System.Drawing.Point(237, 209);
this.btnOpen.Margin = new System.Windows.Forms.Padding(4);
this.btnOpen.Name = "btnOpen";
this.btnOpen.Size = new System.Drawing.Size(102, 38);
this.btnOpen.TabIndex = 30;
this.btnOpen.Text = "取消";
this.btnOpen.UseVisualStyleBackColor = true;
this.btnOpen.Click += new System.EventHandler(this.BtnOpen_Click);
//
// contextMenuStrip1
//
this.contextMenuStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.ToolStripMenuItem,
this.toolStripMenuItem1,
this.ToolStripMenuItem,
this.ToolStripMenuItem,
this.toolStripMenuItem2,
this.退ToolStripMenuItem});
this.contextMenuStrip1.Name = "contextMenuStrip1";
this.contextMenuStrip1.Size = new System.Drawing.Size(71, 112);
//
// 复制到剪切板ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "复制到剪切板ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(70, 24);
//
// toolStripMenuItem1
//
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
this.toolStripMenuItem1.Size = new System.Drawing.Size(67, 6);
//
// 滚动到顶部ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "滚动到顶部ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(70, 24);
//
// 滚动到底部ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "滚动到底部ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(70, 24);
//
// toolStripMenuItem2
//
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
this.toolStripMenuItem2.Size = new System.Drawing.Size(67, 6);
//
// 退出ToolStripMenuItem
//
this.退ToolStripMenuItem.Name = "退出ToolStripMenuItem";
this.退ToolStripMenuItem.Size = new System.Drawing.Size(70, 24);
//
// panel1
//
this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.panel1.Controls.Add(this.pictureBox1);
this.panel1.Controls.Add(this.groupBox1);
this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Margin = new System.Windows.Forms.Padding(4);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(701, 305);
this.panel1.TabIndex = 40;
//
// pictureBox1
//
this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
this.pictureBox1.InitialImage = ((System.Drawing.Image)(resources.GetObject("pictureBox1.InitialImage")));
this.pictureBox1.Location = new System.Drawing.Point(0, 13);
this.pictureBox1.Margin = new System.Windows.Forms.Padding(4);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(327, 290);
this.pictureBox1.TabIndex = 36;
this.pictureBox1.TabStop = false;
//
// FormDevice
//
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(713, 342);
this.Controls.Add(this.statusStrip1);
this.Controls.Add(this.panel1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(4);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "FormDevice";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "登录";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FormDevice_FormClosing);
this.Load += new System.EventHandler(this.FormDevice_Load);
this.statusStrip1.ResumeLayout(false);
this.statusStrip1.PerformLayout();
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
this.contextMenuStrip1.ResumeLayout(false);
this.panel1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.ToolTip toolTip1;
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1;
private System.Windows.Forms.StatusStrip statusStrip1;
private System.Windows.Forms.Timer tmSend;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.Button btnSend;
private System.Windows.Forms.Button btnOpen;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem2;
private System.Windows.Forms.ToolStripMenuItem 退ToolStripMenuItem;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.Button button2;
}
}

View File

@ -0,0 +1,194 @@
using INIFILE;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Net;
using System.Windows.Forms.DataVisualization.Charting;
using SetTools.Views;
namespace SetTools
{
public partial class FormDevice : Form
{
public String ConSql = @"Provider=Microsoft.Jet.OleDb.4.0; Data Source = " + System.IO.Directory.GetCurrentDirectory() + "\\rqdata.mdb";
public string UA = "";
public string UB = "";
public string UL = "";
SerialPort sp1 = new SerialPort();//sp1.ReceivedBytesThreshold = 1;//只要有1个字符送达端口时便触发DataReceived事件
public FormDevice()
{
InitializeComponent();
}
/// <summary>
/// 程序启动时
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void FormDevice_Load(object sender, EventArgs e)
{
INIFILE.Profile.LoadProfile();//加载所有
}
/// <summary>
/// 时间控件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void TmSend_Tick(object sender, EventArgs e)
{
}
/// <summary>
/// <summary>
/// 延时不卡界面
/// </summary>
/// <param name="milliSecond"></param>
public void Delay(int milliSecond)
{
int start = Environment.TickCount;
while (Math.Abs(Environment.TickCount - start) < milliSecond)
{
Application.DoEvents();
}
}
/// <summary>
/// 打开串口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BtnOpen_Click(object sender, EventArgs e)
{
this.Close();
}
/// <summary>
/// 开始停止
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BtnSend_Click(object sender, EventArgs e)
{
if(textBox1.Text != "" && textBox2.Text != "")
{
OleDbConnection conn;
conn = new OleDbConnection(ConSql);
try
{
string UC = "";
string UD = "";
string UE = "";
int j = 0;
conn.Open();//打开数据
//建立SQL语句
string sqlstr = "";
sqlstr = @"select * from [YunXin_Admin] where AdminName = '" + textBox1.Text + "' and Password = '" + textBox2.Text + "'";
OleDbCommand cmd = conn.CreateCommand();
cmd.CommandText = sqlstr;
//建立读取G
OleDbDataReader odrReader;
odrReader = cmd.ExecuteReader();
while (odrReader.Read())
{
//比较用户名和密码
DateTime dt1 = Convert.ToDateTime(odrReader[10].ToString());
DateTime dt2 = DateTime.Now;
if ( (odrReader[1].ToString() == textBox1.Text) && (odrReader[2].ToString() == textBox2.Text) && (DateTime.Compare(dt1, dt2) > 0))
{
UL = odrReader[0].ToString();//人员编号
UA = odrReader[1].ToString();//登录用户名
UB = odrReader[3].ToString();//人名
string sHostName = Dns.GetHostName();
IPHostEntry ipE = Dns.GetHostEntry(sHostName);
IPAddress[] IpA = ipE.AddressList;
UC += "|";
UC += IpA[1];
UD = "登录";
j = 1;
}
else
{
MessageBox.Show("用户名或密码有误!或账号已过期!");
}
}
//关闭连接 C#操作Access之读取mdb
odrReader.Close();
conn.Close();//关闭数据库
if(j == 1)
{
this.Hide();
UE = Convert.ToString( DateTime.Now.ToString("G") );
conn.Open();
cmd = conn.CreateCommand();
cmd.CommandText = @"INSERT INTO YunXin_AdminLog([AdminName], [UserName], [LoginIP], [LoginSoft],[LoginTime])VALUES('" + UA + "', '";
cmd.CommandText += UB + "', '" + UC + "', '" + UD + "', '";
cmd.CommandText += UE + "')";
cmd.ExecuteNonQuery();
conn.Close();
FormMain fm = new FormMain();
fm.Ua = UA;
fm.Ub = UB;
fm.Uc = UL;
fm.ConSql = ConSql;
fm.Show();
}
}
catch (SqlException ex)
{
Console.WriteLine(ex.Message);
}
finally
{
conn.Close();
}
}
else
{
MessageBox.Show("用户名或密码 不能为空!");
}
}
private void FormDevice_FormClosing(object sender, FormClosingEventArgs e)
{
try
{
sp1.Close();
}
catch
{
sp1.Close();
}
}
private void button2_Click(object sender, EventArgs e)
{
Register Re = new Register();
Re.Show();
}
}
}

File diff suppressed because it is too large Load Diff

2573
SetTools/Views/FormMain.Designer.cs generated Normal file

File diff suppressed because it is too large Load Diff

3182
SetTools/Views/FormMain.cs Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,418 @@
<?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>
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>34, 16</value>
</metadata>
<metadata name="tmSend.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>139, 11</value>
</metadata>
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>236, 11</value>
</metadata>
<metadata name="imageList1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>765, 11</value>
</metadata>
<metadata name="colorDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>590, 11</value>
</metadata>
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>922, 11</value>
</metadata>
<data name="textBox7.Text" xml:space="preserve">
<value>**测试功能:根据磁条类型选择直行程或角行程
**控制电机运行:控制电机运行或停止,也可选择让电机运行至始终点(由限位开关决定位置)。
**运行模式:可选择点动、测量一次和测量多次,测量一次磁条运行一个来回,测量多次主要针对重复性测试,磁条会来回多次。
**运行步长:磁条单次动作行进距离。
**间隔时间磁条每次动作后停留时间对回差影响较大建议在300ms以上。
**停止时长:磁条移动至测试区域后稳定时间。
**磁条编号/磁条规格:为查询服务,根据磁条编号可准确查询对应磁条测试信息,根据规格判断磁条长度。</value>
</data>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>25</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAMAEBAAAAEAIABoBAAANgAAACAgAAABACAAKBEAAJ4EAAAwMAAAAQAgAGgmAADGFQAAKAAAABAA
AAAgAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMzMtMjIylDMz
M9cyMjL4MzMz+TMzM9kzMzOXMTExLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAgzMzOVMjIy/TMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/0yMjKYQEBACAAAAAAAAAAAAAAAACAgIAgzMzO+MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zIyMsBAQEAIAAAAAAAAAAAzMzOXMzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MjIymAAAAAAxMTEvMzMz/TMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/0xMTEvMzMzlzMz
M/8zMzP/MzMz/zMzM+8zMzPhMzMz7jIyMukzMzP5MjIy8zMzM9QzMzPyMzMz/DMzM/UzMzP/MzMzlzMz
M9kzMzP/MzMzzzIyMmcxMTFDHBwcCTAwMBAyMjJSMzMzxDExMT4zMzNBMDAwUDIyMkIyMjKoMzMz/zMz
M9kzMzP5MzMz/zIyMlcxMTE/Li4uJzExMRovLy8bMzMzlzMzM7AqKioSMjIyKTU1NR0uLi4hMzMziDMz
M/8zMzP5MjIy+DMzM/8zMzOXMTExPjIyMoAyMjI9Ly8vMTMzM5YzMzOhMzMzIzMzMwUsLCwdNDQ0QDMz
M5AzMzP/MjIy+DMzM9czMzP/MzMznDMzMzI0NDSUJycnDTExMSoyMjJ/MzMz2DQ0NFguLi4WLy8vKzMz
M3MzMzP+MzMz/zMzM9cyMjKUMzMz/zMzM/8zMzP/MzMz/zMzM+UzMzPmMzMz/jMzM/8zMzP/MzMz5jIy
MtUzMzP/MzMz/zMzM/8yMjKUMzMzLTIyMv0zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8yMjL9MzMzLQAAAAAyMjKUMzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMzlQAAAAAAAAAAJCQkBzQ0NLwzMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMzviAgIAgAAAAAAAAAAAAAAAAkJCQHMjIylDIyMv0zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP9MzMzlyAgIAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMzMtMjIylDMz
M9cyMjL4MzMz+TMzM9kzMzOXMTExLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAACAAAABAAAAAAQAgAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAuLi4LNDQ0VDMzM5YzMzPHMzMz6DMzM/ozMzP7MzMz6zIyMsszMzObNDQ0WTc3Nw4AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAwMDAgMzMzljIyMvMzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz9TMz
M5szMzMjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAkJCQHMzMzgzIyMvgzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/kyMjKJQEBACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAMTExHzMzM80zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzPRNDQ0IgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAADQ0NCwzMzPmMzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8yMjLpMjIyLgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAuLi4hMzMz5zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8yMjLpNDQ0IgAA
AAAAAAAAAAAAAAAAAAAAAAAAICAgCDMzM88zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzPRQEBACAAAAAAAAAAAAAAAAAAAAAAzMzOHMzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8yMjKJAAAAAAAAAAAAAAAAMzMzIzMzM/kzMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/kzMzMjAAAAAAAAAAAzMzObMzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM5sAAAAANzc3DjMzM/UzMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz9Tc3Nw40NDRZMzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/QyMjLKMzMz8DIyMpUzMzO9MzMz/jMzM78zMzPmMzMz/zMz
M+gyMjLQMzMz/zMzM+0yMjJnMjIyyjMzM/8zMzP/MzMz9DMzM9czMzP/MzMz/zMzM/8zMzP/NDQ0WTMz
M5szMzP/MzMz/zMzM/8zMzP/MzMzzTMzM8kzMzPSMjIylAAAAAAAAAACAAAAAwAAAAAnJycNKioqDDEx
MVQzMzP/MzMzX0BAQAQyMjJxMTExRAAAAAAkJCQHMjIy2zMzM5IsLCwXMTExKjMzM/wzMzP/MzMz/zMz
M/8zMzObMjIyyzMzM/8zMzP/MzMz/zMzM/8yMjJxAAAAAAAAAAAyMjJHLy8vMTExMRoqKioGNjY2Ey4u
LiEuLi4LMjIy3zMzM/8zMzOzMjIyZzU1NR0yMjJrMzMzVQAAAAAxMTFdLS0tETIyMk0zMzOLMzMz8TMz
M/8zMzP/MzMz/zIyMsszMzPrMzMz/zMzM/8zMzP/MzMz4zExMUQ0NDQsMjIyWy8vLzEyMjJmAAAAADQ0
NEozMzNfAAAAADIyMoAzMzP/MzMz/zMzM8gsLCwXMjIyKTExMS82NjYTAAAAADMzMygvLy8rNTU1HTIy
Mn8zMzP/MzMz/zMzM/8zMzP/MzMz6zMzM/szMzP/MzMz/zMzM/8wMDA1AAAAAC4uLiczMzNQMzMzBQAA
AAAxMTEfAAAAAAAAAAAzMzMPJCQkBzMzM9czMzPiNTU1GAAAAAA5OTkJNDQ0TzY2NhMAAAAAMzMzSzAw
MDsAAAABAAAAATIyMqIzMzP/MzMz/zMzM/8zMzP7MzMz+jMzM/8zMzP/MzMz/zMzM80qKioMAAAAAAAA
AAAxMTFOMjIyMzExMTQwMDBALy8vKzMzMyg1NTUrMzMzxzMzM4stLS0RAAAAAAAAAAAAAAAAICAgCDEx
MVMwMDAgAAAAAAAAAAAkJCQHMzMzQTMzM/8zMzP/MzMz/zMzM/ozMzPoMzMz/zMzM/8zMzP/MzMz/zMz
M4YgICAIMjIy8DMzM/8yMjJ/AAAAADIyMoAyMjJxAAAAADMzM34zMzPoMzMz/zMzM+ozMzNGMzMzRicn
Jw0AAAAAAAAAAAAAAAAwMDA1MzMzzTMzM/szMzP/MzMz/zMzM/8zMzP/MzMz6DMzM8czMzP/MzMz/zMz
M/8zMzP8MjIyTQAAAAAzMzNQMzMzuTMzMxQAAAAAAAAAAAAAAAAAAAAAAAAAADQ0NIozMzP/MzMzZAAA
AAAAAAAAAAAAADMzMzcyMjKJAAAAAwAAAAAxMTFOMjIy/TMzM/8zMzP/MzMz/zMzM/8zMzPHMzMzljMz
M/8zMzP/MzMz/zMzM+UzMzNBMzMzPDExMT4zMzOQMzMz9DIyMiQwMDAQMzMzqgAAAAAyMjJ1MzMz/DMz
M/8zMzP/MzMz3TQ0NIU0NDQiAAAAAAAAAAA0NDQiMzMzjDMzM/IzMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M5Y0NDRTMzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz7TMzM6szMzPjMzMzuDMz
M/wzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/wzMzOfMjIyazMzM+ozMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/NDQ0VC4uLgszMzPyMzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zIyMvMuLi4LAAAAADIyMpUzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMzlgAAAAAAAAAAMTExHzMzM/czMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zIyMvgwMDAgAAAAAAAAAAAAAAAAMzMzgjMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMzgwAAAAAAAAAAAAAAAAAAAAAqKioGMjIyyzMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM80kJCQHAAAAAAAAAAAAAAAAAAAAAAAA
AAAzMzMeMzMz5TMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzPmMTExHwAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAyMjIpMzMz5TMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz5zQ0NCwAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMzMeMjIyyzMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM88uLi4hAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqKioGMzMzgjMzM/czMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/kzMzOHICAgCAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExHzIy
MpUzMzPyMzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/UzMzObMzMzIwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAC4uLgs0NDRTMzMzljMzM8czMzPoMzMz+jMzM/szMzPrMjIyyzMzM5s0NDRZNzc3DgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAADAA
AABgAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEzMzMPMDAwIDIyMkIzMzN9MzMzrjMz
M9IyMjLrMzMz+zQ0NPwzMzPtMzMz1zMzM7QyMjKEMjIySDQ0NCIwMDAQAAAAAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLy8vKzMzM28zMzOrMzMz4DMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM+UzMzOwMzMzdDAw
MDBVVVUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADc3NxcyMjKTMzMz4DMz
M/gzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz+jMzM+IzMzOaNzc3HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEqKioSNDQ0ZjMz
M+wzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz8DMzM242NjYTAAAAAQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQ0
NDYzMzOvMzMz+TMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/ozMzO0NTU1OgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAMjIyVjMzM+QzMzP9MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP+MzMz5zQ0NF4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAACoqKgYyMjJmMzMz8TMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zIyMvMyMjJrKioqBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMmczMzPpMzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzPrMjIyawAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMzMzWjMzM/EzMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MjIy8zQ0
NF4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEyMjI4MzMz5TMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM+c1NTU6AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADY2NhM0NDSyMzMz/jMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/4zMzO0NjY2EwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIy
MmwzMzP5MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP6MzMzbgAAAAAAAAAAAAAAAAAA
AAAAAAAALy8vGzMzM+8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz8Dc3
NxwAAAAAAAAAAAAAAABVVVUDNDQ0mDMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM5pVVVUDAAAAAAAAAAAwMDAwMzMz4jMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM+IwMDAwAAAAAAAAAAIzMzN0MzMz+jMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/ozMzN0AAAAAjAwMBAzMzOwMzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP5MzMz+zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP3MzMz3DMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzOwMDAwEDQ0
NCIzMzPlMzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/kyMjK8MzMzrzMz
M9kzMzO6Ly8vQTQ0NHYyMjLaMzMz/jIyMrYzMzOLMzMz6zMzM/8zMzP/NDQ0wTIyMoszMzP1MzMz/zMz
M/UyMjJ6NjY2ITIyMnszMzP1MzMz/zMzM/8zMzP/MzMz4DIyMpMzMzP8MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzPlNDQ0IjIyMkgzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP9MzMz5TMzM+szMzPwMzMz7zMz
M9oyMjI9AAAAAAAAAAEgICAIAAAAAgAAAAAAAAACLi4uITMzMyMAAAABMDAwZTMzM/8zMzPtMzMzNwAA
AAIxMTFDMjIyyzIyMosqKioGAAAAAEBAQAQzMzN3MzMz9TMzM94zMzODNzc3DjExMRUzMzO9MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MjIySDIyMoQzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzPyMjIyRzEx
MUMxMTFTMjIyUTMzM0sxMTEqAAAAASQkJAcsLCwXAAAAAQAAAAAAAAAAMzMzIwAAAAAyMjIkMjIy1TMz
M/8yMjLAMDAwMAAAAAIAAAAAMTExFTIyMiQyMjJXNzc3DgAAAAAyMjJIMzMzfTQ0NCwAAAABAAAAAEBA
QAgzMzOCMzMz+TMzM/8zMzP/MzMz/zMzM/8zMzP/MjIyhDMzM7QzMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzPxNjY2JgAAAAAAAAAAAAAAAC4uLhwxMTGhLi4uHDMzMwUzMzMPKioqDDExMTQAAAAALi4uLCoq
KgwxMTGBMzMz+zMzM/8zMzP2MzMz4TIyMr4zMzNuLi4uHDMzMzwyMjLIMzMzHgAAAAAzMzNQMDAwTycn
Jw0yMjJMMzMzkTMzM84zMzPpMzMz/TMzM/8zMzP/MzMz/zMzM/8zMzP/MzMztDMzM9czMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/wzMzPYNjY2ITMzMw8yMjKFMzMzHjMzMxkyMjKzMjIyhAAAAAAtLS0RMzMzkjMz
M7gzMzMZAAAAADExMW4zMzPoMzMz/zMzM/8zMzP/MjIywTAwMCAyMjI4MjIyRzIyMkgyMjJMLi4uCwAA
AAAzMzMeMjIySDIyMkgwMDBANDQ0LDExMVQzMzP5MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz1zMz
M+0zMzP/MzMz/zMzM/8zMzP/MzMz/zIyMrYxMTEvQEBABDMzMw8yMjKLMTExHwAAAAIqKioGOTk5CQAA
AAAAAAAALy8vGzExMRUzMzMKAAAAADY2NhM0NDSyMzMz/jMzM/8zMzPXNDQ0RAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAC0tLREzMzObMzMz+DMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz7TQ0NPwzMzP/MzMz/zMzM/8zMzP/MzMz/zIyMj0AAAAAAAAAACoqKgwxMTFpNTU1GFVV
VQM5OTkJAAAAAC8vLyswMDAgAAAAAAAAAAAzMzMFNDQ0IgAAAAE0NDRFMzMz6jMzM+80NDRYVVVVAwAA
AAAAAAAAMzMzGTMzM20zMzNzLi4uCwAAAAAxMTEaMjIyrjIyMnosLCwdAAAAAAAAAAA2NjYTMjIyvTMz
M/8zMzP/MzMz/zMzM/8zMzP/NDQ0/DMzM/szMzP/MzMz/zMzM/8zMzP/MzMz/zQ0NN4yMjI4AAAAAQAA
AAAAAAAAAAAAADExMRoyMjJnOTk5CTExMRoxMTFUNTU1GC8vLxsAAAAAMTExXTc3Nw4wMDAwMzMz4DMz
M8gqKioSQEBABAAAAAAAAAAAAAAAAAAAAAAAAAACMzMzFDMzM34xMTF3Li4uHAAAAAAAAAAAAAAAAAAA
AAFAQEAIMzMzSzMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz+zIyMuszMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/4zMzO9Li4uFlVVVQMwMDBFMTExfDQ0NI8zMzPRMDAwNVVVVQMzMzNGMjIyuzQ0NLIzMzMKJycnDTMz
M3gzMzPUMzMz/jMzM+AzMzOkNDQ0ijIyMlYvLy8rLy8vGwAAAAAAAAAAAAAAADMzMwUAAAAAAAAAADMz
MwoyMjIzMzMzWjMzM3wzMzOXNDQ0sjMzM/8zMzP/MzMz/zMzM/8zMzP/MjIy6zMzM9IzMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP7NDQ0XQAAAAEzMzNvMjIy+DMzM/8zMzPeMTExPgAAAAAtLS0RMzMzczIy
MnYzMzMZAAAAADQ0NDYzMzOSMzMz8jMzM/8zMzP/MjIyxzY2NiY3NzcXMTExXjAwMCUAAAAAAAAAAAAA
AAAAAAAAAAAAADExMRozMzOrMzMz8TMzM/0zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz0jMz
M64zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzPQMjIyZQAAAAAwMDA1MzMzljMzM70yMjKdMzMzCgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTEVMzMz2jMzM/8zMzPfLy8vKwAAAAAAAAAAAAAAAAAA
AAAAAAACNDQ0STIyMokxMTEfAAAAAAAAAAAnJycNMzMzljMzM/4zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMzrjMzM30zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/kzMzNvAAAAAQAAAAAAAAAAAAAAADIy
MjMzMzO1MzMzeDIyMi4AAAAAQEBACDExMWIuLi4WAAAAAC8vLyYzMzN5MzMz5TMzM/8zMzPlMzMznzMz
M2oxMTE0MzMzBQAAAAAAAAACMzMzNzMzM2owMDAlAAAAASAgIAgyMjJHMzMzoDMzM/wzMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMzfTMzM0EzMzP+MzMz/zMzM/8zMzP/MzMz/zIyMvgyMjKjMzMzajIy
MmYyMjJlMzMzaTIyMoQzMzPvMzMz8jQ0NCcAAAAANjY2ITMzM+IwMDA6AAAAADMzMy0yMjLfMzMz/zMz
M/8zMzP/MzMz/zMzM/gzMzPlNDQ0vDExMVRAQEAIAAAAAAAAAABAQEAENDQ0WTIyMsAzMzPsMzMz/TMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MjIyQjAwMCAzMzPfMzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zIyMvQzMzOgMzMzbzMzM+8zMzOCNDQ0ozMz
M/YzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/0zMzPINDQ0RTAwMCAyMjJ7MzMz8zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzPgMDAwIDMzMw8zMzOrMzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/jMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz9DMz
M9czMzP8MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzOrMzMzDwAA
AAEzMzNuMzMz+DMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/gzMzNvAAAAAQAAAAAvLy8rMzMz3zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM+AvLy8rAAAAAAAAAAAAAAACMzMzkTMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zIyMpMAAAACAAAAAAAAAAAAAAAAOjo6FjMzM+ozMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz7Dc3NxcAAAAAAAAAAAAAAAAAAAAAAAAAADQ0
NGMzMzP5MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP5NDQ0ZgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAC0tLRE0NDStMzMz/TMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/0zMzOvKioqEgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAExMTE0MzMz4zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M+Q0NDQ2AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANTU1UjMzM/AzMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz8TIyMlYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEx
MWIzMzPnMzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzPpMjIyZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAADMzMwUxMTFiMzMz8DMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/EyMjJnKioqBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANTU1UjMzM+MzMzP9MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP+MzMz5TMzM1oAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMTQ0NDStMzMz+TMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/k0NDSyMjIyOAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAEtLS0RNDQ0YzMzM+ozMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz7zIyMmw2NjYTAAAAAQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAADo6OhYzMzORMzMz3zMzM/gzMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz+jMzM+I0NDSYLy8vGwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLy8vKzMzM24zMzOrMzMz3zMz
M/4zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM+UzMzOwMzMzdDAw
MDBVVVUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAEzMzMPMDAwIDMzM0EzMzN9MzMzrjMzM9IyMjLrMzMz+zQ0NPwzMzPtMzMz1zMzM7QyMjKEMjIySDQ0
NCIwMDAQAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
</value>
</data>
</root>

BIN
SetTools/Views/Import.xlsx Normal file

Binary file not shown.

175
SetTools/Views/Register.Designer.cs generated Normal file
View File

@ -0,0 +1,175 @@
namespace SetTools.Views
{
partial class Register
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Register));
this.sign = new System.Windows.Forms.Button();
this.exit = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.MachineNum = new System.Windows.Forms.TextBox();
this.RegNum = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.namebox = new System.Windows.Forms.TextBox();
this.passwordbox = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// sign
//
this.sign.Font = new System.Drawing.Font("宋体", 12F);
this.sign.Location = new System.Drawing.Point(150, 350);
this.sign.Name = "sign";
this.sign.Size = new System.Drawing.Size(150, 50);
this.sign.TabIndex = 0;
this.sign.Text = "注册";
this.sign.UseVisualStyleBackColor = true;
this.sign.Click += new System.EventHandler(this.sign_Click);
//
// exit
//
this.exit.Font = new System.Drawing.Font("宋体", 12F);
this.exit.Location = new System.Drawing.Point(550, 350);
this.exit.Name = "exit";
this.exit.Size = new System.Drawing.Size(150, 50);
this.exit.TabIndex = 2;
this.exit.Text = "退出";
this.exit.UseVisualStyleBackColor = true;
this.exit.Click += new System.EventHandler(this.exit_Click);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("宋体", 12F);
this.label1.Location = new System.Drawing.Point(100, 209);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(82, 24);
this.label1.TabIndex = 3;
this.label1.Text = "机器码";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Font = new System.Drawing.Font("宋体", 12F);
this.label2.Location = new System.Drawing.Point(100, 269);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(82, 24);
this.label2.TabIndex = 4;
this.label2.Text = "注册码";
//
// MachineNum
//
this.MachineNum.Font = new System.Drawing.Font("宋体", 12F);
this.MachineNum.Location = new System.Drawing.Point(200, 206);
this.MachineNum.Name = "MachineNum";
this.MachineNum.Size = new System.Drawing.Size(538, 35);
this.MachineNum.TabIndex = 5;
//
// RegNum
//
this.RegNum.Font = new System.Drawing.Font("宋体", 12F);
this.RegNum.Location = new System.Drawing.Point(200, 266);
this.RegNum.Name = "RegNum";
this.RegNum.Size = new System.Drawing.Size(538, 35);
this.RegNum.TabIndex = 6;
//
// label3
//
this.label3.AutoSize = true;
this.label3.Font = new System.Drawing.Font("宋体", 12F);
this.label3.Location = new System.Drawing.Point(100, 89);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(82, 24);
this.label3.TabIndex = 7;
this.label3.Text = "用户名";
//
// label4
//
this.label4.AutoSize = true;
this.label4.Font = new System.Drawing.Font("宋体", 12F);
this.label4.Location = new System.Drawing.Point(100, 149);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(82, 24);
this.label4.TabIndex = 8;
this.label4.Text = "密 码";
//
// namebox
//
this.namebox.Font = new System.Drawing.Font("宋体", 12F);
this.namebox.Location = new System.Drawing.Point(200, 86);
this.namebox.Name = "namebox";
this.namebox.Size = new System.Drawing.Size(538, 35);
this.namebox.TabIndex = 9;
//
// passwordbox
//
this.passwordbox.Font = new System.Drawing.Font("宋体", 12F);
this.passwordbox.Location = new System.Drawing.Point(200, 146);
this.passwordbox.Name = "passwordbox";
this.passwordbox.Size = new System.Drawing.Size(538, 35);
this.passwordbox.TabIndex = 10;
//
// Register
//
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(828, 444);
this.Controls.Add(this.passwordbox);
this.Controls.Add(this.namebox);
this.Controls.Add(this.label4);
this.Controls.Add(this.label3);
this.Controls.Add(this.RegNum);
this.Controls.Add(this.MachineNum);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Controls.Add(this.exit);
this.Controls.Add(this.sign);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "Register";
this.Text = "注册";
this.Load += new System.EventHandler(this.Register_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button sign;
private System.Windows.Forms.Button exit;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox MachineNum;
private System.Windows.Forms.TextBox RegNum;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.TextBox namebox;
private System.Windows.Forms.TextBox passwordbox;
}
}

207
SetTools/Views/Register.cs Normal file
View File

@ -0,0 +1,207 @@
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Linq;
using System.Management;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace SetTools.Views
{
public partial class Register : Form
{
public String ConSql = @"Provider=Microsoft.Jet.OleDb.4.0; Data Source = " + System.IO.Directory.GetCurrentDirectory() + "\\rqdata.mdb";
public Register()
{
InitializeComponent();
MachineNum.Text = getMNum();
}
private int[] intCode = new int[127]; // 存储密钥
private char[] charCode = new char[33]; // 存储机器码字
private int[] intNumber = new int[33]; // 存机器码的Ascii值
/// <summary>
/// 获取CPU
/// </summary>
/// <returns>CPU字符串</returns>
public string getCPU()
{
string strCPU = null;
ManagementClass myCPU = new ManagementClass("win32_Processor");
ManagementObjectCollection myCPUConnection = myCPU.GetInstances();
foreach (ManagementObject myObject in myCPUConnection)
{
strCPU = myObject.Properties["Processorid"].Value.ToString();
break;
}
return strCPU;
}
/// <summary>
/// 获取卷轴字符串
/// </summary>
/// <returns>卷轴字符串</returns>
public string GetDiskVolumeSerialNumber()
{
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"d:\"");
disk.Get();
return disk.GetPropertyValue("VolumeSerialNumber").ToString();
}
/// <summary>
/// 获取时间字符串
/// </summary>
/// <returns>时间字符串</returns>
public string GetTimeStr()
{
/* 获取当前时间字符串函数 */
string tempTimeStr = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString().PadLeft(2, '0')
+DateTime.Now.Day.ToString().PadLeft(2, '0'); /* 以年-月-日的格式命名文件 */
return tempTimeStr;
}
/// <summary>
/// 得到机器码
/// </summary>
/// <returns>机器码</returns>
public string getMNum()
{
string strNum = getCPU() + GetDiskVolumeSerialNumber() + GetTimeStr(); //获得32位Cpu和硬盘序列号
string strMNum = strNum.Substring(0, 32); //从生成的字符串中取出前32个字符做为机器码
return strMNum;
}
/// <summary>
/// 获得注册码
/// </summary>
/// <returns>注册码字符串</returns>
public string getRNum()
{
SetIntCode();
string strMNum = getMNum();
for (int i = 1; i < charCode.Length; i++) //存储机器码
{
charCode[i] = Convert.ToChar(strMNum.Substring(i - 1, 1));
}
for (int j = 1; j < intNumber.Length; j++) //改变ASCII码值
{
intNumber[j] = Convert.ToInt32(charCode[j]) + intCode[Convert.ToInt32(charCode[j])];
}
string strAsciiName = ""; //注册码
for (int k = 1; k < intNumber.Length; k++) //生成注册码
{
if ((intNumber[k] >= 48 && intNumber[k] <= 57) || (intNumber[k] >= 65 && intNumber[k]
<= 90) || (intNumber[k] >= 97 && intNumber[k] <= 122)) //判断如果在0-9、A-Z、a-z之间
{
strAsciiName += Convert.ToChar(intNumber[k]).ToString();
}
else if (intNumber[k] > 122) //判断如果大于z
{
strAsciiName += Convert.ToChar(intNumber[k] - 10).ToString();
}
else
{
strAsciiName += Convert.ToChar(intNumber[k] - 9).ToString();
}
}
return strAsciiName;
}
/// <summary>
/// 给数组赋值小于10的数
/// </summary>
public void SetIntCode()
{
for (int i = 1; i < intCode.Length; i++)
{
intCode[i] = i % 9;
}
}
private void sign_Click(object sender, EventArgs e)
{
try
{
OleDbConnection conn;
conn = new OleDbConnection(ConSql);
if (RegNum.Text == getRNum())
{
DateTime result = DateTime.Now.AddMonths(3);//获取当前时间往后3个月的时间点
string Username = namebox.Text;
string Password = passwordbox.Text;
bool read_flag = true;
conn.Open();
OleDbCommand cnd = conn.CreateCommand();
cnd = conn.CreateCommand();
cnd.CommandText = @"select * from [YunXin_Admin] where AdminName = '" + Username + "' and Password = '" + Password + "'";
cnd.ExecuteNonQuery();
OleDbDataReader odr;
odr = cnd.ExecuteReader();
if (odr.Read())
read_flag = true;
else
read_flag = false;
conn.Close();
if(read_flag == false)
{
MessageBox.Show("注册成功!", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
conn.Open();
OleDbCommand cmd = conn.CreateCommand();
cmd = conn.CreateCommand();
cmd.CommandText = @"INSERT INTO YunXin_Admin([AdminName], [Password], [UserName], [expirydayte], [AdminPurview], [Working], [LastLoginTime], [LastLoginIP], [Explain], [AddTime])VALUES('" + Username + "', '";
cmd.CommandText += Password + "', '" + Username + "', '" + result + "', '" + "11,| 12,|" + "', '" + 1 + "', '" + result + "', '" + 15 + "', '" + "普通用户" + "', '" + result + "')";
cmd.ExecuteNonQuery();
conn.Close();
this.Close();
}
else
{
MessageBox.Show("更新成功!", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
conn.Open();
OleDbCommand cmd = conn.CreateCommand();
cmd = conn.CreateCommand();
cmd.CommandText = @"UPDATE YunXin_Admin set [expirydayte] = '" + result + "'";
cmd.CommandText += " where AdminName = '" + Username + "' and Password = '" + Password + "'";
cmd.ExecuteNonQuery();
conn.Close();
this.Close();
}
}
else
{
MessageBox.Show("注册码错误!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
private void ignore_Click(object sender, EventArgs e)
{
this.Close();
FormDevice fd = new FormDevice();
fd.Show();
}
private void exit_Click(object sender, EventArgs e)
{
this.Close();
}
private void Register_Load(object sender, EventArgs e)
{
}
}
}

View File

@ -0,0 +1,382 @@
<?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="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAMAEBAAAAEAIABoBAAANgAAACAgAAABACAAKBEAAJ4EAAAwMAAAAQAgAGgmAADGFQAAKAAAABAA
AAAgAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMzMtMjIylDMz
M9cyMjL4MzMz+TMzM9kzMzOXMTExLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAgzMzOVMjIy/TMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/0yMjKYQEBACAAAAAAAAAAAAAAAACAgIAgzMzO+MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zIyMsBAQEAIAAAAAAAAAAAzMzOXMzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MjIymAAAAAAxMTEvMzMz/TMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/0xMTEvMzMzlzMz
M/8zMzP/MzMz/zMzM+8zMzPhMzMz7jIyMukzMzP5MjIy8zMzM9QzMzPyMzMz/DMzM/UzMzP/MzMzlzMz
M9kzMzP/MzMzzzIyMmcxMTFDHBwcCTAwMBAyMjJSMzMzxDExMT4zMzNBMDAwUDIyMkIyMjKoMzMz/zMz
M9kzMzP5MzMz/zIyMlcxMTE/Li4uJzExMRovLy8bMzMzlzMzM7AqKioSMjIyKTU1NR0uLi4hMzMziDMz
M/8zMzP5MjIy+DMzM/8zMzOXMTExPjIyMoAyMjI9Ly8vMTMzM5YzMzOhMzMzIzMzMwUsLCwdNDQ0QDMz
M5AzMzP/MjIy+DMzM9czMzP/MzMznDMzMzI0NDSUJycnDTExMSoyMjJ/MzMz2DQ0NFguLi4WLy8vKzMz
M3MzMzP+MzMz/zMzM9cyMjKUMzMz/zMzM/8zMzP/MzMz/zMzM+UzMzPmMzMz/jMzM/8zMzP/MzMz5jIy
MtUzMzP/MzMz/zMzM/8yMjKUMzMzLTIyMv0zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8yMjL9MzMzLQAAAAAyMjKUMzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMzlQAAAAAAAAAAJCQkBzQ0NLwzMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMzviAgIAgAAAAAAAAAAAAAAAAkJCQHMjIylDIyMv0zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP9MzMzlyAgIAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMzMtMjIylDMz
M9cyMjL4MzMz+TMzM9kzMzOXMTExLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAACAAAABAAAAAAQAgAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAuLi4LNDQ0VDMzM5YzMzPHMzMz6DMzM/ozMzP7MzMz6zIyMsszMzObNDQ0WTc3Nw4AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAwMDAgMzMzljIyMvMzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz9TMz
M5szMzMjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAkJCQHMzMzgzIyMvgzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/kyMjKJQEBACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAMTExHzMzM80zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzPRNDQ0IgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAADQ0NCwzMzPmMzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8yMjLpMjIyLgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAuLi4hMzMz5zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8yMjLpNDQ0IgAA
AAAAAAAAAAAAAAAAAAAAAAAAICAgCDMzM88zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzPRQEBACAAAAAAAAAAAAAAAAAAAAAAzMzOHMzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8yMjKJAAAAAAAAAAAAAAAAMzMzIzMzM/kzMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/kzMzMjAAAAAAAAAAAzMzObMzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM5sAAAAANzc3DjMzM/UzMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz9Tc3Nw40NDRZMzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/QyMjLKMzMz8DIyMpUzMzO9MzMz/jMzM78zMzPmMzMz/zMz
M+gyMjLQMzMz/zMzM+0yMjJnMjIyyjMzM/8zMzP/MzMz9DMzM9czMzP/MzMz/zMzM/8zMzP/NDQ0WTMz
M5szMzP/MzMz/zMzM/8zMzP/MzMzzTMzM8kzMzPSMjIylAAAAAAAAAACAAAAAwAAAAAnJycNKioqDDEx
MVQzMzP/MzMzX0BAQAQyMjJxMTExRAAAAAAkJCQHMjIy2zMzM5IsLCwXMTExKjMzM/wzMzP/MzMz/zMz
M/8zMzObMjIyyzMzM/8zMzP/MzMz/zMzM/8yMjJxAAAAAAAAAAAyMjJHLy8vMTExMRoqKioGNjY2Ey4u
LiEuLi4LMjIy3zMzM/8zMzOzMjIyZzU1NR0yMjJrMzMzVQAAAAAxMTFdLS0tETIyMk0zMzOLMzMz8TMz
M/8zMzP/MzMz/zIyMsszMzPrMzMz/zMzM/8zMzP/MzMz4zExMUQ0NDQsMjIyWy8vLzEyMjJmAAAAADQ0
NEozMzNfAAAAADIyMoAzMzP/MzMz/zMzM8gsLCwXMjIyKTExMS82NjYTAAAAADMzMygvLy8rNTU1HTIy
Mn8zMzP/MzMz/zMzM/8zMzP/MzMz6zMzM/szMzP/MzMz/zMzM/8wMDA1AAAAAC4uLiczMzNQMzMzBQAA
AAAxMTEfAAAAAAAAAAAzMzMPJCQkBzMzM9czMzPiNTU1GAAAAAA5OTkJNDQ0TzY2NhMAAAAAMzMzSzAw
MDsAAAABAAAAATIyMqIzMzP/MzMz/zMzM/8zMzP7MzMz+jMzM/8zMzP/MzMz/zMzM80qKioMAAAAAAAA
AAAxMTFOMjIyMzExMTQwMDBALy8vKzMzMyg1NTUrMzMzxzMzM4stLS0RAAAAAAAAAAAAAAAAICAgCDEx
MVMwMDAgAAAAAAAAAAAkJCQHMzMzQTMzM/8zMzP/MzMz/zMzM/ozMzPoMzMz/zMzM/8zMzP/MzMz/zMz
M4YgICAIMjIy8DMzM/8yMjJ/AAAAADIyMoAyMjJxAAAAADMzM34zMzPoMzMz/zMzM+ozMzNGMzMzRicn
Jw0AAAAAAAAAAAAAAAAwMDA1MzMzzTMzM/szMzP/MzMz/zMzM/8zMzP/MzMz6DMzM8czMzP/MzMz/zMz
M/8zMzP8MjIyTQAAAAAzMzNQMzMzuTMzMxQAAAAAAAAAAAAAAAAAAAAAAAAAADQ0NIozMzP/MzMzZAAA
AAAAAAAAAAAAADMzMzcyMjKJAAAAAwAAAAAxMTFOMjIy/TMzM/8zMzP/MzMz/zMzM/8zMzPHMzMzljMz
M/8zMzP/MzMz/zMzM+UzMzNBMzMzPDExMT4zMzOQMzMz9DIyMiQwMDAQMzMzqgAAAAAyMjJ1MzMz/DMz
M/8zMzP/MzMz3TQ0NIU0NDQiAAAAAAAAAAA0NDQiMzMzjDMzM/IzMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M5Y0NDRTMzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz7TMzM6szMzPjMzMzuDMz
M/wzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/wzMzOfMjIyazMzM+ozMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/NDQ0VC4uLgszMzPyMzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zIyMvMuLi4LAAAAADIyMpUzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMzlgAAAAAAAAAAMTExHzMzM/czMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zIyMvgwMDAgAAAAAAAAAAAAAAAAMzMzgjMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMzgwAAAAAAAAAAAAAAAAAAAAAqKioGMjIyyzMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM80kJCQHAAAAAAAAAAAAAAAAAAAAAAAA
AAAzMzMeMzMz5TMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzPmMTExHwAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAyMjIpMzMz5TMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz5zQ0NCwAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMzMeMjIyyzMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM88uLi4hAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqKioGMzMzgjMzM/czMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/kzMzOHICAgCAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExHzIy
MpUzMzPyMzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/UzMzObMzMzIwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAC4uLgs0NDRTMzMzljMzM8czMzPoMzMz+jMzM/szMzPrMjIyyzMzM5s0NDRZNzc3DgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAADAA
AABgAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEzMzMPMDAwIDIyMkIzMzN9MzMzrjMz
M9IyMjLrMzMz+zQ0NPwzMzPtMzMz1zMzM7QyMjKEMjIySDQ0NCIwMDAQAAAAAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLy8vKzMzM28zMzOrMzMz4DMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM+UzMzOwMzMzdDAw
MDBVVVUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADc3NxcyMjKTMzMz4DMz
M/gzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz+jMzM+IzMzOaNzc3HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEqKioSNDQ0ZjMz
M+wzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz8DMzM242NjYTAAAAAQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQ0
NDYzMzOvMzMz+TMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/ozMzO0NTU1OgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAMjIyVjMzM+QzMzP9MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP+MzMz5zQ0NF4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAACoqKgYyMjJmMzMz8TMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zIyMvMyMjJrKioqBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMmczMzPpMzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzPrMjIyawAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMzMzWjMzM/EzMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MjIy8zQ0
NF4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEyMjI4MzMz5TMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM+c1NTU6AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADY2NhM0NDSyMzMz/jMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/4zMzO0NjY2EwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIy
MmwzMzP5MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP6MzMzbgAAAAAAAAAAAAAAAAAA
AAAAAAAALy8vGzMzM+8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz8Dc3
NxwAAAAAAAAAAAAAAABVVVUDNDQ0mDMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM5pVVVUDAAAAAAAAAAAwMDAwMzMz4jMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM+IwMDAwAAAAAAAAAAIzMzN0MzMz+jMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/ozMzN0AAAAAjAwMBAzMzOwMzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP5MzMz+zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP3MzMz3DMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzOwMDAwEDQ0
NCIzMzPlMzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/kyMjK8MzMzrzMz
M9kzMzO6Ly8vQTQ0NHYyMjLaMzMz/jIyMrYzMzOLMzMz6zMzM/8zMzP/NDQ0wTIyMoszMzP1MzMz/zMz
M/UyMjJ6NjY2ITIyMnszMzP1MzMz/zMzM/8zMzP/MzMz4DIyMpMzMzP8MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzPlNDQ0IjIyMkgzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP9MzMz5TMzM+szMzPwMzMz7zMz
M9oyMjI9AAAAAAAAAAEgICAIAAAAAgAAAAAAAAACLi4uITMzMyMAAAABMDAwZTMzM/8zMzPtMzMzNwAA
AAIxMTFDMjIyyzIyMosqKioGAAAAAEBAQAQzMzN3MzMz9TMzM94zMzODNzc3DjExMRUzMzO9MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MjIySDIyMoQzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzPyMjIyRzEx
MUMxMTFTMjIyUTMzM0sxMTEqAAAAASQkJAcsLCwXAAAAAQAAAAAAAAAAMzMzIwAAAAAyMjIkMjIy1TMz
M/8yMjLAMDAwMAAAAAIAAAAAMTExFTIyMiQyMjJXNzc3DgAAAAAyMjJIMzMzfTQ0NCwAAAABAAAAAEBA
QAgzMzOCMzMz+TMzM/8zMzP/MzMz/zMzM/8zMzP/MjIyhDMzM7QzMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzPxNjY2JgAAAAAAAAAAAAAAAC4uLhwxMTGhLi4uHDMzMwUzMzMPKioqDDExMTQAAAAALi4uLCoq
KgwxMTGBMzMz+zMzM/8zMzP2MzMz4TIyMr4zMzNuLi4uHDMzMzwyMjLIMzMzHgAAAAAzMzNQMDAwTycn
Jw0yMjJMMzMzkTMzM84zMzPpMzMz/TMzM/8zMzP/MzMz/zMzM/8zMzP/MzMztDMzM9czMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/wzMzPYNjY2ITMzMw8yMjKFMzMzHjMzMxkyMjKzMjIyhAAAAAAtLS0RMzMzkjMz
M7gzMzMZAAAAADExMW4zMzPoMzMz/zMzM/8zMzP/MjIywTAwMCAyMjI4MjIyRzIyMkgyMjJMLi4uCwAA
AAAzMzMeMjIySDIyMkgwMDBANDQ0LDExMVQzMzP5MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz1zMz
M+0zMzP/MzMz/zMzM/8zMzP/MzMz/zIyMrYxMTEvQEBABDMzMw8yMjKLMTExHwAAAAIqKioGOTk5CQAA
AAAAAAAALy8vGzExMRUzMzMKAAAAADY2NhM0NDSyMzMz/jMzM/8zMzPXNDQ0RAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAC0tLREzMzObMzMz+DMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz7TQ0NPwzMzP/MzMz/zMzM/8zMzP/MzMz/zIyMj0AAAAAAAAAACoqKgwxMTFpNTU1GFVV
VQM5OTkJAAAAAC8vLyswMDAgAAAAAAAAAAAzMzMFNDQ0IgAAAAE0NDRFMzMz6jMzM+80NDRYVVVVAwAA
AAAAAAAAMzMzGTMzM20zMzNzLi4uCwAAAAAxMTEaMjIyrjIyMnosLCwdAAAAAAAAAAA2NjYTMjIyvTMz
M/8zMzP/MzMz/zMzM/8zMzP/NDQ0/DMzM/szMzP/MzMz/zMzM/8zMzP/MzMz/zQ0NN4yMjI4AAAAAQAA
AAAAAAAAAAAAADExMRoyMjJnOTk5CTExMRoxMTFUNTU1GC8vLxsAAAAAMTExXTc3Nw4wMDAwMzMz4DMz
M8gqKioSQEBABAAAAAAAAAAAAAAAAAAAAAAAAAACMzMzFDMzM34xMTF3Li4uHAAAAAAAAAAAAAAAAAAA
AAFAQEAIMzMzSzMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz+zIyMuszMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/4zMzO9Li4uFlVVVQMwMDBFMTExfDQ0NI8zMzPRMDAwNVVVVQMzMzNGMjIyuzQ0NLIzMzMKJycnDTMz
M3gzMzPUMzMz/jMzM+AzMzOkNDQ0ijIyMlYvLy8rLy8vGwAAAAAAAAAAAAAAADMzMwUAAAAAAAAAADMz
MwoyMjIzMzMzWjMzM3wzMzOXNDQ0sjMzM/8zMzP/MzMz/zMzM/8zMzP/MjIy6zMzM9IzMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP7NDQ0XQAAAAEzMzNvMjIy+DMzM/8zMzPeMTExPgAAAAAtLS0RMzMzczIy
MnYzMzMZAAAAADQ0NDYzMzOSMzMz8jMzM/8zMzP/MjIyxzY2NiY3NzcXMTExXjAwMCUAAAAAAAAAAAAA
AAAAAAAAAAAAADExMRozMzOrMzMz8TMzM/0zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz0jMz
M64zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzPQMjIyZQAAAAAwMDA1MzMzljMzM70yMjKdMzMzCgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTEVMzMz2jMzM/8zMzPfLy8vKwAAAAAAAAAAAAAAAAAA
AAAAAAACNDQ0STIyMokxMTEfAAAAAAAAAAAnJycNMzMzljMzM/4zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMzrjMzM30zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/kzMzNvAAAAAQAAAAAAAAAAAAAAADIy
MjMzMzO1MzMzeDIyMi4AAAAAQEBACDExMWIuLi4WAAAAAC8vLyYzMzN5MzMz5TMzM/8zMzPlMzMznzMz
M2oxMTE0MzMzBQAAAAAAAAACMzMzNzMzM2owMDAlAAAAASAgIAgyMjJHMzMzoDMzM/wzMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMzfTMzM0EzMzP+MzMz/zMzM/8zMzP/MzMz/zIyMvgyMjKjMzMzajIy
MmYyMjJlMzMzaTIyMoQzMzPvMzMz8jQ0NCcAAAAANjY2ITMzM+IwMDA6AAAAADMzMy0yMjLfMzMz/zMz
M/8zMzP/MzMz/zMzM/gzMzPlNDQ0vDExMVRAQEAIAAAAAAAAAABAQEAENDQ0WTIyMsAzMzPsMzMz/TMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MjIyQjAwMCAzMzPfMzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zIyMvQzMzOgMzMzbzMzM+8zMzOCNDQ0ozMz
M/YzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/0zMzPINDQ0RTAwMCAyMjJ7MzMz8zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzPgMDAwIDMzMw8zMzOrMzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/jMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz9DMz
M9czMzP8MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzOrMzMzDwAA
AAEzMzNuMzMz+DMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/gzMzNvAAAAAQAAAAAvLy8rMzMz3zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM+AvLy8rAAAAAAAAAAAAAAACMzMzkTMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zIyMpMAAAACAAAAAAAAAAAAAAAAOjo6FjMzM+ozMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz7Dc3NxcAAAAAAAAAAAAAAAAAAAAAAAAAADQ0
NGMzMzP5MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP5NDQ0ZgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAC0tLRE0NDStMzMz/TMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/0zMzOvKioqEgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAExMTE0MzMz4zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M+Q0NDQ2AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANTU1UjMzM/AzMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz8TIyMlYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEx
MWIzMzPnMzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzPpMjIyZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAADMzMwUxMTFiMzMz8DMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/EyMjJnKioqBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANTU1UjMzM+MzMzP9MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP+MzMz5TMzM1oAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMTQ0NDStMzMz+TMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/k0NDSyMjIyOAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAEtLS0RNDQ0YzMzM+ozMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz7zIyMmw2NjYTAAAAAQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAADo6OhYzMzORMzMz3zMzM/gzMzP/MzMz/zMzM/8zMzP/MzMz/zMz
M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz+jMzM+I0NDSYLy8vGwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLy8vKzMzM24zMzOrMzMz3zMz
M/4zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM+UzMzOwMzMzdDAw
MDBVVVUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAEzMzMPMDAwIDMzM0EzMzN9MzMzrjMzM9IyMjLrMzMz+zQ0NPwzMzPtMzMz1zMzM7QyMjKEMjIySDQ0
NCIwMDAQAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
</value>
</data>
</root>

BIN
SetTools/bin/Debug/17.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

BIN
SetTools/bin/Debug/17.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 990 KiB

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,114 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>App.Metrics.Formatters.Ascii</name>
</assembly>
<members>
<member name="T:App.Metrics.EnvTextOutputFormatterBuilder">
<summary>
Builder for configuring environment information plain text output formatting using an
<see cref="T:App.Metrics.IMetricsBuilder" />.
</summary>
</member>
<member name="M:App.Metrics.EnvTextOutputFormatterBuilder.AsPlainText(App.Metrics.IEnvOutputFormattingBuilder,System.Action{App.Metrics.Formatters.Ascii.MetricsTextOptions})">
<summary>
Add the <see cref="T:App.Metrics.Formatters.Ascii.EnvInfoTextOutputFormatter" /> allowing environment information to optionally be reported as plain text.
</summary>
<param name="envFormattingBuilder">
The <see cref="T:App.Metrics.IEnvOutputFormattingBuilder" /> used to configure formatting
options.
</param>
<param name="setupAction">The plain text formatting options to use.</param>
<returns>
An <see cref="T:App.Metrics.IMetricsBuilder" /> that can be used to further configure App Metrics.
</returns>
</member>
<member name="T:App.Metrics.MetricsTextOutputFormatterBuilder">
<summary>
Builder for configuring metric plain text output formatting using an
<see cref="T:App.Metrics.IMetricsBuilder" />.
</summary>
</member>
<member name="M:App.Metrics.MetricsTextOutputFormatterBuilder.AsPlainText(App.Metrics.IMetricsOutputFormattingBuilder,System.Action{App.Metrics.Formatters.Ascii.MetricsTextOptions},App.Metrics.MetricFields)">
<summary>
Add the <see cref="T:App.Metrics.Formatters.Ascii.MetricsTextOutputFormatter" /> allowing metrics to optionally be reported as plain text.
</summary>
<param name="metricFormattingBuilder">
The <see cref="T:App.Metrics.IMetricsOutputFormattingBuilder" /> used to configure formatting
options.
</param>
<param name="setupAction">The plain text formatting options to use.</param>
<param name="metricFields">The metric fields to output as well as their names. This will override the globally configured metric fields.</param>
<returns>
An <see cref="T:App.Metrics.IMetricsBuilder" /> that can be used to further configure App Metrics.
</returns>
</member>
<member name="M:App.Metrics.MetricsTextOutputFormatterBuilder.AsPlainText(App.Metrics.IMetricsOutputFormattingBuilder,App.Metrics.MetricFields)">
<summary>
Add the <see cref="T:App.Metrics.Formatters.Ascii.MetricsTextOutputFormatter" /> allowing metrics to optionally be reported as plain text.
</summary>
<param name="metricFormattingBuilder">
The <see cref="T:App.Metrics.IMetricsOutputFormattingBuilder" /> used to configure formatting
options.
</param>
<param name="metricFields">The metric fields to output as well as their names. This will override the globally configured metric fields.</param>
<returns>
An <see cref="T:App.Metrics.IMetricsBuilder" /> that can be used to further configure App Metrics.
</returns>
</member>
<member name="P:App.Metrics.Formatters.Ascii.EnvInfoTextOutputFormatter.MediaType">
<inheritdoc />
</member>
<member name="M:App.Metrics.Formatters.Ascii.EnvInfoTextOutputFormatter.WriteAsync(System.IO.Stream,App.Metrics.Infrastructure.EnvironmentInfo,System.Threading.CancellationToken)">
<inheritdoc />
</member>
<member name="M:App.Metrics.Formatters.Ascii.EnvInfoTextWriter.Write(App.Metrics.Infrastructure.EnvironmentInfo)">
<inheritdoc />
</member>
<member name="M:App.Metrics.Formatters.Ascii.MetricSnapshotTextWriter.Write(System.String,System.String,System.String,System.Object,App.Metrics.MetricTags,System.DateTime)">
<inheritdoc />
</member>
<member name="M:App.Metrics.Formatters.Ascii.MetricSnapshotTextWriter.Write(System.String,System.String,System.Collections.Generic.IEnumerable{System.String},System.Collections.Generic.IEnumerable{System.Object},App.Metrics.MetricTags,System.DateTime)">
<inheritdoc />
</member>
<member name="M:App.Metrics.Formatters.Ascii.MetricSnapshotTextWriter.DisposeAsync">
<inheritdoc />
</member>
<member name="M:App.Metrics.Formatters.Ascii.MetricSnapshotTextWriter.DisposeAsync(System.Boolean)">
<summary>
Releases unmanaged and - optionally - managed resources.
</summary>
<param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
</member>
<member name="T:App.Metrics.Formatters.Ascii.MetricsTextOptions">
<summary>
Provides programmatic configuration for ASCII formatting the App Metrics framework.
</summary>
</member>
<member name="P:App.Metrics.Formatters.Ascii.MetricsTextOptions.Padding">
<summary>
Gets or sets the padding to apply on health check labels and messages
</summary>
<value>
The padding to apply on health check labels and messages
</value>
</member>
<member name="P:App.Metrics.Formatters.Ascii.MetricsTextOptions.Separator">
<summary>
Gets or sets the separator to use between on health check labels and messages/status
</summary>
<value>
The separator to apply between on health check labels and messages/status
</value>
</member>
<member name="P:App.Metrics.Formatters.Ascii.MetricsTextOutputFormatter.MediaType">
<inheritdoc />
</member>
<member name="P:App.Metrics.Formatters.Ascii.MetricsTextOutputFormatter.MetricFields">
<inheritdoc />
</member>
<member name="M:App.Metrics.Formatters.Ascii.MetricsTextOutputFormatter.WriteAsync(System.IO.Stream,App.Metrics.MetricsDataValueSource,System.Threading.CancellationToken)">
<inheritdoc />
</member>
</members>
</doc>

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,123 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>App.Metrics.Formatters.InfluxDB</name>
</assembly>
<members>
<member name="M:App.Metrics.MetricsInfluxDbLineProtocolFormatterBuilder.AsInfluxDbLineProtocol(App.Metrics.IMetricsOutputFormattingBuilder,System.Action{App.Metrics.Formatters.InfluxDB.MetricsInfluxDbLineProtocolOptions},App.Metrics.MetricFields)">
<summary>
Add the <see cref="T:App.Metrics.Formatters.InfluxDB.MetricsInfluxDbLineProtocolOutputFormatter" /> allowing metrics to optionally be reported to
InfluxDB using the LineProtocol.
</summary>
<param name="metricFormattingBuilder">s
The <see cref="T:App.Metrics.IMetricsOutputFormattingBuilder" /> used to configure InfluxDB Lineprotocol formatting
options.
</param>
<param name="setupAction">The InfluxDB LineProtocol formatting options to use.</param>
<param name="fields">The metric fields to report as well as thier names.</param>
<returns>
An <see cref="T:App.Metrics.IMetricsBuilder" /> that can be used to further configure App Metrics.
</returns>
</member>
<member name="M:App.Metrics.MetricsInfluxDbLineProtocolFormatterBuilder.AsInfluxDbLineProtocol(App.Metrics.IMetricsOutputFormattingBuilder,App.Metrics.Formatters.InfluxDB.MetricsInfluxDbLineProtocolOptions,App.Metrics.MetricFields)">
<summary>
Add the <see cref="T:App.Metrics.Formatters.InfluxDB.MetricsInfluxDbLineProtocolOutputFormatter" /> allowing metrics to optionally be reported to
InfluxDB using the LineProtocol.
</summary>
<param name="metricFormattingBuilder">s
The <see cref="T:App.Metrics.IMetricsOutputFormattingBuilder" /> used to configure InfluxDB Lineprotocol formatting
options.
</param>
<param name="options">The InfluxDB LineProtocol formatting options to use.</param>
<param name="fields">The metric fields to report as well as thier names.</param>
<returns>
An <see cref="T:App.Metrics.IMetricsBuilder" /> that can be used to further configure App Metrics.
</returns>
</member>
<member name="M:App.Metrics.MetricsInfluxDbLineProtocolFormatterBuilder.AsInfluxDbLineProtocol(App.Metrics.IMetricsOutputFormattingBuilder,App.Metrics.MetricFields)">
<summary>
Add the <see cref="T:App.Metrics.Formatters.InfluxDB.MetricsInfluxDbLineProtocolOutputFormatter" /> allowing metrics to optionally be reported to
InfluxDB using the LineProtocol.
</summary>
<param name="metricFormattingBuilder">s
The <see cref="T:App.Metrics.IMetricsOutputFormattingBuilder" /> used to configure InfluxDB Lineprotocol formatting
options.
</param>
<param name="fields">The metric fields to report as well as thier names.</param>
<returns>
An <see cref="T:App.Metrics.IMetricsBuilder" /> that can be used to further configure App Metrics.
</returns>
</member>
<member name="T:App.Metrics.Formatters.InfluxDB.Internal.ILineProtocolPoint">
<summary>
Defines a point (a ligne), which can be written in Line Protocol format.
</summary>
</member>
<member name="M:App.Metrics.Formatters.InfluxDB.Internal.ILineProtocolPoint.WriteAsync(System.IO.TextWriter,System.Boolean)">
<summary>
Write this point as a line protocol item.
</summary>
<param name="textWriter">Text writer to write the line to.</param>
<param name="writeTimestamp">
<c>true</c> to let the point write the timestamp by itself, <c>false</c> to not write the timestamp at the end of the row.
You will have to write the timestamp by yourself of let the server receive the line and use its own timer as a timestamp.
</param>
</member>
<member name="T:App.Metrics.Formatters.InfluxDB.Internal.LineProtocolPointBase">
<summary>
Base class for a <see cref="T:App.Metrics.Formatters.InfluxDB.Internal.ILineProtocolPoint"/> which takes care of common properties (<see cref="P:App.Metrics.Formatters.InfluxDB.Internal.LineProtocolPointBase.Measurement"/>, <see cref="P:App.Metrics.Formatters.InfluxDB.Internal.LineProtocolPointBase.Tags"/> and <see cref="P:App.Metrics.Formatters.InfluxDB.Internal.LineProtocolPointBase.UtcTimestamp"/>).
</summary>
</member>
<member name="M:App.Metrics.Formatters.InfluxDB.Internal.LineProtocolPointBase.WriteCommonAsync(System.IO.TextWriter)">
<summary>
Writes the common properties of the line procol points, which includes writing the measurement name and the different tags.
</summary>
<param name="textWriter">Writer to write the values to.</param>
</member>
<member name="M:App.Metrics.Formatters.InfluxDB.Internal.LineProtocolPointBase.WriteTimestampAsync(System.IO.TextWriter)">
<summary>
Writes the timestamp using the most precise unit.
</summary>
<param name="textWriter">Writer to write the values to.</param>
</member>
<member name="T:App.Metrics.Formatters.InfluxDB.Internal.LineProtocolPointMultipleValues">
<summary>
Represents a line procol point with multiple fields.
</summary>
</member>
<member name="T:App.Metrics.Formatters.InfluxDB.Internal.LineProtocolPointSingleValue">
<summary>
Represents a line protocol point with a single field.
</summary>
</member>
<member name="T:App.Metrics.Formatters.InfluxDB.MetricsInfluxDbLineProtocolOptions">
<summary>
Provides programmatic configuration for InfluxDB's LineProtocole format in the App Metrics framework.
</summary>
</member>
<member name="P:App.Metrics.Formatters.InfluxDB.MetricsInfluxDbLineProtocolOutputFormatter.MediaType">
<inheritdoc/>
</member>
<member name="P:App.Metrics.Formatters.InfluxDB.MetricsInfluxDbLineProtocolOutputFormatter.MetricFields">
<inheritdoc />
</member>
<member name="M:App.Metrics.Formatters.InfluxDB.MetricsInfluxDbLineProtocolOutputFormatter.WriteAsync(System.IO.Stream,App.Metrics.MetricsDataValueSource,System.Threading.CancellationToken)">
<inheritdoc/>
</member>
<member name="M:App.Metrics.Formatters.InfluxDB.MetricSnapshotInfluxDbLineProtocolWriter.Write(System.String,System.String,System.String,System.Object,App.Metrics.MetricTags,System.DateTime)">
<inheritdoc />
</member>
<member name="M:App.Metrics.Formatters.InfluxDB.MetricSnapshotInfluxDbLineProtocolWriter.Write(System.String,System.String,System.Collections.Generic.IEnumerable{System.String},System.Collections.Generic.IEnumerable{System.Object},App.Metrics.MetricTags,System.DateTime)">
<inheritdoc />
</member>
<member name="M:App.Metrics.Formatters.InfluxDB.MetricSnapshotInfluxDbLineProtocolWriter.DisposeAsync(System.Boolean)">
<summary>
Releases unmanaged and - optionally - managed resources.
</summary>
<param name="disposing">
<c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only
unmanaged resources.
</param>
</member>
</members>
</doc>

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,102 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>App.Metrics.Reporting.Console</name>
</assembly>
<members>
<member name="T:App.Metrics.MetricsConsoleReporterBuilder">
<summary>
Builder for configuring metrics console reporting using an
<see cref="T:App.Metrics.Builder.IMetricsReportingBuilder" />.
</summary>
</member>
<member name="M:App.Metrics.MetricsConsoleReporterBuilder.ToConsole(App.Metrics.Builder.IMetricsReportingBuilder,App.Metrics.Reporting.Console.MetricsReportingConsoleOptions)">
<summary>
Add the <see cref="T:App.Metrics.Reporting.Console.ConsoleMetricsReporter" /> allowing metrics to be reported to console.
</summary>
<param name="reportingBuilder">
The <see cref="T:App.Metrics.Builder.IMetricsReportingBuilder" /> used to configure metrics reporters.
</param>
<param name="options">The console reporting options to use.</param>
<returns>
An <see cref="T:App.Metrics.IMetricsBuilder" /> that can be used to further configure App Metrics.
</returns>
</member>
<member name="M:App.Metrics.MetricsConsoleReporterBuilder.ToConsole(App.Metrics.Builder.IMetricsReportingBuilder,System.Action{App.Metrics.Reporting.Console.MetricsReportingConsoleOptions})">
<summary>
Add the <see cref="T:App.Metrics.Reporting.Console.ConsoleMetricsReporter" /> allowing metrics to be reported to console.
</summary>
<param name="reportingBuilder">
The <see cref="T:App.Metrics.Builder.IMetricsReportingBuilder" /> used to configure metrics reporters.
</param>
<param name="setupAction">The console reporting options to use.</param>
<returns>
An <see cref="T:App.Metrics.IMetricsBuilder" /> that can be used to further configure App Metrics.
</returns>
</member>
<member name="M:App.Metrics.MetricsConsoleReporterBuilder.ToConsole(App.Metrics.Builder.IMetricsReportingBuilder)">
<summary>
Add the <see cref="T:App.Metrics.Reporting.Console.ConsoleMetricsReporter" /> allowing metrics to be reported to console.
</summary>
<param name="reportingBuilder">
The <see cref="T:App.Metrics.Builder.IMetricsReportingBuilder" /> used to configure metrics reporters.
</param>
<returns>
An <see cref="T:App.Metrics.IMetricsBuilder" /> that can be used to further configure App Metrics.
</returns>
</member>
<member name="M:App.Metrics.MetricsConsoleReporterBuilder.ToConsole(App.Metrics.Builder.IMetricsReportingBuilder,System.TimeSpan)">
<summary>
Add the <see cref="T:App.Metrics.Reporting.Console.ConsoleMetricsReporter" /> allowing metrics to be reported to console.
</summary>
<param name="reportingBuilder">
The <see cref="T:App.Metrics.Builder.IMetricsReportingBuilder" /> used to configure metrics reporters.
</param>
<param name="flushInterval">
The <see cref="T:System.TimeSpan" /> interval used if intended to schedule metrics
reporting.
</param>
<returns>
An <see cref="T:App.Metrics.IMetricsBuilder" /> that can be used to further configure App Metrics.
</returns>
</member>
<member name="P:App.Metrics.Reporting.Console.ConsoleMetricsReporter.Filter">
<inheritdoc />
</member>
<member name="P:App.Metrics.Reporting.Console.ConsoleMetricsReporter.FlushInterval">
<inheritdoc />
</member>
<member name="P:App.Metrics.Reporting.Console.ConsoleMetricsReporter.Formatter">
<inheritdoc />
</member>
<member name="M:App.Metrics.Reporting.Console.ConsoleMetricsReporter.FlushAsync(App.Metrics.MetricsDataValueSource,System.Threading.CancellationToken)">
<inheritdoc />
</member>
<member name="T:App.Metrics.Reporting.Console.MetricsReportingConsoleOptions">
<summary>
Provides programmatic configuration of Console Reporting in the App Metrics framework.
</summary>
</member>
<member name="P:App.Metrics.Reporting.Console.MetricsReportingConsoleOptions.Filter">
<summary>
Gets or sets the <see cref="T:App.Metrics.Filters.IFilterMetrics" /> to use for just this reporter.
</summary>
<value>
The <see cref="T:App.Metrics.Filters.IFilterMetrics" /> to use for this reporter.
</value>
</member>
<member name="P:App.Metrics.Reporting.Console.MetricsReportingConsoleOptions.MetricsOutputFormatter">
<summary>
Gets or sets the <see cref="T:App.Metrics.Formatters.IMetricsOutputFormatter" /> used to write metrics.
</summary>
<value>
The <see cref="T:App.Metrics.Formatters.IMetricsOutputFormatter" /> used to write metrics.
</value>
</member>
<member name="P:App.Metrics.Reporting.Console.MetricsReportingConsoleOptions.FlushInterval">
<summary>
Gets or sets the interval between flushing metrics.
</summary>
</member>
</members>
</doc>

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,247 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>App.Metrics.Reporting.InfluxDB</name>
</assembly>
<members>
<member name="T:App.Metrics.MetricsInfluxDbReporterBuilder">
<summary>
Builder for configuring metrics InfluxDB reporting using an
<see cref="T:App.Metrics.Builder.IMetricsReportingBuilder" />.
</summary>
</member>
<member name="M:App.Metrics.MetricsInfluxDbReporterBuilder.ToInfluxDb(App.Metrics.Builder.IMetricsReportingBuilder,App.Metrics.Reporting.InfluxDB.MetricsReportingInfluxDbOptions)">
<summary>
Add the <see cref="T:App.Metrics.Reporting.InfluxDB.InfluxDbMetricsReporter" /> allowing metrics to be reported to InfluxDB.
</summary>
<param name="metricReporterProviderBuilder">
The <see cref="T:App.Metrics.Builder.IMetricsReportingBuilder" /> used to configure metrics reporters.
</param>
<param name="options">The InfluxDB reporting options to use.</param>
<returns>
An <see cref="T:App.Metrics.IMetricsBuilder" /> that can be used to further configure App Metrics.
</returns>
</member>
<member name="M:App.Metrics.MetricsInfluxDbReporterBuilder.ToInfluxDb(App.Metrics.Builder.IMetricsReportingBuilder,System.Action{App.Metrics.Reporting.InfluxDB.MetricsReportingInfluxDbOptions})">
<summary>
Add the <see cref="T:App.Metrics.Reporting.InfluxDB.InfluxDbMetricsReporter" /> allowing metrics to be reported to InfluxDB.
</summary>
<param name="metricReporterProviderBuilder">
The <see cref="T:App.Metrics.Builder.IMetricsReportingBuilder" /> used to configure metrics reporters.
</param>
<param name="setupAction">The InfluxDB reporting options to use.</param>
<returns>
An <see cref="T:App.Metrics.IMetricsBuilder" /> that can be used to further configure App Metrics.
</returns>
</member>
<member name="M:App.Metrics.MetricsInfluxDbReporterBuilder.ToInfluxDb(App.Metrics.Builder.IMetricsReportingBuilder,System.String,System.String,System.Action{App.Metrics.MetricFields},System.Action{App.Metrics.Formatters.InfluxDB.MetricsInfluxDbLineProtocolOptions})">
<summary>
Add the <see cref="T:App.Metrics.Reporting.InfluxDB.InfluxDbMetricsReporter" /> allowing metrics to be reported to InfluxDB.
</summary>
<param name="metricReporterProviderBuilder">
The <see cref="T:App.Metrics.Builder.IMetricsReportingBuilder" /> used to configure metrics reporters.
</param>
<param name="url">The base url where InfluxDB is hosted.</param>
<param name="database">The InfluxDB where metrics should be flushed.</param>
<param name="fieldsSetup">The metric fields to report as well as thier names.</param>
<param name="lineProtocolOptionsSetup">The setup action to configure the <see cref="T:App.Metrics.Formatters.InfluxDB.MetricsInfluxDbLineProtocolOptions"/> to use.</param>
<returns>
An <see cref="T:App.Metrics.IMetricsBuilder" /> that can be used to further configure App Metrics.
</returns>
</member>
<member name="M:App.Metrics.MetricsInfluxDbReporterBuilder.ToInfluxDb(App.Metrics.Builder.IMetricsReportingBuilder,System.String,System.String,System.TimeSpan,System.Action{App.Metrics.MetricFields},System.Action{App.Metrics.Formatters.InfluxDB.MetricsInfluxDbLineProtocolOptions})">
<summary>
Add the <see cref="T:App.Metrics.Reporting.InfluxDB.InfluxDbMetricsReporter" /> allowing metrics to be reported to InfluxDB.
</summary>
<param name="metricReporterProviderBuilder">
The <see cref="T:App.Metrics.Builder.IMetricsReportingBuilder" /> used to configure metrics reporters.
</param>
<param name="url">The base url where InfluxDB is hosted.</param>
<param name="database">The InfluxDB where metrics should be flushed.</param>
<param name="flushInterval">
The <see cref="T:System.TimeSpan" /> interval used if intended to schedule metrics
reporting.
</param>
<param name="fieldsSetup">The metric fields to report as well as thier names.</param>
<param name="lineProtocolOptionsSetup">The setup action to configure the <see cref="T:App.Metrics.Formatters.InfluxDB.MetricsInfluxDbLineProtocolOptions"/> to use.</param>
<returns>
An <see cref="T:App.Metrics.IMetricsBuilder" /> that can be used to further configure App Metrics.
</returns>
</member>
<member name="P:App.Metrics.Reporting.InfluxDB.InfluxDbMetricsReporter.Filter">
<inheritdoc />
</member>
<member name="P:App.Metrics.Reporting.InfluxDB.InfluxDbMetricsReporter.FlushInterval">
<inheritdoc />
</member>
<member name="P:App.Metrics.Reporting.InfluxDB.InfluxDbMetricsReporter.Formatter">
<inheritdoc />
</member>
<member name="M:App.Metrics.Reporting.InfluxDB.InfluxDbMetricsReporter.FlushAsync(App.Metrics.MetricsDataValueSource,System.Threading.CancellationToken)">
<inheritdoc />
</member>
<member name="T:App.Metrics.Reporting.InfluxDB.InfluxDbOptions">
<summary>
Provides programmatic configuration for InfluxDB in the App Metrics framework.
</summary>
</member>
<member name="P:App.Metrics.Reporting.InfluxDB.InfluxDbOptions.Consistenency">
<summary>
Gets or sets the number of InfluxDB notes that must confirm the write
</summary>
<value>
The InfluxDB node write consistency.
</value>
</member>
<member name="P:App.Metrics.Reporting.InfluxDB.InfluxDbOptions.Endpoint">
<summary>
Gets formatted endpoint for writes to InfluxDB
</summary>
<value>
The InfluxDB endpoint for writes.
</value>
</member>
<member name="P:App.Metrics.Reporting.InfluxDB.InfluxDbOptions.BaseUri">
<summary>
Gets or sets the base URI of the InfluxDB API.
</summary>
<value>
The base URI of the InfluxDB API where metrics are flushed.
</value>
</member>
<member name="P:App.Metrics.Reporting.InfluxDB.InfluxDbOptions.Database">
<summary>
Gets or sets the InfluxDB database name used to report metrics.
</summary>
<value>
The InfluxDB database name where metrics are flushed.
</value>
</member>
<member name="P:App.Metrics.Reporting.InfluxDB.InfluxDbOptions.Password">
<summary>
Gets or sets the InfluxDB database password.
</summary>
<value>
The InfluxDB database password.
</value>
</member>
<member name="P:App.Metrics.Reporting.InfluxDB.InfluxDbOptions.RetentionPolicy">
<summary>
Gets or sets the InfluxDB database's retention policy to target.
</summary>
<value>
The InfluxDB database's retention policy to target.
</value>
</member>
<member name="P:App.Metrics.Reporting.InfluxDB.InfluxDbOptions.UserName">
<summary>
Gets or sets the InfluxDB database username.
</summary>
<value>
The InfluxDB database username.
</value>
</member>
<member name="P:App.Metrics.Reporting.InfluxDB.InfluxDbOptions.CreateDataBaseIfNotExists">
<summary>
Gets or sets a value indicating whether or not to attempt to create the specified database if it does not exist
</summary>
<value>
The flag indicating whether or not to create the specifried database if it does not exist
</value>
</member>
<member name="P:App.Metrics.Reporting.InfluxDB.InfluxDbOptions.CreateDatabaseRetentionPolicy">
<summary>
Gets or sets the InfluxDB retention policy options used during an attempt to create the specified database if it does not exist.
</summary>
<value>
The InfluxDB retention policy options <see cref="T:App.Metrics.Reporting.InfluxDB.RetentionPolicyOptions"/>.
</value>
</member>
<member name="T:App.Metrics.Reporting.InfluxDB.MetricsReportingInfluxDbOptions">
<summary>
Provides programmatic configuration for InfluxDB Reporting in the App Metrics framework.
</summary>
</member>
<member name="P:App.Metrics.Reporting.InfluxDB.MetricsReportingInfluxDbOptions.Filter">
<summary>
Gets or sets the <see cref="T:App.Metrics.Filters.IFilterMetrics" /> to use for just this reporter.
</summary>
<value>
The <see cref="T:App.Metrics.Filters.IFilterMetrics" /> to use for this reporter.
</value>
</member>
<member name="P:App.Metrics.Reporting.InfluxDB.MetricsReportingInfluxDbOptions.HttpPolicy">
<summary>
Gets or sets the HTTP policy settings which allows circuit breaker configuration to be adjusted
</summary>
<value>
The HTTP policy.
</value>
</member>
<member name="P:App.Metrics.Reporting.InfluxDB.MetricsReportingInfluxDbOptions.InfluxDb">
<summary>
Gets or sets the available options for InfluxDB connectivity.
</summary>
<value>
The <see cref="T:App.Metrics.Reporting.InfluxDB.InfluxDbOptions" />.
</value>
</member>
<member name="P:App.Metrics.Reporting.InfluxDB.MetricsReportingInfluxDbOptions.MetricsOutputFormatter">
<summary>
Gets or sets the <see cref="T:App.Metrics.Formatters.IMetricsOutputFormatter" /> used to write metrics.
</summary>
<value>
The <see cref="T:App.Metrics.Formatters.IMetricsOutputFormatter" /> used to write metrics.
</value>
</member>
<member name="P:App.Metrics.Reporting.InfluxDB.MetricsReportingInfluxDbOptions.FlushInterval">
<summary>
Gets or sets the flush metrics interval
</summary>
<remarks>
This <see cref="T:System.TimeSpan" /> will apply to all configured reporters unless overriden by a specific reporters
options.
</remarks>
<value>
The <see cref="T:System.TimeSpan" /> to wait between reporting metrics
</value>
</member>
<member name="T:App.Metrics.Reporting.InfluxDB.RetentionPolicyOptions">
<summary>
Single retention policy associated with the created database. If you do not specify one of the properties, the relevant behavior defaults to the autogen retention policy settings.
</summary>
</member>
<member name="P:App.Metrics.Reporting.InfluxDB.RetentionPolicyOptions.Duration">
<summary>
Gets or sets the Duration determines how long InfluxDB keeps the data.
</summary>
<value>
The retention policy duration. The minimum duration for a retention policy is one hour.
</value>
</member>
<member name="P:App.Metrics.Reporting.InfluxDB.RetentionPolicyOptions.Name">
<summary>
Gets or sets the Name determines policy name.
</summary>
<value>
The retention policy name.
</value>
</member>
<member name="P:App.Metrics.Reporting.InfluxDB.RetentionPolicyOptions.Replication">
<summary>
Gets or sets the Replication determines how many independent copies of each point are stored in the cluster. Replication factors do not serve a purpose with single node instances.
</summary>
<value>
The retention policy replication. Number of data nodes.
</value>
</member>
<member name="P:App.Metrics.Reporting.InfluxDB.RetentionPolicyOptions.ShardDuration">
<summary>
Gets or sets the ShardDuration determines the time range covered by a shard group.
</summary>
<value>
The retention policy shard duration. The minimum allowable SHARD GROUP DURATION is 1h
</value>
</member>
</members>
</doc>

Binary file not shown.

View File

@ -0,0 +1,302 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>BetterFolderBrowser</name>
</assembly>
<members>
<member name="T:WK.Libraries.BetterFolderBrowserNS.BetterFolderBrowser">
<summary>
A Windows Forms component that enhances the standard folder-browsing experience.
</summary>
</member>
<member name="F:WK.Libraries.BetterFolderBrowserNS.BetterFolderBrowser.editorService">
<summary>
Used in creating a <see cref="T:System.Drawing.Design.UITypeEditor"/> service
for extending its usage into the Properties window.
Developers can use it where possible.
</summary>
</member>
<member name="P:WK.Libraries.BetterFolderBrowserNS.BetterFolderBrowser.Title">
<summary>
Gets or sets the folder dialog box title.
</summary>
</member>
<member name="P:WK.Libraries.BetterFolderBrowserNS.BetterFolderBrowser.RootFolder">
<summary>
Gets or sets the root folder where the browsing starts from.
</summary>
</member>
<member name="P:WK.Libraries.BetterFolderBrowserNS.BetterFolderBrowser.Multiselect">
<summary>
Gets or sets a value indicating whether the
dialog box allows multiple folders to be selected.
</summary>
</member>
<member name="P:WK.Libraries.BetterFolderBrowserNS.BetterFolderBrowser.SelectedPath">
<summary>
Gets the folder-path selected by the user.
</summary>
</member>
<member name="P:WK.Libraries.BetterFolderBrowserNS.BetterFolderBrowser.SelectedPaths">
<summary>
Gets the list of folder-paths selected by the user.
</summary>
</member>
<member name="P:WK.Libraries.BetterFolderBrowserNS.BetterFolderBrowser.SelectedFolder">
<summary>
Variant of <see cref="P:WK.Libraries.BetterFolderBrowserNS.BetterFolderBrowser.SelectedPath"/> property.
Gets the folder-path selected by the user.
</summary>
</member>
<member name="P:WK.Libraries.BetterFolderBrowserNS.BetterFolderBrowser.SelectedFolders">
<summary>
Variant of <see cref="P:WK.Libraries.BetterFolderBrowserNS.BetterFolderBrowser.SelectedPaths"/> property.
Gets the list of folder-paths selected by the user.
</summary>
</member>
<member name="M:WK.Libraries.BetterFolderBrowserNS.BetterFolderBrowser.ShowDialog">
<summary>
Runs a common dialog box with a default owner.
</summary>
</member>
<member name="M:WK.Libraries.BetterFolderBrowserNS.BetterFolderBrowser.ShowDialog(System.Windows.Forms.IWin32Window)">
<summary>
Runs a common dialog box with the specified owner.
</summary>
<param name="owner">
Any object that implements <see cref="T:System.Windows.Forms.IWin32Window"/> that represents
the top-level window that will own the modal dialog box.
</param>
</member>
<member name="M:WK.Libraries.BetterFolderBrowserNS.BetterFolderBrowser.RunDialog(System.IntPtr)">
<summary>
Specifies a common dialog box.
</summary>
<param name="hwndOwner">
Any object that implements <see cref="T:System.Windows.Forms.IWin32Window"/> that represents
the top-level window that will own the modal dialog box.
</param>
<returns></returns>
</member>
<member name="M:WK.Libraries.BetterFolderBrowserNS.BetterFolderBrowser.Reset">
<summary>
Resets all properties to their default values.
</summary>
</member>
<member name="F:WK.Libraries.BetterFolderBrowserNS.BetterFolderBrowser.components">
<summary>
Required designer variable.
</summary>
</member>
<member name="M:WK.Libraries.BetterFolderBrowserNS.BetterFolderBrowser.Dispose(System.Boolean)">
<summary>
Clean up any resources being used.
</summary>
<param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
</member>
<member name="M:WK.Libraries.BetterFolderBrowserNS.BetterFolderBrowser.InitializeComponent">
<summary>
Required method for Designer support - do not modify
the contents of this method with the code editor.
</summary>
</member>
<member name="T:WK.Libraries.BetterFolderBrowserNS.Editors.SelectedPathEditor">
<summary>
Provides a custom <see cref="T:WK.Libraries.BetterFolderBrowserNS.BetterFolderBrowser"/> UI Editor
for browsing through folders via the Properties window.
This allows for the selection of a single folder.
It's designed as a replacement for <see cref="T:System.Windows.Forms.FolderBrowserDialog"/>'s
<see cref="T:System.Drawing.Design.UITypeEditor"/>.
<para>
Example:
<code>[Editor(typeof(BetterFolderBrowserPathEditor), typeof(UITypeEditor))]</code>
</para>
</summary>
</member>
<member name="T:WK.Libraries.BetterFolderBrowserNS.Editors.SelectedPathsEditor">
<summary>
Provides a custom <see cref="T:WK.Libraries.BetterFolderBrowserNS.BetterFolderBrowser"/> UI Editor
for browsing through folders via the Properties window.
This allows for the selection of a single folder.
It's designed as a replacement for <see cref="T:System.Windows.Forms.FolderBrowserDialog"/>'s
<see cref="T:System.Drawing.Design.UITypeEditor"/>.
<para>
Example:
<code>[Editor(typeof(BetterFolderBrowserPathsEditor), typeof(UITypeEditor))]</code>
</para>
</summary>
</member>
<member name="T:WK.Libraries.BetterFolderBrowserNS.Helpers.Reflector">
<summary>
This class is from the Front-End for Dosbox and is
used to present a 'vista' dialog box to select folders.
http://code.google.com/p/fed/
For example:
----------------------------------------------
var r = new Reflector("System.Windows.Forms");
</summary>
</member>
<member name="M:WK.Libraries.BetterFolderBrowserNS.Helpers.Reflector.#ctor(System.String)">
<summary>
Creates a new <see cref="T:WK.Libraries.BetterFolderBrowserNS.Helpers.Reflector"/> class object.
</summary>
<param name="ns">The namespace containing types to be used.</param>
</member>
<member name="M:WK.Libraries.BetterFolderBrowserNS.Helpers.Reflector.#ctor(System.String,System.String)">
<summary>
Creates a new <see cref="T:WK.Libraries.BetterFolderBrowserNS.Helpers.Reflector"/> class object.
</summary>
<param name="an__1">
A specific assembly name (used if the assembly name does not tie exactly with the namespace)
</param>
<param name="ns">The namespace containing types to be used.</param>
</member>
<member name="M:WK.Libraries.BetterFolderBrowserNS.Helpers.Reflector.GetTypo(System.String)">
<summary>
Return a Type instance for a type 'typeName'.
</summary>
<param name="typeName">The name of the type.</param>
<returns>A type instance.</returns>
</member>
<member name="M:WK.Libraries.BetterFolderBrowserNS.Helpers.Reflector.New(System.String,System.Object[])">
<summary>
Create a new object of a named type passing along any params.
</summary>
<param name="name">The name of the type to create.</param>
<param name="parameters">An array of passed parameters.</param>
<returns>An instantiated type.</returns>
</member>
<member name="M:WK.Libraries.BetterFolderBrowserNS.Helpers.Reflector.Call(System.Object,System.String,System.Object[])">
<summary>
Calls method 'func' on object 'obj' passing parameters 'parameters'.
</summary>
<param name="obj">The object on which to excute function 'func'.</param>
<param name="func">The function to execute.</param>
<param name="parameters">The parameters to pass to function 'func'.</param>
<returns>The result of the function invocation.</returns>
</member>
<member name="M:WK.Libraries.BetterFolderBrowserNS.Helpers.Reflector.Call2(System.Object,System.String,System.Object[])">
<summary>
Calls method 'func' on object 'obj' passing parameters 'parameters'.
</summary>
<param name="obj">The object on which to excute function 'func'.</param>
<param name="func">The function to execute.</param>
<param name="parameters">The parameters to pass to function 'func'.</param>
<returns>The result of the function invocation.</returns>
</member>
<member name="M:WK.Libraries.BetterFolderBrowserNS.Helpers.Reflector.CallAs(System.Type,System.Object,System.String,System.Object[])">
<summary>
Calls method 'func' on object 'obj' which is of type 'type' passing parameters 'parameters'.
</summary>
<param name="type">The type of 'obj'.</param>
<param name="obj">The object on which to excute function 'func'.</param>
<param name="func">The function to execute.</param>
<param name="parameters">The parameters to pass to function 'func'.</param>
<returns>The result of the function invocation.</returns>
</member>
<member name="M:WK.Libraries.BetterFolderBrowserNS.Helpers.Reflector.CallAs2(System.Type,System.Object,System.String,System.Object[])">
<summary>
Calls method 'func' on object 'obj' which is of type 'type' passing parameters 'parameters'.
</summary>
<param name="type">The type of 'obj'.</param>
<param name="obj">The object on which to excute function 'func'.</param>
<param name="func">The function to execute.</param>
<param name="parameters">The parameters to pass to function 'func'.</param>
<returns>The result of the function invocation.</returns>
</member>
<member name="M:WK.Libraries.BetterFolderBrowserNS.Helpers.Reflector.Get(System.Object,System.String)">
<summary>
Returns the value of property 'prop' of object 'obj'.
</summary>
<param name="obj">The object containing 'prop'.</param>
<param name="prop">The property name.</param>
<returns>The property value.</returns>
</member>
<member name="M:WK.Libraries.BetterFolderBrowserNS.Helpers.Reflector.GetAs(System.Type,System.Object,System.String)">
<summary>
Returns the value of property 'prop' of object 'obj' which has type 'type'.
</summary>
<param name="type">The type of 'obj'.</param>
<param name="obj">The object containing 'prop'.</param>
<param name="prop">The property name.</param>
<returns>The property value.</returns>
</member>
<member name="M:WK.Libraries.BetterFolderBrowserNS.Helpers.Reflector.GetEnum(System.String,System.String)">
<summary>
Returns an enum value.
</summary>
<param name="typeName">The name of enum type.</param>
<param name="name">The name of the value.</param>
<returns>The enum value.</returns>
</member>
<member name="T:WK.Libraries.BetterFolderBrowserNS.Helpers.BetterFolderBrowserDialog">
<summary>
Wraps System.Windows.Forms.OpenFileDialog to make it present
a vista-style dialog.
</summary>
</member>
<member name="M:WK.Libraries.BetterFolderBrowserNS.Helpers.BetterFolderBrowserDialog.#ctor">
<summary>
Default constructor.
</summary>
</member>
<member name="P:WK.Libraries.BetterFolderBrowserNS.Helpers.BetterFolderBrowserDialog.AllowMultiselect">
<summary>
Gets/Sets a value indicating whether to allow multi-selection of folders.
</summary>
<remarks></remarks>
</member>
<member name="P:WK.Libraries.BetterFolderBrowserNS.Helpers.BetterFolderBrowserDialog.FileNames">
<summary>
Gets the list of selected folders as filenames.
</summary>
</member>
<member name="P:WK.Libraries.BetterFolderBrowserNS.Helpers.BetterFolderBrowserDialog.InitialDirectory">
<summary>
Gets/Sets the initial folder to be selected. A null value selects the current directory.
</summary>
</member>
<member name="P:WK.Libraries.BetterFolderBrowserNS.Helpers.BetterFolderBrowserDialog.Title">
<summary>
Gets/Sets the title to show in the dialog.
</summary>
</member>
<member name="P:WK.Libraries.BetterFolderBrowserNS.Helpers.BetterFolderBrowserDialog.FileName">
<summary>
Gets the selected folder.
</summary>
</member>
<member name="M:WK.Libraries.BetterFolderBrowserNS.Helpers.BetterFolderBrowserDialog.ShowDialog">
<summary>
Shows the dialog.
</summary>
<returns>True if the user presses OK else false.</returns>
</member>
<member name="M:WK.Libraries.BetterFolderBrowserNS.Helpers.BetterFolderBrowserDialog.ShowDialog(System.IntPtr)">
<summary>
Shows the dialog.
</summary>
<param name="hWndOwner">Handle of the control to be parent.</param>
<returns>True if the user presses OK else false.</returns>
</member>
<member name="T:WK.Libraries.BetterFolderBrowserNS.Helpers.WindowWrapper">
<summary>
Creates IWin32Window around an IntPtr.
</summary>
</member>
<member name="P:WK.Libraries.BetterFolderBrowserNS.Helpers.WindowWrapper.Handle">
<summary>
Original pointer.
</summary>
</member>
<member name="M:WK.Libraries.BetterFolderBrowserNS.Helpers.WindowWrapper.#ctor(System.IntPtr)">
<summary>
Provides a wrapper for <see cref="T:System.Windows.Forms.IWin32Window"/>.
</summary>
<param name="handle">Handle to wrap.</param>
</member>
</members>
</doc>

Binary file not shown.

View File

@ -0,0 +1,140 @@
[CONFIG]
BaudRate=9600
DataBits=8
StopBits=1
G_PARITY=ÎÞ
[COMMAND]
Cmd1=45
Cmd2=5
Cmd3=550
Cmd4=500
Cmd5=450
Cmd6=400
Cmd7=222
Cmd8=450
Cmd9=400
Cmd10=350
Cmd11=300
Cmd12=100
Cmd13=0
Cmd14=0
Cmd15=0
Cmd16=0
Cmd17=0
Cmd18=0
Cmd19=0
Cmd20=0
[DESCRIPTION]
Desc1=0
Desc2=0
Desc3=0
Desc4=0
Desc5=0
Desc6=0
Desc7=0
Desc8=0
[COMPARM]
CParm1=0
CParm2=0
CParm3=0
CParm4=0
CParm5=0
CParm6=0
CParm7=0
CParm8=0
CParm9=0
CParm10=0
CParm11=0
CParm12=0
CParm13=0
CParm14=0
CParm15=0
CParm16=0
CParm17=0
CParm18=0
CParm19=0
CParm20=0
CParm21=0
CParm22=0
CParm23=0
CParm24=0
CParm25=0
CParm26=0
CParm27=0
CParm28=0
CParm29=0
CParm30=0
[SETPARM]
SParm1=DB-2
SParm2=22062905
SParm3=00
SParm4=C5
SParm5=0
SParm6=0
SParm7=123
SParm8=0001
SParm9=0001
[PRESSPARM]
PParm1=1
PParm2=B0000022280
PParm3=112233445566
PParm4=0
PParm5=S0000022269
PParm6=112233445566
PParm7=2
PParm8=1
PParm9=9
PParm10=0
PParm11=AT+CZ
PParm12=True
PParm13=False
PParm14=112233445566778899
PParm15=1
PParm16=0
PParm17=0
PParm18=0
PParm19=0
PParm20=0
PParm21=0
PParm22=0
PParm23=0
PParm24=0
PParm25=0
PParm26=0
PParm27=0
PParm28=0
PParm29=0
PParm30=0
PParm31=0
PParm32=0
PParm33=0
PParm34=0
PParm35=0
PParm36=0
PParm37=0
PParm38=0
PParm39=0
PParm40=0
PParm41=0
PParm42=0
PParm43=0
PParm44=0
PParm45=0
PParm46=0
PParm47=0
PParm48=0
PParm49=0
[DPARM]
DParm1=0
DParm2=0
DParm3=0
DParm4=0
DParm5=0
DParm6=5

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,403 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>Microsoft.Bcl.AsyncInterfaces</name>
</assembly>
<members>
<member name="T:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1">
<summary>Provides the core logic for implementing a manual-reset <see cref="T:System.Threading.Tasks.Sources.IValueTaskSource"/> or <see cref="T:System.Threading.Tasks.Sources.IValueTaskSource`1"/>.</summary>
<typeparam name="TResult"></typeparam>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._continuation">
<summary>
The callback to invoke when the operation completes if <see cref="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.OnCompleted(System.Action{System.Object},System.Object,System.Int16,System.Threading.Tasks.Sources.ValueTaskSourceOnCompletedFlags)"/> was called before the operation completed,
or <see cref="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCoreShared.s_sentinel"/> if the operation completed before a callback was supplied,
or null if a callback hasn't yet been provided and the operation hasn't yet completed.
</summary>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._continuationState">
<summary>State to pass to <see cref="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._continuation"/>.</summary>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._executionContext">
<summary><see cref="T:System.Threading.ExecutionContext"/> to flow to the callback, or null if no flowing is required.</summary>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._capturedContext">
<summary>
A "captured" <see cref="T:System.Threading.SynchronizationContext"/> or <see cref="T:System.Threading.Tasks.TaskScheduler"/> with which to invoke the callback,
or null if no special context is required.
</summary>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._completed">
<summary>Whether the current operation has completed.</summary>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._result">
<summary>The result with which the operation succeeded, or the default value if it hasn't yet completed or failed.</summary>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._error">
<summary>The exception with which the operation failed, or null if it hasn't yet completed or completed successfully.</summary>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._version">
<summary>The current version of this value, used to help prevent misuse.</summary>
</member>
<member name="P:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.RunContinuationsAsynchronously">
<summary>Gets or sets whether to force continuations to run asynchronously.</summary>
<remarks>Continuations may run asynchronously if this is false, but they'll never run synchronously if this is true.</remarks>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.Reset">
<summary>Resets to prepare for the next operation.</summary>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.SetResult(`0)">
<summary>Completes with a successful result.</summary>
<param name="result">The result.</param>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.SetException(System.Exception)">
<summary>Complets with an error.</summary>
<param name="error"></param>
</member>
<member name="P:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.Version">
<summary>Gets the operation version.</summary>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.GetStatus(System.Int16)">
<summary>Gets the status of the operation.</summary>
<param name="token">Opaque value that was provided to the <see cref="T:System.Threading.Tasks.ValueTask"/>'s constructor.</param>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.GetResult(System.Int16)">
<summary>Gets the result of the operation.</summary>
<param name="token">Opaque value that was provided to the <see cref="T:System.Threading.Tasks.ValueTask"/>'s constructor.</param>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.OnCompleted(System.Action{System.Object},System.Object,System.Int16,System.Threading.Tasks.Sources.ValueTaskSourceOnCompletedFlags)">
<summary>Schedules the continuation action for this operation.</summary>
<param name="continuation">The continuation to invoke when the operation has completed.</param>
<param name="state">The state object to pass to <paramref name="continuation"/> when it's invoked.</param>
<param name="token">Opaque value that was provided to the <see cref="T:System.Threading.Tasks.ValueTask"/>'s constructor.</param>
<param name="flags">The flags describing the behavior of the continuation.</param>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.ValidateToken(System.Int16)">
<summary>Ensures that the specified token matches the current version.</summary>
<param name="token">The token supplied by <see cref="T:System.Threading.Tasks.ValueTask"/>.</param>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.SignalCompletion">
<summary>Signals that the operation has completed. Invoked after the result or error has been set.</summary>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.InvokeContinuation">
<summary>
Invokes the continuation with the appropriate captured context / scheduler.
This assumes that if <see cref="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._executionContext"/> is not null we're already
running within that <see cref="T:System.Threading.ExecutionContext"/>.
</summary>
</member>
<member name="T:System.Threading.Tasks.TaskAsyncEnumerableExtensions">
<summary>Provides a set of static methods for configuring <see cref="T:System.Threading.Tasks.Task"/>-related behaviors on asynchronous enumerables and disposables.</summary>
</member>
<member name="M:System.Threading.Tasks.TaskAsyncEnumerableExtensions.ConfigureAwait(System.IAsyncDisposable,System.Boolean)">
<summary>Configures how awaits on the tasks returned from an async disposable will be performed.</summary>
<param name="source">The source async disposable.</param>
<param name="continueOnCapturedContext">Whether to capture and marshal back to the current context.</param>
<returns>The configured async disposable.</returns>
</member>
<member name="M:System.Threading.Tasks.TaskAsyncEnumerableExtensions.ConfigureAwait``1(System.Collections.Generic.IAsyncEnumerable{``0},System.Boolean)">
<summary>Configures how awaits on the tasks returned from an async iteration will be performed.</summary>
<typeparam name="T">The type of the objects being iterated.</typeparam>
<param name="source">The source enumerable being iterated.</param>
<param name="continueOnCapturedContext">Whether to capture and marshal back to the current context.</param>
<returns>The configured enumerable.</returns>
</member>
<member name="M:System.Threading.Tasks.TaskAsyncEnumerableExtensions.WithCancellation``1(System.Collections.Generic.IAsyncEnumerable{``0},System.Threading.CancellationToken)">
<summary>Sets the <see cref="T:System.Threading.CancellationToken"/> to be passed to <see cref="M:System.Collections.Generic.IAsyncEnumerable`1.GetAsyncEnumerator(System.Threading.CancellationToken)"/> when iterating.</summary>
<typeparam name="T">The type of the objects being iterated.</typeparam>
<param name="source">The source enumerable being iterated.</param>
<param name="cancellationToken">The <see cref="T:System.Threading.CancellationToken"/> to use.</param>
<returns>The configured enumerable.</returns>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder">
<summary>Represents a builder for asynchronous iterators.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder.Create">
<summary>Creates an instance of the <see cref="T:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder"/> struct.</summary>
<returns>The initialized instance.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder.MoveNext``1(``0@)">
<summary>Invokes <see cref="M:System.Runtime.CompilerServices.IAsyncStateMachine.MoveNext"/> on the state machine while guarding the <see cref="T:System.Threading.ExecutionContext"/>.</summary>
<typeparam name="TStateMachine">The type of the state machine.</typeparam>
<param name="stateMachine">The state machine instance, passed by reference.</param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder.AwaitOnCompleted``2(``0@,``1@)">
<summary>Schedules the state machine to proceed to the next action when the specified awaiter completes.</summary>
<typeparam name="TAwaiter">The type of the awaiter.</typeparam>
<typeparam name="TStateMachine">The type of the state machine.</typeparam>
<param name="awaiter">The awaiter.</param>
<param name="stateMachine">The state machine.</param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder.AwaitUnsafeOnCompleted``2(``0@,``1@)">
<summary>Schedules the state machine to proceed to the next action when the specified awaiter completes.</summary>
<typeparam name="TAwaiter">The type of the awaiter.</typeparam>
<typeparam name="TStateMachine">The type of the state machine.</typeparam>
<param name="awaiter">The awaiter.</param>
<param name="stateMachine">The state machine.</param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder.Complete">
<summary>Marks iteration as being completed, whether successfully or otherwise.</summary>
</member>
<member name="P:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder.ObjectIdForDebugger">
<summary>Gets an object that may be used to uniquely identify this builder to the debugger.</summary>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncIteratorStateMachineAttribute">
<summary>Indicates whether a method is an asynchronous iterator.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncIteratorStateMachineAttribute.#ctor(System.Type)">
<summary>Initializes a new instance of the <see cref="T:System.Runtime.CompilerServices.AsyncIteratorStateMachineAttribute"/> class.</summary>
<param name="stateMachineType">The type object for the underlying state machine type that's used to implement a state machine method.</param>
</member>
<member name="T:System.Runtime.CompilerServices.ConfiguredAsyncDisposable">
<summary>Provides a type that can be used to configure how awaits on an <see cref="T:System.IAsyncDisposable"/> are performed.</summary>
</member>
<member name="T:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1">
<summary>Provides an awaitable async enumerable that enables cancelable iteration and configured awaits.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.ConfigureAwait(System.Boolean)">
<summary>Configures how awaits on the tasks returned from an async iteration will be performed.</summary>
<param name="continueOnCapturedContext">Whether to capture and marshal back to the current context.</param>
<returns>The configured enumerable.</returns>
<remarks>This will replace any previous value set by <see cref="M:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.ConfigureAwait(System.Boolean)"/> for this iteration.</remarks>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.WithCancellation(System.Threading.CancellationToken)">
<summary>Sets the <see cref="T:System.Threading.CancellationToken"/> to be passed to <see cref="M:System.Collections.Generic.IAsyncEnumerable`1.GetAsyncEnumerator(System.Threading.CancellationToken)"/> when iterating.</summary>
<param name="cancellationToken">The <see cref="T:System.Threading.CancellationToken"/> to use.</param>
<returns>The configured enumerable.</returns>
<remarks>This will replace any previous <see cref="T:System.Threading.CancellationToken"/> set by <see cref="M:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.WithCancellation(System.Threading.CancellationToken)"/> for this iteration.</remarks>
</member>
<member name="T:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.Enumerator">
<summary>Provides an awaitable async enumerator that enables cancelable iteration and configured awaits.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.Enumerator.MoveNextAsync">
<summary>Advances the enumerator asynchronously to the next element of the collection.</summary>
<returns>
A <see cref="T:System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1"/> that will complete with a result of <c>true</c>
if the enumerator was successfully advanced to the next element, or <c>false</c> if the enumerator has
passed the end of the collection.
</returns>
</member>
<member name="P:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.Enumerator.Current">
<summary>Gets the element in the collection at the current position of the enumerator.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.Enumerator.DisposeAsync">
<summary>
Performs application-defined tasks associated with freeing, releasing, or
resetting unmanaged resources asynchronously.
</summary>
</member>
<member name="T:System.Runtime.InteropServices.LibraryImportAttribute">
<summary>
Attribute used to indicate a source generator should create a function for marshalling
arguments instead of relying on the runtime to generate an equivalent marshalling function at run-time.
</summary>
<remarks>
This attribute is meaningless if the source generator associated with it is not enabled.
The current built-in source generator only supports C# and only supplies an implementation when
applied to static, partial, non-generic methods.
</remarks>
</member>
<member name="M:System.Runtime.InteropServices.LibraryImportAttribute.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:System.Runtime.InteropServices.LibraryImportAttribute"/>.
</summary>
<param name="libraryName">Name of the library containing the import.</param>
</member>
<member name="P:System.Runtime.InteropServices.LibraryImportAttribute.LibraryName">
<summary>
Gets the name of the library containing the import.
</summary>
</member>
<member name="P:System.Runtime.InteropServices.LibraryImportAttribute.EntryPoint">
<summary>
Gets or sets the name of the entry point to be called.
</summary>
</member>
<member name="P:System.Runtime.InteropServices.LibraryImportAttribute.StringMarshalling">
<summary>
Gets or sets how to marshal string arguments to the method.
</summary>
<remarks>
If this field is set to a value other than <see cref="F:System.Runtime.InteropServices.StringMarshalling.Custom" />,
<see cref="P:System.Runtime.InteropServices.LibraryImportAttribute.StringMarshallingCustomType" /> must not be specified.
</remarks>
</member>
<member name="P:System.Runtime.InteropServices.LibraryImportAttribute.StringMarshallingCustomType">
<summary>
Gets or sets the <see cref="T:System.Type"/> used to control how string arguments to the method are marshalled.
</summary>
<remarks>
If this field is specified, <see cref="P:System.Runtime.InteropServices.LibraryImportAttribute.StringMarshalling" /> must not be specified
or must be set to <see cref="F:System.Runtime.InteropServices.StringMarshalling.Custom" />.
</remarks>
</member>
<member name="P:System.Runtime.InteropServices.LibraryImportAttribute.SetLastError">
<summary>
Gets or sets whether the callee sets an error (SetLastError on Windows or errno
on other platforms) before returning from the attributed method.
</summary>
</member>
<member name="T:System.Runtime.InteropServices.StringMarshalling">
<summary>
Specifies how strings should be marshalled for generated p/invokes
</summary>
</member>
<member name="F:System.Runtime.InteropServices.StringMarshalling.Custom">
<summary>
Indicates the user is suppling a specific marshaller in <see cref="P:System.Runtime.InteropServices.LibraryImportAttribute.StringMarshallingCustomType"/>.
</summary>
</member>
<member name="F:System.Runtime.InteropServices.StringMarshalling.Utf8">
<summary>
Use the platform-provided UTF-8 marshaller.
</summary>
</member>
<member name="F:System.Runtime.InteropServices.StringMarshalling.Utf16">
<summary>
Use the platform-provided UTF-16 marshaller.
</summary>
</member>
<member name="T:System.Collections.Generic.IAsyncEnumerable`1">
<summary>Exposes an enumerator that provides asynchronous iteration over values of a specified type.</summary>
<typeparam name="T">The type of values to enumerate.</typeparam>
</member>
<member name="M:System.Collections.Generic.IAsyncEnumerable`1.GetAsyncEnumerator(System.Threading.CancellationToken)">
<summary>Returns an enumerator that iterates asynchronously through the collection.</summary>
<param name="cancellationToken">A <see cref="T:System.Threading.CancellationToken"/> that may be used to cancel the asynchronous iteration.</param>
<returns>An enumerator that can be used to iterate asynchronously through the collection.</returns>
</member>
<member name="T:System.Collections.Generic.IAsyncEnumerator`1">
<summary>Supports a simple asynchronous iteration over a generic collection.</summary>
<typeparam name="T">The type of objects to enumerate.</typeparam>
</member>
<member name="M:System.Collections.Generic.IAsyncEnumerator`1.MoveNextAsync">
<summary>Advances the enumerator asynchronously to the next element of the collection.</summary>
<returns>
A <see cref="T:System.Threading.Tasks.ValueTask`1"/> that will complete with a result of <c>true</c> if the enumerator
was successfully advanced to the next element, or <c>false</c> if the enumerator has passed the end
of the collection.
</returns>
</member>
<member name="P:System.Collections.Generic.IAsyncEnumerator`1.Current">
<summary>Gets the element in the collection at the current position of the enumerator.</summary>
</member>
<member name="T:System.IAsyncDisposable">
<summary>Provides a mechanism for releasing unmanaged resources asynchronously.</summary>
</member>
<member name="M:System.IAsyncDisposable.DisposeAsync">
<summary>
Performs application-defined tasks associated with freeing, releasing, or
resetting unmanaged resources asynchronously.
</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.AllowNullAttribute">
<summary>Specifies that null is allowed as an input even if the corresponding type disallows it.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.DisallowNullAttribute">
<summary>Specifies that null is disallowed as an input even if the corresponding type allows it.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.MaybeNullAttribute">
<summary>Specifies that an output may be null even if the corresponding type disallows it.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.NotNullAttribute">
<summary>Specifies that an output will not be null even if the corresponding type allows it. Specifies that an input argument was not null when the call returns.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute">
<summary>Specifies that when a method returns <see cref="P:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute.ReturnValue"/>, the parameter may be null even if the corresponding type disallows it.</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute.#ctor(System.Boolean)">
<summary>Initializes the attribute with the specified return value condition.</summary>
<param name="returnValue">
The return value condition. If the method returns this value, the associated parameter may be null.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute.ReturnValue">
<summary>Gets the return value condition.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute">
<summary>Specifies that when a method returns <see cref="P:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute.ReturnValue"/>, the parameter will not be null even if the corresponding type allows it.</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute.#ctor(System.Boolean)">
<summary>Initializes the attribute with the specified return value condition.</summary>
<param name="returnValue">
The return value condition. If the method returns this value, the associated parameter will not be null.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute.ReturnValue">
<summary>Gets the return value condition.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute">
<summary>Specifies that the output will be non-null if the named parameter is non-null.</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute.#ctor(System.String)">
<summary>Initializes the attribute with the associated parameter name.</summary>
<param name="parameterName">
The associated parameter name. The output will be non-null if the argument to the parameter specified is non-null.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute.ParameterName">
<summary>Gets the associated parameter name.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.DoesNotReturnAttribute">
<summary>Applied to a method that will never return under any circumstance.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute">
<summary>Specifies that the method will not return if the associated Boolean parameter is passed the specified value.</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute.#ctor(System.Boolean)">
<summary>Initializes the attribute with the specified parameter value.</summary>
<param name="parameterValue">
The condition parameter value. Code after the method will be considered unreachable by diagnostics if the argument to
the associated parameter matches this value.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute.ParameterValue">
<summary>Gets the condition parameter value.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute">
<summary>Specifies that the method or property will ensure that the listed field and property members have not-null values.</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute.#ctor(System.String)">
<summary>Initializes the attribute with a field or property member.</summary>
<param name="member">
The field or property member that is promised to be not-null.
</param>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute.#ctor(System.String[])">
<summary>Initializes the attribute with the list of field and property members.</summary>
<param name="members">
The list of field and property members that are promised to be not-null.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute.Members">
<summary>Gets field or property member names.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute">
<summary>Specifies that the method or property will ensure that the listed field and property members have not-null values when returning with the specified return value condition.</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.#ctor(System.Boolean,System.String)">
<summary>Initializes the attribute with the specified return value condition and a field or property member.</summary>
<param name="returnValue">
The return value condition. If the method returns this value, the associated parameter will not be null.
</param>
<param name="member">
The field or property member that is promised to be not-null.
</param>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.#ctor(System.Boolean,System.String[])">
<summary>Initializes the attribute with the specified return value condition and list of field and property members.</summary>
<param name="returnValue">
The return value condition. If the method returns this value, the associated parameter will not be null.
</param>
<param name="members">
The list of field and property members that are promised to be not-null.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.ReturnValue">
<summary>Gets the return value condition.</summary>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.Members">
<summary>Gets field or property member names.</summary>
</member>
</members>
</doc>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,622 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>Microsoft.Extensions.DependencyInjection</name>
</assembly>
<members>
<member name="M:Microsoft.Extensions.Internal.TypeNameHelper.GetTypeDisplayName(System.Type,System.Boolean,System.Boolean,System.Boolean,System.Char)">
<summary>
Pretty print a type name.
</summary>
<param name="type">The <see cref="T:System.Type"/>.</param>
<param name="fullName"><c>true</c> to print a fully qualified name.</param>
<param name="includeGenericParameterNames"><c>true</c> to include generic parameter names.</param>
<param name="includeGenericParameters"><c>true</c> to include generic parameters.</param>
<param name="nestedTypeDelimiter">Character to use as a delimiter in nested type names</param>
<returns>The pretty printed type name.</returns>
</member>
<member name="T:Microsoft.Extensions.DependencyInjection.DefaultServiceProviderFactory">
<summary>
Default implementation of <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceProviderFactory`1"/>.
</summary>
</member>
<member name="M:Microsoft.Extensions.DependencyInjection.DefaultServiceProviderFactory.#ctor">
<summary>
Initializes a new instance of the <see cref="T:Microsoft.Extensions.DependencyInjection.DefaultServiceProviderFactory"/> class
with default options.
</summary>
</member>
<member name="M:Microsoft.Extensions.DependencyInjection.DefaultServiceProviderFactory.#ctor(Microsoft.Extensions.DependencyInjection.ServiceProviderOptions)">
<summary>
Initializes a new instance of the <see cref="T:Microsoft.Extensions.DependencyInjection.DefaultServiceProviderFactory"/> class
with the specified <paramref name="options"/>.
</summary>
<param name="options">The options to use for this instance.</param>
</member>
<member name="M:Microsoft.Extensions.DependencyInjection.DefaultServiceProviderFactory.CreateBuilder(Microsoft.Extensions.DependencyInjection.IServiceCollection)">
<inheritdoc />
</member>
<member name="M:Microsoft.Extensions.DependencyInjection.DefaultServiceProviderFactory.CreateServiceProvider(Microsoft.Extensions.DependencyInjection.IServiceCollection)">
<inheritdoc />
</member>
<member name="T:Microsoft.Extensions.DependencyInjection.ServiceCollectionContainerBuilderExtensions">
<summary>
Extension methods for building a <see cref="T:Microsoft.Extensions.DependencyInjection.ServiceProvider"/> from an <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection"/>.
</summary>
</member>
<member name="M:Microsoft.Extensions.DependencyInjection.ServiceCollectionContainerBuilderExtensions.BuildServiceProvider(Microsoft.Extensions.DependencyInjection.IServiceCollection)">
<summary>
Creates a <see cref="T:Microsoft.Extensions.DependencyInjection.ServiceProvider"/> containing services from the provided <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection"/>.
</summary>
<param name="services">The <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection"/> containing service descriptors.</param>
<returns>The <see cref="T:Microsoft.Extensions.DependencyInjection.ServiceProvider"/>.</returns>
</member>
<member name="M:Microsoft.Extensions.DependencyInjection.ServiceCollectionContainerBuilderExtensions.BuildServiceProvider(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Boolean)">
<summary>
Creates a <see cref="T:Microsoft.Extensions.DependencyInjection.ServiceProvider"/> containing services from the provided <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection"/>
optionally enabling scope validation.
</summary>
<param name="services">The <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection"/> containing service descriptors.</param>
<param name="validateScopes">
<c>true</c> to perform check verifying that scoped services never gets resolved from root provider; otherwise <c>false</c>.
</param>
<returns>The <see cref="T:Microsoft.Extensions.DependencyInjection.ServiceProvider"/>.</returns>
</member>
<member name="M:Microsoft.Extensions.DependencyInjection.ServiceCollectionContainerBuilderExtensions.BuildServiceProvider(Microsoft.Extensions.DependencyInjection.IServiceCollection,Microsoft.Extensions.DependencyInjection.ServiceProviderOptions)">
<summary>
Creates a <see cref="T:Microsoft.Extensions.DependencyInjection.ServiceProvider"/> containing services from the provided <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection"/>
optionally enabling scope validation.
</summary>
<param name="services">The <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection"/> containing service descriptors.</param>
<param name="options">
Configures various service provider behaviors.
</param>
<returns>The <see cref="T:Microsoft.Extensions.DependencyInjection.ServiceProvider"/>.</returns>
</member>
<member name="M:Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.ValidateTrimmingAnnotations(System.Type,System.Type[],System.Type,System.Type[])">
<summary>
Validates that two generic type definitions have compatible trimming annotations on their generic arguments.
</summary>
<remarks>
When open generic types are used in DI, there is an error when the concrete implementation type
has [DynamicallyAccessedMembers] attributes on a generic argument type, but the interface/service type
doesn't have matching annotations. The problem is that the trimmer doesn't see the members that need to
be preserved on the type being passed to the generic argument. But when the interface/service type also has
the annotations, the trimmer will see which members need to be preserved on the closed generic argument type.
</remarks>
</member>
<member name="M:Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateArgumentCallSites(System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain,System.Reflection.ParameterInfo[],System.Boolean)">
<returns>Not <b>null</b> if <b>throwIfCallSiteNotFound</b> is true</returns>
</member>
<member name="P:Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCacheKey.Type">
<summary>
Type of service being cached
</summary>
</member>
<member name="P:Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCacheKey.Slot">
<summary>
Reverse index of the service when resolved in <c>IEnumerable&lt;Type&gt;</c> where default instance gets slot 0.
For example for service collection
IService Impl1
IService Impl2
IService Impl3
We would get the following cache keys:
Impl1 2
Impl2 1
Impl3 0
</summary>
</member>
<member name="M:Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCacheKey.Equals(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCacheKey)">
<summary>Indicates whether the current instance is equal to another instance of the same type.</summary>
<param name="other">An instance to compare with this instance.</param>
<returns>true if the current instance is equal to the other instance; otherwise, false.</returns>
</member>
<member name="T:Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite">
<summary>
Summary description for ServiceCallSite
</summary>
</member>
<member name="T:Microsoft.Extensions.DependencyInjection.ServiceProvider">
<summary>
The default IServiceProvider.
</summary>
</member>
<member name="M:Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(System.Type)">
<summary>
Gets the service object of the specified type.
</summary>
<param name="serviceType">The type of the service to get.</param>
<returns>The service that was produced.</returns>
</member>
<member name="M:Microsoft.Extensions.DependencyInjection.ServiceProvider.Dispose">
<inheritdoc />
</member>
<member name="M:Microsoft.Extensions.DependencyInjection.ServiceProvider.DisposeAsync">
<inheritdoc/>
</member>
<member name="T:Microsoft.Extensions.DependencyInjection.ServiceProviderOptions">
<summary>
Options for configuring various behaviors of the default <see cref="T:System.IServiceProvider"/> implementation.
</summary>
</member>
<member name="P:Microsoft.Extensions.DependencyInjection.ServiceProviderOptions.ValidateScopes">
<summary>
<c>true</c> to perform check verifying that scoped services never gets resolved from root provider; otherwise <c>false</c>. Defaults to <c>false</c>.
</summary>
</member>
<member name="P:Microsoft.Extensions.DependencyInjection.ServiceProviderOptions.ValidateOnBuild">
<summary>
<c>true</c> to perform check verifying that all services can be created during <c>BuildServiceProvider</c> call; otherwise <c>false</c>. Defaults to <c>false</c>.
NOTE: this check doesn't verify open generics services.
</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute">
<summary>
Indicates that certain members on a specified <see cref="T:System.Type"/> are accessed dynamically,
for example through <see cref="N:System.Reflection"/>.
</summary>
<remarks>
This allows tools to understand which members are being accessed during the execution
of a program.
This attribute is valid on members whose type is <see cref="T:System.Type"/> or <see cref="T:System.String"/>.
When this attribute is applied to a location of type <see cref="T:System.String"/>, the assumption is
that the string represents a fully qualified type name.
When this attribute is applied to a class, interface, or struct, the members specified
can be accessed dynamically on <see cref="T:System.Type"/> instances returned from calling
<see cref="M:System.Object.GetType"/> on instances of that class, interface, or struct.
If the attribute is applied to a method it's treated as a special case and it implies
the attribute should be applied to the "this" parameter of the method. As such the attribute
should only be used on instance methods of types assignable to System.Type (or string, but no methods
will use it there).
</remarks>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute.#ctor(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes)">
<summary>
Initializes a new instance of the <see cref="T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute"/> class
with the specified member types.
</summary>
<param name="memberTypes">The types of members dynamically accessed.</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute.MemberTypes">
<summary>
Gets the <see cref="T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes"/> which specifies the type
of members dynamically accessed.
</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes">
<summary>
Specifies the types of members that are dynamically accessed.
This enumeration has a <see cref="T:System.FlagsAttribute"/> attribute that allows a
bitwise combination of its member values.
</summary>
</member>
<member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.None">
<summary>
Specifies no members.
</summary>
</member>
<member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicParameterlessConstructor">
<summary>
Specifies the default, parameterless public constructor.
</summary>
</member>
<member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors">
<summary>
Specifies all public constructors.
</summary>
</member>
<member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors">
<summary>
Specifies all non-public constructors.
</summary>
</member>
<member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods">
<summary>
Specifies all public methods.
</summary>
</member>
<member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods">
<summary>
Specifies all non-public methods.
</summary>
</member>
<member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields">
<summary>
Specifies all public fields.
</summary>
</member>
<member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicFields">
<summary>
Specifies all non-public fields.
</summary>
</member>
<member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicNestedTypes">
<summary>
Specifies all public nested types.
</summary>
</member>
<member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicNestedTypes">
<summary>
Specifies all non-public nested types.
</summary>
</member>
<member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties">
<summary>
Specifies all public properties.
</summary>
</member>
<member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicProperties">
<summary>
Specifies all non-public properties.
</summary>
</member>
<member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicEvents">
<summary>
Specifies all public events.
</summary>
</member>
<member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicEvents">
<summary>
Specifies all non-public events.
</summary>
</member>
<member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.Interfaces">
<summary>
Specifies all interfaces implemented by the type.
</summary>
</member>
<member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All">
<summary>
Specifies all members.
</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute">
<summary>
Suppresses reporting of a specific rule violation, allowing multiple suppressions on a
single code artifact.
</summary>
<remarks>
<see cref="T:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute"/> is different than
<see cref="T:System.Diagnostics.CodeAnalysis.SuppressMessageAttribute"/> in that it doesn't have a
<see cref="T:System.Diagnostics.ConditionalAttribute"/>. So it is always preserved in the compiled assembly.
</remarks>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.#ctor(System.String,System.String)">
<summary>
Initializes a new instance of the <see cref="T:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute"/>
class, specifying the category of the tool and the identifier for an analysis rule.
</summary>
<param name="category">The category for the attribute.</param>
<param name="checkId">The identifier of the analysis rule the attribute applies to.</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.Category">
<summary>
Gets the category identifying the classification of the attribute.
</summary>
<remarks>
The <see cref="P:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.Category"/> property describes the tool or tool analysis category
for which a message suppression attribute applies.
</remarks>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.CheckId">
<summary>
Gets the identifier of the analysis tool rule to be suppressed.
</summary>
<remarks>
Concatenated together, the <see cref="P:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.Category"/> and <see cref="P:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.CheckId"/>
properties form a unique check identifier.
</remarks>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.Scope">
<summary>
Gets or sets the scope of the code that is relevant for the attribute.
</summary>
<remarks>
The Scope property is an optional argument that specifies the metadata scope for which
the attribute is relevant.
</remarks>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.Target">
<summary>
Gets or sets a fully qualified path that represents the target of the attribute.
</summary>
<remarks>
The <see cref="P:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.Target"/> property is an optional argument identifying the analysis target
of the attribute. An example value is "System.IO.Stream.ctor():System.Void".
Because it is fully qualified, it can be long, particularly for targets such as parameters.
The analysis tool user interface should be capable of automatically formatting the parameter.
</remarks>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.MessageId">
<summary>
Gets or sets an optional argument expanding on exclusion criteria.
</summary>
<remarks>
The <see cref="P:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.MessageId"/> property is an optional argument that specifies additional
exclusion where the literal metadata target is not sufficiently precise. For example,
the <see cref="T:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute"/> cannot be applied within a method,
and it may be desirable to suppress a violation against a statement in the method that will
give a rule violation, but not against all statements in the method.
</remarks>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.Justification">
<summary>
Gets or sets the justification for suppressing the code analysis message.
</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute">
<summary>
Indicates that the specified method requires the ability to generate new code at runtime,
for example through <see cref="N:System.Reflection"/>.
</summary>
<remarks>
This allows tools to understand which methods are unsafe to call when compiling ahead of time.
</remarks>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute"/> class
with the specified message.
</summary>
<param name="message">
A message that contains information about the usage of dynamic code.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute.Message">
<summary>
Gets a message that contains information about the usage of dynamic code.
</summary>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute.Url">
<summary>
Gets or sets an optional URL that contains more information about the method,
why it requires dynamic code, and what options a consumer has to deal with it.
</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.AllowNullAttribute">
<summary>Specifies that null is allowed as an input even if the corresponding type disallows it.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.DisallowNullAttribute">
<summary>Specifies that null is disallowed as an input even if the corresponding type allows it.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.MaybeNullAttribute">
<summary>Specifies that an output may be null even if the corresponding type disallows it.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.NotNullAttribute">
<summary>Specifies that an output will not be null even if the corresponding type allows it. Specifies that an input argument was not null when the call returns.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute">
<summary>Specifies that when a method returns <see cref="P:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute.ReturnValue"/>, the parameter may be null even if the corresponding type disallows it.</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute.#ctor(System.Boolean)">
<summary>Initializes the attribute with the specified return value condition.</summary>
<param name="returnValue">
The return value condition. If the method returns this value, the associated parameter may be null.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute.ReturnValue">
<summary>Gets the return value condition.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute">
<summary>Specifies that when a method returns <see cref="P:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute.ReturnValue"/>, the parameter will not be null even if the corresponding type allows it.</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute.#ctor(System.Boolean)">
<summary>Initializes the attribute with the specified return value condition.</summary>
<param name="returnValue">
The return value condition. If the method returns this value, the associated parameter will not be null.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute.ReturnValue">
<summary>Gets the return value condition.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute">
<summary>Specifies that the output will be non-null if the named parameter is non-null.</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute.#ctor(System.String)">
<summary>Initializes the attribute with the associated parameter name.</summary>
<param name="parameterName">
The associated parameter name. The output will be non-null if the argument to the parameter specified is non-null.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute.ParameterName">
<summary>Gets the associated parameter name.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.DoesNotReturnAttribute">
<summary>Applied to a method that will never return under any circumstance.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute">
<summary>Specifies that the method will not return if the associated Boolean parameter is passed the specified value.</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute.#ctor(System.Boolean)">
<summary>Initializes the attribute with the specified parameter value.</summary>
<param name="parameterValue">
The condition parameter value. Code after the method will be considered unreachable by diagnostics if the argument to
the associated parameter matches this value.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute.ParameterValue">
<summary>Gets the condition parameter value.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute">
<summary>Specifies that the method or property will ensure that the listed field and property members have not-null values.</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute.#ctor(System.String)">
<summary>Initializes the attribute with a field or property member.</summary>
<param name="member">
The field or property member that is promised to be not-null.
</param>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute.#ctor(System.String[])">
<summary>Initializes the attribute with the list of field and property members.</summary>
<param name="members">
The list of field and property members that are promised to be not-null.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute.Members">
<summary>Gets field or property member names.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute">
<summary>Specifies that the method or property will ensure that the listed field and property members have not-null values when returning with the specified return value condition.</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.#ctor(System.Boolean,System.String)">
<summary>Initializes the attribute with the specified return value condition and a field or property member.</summary>
<param name="returnValue">
The return value condition. If the method returns this value, the associated parameter will not be null.
</param>
<param name="member">
The field or property member that is promised to be not-null.
</param>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.#ctor(System.Boolean,System.String[])">
<summary>Initializes the attribute with the specified return value condition and list of field and property members.</summary>
<param name="returnValue">
The return value condition. If the method returns this value, the associated parameter will not be null.
</param>
<param name="members">
The list of field and property members that are promised to be not-null.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.ReturnValue">
<summary>Gets the return value condition.</summary>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.Members">
<summary>Gets field or property member names.</summary>
</member>
<member name="P:System.SR.AmbiguousConstructorException">
<summary>Unable to activate type '{0}'. The following constructors are ambiguous:</summary>
</member>
<member name="P:System.SR.CannotResolveService">
<summary>Unable to resolve service for type '{0}' while attempting to activate '{1}'.</summary>
</member>
<member name="P:System.SR.CircularDependencyException">
<summary>A circular dependency was detected for the service of type '{0}'.</summary>
</member>
<member name="P:System.SR.UnableToActivateTypeException">
<summary>No constructor for type '{0}' can be instantiated using services from the service container and default values.</summary>
</member>
<member name="P:System.SR.OpenGenericServiceRequiresOpenGenericImplementation">
<summary>Open generic service type '{0}' requires registering an open generic implementation type.</summary>
</member>
<member name="P:System.SR.ArityOfOpenGenericServiceNotEqualArityOfOpenGenericImplementation">
<summary>Arity of open generic service type '{0}' does not equal arity of open generic implementation type '{1}'.</summary>
</member>
<member name="P:System.SR.TypeCannotBeActivated">
<summary>Cannot instantiate implementation type '{0}' for service type '{1}'.</summary>
</member>
<member name="P:System.SR.NoConstructorMatch">
<summary>A suitable constructor for type '{0}' could not be located. Ensure the type is concrete and services are registered for all parameters of a public constructor.</summary>
</member>
<member name="P:System.SR.ScopedInSingletonException">
<summary>Cannot consume {2} service '{0}' from {3} '{1}'.</summary>
</member>
<member name="P:System.SR.ScopedResolvedFromRootException">
<summary>Cannot resolve '{0}' from root provider because it requires {2} service '{1}'.</summary>
</member>
<member name="P:System.SR.DirectScopedResolvedFromRootException">
<summary>Cannot resolve {1} service '{0}' from root provider.</summary>
</member>
<member name="P:System.SR.ConstantCantBeConvertedToServiceType">
<summary>Constant value of type '{0}' can't be converted to service type '{1}'</summary>
</member>
<member name="P:System.SR.ImplementationTypeCantBeConvertedToServiceType">
<summary>Implementation type '{0}' can't be converted to service type '{1}'</summary>
</member>
<member name="P:System.SR.AsyncDisposableServiceDispose">
<summary>'{0}' type only implements IAsyncDisposable. Use DisposeAsync to dispose the container.</summary>
</member>
<member name="P:System.SR.GetCaptureDisposableNotSupported">
<summary>GetCaptureDisposable call is supported only for main scope</summary>
</member>
<member name="P:System.SR.InvalidServiceDescriptor">
<summary>Invalid service descriptor</summary>
</member>
<member name="P:System.SR.ServiceDescriptorNotExist">
<summary>Requested service descriptor doesn't exist.</summary>
</member>
<member name="P:System.SR.CallSiteTypeNotSupported">
<summary>Call site type {0} is not supported</summary>
</member>
<member name="P:System.SR.TrimmingAnnotationsDoNotMatch">
<summary>Generic implementation type '{0}' has a DynamicallyAccessedMembers attribute applied to a generic argument type, but the service type '{1}' doesn't have a matching DynamicallyAccessedMembers attribute on its generic argument type.</summary>
</member>
<member name="P:System.SR.TrimmingAnnotationsDoNotMatch_NewConstraint">
<summary>Generic implementation type '{0}' has a DefaultConstructorConstraint ('new()' constraint), but the generic service type '{1}' doesn't.</summary>
</member>
<member name="T:System.Runtime.InteropServices.LibraryImportAttribute">
<summary>
Attribute used to indicate a source generator should create a function for marshalling
arguments instead of relying on the runtime to generate an equivalent marshalling function at run-time.
</summary>
<remarks>
This attribute is meaningless if the source generator associated with it is not enabled.
The current built-in source generator only supports C# and only supplies an implementation when
applied to static, partial, non-generic methods.
</remarks>
</member>
<member name="M:System.Runtime.InteropServices.LibraryImportAttribute.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:System.Runtime.InteropServices.LibraryImportAttribute"/>.
</summary>
<param name="libraryName">Name of the library containing the import.</param>
</member>
<member name="P:System.Runtime.InteropServices.LibraryImportAttribute.LibraryName">
<summary>
Gets the name of the library containing the import.
</summary>
</member>
<member name="P:System.Runtime.InteropServices.LibraryImportAttribute.EntryPoint">
<summary>
Gets or sets the name of the entry point to be called.
</summary>
</member>
<member name="P:System.Runtime.InteropServices.LibraryImportAttribute.StringMarshalling">
<summary>
Gets or sets how to marshal string arguments to the method.
</summary>
<remarks>
If this field is set to a value other than <see cref="F:System.Runtime.InteropServices.StringMarshalling.Custom" />,
<see cref="P:System.Runtime.InteropServices.LibraryImportAttribute.StringMarshallingCustomType" /> must not be specified.
</remarks>
</member>
<member name="P:System.Runtime.InteropServices.LibraryImportAttribute.StringMarshallingCustomType">
<summary>
Gets or sets the <see cref="T:System.Type"/> used to control how string arguments to the method are marshalled.
</summary>
<remarks>
If this field is specified, <see cref="P:System.Runtime.InteropServices.LibraryImportAttribute.StringMarshalling" /> must not be specified
or must be set to <see cref="F:System.Runtime.InteropServices.StringMarshalling.Custom" />.
</remarks>
</member>
<member name="P:System.Runtime.InteropServices.LibraryImportAttribute.SetLastError">
<summary>
Gets or sets whether the callee sets an error (SetLastError on Windows or errno
on other platforms) before returning from the attributed method.
</summary>
</member>
<member name="T:System.Runtime.InteropServices.StringMarshalling">
<summary>
Specifies how strings should be marshalled for generated p/invokes
</summary>
</member>
<member name="F:System.Runtime.InteropServices.StringMarshalling.Custom">
<summary>
Indicates the user is suppling a specific marshaller in <see cref="P:System.Runtime.InteropServices.LibraryImportAttribute.StringMarshallingCustomType"/>.
</summary>
</member>
<member name="F:System.Runtime.InteropServices.StringMarshalling.Utf8">
<summary>
Use the platform-provided UTF-8 marshaller.
</summary>
</member>
<member name="F:System.Runtime.InteropServices.StringMarshalling.Utf16">
<summary>
Use the platform-provided UTF-16 marshaller.
</summary>
</member>
</members>
</doc>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More