<component id="2" name="Dynamics CRM OptionSet" componentClassID="Microsoft.ManagedComponentHost" description="Includes and runs custom script code. For example, apply a business rule that limits the range of valid values in an &quot;income&quot; column or add values in two columns and calculate the average of the sum." localeId="1033" version="9" contactInfo="Includes and runs custom script code. For example, apply a business rule that limits the range of valid values in an &quot;income&quot; column or add values in two columns and calculate the average of the sum.;Microsoft Corporation; Microsoft SQL Server; Microsoft Corporation; All Rights Reserved; http://www.microsoft.com/sql/support;7"><properties><property id="3" name="SourceCode" state="cdata" dataType="System.String" isArray="true" description="Stores the source code of the component" typeConverter="NOTBROWSABLE"><arrayElements arrayElementCount="30"><arrayElement dataType="System.String"><![CDATA[My Project\AssemblyInfo.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[Imports System
Imports System.Reflection
Imports 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.

' Review the values of the assembly attributes

<Assembly: AssemblyTitle("SC_2923d961693e43508c67daf914a8fad9")> 
<Assembly: AssemblyDescription("")> 
<Assembly: AssemblyCompany("")> 
<Assembly: AssemblyProduct("SC_2923d961693e43508c67daf914a8fad9")> 
<Assembly: AssemblyCopyright("Copyright @  2016")> 
<Assembly: AssemblyTrademark("")> 
<Assembly: CLSCompliant(True)> 

<Assembly: ComVisible(False)> 

'The following GUID is for the ID of the typelib if this project is exposed to COM
<Assembly: Guid("0337904c-efbe-4626-9a35-d241b8405727")> 

' 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 Build and Revision Numbers 
' by using the '*' as shown below:
' <Assembly: AssemblyVersion("1.0.*")>

<Assembly: AssemblyVersion("1.0.0.0")> 
<Assembly: AssemblyFileVersion("1.0.0.0")> 
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[ComponentWrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services component wrapper
' This module defines the base class for your component
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class UserComponent
    Inherits ScriptComponentPlus

    Public Connections As New Connections(Me)
    Public Variables As New Variables(Me)

    Public Overrides Sub ProcessInput(ByVal InputID As Integer, ByVal InputName As String, ByVal Buffer As PipelineBuffer, ByVal OutputMap As OutputNameMap)

        If InputID = MyBase.ComponentMetaData.InputCollection("Input").ID Then
            Input_ProcessInput(New InputBuffer(Me, InputID, True, Buffer, OutputMap))
        End If

    End Sub

    Public Overridable Sub Input_ProcessInput(ByVal Buffer As InputBuffer)

        While Buffer.NextRow()
            Input_ProcessInputRow(Buffer)
        End While

    End Sub

    Public Overridable Sub Input_ProcessInputRow(ByVal Row As InputBuffer)

    End Sub

End Class

Public Class Connections

    Dim ParentComponent As ScriptComponent

    <CLSCompliant(False)> _
    Public Sub New(ByVal Component As ScriptComponent)
        ParentComponent = Component
    End Sub

    Public ReadOnly Property CrmConnection() As IDTSConnectionManager100
        Get
            Return ParentComponent.ComponentMetaData.RuntimeConnectionCollection("CrmConnection").ConnectionManager
        End Get
    End Property

End Class

Public Class Variables

    Dim ParentComponent As ScriptComponent

    <CLSCompliant(False)> _
    Public Sub New(ByVal Component As ScriptComponent)
        ParentComponent = Component
    End Sub

End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[SC_2923d961693e43508c67daf914a8fad9.vbproj]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <ProjectTypeGuids>{30D016F9-3734-4E33-A861-5E7D899E18F3};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>8.0.30703</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{69D7743D-2EC7-4CE0-879E-4895E4F489C3}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>My Project</AppDesignerFolder>
    <RootNamespace>SC_2923d961693e43508c67daf914a8fad9</RootNamespace>
    <AssemblyName>SC_2923d961693e43508c67daf914a8fad9</AssemblyName>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>.\bin\Debug\</OutputPath>
    <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
    <DefineDebug>true</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
    <DebugSymbols>false</DebugSymbols>
    <Optimize>true</Optimize>
    <OutputPath>.\bin\Release\</OutputPath>
    <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
    <DefineDebug>false</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <!-- This sections specifies references for the project. -->
  <ItemGroup>
    <Reference Include="adodb, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
      <EmbedInteropTypes>True</EmbedInteropTypes>
    </Reference>
    <Reference Include="CozyRoc.Dynamics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>C:\Program Files (x86)\Microsoft SQL Server\110\SDK\Assemblies\CozyRoc.Dynamics.dll</HintPath>
    </Reference>
    <Reference Include="CozyRoc.SSISPlus.2014, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea" />
    <Reference Include="Microsoft.SqlServer.ManagedDTS, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SqlServer.ManagedDTS\v4.0_11.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.ManagedDTS.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="System.Web.Services" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xml" />
    <Reference Include="Microsoft.SqlServer.TxScript, Version=12.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSRuntimeWrap, Version=12.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSPipelineWrap, Version=12.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.PipelineHost, Version=12.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Compile Include="main.vb" />
    <Compile Include="BufferWrapper.vb" />
    <Compile Include="ComponentWrapper.vb" />
  </ItemGroup>
  <!-- Visual Basic supports Importing namespaces (equivalent to using statements in C#).-->
  <ItemGroup>
    <Import Include="Microsoft.VisualBasic" />
    <Import Include="System" />
    <Import Include="System.Collections" />
    <Import Include="System.Data" />
    <Import Include="System.Diagnostics" />
    <Import Include="System.Windows.Forms" />
  </ItemGroup>
  <ItemGroup>
    <AppDesigner Include="My Project\" />
    <Compile Include="My Project\AssemblyInfo.vb">
      <SubType>Code</SubType>
    </Compile>
    <EmbeddedResource Include="My Project\Resources.resx">
      <Generator>VbMyResourcesResXFileCodeGenerator</Generator>
      <LastGenOutput>Resources.Designer.vb</LastGenOutput>
      <CustomToolNamespace>My.Resources</CustomToolNamespace>
    </EmbeddedResource>
    <Compile Include="My Project\Resources.Designer.vb">
      <AutoGen>True</AutoGen>
      <DesignTime>True</DesignTime>
      <DependentUpon>Resources.resx</DependentUpon>
      <SubType>Code</SubType>
    </Compile>
    <None Include="My Project\Settings.settings">
      <Generator>SettingsSingleFileGenerator</Generator>
      <LastGenOutput>Settings.Designer.vb</LastGenOutput>
    </None>
    <Compile Include="My Project\Settings.Designer.vb">
      <AutoGen>True</AutoGen>
      <DependentUpon>Settings.settings</DependentUpon>
      <SubType>Code</SubType>
    </Compile>
  </ItemGroup>
  <!-- Include the build rules for a VB project.-->
  <Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
  <!-- This section defines VSTA properties that describe the host-changable project properties. -->
  <ProjectExtensions>
    <VisualStudio>
      <FlavorProperties GUID="{30D016F9-3734-4E33-A861-5E7D899E18F3}">
        <ProjectProperties HostName="VSTAHostName" HostPackage="{B3A685AA-7EAF-4BC6-9940-57959FA5AC07}" ApplicationType="usd" Language="vb" TemplatesPath="" DebugInfoExeName="devenv.exe" DebugInfoCommandLine="/vstaHostDebugUri:&quot;vstadebug0ecadbe2-dbf5-43c2-8493-a205c59f8db6/4b4706d6-fcc3-44a6-836a-423b7d67fe34&quot;" />
        <Host Name="SSIS_SC110" />
        <ProjectClient>
          <HostIdentifier>SSIS_SC120</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
</Project>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[My Project\Settings.settings]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version='1.0' encoding='iso-8859-1'?>
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)" GeneratedClassNamespace="" GeneratedClassName="MySettings">
  <Profiles>
    <Profile Name="(Default)" />
  </Profiles>
  <Settings />
</SettingsFile>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[main.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' COZYROC SQL Server Integration Services user script component
'
' Copyright (c) 2006-2016 COZYROC LLC
' 
' Permission is hereby granted, free of charge, to any person
' obtaining a copy of this software and associated documentation
' files (the "Software"), to deal in the Software without
' restriction, including without limitation the rights to use,
' copy, modify, merge, publish, distribute, sublicense, and/or sell
' copies of the Software, and to permit persons to whom the
' Software is furnished to do so, subject to the following
' conditions:
' 
' The above copyright notice and this permission notice shall be
' included in all copies or substantial portions of the Software.
' 
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
' EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
' OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
' NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
' HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
' WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
' FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
' OTHER DEALINGS IN THE SOFTWARE.

Imports System
Imports System.ComponentModel
Imports System.Web.Services.Protocols
Imports System.Text.RegularExpressions
Imports System.Collections
Imports System.Collections.Generic
Imports System.Data

Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS
Imports CozyRoc.SqlServer.SSIS.Attributes
Imports CozyRoc.Dynamics.Crm
Imports CozyRoc.Dynamics.Crm2011.OrganizationService
Imports Metadata4 = CozyRoc.Dynamics.Crm.MetadataService
Imports Metadata3 = CozyRoc.Dynamics.Crm3.MetadataService
Imports ADODB


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute()> _
<CLSCompliant(False)> _
<SortProperties(New String() { _
    "CrmConnection", "Entity", "Attribute", "LabelColumn", "ValueColumn", "Mapping", _
    "Action", "ReplaceValue", "StateCodeColumn"})> _
<ValidateProperties("Validate")> _
<FilterProperties("GetProperties")> _
Public Class ScriptMain
    Inherits UserComponent


    Public Const StatusCode As String = "statuscode"


    Public Enum NonMatchAction
        Create
        Replace
        Nullify
        Ignore
        RaiseError
    End Enum    ' NonMatchAction


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub Input_ProcessInputRow(ByVal Row As InputBuffer)
        Try
            Dim label As String = Convert.ToString(GetBufferValue_(Row.Buffer, m_lcIdx))

            If Not m_dictionary Is Nothing Then
                ' Mapping specified. Use it.
                label = Convert.ToString(m_dictionary(label))
            End If

            If String.IsNullOrEmpty(label) Then
                Exit Sub
            End If

            Dim value As Object = m_values(label)
            If Not value Is Nothing Then
                Row.Buffer(m_vcIdx) = Convert.ToInt32(value)
            Else
                ' Input option value not found.
                Select Case Me.Action
                    Case NonMatchAction.Create
                        Call CreateOptionSet_(Row)

                    Case NonMatchAction.Replace
                        Row.Buffer(m_vcIdx) = Convert.ToInt32(Me.ReplaceValue)

                    Case NonMatchAction.Nullify
                        Call Row.Buffer.SetNull(m_vcIdx)

                    Case NonMatchAction.RaiseError
                        Throw New Exception(String.Format("OptionSet label not found: {0}", label))
                End Select
            End If
        Catch ex As SoapException
            Call FireError_(ex.Detail.InnerXml)
        Catch ex As Exception
            Call FireError_(ex.Message)
        End Try
    End Sub ' Input_ProcessInputRow


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub PreExecute()
        Call MyBase.PreExecute()

        ' Setup CRM service.
        m_connection = CType( _
            Me.Connections.CrmConnection.AcquireConnection(Nothing),  _
            IConnection)
        Call m_connection.Connect()

        ' Load OptionSet values.
        m_values = GetOptionSetValues_()

        Dim input As IDTSInput100 = MyBase.ComponentMetaData.InputCollection(0)

        ' Get input columns index.
        m_lcIdx = Me.HostComponent.BufferManager.FindColumnByLineageID( _
            input.Buffer, _
            input.InputColumnCollection(Me.LabelColumn).LineageID)
        m_vcIdx = Me.HostComponent.BufferManager.FindColumnByLineageID( _
            input.Buffer, _
            input.InputColumnCollection(Me.ValueColumn).LineageID)

        If Not String.IsNullOrEmpty(Me.StateCodeColumn) Then
            m_sccIdx = Me.HostComponent.BufferManager.FindColumnByLineageID( _
                input.Buffer, _
                input.InputColumnCollection(Me.StateCodeColumn).LineageID)
        End If

        If Not String.IsNullOrEmpty(Me.Mapping) Then
            ' Mapping specified. Load it.
            m_dictionary = LoadMapping_()
        End If
    End Sub ' PreExecute


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub PostExecute()
        Call MyBase.PostExecute()

        Call m_connection.Close()
        m_values = Nothing
        m_dictionary = Nothing
    End Sub ' PostExecute


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Function Validate(ByRef errMessage As String) As Boolean
        Dim result As Boolean

        Try
            If String.IsNullOrEmpty(Me.CrmConnection) Then
                Throw New Exception("Select Dynamics CRM Connection.")
            End If

            If String.IsNullOrEmpty(Me.Entity) Then
                Throw New Exception("Select Dynamics CRM entity.")
            End If

            If String.IsNullOrEmpty(Me.Attribute) Then
                Throw New Exception("Select OptionSet attribute.")
            End If

            Dim input As IDTSInput100 = Me.ComponentMetaData.InputCollection(0)
            If input.IsAttached Then
                If String.IsNullOrEmpty(Me.LabelColumn) Then
                    Throw New Exception("Select label column.")
                End If

                If String.IsNullOrEmpty(Me.ValueColumn) Then
                    Throw New Exception("Select value column.")
                End If

                If Me.Action = NonMatchAction.Create AndAlso _
                    Me.Attribute.Equals(StatusCode, StringComparison.OrdinalIgnoreCase) AndAlso _
                    String.IsNullOrEmpty(Me.StateCodeColumn) Then

                    Throw New Exception("Select statecode column.")
                End If

                ' Setup used input columns.
                Call input.InputColumnCollection.RemoveAll()
                Dim virtInput As IDTSVirtualInput100 = input.GetVirtualInput()
                Dim virtColl As IDTSVirtualInputColumnCollection100 = virtInput.VirtualInputColumnCollection
                Call virtInput.SetUsageType( _
                    virtColl(Me.LabelColumn).LineageID, _
                    DTSUsageType.UT_READONLY)
                Call virtInput.SetUsageType( _
                    virtColl(Me.ValueColumn).LineageID, _
                    DTSUsageType.UT_READWRITE)
                If Not String.IsNullOrEmpty(Me.StateCodeColumn) Then
                    Call virtInput.SetUsageType( _
                        virtColl(Me.StateCodeColumn).LineageID, _
                        DTSUsageType.UT_READONLY)
                End If
            End If

            ' Store connection information in the runtime connection collection, too.
            ' Cannot directly use RuntimeConnectionCollection in the property get/set
            ' because of issues with multi-threading.
            Me.ComponentMetaData.RuntimeConnectionCollection("CrmConnection").ConnectionManagerID = Me.CrmConnection

            result = True
        Catch ex As Exception
            result = False
            errMessage = ex.Message
        End Try

        Validate = result
    End Function    'Validate


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns list of entities in the currently selected Dynamics CRM connection.
    Public Function GetEntityList() As String()
        Dim result() As String

        Dim connection As IConnection = CType( _
            Me.DesignConnections(Me.CrmConnection).AcquireConnection(Nothing),  _
            IConnection)
        Call connection.Connect()

        Try
            result = connection.GetEntityList(2)  ' 0 - None
            Call Array.Sort(result)
        Finally
            Call connection.Close()
        End Try

        GetEntityList = result
    End Function    ' GetEntityList


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns list of OptionSet attributes in the currently selected Dynamics CRM entity.
    Public Function GetOptionSetList() As String()
        If String.IsNullOrEmpty(Me.Entity) Then
            Throw New Exception("Select Dynamics CRM Entity.")
        End If

        If m_attributes.Contains(Me.Entity) Then
            Return CType(m_attributes(Me.Entity), String())
        End If

        ' Load entity's OptionSet attributes.
        Dim result As New ArrayList()

        Dim connection As IConnection = CType( _
            Me.DesignConnections(Me.CrmConnection).AcquireConnection(Nothing),  _
            IConnection)
        Call connection.Connect()

        Try
            Dim service As Object = connection.GetService(0)    ' 0 - CRM Service
            ' 11 - AttributeTypeCode.Picklist (CRM 2011)
            ' 12 - AttributeType.Picklist (CRM 4)
            Dim pickListType As Integer = Convert.ToInt32(IIf(TypeOf service Is OrganizationServiceClient, 11, 12))
            ' 13 - AttributeTypeCode.Status (CRM 2011)
            ' 15 - AttributeType.Status (CRM 4)
            Dim statusType As Integer = Convert.ToInt32(IIf(TypeOf service Is OrganizationServiceClient, 13, 15))

            Dim entity As IEntity = connection.GetEntity(Me.Entity)
            Dim attributes() As IAttribute = entity.GetAttributes()
            For Each attribute As IAttribute In attributes
                If attribute.CrmType = pickListType OrElse attribute.CrmType = statusType Then
                    Call result.Add(attribute.Name)
                End If
            Next

            Call result.Sort()
        Finally
            Call connection.Close()
        End Try

        m_attributes(Me.Entity) = result.ToArray(GetType(String))

        GetOptionSetList = CType(m_attributes(Me.Entity), String())
    End Function    ' GetOptionSetList


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns list of current properties based on current state.
    Public Function GetProperties() As String()
        Dim result As New ArrayList

        ' Setup static.
        Call result.Add("CrmConnection")
        Call result.Add("Entity")
        Call result.Add("Attribute")
        Call result.Add("LabelColumn")
        Call result.Add("ValueColumn")
        Call result.Add("Mapping")
        Call result.Add("Action")

        ' Setup dynamic.
        Select Case Me.Action
            Case NonMatchAction.Create
                If String.Equals( _
                    Me.Attribute, _
                    StatusCode, _
                    StringComparison.OrdinalIgnoreCase) Then

                    Call result.Add("StateCodeColumn")
                End If

            Case NonMatchAction.Replace
                Call result.Add("ReplaceValue")
        End Select

        Return CType(result.ToArray(GetType(String)), String())
    End Function    ' GetProperties


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category(" Settings")> _
    <Description("Select Dynamics CRM Connection Manager.")> _
    <Connection("CrmConnectionType")> _
    <RefreshProperties(RefreshProperties.All)> _
    Public Property CrmConnection() As String
        Get
            CrmConnection = m_crmConnection
        End Get
        Set(ByVal value As String)
            If m_crmConnection <> value Then
                m_crmConnection = value
                Me.Entity = String.Empty
            End If
        End Set
    End Property    ' CrmConnection


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category(" Settings")> _
    <Description("Select Dynamics CRM entity.")> _
    <List("GetEntityList")> _
    <RefreshProperties(RefreshProperties.All)> _
    Public Property Entity() As String
        Get
            Entity = m_entity
        End Get
        Set(ByVal value As String)
            If m_entity <> value Then
                m_entity = value
                Me.Attribute = String.Empty
            End If
        End Set
    End Property    ' Entity


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category(" Settings")> _
    <Description("Select OptionSet attribute.")> _
    <List("GetOptionSetList")> _
    <RefreshProperties(RefreshProperties.All)> _
    Public Property Attribute() As String
        Get
            Attribute = m_attribute
        End Get
        Set(ByVal value As String)
            m_attribute = value
        End Set
    End Property    ' Attribute


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category(" Settings")> _
    <Description("Select column containing OptionSet label.")> _
    <InputVirtualColumn()> _
    Public Property LabelColumn() As String
        Get
            LabelColumn = m_labelCol
        End Get
        Set(ByVal value As String)
            m_labelCol = value
        End Set
    End Property    ' LabelColumn


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category(" Settings")> _
    <Description("Select column containing OptionSet value.")> _
    <InputVirtualColumn()> _
    Public Property ValueColumn() As String
        Get
            ValueColumn = m_valueCol
        End Get
        Set(ByVal value As String)
            m_valueCol = value
        End Set
    End Property    ' ValueColumn


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category(" Settings")> _
    <Description("Select variable containing mapping (string, dictionary, recordset). Optional.")> _
    <Variable()> _
    Public Property Mapping() As String
        Get
            Mapping = m_mapping
        End Get
        Set(ByVal value As String)
            m_mapping = value
        End Set
    End Property    ' Mapping


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("No match")> _
    <Description("Select how to handle non-matching values.")> _
    <RefreshProperties(RefreshProperties.All)> _
    Public Property Action() As NonMatchAction
        Get
            Action = m_action
        End Get
        Set(value As NonMatchAction)
            m_action = value
        End Set
    End Property    ' Action


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("No match")> _
    <Description("Specifies replace value to use when there is no match.")> _
    Public Property ReplaceValue() As Integer
        Get
            ReplaceValue = m_replaceValue
        End Get
        Set(value As Integer)
            m_replaceValue = value
        End Set
    End Property    ' ReplaceValue


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("No match")> _
    <Description("Select column containing state code.")> _
    <InputVirtualColumn()> _
    Public Property StateCodeColumn() As String
        Get
            StateCodeColumn = m_stateCodeCol
        End Get
        Set(ByVal value As String)
            m_stateCodeCol = value
        End Set
    End Property    ' StateCodeColumn
#End Region ' Properties


#Region "Internals"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private ReadOnly Property CrmConnectionType() As String()
        Get
            CrmConnectionType = New String() {"DYNAMICS-CRM"}
        End Get
    End Property    ' CrmConnectionType


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub FireError_(ByVal message As String)
        Dim cancel As Boolean = False
        Call MyBase.ComponentMetaData.FireError( _
            0, _
            "Dynamics CRM OptionSet", _
            message, _
            String.Empty, _
            0, _
            cancel)
    End Sub ' FireError_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetVariable_(ByVal varName As String) As Object
        Dim result As Object
        Dim vars As IDTSVariables100 = Nothing

        Call Me.VariableDispenser.LockOneForRead(varName, vars)
        Try
            result = vars(varName).Value
        Finally
            Call vars.Unlock()
        End Try

        GetVariable_ = result
    End Function    ' GetVariable_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetBufferValue_( _
        ByVal buffer As Microsoft.SqlServer.Dts.Pipeline.PipelineBuffer, _
        ByVal index As Integer) As Object

        Dim result As Object = Nothing

        If index <> -1 AndAlso Not buffer.IsNull(index) Then
            result = buffer(index)
        End If

        GetBufferValue_ = result
    End Function    ' GetBufferValue_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Load OptionSet attribute values.
    Private Function GetOptionSetValues_() As Hashtable
        Dim result As New Hashtable

        Dim service As Object = m_connection.GetService(0)   ' 0 - CRM Service
        Dim service2011 As OrganizationServiceClient = TryCast( _
            service,  _
            OrganizationServiceClient)
        If Not service2011 Is Nothing Then
            ' CRM 2011.
            Dim req As New OrganizationRequest()
            req.RequestName = "RetrieveAttribute"
            req("MetadataId") = New Guid()
            req("RetrieveAsIfPublished") = False
            req("EntityLogicalName") = Me.Entity
            req("LogicalName") = Me.Attribute

            Dim res As OrganizationResponse = service2011.Execute(req)
            Dim enumMeta As EnumAttributeMetadata = CType( _
                res("AttributeMetadata"),  _
                EnumAttributeMetadata)
            For Each optionMeta As OptionMetadata In enumMeta.OptionSet.Options
                ' Find invariant label.
                Dim invariantIndex As Integer = -1
                Dim count As Integer = optionMeta.Label.LocalizedLabels.Count
                For index As Integer = 0 To count - 1
                    Dim label As LocalizedLabel = optionMeta.Label.LocalizedLabels(index)
                    If label.LanguageCode = 1033 Then
                        invariantIndex = index
                        Exit For
                    End If
                Next

                If invariantIndex = -1 Then
                    ' Invariant label not found.
                    invariantIndex = 0
                End If

                result(optionMeta.Label.LocalizedLabels(invariantIndex).Label) = optionMeta.Value.Value
            Next
        Else
            Dim metadata As Object = m_connection.GetService(1) ' 1 - Metadata Service.
            Dim metadata4 As Metadata4.MetadataService = TryCast( _
                metadata,  _
                Metadata4.MetadataService)
            If Not metadata4 Is Nothing Then
                ' CRM 4.
                Dim req4 As New Metadata4.RetrieveAttributeRequest()
                req4.EntityLogicalName = Me.Entity
                req4.LogicalName = Me.Attribute

                Dim res4 As Metadata4.RetrieveAttributeResponse = CType( _
                    metadata4.Execute(req4),  _
                    Metadata4.RetrieveAttributeResponse)
                Dim options4() As Metadata4.Option = CType( _
                    res4.AttributeMetadata,  _
                    Metadata4.PicklistAttributeMetadata).Options

                For Each option4 As Metadata4.Option In options4
                    ' Find invariant label.
                    Dim invariantIndex As Integer = -1
                    Dim count As Integer = option4.Label.LocLabels.Length
                    For index As Integer = 0 To count - 1
                        Dim label As Metadata4.LocLabel = option4.Label.LocLabels(index)
                        If label.LanguageCode.Value = 1033 Then
                            invariantIndex = index
                            Exit For
                        End If
                    Next

                    If invariantIndex = -1 Then
                        ' Invariant label not found.
                        invariantIndex = 0
                    End If

                    result(option4.Label.LocLabels(invariantIndex).Label) = option4.Value.Value
                Next
            Else
                Dim metadata3 As Metadata3.MetadataService = TryCast(metadata, Metadata3.MetadataService)
                If Not metadata3 Is Nothing Then
                    ' CRM 3.
                    Dim options3() As Metadata3.Option = CType( _
                        metadata3.RetrieveAttributeMetadata(Me.Entity, Me.Attribute),  _
                        Metadata3.PicklistAttributeMetadata).Options

                    For Each option3 As Metadata3.Option In options3
                        result(option3.Description) = option3.OptionValue
                    Next
                Else
                    Throw New Exception("Unhandled service object.")
                End If
            End If
        End If

        GetOptionSetValues_ = result
    End Function    ' GetOptionSetValues_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Create OptionSet for specifed input and output columns.
    Private Sub CreateOptionSet_(ByVal row As InputBuffer)
        Dim name As String = Convert.ToString(GetBufferValue_(row.Buffer, m_lcIdx))
        Dim value As Object = GetBufferValue_(row.Buffer, m_vcIdx)
        Dim isStatusCode As Boolean = Me.Attribute.Equals( _
            StatusCode, _
            StringComparison.OrdinalIgnoreCase)

        Dim service As Object = m_connection.GetService(0)   ' 0 - CRM Service
        Dim service2011 As OrganizationServiceClient = TryCast( _
            service,  _
            OrganizationServiceClient)
        If Not service2011 Is Nothing Then
            ' CRM 2011.
            Dim req As New OrganizationRequest()
            req.RequestName = Convert.ToString(IIf( _
                isStatusCode, _
                "InsertStatusValue", _
                "InsertOptionValue"))

            req("EntityLogicalName") = Me.Entity
            req("AttributeLogicalName") = Me.Attribute

            ' Setup label.
            Dim locLabel2011 As New LocalizedLabel()
            locLabel2011.Label = name
            locLabel2011.LanguageCode = 1033
            Dim label2011 As New Label()
            label2011.LocalizedLabels = New LocalizedLabelCollection()
            label2011.LocalizedLabels.Add(locLabel2011)
            req("Label") = label2011

            If isStatusCode Then
                req("StateCode") = Convert.ToInt32(GetBufferValue_(row.Buffer, m_sccIdx))
            End If

            If Not value Is Nothing Then
                ' Value provided. Use it.
                req("Value") = Convert.ToInt32(value)
            End If

            Dim res2011 As OrganizationResponse = service2011.Execute(req)
            If value Is Nothing Then
                ' Set new OptionSet value.
                row.Buffer(m_vcIdx) = res2011("NewOptionValue")
            End If
        Else
            Dim metadata As Object = m_connection.GetService(1) ' 1 - Metadata Service.
            Dim metadata4 As Metadata4.MetadataService = TryCast( _
                metadata,  _
                Metadata4.MetadataService)
            If Not metadata4 Is Nothing Then
                ' CRM 4.

                ' Setup label.
                Dim locLabel4 As New Metadata4.LocLabel()
                locLabel4.Label = name
                locLabel4.LanguageCode = New Metadata4.CrmNumber()
                locLabel4.LanguageCode.Value = 1033

                If isStatusCode Then
                    Dim isvReq As New Metadata4.InsertStatusValueRequest()
                    isvReq.EntityLogicalName = Me.Entity
                    isvReq.AttributeLogicalName = Me.Attribute
                    isvReq.Label = New Metadata4.CrmLabel()
                    isvReq.Label.LocLabels = New Metadata4.LocLabel() {locLabel4}
                    isvReq.StateCode = New Metadata4.CrmNumber()
                    isvReq.StateCode.Value = Convert.ToInt32(GetBufferValue_(row.Buffer, m_sccIdx))

                    If Not value Is Nothing Then
                        ' Value provided. Use it.
                        isvReq.Value = New Metadata4.CrmNumber()
                        isvReq.Value.Value = Convert.ToInt32(value)
                    End If

                    Dim isvRes As Metadata4.InsertStatusValueResponse = CType( _
                        metadata4.Execute(isvReq),  _
                        Metadata4.InsertStatusValueResponse)
                    If value Is Nothing Then
                        ' Set new OptionSet value.
                        row.Buffer(m_vcIdx) = isvRes.NewOptionValue
                    End If
                Else
                    Dim iovReq As New Metadata4.InsertOptionValueRequest()
                    iovReq.EntityLogicalName = Me.Entity
                    iovReq.AttributeLogicalName = Me.Attribute
                    iovReq.Label = New Metadata4.CrmLabel()
                    iovReq.Label.LocLabels = New Metadata4.LocLabel() {locLabel4}

                    If Not value Is Nothing Then
                        ' Value provided. Use it.
                        iovReq.Value = New Metadata4.CrmNumber()
                        iovReq.Value.Value = Convert.ToInt32(value)
                    End If

                    Dim iovRes As Metadata4.InsertOptionValueResponse = CType( _
                        metadata4.Execute(iovReq),  _
                        Metadata4.InsertOptionValueResponse)
                    If value Is Nothing Then
                        ' Set new OptionSet value.
                        row.Buffer(m_vcIdx) = iovRes.NewOptionValue
                    End If
                End If
            Else
                Dim metadata3 As Metadata3.MetadataService = TryCast(metadata, Metadata3.MetadataService)
                If Not metadata3 Is Nothing Then
                    ' CRM 3 - doesn't support it.
                    Throw New Exception("Dynamics CRM 3 doesn't support OptionSet value insert.")
                Else
                    Throw New Exception("Unhandled service object.")
                End If
            End If
        End If
    End Sub ' CreateOptionSet_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function LoadMapping_() As IDictionary
        Dim mapping As Object = GetVariable_(Me.Mapping)
        Dim mappingDict As New Hashtable
        Dim result As IDictionary = mappingDict

        If TypeOf mapping Is IDictionary Then
            result = CType(mapping, IDictionary)
        ElseIf TypeOf mapping Is IDictionary(Of String, String) Then
            Dim genericDict As IDictionary(Of String, String) = CType( _
                mapping,  _
                IDictionary(Of String, String))
            For Each pair As KeyValuePair(Of String, String) In genericDict
                mappingDict(pair.Key) = pair.Value
            Next
        ElseIf TypeOf mapping Is String Then
            ' Mappings are separated with [CR][LF].
            ' Each mapping is combination [key]=[value].
            Dim mappingList() As String = Regex.Unescape(CStr(mapping)).Split( _
                New String() {"\r\n"}, _
                StringSplitOptions.RemoveEmptyEntries)
            For Each pair As String In mappingList
                Dim keyValue() As String = pair.Split(New Char() {Chr(61)}, 2)  ' 61 (=)

                If (keyValue.Length < 2) Then
                    ' Not a valid item.
                    Continue For
                End If

                mappingDict(keyValue(0)) = keyValue(1)
            Next
        ElseIf TypeOf mapping Is Recordset Then
            ' Mapping is recordset. Use first and second fields.
            Dim rs As Recordset = CType(mapping, Recordset)
            If rs.Fields.Count < 2 Then
                Throw New Exception("Mapping.Recordset should contain at least 2 columns.")
            End If

            If Not (rs.BOF AndAlso rs.EOF) Then
                Call rs.MoveFirst()
            End If

            While Not rs.EOF
                mappingDict(Convert.ToString(rs.Fields(0).Value)) = Convert.ToString(rs.Fields(1).Value)
                Call rs.MoveNext()
            End While
        ElseIf TypeOf mapping Is DataSet Then
            ' Variable contains ADO.NET DataSet. Use first and second fields.
            Dim dt As DataTable = CType(mapping, DataSet).Tables(0)
            If dt.Columns.Count < 2 Then
                Throw New Exception("Mapping.DataSet should contain at least 2 columns.")
            End If

            For Each row As DataRow In dt.Rows
                mappingDict(row(0)) = row(1)
            Next
        Else
            Throw New Exception("Mapping parameter must contain IDictionary, String, Recordset or DataSet.")
        End If

        LoadMapping_ = result
    End Function    ' LoadMapping_
#End Region ' Internals


#Region "Attributes"
    Private m_crmConnection As String
    Private m_entity As String
    Private m_attribute As String
    Private m_labelCol As String
    Private m_valueCol As String
    Private m_mapping As String
    Private m_action As NonMatchAction
    Private m_replaceValue As Integer
    Private m_stateCodeCol As String

    Private m_connection As IConnection
    Private m_attributes As New Hashtable
    Private m_values As Hashtable
    Private m_lcIdx As Integer
    Private m_vcIdx As Integer
    Private m_sccIdx As Integer
    Private m_dictionary As IDictionary
#End Region ' Attributes

End Class   ' ScriptMain
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[BufferWrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services buffer wrappers
' This module defines classes for accessing data flow buffers
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!


Option Strict Off   ' This allows usage of PipelineBuffer typed accessors.

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class InputBuffer
    Inherits ScriptBufferPlus

    Public Sub New(ByVal Component As ScriptComponent, ByVal ObjectID As Integer, ByVal IsInput As Boolean, ByVal Buffer As PipelineBuffer, ByVal OutputMap As OutputNameMap)
        MyBase.New(Component, ObjectID, IsInput, Buffer, OutputMap)
    End Sub

    Public Overrides ReadOnly Property StaticInputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overloads Function NextRow() As Boolean
        NextRow = MyBase.NextRow()
    End Function

    Public Overloads Function EndOfRowset() As Boolean
        EndOfRowset = MyBase.EndOfRowset
    End Function

End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[Project]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF16LE]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<c:Project xmlns:c="http://schemas.microsoft.com/codeprojectml/2010/08/main" xmlns:msb="http://schemas.microsoft.com/developer/msbuild/2003" runtimeVersion="3.0" schemaVersion="1.0">
	<msb:PropertyGroup>
		<msb:CodeName>SC_2923d961693e43508c67daf914a8fad9</msb:CodeName>
		<msb:Language>msBuild</msb:Language>
		<msb:DisplayName>SC_2923d961693e43508c67daf914a8fad9</msb:DisplayName>
		<msb:ProjectId>{02D149E5-6F0B-4DAE-BE15-3434B01C2E2B}</msb:ProjectId>
	</msb:PropertyGroup>
	<msb:ItemGroup>
		<msb:Project Include="SC_2923d961693e43508c67daf914a8fad9.vbproj"/>
		<msb:File Include="My Project\AssemblyInfo.vb"/>
		<msb:File Include="My Project\Resources.Designer.vb"/>
		<msb:File Include="My Project\Settings.Designer.vb"/>
		<msb:File Include="main.vb"/>
		<msb:File Include="BufferWrapper.vb"/>
		<msb:File Include="My Project\Resources.resx"/>
		<msb:File Include="ComponentWrapper.vb"/>
		<msb:File Include="My Project\Settings.settings"/>
	</msb:ItemGroup>
</c:Project>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[My Project\Settings.Designer.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA['------------------------------------------------------------------------------
' <autogenerated>
'     This code was generated by a tool.
'
'     Changes to this file may cause incorrect behavior and will be lost if
'     the code is regenerated.
' </autogenerated>
'------------------------------------------------------------------------------

Option Strict Off
Option Explicit On



Partial Friend NotInheritable Class MySettings
    Inherits System.Configuration.ApplicationSettingsBase

    Private Shared m_Value As MySettings

    Private Shared m_SyncObject As Object = New Object

    <System.Diagnostics.DebuggerNonUserCode()> _
    Public Shared ReadOnly Property Value() As MySettings
        Get
            If (MySettings.m_Value Is Nothing) Then
                System.Threading.Monitor.Enter(MySettings.m_SyncObject)
                If (MySettings.m_Value Is Nothing) Then
                    Try
                        MySettings.m_Value = New MySettings
                    Finally
                        System.Threading.Monitor.Exit(MySettings.m_SyncObject)
                    End Try
                End If
            End If
            Return MySettings.m_Value
        End Get
    End Property
End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[My Project\Resources.resx]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?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>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[My Project\Resources.Designer.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA['------------------------------------------------------------------------------
' <autogenerated>
'     This code was generated by a tool.
'
'     Changes to this file may cause incorrect behavior and will be lost if
'     the code is regenerated.
' </autogenerated>
'------------------------------------------------------------------------------

Option Strict Off
Option Explicit On


Namespace My.Resources
    
    '''<summary>
    '''   A strongly-typed resource class, for looking up localized strings, etc.
    '''</summary>
    'This class was auto-generated by the Strongly Typed Resource Builder
    'class via a tool like ResGen or Visual Studio.NET.
    'To add or remove a member, edit your .ResX file then rerun ResGen
    'with the /str option, or rebuild your VS project.
    Class MyResources
        
        Private Shared _resMgr As System.Resources.ResourceManager
        
        Private Shared _resCulture As System.Globalization.CultureInfo
        
        Friend Sub New()
            MyBase.New
        End Sub
        
        '''<summary>
        '''   Returns the cached ResourceManager instance used by this class.
        '''</summary>
        <System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)>  _
        Public Shared ReadOnly Property ResourceManager() As System.Resources.ResourceManager
            Get
                If (_resMgr Is Nothing) Then
                    Dim temp As System.Resources.ResourceManager = New System.Resources.ResourceManager("My.Resources.MyResources", GetType(MyResources).Assembly)
                    _resMgr = temp
                End If
                Return _resMgr
            End Get
        End Property
        
        '''<summary>
        '''   Overrides the current thread's CurrentUICulture property for all
        '''   resource lookups using this strongly typed resource class.
        '''</summary>
        <System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)>  _
        Public Shared Property Culture() As System.Globalization.CultureInfo
            Get
                Return _resCulture
            End Get
            Set
                _resCulture = value
            End Set
        End Property
    End Class
End Namespace
]]></arrayElement></arrayElements></property><property id="4" name="BinaryCode" state="cdata" dataType="System.String" isArray="true" description="Stores the binary representation of the component" typeConverter="NOTBROWSABLE"><arrayElements arrayElementCount="2"><arrayElement dataType="System.String"><![CDATA[SC_2923d961693e43508c67daf914a8fad9.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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
CG9bAAAKEQczDggRCG9cAAAKb10AAAomEQkX1hMJEQkRCo63MscIb14AAAreBwZvRgAACtwCexUA
AAQCbycAAAYI0CAAAAEoFAAACm9fAAAKb2AAAAoCexUAAAQCbycAAAZvLwAACnQKAAAbCwcqAAEQ
AAACAGsAvyoBBwAAAAATMAMAsgAAABYAABFzVgAACgsHcg0AAHBvXQAACiYHcusBAHBvXQAACiYH
cvkBAHBvXQAACiYHcg0CAHBvXQAACiYHciUCAHBvXQAACiYHcj0CAHBvXQAACiYHck0CAHBvXQAA
CiYCbzEAAAZFAgAAAAIAAAAjAAAAKy0CbykAAAZyawEAcBsoYQAACiwaB3JbAgBwb10AAAomKwwH
cnsCAHBvXQAACiYH0CAAAAEoFAAACm9fAAAKdAoAABsqAAATMAEACQAAABcAABECewsAAAQKBioA
AACOAnsLAAAEAxYoYgAAChYuEgIDfQsAAAQCfmMAAApvKAAABioTMAEACQAAABgAABECewwAAAQK
BioAAACOAnsMAAAEAxYoYgAAChYuEgIDfQwAAAQCfmMAAApvKgAABioTMAEACQAAABkAABECew0A
AAQKBioAAAAiAgN9DQAABCoAAAATMAEACQAAABoAABECew4AAAQKBioAAAAiAgN9DgAABCoAAAAT
MAEACQAAABsAABECew8AAAQKBioAAAAiAgN9DwAABCoAAAATMAEACQAAABwAABECexAAAAQKBioA
AAAiAgN9EAAABCoAAAATMAEACQAAAB0AABECexEAAAQKBioAAAAiAgN9EQAABCoAAAATMAEACQAA
AB4AABECexIAAAQKBioAAAAiAgN9EgAABCoAAAATMAEACQAAAB8AABECexMAAAQKBioAAAAiAgN9
EwAABCoAAAATMAMAEwAAACAAABEXjSAAAAELBxZylQIAcKIHCgYqABMwBwAdAAAAIQAAERYKAigj
AAAKFnKvAgBwA35jAAAKFhIAb2QAAAoqAAAAGzADADQAAAAiAAARFAwCb2UAAAoDEgJvZgAACggD
b2cAAApvaAAACigRAAAKC94HCG9pAAAK3AcoEQAACgoGKgEQAAACABAAFCQABwAAAAATMAIAJQAA
ACMAABEUCwQVLhYDBG9qAAAKLQ0DBG9rAAAKKBEAAAoLBygRAAAKCgYqAAAAEzADAPICAAAkAAAR
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
AAAKKLIAAAoXjSAAAAETDRENFnIBBQBwohENF2+zAAAKEwYRBhMPFhMOKzwRDxEOmhMIEQgXjW4A
AAETEBEQFh89nREQGG+0AAAKEwcRB463GDIOCBEHFpoRBxeab2AAAAoRDhfWEw4RDhEPjrcyvDhJ
AQAAB3UPAAACOZoAAAAHdA8AAAITCREJb0kAAAZvTgAABhgvC3ILBQBwczUAAAp6EQlvRgAABiwJ
EQlvSAAABi1YEQlvTQAABitPCBEJb0kAAAYWjCsAAAFvUAAABm9SAAAGKBEAAAooLAAAChEJb0kA
AAYXjCsAAAFvUAAABm9SAAAGKBEAAAooLAAACm9gAAAKEQlvSwAABhEJb0gAAAYsqDikAAAAB3Vy
AAABOY4AAAAHdHIAAAFvvQAAChZvvgAAChMKEQpvvwAACm/AAAAKGC8LcnUFAHBzNQAACnoRCm/B
AAAKb8IAAAoTESsuERFvwwAACnRmAAABEwsIEQsWb8QAAAooEQAAChELF2/EAAAKKBEAAApvYAAA
ChERb68AAAotyd4jERF1agAAASwMERF1agAAAW+wAAAK3CsLctsFAHBzNQAACnoJCgYqAAABHAAA
AgA+ADZ0AAwAAAAAAgDiAUkrAhYAAAAAHgIoFwAACioTMAIALQAAACcAABF+IQAABC0gcnAGAHDQ
DQAAAigUAAAKb9AAAApz0QAACgsHgCEAAAR+IQAABCoAAAATMAEABgAAACgAABF+IgAABCoAAB4C
gCIAAAQqQnMXAAAKKBEAAAqAJAAABCoAAAAeAijSAAAKKhswAQA/AAAAKQAAEX4jAAAELTJ+JAAA
BCgRAAAKKNMAAAp+IwAABC0cc0MAAAaAIwAABN4QfiQAAAQoEQAACijUAAAK3H4jAAAEKgABEAAA
AgAdAAwpABAAAAAAtAAAAM7K774BAAAAkQAAAGxTeXN0ZW0uUmVzb3VyY2VzLlJlc291cmNlUmVh
ZGVyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tl
eVRva2VuPWI3N2E1YzU2MTkzNGUwODkjU3lzdGVtLlJlc291cmNlcy5SdW50aW1lUmVzb3VyY2VT
ZXQCAAAAAAAAAAAAAABQQURQQURQtAAAAEJTSkIBAAEAAAAAAAwAAAB2NC4wLjMwMzE5AAAAAAUA
bAAAALwaAAAjfgAAKBsAADQcAAAjU3RyaW5ncwAAAABcNwAApAYAACNVUwAAPgAAEAAAACNHVUlE
AAAAED4AAHgNAAAjQmxvYgAAAAAAAAACAAABVz+iCQkPAAAA+iUzABYAAAEAAACZAAAAHAAAACQA
AABgAAAALwAAAAwAAADoAAAABgAAAKsAAAAOAAAAKQAAABAAAAAhAAAALQAAABAAAAABAAAADgAA
AAEAAAADAAAAAwAAAAMAAAAAAAocAQAAAAAACgB8AVIBCgCwAZIBBgDAAbkBCgAYAlIBBgCWArkB
CgAYA+4CDgBqA1MDEgC5A5gDFgDqA5gDEgD5A5gDDgCdBFMDGgBYBTAFBgBkB1EHBgCXB1EHDgAx
CBwIBgDtCLkBBgA0CSMJBgBhCUwJHgDICbMJHgAVCv8JHgAuCv8JHgBbCkMKBgCFCnIKCgDECp0K
CgDcChMAHgARC/QKBgBGCyYLBgBkC7kBBgCIC7kBCgChCxMABgDlC8YLBgD5C7kBEgAADJgDBgAN
DLkBIgBwDEcMIgCfDEcMIgDKDEcMIgDnDEcMIgAqDUcMJgCLDW0NBgCZDbkBBgCuDbkBBgDMDbkB
CgDqDZ0KKgARDgYOFgBpDpgDIgCNDkcMIgC0DkcMIgDrDkcMIgAoD0cMIgBMD0cMBgBvD7kBIgC7
D0cMIgDVD0cMLgDaACYQLgBcECYQBgBuELkBBgB5EFEHDgCDEBwIDgCOEBwIMgDoELsQCgACERMA
CgBLEZ0KGgBzETAFGgCEETAFGgDCETAFMgDgEbsQMgD2EbsQMgAKErsQMgAfErsQMgAuErsQMgBi
Ej0SMgByEj0SMgB5Ej0SMgCSEj0SMgCsEj0SMgBiErUSMgByErUSBgDbErkBBgDgErkBBgD7ErkB
MgALE7sQMgA3E7sQMgBHE7sQBgCPE3QTNgDgErkBMgDXEz0SMgDvEz0SMgAGFD0SMgAuFD0SMgBI
FD0SMgBfFD0SMgAGFLUSMgAuFLUSMgCjFD0SMgC8FD0SMgDWFD0SMgDvFD0SBgCOFXQTBgCcFXQT
OgDHFbsVOgDRFbsVBgDZFXQTBgDnFVEHBgDzFXQTBgAsFrkBCgBAFp0KHgBrFkwWBgB6FrkBBgCT
FrkBBACYFrUVBACjFrUVBADPFrUVOgDVFrsVOgDdFrsVOgD8FrsVOgAdF7sVOgA4F7sVDgB1F1MX
DgCPF1MXDgCrF1MXEgDDF5gDHgDqF/8JHgAFGP8JDgAXGFMXHgAlGP8JHgA6GP8JDgBMGFMXDgBe
GFMXDgByGFMXBgCgGI4YBgDHGLYYBgDaGHIKBgBsGSYLBgCHGcYLBgCYGcYLBgCmGcYLBgC+GY4Y
BgDVGcYLBgDwGcYLBgAHGsYLBgAkGsYLBgCcGlEHBgDgGiYLBgAAGyYLBgA4Gx4bBgBRG44YBgBu
G44YBgCJG44YBgCkG44YBgC9G44YBgDWG44YBgDzG44YAAAAAAEAAAAAAAEAAQAAAAAAKQA3AAUA
AQABAAAAAABeADcACQABAAIAAAEQAGkANwANAAEAAwAFAQAAcwAAAA0ABQAIAAUBAACBAAAADQAF
AA8AAQAAAJwAqAAdAAYAEQABAAAAzACoAC0ABgAWAAEAAADaAKgADQAIABoAAQAAAOYAqAANAAkA
HAABAAAA8ACoACAACgAdAAIBAAD7AAAAQQAbAD4AAAAAAAoBFgENACEAPgAAARAARwGoAE0AIwBC
AKEQAACrFbUVAAAlAEUAoRAAAJgWtRUAACUARQChEAAAoxa1FQAAJQBOAKEQAADPFrUVAAAlAFEA
oRAAAPcYtRUAACUAVAChEAAADRm1FQAAJQBUAKEQAAAVGbUVAAAlAFcAoRAAAB4ZtRUAACUAWQCh
EAAAIxm1FQAAJQBZAKEQAAAvGbUVAAAlAFsAoRAAADsZtRUAACUAWwChEAAARxm1FQAAJQBdAKEQ
AABTGbUVAAAlAF8AoRAAAGMZtRUAACUAXwAxANsBIAAxAAQCLQAxACYCOgAxAEsCRwAhACcDkAAG
ANoAyQAGAOYAzQABAP0E4QABAP0E4QBWgJEF9QABALAH9QABAMAH9QABAMkH9QABANUH9QABAOAH
9QABAOsH9QABAPUHPgEBAP4HQgEBAA0I9QABAD0IRQEBAEoISQEBAFcISQEBAGAIQgEBAGgIQgEB
AHAIQgEBAHkITQEGBvIIQgFWgPoIPgFWgAEJPgFWgAkJPgFWgBEJPgFWgBgJPgERAEQJdwERAG0J
ewERAOAJmQERAOgJnQFQIAAAAAAGGIwBEwABAFggAAAAAAYYjAETAAEAYCAAAAAAERjHARcAAQCM
IAAAAAATCM4BGwABAKQgAAAAABMI9AEoAAEAvCAAAAAAEwgdAjUAAQDUIAAAAAATCDsCQgABAOwg
AAAAAEYCgQJjAAEACCEAAAAARgKKAmgAAgAcIQAAAACDAJsCbAACADQhAAAAAEYCowJxAAIASCEA
AAAAEQCsAngAAgBkIQAAAAABAMoCgAADAIAhAAAAAAYYjAETAAQAiCEAAAAAAwjeAosABAC8IQAA
AAAGGIwBEwAEANAhAAAAAAYYjAGvAAQA4CEAAAAARgozBLsACQD0IQAAAABGCkoEuwAJAAgiAAAA
AIYAYgTAAAkAICIAAAAAhgBqBMAACQA4IgAAAAAGGIwBEwAJAFgiAAAAAEYCsQTRAAkAiCIAAAAA
RgPQBNsADQCcIgAAAABGA+ME2wAOAKAiAAAAAAYYjAHlAA8AsCIAAAAABghxBesAEADcIgAAAAAG
GIwB5QAQAOwiAAAAAAYYjAETABEAACMAAAAARgLjBNsAEQBcJAAAAABGApwFEwASAHglAAAAAEYC
pwUTABIAnCUAAAAABgCzBQ0BEgBMJwAAAAAGAMcFuwATAKgnAAAAAAYA1QW7ABMAMCkAAAAABgDm
BbsAEwDwKQAAAAAGCHEFcQATAAgqAAAAAAYI9AUTARMALCoAAAAABggMBnEAFABEKgAAAAAGCBcG
EwEUAGgqAAAAAAYIIgZxABUAgCoAAAAABggwBhMBFQCMKgAAAAAGCD4GcQAWAKQqAAAAAAYITgYT
ARYAsCoAAAAABgheBnEAFwDIKgAAAAAGCG4GEwEXANQqAAAAAAYIfgZxABgA7CoAAAAABgiKBhMB
GAD4KgAAAAAGCJYGGAEZABArAAAAAAYIoQYdARkAHCsAAAAABgisBmgAGgA0KwAAAAAGCL0GIwEa
AEArAAAAAAYIzgZxABsAWCsAAAAABgjiBhMBGwBkKwAAAAABCPYGuwAcAIQrAAAAAAEADAcTARwA
sCsAAAAAAQAfBygBHQAALAAAAAABADQHLQEeADQsAAAAAAEAbgc0ASAANC8AAAAAAQCCB9sAIADE
MgAAAAABAKMHOQEhAEA1AAAAAAMYjAETACEASDUAAAAAFgh5CX8BIQCENQAAAAAWCI0JhAEhAJg1
AAAAABYImQmJASEAoDUAAAAAERjHARcAIgC0NQAAAAAGGIwBEwAiALw1AAAAABYI9QmgASIAAAAA
AAMABhgYGhcAIgAAAAAAAADGDbUWwAAiAAAAAAADAAYYNBoXACIAAAAAAAAAxg29FsAAIgAAAAAA
AADGDaoWHgYiAAAAAAADAAYYQBoXACMAAAAAAAAAxgUjFhMAIwAAAAAAAwAGGE0aFwAjAAAAAAAA
AMYFxRYTACMAAAAAAAAAxg2WE2gAIwAAAAAAAwAGGGEaFwAjAAAAAAAAAMYN1wwjBiMAAAAAAAMA
BhgYGhcAJQAAAAAAAADGDfUJlAQlAAAAAAAAAMYNvAt/DCYAAAAAAAMABhgYGhcAJwAAAAAAAADG
DfUJlAQnAAAAAAAAAMYNvAt/DCgAAAAAAAMABhiDGhcAKQAAAAAAAADGDdcMIwYpAAAAAAADAAYY
jxoXACsAAAAAAAAAxg2qFh4GKwAAAAAAAwAGGI8aFwAsAAAAAAAAAMYNqhYeBiwAAAAAAAMABhiP
GhcALQAAAAAAAADGDaoWHgYtAAAAAAADAAYYgxoXAC4AAAAAAAAAxg3XDCMGLgAAAAEAiAIAAAEA
wQIAAAEAwQIAAAEABwQAAAIAEQQAAAMAGgQAAAQAIgQAAAUAKQQAAAEAvgQAAAIAxgQAAAMAIgQA
AAQAKQQAAAEAIgQAAAEA+QQAAAEABwQAAAEABwQAAAEA+QQAAAEAvAUAAAEABgYAAAEABgYAAAEA
BgYAAAEABgYAAAEABgYAAAEABgYAAAEABgYAAAEABgYAAAEABgYAAAEAFwcAAAEALAcAAAEARAcA
AAIASwcAAAEAkwcAAAEApQkAIAAAAAAAIAAAAAABIAEAbRoAIAAAAAABIAEAfhoAIAAAAAABIAEA
fhoAIAAAAAABIAEAbRoAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAABIAEAbRoPAEAADwBMABAAZAAR
AHAAEgBQABQAWAAVAGAAFwBYABgAPQIZAGgAGgBcABwAVAAJAIwBEwChAIwBqgGxAIwBuQERAIwB
EwC5AIwBEwAkAIwBEwAsAIwBEwA0AIwBEwA8AIwBEwAkAN4CiwAsAN4CiwA0AN4CiwA8AN4CiwDB
AIwBEwDJAIwBEwDRAIwBEwHZAFULTgIZAIECYwAZAIoCaAApAHYLWwIZAKMCcQDpAJILawIZAIwB
EwDxAIwBewJEACcDkABMAPUJiwBMALwL+AJMAIwBEwD5AIwBBwM5AIwBrwAJAWIEwAAJAWoEwAAR
AYwBBwNZAIwBEwBBAIkMFwMZAbYMHQMhAdcMIwMpAeAMaAAZAQoNKgMxAdcMMAM5AUMN6wBpAIwB
EwA5AKMNPANRAaMCQQNxANcMRgMBAbYNSwNpANcMRgNRAcQNUANJANINVQNRAcQNWwNJANsNIwEB
AeMNYANJAYwBEwFhAfYNZgNBARkObQNpASQOcQBhATEOFwBJAUMOcQBBAJwFEwBhAE8ORgN5AGEO
EwBZAHsOgANxAaIOhgMpAaMNaAApAdEOjAOBAdcMkgOJAf4OaAB5AQwPmQNBAKcFEwB5ACIPEwAp
AWAPwAABAYECpQOBAYAPEwApAYoPrQOZAZoPswORAdcMuQOpAf4OaACZAeIPwAM5Ae8PEwFZAEYQ
2QO5AdcM3wPBAU8ORgN5AMcF5gPJAXQQ7ANpAJYQYwDRAYwBEwB5AJ8QBATxAQ4RCQR5ABIREATh
ARwRFwTZASoRaADZATYRcQDRAT8RHgTRAXQQEwDRAUMRIwRpANINKwQBAYECTQT5AVURYAQBAWMR
9QAZAWkRcwRBAJ0RfgQJArMRhAQBAtcMjQQRAvUJlAQBAtIREwBJANkRoARJANcMBAQhAowBEwAh
AusSEwEhAtINqgTpAQMTsAQpAtcMKAEZAh0TuQSRAisTvwQxAj0TxgSZAmATzARcAJYTaABcANcM
2wQ5AqATaAA5Aj0TcQAxAvUJ4QRkAPUJiwBRAowBEwBRArETEwFRAscTEwFBAgMT8QRZAhgU+gTR
AisTAAVJAj0TBwXZAlEUDQVhAqATFAXhAvUJaABhAj0TcQBJAvUJFAVpAmkUGgXxAisTIgVxAoMU
cQBxApMUaAA5AowBEwA5AgkVEwE5AhMVIwGZAowBEwChAowBEwCZAiQVgQVcAD8R+AJhAowBEwBh
AgkVEwHhAowBEwBhAhMViAXhArwLIwH5AowBEwD5ArETEwH5AjgVEwHZAowBEwD5AgkVjwX5Aj0T
BwXZAlEVlgX5Al8ViAX5Am0VFAX5ArwLiAX5AvUJFAUBA3sVaAAJA4wBEwAJA7ETEwEJAzgVEwEJ
AwkVjwUJAz0TBwUJA7wLiAUJA/UJFAURA3sVaAB0AAEW4wV8AA8WiwCEABsWiwCEAPUJAgZBAyMW
wABRAzgWEwBZA6MCQQNhA3EWBwYBAY0WDAYBAY0WFgZLAqoWHgZzApYTaAAzArUWwABDAr0WwABr
AsUWEwCDAtcMIwaTAvUJlARbAiMWEwCRA/EWKQaZA9cMLwYpAxEXNgapA5YTaAApA0oXPAaxAwEW
QgZBAw8WlAQxA9cMBAS5A4wBEwHBA4wBEwHJA4wBpAbRA4wBEwDZA4wBFgfpA4wBEwHxA4wBEwH5
A4wBEwEBBIwBEwAJBIwBEwERBIwBEwApAKkYLwmJAIwBNQmZAIwBEwAhBM8YUgkhBNUYUgkpBIwB
EwAxBIwBEwA5BIwBXAlBBIwBEwFJBIwBEwBRBIwBEwFZBIwBFApJBIwBuQFhBIwBuQtxBIwBIwGB
BIwBIwGJBIwBEwCRBIwBEwGZBIwBEwGhBIwBEwGpBIwBEwGxBIwBEwG5BIwBEwHBBIwBEwHJBIwB
EwEOACgA+AAIAHAAXgEIAHQAYwEIAHgAaAEIAHwAbQEIAIAAcgEpAIMAMAIuABsHDAMuADMHDAMu
ADsHDAMuAAsBLw0uAEMHTA0uAMMGBQ0uACMHNQ0uACsHTA0uAOsADAMuAPsGiAwuAAMHkQwuAAsH
sAwuABMH+AxAACsAYwFAABMAsAFDABMAsAFDABsAvwFJAIMACAJjABsAvwFjABMAsAFpAIMAQQKA
ACsAYwGDABsAvwGDAHsAYwGDAHMAYwGJAIMAHAKgACsAYwGjAMMAgwKjABMAsAHAACsAYwHDABMA
sAHDAOsADAPgACsAYwHjAAsBDAMAARMAsAEAASsAYwEDAQsBDAMgASsAYwEgARMAsAEpAWMGVAcp
AUsGsAEpAVsGeggpAXMGYwhAASsAYwFAARMAsAFJAWMGVAdJAUsGsAFJAVMGoAdJAVsGswdgASsA
YwFgARMAsAFjATsGqgZjATMGlgZjAQsBDANjAUMGYwFjASsGgwZpAVMGHQdpAUsGsAFpAVsGMwdp
AWMGVAeAASsAYwGJAVsGpwiJAWMGVAeJAXsGYwGgASsAYwGpAVsG1gipAXsGYwGpAWMGVAfAASsA
YwHAARMAsAHJAVsGEAjJAWMGVAfJAWsGYwHgASsAYwHjAbsGYgnjAcsGYwHjAbMGYwHjAcMGdQnp
AWMGkgfpAUsGsAHpAVsGYwcAAisAYwEAAhMAsAEDArMGYwEDAssGYwEDAtMGnwkDAsMGdQkJAmMG
kgcJAlsG1AcjArMGYwEjAsMGqwkjAssGYwEjAtMG1QkpAnsGYwEpAmMGkgcpAlsGBQlDArMGYwFD
AsMG3wlDAssGYwFDAtMGCQpjAtsGHApjArMGYwFjAuMGTQppAhMASQmDAsMGkwqDAssGYwGDAtMG
CQqDArMGYwGJAhMASQmjAssGYwGjArMGYwGjAtMG1QmjAsMGvQqpAqsGYwHDArMGYwHDAsMG5wrD
AssGYwHJAvMGFAzjAssGYwHjArMGYwHjAtMGnwnjAsMGEQvpAvMGHQwDA8sGYwEDA7MGYwEDA8MG
OwsJA/MGUQwjA7MGYwEjA8sGYwEjA9MGnwkjA8MGZQspA/MGsAFAAwsBDANDA9MGnwlDA7MGYwFD
A8MGjwtDA8sGYwFJA/MGUQxjA7MGYwFjA8MGwAtjA8sGYwFjA+sGSQlpA/MGUQyAAwsBDAODA7MG
YwGDA8sGYwGDA8MG6guDA9MG1QmJA/MGUQypA/MGUQzJA/MGUQzpA/MGUQwJBPMGUQwpBPMGUQzA
CPMGFAwACfMGHQwgCfMGUQxgCfMGWgygCfMGYwzACfMGsAEACvMGUQxACvMGUQxgCvMGUQygCvMG
UQzACvMGUQwAC/MGUQxAC/MGUQyAC/MGUQzAC/MGUQwADPMGUQxFACYMRwB1DEkAdwxLAHcMTQB3
DE8AdwxRAHcMUwB1DFUAdwxXACYMWQAmDFsAJgxdAHUMXwB3DPQB+QH+AQMCUwJXAmICZwJ2AnYC
/gISAxIDUwJTAjcDcwOfA8gD+AMxBFYEZwJnAmcCZwJnAmcCZwRXAmcCbARTApgEpQQpBZ4FSAY9
CUQJVwkEAAEABgAFAAcABgAJAAgACwAJAA0AEwAOABUAEAAWABEAGQASABsAFAAcABUAHQAXAB4A
GQAfABoAIAAcACEAAACwAU8AAABpAlQAAAAYAlkAAAB1Al4AAAAxA5gAAAB2BMQAAACJBMQAAACD
BfAAAACDBVEBAACGCFEBAACNCFEBAACXCFEBAACjCFEBAACvCFEBAAC3CFUBAAC+CFoBAADLCFEB
AADbCMQAAAA0CY8BAACrCZQBAAClCaUBAABZGmwMAABdGmwMAACjFnAMAABzGloBAAB5GnkMAACl
CYQMAAClCYQMAAB5GnkMAACjFnAMAACjFnAMAACjFnAMAAB5GnkMAgAEAAMAAgAFAAUAAgAGAAcA
AgAHAAkAAgAPAAsAAgASAA0AAgATAA8AAgAbABEAAgAlABMAAQAmABMAAgAnABUAAQAoABUAAQAq
ABcAAgApABcAAgArABkAAQAsABkAAgAtABsAAQAuABsAAQAwAB0AAgAvAB0AAgAxAB8AAQAyAB8A
AgAzACEAAQA0ACEAAgA1ACMAAQA2ACMAAgA3ACUAAgA/ACcAAgBAACkAAQBBACkAAgBEACsAAgBG
AC0AAgBIAC8AAgBJADEAAgBOADMAAgBQADUAAgBSADcAAQBTADcAAQBWADkAAgBVADkAAgBYADsA
AgBaAD0AAgBcAD8AAgBeAEEAAgBgAEMAdQB1AIgA2AHfAeYB7QHlAuwCAQTSBOoEzgXWBe0F+gUE
gAAAAQAAAAAAAAAAAAAAAACoAAAABAAAAAAAAAAAAAAAAQAKAAAAAAAKAAAAAAAAAAAAAAAKABMA
AAAAAAEAAAAAAAAAAAAAAJ0APQMAAAAADAAAAAAAAAAAAAAApgB7AwAAAAAMAAAAAAAAAAAAAACm
AMkDAAAAAAwAAAAAAAAAAAAAAKYADQUAAAAABAAAAAAAAAAAAAAAAQC5AQAAAAAMAAAAAAAAAAAA
AACmACMMAAAAAAQAAAAAAAAAAAAAAAoAWQ0AAAAABAAAAAAAAAAAAAAAAQAGDgAAAAAMAAAAAAAA
AAAAAACmAAcQAAAAAAEAAAAAAAAAAAAAAJ0AqhAAAAAAAgAAAAAAAAAAAAAAAQAKAAAAAAAEAAAA
AAAAAAAAAAABALsVAAAAAAAAAAABAAAAqBoAAAUABAAGAAQADAALAAAAEAAMAL8CAAAQABkAvwIA
AAAAGwC/Ai0AcQItAPMCqQD0AwAAAAAAPE1vZHVsZT4AbXNjb3JsaWIATWljcm9zb2Z0LlZpc3Vh
bEJhc2ljAE15QXBwbGljYXRpb24AU0NfMjkyM2Q5NjE2OTNlNDM1MDhjNjdkYWY5MTRhOGZhZDku
TXkATXlDb21wdXRlcgBNeVByb2plY3QATXlXZWJTZXJ2aWNlcwBUaHJlYWRTYWZlT2JqZWN0UHJv
dmlkZXJgMQBJbnB1dEJ1ZmZlcgBTQ18yOTIzZDk2MTY5M2U0MzUwOGM2N2RhZjkxNGE4ZmFkOQBV
c2VyQ29tcG9uZW50AENvbm5lY3Rpb25zAFZhcmlhYmxlcwBTY3JpcHRNYWluAE5vbk1hdGNoQWN0
aW9uAE15UmVzb3VyY2VzAFNDXzI5MjNkOTYxNjkzZTQzNTA4YzY3ZGFmOTE0YThmYWQ5Lk15LlJl
c291cmNlcwBNeVNldHRpbmdzAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5BcHBsaWNhdGlvblNlcnZp
Y2VzAEFwcGxpY2F0aW9uQmFzZQAuY3RvcgBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuRGV2aWNlcwBD
b21wdXRlcgBTeXN0ZW0AT2JqZWN0AC5jY3RvcgBnZXRfQ29tcHV0ZXIAbV9Db21wdXRlck9iamVj
dFByb3ZpZGVyAGdldF9BcHBsaWNhdGlvbgBtX0FwcE9iamVjdFByb3ZpZGVyAFVzZXIAZ2V0X1Vz
ZXIAbV9Vc2VyT2JqZWN0UHJvdmlkZXIAZ2V0X1dlYlNlcnZpY2VzAG1fTXlXZWJTZXJ2aWNlc09i
amVjdFByb3ZpZGVyAEFwcGxpY2F0aW9uAFdlYlNlcnZpY2VzAEVxdWFscwBvAEdldEhhc2hDb2Rl
AFR5cGUAR2V0VHlwZQBUb1N0cmluZwBDcmVhdGVfX0luc3RhbmNlX18AVABpbnN0YW5jZQBEaXNw
b3NlX19JbnN0YW5jZV9fAGdldF9HZXRJbnN0YW5jZQBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuTXlT
ZXJ2aWNlcy5JbnRlcm5hbABDb250ZXh0VmFsdWVgMQBtX0NvbnRleHQAR2V0SW5zdGFuY2UAQ296
eVJvYy5TU0lTUGx1cy4yMDE0AENvenlSb2MuU3FsU2VydmVyLlNTSVMAU2NyaXB0QnVmZmVyUGx1
cwBNaWNyb3NvZnQuU3FsU2VydmVyLlR4U2NyaXB0AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRHRzLlBp
cGVsaW5lAFNjcmlwdENvbXBvbmVudABNaWNyb3NvZnQuU3FsU2VydmVyLlBpcGVsaW5lSG9zdABQ
aXBlbGluZUJ1ZmZlcgBPdXRwdXROYW1lTWFwAENvbXBvbmVudABPYmplY3RJRABJc0lucHV0AEJ1
ZmZlcgBPdXRwdXRNYXAAZ2V0X1N0YXRpY0lucHV0Q29sdW1ucwBnZXRfU3RhdGljT3V0cHV0Q29s
dW1ucwBOZXh0Um93AEVuZE9mUm93c2V0AFN0YXRpY0lucHV0Q29sdW1ucwBTdGF0aWNPdXRwdXRD
b2x1bW5zAFNjcmlwdENvbXBvbmVudFBsdXMAUHJvY2Vzc0lucHV0AElucHV0SUQASW5wdXROYW1l
AElucHV0X1Byb2Nlc3NJbnB1dABJbnB1dF9Qcm9jZXNzSW5wdXRSb3cAUm93AFBhcmVudENvbXBv
bmVudABNaWNyb3NvZnQuU3FsU2VydmVyLkRUU1J1bnRpbWVXcmFwAE1pY3Jvc29mdC5TcWxTZXJ2
ZXIuRHRzLlJ1bnRpbWUuV3JhcHBlcgBJRFRTQ29ubmVjdGlvbk1hbmFnZXIxMDAAZ2V0X0NybUNv
bm5lY3Rpb24AQ3JtQ29ubmVjdGlvbgBTdGF0dXNDb2RlAFByZUV4ZWN1dGUAUG9zdEV4ZWN1dGUA
VmFsaWRhdGUAZXJyTWVzc2FnZQBHZXRFbnRpdHlMaXN0AEdldE9wdGlvblNldExpc3QAR2V0UHJv
cGVydGllcwBzZXRfQ3JtQ29ubmVjdGlvbgB2YWx1ZQBnZXRfRW50aXR5AHNldF9FbnRpdHkAZ2V0
X0F0dHJpYnV0ZQBzZXRfQXR0cmlidXRlAGdldF9MYWJlbENvbHVtbgBzZXRfTGFiZWxDb2x1bW4A
Z2V0X1ZhbHVlQ29sdW1uAHNldF9WYWx1ZUNvbHVtbgBnZXRfTWFwcGluZwBzZXRfTWFwcGluZwBn
ZXRfQWN0aW9uAHNldF9BY3Rpb24AZ2V0X1JlcGxhY2VWYWx1ZQBzZXRfUmVwbGFjZVZhbHVlAGdl
dF9TdGF0ZUNvZGVDb2x1bW4Ac2V0X1N0YXRlQ29kZUNvbHVtbgBnZXRfQ3JtQ29ubmVjdGlvblR5
cGUARmlyZUVycm9yXwBtZXNzYWdlAEdldFZhcmlhYmxlXwB2YXJOYW1lAEdldEJ1ZmZlclZhbHVl
XwBidWZmZXIAaW5kZXgAU3lzdGVtLkNvbGxlY3Rpb25zAEhhc2h0YWJsZQBHZXRPcHRpb25TZXRW
YWx1ZXNfAENyZWF0ZU9wdGlvblNldF8Acm93AElEaWN0aW9uYXJ5AExvYWRNYXBwaW5nXwBtX2Ny
bUNvbm5lY3Rpb24AbV9lbnRpdHkAbV9hdHRyaWJ1dGUAbV9sYWJlbENvbABtX3ZhbHVlQ29sAG1f
bWFwcGluZwBtX2FjdGlvbgBtX3JlcGxhY2VWYWx1ZQBtX3N0YXRlQ29kZUNvbABDb3p5Um9jLkR5
bmFtaWNzLkNybQBJQ29ubmVjdGlvbgBtX2Nvbm5lY3Rpb24AbV9hdHRyaWJ1dGVzAG1fdmFsdWVz
AG1fbGNJZHgAbV92Y0lkeABtX3NjY0lkeABtX2RpY3Rpb25hcnkARW50aXR5AEF0dHJpYnV0ZQBM
YWJlbENvbHVtbgBWYWx1ZUNvbHVtbgBNYXBwaW5nAEFjdGlvbgBSZXBsYWNlVmFsdWUAU3RhdGVD
b2RlQ29sdW1uAENybUNvbm5lY3Rpb25UeXBlAEVudW0AdmFsdWVfXwBDcmVhdGUAUmVwbGFjZQBO
dWxsaWZ5AElnbm9yZQBSYWlzZUVycm9yAFN5c3RlbS5SZXNvdXJjZXMAUmVzb3VyY2VNYW5hZ2Vy
AF9yZXNNZ3IAU3lzdGVtLkdsb2JhbGl6YXRpb24AQ3VsdHVyZUluZm8AX3Jlc0N1bHR1cmUAZ2V0
X1Jlc291cmNlTWFuYWdlcgBnZXRfQ3VsdHVyZQBzZXRfQ3VsdHVyZQBWYWx1ZQBDdWx0dXJlAFN5
c3RlbS5Db25maWd1cmF0aW9uAEFwcGxpY2F0aW9uU2V0dGluZ3NCYXNlAG1fVmFsdWUAbV9TeW5j
T2JqZWN0AGdldF9WYWx1ZQBTeXN0ZW0uQ29tcG9uZW50TW9kZWwARWRpdG9yQnJvd3NhYmxlQXR0
cmlidXRlAEVkaXRvckJyb3dzYWJsZVN0YXRlAFN5c3RlbS5Db2RlRG9tLkNvbXBpbGVyAEdlbmVy
YXRlZENvZGVBdHRyaWJ1dGUAU3lzdGVtLkRpYWdub3N0aWNzAERlYnVnZ2VySGlkZGVuQXR0cmli
dXRlAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5Db21waWxlclNlcnZpY2VzAFN0YW5kYXJkTW9kdWxl
QXR0cmlidXRlAEhpZGVNb2R1bGVOYW1lQXR0cmlidXRlAFN5c3RlbS5Db21wb25lbnRNb2RlbC5E
ZXNpZ24ASGVscEtleXdvcmRBdHRyaWJ1dGUAU3lzdGVtLlJ1bnRpbWUuQ29tcGlsZXJTZXJ2aWNl
cwBSdW50aW1lSGVscGVycwBHZXRPYmplY3RWYWx1ZQBSdW50aW1lVHlwZUhhbmRsZQBHZXRUeXBl
RnJvbUhhbmRsZQBBY3RpdmF0b3IAQ3JlYXRlSW5zdGFuY2UATXlHcm91cENvbGxlY3Rpb25BdHRy
aWJ1dGUAc2V0X1ZhbHVlAFN5c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNlcwBDb21WaXNpYmxl
QXR0cmlidXRlAFN0cmluZwBTY3JpcHRCdWZmZXIAQ0xTQ29tcGxpYW50QXR0cmlidXRlAE1pY3Jv
c29mdC5TcWxTZXJ2ZXIuRFRTUGlwZWxpbmVXcmFwAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRHRzLlBp
cGVsaW5lLldyYXBwZXIASURUU0NvbXBvbmVudE1ldGFEYXRhMTAwAGdldF9Db21wb25lbnRNZXRh
RGF0YQBJRFRTSW5wdXRDb2xsZWN0aW9uMTAwAGdldF9JbnB1dENvbGxlY3Rpb24ASURUU0lucHV0
MTAwAGdldF9JdGVtAGdldF9JRABJRFRTUnVudGltZUNvbm5lY3Rpb25Db2xsZWN0aW9uMTAwAGdl
dF9SdW50aW1lQ29ubmVjdGlvbkNvbGxlY3Rpb24ASURUU1J1bnRpbWVDb25uZWN0aW9uMTAwAGdl
dF9Db25uZWN0aW9uTWFuYWdlcgBTeXN0ZW0uV2ViLlNlcnZpY2VzAFN5c3RlbS5XZWIuU2Vydmlj
ZXMuUHJvdG9jb2xzAFNvYXBFeGNlcHRpb24ARXhjZXB0aW9uAGdldF9CdWZmZXIAQ29udmVydABJ
c051bGxPckVtcHR5AFRvSW50MzIASW50MzIAc2V0X0l0ZW0AU2V0TnVsbABGb3JtYXQAUHJvamVj
dERhdGEAU2V0UHJvamVjdEVycm9yAFN5c3RlbS5YbWwAWG1sTm9kZQBnZXRfRGV0YWlsAGdldF9J
bm5lclhtbABDbGVhclByb2plY3RFcnJvcgBnZXRfTWVzc2FnZQBBY3F1aXJlQ29ubmVjdGlvbgBD
b25uZWN0AFBpcGVsaW5lQ29tcG9uZW50AGdldF9Ib3N0Q29tcG9uZW50AElEVFNCdWZmZXJNYW5h
Z2VyMTAwAGdldF9CdWZmZXJNYW5hZ2VyAElEVFNJbnB1dENvbHVtbkNvbGxlY3Rpb24xMDAAZ2V0
X0lucHV0Q29sdW1uQ29sbGVjdGlvbgBJRFRTSW5wdXRDb2x1bW4xMDAAZ2V0X0xpbmVhZ2VJRABG
aW5kQ29sdW1uQnlMaW5lYWdlSUQAQ2xvc2UASURUU1ZpcnR1YWxJbnB1dENvbHVtbkNvbGxlY3Rp
b24xMDAASURUU1ZpcnR1YWxJbnB1dDEwMABnZXRfSXNBdHRhY2hlZABTdHJpbmdDb21wYXJpc29u
AFJlbW92ZUFsbABHZXRWaXJ0dWFsSW5wdXQAZ2V0X1ZpcnR1YWxJbnB1dENvbHVtbkNvbGxlY3Rp
b24ASURUU1ZpcnR1YWxJbnB1dENvbHVtbjEwMABEVFNVc2FnZVR5cGUAU2V0VXNhZ2VUeXBlAHNl
dF9Db25uZWN0aW9uTWFuYWdlcklEAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuTWFuYWdlZERUUwBNaWNy
b3NvZnQuU3FsU2VydmVyLkR0cy5SdW50aW1lAGdldF9EZXNpZ25Db25uZWN0aW9ucwBDb25uZWN0
aW9uTWFuYWdlcgBBcnJheQBTb3J0AEFycmF5TGlzdABJQXR0cmlidXRlAElFbnRpdHkAQ29udGFp
bnMAR2V0U2VydmljZQBDb3p5Um9jLkR5bmFtaWNzAENvenlSb2MuRHluYW1pY3MuQ3JtMjAxMS5P
cmdhbml6YXRpb25TZXJ2aWNlAE9yZ2FuaXphdGlvblNlcnZpY2VDbGllbnQASW50ZXJhY3Rpb24A
SUlmAEdldEVudGl0eQBHZXRBdHRyaWJ1dGVzAGdldF9Dcm1UeXBlAGdldF9OYW1lAEFkZABUb0Fy
cmF5AE9wZXJhdG9ycwBDb21wYXJlU3RyaW5nAEVtcHR5AEZpcmVFcnJvcgBJRFRTVmFyaWFibGVz
MTAwAElEVFNWYXJpYWJsZURpc3BlbnNlcjEwMABnZXRfVmFyaWFibGVEaXNwZW5zZXIATG9ja09u
ZUZvclJlYWQASURUU1ZhcmlhYmxlMTAwAFVubG9jawBJc051bGwARW51bUF0dHJpYnV0ZU1ldGFk
YXRhAE9yZ2FuaXphdGlvblJlcXVlc3QAT3JnYW5pemF0aW9uUmVzcG9uc2UAT3B0aW9uTWV0YWRh
dGEATG9jYWxpemVkTGFiZWwAQ296eVJvYy5EeW5hbWljcy5Dcm0uTWV0YWRhdGFTZXJ2aWNlAE1l
dGFkYXRhU2VydmljZQBPcHRpb24AUmV0cmlldmVBdHRyaWJ1dGVSZXF1ZXN0AFJldHJpZXZlQXR0
cmlidXRlUmVzcG9uc2UATG9jTGFiZWwAQ296eVJvYy5EeW5hbWljcy5Dcm0zLk1ldGFkYXRhU2Vy
dmljZQBHdWlkAE51bGxhYmxlYDEAc2V0X1JlcXVlc3ROYW1lAEJvb2xlYW4ARXhlY3V0ZQBPcHRp
b25TZXRNZXRhZGF0YQBnZXRfT3B0aW9uU2V0AGdldF9PcHRpb25zAExhYmVsAGdldF9MYWJlbABM
b2NhbGl6ZWRMYWJlbENvbGxlY3Rpb24AZ2V0X0xvY2FsaXplZExhYmVscwBTeXN0ZW0uQ29sbGVj
dGlvbnMuR2VuZXJpYwBMaXN0YDEAZ2V0X0NvdW50AGdldF9MYW5ndWFnZUNvZGUAc2V0X0VudGl0
eUxvZ2ljYWxOYW1lAHNldF9Mb2dpY2FsTmFtZQBNZXRhZGF0YVNlcnZpY2VSZXNwb25zZQBNZXRh
ZGF0YVNlcnZpY2VSZXF1ZXN0AEF0dHJpYnV0ZU1ldGFkYXRhAGdldF9BdHRyaWJ1dGVNZXRhZGF0
YQBQaWNrbGlzdEF0dHJpYnV0ZU1ldGFkYXRhAENybUxhYmVsAGdldF9Mb2NMYWJlbHMAQ3JtTnVt
YmVyAFJldHJpZXZlQXR0cmlidXRlTWV0YWRhdGEAZ2V0X0Rlc2NyaXB0aW9uAGdldF9PcHRpb25W
YWx1ZQBJbnNlcnRTdGF0dXNWYWx1ZVJlcXVlc3QASW5zZXJ0U3RhdHVzVmFsdWVSZXNwb25zZQBJ
bnNlcnRPcHRpb25WYWx1ZVJlcXVlc3QASW5zZXJ0T3B0aW9uVmFsdWVSZXNwb25zZQBzZXRfTGFi
ZWwAc2V0X0xhbmd1YWdlQ29kZQBzZXRfTG9jYWxpemVkTGFiZWxzAHNldF9BdHRyaWJ1dGVMb2dp
Y2FsTmFtZQBzZXRfTG9jTGFiZWxzAHNldF9TdGF0ZUNvZGUAZ2V0X1N0YXRlQ29kZQBnZXRfTmV3
T3B0aW9uVmFsdWUASURpY3Rpb25hcnlgMgBLZXlWYWx1ZVBhaXJgMgBSZWNvcmRzZXQAQURPREIA
U3lzdGVtLkRhdGEARGF0YVRhYmxlAERhdGFSb3cASUVudW1lcmF0b3JgMQBJRW51bWVyYXRvcgBJ
RW51bWVyYWJsZWAxAEdldEVudW1lcmF0b3IAZ2V0X0N1cnJlbnQAZ2V0X0tleQBNb3ZlTmV4dABJ
RGlzcG9zYWJsZQBEaXNwb3NlAENvbnZlcnNpb25zAFN5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNz
aW9ucwBSZWdleABVbmVzY2FwZQBTdHJpbmdTcGxpdE9wdGlvbnMAU3BsaXQAQ2hhcgBfUmVjb3Jk
c2V0AEZpZWxkcwBnZXRfRmllbGRzAGdldF9CT0YAZ2V0X0VPRgBNb3ZlRmlyc3QARmllbGQARGF0
YVNldABEYXRhVGFibGVDb2xsZWN0aW9uAGdldF9UYWJsZXMARGF0YUNvbHVtbkNvbGxlY3Rpb24A
Z2V0X0NvbHVtbnMASW50ZXJuYWxEYXRhQ29sbGVjdGlvbkJhc2UARGF0YVJvd0NvbGxlY3Rpb24A
Z2V0X1Jvd3MAQ296eVJvYy5TcWxTZXJ2ZXIuU1NJUy5BdHRyaWJ1dGVzAEZpbHRlclByb3BlcnRp
ZXNBdHRyaWJ1dGUAVmFsaWRhdGVQcm9wZXJ0aWVzQXR0cmlidXRlAFNvcnRQcm9wZXJ0aWVzQXR0
cmlidXRlAFNTSVNTY3JpcHRDb21wb25lbnRFbnRyeVBvaW50QXR0cmlidXRlAFJlZnJlc2hQcm9w
ZXJ0aWVzQXR0cmlidXRlAFJlZnJlc2hQcm9wZXJ0aWVzAExpc3RBdHRyaWJ1dGUARGVzY3JpcHRp
b25BdHRyaWJ1dGUAQ2F0ZWdvcnlBdHRyaWJ1dGUAVmFyaWFibGVBdHRyaWJ1dGUAQ29ubmVjdGlv
bkF0dHJpYnV0ZQBJbnB1dFZpcnR1YWxDb2x1bW5BdHRyaWJ1dGUAU3lzdGVtLlJlZmxlY3Rpb24A
QXNzZW1ibHkAZ2V0X0Fzc2VtYmx5AFN5c3RlbS5UaHJlYWRpbmcATW9uaXRvcgBFbnRlcgBFeGl0
AERlYnVnZ2VyTm9uVXNlckNvZGVBdHRyaWJ1dGUAUmVjb3Jkc2V0RXZlbnRzX0V2ZW50AEZpZWxk
MjAARmllbGRzMTUAX0FETwBSZWNvcmRzZXQxNQBfQ29sbGVjdGlvbgBSZWNvcmRzZXQyMQBSZWNv
cmRzZXQyMABSZWNvcmRzZXRFdmVudHMARmllbGRzMjAAQ29tcGlsZXJHZW5lcmF0ZWRBdHRyaWJ1
dGUAQ29DbGFzc0F0dHJpYnV0ZQBHdWlkQXR0cmlidXRlAFR5cGVJZGVudGlmaWVyQXR0cmlidXRl
AERlZmF1bHRNZW1iZXJBdHRyaWJ1dGUAQ29tRXZlbnRJbnRlcmZhY2VBdHRyaWJ1dGUASW50ZXJm
YWNlVHlwZUF0dHJpYnV0ZQBDb21JbnRlcmZhY2VUeXBlAF9WdGJsR2FwMV82AERpc3BJZEF0dHJp
YnV0ZQBfVnRibEdhcDJfNgBfVnRibEdhcDNfMTQAX1Z0YmxHYXA0XzEAQk9GAEVPRgBfVnRibEdh
cDFfMgBJbmRleABDb3VudABJdGVtAHB2YXIAX1Z0YmxHYXAxXzMAX1Z0YmxHYXAxXzE0AElFbnVt
ZXJhYmxlAFNDXzI5MjNkOTYxNjkzZTQzNTA4YzY3ZGFmOTE0YThmYWQ5LlJlc291cmNlcy5yZXNv
dXJjZXMAQ29tcGlsYXRpb25SZWxheGF0aW9uc0F0dHJpYnV0ZQBSdW50aW1lQ29tcGF0aWJpbGl0
eUF0dHJpYnV0ZQBTeXN0ZW0uUnVudGltZS5WZXJzaW9uaW5nAFRhcmdldEZyYW1ld29ya0F0dHJp
YnV0ZQBBc3NlbWJseUZpbGVWZXJzaW9uQXR0cmlidXRlAEFzc2VtYmx5VHJhZGVtYXJrQXR0cmli
dXRlAEFzc2VtYmx5Q29weXJpZ2h0QXR0cmlidXRlAEFzc2VtYmx5UHJvZHVjdEF0dHJpYnV0ZQBB
c3NlbWJseUNvbXBhbnlBdHRyaWJ1dGUAQXNzZW1ibHlEZXNjcmlwdGlvbkF0dHJpYnV0ZQBBc3Nl
bWJseVRpdGxlQXR0cmlidXRlAFNDXzI5MjNkOTYxNjkzZTQzNTA4YzY3ZGFmOTE0YThmYWQ5LmRs
bAAAAAALSQBuAHAAdQB0AAAbQwByAG0AQwBvAG4AbgBlAGMAdABpAG8AbgAAPU8AcAB0AGkAbwBu
AFMAZQB0ACAAbABhAGIAZQBsACAAbgBvAHQAIABmAG8AdQBuAGQAOgAgAHsAMAB9AAA/UwBlAGwA
ZQBjAHQAIABEAHkAbgBhAG0AaQBjAHMAIABDAFIATQAgAEMAbwBuAG4AZQBjAHQAaQBvAG4ALgAA
N1MAZQBsAGUAYwB0ACAARAB5AG4AYQBtAGkAYwBzACAAQwBSAE0AIABlAG4AdABpAHQAeQAuAAA3
UwBlAGwAZQBjAHQAIABPAHAAdABpAG8AbgBTAGUAdAAgAGEAdAB0AHIAaQBiAHUAdABlAC4AAClT
AGUAbABlAGMAdAAgAGwAYQBiAGUAbAAgAGMAbwBsAHUAbQBuAC4AAClTAGUAbABlAGMAdAAgAHYA
YQBsAHUAZQAgAGMAbwBsAHUAbQBuAC4AABVzAHQAYQB0AHUAcwBjAG8AZABlAAAxUwBlAGwAZQBj
AHQAIABzAHQAYQB0AGUAYwBvAGQAZQAgAGMAbwBsAHUAbQBuAC4AADdTAGUAbABlAGMAdAAgAEQA
eQBuAGEAbQBpAGMAcwAgAEMAUgBNACAARQBuAHQAaQB0AHkALgAADUUAbgB0AGkAdAB5AAATQQB0
AHQAcgBpAGIAdQB0AGUAABdMAGEAYgBlAGwAQwBvAGwAdQBtAG4AABdWAGEAbAB1AGUAQwBvAGwA
dQBtAG4AAA9NAGEAcABwAGkAbgBnAAANQQBjAHQAaQBvAG4AAB9TAHQAYQB0AGUAQwBvAGQAZQBD
AG8AbAB1AG0AbgAAGVIAZQBwAGwAYQBjAGUAVgBhAGwAdQBlAAAZRABZAE4AQQBNAEkAQwBTAC0A
QwBSAE0AAS1EAHkAbgBhAG0AaQBjAHMAIABDAFIATQAgAE8AcAB0AGkAbwBuAFMAZQB0AAAjUgBl
AHQAcgBpAGUAdgBlAEEAdAB0AHIAaQBiAHUAdABlAAAVTQBlAHQAYQBkAGEAdABhAEkAZAAAK1IA
ZQB0AHIAaQBlAHYAZQBBAHMASQBmAFAAdQBiAGwAaQBzAGgAZQBkAAAjRQBuAHQAaQB0AHkATABv
AGcAaQBjAGEAbABOAGEAbQBlAAAXTABvAGcAaQBjAGEAbABOAGEAbQBlAAAjQQB0AHQAcgBpAGIA
dQB0AGUATQBlAHQAYQBkAGEAdABhAAAzVQBuAGgAYQBuAGQAbABlAGQAIABzAGUAcgB2AGkAYwBl
ACAAbwBiAGoAZQBjAHQALgAAI0kAbgBzAGUAcgB0AFMAdABhAHQAdQBzAFYAYQBsAHUAZQAAI0kA
bgBzAGUAcgB0AE8AcAB0AGkAbwBuAFYAYQBsAHUAZQAAKUEAdAB0AHIAaQBiAHUAdABlAEwAbwBn
AGkAYwBhAGwATgBhAG0AZQAAC0wAYQBiAGUAbAAAE1MAdABhAHQAZQBDAG8AZABlAAALVgBhAGwA
dQBlAAAdTgBlAHcATwBwAHQAaQBvAG4AVgBhAGwAdQBlAABtRAB5AG4AYQBtAGkAYwBzACAAQwBS
AE0AIAAzACAAZABvAGUAcwBuACcAdAAgAHMAdQBwAHAAbwByAHQAIABPAHAAdABpAG8AbgBTAGUA
dAAgAHYAYQBsAHUAZQAgAGkAbgBzAGUAcgB0AC4AAQlcAHIAXABuAABpTQBhAHAAcABpAG4AZwAu
AFIAZQBjAG8AcgBkAHMAZQB0ACAAcwBoAG8AdQBsAGQAIABjAG8AbgB0AGEAaQBuACAAYQB0ACAA
bABlAGEAcwB0ACAAMgAgAGMAbwBsAHUAbQBuAHMALgAAZU0AYQBwAHAAaQBuAGcALgBEAGEAdABh
AFMAZQB0ACAAcwBoAG8AdQBsAGQAIABjAG8AbgB0AGEAaQBuACAAYQB0ACAAbABlAGEAcwB0ACAA
MgAgAGMAbwBsAHUAbQBuAHMALgAAgJNNAGEAcABwAGkAbgBnACAAcABhAHIAYQBtAGUAdABlAHIA
IABtAHUAcwB0ACAAYwBvAG4AdABhAGkAbgAgAEkARABpAGMAdABpAG8AbgBhAHIAeQAsACAAUwB0
AHIAaQBuAGcALAAgAFIAZQBjAG8AcgBkAHMAZQB0ACAAbwByACAARABhAHQAYQBTAGUAdAAuAAAx
TQB5AC4AUgBlAHMAbwB1AHIAYwBlAHMALgBNAHkAUgBlAHMAbwB1AHIAYwBlAHMAAAAAu/FMLKI3
hUOapvyKDn5IwgAIt3pcVhk04IkIsD9ffxHVCjoDIAABAwAAAQQAABIMBwYVEhgBEgwEAAASCAcG
FRIYARIIBAAAEhEHBhUSGAESEQQAABIUBwYVEhgBEhQECAASDAQIABIIBAgAEhEECAASFAQgAQIc
AyAACAQgABIVAyAADgIeAAcQAQEeAB4ABzABAQEQHgACEwAEIAATAAcGFRIZARMABCgAEwAIFs9J
C7gMNOoIiYRdzYCAzJELIAUBEiEIAhIlEikEIAAdDgMgAAIEKAAdDgMGEiQDBhIoCSAEAQgOEiUS
KQUgAQESHAMGEiEFIAEBEiEEIAASMQQoABIxAgYOFHMAdABhAHQAdQBzAGMAbwBkAGUABSABAhAO
BCABAQ4EIAARMAUgAQERMAQgAQEIBCABHA4GIAIcEiUIBCAAEjUEIAASOQMGETACBggDBhI9AwYS
NQMGEjkDKAAOBCgAETADKAAIBAAAAAAEAQAAAAQCAAAABAMAAAAEBAAAAAMGEkUDBhJJBAAAEkUE
AAASSQUAAQESSQQIABJFBAgAEkkDBhI4AgYcBAAAEjgECAASOAUgAQERVQgBAAEAAAAAAAUgAgEO
DhgBAApNeVRlbXBsYXRlCDEwLjAuMC4wAAAGFRIYARIMBhUSGAESCAYVEhgBEhEGFRIYARIUBAcB
EgwEBwESCAQHARIRBAcBEhQTAQAOTXkuQXBwbGljYXRpb24AABMBAA5NeS5XZWJTZXJ2aWNlcwAA
EAEAC015LkNvbXB1dGVyAAAMAQAHTXkuVXNlcgAABAABHBwDBwECAwcBCAYAARIVEXEEBwESFQMH
AQ4FEAEAHgAECgEeAAQHAR4AByAEAQ4ODg5hAQA0U3lzdGVtLldlYi5TZXJ2aWNlcy5Qcm90b2Nv
bHMuU29hcEh0dHBDbGllbnRQcm90b2NvbBJDcmVhdGVfX0luc3RhbmNlX18TRGlzcG9zZV9fSW5z
dGFuY2VfXwAAAAYVEhgBEwAGFRIZARMABAoBEwAFIAEBEwAIBwMTABMAEwAEIAEBAgUBAAAAAAQH
AR0OBSAAEoCNBSAAEoCRBiABEoCVHAUgABKAmQYgARKAnRwEBwESMQQgABIlBAABDhwEIAEcHAQA
AQIOBAABCBwFIAIBCBwEAAEICAUAAg4OHAYAAQESgKUFIAASgLUMBwUOHBKAoRKApREwBSAAEoC5
BSAAEoC9BSAAEoDBBiABEoDFHAUgAggICAUHARKAlQcgAgIOEYDRBSAAEoDNBSAAEoDJBiABEoDV
HAcgAggIEYDZEAcGAgISgJUSgMkSgM0SgKUFIAASgN0GIAESgOEcBSABHQ4IBxABAQEdHgADCgEO
CAcDEj0dDh0OAh0OBCABHAgGAAMcAhwcBiABEoDxDgYgAB0SgO0EIAEIHAcgARKA5RIVBSACARwc
GwcLEj0dDhKA6R0SgO0SgPEIHAgSgO0IHRKA7QgAAwIODhGA0QkHAx0OEoDpETAGAAMIDg4CBAcB
ETAGBwIdDh0OCiAGAQgODg4IEAIFIAASgQUIIAIBDhASgQEGIAESgQkcAyAAHAcHAxwcEoEBBCAB
AggEBwIcHAUgAgEOHAggARKBFRKBEQUgABKBSQYgAB0SgRkFIAASgU0FIAASgVEIFRKBVQESgR0F
IAETAAgIIAAVEYFZAQgGFRGBQQEICCABEoFdEoFhBSAAEoFlBiAAHRKBJQUgABKBbQYgAB0SgTEF
IAASgXEHIAISgXUODgYgAB0SgTlXByMSNRI1HBKA9RKBDRKBERKBFQgIEoEZCBKBHRwSgSEdEoEl
EoEpEoEtCAgSgSUIEoExEoE1HRKBORKBORGBPQgdEoEZCBURgUEBCAgdEoElCAgdEoE5BiABARKB
UQYgAQESgXEGIAEBEoFtByABAR0SgTEvBxICDhwSgPUcEoFNEoEdEoEREoEVHBKBIRKBMRKBfRKB
gRKBhRKBiRKBNR0SgTEHFRKBjQIODgwVEoGlARURgZECDg4JIAAVEoGdARMADBUSgZ0BFRGBkQIO
DgcVEYGRAg4OBCAAEwEEAAEODgkgAh0OHQ4RgbUHIAIdDh0DCAQgABJEBSABEkgcBSAAEoHNBiAB
EoGVCAUgABKB0QUgABKB2QUgABKBoToHEhI5HBI1EjkVEoGNAg4OFRGBkQIODh0OHQ4OEjwSgZUS
gZkVEoGdARURgZECDg4dDggdDh0DEoGhEgEADUdldFByb3BlcnRpZXMAAA0BAAhWYWxpZGF0ZQAA
BSABAR0OawEACQAAAA1Dcm1Db25uZWN0aW9uBkVudGl0eQlBdHRyaWJ1dGULTGFiZWxDb2x1bW4L
VmFsdWVDb2x1bW4HTWFwcGluZwZBY3Rpb24MUmVwbGFjZVZhbHVlD1N0YXRlQ29kZUNvbHVtbgAA
BiABARGB8RUBABBHZXRPcHRpb25TZXRMaXN0AAAgAQAbU2VsZWN0IE9wdGlvblNldCBhdHRyaWJ1
dGUuAAAOAQAJIFNldHRpbmdzAAAuAQApU2VsZWN0IGhvdyB0byBoYW5kbGUgbm9uLW1hdGNoaW5n
IHZhbHVlcy4AAA0BAAhObyBtYXRjaAAAEgEADUdldEVudGl0eUxpc3QAACABABtTZWxlY3QgRHlu
YW1pY3MgQ1JNIGVudGl0eS4AADsBADZTcGVjaWZpZXMgcmVwbGFjZSB2YWx1ZSB0byB1c2Ugd2hl
biB0aGVyZSBpcyBubyBtYXRjaC4AAFIBAE1TZWxlY3QgdmFyaWFibGUgY29udGFpbmluZyBtYXBw
aW5nIChzdHJpbmcsIGRpY3Rpb25hcnksIHJlY29yZHNldCkuIE9wdGlvbmFsLgAAFgEAEUNybUNv
bm5lY3Rpb25UeXBlAAAsAQAnU2VsZWN0IER5bmFtaWNzIENSTSBDb25uZWN0aW9uIE1hbmFnZXIu
AAAuAQApU2VsZWN0IGNvbHVtbiBjb250YWluaW5nIE9wdGlvblNldCBsYWJlbC4AAC4BAClTZWxl
Y3QgY29sdW1uIGNvbnRhaW5pbmcgT3B0aW9uU2V0IHZhbHVlLgAAKQEAJFNlbGVjdCBjb2x1bW4g
Y29udGFpbmluZyBzdGF0ZSBjb2RlLgAABSAAEoINByACAQ4Sgg0GBwISRRJFBAcBEkkIAQACAAAA
AAAEAAEBHAQHARI4BSABARIVEgEADVN5c3RlbS5PYmplY3QAACkBACQwMDAwMDU1Ni0wMDAwLTAw
MTAtODAwMC0wMEFBMDA2RDJFQTQAAAsBAAZGaWVsZHMAACkBACQwMDAwMDU2NC0wMDAwLTAwMTAt
ODAwMC0wMEFBMDA2RDJFQTQAAAkBAARJdGVtAAApAQAkMDAwMDA1NjktMDAwMC0wMDEwLTgwMDAt
MDBBQTAwNkQyRUE0AAAKAQAFVmFsdWUAAAcgAgESFRIVMAEAFUFET0RCLlJlY29yZHNldEV2ZW50
cxVBRE9EQi5SZWNvcmRzZXRFdmVudHMAAEUBACRlZjUzMDUwYi04ODJlLTQ3NzYtYjY0My1lZGE0
NzJlOGUzZjIbQURPREIuUmVjb3Jkc2V0RXZlbnRzX0V2ZW50AAApAQAkMDAwMDA1NEMtMDAwMC0w
MDEwLTgwMDAtMDBBQTAwNkQyRUE0AAApAQAkMDAwMDA1MDYtMDAwMC0wMDEwLTgwMDAtMDBBQTAw
NkQyRUE0AAApAQAkMDAwMDA1MzQtMDAwMC0wMDEwLTgwMDAtMDBBQTAwNkQyRUE0AAApAQAkMDAw
MDA1MEUtMDAwMC0wMDEwLTgwMDAtMDBBQTAwNkQyRUE0AAApAQAkMDAwMDA1MTItMDAwMC0wMDEw
LTgwMDAtMDBBQTAwNkQyRUE0AAApAQAkMDAwMDA1NTUtMDAwMC0wMDEwLTgwMDAtMDBBQTAwNkQy
RUE0AAApAQAkMDAwMDA1NEYtMDAwMC0wMDEwLTgwMDAtMDBBQTAwNkQyRUE0AAAGIAEBEYI1KQEA
JDAwMDAwMjY2LTAwMDAtMDAxMC04MDAwLTAwQUEwMDZEMkVBNAAAKQEAJDAwMDAwNTRELTAwMDAt
MDAxMC04MDAwLTAwQUEwMDZEMkVBNAAACAEA6gMAAAAACAEA7gMAAAAAKiwAACVBRE9EQi5GaWVs
ZHNUb0ludGVybmFsRmllbGRzTWFyc2hhbGVyAAgBAAAAAAAAAAgBAPoDAAAAAAgBAPwDAAAAAAMo
AAIEKAASRAEcARsFKAESSBwEIAEBHAMoABwIAQAIAAAAAAAeAQABAFQCFldyYXBOb25FeGNlcHRp
b25UaHJvd3MBRwEAGi5ORVRGcmFtZXdvcmssVmVyc2lvbj12NC4wAQBUDhRGcmFtZXdvcmtEaXNw
bGF5TmFtZRAuTkVUIEZyYW1ld29yayA0DAEABzEuMC4wLjAAACkBACQwMzM3OTA0Yy1lZmJlLTQ2
MjYtOWEzNS1kMjQxYjg0MDU3MjcAAAUBAAEAABYBABFDb3B5cmlnaHQgQCAgMjAxNgAAKAEAI1ND
XzI5MjNkOTYxNjkzZTQzNTA4YzY3ZGFmOTE0YThmYWQ5AAAAAACAggAAAAAAAAAAAACeggAAACAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAkIIAAAAAAAAAAAAAAAAAAAAAX0NvckRsbE1haW4AbXNjb3Jl
ZS5kbGwAAAAAAP8lACAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAABABAAAAAYAACAAAAAAAAAAAAAAAAAAAABAAEAAAAwAACAAAAA
AAAAAAAAAAAAAAABAAAAAABIAAAAWKAAAIADAAAAAAAAAAAAAIADNAAAAFYAUwBfAFYARQBSAFMA
SQBPAE4AXwBJAE4ARgBPAAAAAAC9BO/+AAABAAAAAQAAAAAAAAABAAAAAAA/AAAAAAAAAAQAAAAC
AAAAAAAAAAAAAAAAAAAARAAAAAEAVgBhAHIARgBpAGwAZQBJAG4AZgBvAAAAAAAkAAQAAABUAHIA
YQBuAHMAbABhAHQAaQBvAG4AAAAAAAAAsATgAgAAAQBTAHQAcgBpAG4AZwBGAGkAbABlAEkAbgBm
AG8AAAC8AgAAAQAwADAAMAAwADAANABiADAAAABwACQAAQBGAGkAbABlAEQAZQBzAGMAcgBpAHAA
dABpAG8AbgAAAAAAUwBDAF8AMgA5ADIAMwBkADkANgAxADYAOQAzAGUANAAzADUAMAA4AGMANgA3
AGQAYQBmADkAMQA0AGEAOABmAGEAZAA5AAAAMAAIAAEARgBpAGwAZQBWAGUAcgBzAGkAbwBuAAAA
AAAxAC4AMAAuADAALgAwAAAAcAAoAAEASQBuAHQAZQByAG4AYQBsAE4AYQBtAGUAAABTAEMAXwAy
ADkAMgAzAGQAOQA2ADEANgA5ADMAZQA0ADMANQAwADgAYwA2ADcAZABhAGYAOQAxADQAYQA4AGYA
YQBkADkALgBkAGwAbAAAAEgAEgABAEwAZQBnAGEAbABDAG8AcAB5AHIAaQBnAGgAdAAAAEMAbwBw
AHkAcgBpAGcAaAB0ACAAQAAgACAAMgAwADEANgAAAHgAKAABAE8AcgBpAGcAaQBuAGEAbABGAGkA
bABlAG4AYQBtAGUAAABTAEMAXwAyADkAMgAzAGQAOQA2ADEANgA5ADMAZQA0ADMANQAwADgAYwA2
ADcAZABhAGYAOQAxADQAYQA4AGYAYQBkADkALgBkAGwAbAAAAGgAJAABAFAAcgBvAGQAdQBjAHQA
TgBhAG0AZQAAAAAAUwBDAF8AMgA5ADIAMwBkADkANgAxADYAOQAzAGUANAAzADUAMAA4AGMANgA3
AGQAYQBmADkAMQA0AGEAOABmAGEAZAA5AAAANAAIAAEAUAByAG8AZAB1AGMAdABWAGUAcgBzAGkA
bwBuAAAAMQAuADAALgAwAC4AMAAAADgACAABAEEAcwBzAGUAbQBiAGwAeQAgAFYAZQByAHMAaQBv
AG4AAAAxAC4AMAAuADAALgAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAACAAAAMAAAAsDIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAA]]></arrayElement></arrayElements></property><property id="5" name="VSTAProjectName" dataType="System.String" description="Specifies the name of the Microsoft Visual Studio Tools for Applications project. Project names must be unique within a package." typeConverter="NOTBROWSABLE">SC_2923d961693e43508c67daf914a8fad9</property><property id="6" name="ScriptLanguage" dataType="System.String" description="Specifies the programming language used by the script." typeConverter="Microsoft.SqlServer.VSTAHosting.ScriptingLanguages, Microsoft.SqlServer.VSTAScriptingLib, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91">VisualBasic</property><property id="12" name="UserComponentTypeName" dataType="System.String">CozyRoc.ScriptComponentHostPlus</property></properties><connections><connection id="14" name="CrmConnection" connectionManagerID="{A7C9A17E-0A76-44CD-B576-0F8110881768}" /></connections><inputs><input id="15" name="Input" hasSideEffects="true"><externalMetadataColumns /></input></inputs><outputs><output id="16" name="Output" synchronousInputId="15"><externalMetadataColumns /></output></outputs></component>