添加项目文件。

This commit is contained in:
2025-11-26 13:53:00 +08:00
parent be4540562d
commit 2a9e3186b6
7 changed files with 1125 additions and 0 deletions

235
MainForm.Designer.cs generated Normal file
View File

@@ -0,0 +1,235 @@
namespace TeklaModelPlugin1
{
partial class MainForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.saveLoad1 = new Tekla.Structures.Dialog.UIControls.SaveLoad();
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
this.saveLoad2 = new Tekla.Structures.Dialog.UIControls.SaveLoad();
this.tabControl2 = new System.Windows.Forms.TabControl();
this.tabPage3 = new System.Windows.Forms.TabPage();
this.tabPage4 = new System.Windows.Forms.TabPage();
this.tabControl1 = new System.Windows.Forms.TabControl();
this.ParametersTabPage = new System.Windows.Forms.TabPage();
this.OkApplyModifyGetOnOffCancel = new Tekla.Structures.Dialog.UIControls.OkApplyModifyGetOnOffCancel();
this.tableLayoutPanel1.SuspendLayout();
this.tableLayoutPanel2.SuspendLayout();
this.tabControl2.SuspendLayout();
this.tabControl1.SuspendLayout();
this.SuspendLayout();
//
// tableLayoutPanel1
//
this.structuresExtender.SetAttributeName(this.tableLayoutPanel1, null);
this.structuresExtender.SetAttributeTypeName(this.tableLayoutPanel1, null);
this.structuresExtender.SetBindPropertyName(this.tableLayoutPanel1, null);
this.tableLayoutPanel1.ColumnCount = 1;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.Controls.Add(this.OkApplyModifyGetOnOffCancel, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.tabControl1, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.saveLoad1, 0, 0);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 3;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel1.Size = new System.Drawing.Size(534, 414);
this.tableLayoutPanel1.TabIndex = 0;
//
// saveLoad1
//
this.structuresExtender.SetAttributeName(this.saveLoad1, null);
this.structuresExtender.SetAttributeTypeName(this.saveLoad1, null);
this.saveLoad1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.structuresExtender.SetBindPropertyName(this.saveLoad1, null);
this.saveLoad1.Dock = System.Windows.Forms.DockStyle.Top;
this.saveLoad1.Location = new System.Drawing.Point(3, 3);
this.saveLoad1.Name = "saveLoad1";
this.saveLoad1.SaveAsText = "";
this.saveLoad1.Size = new System.Drawing.Size(528, 43);
this.saveLoad1.TabIndex = 0;
//
// tableLayoutPanel2
//
this.structuresExtender.SetAttributeName(this.tableLayoutPanel2, null);
this.structuresExtender.SetAttributeTypeName(this.tableLayoutPanel2, null);
this.structuresExtender.SetBindPropertyName(this.tableLayoutPanel2, null);
this.tableLayoutPanel2.ColumnCount = 4;
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tableLayoutPanel2.Controls.Add(this.saveLoad2, 0, 0);
this.tableLayoutPanel2.Location = new System.Drawing.Point(0, 0);
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
this.tableLayoutPanel2.RowCount = 8;
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tableLayoutPanel2.Size = new System.Drawing.Size(200, 100);
this.tableLayoutPanel2.TabIndex = 0;
//
// saveLoad2
//
this.structuresExtender.SetAttributeName(this.saveLoad2, null);
this.structuresExtender.SetAttributeTypeName(this.saveLoad2, null);
this.saveLoad2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.structuresExtender.SetBindPropertyName(this.saveLoad2, null);
this.tableLayoutPanel2.SetColumnSpan(this.saveLoad2, 4);
this.saveLoad2.Dock = System.Windows.Forms.DockStyle.Top;
this.saveLoad2.Location = new System.Drawing.Point(3, 3);
this.saveLoad2.Name = "saveLoad2";
this.saveLoad2.SaveAsText = "";
this.saveLoad2.Size = new System.Drawing.Size(194, 14);
this.saveLoad2.TabIndex = 0;
//
// tabControl2
//
this.structuresExtender.SetAttributeName(this.tabControl2, null);
this.structuresExtender.SetAttributeTypeName(this.tabControl2, null);
this.structuresExtender.SetBindPropertyName(this.tabControl2, null);
this.tabControl2.Controls.Add(this.tabPage3);
this.tabControl2.Controls.Add(this.tabPage4);
this.tabControl2.Location = new System.Drawing.Point(3, -6);
this.tabControl2.Name = "tabControl2";
this.tabControl2.SelectedIndex = 0;
this.tabControl2.Size = new System.Drawing.Size(90, 1);
this.tabControl2.TabIndex = 2;
//
// tabPage3
//
this.structuresExtender.SetAttributeName(this.tabPage3, null);
this.structuresExtender.SetAttributeTypeName(this.tabPage3, null);
this.structuresExtender.SetBindPropertyName(this.tabPage3, null);
this.tabPage3.Location = new System.Drawing.Point(4, 22);
this.tabPage3.Name = "tabPage3";
this.tabPage3.Padding = new System.Windows.Forms.Padding(3);
this.tabPage3.Size = new System.Drawing.Size(82, 0);
this.tabPage3.TabIndex = 0;
this.tabPage3.Text = "tabPage3";
this.tabPage3.UseVisualStyleBackColor = true;
//
// tabPage4
//
this.structuresExtender.SetAttributeName(this.tabPage4, null);
this.structuresExtender.SetAttributeTypeName(this.tabPage4, null);
this.structuresExtender.SetBindPropertyName(this.tabPage4, null);
this.tabPage4.Location = new System.Drawing.Point(4, 22);
this.tabPage4.Name = "tabPage4";
this.tabPage4.Padding = new System.Windows.Forms.Padding(3);
this.tabPage4.Size = new System.Drawing.Size(82, 0);
this.tabPage4.TabIndex = 1;
this.tabPage4.Text = "tabPage4";
this.tabPage4.UseVisualStyleBackColor = true;
//
// tabControl1
//
this.structuresExtender.SetAttributeName(this.tabControl1, null);
this.structuresExtender.SetAttributeTypeName(this.tabControl1, null);
this.structuresExtender.SetBindPropertyName(this.tabControl1, null);
this.tabControl1.Controls.Add(this.ParametersTabPage);
this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tabControl1.Location = new System.Drawing.Point(3, 52);
this.tabControl1.Name = "tabControl1";
this.tabControl1.SelectedIndex = 0;
this.tabControl1.Size = new System.Drawing.Size(528, 324);
this.tabControl1.TabIndex = 18;
//
// ParametersTabPage
//
this.structuresExtender.SetAttributeName(this.ParametersTabPage, null);
this.structuresExtender.SetAttributeTypeName(this.ParametersTabPage, null);
this.structuresExtender.SetBindPropertyName(this.ParametersTabPage, null);
this.ParametersTabPage.Location = new System.Drawing.Point(4, 22);
this.ParametersTabPage.Name = "ParametersTabPage";
this.ParametersTabPage.Padding = new System.Windows.Forms.Padding(3);
this.ParametersTabPage.Size = new System.Drawing.Size(520, 298);
this.ParametersTabPage.TabIndex = 2;
this.ParametersTabPage.Text = "albl_Parameters";
this.ParametersTabPage.UseVisualStyleBackColor = true;
//
// OkApplyModifyGetOnOffCancel
//
this.structuresExtender.SetAttributeName(this.OkApplyModifyGetOnOffCancel, null);
this.structuresExtender.SetAttributeTypeName(this.OkApplyModifyGetOnOffCancel, null);
this.structuresExtender.SetBindPropertyName(this.OkApplyModifyGetOnOffCancel, null);
this.OkApplyModifyGetOnOffCancel.Dock = System.Windows.Forms.DockStyle.Bottom;
this.OkApplyModifyGetOnOffCancel.Location = new System.Drawing.Point(3, 382);
this.OkApplyModifyGetOnOffCancel.Name = "OkApplyModifyGetOnOffCancel";
this.OkApplyModifyGetOnOffCancel.Size = new System.Drawing.Size(528, 29);
this.OkApplyModifyGetOnOffCancel.TabIndex = 19;
this.OkApplyModifyGetOnOffCancel.OkClicked += new System.EventHandler(this.OkApplyModifyGetOnOffCancel_OkClicked);
this.OkApplyModifyGetOnOffCancel.ModifyClicked += new System.EventHandler(this.OkApplyModifyGetOnOffCancel_ModifyClicked);
this.OkApplyModifyGetOnOffCancel.CancelClicked += new System.EventHandler(this.OkApplyModifyGetOnOffCancel_CancelClicked);
this.OkApplyModifyGetOnOffCancel.OnOffClicked += new System.EventHandler(this.OkApplyModifyGetOnOffCancel_OnOffClicked);
this.OkApplyModifyGetOnOffCancel.GetClicked += new System.EventHandler(this.OkApplyModifyGetOnOffCancel_GetClicked);
this.OkApplyModifyGetOnOffCancel.ApplyClicked += new System.EventHandler(this.OkApplyModifyGetOnOffCancel_ApplyClicked);
//
// MainForm
//
this.structuresExtender.SetAttributeName(this, null);
this.structuresExtender.SetAttributeTypeName(this, null);
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.structuresExtender.SetBindPropertyName(this, null);
this.ClientSize = new System.Drawing.Size(534, 414);
this.Controls.Add(this.tableLayoutPanel1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "MainForm";
this.Text = "Model Plug-in";
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel2.ResumeLayout(false);
this.tabControl2.ResumeLayout(false);
this.tabControl1.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private Tekla.Structures.Dialog.UIControls.SaveLoad saveLoad1;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
private Tekla.Structures.Dialog.UIControls.SaveLoad saveLoad2;
private System.Windows.Forms.TabControl tabControl2;
private System.Windows.Forms.TabPage tabPage3;
private System.Windows.Forms.TabPage tabPage4;
private Tekla.Structures.Dialog.UIControls.OkApplyModifyGetOnOffCancel OkApplyModifyGetOnOffCancel;
private System.Windows.Forms.TabControl tabControl1;
private System.Windows.Forms.TabPage ParametersTabPage;
}
}

