<component id="2" name="Dynamics CRM Relationships" componentClassID="Microsoft.ManagedComponentHost" description="Executes a custom script." localeId="1033" version="9" contactInfo="Executes a custom script.;Microsoft Corporation;Microsoft SqlServer v9; © 2004 Microsoft Corporation; All Rights Reserved; http://www.microsoft.com/sql/support;0"><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="15"><arrayElement dataType="System.String"><![CDATA[ScriptMain.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-2012 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.Data
Imports System.Data.Common
Imports System.Data.SqlClient
Imports System.Collections
Imports System.Reflection
Imports System.Diagnostics
Imports System.Web.Services.Protocols

Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS
Imports CozyRoc.SqlServer.SSIS.Attributes
Imports CRM2011 = CozyRoc.Dynamics.Crm2011.OrganizationService
Imports CRM4 = CozyRoc.Dynamics.Crm.Service


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
<ColumnMappings()> _
<SortProperties(New String() {"CrmConnection", "Action"})> _
<ValidateProperties("Validate")> _
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute> _
<CLSCompliant(False)> _
Public Class ScriptMain
    Inherits UserComponent


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub Input_ProcessInputRow(ByVal Row As InputBuffer)
        Try
            If Not m_service2011 Is Nothing Then
                ' CRM 2011
                Dim req As New CRM2011.OrganizationRequest
                req.RequestName = m_requestName

                ' Setup relationship parameters.
                Dim entity1 As New CRM2011.EntityReference
                entity1.LogicalName = CStr(Row.Buffer(m_fenIndex))
                entity1.Id = New Guid(Row.Buffer(m_feiIndex).ToString())
                Dim entity2 As New CRM2011.EntityReference
                entity2.LogicalName = CStr(Row.Buffer(m_senIndex))
                entity2.Id = New Guid(Row.Buffer(m_seiIndex).ToString())

                req("Target") = New CRM2011.EntityReference() {entity1, entity2}

                ' Execute action.
                Call m_service2011.Execute(req)
            Else
                ' CRM 4.0

                ' Setup relationship parameters.
                Dim target As New CRM4.TargetRelatedDynamic
                target.Entity1Name = CStr(Row.Buffer(m_fenIndex))
                target.Entity1Id = New Guid(Row.Buffer(m_feiIndex).ToString())
                target.Entity2Name = CStr(Row.Buffer(m_senIndex))
                target.Entity2Id = New Guid(Row.Buffer(m_seiIndex).ToString())

                ' Execute action.
                Select Case Me.Action
                    Case ActionTypes.SetRelated
                        Dim addReq As New CRM4.SetRelatedRequest()
                        addReq.Target = target
                        Call m_service4.Execute(addReq)

                    Case ActionTypes.RemoveRelated
                        Dim removeReq As New CRM4.RemoveRelatedRequest()
                        removeReq.Target = target
                        Call m_service4.Execute(removeReq)

                    Case Else
                        Throw New ApplicationException("Unhandled action type.")
                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), _
            ICrmConnection)
        Call m_connection.Connect()

        Dim service As Object = m_connection.GetService(0)
        m_service2011 = TryCast(service, CRM2011.OrganizationServiceClient)
        If m_service2011 Is Nothing Then
            m_service4 = TryCast(m_connection.GetService(0), CRM4.CrmService)   ' 0 - CRM Service
            If m_service4 Is Nothing Then
                Throw New Exception("Unhandled service object.")
            End If
        End If

        ' Setup request name for CRM 2011.
        Select Case Me.Action
            Case ActionTypes.SetRelated
                m_requestName = "SetRelated"

            Case ActionTypes.RemoveRelated
                m_requestName = "RemoveRelated"

            Case Else
                Throw New ApplicationException("Unhandled action type.")
        End Select

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

        ' Get input column indexes.
        inputCol = GetInputColumn_("FirstEntityName")
        m_fenIndex = Me.HostComponent.BufferManager.FindColumnByLineageID( _
            input.Buffer, _
            inputCol.LineageID)

        inputCol = GetInputColumn_("FirstEntityId")
        m_feiIndex = Me.HostComponent.BufferManager.FindColumnByLineageID( _
            input.Buffer, _
            inputCol.LineageID)

        inputCol = GetInputColumn_("SecondEntityName")
        m_senIndex = Me.HostComponent.BufferManager.FindColumnByLineageID( _
            input.Buffer, _
            inputCol.LineageID)

        inputCol = GetInputColumn_("SecondEntityId")
        m_seiIndex = Me.HostComponent.BufferManager.FindColumnByLineageID( _
            input.Buffer, _
            inputCol.LineageID)
    End Sub ' PreExecute


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

        Call m_connection.Close()
    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 ApplicationException("Select Dynamics CRM connection.")
            End If

            Dim input As IDTSInput100 = Me.ComponentMetaData.InputCollection(0)
            If input.IsAttached AndAlso _
                (input.InputColumnCollection.Count = 0 OrElse _
                input.InputColumnCollection.Count < 4) Then
                Throw New Exception("Map input columns.")
            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


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

        If MyBase.ComponentMetaData.InputCollection.Count = 0 Then
            ' At least one input must exist.
            Throw New Exception("No inputs.")
        End If

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

        ' Cleanup.
        input.ExternalMetadataColumnCollection.IsUsed = True
        Call input.InputColumnCollection.RemoveAll()
        Call input.ExternalMetadataColumnCollection.RemoveAll()

        Dim column As IDTSExternalMetadataColumn100

        ' Setup first entity.
        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "FirstEntityName"
        column.DataType = DataType.DT_WSTR
        column.Length = 100

        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "FirstEntityId"
        column.DataType = DataType.DT_GUID

        ' Setup second entity.
        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "SecondEntityName"
        column.DataType = DataType.DT_WSTR
        column.Length = 100

        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "SecondEntityId"
        column.DataType = DataType.DT_GUID
    End Sub ' ReinitializeMetaData


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


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Select action to perform.")> _
    Public Property Action() As ActionTypes
        Get
            Action = m_action
        End Get
        Set(ByVal value As ActionTypes)
            m_action = value
        End Set
    End Property    ' Action
#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 Relationships", _
            message, _
            String.Empty, _
            0, _
            cancel)
    End Sub ' FireError_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetInputColumn_(ByVal externalName As String) As IDTSInputColumn100
        Dim result As IDTSInputColumn100
        Dim input As IDTSInput100 = MyBase.ComponentMetaData.InputCollection(0)
        Dim extColumn As IDTSExternalMetadataColumn100 = input.ExternalMetadataColumnCollection(externalName)

        ' Find input column for specified external column.
        For Each inputCol As IDTSInputColumn100 In input.InputColumnCollection
            If inputCol.ExternalMetadataColumnID = extColumn.ID Then
                ' Found input column.
                result = inputCol
                Exit For
            End If
        Next

        If result Is Nothing Then
            Throw New Exception("Input column not found.")
        End If

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


