<component id="2" name="Dynamics CRM Associations" 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", "RelationshipName"})> _
<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
                req("RelationshipName") = Me.RelationshipName

                ' Setup relationship parameters.
                Dim moniker1 As New CRM2011.EntityReference
                moniker1.LogicalName = CStr(Row.Buffer(m_fenIndex))
                moniker1.Id = New Guid(Row.Buffer(m_feiIndex).ToString())
                req("Moniker1") = moniker1

                Dim moniker2 As New CRM2011.EntityReference
                moniker2.LogicalName = CStr(Row.Buffer(m_senIndex))
                moniker2.Id = New Guid(Row.Buffer(m_seiIndex).ToString())
                req("Moniker2") = moniker2

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

                ' Setup relationship parameters.
                Dim moniker1 As New CRM4.Moniker
                moniker1.Name = CStr(Row.Buffer(m_fenIndex))
                moniker1.Id = New Guid(Row.Buffer(m_feiIndex).ToString())

                Dim moniker2 As New CRM4.Moniker
                moniker2.Name = CStr(Row.Buffer(m_senIndex))
                moniker2.Id = New Guid(Row.Buffer(m_seiIndex).ToString())

                ' Execute action.
                Select Case Me.Action
                    Case ActionTypes.Associate
                        Dim assocReq As New CRM4.AssociateEntitiesRequest
                        assocReq.Moniker1 = moniker1
                        assocReq.Moniker2 = moniker2
                        assocReq.RelationshipName = Me.RelationshipName
                        Call m_service4.Execute(assocReq)

                    Case ActionTypes.Disassociate
                        Dim disassocReq As New CRM4.DisassociateEntitiesRequest
                        disassocReq.Moniker1 = moniker1
                        disassocReq.Moniker2 = moniker2
                        disassocReq.RelationshipName = Me.RelationshipName
                        Call m_service4.Execute(disassocReq)

                    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)   ' 0 - CRM Service

        m_service2011 = TryCast(service, CRM2011.OrganizationServiceClient)
        If m_service2011 Is Nothing Then
            m_service4 = TryCast(service, CRM4.CrmService)
            If m_service4 Is Nothing Then
                Throw New Exception("Unhandled service object.")
            End If
        End If

        ' Setup request for CRM 2011.
        Select Case Me.Action
            Case ActionTypes.Associate
                m_requestName = "AssociateEntities"

            Case ActionTypes.Disassociate
                m_requestName = "DisassociateEntities"

            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

            If String.IsNullOrEmpty(Me.RelationshipName) Then
                Throw New ApplicationException("Specify relationship name.")
            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


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Specify relationship name.")> _
    Public Property RelationshipName() As String
        Get
            RelationshipName = m_relationshipName
        End Get
        Set(ByVal value As String)
            m_relationshipName = value
        End Set
    End Property    ' RelationshipName