43
MainForm.cs Normal file
View File

@@ -0,0 +1,43 @@
using System;
namespace TeklaModelPlugin1
{
public partial class MainForm : Tekla.Structures.Dialog.PluginFormBase
{
public MainForm()
{
InitializeComponent();
}
private void OkApplyModifyGetOnOffCancel_OkClicked(object sender, EventArgs e)
{
this.Apply();
this.Close();
}
private void OkApplyModifyGetOnOffCancel_ApplyClicked(object sender, EventArgs e)
{
this.Apply();
}
private void OkApplyModifyGetOnOffCancel_ModifyClicked(object sender, EventArgs e)
{
this.Modify();
}
private void OkApplyModifyGetOnOffCancel_GetClicked(object sender, EventArgs e)
{
this.Get();
}
private void OkApplyModifyGetOnOffCancel_OnOffClicked(object sender, EventArgs e)
{
this.ToggleSelection();
}
private void OkApplyModifyGetOnOffCancel_CancelClicked(object sender, EventArgs e)
{
this.Close();
}
}
}

549
MainForm.resx Normal file
View File

@@ -0,0 +1,549 @@
<?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="structuresExtender.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</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>
AAABAAkAMDAQAAEABABoBgAAlgAAACAgEAABAAQA6AIAAP4GAAAQEBAAAQAEACgBAADmCQAAMDAAAAEA
CACoDgAADgsAACAgAAABAAgAqAgAALYZAAAQEAAAAQAIAGgFAABeIgAAMDAAAAEAIACoJQAAxicAACAg
AAABACAAqBAAAG5NAAAQEAAAAQAgAGgEAAAWXgAAKAAAADAAAABgAAAAAQAEAAAAAAAABgAAAAAAAAAA
AAAQAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8A
AAD/AP8A//8AAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+IAAAAAAAAAAAAAAAAAACP//////////dPAAAAAAAAAAAAAAAAAIhwcHdHd3d3d3dIAAAAAAAAAAAAAA
AAAIAAAEBEREREd3d3gAAAAAAAAAAAAAAACHAAAARERERER3d3gAAAAAAAAAAAAAAACHAAAEAEREREdH
d3gAAAAAAAAAAAAAAACHAAAARERERER3d08AAAAAAAAAAAAAAACHAAAEQEREREd3d3gAAAAAAAAAAAAA
AACHAAAABERERERHd3eAAAAAAAAAAAAAAAAIEAAAQERERER3d3eAAAAAAAAAAAAAAAAPBwAABERERERH
d3eAAAAAAAAAAAAAAAAIAXd3d3d3d3d3d3eP//////+IAAAAAAAIUBEBAREVFRFVVVVVVVVVUVWIgAAA
AAAIcBEREREREVEVVVVZmZmZmZlViAAAAAAAgRERERERFRFVVVWZmZmZmZmVWIAAAAAAgBERERERURVV
VZmZmZmZmZmZWIAAAAAA8BEREREREVFVV4iJmZmZmZmZV/AAAAAAgREREREVEVFVj///iZmZmZmZlfAA
AAAAhxERERERFRVX////iZmZmZmZlfAAAAAACAERERERUVVV////iXmZmZmZlYgAAAAACBERERFRV4hV
eIiId3iHmZmZlYgAAAAADwFREREV///4V1d3f///iZmZlX8AAAAACHEVERUY////dXV5j///93mZmV8A
AAAACHFVUREX////h1d4////h5mZmV8AAAAACIAViIiFWIj//4iP/4iIl4iIeViAAAAAAIEX///4V1VY
////95eZj///iViAAAAAAPAY////VVVX////h3d3j///+VjwAAAAAIEViP/4VYiP///4d3d5eP/4eZXw
AAAAAIcRVVFVj///+Hd3f///eXmZmZXwAAAAAIcRVVVV////h3d3j///iZmZmZWIAAAAAAgRmVVVj//4
d3d3j//4d5mZmZWIAAAAAA8BmVVVWXd3eP+Id4d3eXmZmZmIAAAAAAgRWZVVWVlZj///d5d3l5eXmZVf
AAAAAAhxWZVVVVlZj///d5mZmZmZmZlfAAAAAAiBWZVVVVWVmXh5mZmZmZmZmZdYgAAAAACAFZVRVVlZ
lZmZmZmZmZmZmZlYgAAAAACBEVlVVVVZWZmZmZmZmZmZmZlYgAAAAAAPERERERFRVVVVlZWZWZWZWVVV
8AAAAAAAiHERERERERERERERERERERER8AAAAAAACIj///////////////////hxiAAAAAAAAAAAAAAA
AAAAAAAAAAAAAACIeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
jwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8AAP///////wAA////////AAD///n///8AAP//
8f///wAA4AAB////AACAAAH///8AAIAAAP///wAAAAAA////AAAAAAD///8AAAAAAP///wAAAAAA////
AAAAAAB///8AAIAAAH///wAAgAAAf///AACAAAAAA/8AAIAAAAAB/wAAgAAAAAD/AADAAAAAAH8AAMAA
AAAAfwAAwAAAAAB/AADAAAAAAH8AAMAAAAAAfwAA4AAAAAA/AADgAAAAAD8AAOAAAAAAPwAA4AAAAAA/
AADgAAAAAD8AAOAAAAAAHwAA8AAAAAAfAADwAAAAAB8AAPAAAAAAHwAA8AAAAAAfAADwAAAAAA8AAPgA
AAAADwAA+AAAAAAPAAD4AAAAAA8AAPgAAAAADwAA+AAAAAAHAAD8AAAAAAcAAPwAAAAABwAA/gAAAAAH
AAD/AAAAAAcAAP+AAAAAAwAA///////DAAD///////MAAP//////8wAA////////AAAoAAAAIAAAAEAA
AAABAAQAAAAAAIACAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAICA
gADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAI/wAAAAAAAAAAAP///////3iAAAAAAAAAAA9ABERERE
d38AAAAAAAAAAPAAQERER3d/AAAAAAAAAADwBERERER3fwAAAAAAAAAA8AQEREREd38AAAAAAAAAAPEA
RERERHd4gAAAAAAAAADxQURER0d3d/////8AAAAAhwERERERFVd3d3d3/wAAAIcRERERFRVVmZmZmVfw
AAAPERERERFVWZmZmZmV8AAADxERERFRV/+HmZmZlfAAAA8REREREV///5mZmZn4AAAIcREREVVY//eX
mZmZfwAACIERER//9XWX//iZmX8AAACBERF///hZf///mZlfAAAA8ReId4/////4h4iHXwAAAPEf//dV
f///eZj//5+AAAD3GP+Hd4//93d3//eY8AAAhxERX///d5j/+JmZl/AAAAgVVVf/95d4//d5mZXwAAAP
EVVVWZj/95eZmZmZ8AAADxFVVVWY//eZmZmZlYgAAA9xVVFVWZeZmZmZmZmPAAAAgREVUVVVmZmZmZmV
fwAAAIgRERERERERERERER8AAAAA//////////////gfAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAA
AAAAAA/w/////////////f////H//4AA//8AAP//AAD//wAA//8AAP//AAB//wAAAP8AAAA/AAAAH4AA
AB+AAAAfgAAAD4AAAA+AAAAPwAAAD8AAAA/AAAAHwAAAB8AAAAfgAAAH4AAAB+AAAAPgAAAD8AAAA/AA
AAP8AAAD////8/////koAAAAEAAAACAAAAABAAQAAAAAAMAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAA
gAAAgAAAAICAAIAAAACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAZm
Z3d3AAAAZmZ2d3cAAABWZmd3dwAAAFkRFREZmZUAWRERWIeZmZVZERGP+JmZmVkXiFiFiImZWZ//gRj/
+ZmIhYj/j4h4iP/1FY/4mX//V5j/h1f/iXlZF4h3d4iJmVkREY/4mZmZCRERF3mZmZkAVVVVVVVVWQAA
AAAAAAAAgD8AAAA/AAAAPwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAA
AADAAAAA//8AACgAAAAwAAAAYAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AGA8
6AAAAAAARSDKAEMfwgBRJu0AUiftAFEn6gBNJeEAQB+5AFIo7QBSKOsAPh6yAEgkzQBUKu0AUinlAEYj
wwA8HqoAVCrpAEwm0wBWLO0AVSzsAFYt7gBRKt4AQiK0AFcu7gBEJLsAWC/uAFgv7QBXL+wAUCvZAEAi
rQBZMO4AWTDtAFMt3gBaMe4AUi3aAFEs1QBaMewAWjHpAEkowABcM+4AWzPuAFAszwBNK8kAXDTuAFsz
7AAtGXQAXDTtAFYx3ABdNuwAXDXpAFs05ABUMdUARSiwAF437gBfOO4AYDnuAEwtugBiOu8AYTrvAGA5
6wBQMMIAYzzvAGQ+7wBcOdwASy+zAGZA7wBJLqsATTGzAGhD7wBDK5sASC+kAEEqkgBrRvAAVDa4AE4z
rABtSOoAcE3wAFU8qgB1VeUAfFzxAIhq8wB9YtwAim3rAI5y8wBLPIAAk3n0AJuC7gC2o/YA1sz6ADQX
iQA3GZMALRR2ADQZiQA7HZ0APSOKADchfQBaNssAQSmLAGtF5gBSNasAKxxXAE82nwBaP6wAVT2jAHRT
2QBRPI4AknjiAIZvzgCnkusAi3y3AMa48wDb0vYA7Oj5APXz+wA0FoEAMRV9AC8VeQA7HZEANBp7AC0X
bABXLsgASi6WAGtG0gBIL4kAaUbGADkmbABXP5kAYEanAHdXzABlTaMAe2a3AJ2OxgCpmtMAe3GWADsa
igA4GYQARiCfAEIelQBMJKoAMxl0AFMquQBIJJwATSelADwfgwBEI5AASCaWAFEsrQBUM6AAZ0W2AHJS
vQA/MGUAYUuYAG5WqQBOK50ARSx6AFpHgwDZ0eoAVEJ3AMS33AC2qcsAUCeJAJyVpQDp3fUAZDuGAGNO
cgBtIZwAbiKeAGwhmQDbyOcAah+UAGQaiQB/HKUAbSeKANXH2gB/MJkAfBKSALITwgCdFKUA6wPvANIG
2AD/AP8AvwC/AI8AjwB5AHkA/wL/AAAAAAD0OPQA7FrrAPuR+wD/rv8A6qzqAPS29ABPP08AxITDANyc
2wDzCOAA6RHHAJUgXAA6MTEAYmFhAKCfnwBuLiAAg358AKqEcgCROAAAjDUAAIUzAACAMQAAey8AAHUs
AABtKgAAYiYAAFYhAABKHAAAPhcAADASAAAjDQAAlz0FAI46BwCfRg4AplAbALBZIwBrNxgAilg5AEUv
IgCMbFgAFgoCAMRxOwC2aTcAzHpFAM+FVABxSjEA2JBgAOWaaADtpHIApXJRAMWnkwBKR0QAj4+OAPj4
+ADx8fEA5ubmANXV1QDKysoAwsLCALy8vACzs7MAra2tAKWlpQCampoAlJSUAIiIiABxcXEAAwMDAwMD
AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD
AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD
AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDc8ADAwMDAwMDAwMDAwMDAwMDAwMD
AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwN0+/MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDwgEB
AQEBAQEBAQEBAQEBAfPv4fIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwP18fDq6urq4uLi4uLi4uLu
7u7u4vYDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA/XJ5drZ2NfW1tXU09LR0d3f5+nr7u8DAwMDAwMD
AwMDAwMDAwMDAwMDAwMDAwMDwP7l29rY2NfW1dTT0dDQz9zg5uvs7s7BAwMDAwMDAwMDAwMDAwMDAwMD
AwMDAwMDpcPl29rZ2NfW1dTT0dDQz8/f5unt6eKlAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDpcoA29rZ
2NfW1dTT0tDQz8/f5+nt6+LyAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDwv8A29rZ2NfW1tTT0tHQz8/e
5+js7OL1AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA8vl5drZ2NjW1dXT0tHQz8/e4Ojs7ef4AwMDAwMD
AwMDAwMDAwMDAwMDAwMDAwMDA/bJ5dvZ2NfX1tXU0tHQz8/c4Ojs7e7OAwMDAwMDAwMDAwMDAwMDAwMD
AwMDAwMDA3TJw+Pa2djX1tXT0tLR3c/c4Obr7ejkqwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA6XJZ8r+
zeTk5OTk5O7u7u7uzs7v7+/O9AEBAQEBAQEBAQHywgMDAwMDAwMDAwMDA8HKZ2dnZ2dnmaCgoKCgoKCe
np6ampqahIJJSUlJSUlJSWqbhp+lAwMDAwMDAwMDAwPNZ3owenp6jo6OeXmKkpKJk5CNlY+PjyYmJiYm
JiYmJiwtO2ikcwMDAwMDAwMDAwP4Z3p2d153dnV1iomJeIyMi42Vj3t7ex0WDwwMCAgICAgQHz9J9QMD
AwMDAwMDAwP0Z2d2dl53dnV1iomJeIyMi42Pe2NjYzUhFw8LBwcGBgYGCB87h6UDAwMDAwMDAwPzZ2dc
dV5ednZ1iomJeIyMi5VMg29vWWUuJBcPCwsHBwYGBhAshQEDAwMDAwMDAwOroGd2XF5ed3Z1iomJjIyQ
nJWhAQEBAXRYLiQaFQ8PCwcHBggmUAEDAwMDAwMDAwMD/Wd3XHZed3Z1iomTk5ScnIUBAQEBAQFbPTgu
JBwXDwsLBwYYQ3QDAwMDAwMDAwMD92cwXHVed3mKkmGTlHyWlpd0AQEBAQFaREE5OC4rHA8PCwcYO6UD
AwMDAwMDAwMD9WeAeFx3d3mKkmSBcIeGm2mXoXJyq29LS1ZaWlI5KxwVDwsQP6HCAwMDAwMDAwMDAWeA
fHh5eWKSZIR0AQEBAaGXl39/fX1VcwEBAQFbOi4hFw8TLHB0AwMDAwMDAwMDq6eAbGpkeWJkfocBAQEB
AQGFl399fX1xAQEBAQEBUz04KyEeNlABAwMDAwMDAwMDA/5nfmqBbH5+fpt0AQEBAQGfmH9/fW10AQEB
AQFbR0FAOi4rMk10AwMDAwMDAwMDA/pnfmpwop+whoGahoeicwEBAZ9ycwEBAXJaWllLUlpbW29ENUb0
AwMDAwMDAwMDA/VnnYUBAQEBAfSBgYGCgocBAQEBAQFzUk9LS0tZAQEBAQGlNT+hwgMDAwMDAwMDAwFn
gIYBAQEBAQGEhISEgoUBAQEBAQFaZU9LS0taAQEBAQF0NGOGcwMDAwMDAwMDA5/DgHyHcwEBc4aahHBw
onMBAQEBdHFrTlJWUktPcXQBAVtSLzaCAQMDAwMDAwMDAwP/Z2RmaGxsbIGGdAEBAQF0h26Dg2tVcwEB
AXNSQUFAPTgrHTZNdAMDAwMDAwMDAwP8Z5JFTEloaFABAQEBAQGHg4NrUVJyAQEBAQFaPTk4LiQcFSNG
nwMDAwMDAwMDAwP2Z2IjMj9DRkyHAQEBAaVUUVFRUVJvAQEBAXNTRzocGhUPCxA7osADAwMDAwMDAwMB
Z18UEC03N0NMf25uVH1UcXQBpVpPUlhYU09LS0dEORoLBxAthnMDAwMDAwMDAwOlmXYOEA4ZIBk7Oz9j
Y0JyAQEBAQFYS0tHR0dEQUBAQEA8GggshAEDAwMDAwMDAwPB/zAKCRQKEiAZGyk/e2NvAQEBAXNSREFA
PT06OTk5Ojk6PTMmSfIDAwMDAwMDAwMDpGcSCQkFEhINGRspKS02a21vVQI+OC4uLiorKi4qLi44ODlC
Rp8DAwMDAwMDAwMDn2d2EQkEDRISDQoFES0sLDYyNTUoIh0aHRocHBwhJCQrKjFCTPcDAwMDAwMDAwMD
q6dnXxEEDRISDQ0KEREOFB8lIxATDw8PDw8PFRUXFxodIjVCTIalAwMDAwMDAwMDA3SZZ2JgXVxdYGBg
YCAgNzcbKSkRLQ4ODg4ODi0tLCwsLC07SZoBAwMDAwMDAwMDAwOl+aeZZ2dnZ2d6enp6eo6OYo5iYmJi
YmJiYmJiYmJiYmKAgIDzAwMDAwMDAwMDAwMDA8KlAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGw
iGf3AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDwbCkAwMDAwMDAwMD
AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwP3pQMDAwMDAwMDAwMDAwMDAwMDAwMD
AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOl8gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD
AwMDAwMDAwMDAwMDAwMDAwMD////////AAD///////8AAP///////wAA///5////AAD///H///8AAOAA
Af///wAAwAAB////AACAAAH///8AAAAAAP///wAAAAAA////AAAAAAD///8AAAAAAP///wAAgAAA////
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
3ACyotsAwrLrANHD9wDUxvkAzsPsAM3C6gDMwugA5+H3AObh9ABTG+EAWTayAFs4tABmP8kAflTpAHpa
ywCGadAAn3/uAKmN8AChid4Ayrj3ANPF9gDSxfMA0cTxANDE7gDMwecA2tHvAOfh9QBCE6MAahnpAPbw
/gBaGKkAdwvpAMyk9wB0D9UAeBHdAH4U6QB7E+MAgBbsAGUGuACCCuoAawq/AG4LxgBxDc4AXhqaAFch
hwBoB7oAZge3AIYH2ACVEu8AtA30ANEE9wDdA/kA9AL9AAAAAAB8KjgAijQhAJM5BgCbQhAApk0aALBY
JgC7ZDIAxm49AM53RgDUfkwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhYmNkZWZnaGgAAAAAAABfYWJjZGVmZ2hoAAAAAAAAVGBiY2Rl
ZmdoaAAAAAAAAEcHBAMFVUQICQoLDDJFWQBHBwQDBQYcLUAaCwwyDQ1ORwcEAwUGLgEBPwsMMg0NDUgH
BCFBKBYgOxUlPToNDQ1IBw4BAQEnCAkmAQEBEQ0NSSsqGSIoAUMwASUfNjwsI0YBATMFNDEBASYLDBQB
AQJIFxIpAQFCNzUaAQEkExgNSAcEHkEvHDcbGj49OQ0NDVAHBAMFBicBASYLDDINDQ1bBwQDBQYPOB0Q
CwwyDQ0NAFxYT1dWUVJTSktNTE5ODQAAAAAAAAAAAAAAAAAAAFqAP+n1AD/j4QA/3OsAAfrXAAAAAAAA
AAAAAAAAAAAAAAAA6fUAAOThAADc6wAA/NsAAAAAAAAAAIAAAAD//gAAKAAAADAAAABgAAAAAQAgAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAQAAAAJAAAABwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAABAAAABwAAAAzAAAAIgAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
ef82HoH/Mhp4/ywXa/8tF2v/Lxdu/zEYcf8zGXT/NRp3/zcbev85G33/OxyA/z0dg/8/Hob/QR+K/0Qh
kf9IJJv/TSel/1Aqr/9SK7X/VCy3/1Msvv9TLtb/Ui3V/1Et1f9RLNX/UCvV/1Ar1f9QK9X/UCvV/1As
0/9QLND/Ti3I/0wuuf9ON6L/g3qe/2ZlZNwAAAB8AAAAKwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAOSxm9zYhfP85Ho7/NBmJ/y4Vef8tFHX/LxV4/zEWfP80Fn//NheC/zcYhv86GIn/PBqM/z0a
kP9AHJP/QhyW/0Ufn/9LIqr/UCa1/1Qqv/9YLMj/WS3K/1ktyv9XL+z/VSzr/1Qq6/9SKev/Uijr/1En
6/9RJ+v/USfq/1En6v9RKOj/USjk/1Ar2P9OLsL/SC+h/5GOmv4AAACXAAAARQAAAAsAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAATkNz3jUhev86HpT/NhmR/zAVgP8tFHX/LxR4/zEVfP8zFn//NRaC/zcY
hv85GIn/OxmM/z4akP9AHJT/Qh2X/0chn/9NJqr/Uyq2/1kwwf9eM8r/XzXO/14zzv9cM+j/WTDu/1Yt
7v9UKu3/Uijt/1In7f9SJ+3/USbt/1Em7f9RJu3/USbt/1En6v9QKtr/TS67/4p9tv9/fn7MAAAAWgAA
ABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUEdwsjknef86H5P/OBqX/zIWhf8tFHb/LhR3/zAV
e/8yFX7/NRaB/zgYhf86GYj/PRqM/z8bkP9BHpT/RB+X/0kjn/9QKqr/VzG2/3xbzf+nkOH/sZ3n/52E
4f9rReb/XTXu/1ox7v9WLe7/VCrt/1Mp7f9SKO3/Uift/1In7f9RJu3/USbt/1Em7f9RKOX/Ty3L/3Vj
t//CwsLlAAAAagAAAB0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASD9ncUw9gf86H5D/ORub/zQX
iv8uFHn/LhR2/zAVev8yFX3/NReA/zgZhf86G4j/PRyM/0Eekf9DIJT/RySa/00on/9TL6r/wbPj////
///////////////////18/3/k3j0/1017v9aMe7/Vy7u/1Ys7f9UKu3/VCnt/1Io7f9SJ+3/Uift/1Em
7f9RJ+r/UCvV/1Q8rf/j4+P0AAAAegAAACUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFdK
gv9AKJD/Ohye/zUYkP8vFX3/LRR1/y8Uef8yFn3/NRiA/zgbhf89HYn/QSCO/0Qjkv9IJpb/TCmb/1Et
oP+BZr//////////////////////////////////2M77/2E67/9fN+7/XDTu/1ox7v9YL+7/Vi3u/1Qq
7f9TKe3/Uijt/1In7f9RJ+z/USrc/0svsf/T0N/7AAAAiwAAADEAAAACAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAFNHffdUQJf/PR+f/zcYlf8xFoL/LhV2/zAVef8zGH3/NxqB/zsdhv9AIYr/RSaQ/0oq
lf9OLpn/UjGe/1Y0ov9mRrD/9fP6////////////////////////////va34/2ZA7/9kPu//YTrv/184
7v9dNe7/WzLu/1gv7v9VK+3/VCnt/1Io7f9SJ+3/Uirh/00uu//Bu9r/AAAAmAAAAEIAAAAJAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAExAdehXRZP/Vjyp/zwdm/80F4j/LxZ4/zAXef80Gn3/OByC/z8i
h/9DJoz/Vzqa/4ZxuP+pmc3/oI/K/29Tr/9ePqv/bEy4/7ys4v/a0fH/29Hz/9HF8f+ki+P/bEfs/2pF
8P+Oc/P/s6D3/7Kf9/9/YPL/Xzju/1sz7v9YL+7/Vizt/1Qp7f9TKe3/Uirl/08uxP+fk8n/b29vwQAA
AFQAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEc8bsNSQor/WUGn/1Q5q/85HI//Mxp9/zMa
ev84Hn7/PCGE/0Imif9rVKT/9PL4///////////////////////Et9//ZEGz/2VCu/9pRMT/a0XN/21G
0/9tRtP/iWvr/+3o/f//////////////////////1877/2A57/9cNO7/WTDu/1Yt7v9VK+3/VCro/1Ev
zf90YrT/ra2s3gAAAGUAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEU7Z3JOP4H/VkCj/1o+
r/9UO6P/QCeJ/zggfP89JIH/QSeG/0ctjP+lmMj/////////////////////////////////gmfA/2ZE
uv9pRcP/a0XM/25H0v9uSNP/wLDy/////////////////////////////////4pt8/9hOu//Xjbu/1sz
7v9ZMO7/Vy/r/1Qw1f9VPaj/0NDQ8QICAnoAAAAlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4w
cSFJPHj/VD6d/1k9r/9ZQKn/WEKc/045i/9FLob/SC+J/0wxjv9xXKf/9PL4////////////////////
////////2dHr/3JSvf9rR8L/bUjK/3BK0v+UeN7/9vT9////////////////////////////2dD7/2hC
7/9lP+//Yzzv/2A57/9dNe7/WzPt/1Yy2/9ONK//y8fV+wICAosAAAAxAAAAAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAP///wFDN3D7UDyW/1g+rf9bQa3/g3K4/7eu0f/X0uX/zMXe/56Qwf9dRZn/YEee/6KS
x/+uoM//ua3X/+vo9P/////////////////a0e//29Ly/+3o+f/////////////////c0/v/t6X4/7ak
9/+agfX/a0bw/31c8v+0off/2c/7/9jO+/+mkPb/aEPv/1o04f9SNbj/xb/Z/wMDA5gAAABAAAAACAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wFANWroTjuP/1Y9qv+Db8T/////////////////////////
///i3u3/XEOa/1k9mv9aPp3/X0Ki/2NGpv+pmc//////////////////////////////////7en6/4Fi
8f9uS/D/bUnw/2xH8P9rRvD/mYD0////////////////////////////4dr8/1s15v9TNcL/mo/D/2xs
bMADAwNQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wE8MWLESTiG/1M6pP+Xhs7/////////
////////////////////////Zk+g/2hQo/9mTKT/Zkul/2VIpv95YLT/////////////////////////
////////t6Tp/25K6f9sSPD/a0bw/2pF8P9qRfD/taL3////////////////////////////9fL+/1w1
6f9VNMr/fGy2/5OTk9YDAwNiAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wE5LWCLRDR8/082
n/9WOq//q53U/+rn8v///////////+ro8v+bjcD/Ykuc/2VNof+PfLz/k4C//7Ci0f/u6/X/////////
//////////////b0/P/Ju+7/d1PW/21I6P9/X/L/kHTz/31c8v9qRfD/clDw/8a4+f/18/7/////////
///Owvr/fVzy/1sz6/9VM9H/X0ms/7q6uuwCAgJ3AAAAIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
/wE7MGY/PS1w/0kxl/9PM6v/UjWr/1I4nf9QOY//UTyN/1U+kf9ZQJX/movA//Xz+f//////////////
////////9vT6/6qY0/+Jbsf/eFnH/3ZTzf91UNX/jG7s/+3o/f/////////////////t6P3/g2Xy/2VA
7/9kPu//Yz3v/2E67/9fN+7/WzPu/1gv7f9UMNj/TDGs/8nIzvsAAACIAAAALgAAAAEAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAD///8BNypo/kMsj/9JLab/Ti+y/1I0t/9ONKf/TTWc/1E4of9WPKf/////////
////////////////////////r6Df/3RXy/90VtD/dlbW/3dX4P95We7/3tb8////////////////////
////////sZ73/2E67/9fOO7/Xjbu/1w07v9aMe7/WC/u/1Ys7f9TLd7/TTG2/7Ktxf8AAACUAAAAPQAA
AAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8BMSRe8D0nhv9KKrn/WjHs/1Ux3P9PL8P/Si6w/00y
tP9TNrr/oZHb///////////////////////k3/j/eV3e/3JT4P9zVOP/dFXn/3VU6v92Ve//qpX2////
///////////////////t6f3/im3z/2dC7/9gOe//WS/u/1cu7v9WLO3/VCrt/1Mp7f9SK+L/Ty+//46D
s/9ISEe1AAAATgAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKx9Wwz0miv9TLtr/VSzs/1Mq
4v9LKMj/RCew/0cqr/9LL7X/UjS7/2JGxf+Eb9X/iHHY/4Fo2f9nSdX/fWLe/8i98//29P3//////+Te
+/+5qPb/c1Dw/3ta8f+Ve/T/lHr0/4tu8/9uSvD/bEfw/2lF8P9oQ/D/Z0Hv/2A47v9YLu7/Uijt/1In
7f9SKeb/Ty3J/3xtr/+GhoXWAAAAYAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKB1Pij8p
kf9RLNP/Uijq/1An5/9IJM7/QSK1/0Ejq/9EJrL/SSq3/04vvP9SM8P/VzjH/1s7zP9gQNL/2ND1////
////////////////////////kXbz/2xI8P9rRu//akTv/2lD7/9oQu//ZUDv/2Q+7v9iPO7/Yzzv/2M9
7/9jPO//Yjrv/1gu7v9RJ+n/UCzQ/2FNqf+qqansAAAAcQAAACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAJx1LPUArjf9PLcn/USjm/1Am6/9KI9b/QR+7/zweqf8/IK7/QiOz/0Ynuf9JKr7/Ti7D/1Iy
yf9YNs7/o5Dn///////////////////////s5/z/eVnw/2ZA7/9kPu//Yzzv/2E77/9hOu//YTnu/2A4
7v9fOO7/Xzju/2A57v9gOO7/YDnu/2E67/9dNuz/Ui7W/0kvpf+9vLz4AAAAggAAACsAAAABAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAADspfv5NLrz/USre/1En7P9MJN3/Qx/C/zsdq/88Haz/Ph+x/0Eh
tf9EI7v/RybA/0opxf9PLcv/VTPR/25Q2/+PeOb/pZHt/4ht6/9gPOj/YDnr/1837/9dNe//XDTu/1w0
7v9cM+7/WzPu/1wz7v9cNO7/XDPu/1w07v9dNe7/Xjbu/1437v9fOO3/Xjvd/00yr/+fmbL+AAAAkQAA
ADcAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD0re+dJL6j/UCzP/1Eo5f9OJeT/RSDK/zwc
sP87HKn/PB2u/z8ftP9BILn/QyK+/0Ykwv9LKMj/TyvN/1Iv0/9VMtj/VzPc/1k04P9aM+X/WTDp/1kw
7f9YL+3/Vy7t/1cv7f9YLu7/WC/u/1gv7v9ZL+7/WTDu/1ox7v9aMu7/WzPu/1wz7v9cNO3/XTne/1g9
uv+NhKz/IyMjqAAAAEkAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADorcXFCLov/Sy+z/1As
0P9QKd3/SCPO/z8etv86G6j/Oxys/z0dsf9AHrb/QR+7/0Qiwf9HI8b/SSXL/00o0P9PK9X/USza/1Is
3v9TK+P/Uyvn/1Qq6/9TKu3/VCrt/1Uq7f9UKu3/VSvt/1Ys7f9WLe3/Vy3t/1cu7v9YL+7/WS/t/1kw
7f9aMuj/Wjba/1Y6uv94bKP/aGdnzQAAAF4AAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAA7LHawQi6M/0ovrf9OLsL/SSi+/0Eirf85Hpz/Oh6g/zwfpf89IKn/QCGu/0Iis/9DJLj/Ria9/0kn
wf9LKcb/TSnK/04qz/9PKtP/TyrX/1Ar2/9RKt7/UCne/1Eq3v9RKt7/USve/1Ir3v9TLN7/Uy3e/1Qu
3v9ULt//VTDe/1Yx3P9WMtb/VTXK/1I4s/9fUJj/l5aW7AAAAHEAAAAhAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAOCpuiT4sfftELpD/RCyY/z4njv83IoD/NiJ//zgig/85I4f/OySL/zwl
j/8/J5P/QCiW/0Ipmv9DK5//RSyi/0Ytpv9ILan/SS6s/0ousP9LL7P/Sy+z/0svs/9LL7P/Sy+z/0sv
s/9LL7P/TDCz/0wws/9NMbP/TTGz/04ysf9OM67/TjSq/0w0n/9GM4j/p6em9wAAAH8AAAApAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4KW1ZNyhtoDMlZsQtIFvFKx5Wxiwf
WcYuIFzGLyJfxjAiYcYyI2TGMyRmxjMlacY1J2zGNyhuxjcocMY4KXLGOSp1xjsrd8Y8K3rGPCx6xjws
esY8LHrGPCx6xjwsesY8LHrGPCx6xjwrecY8K3nGPCt5xj0secY+LXrGPy588T8uff8/Lnv/lZGf/QAA
AHkAAAAyAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcq
bT05Km/wf3mS/wAAAFsAAAA6AAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAcmuK94SDg4sAAAAsAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAh4SRiZqambMAAAAOAAAABQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
/////wAA///4f///AAD///B///8AAOAAAH///wAAgAAAf///AACAAAB///8AAAAAAD///wAAAAAAP///
AAAAAAA///8AAAAAAD///wAAAAAAP///AAAAAAAf//8AAIAAAB///wAAgAAAAAH/AACAAAAAAH8AAIAA
AAAAPwAAgAAAAAA/AADAAAAAAB8AAMAAAAAAHwAAwAAAAAAfAADAAAAAAB8AAMAAAAAAHwAA4AAAAAAP
AADgAAAAAA8AAOAAAAAADwAA4AAAAAAPAADgAAAAAA8AAOAAAAAABwAA4AAAAAAHAADgAAAAAAcAAOAA
AAAABwAA4AAAAAAHAADgAAAAAAMAAPAAAAAAAwAA8AAAAAADAAD4AAAAAAMAAPgAAAAAAwAA+AAAAAAB
AAD8AAAAAAEAAPwAAAAAAQAA/AAAAAABAAD+AAAAAAEAAP8AAAAAAQAA/8AAAAAAAAD//////8AAAP//
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
7f9TKe3/Uift/1Em7f9RJu3/USbs/1Ep4P9LLrX/wsDI9QAAAH0AAAAnAAAAAAAAAAAAAAAAAAAAAFZN
eMM9Joj/OBqY/zAVf/8uFHf/MRV8/zUXgf84GYb/PBuM/0Eekv9GIZj/Timl/41yzf/XzfH/2M7z/8S1
8P9yUPD/WTDu/1Ys7f9UKe3/Uijt/1In7f9RJu3/USfr/08ty//Audn9AAAAjgAAADQAAAADAAAAAAAA
AAAAAAAAUEdvck07jP86HJz/MhaH/y0Udv8xFnv/NRiA/zochv9BII7/RSST/0wpm/9UMKT/////////
/////////////8/D+v9fOO7/WzPu/1kv7v9WLO3/VCnt/1Io7f9RJu3/UCvY/6KV0P8AAACaAAAARgAA
AAsAAAAAAAAAAAAAAABLQ2kgVUaH/0crov82GI//LxV4/zIYe/84G4H/PyKJ/0gpkf9lSaX/X0Kl/1o5
p/+6q97////////////29Pz/mX/w/2dB7/+BYvL/akXw/1w07v9YL+7/VCrt/1Io7f9SKuD/gW7F/4mJ
icsAAABYAAAAFAAAAAAAAAAAAAAAAAAAAABMP3z+WUGn/0Upnf8zGn//Nhx8/zwhg/9dRJr/6OXx////
////////18/p/21NuP9nQ8D/a0bN/21G0/+bge3/9vT+////////////xLX5/1017v9ZL+7/Vizt/1Qr
5v9iSL3/vLu75QAAAGcAAAAcAAAAAAAAAAAAAAAAAAAAAEg7c/BVPqD/WT6s/043lP9AKIL/RCuH/21Y
pP//////////////////////qJbT/2hGvv9sRsv/b0nT/+Te+f/////////////////18/7/ZD7v/2A5
7/9cNO7/WTDq/1Ayvv+/vcXxAAAAeQAAACUAAAAAAAAAAAAAAAAAAAAAQjdqw1E9l/9aP6//mInE/8G6
1/+2rND/iXi1/4Bssf+tn87/zcTi//Xz+f//////493y/9vS8v/t6fn//////+Te/P/Iu/n/tqT3/4Zo
8/+qlfb/z8P6/7qp+P97XPD/VjXM/66nx/sCAgKLAAAAMQAAAAIAAAAAAAAAAAAAAAA5Ll6LSzmL/3dh
vf//////////////////////gW2x/2BGn/9hRaL/blOt///////////////////////SxvL/bkvw/2xH
8P9qRfD/taL3/////////////////9fN+/9YNdb/pZrK/wICApgAAABCAAAACQAAAAAAAAAAAAAAADoz
XD9EM33/Ujip/7Wp2f/18/n//////8zF3/9sVaP/jXu6/5yKxP/Ty+b/////////////////0sbw/4lq
3P+Ia/P/kHTz/4Zo8v+FZ/L/4tv8///////i2vz/kHTz/1gy3v+GdcH/Z2dnwQAAAFQAAAASAAAAAAAA
AAAAAAAA////ATorbv5KMKD/UDOq/000lv9NN4r/UzyR/9XP5f/////////////////Tyub/fWG+/3dX
xf96WNr/xLX3/////////////////6iT9v9jPO//YTrv/1017v9ZMO7/VS3l/2hRu/+bm5veAAAAZQAA
ABsAAAAAAAAAAAAAAAAAAAAAMiRj8UUpof9YMeP/UzDQ/0wvsv9RNbf/q53f////////////9fT8/4py
4v9zVOL/jnTs/3VV7f+7qvj////////////29P7/moH1/2M+7/9bMu7/Vi3u/1Qq7f9TKuj/TS+4/7q5
ufEAAAB5AAAAJQAAAAAAAAAAAAAAAAAAAAAtIFvRSiu3/1Mq6/9NKNj/RCS0/0YpsP9OMLr/VTjC/1w+
yf9iQ9H/tKTs////////////9vT+/5R68/9vS/D/bkrw/2xH7/9oQ+//ZkDw/2Q/7/9hOu//WTDu/1Io
6/9OLcf/m5Wz+wAAAIsAAAAwAAAAAQAAAAAAAAAAAAAAACsfVqBLLrT/USjm/04l4v9BILz/PSCq/0Ij
s/9JKrz/Ty/E/1U0y/+3qOz////////////28/7/jHDy/2U/7/9jPO//Yjrv/2E57v9gN+7/Xzju/184
7v9gOe7/Xzfu/1Iv0f+Sh7b/AAAAlgAAAD0AAAAHAAAAAAAAAAAAAAAAJh1LWUUtmv9QK9n/UCbo/0Qg
xv87HKr/Ph6w/0Eht/9FI7//SinG/1Evz/9iQtn/hGnm/1w35P9cNer/WzPu/1ox7v9aMO7/WjLu/1sy
7v9bMu7/WzPu/1w07v9eNe7/XTva/3tssP9BQUG1AAAATgAAAA8AAAAAAAAAAAAAAAAAAAAAPyyB8Esu
tf9QKtn/SCPN/zscrP87HKv/Ph6z/0Egu/9FI8L/SifK/04r0v9RLNn/Uyvg/1Mr5/9UK+v/VCns/1Qq
7P9VK+z/Vizs/1Yt7f9XLu3/WTDs/1kx6v9ZN9b/bVuu/3h3d9UAAABhAAAAGQAAAAAAAAAAAAAAAAAA
AAA5Km4gPyyC9kguo/9HK67/PCKY/zkgkv87IZj/PSKf/0Elpf9DJ63/Rymz/0kruf9LLL//TSzF/08t
y/9PLMz/TyzM/08szP9PLcz/UC7M/1EvzP9SMMv/UjLH/1I1uv9MNpr/mpqZ4wAAAGsAAAAiAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAOSpxiTopd8M0JGzFLyBixjEhZ8YzI2vGNCRvxjYlc8Y5KHnGOyl9xjwq
gMY+K4XGQC2JxkEti8ZBLYvGQS2LxkEti8ZBLYvGQS2KxkEuisZCL4nGQC6D90Auf/+Pipv0AAAAWwAA
ACcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOCptcX95
kfsAAAAzAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAkY6WwYeGhUYAAAAJ//x////4f/+AAH//AAA//wAAP/8AAD//AAA//wAAP/8AAAA/AAAADwAA
AAcAAAAHgAAAB4AAAAeAAAADgAAAA4AAAAPAAAADwAAAA8AAAAHAAAABwAAAAcAAAAHgAAAB4AAAAOAA
AADgAAAA8AAAAPAAAAD8AAAA////8P////goAAAAEAAAACAAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAJM5Bv+bQhD/pk0a/7BYJv+7ZDL/xm49/853Rv/Ufkz/1H5M/wAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAHwqOP+TOQb/m0IQ/6ZNGv+wWCb/u2Qy/8ZuPf/Od0b/1H5M/9R+TP8AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABeGpr/ijQh/5tCEP+mTRr/sFgm/7tkMv/Gbj3/zndG/9R+TP/Ufkz/AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAWhip/0kP4f89C8D/Mgig/zMJn/9XIYf/QhOj/z0Ps/9CEr3/RhTH/0sX
0f9PGdr/Uxvh/1Ud5t9VHeafVR3mEFoYqf9JD+H/PQvA/zIIoP8zCZ//NQqj/3dZxf/Ow+z/0MTu/4Be
2f9LF9H/Txna/1Mb4f9VHeb/VR3m/1Ud5r9aGKn/SQ/h/z0LwP8yCKD/Mwmf/zUKo//Nwur/////////
///RxPH/SxfR/08Z2v9TG+H/VR3m/1Ud5v9VHeb/SQ/hv0kP4f89C8D/mYTQ/8zB5/+zo9z/Xju6/56H
2f+hid7/aUDS/7uo7v/Txfb/qY3w/1Ud5v9VHeb/VR3m/0kP4b9JD+H/SRrE/////////////////7Sk
3/89D7P/QhK9/7mn6v////////////////9gK+j/VR3m/1Ud5v/Htfbn0cP3/8Ky6/9lRrj/mYTP/7Oj
3P//////5+H1/+fh9///////u6ju/6eM7f9+VOn/yrj3/9TG+f+/qvb/9vT++///////////WTay/zMJ
n/9bOLT/5uH0////////////uafq/0sX0f9PGdr/c0bn////////////9PH9/0kP4b93S+n/VSrI/7Ki
2////////////9rR7/96Wsv/Zj/J/4Be2f///////////76p9P9qOen/gFbs/1Ud5v9JD+G/SQ/h/z0L
wP+MdMr/zMHn/8zC6P93WcX/elrL/31c0v+AXtn/0sXz/9PF9v+ff+7/VR3m/1Ud5v9VHeb/SQ/hr0kP
4f89C8D/Mgig/zMJn/81CqP/tKTf////////////uafq/0sX0f9PGdr/Uxvh/1Ud5v9VHeb/VR3m/0kP
4UBJD+H/PQvA/zIIoP8zCZ//NQqj/0Ucr/+GadD/iWvW/1Ijy/9LF9H/Txna/1Mb4f9VHeb/VR3m/1Ud
5v8AAAAASQ/hMD0LwJ8yCKC/MwmfvzUKo785Daq/PQ+zv0ISvb9GFMe/SxfRv08Z2r9TG+G/VR3mv1Ud
5r9VHeb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAVR3mcIA/st4APwz/AD8A/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAP/wAA
Ov8AAGf/gABW///+E/g=
</value>
</data>
</root>