#Region "Attributes"
    Enum ActionTypes
        SetRelated
        RemoveRelated
    End Enum    ' ActionTypes

    Private m_crmConnection As String
    Private m_action As ActionTypes

    Private m_connection As ICrmConnection
    Private m_service2011 As CRM2011.OrganizationServiceClient
    Private m_service4 As CRM4.CrmService
    Private m_requestName As String
    Private m_fenIndex As Integer
    Private m_feiIndex As Integer
    Private m_senIndex As Integer
    Private m_seiIndex As Integer
#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[ScriptComponent_94a431126e834e959139035d1a744e5c.vbproj]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF16LE]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="utf-16"?>
<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>{EE30F7BA-577E-4999-9D15-1F8CEBBF22B9}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>My Project</AppDesignerFolder>
    <RootNamespace>ScriptComponent_94a431126e834e959139035d1a744e5c</RootNamespace>
    <AssemblyName>ScriptComponent_94a431126e834e959139035d1a744e5c</AssemblyName>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <OptionCompare>Binary</OptionCompare>
    <OptionExplicit>On</OptionExplicit>
    <OptionStrict>On</OptionStrict>
  </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="CozyRoc.SSISPlus.2014, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>C:\Program Files (x86)\Microsoft SQL Server\120\SDK\Assemblies\CozyRoc.SSISPlus.2014.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <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" />
    <Reference Include="System">
      <Private>False</Private>
    </Reference>
    <Reference Include="System.Data">
      <Private>False</Private>
    </Reference>
    <Reference Include="Microsoft.SqlServer.ManagedDTS">
      <Private>False</Private>
    </Reference>
    <Reference Include="CozyRoc.Dynamics">
      <Private>False</Private>
    </Reference>
    <Reference Include="System.Web.Services">
      <Private>False</Private>
    </Reference>
    <Reference Include="System.Xml">
      <Private>False</Private>
    </Reference>
  </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\" />
  </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="" />
        <Host Name="SSIS_SC120" />
        <ProjectClient>
          <HostIdentifier>SSIS_SC120</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
  <ItemGroup>
    <Compile Include="ScriptMain.vb" />
    <Compile Include="BufferWrapper.vb" />
    <Compile Include="ComponentWrapper.vb" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="My Project\" />
  </ItemGroup>