#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
        Associate
        Disassociate
    End Enum    ' ActionTypes

    Private m_crmConnection As String
    Private m_action As ActionTypes
    Private m_relationshipName As String

    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[ScriptComponent_fb9fe4dbdd154fe1b06903054a22dc92.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>{0C9E8046-52E7-4D2F-9113-343CB5758CE9}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>My Project</AppDesignerFolder>
    <RootNamespace>ScriptComponent_fb9fe4dbdd154fe1b06903054a22dc92</RootNamespace>
    <AssemblyName>ScriptComponent_fb9fe4dbdd154fe1b06903054a22dc92</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[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[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_fb9fe4dbdd154fe1b06903054a22dc92</msb:CodeName>
		<msb:DisplayName>ScriptComponent_fb9fe4dbdd154fe1b06903054a22dc92</msb:DisplayName>
		<msb:ProjectId>{847A3FAF-382D-40A4-82C6-A332349A05EC}</msb:ProjectId>
	</msb:PropertyGroup>
	<msb:ItemGroup>
		<msb:Project Include="ScriptComponent_fb9fe4dbdd154fe1b06903054a22dc92.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_fb9fe4dbdd154fe1b06903054a22dc92.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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
RgKLBRMAEwDkKAAAAAAGCEAFcQATAPwoAAAAAAYIoAX7ABMACCkAAAAABgi4BQABFAAgKQAAAAAG
CMMFBQEUACwpAAAAAAYIzgVxABUARCkAAAAABgjjBfsAFQBQKQAAAAABCPgFuwAWAHApAAAAAAEA
Dgb7ABYAnCkAAAAAAQCBBgsBFwAAAAEAVwIAAAEAkAIAAAEAkAIAAAEA1gMAAAIA4AMAAAMA6QMA
AAQA8QMAAAUA+AMAAAEAjQQAAAIAlQQAAAMA8QMAAAQA+AMAAAEA8QMAAAEAyAQAAAEA1gMAAAEA
1gMAAAEAyAQAAAEAgAUAAAEAsgUAAAEAsgUAAAEAsgUAAAEAGQYAAAEAkQYJAFsBEwCRAFsBOgGh
AFsBSQERAFsBEwCpAFsBEwAkAFsBEwAsAFsBEwA0AFsBEwA8AFsBEwAkAK0CiwAsAK0CiwA0AK0C
iwA8AK0CiwCxAFsBEwC5AFsBEwDBAFsB+wDJAF0J3gEZAFACYwAZAFkCaAApAH4J6wEZAHICcQDZ
AJoJ+wEZAFsBEwDhAFsBCwJEAPYCkABMAMQJiwBMAM4JiAJMAFsBEwDpAFsBlwI5AFsBrwD5ADEE
wAD5ADkEwAABAVsBlwJZAFsBEwBBAE4KpwIJAXsKrQIRAZwKswIZAaUKaAAJAc8KugIhAZwKwAIp
AQgL6wA5AVsBEwA5Ac4L+wA5Ad4LzAIxAVsBEwA5AOcL0gJJAJwK1wJxAXIC3AIxAf4L+wBpAVsB
+wAxAQ4M4QJ5ACoM6AJBAVsBEwBBATIM+wBBAQ4M4QJJAVsBEwBJATsM8QJJAUgM8QJJAeMF+wCB
ACoM+AJRAVsBEwBRATsM8QJRAUgM8QJRAeMF+wCZAVsB+wChAYcMAQNZAaoMCAOpAbUMcQChAcIM
FwBhAdQMcQBBAGAFEwBhAOAMNANxAPIMEwBxAPoM1wJhAVsB+wBZAB0NOQO5AUQNPwMZAecLaABp
AFYNaADBAWQNRQNBAGsFEwBxAHoNEwDxAIANVgMZAY4NwAAZAboNWwPJAdQNaAApAd4N+wBZAIsF
EwARAdQNaAAZATwObAPZAWEOlwLJAWwOEwDZAWwOEwDZAXYOcgPRATIM+wDRAYMOeAPRAZAOfwPx
AJsOEQEJAaEOmQPZAZwKpAPJAcoOqwPpAdgOsQNpAOQOaADRAaUKaADpAQEPwADxARYPEwD5AVsB
EwABAlsB+wAJAlsB1QMRAlsBEwAZAlsB+wAhAlsB+wApAlsB+wAxAlsBfwM5AlsBEwBBAlsB+wAI
AFgAMAEIAFwANQEpAIMAmAEuAJMDmwQuAJsDpAQuAKMDwwRAACsANQFAABMAQAFDABsATwFDABMA
QAFJAIMAygFjABsATwFjABMAQAFpAIMAqQGAACsANQGDAHsANQGDAHMANQGDABsATwGJAIMAtgGg
ACsANQGjABMAQAGjAMMAEwLAACsANQHDABMAQAHDAOsAnALgACsANQHjAAsBnAIAARMAQAEAASsA
NQEDAQsBnAIgASsANQEgARMAQAEpAYMDIQQpAYsDTgQpAXsDCgRAARMAQAFAASsANQFJAYMDfARJ
AYsDTgRgARMAQAFgASsANQFjAQsBnAJjAXMDNQFjAVsDNQFjAWMDxwNjAWsD2wNpAYsDTgRpAYMD
XASAASsANQGgASsANQHAASsANQHAARMAQAHgASsANQEAAisANQEAAhMAQAFAAwsBnAKAAwsBnAKE
AYkBjgGTAeMB5wHyAfcBBgIGAo4CogKiAuMB4wHHAg4DSwNhA4QD9wGNA/cBkgPjAbUDBAABAAYA
BQAHAAYACQAIAAsACQAAAH8BTwAAADgCVAAAAOcBWQAAAEQCXgAAAAADmAAAAEUExAAAAFgExAAA
AFIF8AAAAFIFJwEAALkHKwEAAMAHJwEAANEHxAACAAQAAwACAAUABQACAAYABwACAAcACQACAA8A
CwACABIADQACABMADwACABsAEQACACMAEwABACQAEwABACYAFQACACUAFQACACcAFwABACgAFwAC
ACkAGQB1AHUAiABoAW8BdgF9AXUCfAIEgAAAAAAAAAAAAAAAAAAAAAC1AAAABAAAAAAAAAAAAAAA
AQAKAAAAAAAKAAAAAAAAAAAAAAAKABMAAAAAAAEAAAAAAAAAAAAAAJ0ADAMAAAAADAAAAAAAAAAA
AAAApgBKAwAAAAAMAAAAAAAAAAAAAACmAJgDAAAAAAwAAAAAAAAAAAAAAKYA3AQAAAAADAAAAAAA
AAAAAAAApgAhBgAAAAABAAAAAAAAAAAAAACdAOYGAAAAAAQAAAAAAAAAAAAAAAEAiAEAAAAABAAA
AAAAAAAAAAAACgB/CwAAAAACAAAAAAAAAAAAAAABAAoAAAAAAAQAAAAAAAAAAAAAAAEAlwwAAAAA
BQAEAAYABAAMAAsAAAAQAAwAjgIAABAAGQCOAgAAAAAbAI4CLQABAi0AgwIAAAAAADxNb2R1bGU+
AG1zY29ybGliAE1pY3Jvc29mdC5WaXN1YWxCYXNpYwBNeUFwcGxpY2F0aW9uAFNjcmlwdENvbXBv
bmVudF9mYjlmZTRkYmRkMTU0ZmUxYjA2OTAzMDU0YTIyZGM5Mi5NeQBNeUNvbXB1dGVyAE15UHJv
amVjdABNeVdlYlNlcnZpY2VzAFRocmVhZFNhZmVPYmplY3RQcm92aWRlcmAxAElucHV0QnVmZmVy
AFNjcmlwdENvbXBvbmVudF9mYjlmZTRkYmRkMTU0ZmUxYjA2OTAzMDU0YTIyZGM5MgBVc2VyQ29t
cG9uZW50AENvbm5lY3Rpb25zAFZhcmlhYmxlcwBTY3JpcHRNYWluAEFjdGlvblR5cGVzAE1pY3Jv
c29mdC5WaXN1YWxCYXNpYy5BcHBsaWNhdGlvblNlcnZpY2VzAEFwcGxpY2F0aW9uQmFzZQAuY3Rv
cgBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuRGV2aWNlcwBDb21wdXRlcgBTeXN0ZW0AT2JqZWN0AC5j
Y3RvcgBnZXRfQ29tcHV0ZXIAbV9Db21wdXRlck9iamVjdFByb3ZpZGVyAGdldF9BcHBsaWNhdGlv
bgBtX0FwcE9iamVjdFByb3ZpZGVyAFVzZXIAZ2V0X1VzZXIAbV9Vc2VyT2JqZWN0UHJvdmlkZXIA
Z2V0X1dlYlNlcnZpY2VzAG1fTXlXZWJTZXJ2aWNlc09iamVjdFByb3ZpZGVyAEFwcGxpY2F0aW9u
AFdlYlNlcnZpY2VzAEVxdWFscwBvAEdldEhhc2hDb2RlAFR5cGUAR2V0VHlwZQBUb1N0cmluZwBD
cmVhdGVfX0luc3RhbmNlX18AVABpbnN0YW5jZQBEaXNwb3NlX19JbnN0YW5jZV9fAGdldF9HZXRJ
bnN0YW5jZQBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuTXlTZXJ2aWNlcy5JbnRlcm5hbABDb250ZXh0
VmFsdWVgMQBtX0NvbnRleHQAR2V0SW5zdGFuY2UAQ296eVJvYy5TU0lTUGx1cy4yMDE0AENvenlS
b2MuU3FsU2VydmVyLlNTSVMAU2NyaXB0QnVmZmVyUGx1cwBNaWNyb3NvZnQuU3FsU2VydmVyLlR4
U2NyaXB0AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRHRzLlBpcGVsaW5lAFNjcmlwdENvbXBvbmVudABN
aWNyb3NvZnQuU3FsU2VydmVyLlBpcGVsaW5lSG9zdABQaXBlbGluZUJ1ZmZlcgBPdXRwdXROYW1l
TWFwAENvbXBvbmVudABPYmplY3RJRABJc0lucHV0AEJ1ZmZlcgBPdXRwdXRNYXAAZ2V0X1N0YXRp
Y0lucHV0Q29sdW1ucwBnZXRfU3RhdGljT3V0cHV0Q29sdW1ucwBOZXh0Um93AEVuZE9mUm93c2V0
AFN0YXRpY0lucHV0Q29sdW1ucwBTdGF0aWNPdXRwdXRDb2x1bW5zAFNjcmlwdENvbXBvbmVudFBs
dXMAUHJvY2Vzc0lucHV0AElucHV0SUQASW5wdXROYW1lAElucHV0X1Byb2Nlc3NJbnB1dABJbnB1
dF9Qcm9jZXNzSW5wdXRSb3cAUm93AFBhcmVudENvbXBvbmVudABNaWNyb3NvZnQuU3FsU2VydmVy
LkRUU1J1bnRpbWVXcmFwAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRHRzLlJ1bnRpbWUuV3JhcHBlcgBJ
RFRTQ29ubmVjdGlvbk1hbmFnZXIxMDAAZ2V0X0NybUNvbm5lY3Rpb24AQ3JtQ29ubmVjdGlvbgBQ
cmVFeGVjdXRlAFBvc3RFeGVjdXRlAFZhbGlkYXRlAGVyck1lc3NhZ2UAUmVpbml0aWFsaXplTWV0
YURhdGEAc2V0X0NybUNvbm5lY3Rpb24AdmFsdWUAZ2V0X0FjdGlvbgBzZXRfQWN0aW9uAGdldF9S
ZWxhdGlvbnNoaXBOYW1lAHNldF9SZWxhdGlvbnNoaXBOYW1lAGdldF9Dcm1Db25uZWN0aW9uVHlw
ZQBGaXJlRXJyb3JfAG1lc3NhZ2UATWljcm9zb2Z0LlNxbFNlcnZlci5EVFNQaXBlbGluZVdyYXAA
TWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUGlwZWxpbmUuV3JhcHBlcgBJRFRTSW5wdXRDb2x1bW4x
MDAAR2V0SW5wdXRDb2x1bW5fAGV4dGVybmFsTmFtZQBtX2NybUNvbm5lY3Rpb24AbV9hY3Rpb24A
bV9yZWxhdGlvbnNoaXBOYW1lAElDcm1Db25uZWN0aW9uAG1fY29ubmVjdGlvbgBDb3p5Um9jLkR5
bmFtaWNzAENvenlSb2MuRHluYW1pY3MuQ3JtMjAxMS5Pcmdhbml6YXRpb25TZXJ2aWNlAE9yZ2Fu
aXphdGlvblNlcnZpY2VDbGllbnQAbV9zZXJ2aWNlMjAxMQBDb3p5Um9jLkR5bmFtaWNzLkNybS5T
ZXJ2aWNlAENybVNlcnZpY2UAbV9zZXJ2aWNlNABtX3JlcXVlc3ROYW1lAG1fZmVuSW5kZXgAbV9m
ZWlJbmRleABtX3NlbkluZGV4AG1fc2VpSW5kZXgAQWN0aW9uAFJlbGF0aW9uc2hpcE5hbWUAQ3Jt
Q29ubmVjdGlvblR5cGUARW51bQB2YWx1ZV9fAEFzc29jaWF0ZQBEaXNhc3NvY2lhdGUAU3lzdGVt
LkNvbXBvbmVudE1vZGVsAEVkaXRvckJyb3dzYWJsZUF0dHJpYnV0ZQBFZGl0b3JCcm93c2FibGVT
dGF0ZQBTeXN0ZW0uQ29kZURvbS5Db21waWxlcgBHZW5lcmF0ZWRDb2RlQXR0cmlidXRlAFN5c3Rl
bS5EaWFnbm9zdGljcwBEZWJ1Z2dlckhpZGRlbkF0dHJpYnV0ZQBNaWNyb3NvZnQuVmlzdWFsQmFz
aWMuQ29tcGlsZXJTZXJ2aWNlcwBTdGFuZGFyZE1vZHVsZUF0dHJpYnV0ZQBIaWRlTW9kdWxlTmFt
ZUF0dHJpYnV0ZQBTeXN0ZW0uQ29tcG9uZW50TW9kZWwuRGVzaWduAEhlbHBLZXl3b3JkQXR0cmli
dXRlAFN5c3RlbS5SdW50aW1lLkNvbXBpbGVyU2VydmljZXMAUnVudGltZUhlbHBlcnMAR2V0T2Jq
ZWN0VmFsdWUAUnVudGltZVR5cGVIYW5kbGUAR2V0VHlwZUZyb21IYW5kbGUAQWN0aXZhdG9yAENy
ZWF0ZUluc3RhbmNlAE15R3JvdXBDb2xsZWN0aW9uQXR0cmlidXRlAGdldF9WYWx1ZQBzZXRfVmFs
dWUAU3lzdGVtLlJ1bnRpbWUuSW50ZXJvcFNlcnZpY2VzAENvbVZpc2libGVBdHRyaWJ1dGUAU3Ry
aW5nAFNjcmlwdEJ1ZmZlcgBDTFNDb21wbGlhbnRBdHRyaWJ1dGUASURUU0NvbXBvbmVudE1ldGFE
YXRhMTAwAGdldF9Db21wb25lbnRNZXRhRGF0YQBJRFRTSW5wdXRDb2xsZWN0aW9uMTAwAGdldF9J
bnB1dENvbGxlY3Rpb24ASURUU0lucHV0MTAwAGdldF9JdGVtAGdldF9JRABJRFRTUnVudGltZUNv
bm5lY3Rpb25Db2xsZWN0aW9uMTAwAGdldF9SdW50aW1lQ29ubmVjdGlvbkNvbGxlY3Rpb24ASURU
U1J1bnRpbWVDb25uZWN0aW9uMTAwAGdldF9Db25uZWN0aW9uTWFuYWdlcgBFbnRpdHlSZWZlcmVu
Y2UAT3JnYW5pemF0aW9uUmVxdWVzdABNb25pa2VyAEFzc29jaWF0ZUVudGl0aWVzUmVxdWVzdABE
aXNhc3NvY2lhdGVFbnRpdGllc1JlcXVlc3QAU3lzdGVtLldlYi5TZXJ2aWNlcwBTeXN0ZW0uV2Vi
LlNlcnZpY2VzLlByb3RvY29scwBTb2FwRXhjZXB0aW9uAEV4Y2VwdGlvbgBHdWlkAHNldF9SZXF1
ZXN0TmFtZQBzZXRfSXRlbQBnZXRfQnVmZmVyAENvbnZlcnNpb25zAHNldF9Mb2dpY2FsTmFtZQBz
ZXRfSWQAT3JnYW5pemF0aW9uUmVzcG9uc2UARXhlY3V0ZQBzZXRfTmFtZQBzZXRfTW9uaWtlcjEA
c2V0X01vbmlrZXIyAFJlc3BvbnNlAFJlcXVlc3QAQXBwbGljYXRpb25FeGNlcHRpb24AUHJvamVj
dERhdGEAU2V0UHJvamVjdEVycm9yAFN5c3RlbS5YbWwAWG1sTm9kZQBnZXRfRGV0YWlsAGdldF9J
bm5lclhtbABDbGVhclByb2plY3RFcnJvcgBnZXRfTWVzc2FnZQBBY3F1aXJlQ29ubmVjdGlvbgBD
b25uZWN0AEdldFNlcnZpY2UASW50MzIAUGlwZWxpbmVDb21wb25lbnQAZ2V0X0hvc3RDb21wb25l
bnQASURUU0J1ZmZlck1hbmFnZXIxMDAAZ2V0X0J1ZmZlck1hbmFnZXIAZ2V0X0xpbmVhZ2VJRABG
aW5kQ29sdW1uQnlMaW5lYWdlSUQAQ2xvc2UASXNOdWxsT3JFbXB0eQBnZXRfSXNBdHRhY2hlZABJ
RFRTSW5wdXRDb2x1bW5Db2xsZWN0aW9uMTAwAGdldF9JbnB1dENvbHVtbkNvbGxlY3Rpb24AZ2V0
X0NvdW50AHNldF9Db25uZWN0aW9uTWFuYWdlcklEAElEVFNFeHRlcm5hbE1ldGFkYXRhQ29sdW1u
MTAwAElEVFNFeHRlcm5hbE1ldGFkYXRhQ29sdW1uQ29sbGVjdGlvbjEwMABnZXRfRXh0ZXJuYWxN
ZXRhZGF0YUNvbHVtbkNvbGxlY3Rpb24Ac2V0X0lzVXNlZABSZW1vdmVBbGwATmV3AERhdGFUeXBl
AHNldF9EYXRhVHlwZQBzZXRfTGVuZ3RoAEVtcHR5AEZpcmVFcnJvcgBTeXN0ZW0uQ29sbGVjdGlv
bnMASUVudW1lcmF0b3IAR2V0RW51bWVyYXRvcgBnZXRfQ3VycmVudABnZXRfRXh0ZXJuYWxNZXRh
ZGF0YUNvbHVtbklEAE1vdmVOZXh0AElEaXNwb3NhYmxlAERpc3Bvc2UAU1NJU1NjcmlwdENvbXBv
bmVudEVudHJ5UG9pbnRBdHRyaWJ1dGUAQ296eVJvYy5TcWxTZXJ2ZXIuU1NJUy5BdHRyaWJ1dGVz
AFZhbGlkYXRlUHJvcGVydGllc0F0dHJpYnV0ZQBTb3J0UHJvcGVydGllc0F0dHJpYnV0ZQBDb2x1
bW5NYXBwaW5nc0F0dHJpYnV0ZQBDb25uZWN0aW9uQXR0cmlidXRlAERlc2NyaXB0aW9uQXR0cmli
dXRlAENhdGVnb3J5QXR0cmlidXRlAENvbXBpbGF0aW9uUmVsYXhhdGlvbnNBdHRyaWJ1dGUAUnVu
dGltZUNvbXBhdGliaWxpdHlBdHRyaWJ1dGUAU3lzdGVtLlJ1bnRpbWUuVmVyc2lvbmluZwBUYXJn
ZXRGcmFtZXdvcmtBdHRyaWJ1dGUAU2NyaXB0Q29tcG9uZW50X2ZiOWZlNGRiZGQxNTRmZTFiMDY5
MDMwNTRhMjJkYzkyLmRsbAAAC0kAbgBwAHUAdAAAG0MAcgBtAEMAbwBuAG4AZQBjAHQAaQBvAG4A
ACFSAGUAbABhAHQAaQBvAG4AcwBoAGkAcABOAGEAbQBlAAARTQBvAG4AaQBrAGUAcgAxAAARTQBv
AG4AaQBrAGUAcgAyAAAtVQBuAGgAYQBuAGQAbABlAGQAIABhAGMAdABpAG8AbgAgAHQAeQBwAGUA
LgAAM1UAbgBoAGEAbgBkAGwAZQBkACAAcwBlAHIAdgBpAGMAZQAgAG8AYgBqAGUAYwB0AC4AACNB
AHMAcwBvAGMAaQBhAHQAZQBFAG4AdABpAHQAaQBlAHMAAClEAGkAcwBhAHMAcwBvAGMAaQBhAHQA
ZQBFAG4AdABpAHQAaQBlAHMAAB9GAGkAcgBzAHQARQBuAHQAaQB0AHkATgBhAG0AZQAAG0YAaQBy
AHMAdABFAG4AdABpAHQAeQBJAGQAACFTAGUAYwBvAG4AZABFAG4AdABpAHQAeQBOAGEAbQBlAAAd
UwBlAGMAbwBuAGQARQBuAHQAaQB0AHkASQBkAAA/UwBlAGwAZQBjAHQAIABEAHkAbgBhAG0AaQBj
AHMAIABDAFIATQAgAGMAbwBuAG4AZQBjAHQAaQBvAG4ALgAANVMAcABlAGMAaQBmAHkAIAByAGUA
bABhAHQAaQBvAG4AcwBoAGkAcAAgAG4AYQBtAGUALgAAJU0AYQBwACAAaQBuAHAAdQB0ACAAYwBv
AGwAdQBtAG4AcwAuAAAVTgBvACAAaQBuAHAAdQB0AHMALgAAGUQAWQBOAEEATQBJAEMAUwAtAEMA
UgBNAAE1RAB5AG4AYQBtAGkAYwBzACAAQwBSAE0AIABSAGUAbABhAHQAaQBvAG4AcwBoAGkAcABz
AAAvSQBuAHAAdQB0ACAAYwBvAGwAdQBtAG4AIABuAG8AdAAgAGYAbwB1AG4AZAAuAAAAAAAO7h4E
Be1MSKSpxOA41aVWAAi3elxWGTTgiQiwP19/EdUKOgMgAAEDAAABBAAAEgwHBhUSGAESDAQAABII
BwYVEhgBEggEAAASEQcGFRIYARIRBAAAEhQHBhUSGAESFAQIABIMBAgAEggECAASEQQIABIUBCAB
AhwDIAAIBCAAEhUDIAAOAh4ABxABAR4AHgAHMAEBARAeAAITAAQgABMABwYVEhkBEwAEKAATAAgW
z0kLuAw06giJhF3NgIDMkQsgBQESIQgCEiUSKQQgAB0OAyAAAgQoAB0OAwYSJAMGEigJIAQBCA4S
JRIpBSABARIcAwYSIQUgAQESIQQgABIxBCgAEjEFIAECEA4EIAEBDgQgABEwBSABAREwBSABEjUO
AgYOAwYRMAMGEjkDBhI9AwYSQQIGCAMoAA4EKAARMAQAAAAABAEAAAAFIAEBEU0IAQABAAAAAAAF
IAIBDg4YAQAKTXlUZW1wbGF0ZQgxMC4wLjAuMAAABhUSGAESDAYVEhgBEggGFRIYARIRBhUSGAES
FAQHARIMBAcBEggEBwESEQQHARIUEAEAC015LkNvbXB1dGVyAAAMAQAHTXkuVXNlcgAAEwEADk15
LldlYlNlcnZpY2VzAAATAQAOTXkuQXBwbGljYXRpb24AAAQAARwcAwcBAgMHAQgGAAESFRFpBAcB
EhUDBwEOBRABAB4ABAoBHgAEBwEeAAcgBAEODg4OYQEANFN5c3RlbS5XZWIuU2VydmljZXMuUHJv
dG9jb2xzLlNvYXBIdHRwQ2xpZW50UHJvdG9jb2wSQ3JlYXRlX19JbnN0YW5jZV9fE0Rpc3Bvc2Vf
X0luc3RhbmNlX18AAAAGFRIYARMABhUSGQETAAQKARMABSABARMACAcDEwATABMABCABAQIFAQAA
AAAEBwEdDgUgABKAhQUgABKAiQYgARKAjRwFIAASgJEGIAESgJUcBAcBEjEFIAIBDhwEIAASJQQg
ARwIBAABDhwGIAEBEYC9CCABEoDBEoCdBiABARKAoQggARKAxRKAyQYAAQESgLEFIAASgNUlBwwS
gJkSgJkSgJ0SgKESgKESgKUSgKkSgK0SgLERgLURgLURMAQgARwcBSAAEoDdBSAAEoDhBSACCAgI
CgcEEoCNEjUcETAEAAECDgUgABKA5QoHBAICEoCNEoCxBSAAEoDtBSAAEoDpBiABARGA8QQgAQEI
CAcCEoDpEoCNBAcBETAGBwIdDh0OCiAGAQgODg4IEAIGIAESgOkcBSAAEoD1AyAAHBEHBhKA6RI1
EoCNEjUSNRKA9Q0BAAhWYWxpZGF0ZQAABSABAR0OLgEAAwAAAA1Dcm1Db25uZWN0aW9uBkFjdGlv
bhBSZWxhdGlvbnNoaXBOYW1lAAAWAQARQ3JtQ29ubmVjdGlvblR5cGUAACwBACdTZWxlY3QgRHlu
YW1pY3MgQ1JNIENvbm5lY3Rpb24gTWFuYWdlci4AAA0BAAhTZXR0aW5ncwAAHwEAGlNwZWNpZnkg
cmVsYXRpb25zaGlwIG5hbWUuAAAeAQAZU2VsZWN0IGFjdGlvbiB0byBwZXJmb3JtLgAACAEACAAA
AAAAHgEAAQBUAhZXcmFwTm9uRXhjZXB0aW9uVGhyb3dzAUcBABouTkVURnJhbWV3b3JrLFZlcnNp
b249djQuMAEAVA4URnJhbWV3b3JrRGlzcGxheU5hbWUQLk5FVCBGcmFtZXdvcmsgNADITwAAAAAA
AAAAAADeTwAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0E8AAAAAAAAAAF9Db3JEbGxNYWluAG1z
Y29yZWUuZGxsAAAAAAD/JQAgABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAABgAAIAA
AAAAAAAAAAAAAAAAAAEAAQAAADAAAIAAAAAAAAAAAAAAAAAAAAEAAAAAAEgAAABYYAAA7AIAAAAA
AAAAAAAA7AI0AAAAVgBTAF8AVgBFAFIAUwBJAE8ATgBfAEkATgBGAE8AAAAAAL0E7/4AAAEAAAAA
AAAAAAAAAAAAAAAAAD8AAAAAAAAABAAAAAIAAAAAAAAAAAAAAAAAAABEAAAAAQBWAGEAcgBGAGkA
bABlAEkAbgBmAG8AAAAAACQABAAAAFQAcgBhAG4AcwBsAGEAdABpAG8AbgAAAAAAAACwBEwCAAAB
AFMAdAByAGkAbgBnAEYAaQBsAGUASQBuAGYAbwAAACgCAAABADAAMAAwADAAMAA0AGIAMAAAACwA
AgABAEYAaQBsAGUARABlAHMAYwByAGkAcAB0AGkAbwBuAAAAAAAgAAAAMAAIAAEARgBpAGwAZQBW
AGUAcgBzAGkAbwBuAAAAAAAwAC4AMAAuADAALgAwAAAAjAA1AAEASQBuAHQAZQByAG4AYQBsAE4A
YQBtAGUAAABTAGMAcgBpAHAAdABDAG8AbQBwAG8AbgBlAG4AdABfAGYAYgA5AGYAZQA0AGQAYgBk
AGQAMQA1ADQAZgBlADEAYgAwADYAOQAwADMAMAA1ADQAYQAyADIAZABjADkAMgAuAGQAbABsAAAA
AAAoAAIAAQBMAGUAZwBhAGwAQwBvAHAAeQByAGkAZwBoAHQAAAAgAAAAlAA1AAEATwByAGkAZwBp
AG4AYQBsAEYAaQBsAGUAbgBhAG0AZQAAAFMAYwByAGkAcAB0AEMAbwBtAHAAbwBuAGUAbgB0AF8A
ZgBiADkAZgBlADQAZABiAGQAZAAxADUANABmAGUAMQBiADAANgA5ADAAMwAwADUANABhADIAMgBk
AGMAOQAyAC4AZABsAGwAAAAAADQACAABAFAAcgBvAGQAdQBjAHQAVgBlAHIAcwBpAG8AbgAAADAA
LgAwAC4AMAAuADAAAAA4AAgAAQBBAHMAcwBlAG0AYgBsAHkAIABWAGUAcgBzAGkAbwBuAAAAMAAu
ADAALgAwAC4AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAwAAADwPwAAAAAAAAAAAAAAAAAAAAAA
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_fb9fe4dbdd154fe1b06903054a22dc92</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>