163
ModelPlugin.cs Normal file
View File

@@ -0,0 +1,163 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Windows.Forms;
using Tekla.Structures.Geometry3d;
using Tekla.Structures.Model;
using Tekla.Structures.Model.UI;
using Tekla.Structures.Plugins;
namespace TeklaModelPlugin1
{
public class PluginData
{
#region Fields
//
// Define the fields specified on the Form.
//
/* Some examples:
[StructuresField("RebarName")]
public string RebarName;
[StructuresField("RebarSize")]
public string RebarSize;
[StructuresField("RebarGrade")]
public string RebarGrade;
[StructuresField("RebarBendingRadius")]
public string RebarBendingRadius;
[StructuresField("RebarClass")]
public int RebarClass;
[StructuresField("RebarSpacing")]
public double RebarSpacing;
*/
#endregion
}
[Plugin("TeklaModelPlugin1")]
[PluginUserInterface("TeklaModelPlugin1.MainForm")]
public class TeklaModelPlugin1 : PluginBase
{
#region Fields
private Model _Model;
private PluginData _Data;
//
// Define variables for the field values.
//
/* Some examples:
private string _RebarName = string.Empty;
private string _RebarSize = string.Empty;
private string _RebarGrade = string.Empty;
private ArrayList _RebarBendingRadius = new ArrayList();
private int _RebarClass = new int();
private double _RebarSpacing;
*/
#endregion
#region Properties
private Model Model
{
get { return this._Model; }
set { this._Model = value; }
}
private PluginData Data
{
get { return this._Data; }
set { this._Data = value; }
}
#endregion
#region Constructor
public TeklaModelPlugin1(PluginData data)
{
Model = new Model();
Data = data;
}
#endregion
#region Overrides
public override List<InputDefinition> DefineInput()
{
//
// This is an example for selecting two points; change this to suit your needs.
//
List<InputDefinition> PointList = new List<InputDefinition>();
Picker Picker = new Picker();
ArrayList PickedPoints = Picker.PickPoints(Picker.PickPointEnum.PICK_TWO_POINTS);
PointList.Add(new InputDefinition(PickedPoints));
return PointList;
}
public override bool Run(List<InputDefinition> Input)
{
try
{
GetValuesFromDialog();
//
// This is an example for selecting two points; change this to suit your needs.
//
ArrayList Points = (ArrayList)Input[0].GetInput();
Point StartPoint = Points[0] as Point;
Point EndPoint = Points[1] as Point;
//
// Write your code here; better yet, create private methods and call them from here.
//
}
catch (Exception Exc)
{
MessageBox.Show(Exc.ToString());
}
return true;
}
#endregion
#region Private methods
/// <summary>
/// Gets the values from the dialog and sets the default values if needed
/// </summary>
private void GetValuesFromDialog()
{
/* Some examples:
_RebarName = Data.RebarName;
_RebarSize = Data.RebarSize;
_RebarGrade = Data.RebarGrade;
char[] Parameters = { ' ' };
string[] Radiuses = Data.RebarBendingRadius.Split(Parameters, StringSplitOptions.RemoveEmptyEntries);
foreach (string Item in Radiuses)
_RebarBendingRadius.Add(Convert.ToDouble(Item));
_RebarClass = Data.RebarClass;
_RebarSpacing = Data.RebarSpacing;
if (IsDefaultValue(_RebarName))
_RebarName = "REBAR";
if (IsDefaultValue(_RebarSize))
_RebarSize = "12";
if (IsDefaultValue(_RebarGrade))
_RebarGrade = "Undefined";
if (_RebarBendingRadius.Count < 1)
_RebarBendingRadius.Add(30.00);
if (IsDefaultValue(_RebarClass) || _RebarClass <= 0)
_RebarClass = 99;
if (IsDefaultValue(_RebarSpacing) || _RebarSpacing <= 0)
_RebarSpacing = 200.0;
*/
}
// Write your private methods here.
#endregion
}
}