</Project>]]></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[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="4.0" schemaVersion="1.0">
	<msb:PropertyGroup>
		<msb:Language>msBuild</msb:Language>
		<msb:CodeName>ScriptComponent_94a431126e834e959139035d1a744e5c</msb:CodeName>
		<msb:DisplayName>ScriptComponent_94a431126e834e959139035d1a744e5c</msb:DisplayName>
		<msb:ProjectId>{7AC3BD27-EB1B-499F-8AF1-7715941AFAC1}</msb:ProjectId>
	</msb:PropertyGroup>
	<msb:ItemGroup>
		<msb:Project Include="ScriptComponent_94a431126e834e959139035d1a744e5c.vbproj"/>
		<msb:Folder Include="My Project\"/>
		<msb:File Include="ScriptMain.vb"/>
		<msb:File Include="ComponentWrapper.vb"/>
		<msb:File Include="BufferWrapper.vb"/>
	</msb:ItemGroup>
</c:Project>]]></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[ScriptComponent_94a431126e834e959139035d1a744e5c.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAgAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v
ZGUuDQ0KJAAAAAAAAABQRQAATAEDACi+EFQAAAAAAAAAAOAAAiELAQsAADAAAAAGAAAAAAAAbk4A
AAAgAAAAYAAAAAAAEAAgAAAAAgAABAAAAAAAAAAEAAAAAAAAAACgAAAAAgAAAAAAAAIAQIUAABAA
ABAAAAAAEAAAEAAAAAAAABAAAAAAAAAAAAAAABROAABXAAAAAGAAAEgDAAAAAAAAAAAAAAAAAAAA
AAAAAIAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAIAAACAAAAAAAAAAAAAAACCAAAEgAAAAAAAAAAAAAAC50ZXh0AAAAdC4AAAAgAAAAMAAAAAIA
AAAAAAAAAAAAAAAAACAAAGAucnNyYwAAAEgDAAAAYAAAAAQAAAAyAAAAAAAAAAAAAAAAAABAAABA
LnJlbG9jAAAMAAAAAIAAAAACAAAANgAAAAAAAAAAAAAAAAAAQAAAQgAAAAAAAAAAAAAAAAAAAABQ
TgAAAAAAAEgAAAACAAUA0CkAAEQkAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4CKAEAAAoqHgIoBAAACiqmcwYAAAqAAQAABHMHAAAKgAIA
AARzCAAACoADAAAEcwkAAAqABAAABCoAABMwAQALAAAAAQAAEX4BAAAEbwoAAAoqABMwAQALAAAA
AgAAEX4CAAAEbwsAAAoqABMwAQALAAAAAwAAEX4DAAAEbwwAAAoqABMwAQALAAAABAAAEX4EAAAE
bw0AAAoqABMwAgANAAAABQAAEQIDKBEAAAooEgAACioAAAATMAEABwAAAAYAABECKBMAAAoqABMw
AQALAAAABwAAEdAFAAACKBQAAAoqABMwAQAHAAAACAAAEQIoFQAACioAEzABABAAAAAJAAARAowB
AAAbLQYoAQAAKyoCKhMwAgAQAAAACgAAEQMSAP4VAgAAGwaBAgAAGyoeAigXAAAKKhMwAgAoAAAA
CwAAEQJ7GQAACm8aAAAKCweMAwAAGy0SKAIAACsLAnsZAAAKB28bAAAKBypKAigXAAAKAnMcAAAK
fRkAAAoqADoCAwQFDgQOBSgeAAAKKgATMAEABwAAAAwAABEWjR4AAAEqABMwAQAHAAAADQAAERaN
HgAAASoAEzABAAkAAAAOAAARAigfAAAKCgYqAAAAEzABAAkAAAAPAAARAiggAAAKCgYqAAAAfgIo
IgAACgICcxoAAAZ9BgAABAICcxwAAAZ9BwAABCq+AwIoIwAACm8kAAAKcgEAAHBvJQAACm8mAAAK
MxECAgMXBQ4EcxEAAAZvGAAABipKKwcCA28ZAAAGA28UAAAGLfEqAAYqAAA6AigXAAAKAgN9CAAA
BCoAEzACACAAAAAQAAARAnsIAAAEbyMAAApvJwAACnINAABwbygAAApvKQAACio6AigXAAAKAgN9
CQAABCoAHgIoFgAABiobMAUAAgIAABEAABECew0AAAQ50QAAAHMqAAAKDAgCew8AAARvKwAACnMs
AAAKCgYDby0AAAoCexAAAARvLgAACigvAAAKbzAAAAoGEgkDby0AAAoCexEAAARvLgAACm8VAAAK
KDEAAAoRCW8yAAAKcywAAAoLBwNvLQAACgJ7EgAABG8uAAAKKC8AAApvMAAACgcSCQNvLQAACgJ7
EwAABG8uAAAKbxUAAAooMQAAChEJbzIAAAoIcikAAHAYjSYAAAETChEKFgaiEQoXB6IRCm8zAAAK
AnsNAAAECG80AAAKJt0lAQAAczUAAAoNCQNvLQAACgJ7EAAABG8uAAAKKC8AAApvNgAACgkSCQNv
LQAACgJ7EQAABG8uAAAKbxUAAAooMQAAChEJbzcAAAoJA28tAAAKAnsSAAAEby4AAAooLwAACm84
AAAKCRIJA28tAAAKAnsTAAAEby4AAApvFQAACigxAAAKEQlvOQAACgJvJQAABkUCAAAAAgAAACEA
AAArPnM6AAAKEwQRBAlvOwAACgJ7DgAABBEEbzwAAAomKypzPQAAChMFEQUJbz4AAAoCew4AAAQR
BW88AAAKJisLcjcAAHBzPwAACnrePSUoQAAAChMGAhEGb0EAAApvQgAACm8oAAAGKEMAAAreHCUo
QAAAChMHAhEHb0QAAApvKAAABihDAAAK3gAqAABBNAAAAAAAAAAAAADEAQAAxAEAACEAAAArAAAB
AAAAAAAAAADEAQAA5QEAABwAAAAsAAABEzAEAIcBAAASAAARAihFAAAKAgJ7BgAABG8bAAAGFG9G
AAAKdA4AAAF9DAAABAJ7DAAABG9HAAAKAnsMAAAEFm9IAAAKKBEAAAoMAgh1DwAAAX0NAAAEAnsN
AAAELSoCAnsMAAAEFm9IAAAKdRAAAAF9DgAABAJ7DgAABC0LcmUAAHBzSQAACnoCbyUAAAZFAgAA
AAIAAAAPAAAAKxoCcpkAAHB9DwAABCsYAnKvAABwfQ8AAAQrC3I3AABwcz8AAAp6AigjAAAKbyQA
AAoWjDcAAAFvJQAACgoCcssAAHBvKQAABgsCAm9KAAAKb0sAAAoGb0wAAAoHb00AAApvTgAACn0Q
AAAEAnLrAABwbykAAAYLAgJvSgAACm9LAAAKBm9MAAAKB29NAAAKb04AAAp9EQAABAJyBwEAcG8p
AAAGCwICb0oAAApvSwAACgZvTAAACgdvTQAACm9OAAAKfRIAAAQCcikBAHBvKQAABgsCAm9KAAAK
b0sAAAoGb0wAAAoHb00AAApvTgAACn0TAAAEKgBKAihPAAAKAnsMAAAEb1AAAAoqABswAgCeAAAA
EwAAEQJvIwAABihRAAAKLAtyRwEAcHM/AAAKegJvIwAACm8kAAAKFow3AAABbyUAAAoMCG9SAAAK
LCcIb1MAAApvVAAAChYuDghvUwAACm9UAAAKGi8LcocBAHBzSQAACnoCbyMAAApvJwAACnINAABw
bygAAAoCbyMAAAZvVQAAChcK3hglKEAAAAoNFgoDCW9EAAAKUShDAAAK3gAGCwcqAAABEAAAAAAA
AIKCABgsAAABEzACAPAAAAAUAAARAihWAAAKAigjAAAKbyQAAApvVwAAChYzC3KtAQBwc0kAAAp6
AigjAAAKbyQAAAoWjDcAAAFvJQAACgsHb1gAAAoXb1kAAAoHb1MAAApvWgAACgdvWAAACm9bAAAK
B29YAAAKb1wAAAoKBnLLAABwb10AAAoGIIIAAABvXgAACgYfZG9fAAAKB29YAAAKb1wAAAoKBnLr
AABwb10AAAoGH0hvXgAACgdvWAAACm9cAAAKCgZyBwEAcG9dAAAKBiCCAAAAb14AAAoGH2RvXwAA
CgdvWAAACm9cAAAKCgZyKQEAcG9dAAAKBh9Ib14AAAoqEzABAAkAAAAVAAARAnsKAAAECgYqAAAA
IgIDfQoAAAQqAAAAEzABAAkAAAAWAAARAnsLAAAECgYqAAAAIgIDfQsAAAQqAAAAEzADABMAAAAX
AAARF40eAAABCwcWcsMBAHCiBwoGKgATMAcAHQAAABgAABEWCgIoIwAAChZy3QEAcAN+YAAAChYS
AG9hAAAKKgAAABswAgCIAAAAGQAAEQIoIwAACm8kAAAKFow3AAABbyUAAAoMCG9YAAAKA29iAAAK
CghvUwAACm9jAAAKEwUrIhEFb2QAAAp0DQAAARMEEQRvZQAACgZvZgAACjMFEQQN3iERBW9nAAAK
LdXeFhEFdT8AAAEsDBEFdT8AAAFvaAAACtwJLQtyEwIAcHNJAAAKegkLByoBEAAAAgAkADxgABYA
AAAAQlNKQgEAAQAAAAAADAAAAHY0LjAuMzAzMTkAAAAABQBsAAAAJAwAACN+AACQDAAAhBAAACNT
dHJpbmdzAAAAABQdAABEAgAAI1VTAFgfAAAQAAAAI0dVSUQAAABoHwAA3AQAACNCbG9iAAAAAAAA
AAIAAAFXHaIJCQ4AAAD6JTMAFgAAAQAAAEkAAAAMAAAAFgAAACkAAAAWAAAAcgAAAAIAAAA1AAAA
GQAAAAUAAAALAAAADQAAAAkAAAABAAAADAAAAAMAAAADAAAAAgAAAAAATRABAAAAAAAKAEsBIQEK
AH8BYQEGAI8BiAEKAOcBIQEGAGUCiAEKAOcCvQIOADkDIgMSAIgDZwMWALkDZwMSAMgDZwMOAGwE
IgMaACcF/wQeAEQGGwYOAI0GIgMiAOcGugYiACwHDwcGAJUHiAEmANEHuwcmAOoHuwcmABcI/wcG
AEEILggKAIAIWQgKAJgIEwAmAM0IsAgGAAIJ4ggGACAJiAEGAEQJiAEKAF0JEwAGAKsJjAkGAL8J
iAESAMYJZwMGANMJiAEeAOkJGwYeABgKGwYeAEMKGwYeAGAKGwYeAKMKGwYiANIKugYiAOIKugYi
APYKDwciAAsLDwciAB0LDwcqAGQLRgsGAHILiAEGAHwLiAEKAJwLWQguAHwLiAEiAMgLugYiACEM
DwciADoMDwciAEMMDwcGAEsMiAEKAGAMWQgyAIcMfAwGAOoMiAEWAPAMZwMeABQNGwYeAIINGwYe
ANsNGwYeAPkNGwYaAGgO/wQGAKwOmQ4GAPgOiAESAAwPZwMOAFUPMw8OAHEPMw8OAIkPMw8OAKEP
Mw8mALUPuwcmAMoPuwcGANwP4ggGAPwP4ggGADQQGhAAAAAAAQAAAAAAAQABAAAAAAApADcABQAB
AAEAAAAAAGsANwAJAAEAAgAAARAAdgA3AA0AAQADAAUBAACAAAAADQAFAAgABQEAAI4AAAANAAUA
DwABAAAAqQC1AB0ABgARAAEAAADmALUALQAGABYAAQAAAPQAtQANAAgAGgABAAAAAAG1AA0ACQAc
AAEAAAAKAbUAIAAKAB0AAgEAABUBAABFABQAKgAxAKoBIAAxANMBLQAxAPUBOgAxABoCRwAhAPYC
kAAGAPQAyQAGAAABzQABAMwE4QABAMwE4QABAHQGEQEBAIQGFAEBAJwGGAEBAAEHHAEBADcHIAEB
AEIHEQEBAFAHJAEBAFsHJAEBAGYHJAEBAHEHJAEGBpoHJAFWgKIHFAFWgK0HFAFQIAAAAAAGGFsB
EwABAFggAAAAAAYYWwETAAEAYCAAAAAAERiWARcAAQCMIAAAAAATCJ0BGwABAKQgAAAAABMIwwEo
AAEAvCAAAAAAEwjsATUAAQDUIAAAAAATCAoCQgABAOwgAAAAAEYCUAJjAAEACCEAAAAARgJZAmgA
AgAcIQAAAACDAGoCbAACADQhAAAAAEYCcgJxAAIASCEAAAAAEQB7AngAAgBkIQAAAAABAJkCgAAD
AIAhAAAAAAYYWwETAAQAiCEAAAAAAwitAosABAC8IQAAAAAGGFsBEwAEANAhAAAAAAYYWwGvAAQA
4CEAAAAARgoCBLsACQD0IQAAAABGChkEuwAJAAgiAAAAAIYAMQTAAAkAICIAAAAAhgA5BMAACQA4
IgAAAAAGGFsBEwAJAFgiAAAAAEYCgATRAAkAiCIAAAAARgOfBNsADQCcIgAAAABGA7IE2wAOAKAi
AAAAAAYYWwHlAA8AsCIAAAAABghABesAEADcIgAAAAAGGFsB5QAQAOwiAAAAAAYYWwETABEA9CIA
AAAARgKyBNsAEQA4JQAAAABGAmAFEwASAMwmAAAAAEYCawUTABIA4CYAAAAABgB3BfUAEgCcJwAA
AABGAosFEwATAJgoAAAAAAYIQAVxABMAsCgAAAAABgigBfsAEwC8KAAAAAAGCLgFAAEUANQoAAAA
AAYIwwUFARQA4CgAAAAAAQjOBbsAFQAAKQAAAAABAOQF+wAVACwpAAAAAAEAVwYLARYAAAABAFcC
AAABAJACAAABAJACAAABANYDAAACAOADAAADAOkDAAAEAPEDAAAFAPgDAAABAI0EAAACAJUEAAAD
APEDAAAEAPgDAAABAPEDAAABAMgEAAABANYDAAABANYDAAABAMgEAAABAIAFAAABALIFAAABALIF
AAABAO8FAAABAGcGCQBbARMAkQBbAToBoQBbAUkBEQBbARMAqQBbARMAJABbARMALABbARMANABb
ARMAPABbARMAJACtAosALACtAosANACtAosAPACtAosAsQBbARMAuQBbARMAwQBbAfsAyQARCd4B
GQBQAmMAGQBZAmgAKQAyCesBGQByAnEA2QBOCfsBGQBbARMA4QBbAQsCRAD2ApAATAB4CYsATACC
CYgCTABbARMA6QBbAZcCOQBbAa8A+QAxBMAA+QA5BMAAAQFbAZcCWQBbARMAQQACCqcCCQEvCq0C
EQFQCrMCGQFZCmgACQGDCroCIQFQCsACKQG8CusAOQFbARMAOQGBC/sAMQFbARMAOQCRC8wCSQBQ
CtECcQFyAtYCMQGoC/sAaQFbAfsAMQG4C9sCOQG/C+ICeQDdC+gCQQFbARMAQQHlC/sAQQH1C9sC
QQEDDPsAQQETDNsCSQFbARMASQEvDPECgQDdC/gCUQFbARMAUQEvDPECoQFbAfsAqQFsDAEDWQGP
DAgDsQGaDHEAqQGnDBcAYQG5DHEAQQBgBRMAYQDFDDUDcQDXDBMAcQDfDNECYQFbAfsAWQACDToD
wQEpDUADGQGRC2gAaQA7DWgAyQFJDUYDQQBrBRMAcQBfDRMA8QBlDVcDGQFzDcAAGQGfDVwD0QG5
DWgAKQHDDfsAWQCLBRMAEQG5DWgAGQEhDm0D4QFGDpcC0QFRDhMA4QFRDhMA4QFbDnMD2QFfDvsA
2QFxDnkD2QF+DoAD8QCJDhEBCQGPDpoD4QFQCqUD0QG4DqwD8QHGDrIDaQDSDmgA2QFZCmgA8QHv
DsAA+QEEDxMAAQJbARMACQJbAfsAEQJbAdYDGQJbARMAIQJbAfsAKQJbAfsAMQJbAfsAOQJbAYAD
QQJbARMASQJbAfsACABUADABCABYADUBKQCDAJgBLgCDA2sELgCLA3QELgCTA5MEQAArADUBQAAT
AEABQwAbAE8BQwATAEABSQCDAMoBYwAbAE8BYwATAEABaQCDAKkBgAArADUBgwB7ADUBgwBzADUB
gwAbAE8BiQCDALYBoAArADUBowATAEABowDDABMCwAArADUBwwATAEABwwDrAJwC4AArADUB4wAL
AZwCAAErADUBAAETAEABAwELAZwCIAETAEABIAErADUBKQF7Az4EKQFrA/oDKQFzAxEEQAErADUB
QAETAEABSQFzA0wESQF7Az4EYAErADUBYAETAEABYwFbA9wDYwFjAzUBYwFLAzUBYwELAZwCYwFT
A8gDgAErADUBoAErADUBwAETAEABwAErADUB4AErADUBAAITAEABAAIrADUBQAMLAZwCgAMLAZwC
hAGJAY4BkwHjAecB8gH3AQYCBgKOAqICogLjAeMBxwIOA0wDYgOFA/cBjgOTA+MBtgMEAAEABgAF
AAcABgAJAAgACwAJAAAAfwFPAAAAOAJUAAAA5wFZAAAARAJeAAAAAAOYAAAARQTEAAAAWATEAAAA
UgXwAAAAUgUnAQAAfAcrAQAAgwfEAAIABAADAAIABQAFAAIABgAHAAIABwAJAAIADwALAAIAEgAN
AAIAEwAPAAIAGwARAAEAJAATAAIAIwATAAIAJQAVAAEAJgAVAAIAJwAXAHUAdQCIAGgBbwF2AX0B
dQJ8AgSAAAAAAAAAAAAAAAAAAAAAALUAAAAEAAAAAAAAAAAAAAABAAoAAAAAAAoAAAAAAAAAAAAA
AAoAEwAAAAAAAQAAAAAAAAAAAAAAnQAMAwAAAAAMAAAAAAAAAAAAAACmAEoDAAAAAAwAAAAAAAAA
AAAAAKYAmAMAAAAADAAAAAAAAAAAAAAApgDcBAAAAAAMAAAAAAAAAAAAAACmAPcFAAAAAAEAAAAA
AAAAAAAAAJ0AqQYAAAAABAAAAAAAAAAAAAAAAQCIAQAAAAAEAAAAAAAAAAAAAAAKADILAAAAAAIA
AAAAAAAAAAAAAAEACgAAAAAABAAAAAAAAAAAAAAAAQB8DAAAAAAFAAQABgAEAAwACwAAABAADACO
AgAAEAAZAI4CAAAAABsAjgItAAECLQCDAgAAADxNb2R1bGU+AG1zY29ybGliAE1pY3Jvc29mdC5W
aXN1YWxCYXNpYwBNeUFwcGxpY2F0aW9uAFNjcmlwdENvbXBvbmVudF85NGE0MzExMjZlODM0ZTk1
OTEzOTAzNWQxYTc0NGU1Yy5NeQBNeUNvbXB1dGVyAE15UHJvamVjdABNeVdlYlNlcnZpY2VzAFRo
cmVhZFNhZmVPYmplY3RQcm92aWRlcmAxAElucHV0QnVmZmVyAFNjcmlwdENvbXBvbmVudF85NGE0
MzExMjZlODM0ZTk1OTEzOTAzNWQxYTc0NGU1YwBVc2VyQ29tcG9uZW50AENvbm5lY3Rpb25zAFZh
cmlhYmxlcwBTY3JpcHRNYWluAEFjdGlvblR5cGVzAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5BcHBs
aWNhdGlvblNlcnZpY2VzAEFwcGxpY2F0aW9uQmFzZQAuY3RvcgBNaWNyb3NvZnQuVmlzdWFsQmFz
aWMuRGV2aWNlcwBDb21wdXRlcgBTeXN0ZW0AT2JqZWN0AC5jY3RvcgBnZXRfQ29tcHV0ZXIAbV9D
b21wdXRlck9iamVjdFByb3ZpZGVyAGdldF9BcHBsaWNhdGlvbgBtX0FwcE9iamVjdFByb3ZpZGVy
AFVzZXIAZ2V0X1VzZXIAbV9Vc2VyT2JqZWN0UHJvdmlkZXIAZ2V0X1dlYlNlcnZpY2VzAG1fTXlX
ZWJTZXJ2aWNlc09iamVjdFByb3ZpZGVyAEFwcGxpY2F0aW9uAFdlYlNlcnZpY2VzAEVxdWFscwBv
AEdldEhhc2hDb2RlAFR5cGUAR2V0VHlwZQBUb1N0cmluZwBDcmVhdGVfX0luc3RhbmNlX18AVABp
bnN0YW5jZQBEaXNwb3NlX19JbnN0YW5jZV9fAGdldF9HZXRJbnN0YW5jZQBNaWNyb3NvZnQuVmlz
dWFsQmFzaWMuTXlTZXJ2aWNlcy5JbnRlcm5hbABDb250ZXh0VmFsdWVgMQBtX0NvbnRleHQAR2V0
SW5zdGFuY2UAQ296eVJvYy5TU0lTUGx1cy4yMDE0AENvenlSb2MuU3FsU2VydmVyLlNTSVMAU2Ny
aXB0QnVmZmVyUGx1cwBNaWNyb3NvZnQuU3FsU2VydmVyLlR4U2NyaXB0AE1pY3Jvc29mdC5TcWxT
ZXJ2ZXIuRHRzLlBpcGVsaW5lAFNjcmlwdENvbXBvbmVudABNaWNyb3NvZnQuU3FsU2VydmVyLlBp
cGVsaW5lSG9zdABQaXBlbGluZUJ1ZmZlcgBPdXRwdXROYW1lTWFwAENvbXBvbmVudABPYmplY3RJ
RABJc0lucHV0AEJ1ZmZlcgBPdXRwdXRNYXAAZ2V0X1N0YXRpY0lucHV0Q29sdW1ucwBnZXRfU3Rh
dGljT3V0cHV0Q29sdW1ucwBOZXh0Um93AEVuZE9mUm93c2V0AFN0YXRpY0lucHV0Q29sdW1ucwBT
dGF0aWNPdXRwdXRDb2x1bW5zAFNjcmlwdENvbXBvbmVudFBsdXMAUHJvY2Vzc0lucHV0AElucHV0
SUQASW5wdXROYW1lAElucHV0X1Byb2Nlc3NJbnB1dABJbnB1dF9Qcm9jZXNzSW5wdXRSb3cAUm93
AFBhcmVudENvbXBvbmVudABNaWNyb3NvZnQuU3FsU2VydmVyLkRUU1J1bnRpbWVXcmFwAE1pY3Jv
c29mdC5TcWxTZXJ2ZXIuRHRzLlJ1bnRpbWUuV3JhcHBlcgBJRFRTQ29ubmVjdGlvbk1hbmFnZXIx
MDAAZ2V0X0NybUNvbm5lY3Rpb24AQ3JtQ29ubmVjdGlvbgBQcmVFeGVjdXRlAFBvc3RFeGVjdXRl
AFZhbGlkYXRlAGVyck1lc3NhZ2UAUmVpbml0aWFsaXplTWV0YURhdGEAc2V0X0NybUNvbm5lY3Rp
b24AdmFsdWUAZ2V0X0FjdGlvbgBzZXRfQWN0aW9uAGdldF9Dcm1Db25uZWN0aW9uVHlwZQBGaXJl
RXJyb3JfAG1lc3NhZ2UATWljcm9zb2Z0LlNxbFNlcnZlci5EVFNQaXBlbGluZVdyYXAATWljcm9z
b2Z0LlNxbFNlcnZlci5EdHMuUGlwZWxpbmUuV3JhcHBlcgBJRFRTSW5wdXRDb2x1bW4xMDAAR2V0
SW5wdXRDb2x1bW5fAGV4dGVybmFsTmFtZQBtX2NybUNvbm5lY3Rpb24AbV9hY3Rpb24ASUNybUNv
bm5lY3Rpb24AbV9jb25uZWN0aW9uAENvenlSb2MuRHluYW1pY3MAQ296eVJvYy5EeW5hbWljcy5D
cm0yMDExLk9yZ2FuaXphdGlvblNlcnZpY2UAT3JnYW5pemF0aW9uU2VydmljZUNsaWVudABtX3Nl
cnZpY2UyMDExAENvenlSb2MuRHluYW1pY3MuQ3JtLlNlcnZpY2UAQ3JtU2VydmljZQBtX3NlcnZp
Y2U0AG1fcmVxdWVzdE5hbWUAbV9mZW5JbmRleABtX2ZlaUluZGV4AG1fc2VuSW5kZXgAbV9zZWlJ
bmRleABBY3Rpb24AQ3JtQ29ubmVjdGlvblR5cGUARW51bQB2YWx1ZV9fAFNldFJlbGF0ZWQAUmVt
b3ZlUmVsYXRlZABTeXN0ZW0uQ29tcG9uZW50TW9kZWwARWRpdG9yQnJvd3NhYmxlQXR0cmlidXRl
AEVkaXRvckJyb3dzYWJsZVN0YXRlAFN5c3RlbS5Db2RlRG9tLkNvbXBpbGVyAEdlbmVyYXRlZENv
ZGVBdHRyaWJ1dGUAU3lzdGVtLkRpYWdub3N0aWNzAERlYnVnZ2VySGlkZGVuQXR0cmlidXRlAE1p
Y3Jvc29mdC5WaXN1YWxCYXNpYy5Db21waWxlclNlcnZpY2VzAFN0YW5kYXJkTW9kdWxlQXR0cmli
dXRlAEhpZGVNb2R1bGVOYW1lQXR0cmlidXRlAFN5c3RlbS5Db21wb25lbnRNb2RlbC5EZXNpZ24A
SGVscEtleXdvcmRBdHRyaWJ1dGUAU3lzdGVtLlJ1bnRpbWUuQ29tcGlsZXJTZXJ2aWNlcwBSdW50
aW1lSGVscGVycwBHZXRPYmplY3RWYWx1ZQBSdW50aW1lVHlwZUhhbmRsZQBHZXRUeXBlRnJvbUhh
bmRsZQBBY3RpdmF0b3IAQ3JlYXRlSW5zdGFuY2UATXlHcm91cENvbGxlY3Rpb25BdHRyaWJ1dGUA
Z2V0X1ZhbHVlAHNldF9WYWx1ZQBTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMAQ29tVmlz
aWJsZUF0dHJpYnV0ZQBTdHJpbmcAU2NyaXB0QnVmZmVyAENMU0NvbXBsaWFudEF0dHJpYnV0ZQBJ
RFRTQ29tcG9uZW50TWV0YURhdGExMDAAZ2V0X0NvbXBvbmVudE1ldGFEYXRhAElEVFNJbnB1dENv
bGxlY3Rpb24xMDAAZ2V0X0lucHV0Q29sbGVjdGlvbgBJRFRTSW5wdXQxMDAAZ2V0X0l0ZW0AZ2V0
X0lEAElEVFNSdW50aW1lQ29ubmVjdGlvbkNvbGxlY3Rpb24xMDAAZ2V0X1J1bnRpbWVDb25uZWN0
aW9uQ29sbGVjdGlvbgBJRFRTUnVudGltZUNvbm5lY3Rpb24xMDAAZ2V0X0Nvbm5lY3Rpb25NYW5h
Z2VyAEVudGl0eVJlZmVyZW5jZQBPcmdhbml6YXRpb25SZXF1ZXN0AFRhcmdldFJlbGF0ZWREeW5h
bWljAFNldFJlbGF0ZWRSZXF1ZXN0AFJlbW92ZVJlbGF0ZWRSZXF1ZXN0AFN5c3RlbS5XZWIuU2Vy
dmljZXMAU3lzdGVtLldlYi5TZXJ2aWNlcy5Qcm90b2NvbHMAU29hcEV4Y2VwdGlvbgBFeGNlcHRp
b24AR3VpZABzZXRfUmVxdWVzdE5hbWUAZ2V0X0J1ZmZlcgBDb252ZXJzaW9ucwBzZXRfTG9naWNh
bE5hbWUAc2V0X0lkAHNldF9JdGVtAE9yZ2FuaXphdGlvblJlc3BvbnNlAEV4ZWN1dGUAc2V0X0Vu
dGl0eTFOYW1lAHNldF9FbnRpdHkxSWQAc2V0X0VudGl0eTJOYW1lAHNldF9FbnRpdHkySWQAVGFy
Z2V0UmVsYXRlZABzZXRfVGFyZ2V0AFJlc3BvbnNlAFJlcXVlc3QAQXBwbGljYXRpb25FeGNlcHRp
b24AUHJvamVjdERhdGEAU2V0UHJvamVjdEVycm9yAFN5c3RlbS5YbWwAWG1sTm9kZQBnZXRfRGV0
YWlsAGdldF9Jbm5lclhtbABDbGVhclByb2plY3RFcnJvcgBnZXRfTWVzc2FnZQBBY3F1aXJlQ29u
bmVjdGlvbgBDb25uZWN0AEdldFNlcnZpY2UASW50MzIAUGlwZWxpbmVDb21wb25lbnQAZ2V0X0hv
c3RDb21wb25lbnQASURUU0J1ZmZlck1hbmFnZXIxMDAAZ2V0X0J1ZmZlck1hbmFnZXIAZ2V0X0xp
bmVhZ2VJRABGaW5kQ29sdW1uQnlMaW5lYWdlSUQAQ2xvc2UASXNOdWxsT3JFbXB0eQBnZXRfSXNB
dHRhY2hlZABJRFRTSW5wdXRDb2x1bW5Db2xsZWN0aW9uMTAwAGdldF9JbnB1dENvbHVtbkNvbGxl
Y3Rpb24AZ2V0X0NvdW50AHNldF9Db25uZWN0aW9uTWFuYWdlcklEAElEVFNFeHRlcm5hbE1ldGFk
YXRhQ29sdW1uMTAwAElEVFNFeHRlcm5hbE1ldGFkYXRhQ29sdW1uQ29sbGVjdGlvbjEwMABnZXRf
RXh0ZXJuYWxNZXRhZGF0YUNvbHVtbkNvbGxlY3Rpb24Ac2V0X0lzVXNlZABSZW1vdmVBbGwATmV3
AHNldF9OYW1lAERhdGFUeXBlAHNldF9EYXRhVHlwZQBzZXRfTGVuZ3RoAEVtcHR5AEZpcmVFcnJv
cgBTeXN0ZW0uQ29sbGVjdGlvbnMASUVudW1lcmF0b3IAR2V0RW51bWVyYXRvcgBnZXRfQ3VycmVu
dABnZXRfRXh0ZXJuYWxNZXRhZGF0YUNvbHVtbklEAE1vdmVOZXh0AElEaXNwb3NhYmxlAERpc3Bv
c2UAU1NJU1NjcmlwdENvbXBvbmVudEVudHJ5UG9pbnRBdHRyaWJ1dGUAQ296eVJvYy5TcWxTZXJ2
ZXIuU1NJUy5BdHRyaWJ1dGVzAFZhbGlkYXRlUHJvcGVydGllc0F0dHJpYnV0ZQBTb3J0UHJvcGVy
dGllc0F0dHJpYnV0ZQBDb2x1bW5NYXBwaW5nc0F0dHJpYnV0ZQBDb25uZWN0aW9uQXR0cmlidXRl
AERlc2NyaXB0aW9uQXR0cmlidXRlAENhdGVnb3J5QXR0cmlidXRlAENvbXBpbGF0aW9uUmVsYXhh
dGlvbnNBdHRyaWJ1dGUAUnVudGltZUNvbXBhdGliaWxpdHlBdHRyaWJ1dGUAU3lzdGVtLlJ1bnRp
bWUuVmVyc2lvbmluZwBUYXJnZXRGcmFtZXdvcmtBdHRyaWJ1dGUAU2NyaXB0Q29tcG9uZW50Xzk0
YTQzMTEyNmU4MzRlOTU5MTM5MDM1ZDFhNzQ0ZTVjLmRsbAAAAAALSQBuAHAAdQB0AAAbQwByAG0A
QwBvAG4AbgBlAGMAdABpAG8AbgAADVQAYQByAGcAZQB0AAAtVQBuAGgAYQBuAGQAbABlAGQAIABh
AGMAdABpAG8AbgAgAHQAeQBwAGUALgAAM1UAbgBoAGEAbgBkAGwAZQBkACAAcwBlAHIAdgBpAGMA
ZQAgAG8AYgBqAGUAYwB0AC4AABVTAGUAdABSAGUAbABhAHQAZQBkAAAbUgBlAG0AbwB2AGUAUgBl
AGwAYQB0AGUAZAAAH0YAaQByAHMAdABFAG4AdABpAHQAeQBOAGEAbQBlAAAbRgBpAHIAcwB0AEUA
bgB0AGkAdAB5AEkAZAAAIVMAZQBjAG8AbgBkAEUAbgB0AGkAdAB5AE4AYQBtAGUAAB1TAGUAYwBv
AG4AZABFAG4AdABpAHQAeQBJAGQAAD9TAGUAbABlAGMAdAAgAEQAeQBuAGEAbQBpAGMAcwAgAEMA
UgBNACAAYwBvAG4AbgBlAGMAdABpAG8AbgAuAAAlTQBhAHAAIABpAG4AcAB1AHQAIABjAG8AbAB1
AG0AbgBzAC4AABVOAG8AIABpAG4AcAB1AHQAcwAuAAAZRABZAE4AQQBNAEkAQwBTAC0AQwBSAE0A
ATVEAHkAbgBhAG0AaQBjAHMAIABDAFIATQAgAFIAZQBsAGEAdABpAG8AbgBzAGgAaQBwAHMAAC9J
AG4AcAB1AHQAIABjAG8AbAB1AG0AbgAgAG4AbwB0ACAAZgBvAHUAbgBkAC4AAADpdFDoTXDPRa6I
sVN+iKrxAAi3elxWGTTgiQiwP19/EdUKOgMgAAEDAAABBAAAEgwHBhUSGAESDAQAABIIBwYVEhgB
EggEAAASEQcGFRIYARIRBAAAEhQHBhUSGAESFAQIABIMBAgAEggECAASEQQIABIUBCABAhwDIAAI
BCAAEhUDIAAOAh4ABxABAR4AHgAHMAEBARAeAAITAAQgABMABwYVEhkBEwAEKAATAAgWz0kLuAw0
6giJhF3NgIDMkQsgBQESIQgCEiUSKQQgAB0OAyAAAgQoAB0OAwYSJAMGEigJIAQBCA4SJRIpBSAB
ARIcAwYSIQUgAQESIQQgABIxBCgAEjEFIAECEA4EIAEBDgQgABEwBSABAREwBSABEjUOAgYOAwYR
MAMGEjkDBhI9AwYSQQIGCAMoAA4EKAARMAQAAAAABAEAAAAFIAEBEU0IAQABAAAAAAAFIAIBDg4Y
AQAKTXlUZW1wbGF0ZQgxMC4wLjAuMAAABhUSGAESDAYVEhgBEggGFRIYARIRBhUSGAESFAQHARIM
BAcBEggEBwESEQQHARIUEAEAC015LkNvbXB1dGVyAAAMAQAHTXkuVXNlcgAAEwEADk15LldlYlNl
cnZpY2VzAAATAQAOTXkuQXBwbGljYXRpb24AAAQAARwcAwcBAgMHAQgGAAESFRFpBAcBEhUDBwEO
BRABAB4ABAoBHgAEBwEeAAcgBAEODg4OYQEANFN5c3RlbS5XZWIuU2VydmljZXMuUHJvdG9jb2xz
LlNvYXBIdHRwQ2xpZW50UHJvdG9jb2wSQ3JlYXRlX19JbnN0YW5jZV9fE0Rpc3Bvc2VfX0luc3Rh
bmNlX18AAAAGFRIYARMABhUSGQETAAQKARMABSABARMACAcDEwATABMABCABAQIFAQAAAAAEBwEd
DgUgABKAhQUgABKAiQYgARKAjRwFIAASgJEGIAESgJUcBAcBEjEEIAASJQQgARwIBAABDhwGIAEB
EYC9BSACAQ4cCCABEoDBEoCdBiABARKAxQggARKAyRKAzQYAAQESgLEFIAASgNkmBwwSgJkSgJkS
gJ0SgKESgKUSgKkSgK0SgLERgLURgLUdEoCZETAEIAEcHAUgABKA4QUgABKA5QUgAggICAoHBBKA
jRI1HBEwBAABAg4FIAASgOkKBwQCAhKAjRKAsQUgABKA8QUgABKA7QYgAQERgPUEIAEBCAgHAhKA
7RKAjQQHAREwBgcCHQ4dDgogBgEIDg4OCBACBiABEoDtHAUgABKA+QMgABwRBwYSgO0SNRKAjRI1
EjUSgPkNAQAIVmFsaWRhdGUAAAUgAQEdDh0BAAIAAAANQ3JtQ29ubmVjdGlvbgZBY3Rpb24AABYB
ABFDcm1Db25uZWN0aW9uVHlwZQAALAEAJ1NlbGVjdCBEeW5hbWljcyBDUk0gQ29ubmVjdGlvbiBN
YW5hZ2VyLgAADQEACFNldHRpbmdzAAAeAQAZU2VsZWN0IGFjdGlvbiB0byBwZXJmb3JtLgAACAEA
CAAAAAAAHgEAAQBUAhZXcmFwTm9uRXhjZXB0aW9uVGhyb3dzAUcBABouTkVURnJhbWV3b3JrLFZl
cnNpb249djQuMAEAVA4URnJhbWV3b3JrRGlzcGxheU5hbWUQLk5FVCBGcmFtZXdvcmsgNAA8TgAA
AAAAAAAAAABeTgAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUE4AAAAAAAAAAAAAAAAAAAAAAAAA
AF9Db3JEbGxNYWluAG1zY29yZWUuZGxsAAAAAAD/JQAgABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAABgAAIAA
AAAAAAAAAAAAAAAAAAEAAQAAADAAAIAAAAAAAAAAAAAAAAAAAAEAAAAAAEgAAABYYAAA7AIAAAAA
AAAAAAAA7AI0AAAAVgBTAF8AVgBFAFIAUwBJAE8ATgBfAEkATgBGAE8AAAAAAL0E7/4AAAEAAAAA
AAAAAAAAAAAAAAAAAD8AAAAAAAAABAAAAAIAAAAAAAAAAAAAAAAAAABEAAAAAQBWAGEAcgBGAGkA
bABlAEkAbgBmAG8AAAAAACQABAAAAFQAcgBhAG4AcwBsAGEAdABpAG8AbgAAAAAAAACwBEwCAAAB
AFMAdAByAGkAbgBnAEYAaQBsAGUASQBuAGYAbwAAACgCAAABADAAMAAwADAAMAA0AGIAMAAAACwA
AgABAEYAaQBsAGUARABlAHMAYwByAGkAcAB0AGkAbwBuAAAAAAAgAAAAMAAIAAEARgBpAGwAZQBW
AGUAcgBzAGkAbwBuAAAAAAAwAC4AMAAuADAALgAwAAAAjAA1AAEASQBuAHQAZQByAG4AYQBsAE4A
YQBtAGUAAABTAGMAcgBpAHAAdABDAG8AbQBwAG8AbgBlAG4AdABfADkANABhADQAMwAxADEAMgA2
AGUAOAAzADQAZQA5ADUAOQAxADMAOQAwADMANQBkADEAYQA3ADQANABlADUAYwAuAGQAbABsAAAA
AAAoAAIAAQBMAGUAZwBhAGwAQwBvAHAAeQByAGkAZwBoAHQAAAAgAAAAlAA1AAEATwByAGkAZwBp
AG4AYQBsAEYAaQBsAGUAbgBhAG0AZQAAAFMAYwByAGkAcAB0AEMAbwBtAHAAbwBuAGUAbgB0AF8A
OQA0AGEANAAzADEAMQAyADYAZQA4ADMANABlADkANQA5ADEAMwA5ADAAMwA1AGQAMQBhADcANAA0
AGUANQBjAC4AZABsAGwAAAAAADQACAABAFAAcgBvAGQAdQBjAHQAVgBlAHIAcwBpAG8AbgAAADAA
LgAwAC4AMAAuADAAAAA4AAgAAQBBAHMAcwBlAG0AYgBsAHkAIABWAGUAcgBzAGkAbwBuAAAAMAAu
ADAALgAwAC4AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAwAAABwPgAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=]]></arrayElement></arrayElements></property><property id="9" name="UserComponentTypeName" dataType="System.String">CozyRoc.SqlServer.SSIS.ScriptComponentHostPlus, CozyRoc.SSISPlus.2014, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea</property><property id="11" 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">ScriptComponent_94a431126e834e959139035d1a744e5c</property><property id="12" 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></properties><connections><connection id="14" name="CrmConnection" connectionManagerID="{8100503D-F653-44C5-8EFD-392EC423F8E1}" /></connections><inputs><input id="15" name="Input" hasSideEffects="true"><externalMetadataColumns isUsed="True"><externalMetadataColumn id="20" name="FirstEntityName" dataType="wstr" length="100" /><externalMetadataColumn id="21" name="FirstEntityId" dataType="guid" /><externalMetadataColumn id="22" name="SecondEntityName" dataType="wstr" length="100" /><externalMetadataColumn id="23" name="SecondEntityId" dataType="guid" /></externalMetadataColumns></input></inputs></component>