View File

@@ -0,0 +1,35 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("TeklaModelPlugin1")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Tekla")]
[assembly: AssemblyProduct("Tekla Structures")]
[assembly: AssemblyCopyright("Copyright © Tekla 2012")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("581baed8-6c93-4723-915b-715a6d9ce3fb")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

97
TeklaModelPlugin1.csproj Normal file
View File

@@ -0,0 +1,97 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<TSVersionNumber>21.0</TSVersionNumber>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.50727</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{446EEA05-2797-4180-9AEE-AD34E311DC76}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>TeklaModelPlugin1</RootNamespace>
<AssemblyName>TeklaModelPlugin1</AssemblyName>
<ApplicationIcon>
</ApplicationIcon>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileUpgradeFlags>
</FileUpgradeFlags>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<OldToolsVersion>2.0</OldToolsVersion>
<TargetFrameworkProfile />
<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>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<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' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="Tekla.Structures, Version=$(TSVersionNumber).0.0, Culture=neutral, PublicKeyToken=2f04dbe497b71114, processorArchitecture=MSIL" />
<Reference Include="Tekla.Structures.Catalogs, Version=$(TSVersionNumber).0.0, Culture=neutral, PublicKeyToken=2f04dbe497b71114, processorArchitecture=MSIL" />
<Reference Include="Tekla.Structures.Datatype, Version=$(TSVersionNumber).0.0, Culture=neutral, PublicKeyToken=2f04dbe497b71114, processorArchitecture=MSIL" />
<Reference Include="Tekla.Structures.Dialog, Version=$(TSVersionNumber).0.0, Culture=neutral, PublicKeyToken=2f04dbe497b71114, processorArchitecture=MSIL" />
<Reference Include="Tekla.Structures.Model, Version=$(TSVersionNumber).0.0, Culture=neutral, PublicKeyToken=2f04dbe497b71114, processorArchitecture=MSIL" />
<Reference Include="Tekla.Structures.Plugins, Version=$(TSVersionNumber).0.0, Culture=neutral, PublicKeyToken=2f04dbe497b71114, processorArchitecture=MSIL">
<HintPath>..\..\..\..\..\..\..\..\..\Program Files\Tekla Structures\$(TSVersionNumber)\nt\bin\plugins\Tekla.Structures.Plugins.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="ModelPlugin.cs" />
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="MainForm.Designer.cs">
<DependentUpon>MainForm.cs</DependentUpon>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="MainForm.resx">
<SubType>Designer</SubType>
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

3
TeklaModelPlugin1.slnx Normal file
View File

@@ -0,0 +1,3 @@
<Solution>
<Project Path="TeklaModelPlugin1.csproj" />
</Solution>