<component id="2" name="Script Component" componentClassID="Microsoft.ManagedComponentHost" description="Executes a custom script" localeId="1033" version="11" 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 = Nothing
        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[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_780521567bcc4f928a643689dcd570f0.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>{9382BE11-F050-4E7C-98AE-836B32422D28}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>My Project</AppDesignerFolder>
    <RootNamespace>ScriptComponent_fb9fe4dbdd154fe1b06903054a22dc92</RootNamespace>
    <AssemblyName>ScriptComponent_fb9fe4dbdd154fe1b06903054a22dc92</AssemblyName>
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <TargetFrameworkProfile>
    </TargetFrameworkProfile>
  </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.2017, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>C:\Program Files (x86)\Microsoft SQL Server\140\SDK\Assemblies\CozyRoc.SSISPlus.2017.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=14.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSRuntimeWrap, Version=14.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSPipelineWrap, Version=14.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.PipelineHost, Version=14.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="Microsoft.SqlServer.ManagedDTS" />
    <Reference Include="CozyRoc.Dynamics" />
    <Reference Include="System.Web.Services" />
    <Reference Include="System.Xml" />
  </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_SC110" />
        <ProjectClient>
          <HostIdentifier>SSIS_SC140</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>
  <PropertyGroup>
    <OptionCompare>Binary</OptionCompare>
  </PropertyGroup>
  <PropertyGroup>
    <OptionExplicit>On</OptionExplicit>
  </PropertyGroup>
  <PropertyGroup>
    <OptionStrict>On</OptionStrict>
  </PropertyGroup>
</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:CodeName>ScriptComponent_780521567bcc4f928a643689dcd570f0</msb:CodeName>
    <msb:Language>msBuild</msb:Language>
    <msb:DisplayName>ScriptComponent_780521567bcc4f928a643689dcd570f0</msb:DisplayName>
    <msb:ProjectId>{0AEA7D2E-F7BE-4A76-980B-D3232966D82F}</msb:ProjectId>
  </msb:PropertyGroup>
  <msb:ItemGroup>
    <msb:Project Include="ScriptComponent_780521567bcc4f928a643689dcd570f0.vbproj" />
    <msb:File Include="ComponentWrapper.vb" />
    <msb:File Include="ScriptMain.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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
AApyDwIAcG9SAAAKb20AAAoqOgIobAAACgIDfRMAAAQqNgIDKEEAAAoobgAACioeAihvAAAKKi7Q
CgAAAihwAAAKKh4CKCcAAAoqABMwAQAUAAAACQAAEQKMBQAAGy0IKAEAACsKKwICCgYqIgP+FQUA
ABsqHgIobAAACioAAAATMAIAKAAAAAoAABECe3IAAApvcwAACgoGjAgAABstEigCAAArCgJ7cgAA
CgZvdAAACgYqSgIobAAACgJzdQAACn1yAAAKKgBCU0pCAQABAAAAAAAMAAAAdjQuMC4zMDMxOQAA
AAAFAGwAAABQDAAAI34AALwMAADIDwAAI1N0cmluZ3MAAAAAhBwAANACAAAjVVMAVB8AABAAAAAj
R1VJRAAAAGQfAADsBAAAI0Jsb2IAAAAAAAAAAgAAAVcdogkJDgAAAPoBMwAWAAABAAAASQAAAAwA
AAAXAAAAKwAAABcAAAB1AAAAAgAAADgAAAAKAAAABQAAAAwAAAAPAAAACAAAAAEAAAALAAAAAwAA
AAMAAAACAAAAAAAJCAEAAAAAAAYAuQbADAYAKAfADAYAhwXtCw8A4AwAAAYA+AWGBwoAcAX1CgoA
RgXeBwoAmwXeBw4A8wRQDA4AdgsADAYAEQbtCw4AyAWZDA4A4AXlAgYA2g1oCA4AYgtQDA4AKQbl
AgYA7gRoCAYAtAV6DA4ALAG0BwoAWwV0CBIAoQYFDRIAiQYFDRIAbQYFDRYA7wanBAYA2QZoCBIA
XglCAhoA/w1JAxoAPgMhAxoAng5JAxoAqQNJAxoA7QohAxoAsg4hAxoAyw4hAx4AwwkuDQYAxwlo
CCIAEQE1CyIAOAA1CyIAGgA1CwYAqwuHDQYAbwhoCAoAFgfeBwoAWAbeBxIARAYFDRIAtQ1CAhYA
SQ6nBCYAnQqnBBYA0wmnBBIAxg1CAioA4wANCw4Aew2ZDAYAHANoCBoAAwVJAxoADwUhAxoA3w4h
AwYArgloCA4A0AKZDC4AxQM+CAYApg3ADCIAAQA1CyIAswA1CwYAYwFoCCYAGQ6nBCIA/AA1CwYA
ogdoCCIAcwA1CyIAkAA1CyIAygA1CyIASwA1CyoAzAQNCwYA7ANoCBYArAqnBAYA+ANoCAYAxQto
CAAAAADIAQAAAAABAAEAAAAAAKwIhA8lAAEAAQAAAAAAdAuEDykAAQACAAABEADhDYQPOQABAAMA
AQAAAJEIaQEcAAUACAABAAAAuQppAbEAEAAXAAEAAAArDmkBwQAQABwAAQAAAJoNaQE5ABIAIAAB
AAAA7wxpATkAEwAiAAUBAABCDAAAOQAUACMABQEAADsBAAA5ABQAKgACAQAA+QwAAKEAFQAsADEA
WwoEAjEAMgoMAjEARgoUAjEAdAocAgEAkQlEAQEA0AgkAgEAbAREAQEAoQkoAgEAHgEsAgEApwEw
AgEAjwREAQEAbg80AgEAWA80AgEAeQ80AgEAYw80AgYAmg03AgYA7ww7AgEAOQ4/AgEAOQ4/AiEA
LA+5AQYGggI0AlaALwUkAlaAOQUkAlAgAAAAAAYYzwsGAAEAWCAAAAAABhjPCwYAAQBgIAAAAAAR
GNULtQABAIogAAAAABMIZwtEAgEAliAAAAAAEwicCEkCAQCiIAAAAAATCF4LTgIBAK4gAAAAABMI
MgxTAgEAuiAAAAAABhjPCwYAAQDEIAAAAADGAjoPWAIBADQjAAAAAMYCRgcGAAIAtyQAAAAAxgJR
BwYAAgDMJAAAAAAGACYFXgICAKAlAAAAAMYCpQIGAAMAlCYAAAAABghtCYYAAwCpJgAAAAAGCH8J
EAADALQmAAAAAAYIughkAgQAySYAAAAABgjFCGkCBADUJgAAAAAGCEIEhgAFAOkmAAAAAAYIVwQQ
AAUA9CYAAAAAAQjVBG8CBgAUJwAAAAABAJoCEAAGAEAnAAAAAAEAigJ0AgcA6CcAAAAABhjPC3gB
CAD3JwAAAADGCkwNbwINAPcnAAAAAMYKYw1vAg0AACgAAAAAhgBQDwgBDQAYKAAAAACGAPMNCAEN
AC0oAAAAAAYYzwsGAA0ATSgAAAAAxgIWD3sCDQB9KAAAAABGAxAPWAIRAJAoAAAAAEYDOg9YAhIA
kigAAAAABhjPC4cCEwChKAAAAAAGCG0JhwEUAMIoAAAAAAYYzwuHAhQA0SgAAAAAxgInDY0BFQDf
KAAAAADGArkD7gAWAOcoAAAAAIMA6wSOAhYA8ygAAAAAxgKgB4YAFgD8KAAAAAARAG8CkwIWABwp
AAAAAAEAWwKbAhcAJSkAAAAABhjPCwYAGAAwKQAAAAADCJADUAAYAGQpAAAAAAYYzwsGABgAAAAB
AFQPAAABANkDAAABAIAHAAABAIAHAAABAIAHAAABAOQDAAABADUEAAABAGEOAAACADECAAADAAgP
AAAEAL4KAAAFAOEJAAABADoCAAACAJ0EAAADAL4KAAAEAOEJAAABAL4KAAABAFQPAAABAGEOAAAB
AGEOAAABANEJAAABAKADAAABAKADCQDPCwEAEQDPCwYAGQDPCwoAKQDPCxAAMQDPCxUAQQDPCxsA
WQDPCwYAYQDPCwYAaQDPCwYAgQDPCyEAkQDPCykAoQDPCxAAqQDPCwYAsQDPCy4AuQDPCxAAwQDP
CwYAyQDPCykASQHPCxAAUQHPCxAAWQHPCxAASQDPCwYAUQDPCwYADADPCwYAFADPCwYAHADPCwYA
JADPCwYADACQA1AAFACQA1AAHACQA1AAJACQA1AA6QDPCwYA6QB/BBAA6QBfCHAA8QDPCwYAYQGS
CnYAcQFWCHwAkQGgB4EA8QAlBBAAcQCgB4YAmQHPCxAA8QD7AooA2QBVB5EA+QDPCwYA+QAcBBAA
+QD7AooAAQHPCwYAAQFWAZkAAQGaAZkAAQFXBBAA4QBVB58ACQHPCwYACQFWAZkACQGaAZkACQFX
BBAAuQHPCxAAwQGbC6gAEQH0B68AyQFJCIYAwQGJC7UAGQHNA4YAaQFGBwYAiQFMCcUA0QDrDQYA
0QB2A3wA0QFxB8oAGQHPCxAAaQG6As8A2QE4CdUA4QFWCNsAgQFZDuIA8QHbCugAIQGSCu4AKQHY
Ae4A+QHmAfIAaQFRBwYA0QAYBQYAAQK4DwMBIQECAwgBIQH+CAwBCQJ3Du4A2QEYCRIBEQJWCBgB
GQIZAhAAgQGlAgYA4QF3Du4AIQHZCB8BIQIRAykACQL/BwYAIQL/BwYAIQI2DyUBMQEcBBAAMQHI
BCsBMQGpBwEAAQLAD0QB2QF/C0cBIQJWCGcBCQK3C24BOQFrDnQBKQH8Ae4AMQHRAe4AOQEjDwgB
MQIeBQYAYQHPC3gBOQJQDwgBOQLzDQgBgQHPCwYAIQHRAe4AcQDPCwYAGQLFCocBcQAnDY0BcQC5
A+4AiQAKBJIBSQKBA6IBNAAsD7kBPABdB1AAPABnB9ABPADPCwYACABYAPoBCABcAP8BKQBjABIE
LgALANACLgATANkCLgAbAPgCLgAjAAEDQAA7AP8BQAAzAEsDQwArAFoDQwAzAEsDSQBjACMEYwAr
AFoDYwAzAEsDaQBjADcEgAA7AP8BgwBDAP8BgwBLAP8BgwArAFoDiQBjAEQEoAA7AP8BowBrAP8B
owBzAHMDowB7AKIDowCDAP8BowCLAFQDqQCTAFgEqQCbAGYEqQCjAJMEwAA7AP8BwwCLAFQDyQCT
AFgEyQCbAKoE4AA7AP8B4wCLAFQD6QCTAFgE6QCbAMkEQwEzAEsDQwFTALADYwEzAEsDYwFbAFQD
AASLAFQDQASLAFQDYAQzAEsDYAQ7AP8BgAQzAEsDgAQ7AP8BoAQzAEsDoAQ7AP8BwAQzAEsDwAQ7
AP8B4AQ7AP8BAAU7AP8BIAU7AP8BIAUzAEsDQAU7AP8BYAU7AP8BYAUzAEsDVQC5APgAMgE2ATsB
QAFSAZoBrQEEAAEABQAFAAYACQAIAAsACwAMAAAAdgujAgAArgioAgAAYgutAgAARAyyAgAAgwm3
AgAAyQi7AgAAWwS3AgAA2QTAAgAAUA3AAgAAZw3AAgAAgwnFAgAAlAPLAgIABAADAAIABQAFAAIA
BgAHAAIABwAJAAIADgALAAEADwALAAIAEAANAAEAEQANAAIAEgAPAAEAEwAPAAIAFAARAAIAGAAT
AAIAGQAVAAIAIQAXAAIAKgAZADQAOwBCAEkAnwGyAcEByAEEgAAAAAAAAAAAAAAAAAAAAABpAQAA
BAAAAAAAAAAAAAAA1gHcAgAAAAAEAAAAAAAAAAAAAADWAWgIAAAAAAoAAAAAAAAAAAAAAN8B5QIA
AAAAAQAAAAAAAAAAAAAA6AGyAQAAAAAOAAAAAAAAAAAAAADxAYEOAAAAAAEAAAAAAAAAAAAAAOgB
3AsAAAAABAAAAAAAAAAAAAAA3wEeDAAAAAAOAAAAAAAAAAAAAADxAQ4KAAAAAA4AAAAAAAAAAAAA
APEB5w4AAAAADgAAAAAAAAAAAAAA8QHrCQAAAAAEAAAAAAAAAAAAAADWAT4IAAAAAAoABAALAAQA
DAAFAAAAEAAWAFkCAAAQAE8AWQIAAAAAUQBZAuMAqAHjAMsBAAAAAABJRFRTQ29tcG9uZW50TWV0
YURhdGExMDAASURUU0V4dGVybmFsTWV0YWRhdGFDb2x1bW4xMDAASURUU0lucHV0Q29sdW1uMTAw
AElEVFNFeHRlcm5hbE1ldGFkYXRhQ29sdW1uQ29sbGVjdGlvbjEwMABJRFRTSW5wdXRDb2x1bW5D
b2xsZWN0aW9uMTAwAElEVFNSdW50aW1lQ29ubmVjdGlvbkNvbGxlY3Rpb24xMDAASURUU0lucHV0
Q29sbGVjdGlvbjEwMABJRFRTUnVudGltZUNvbm5lY3Rpb24xMDAASURUU0Nvbm5lY3Rpb25NYW5h
Z2VyMTAwAElEVFNCdWZmZXJNYW5hZ2VyMTAwAElEVFNJbnB1dDEwMABtX3NlcnZpY2UyMDExAENv
bnRleHRWYWx1ZWAxAFRocmVhZFNhZmVPYmplY3RQcm92aWRlcmAxAHNldF9Nb25pa2VyMQBJbnQz
MgBTY3JpcHRDb21wb25lbnRfZmI5ZmU0ZGJkZDE1NGZlMWIwNjkwMzA1NGEyMmRjOTIAc2V0X01v
bmlrZXIyAG1fc2VydmljZTQAQ296eVJvYy5TU0lTUGx1cy4yMDE3ADxNb2R1bGU+AGdldF9JRABn
ZXRfTGluZWFnZUlEAEZpbmRDb2x1bW5CeUxpbmVhZ2VJRABnZXRfRXh0ZXJuYWxNZXRhZGF0YUNv
bHVtbklEAHNldF9Db25uZWN0aW9uTWFuYWdlcklEAE9iamVjdElEAElucHV0SUQAQ296eVJvYy5T
cWxTZXJ2ZXIuU1NJUwBUAERpc3Bvc2VfX0luc3RhbmNlX18AQ3JlYXRlX19JbnN0YW5jZV9fAHZh
bHVlX18AR2V0SW5wdXRDb2x1bW5fAEZpcmVFcnJvcl8AUmVpbml0aWFsaXplTWV0YURhdGEAZ2V0
X0NvbXBvbmVudE1ldGFEYXRhAFByb2plY3REYXRhAG1zY29ybGliAE1pY3Jvc29mdC5WaXN1YWxC
YXNpYwBzZXRfSWQAZ2V0X0lzQXR0YWNoZWQAc2V0X0lzVXNlZABHdWlkAENvenlSb2MuRHluYW1p
Y3MuQ3JtLlNlcnZpY2UAQ3JtU2VydmljZQBDb3p5Um9jLkR5bmFtaWNzLkNybTIwMTEuT3JnYW5p
emF0aW9uU2VydmljZQBHZXRTZXJ2aWNlAENyZWF0ZUluc3RhbmNlAGdldF9HZXRJbnN0YW5jZQBp
bnN0YW5jZQBFbnRpdHlSZWZlcmVuY2UAR2V0SGFzaENvZGUAWG1sTm9kZQBnZXRfTWVzc2FnZQBl
cnJNZXNzYWdlAG1lc3NhZ2UASURpc3Bvc2FibGUAUnVudGltZVR5cGVIYW5kbGUAR2V0VHlwZUZy
b21IYW5kbGUAc2V0X05hbWUAc2V0X0xvZ2ljYWxOYW1lAGV4dGVybmFsTmFtZQBnZXRfUmVsYXRp
b25zaGlwTmFtZQBzZXRfUmVsYXRpb25zaGlwTmFtZQBtX3JlbGF0aW9uc2hpcE5hbWUAc2V0X1Jl
cXVlc3ROYW1lAG1fcmVxdWVzdE5hbWUASW5wdXROYW1lAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRHRz
LlBpcGVsaW5lAHNldF9EYXRhVHlwZQBnZXRfQ3JtQ29ubmVjdGlvblR5cGUAR2V0VHlwZQBBcHBs
aWNhdGlvbkJhc2UAT3JnYW5pemF0aW9uUmVzcG9uc2UAQ2xvc2UARGlzcG9zZQBWYWxpZGF0ZQBB
c3NvY2lhdGUARGlzYXNzb2NpYXRlAEVkaXRvckJyb3dzYWJsZVN0YXRlAEhlbHBLZXl3b3JkQXR0
cmlidXRlAEdlbmVyYXRlZENvZGVBdHRyaWJ1dGUARGVidWdnYWJsZUF0dHJpYnV0ZQBFZGl0b3JC
cm93c2FibGVBdHRyaWJ1dGUAQ29tVmlzaWJsZUF0dHJpYnV0ZQBTdGFuZGFyZE1vZHVsZUF0dHJp
YnV0ZQBIaWRlTW9kdWxlTmFtZUF0dHJpYnV0ZQBUYXJnZXRGcmFtZXdvcmtBdHRyaWJ1dGUARGVi
dWdnZXJIaWRkZW5BdHRyaWJ1dGUATXlHcm91cENvbGxlY3Rpb25BdHRyaWJ1dGUAQ29ubmVjdGlv
bkF0dHJpYnV0ZQBEZXNjcmlwdGlvbkF0dHJpYnV0ZQBWYWxpZGF0ZVByb3BlcnRpZXNBdHRyaWJ1
dGUAU29ydFByb3BlcnRpZXNBdHRyaWJ1dGUAQ29sdW1uTWFwcGluZ3NBdHRyaWJ1dGUAQ29tcGls
YXRpb25SZWxheGF0aW9uc0F0dHJpYnV0ZQBDTFNDb21wbGlhbnRBdHRyaWJ1dGUAU1NJU1Njcmlw
dENvbXBvbmVudEVudHJ5UG9pbnRBdHRyaWJ1dGUAQ2F0ZWdvcnlBdHRyaWJ1dGUAUnVudGltZUNv
bXBhdGliaWxpdHlBdHRyaWJ1dGUAUHJlRXhlY3V0ZQBQb3N0RXhlY3V0ZQBnZXRfVmFsdWUAc2V0
X1ZhbHVlAEdldE9iamVjdFZhbHVlAHZhbHVlAFN5c3RlbS5SdW50aW1lLlZlcnNpb25pbmcAVG9T
dHJpbmcAc2V0X0xlbmd0aABNaWNyb3NvZnQuVmlzdWFsQmFzaWMuTXlTZXJ2aWNlcy5JbnRlcm5h
bABTeXN0ZW0uQ29tcG9uZW50TW9kZWwAZ2V0X0RldGFpbABSZW1vdmVBbGwAU2NyaXB0Q29tcG9u
ZW50X2ZiOWZlNGRiZGQxNTRmZTFiMDY5MDMwNTRhMjJkYzkyLmRsbABTeXN0ZW0uWG1sAGdldF9J
bm5lclhtbABnZXRfSXRlbQBzZXRfSXRlbQBTeXN0ZW0ARW51bQBTeXN0ZW0uQ29tcG9uZW50TW9k
ZWwuRGVzaWduAFNjcmlwdE1haW4AZ2V0X0FwcGxpY2F0aW9uAE15QXBwbGljYXRpb24AZ2V0X0Fj
dGlvbgBzZXRfQWN0aW9uAG1fYWN0aW9uAGdldF9FeHRlcm5hbE1ldGFkYXRhQ29sdW1uQ29sbGVj
dGlvbgBnZXRfSW5wdXRDb2x1bW5Db2xsZWN0aW9uAGdldF9SdW50aW1lQ29ubmVjdGlvbkNvbGxl
Y3Rpb24AZ2V0X0lucHV0Q29sbGVjdGlvbgBBY3F1aXJlQ29ubmVjdGlvbgBJQ3JtQ29ubmVjdGlv
bgBnZXRfQ3JtQ29ubmVjdGlvbgBzZXRfQ3JtQ29ubmVjdGlvbgBtX2NybUNvbm5lY3Rpb24AbV9j
b25uZWN0aW9uAEFwcGxpY2F0aW9uRXhjZXB0aW9uAFNvYXBFeGNlcHRpb24AbwBPdXRwdXROYW1l
TWFwAE91dHB1dE1hcABNaWNyb3NvZnQuU3FsU2VydmVyLkRUU1J1bnRpbWVXcmFwAE1pY3Jvc29m
dC5TcWxTZXJ2ZXIuRFRTUGlwZWxpbmVXcmFwAG1fQXBwT2JqZWN0UHJvdmlkZXIAbV9Vc2VyT2Jq
ZWN0UHJvdmlkZXIAbV9Db21wdXRlck9iamVjdFByb3ZpZGVyAG1fTXlXZWJTZXJ2aWNlc09iamVj
dFByb3ZpZGVyAGdldF9CdWZmZXIAUGlwZWxpbmVCdWZmZXIAU2NyaXB0QnVmZmVyAElucHV0QnVm
ZmVyAGdldF9Db25uZWN0aW9uTWFuYWdlcgBnZXRfQnVmZmVyTWFuYWdlcgBNb25pa2VyAFN5c3Rl
bS5Db2RlRG9tLkNvbXBpbGVyAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRHRzLlJ1bnRpbWUuV3JhcHBl
cgBNaWNyb3NvZnQuU3FsU2VydmVyLkR0cy5QaXBlbGluZS5XcmFwcGVyAGdldF9Vc2VyAGdldF9D
b21wdXRlcgBNeUNvbXB1dGVyAEZpcmVFcnJvcgBDbGVhclByb2plY3RFcnJvcgBTZXRQcm9qZWN0
RXJyb3IASUVudW1lcmF0b3IAR2V0RW51bWVyYXRvcgBBY3RpdmF0b3IALmN0b3IALmNjdG9yAENv
enlSb2MuRHluYW1pY3MAU3lzdGVtLkRpYWdub3N0aWNzAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5E
ZXZpY2VzAFN5c3RlbS5XZWIuU2VydmljZXMAZ2V0X1dlYlNlcnZpY2VzAE15V2ViU2VydmljZXMA
TWljcm9zb2Z0LlZpc3VhbEJhc2ljLkFwcGxpY2F0aW9uU2VydmljZXMAU3lzdGVtLlJ1bnRpbWUu
SW50ZXJvcFNlcnZpY2VzAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5Db21waWxlclNlcnZpY2VzAFN5
c3RlbS5SdW50aW1lLkNvbXBpbGVyU2VydmljZXMARGVidWdnaW5nTW9kZXMAVmFyaWFibGVzAEFj
dGlvblR5cGVzAENvenlSb2MuU3FsU2VydmVyLlNTSVMuQXR0cmlidXRlcwBFcXVhbHMAU3lzdGVt
LldlYi5TZXJ2aWNlcy5Qcm90b2NvbHMAZ2V0X1N0YXRpY0lucHV0Q29sdW1ucwBnZXRfU3RhdGlj
T3V0cHV0Q29sdW1ucwBDb252ZXJzaW9ucwBTeXN0ZW0uQ29sbGVjdGlvbnMAQ29ubmVjdGlvbnMA
UnVudGltZUhlbHBlcnMAU2NyaXB0QnVmZmVyUGx1cwBTY3JpcHRDb21wb25lbnRQbHVzAE9iamVj
dABNeVByb2plY3QAQ29ubmVjdABFbmRPZlJvd3NldABPcmdhbml6YXRpb25TZXJ2aWNlQ2xpZW50
AFBpcGVsaW5lQ29tcG9uZW50AFVzZXJDb21wb25lbnQAUGFyZW50Q29tcG9uZW50AFNjcmlwdENv
bXBvbmVudABnZXRfSG9zdENvbXBvbmVudABnZXRfQ3VycmVudABnZXRfQ291bnQATWljcm9zb2Z0
LlNxbFNlcnZlci5UeFNjcmlwdABPcmdhbml6YXRpb25SZXF1ZXN0AEFzc29jaWF0ZUVudGl0aWVz
UmVxdWVzdABEaXNhc3NvY2lhdGVFbnRpdGllc1JlcXVlc3QATWljcm9zb2Z0LlNxbFNlcnZlci5Q
aXBlbGluZUhvc3QASXNJbnB1dABJbnB1dF9Qcm9jZXNzSW5wdXQATW92ZU5leHQAbV9Db250ZXh0
AE5ldwBJbnB1dF9Qcm9jZXNzSW5wdXRSb3cATmV4dFJvdwBtX2ZlaUluZGV4AG1fc2VpSW5kZXgA
bV9mZW5JbmRleABtX3NlbkluZGV4AFNjcmlwdENvbXBvbmVudF9mYjlmZTRkYmRkMTU0ZmUxYjA2
OTAzMDU0YTIyZGM5Mi5NeQBJc051bGxPckVtcHR5AAAAACFSAGUAbABhAHQAaQBvAG4AcwBoAGkA
cABOAGEAbQBlAAARTQBvAG4AaQBrAGUAcgAxAAARTQBvAG4AaQBrAGUAcgAyAAAtVQBuAGgAYQBu
AGQAbABlAGQAIABhAGMAdABpAG8AbgAgAHQAeQBwAGUALgAAM1UAbgBoAGEAbgBkAGwAZQBkACAA
cwBlAHIAdgBpAGMAZQAgAG8AYgBqAGUAYwB0AC4AACNBAHMAcwBvAGMAaQBhAHQAZQBFAG4AdABp
AHQAaQBlAHMAAClEAGkAcwBhAHMAcwBvAGMAaQBhAHQAZQBFAG4AdABpAHQAaQBlAHMAAB9GAGkA
cgBzAHQARQBuAHQAaQB0AHkATgBhAG0AZQAAG0YAaQByAHMAdABFAG4AdABpAHQAeQBJAGQAACFT
AGUAYwBvAG4AZABFAG4AdABpAHQAeQBOAGEAbQBlAAAdUwBlAGMAbwBuAGQARQBuAHQAaQB0AHkA
SQBkAAA/UwBlAGwAZQBjAHQAIABEAHkAbgBhAG0AaQBjAHMAIABDAFIATQAgAGMAbwBuAG4AZQBj
AHQAaQBvAG4ALgAANVMAcABlAGMAaQBmAHkAIAByAGUAbABhAHQAaQBvAG4AcwBoAGkAcAAgAG4A
YQBtAGUALgAAJU0AYQBwACAAaQBuAHAAdQB0ACAAYwBvAGwAdQBtAG4AcwAuAAAbQwByAG0AQwBv
AG4AbgBlAGMAdABpAG8AbgAAFU4AbwAgAGkAbgBwAHUAdABzAC4AABlEAFkATgBBAE0ASQBDAFMA
LQBDAFIATQABNUQAeQBuAGEAbQBpAGMAcwAgAEMAUgBNACAAUgBlAGwAYQB0AGkAbwBuAHMAaABp
AHAAcwAAL0kAbgBwAHUAdAAgAGMAbwBsAHUAbQBuACAAbgBvAHQAIABmAG8AdQBuAGQALgAAC0kA
bgBwAHUAdAAAAAAAdoG2LhsbaUKNobgOsyG8bQAEIAEBCAMgAAEFIAEBEREEIAEBDgUgAgEODgUg
AQERHQcgBAEODg4OBCABAQIFIAEBHQ4GFRIsARIMBhUSLAESCAYVEiwBEj0GFRIsARIoBCAAEwAa
BwoSdRJ5EnkSfRJ9ETASgIESgIUSgIkSgI0FIAIBDhwFIAASgLkEIAEcCAQAAQ4cAyAADgYgAQER
gM0HIAESgNESdQUgAQESfQggARKA1RKA2QYAAQESgI0FIAASgOUDAAABCwcEHBKAkRKAlREwBCAB
HBwEAAEcHAUgABKA7QUgABKA8QYgARKAkRwFIAASgPkFIAASgP0DIAAIBSACCAgICgcEAgISgJES
gI0EAAECDgMgAAIFIAASgQUFIAASgQkGIAESgQ0cBSAAEoERBSAAEoCZBiABARGBFQMHAQ4EBwER
MAQHAR0OAwcBAgIGDgogBgEIDg4OCBACFAcGEoCVEoCVEoCREoCZEoCdEoCVBiABEoCZHAUgABKA
nQMgABwOIAUBEoC1CAISgLkSgL0FIAASgMUEIAECHAcAARJFEYEhBAcBHgACHgAFEAEAHgAECgEe
AAQHARMABhUSLAETAAcGFRJNARMABhUSTQETAAITAAQKARMABSABARMACLd6XFYZNOCJCLA/X38R
1Qo6CBbPSQu4DDTqCImEXc2AgMyRBAAAAAAEAQAAAAcGFRIsARIMBwYVEiwBEggHBhUSLAESPQcG
FRIsARIoAwYRMAMGEmkDBhJtAwYScQIGCAMGEiADBhIkBAYSgLUEAAASDAQAABIIBAAAEj0EAAAS
KAUgAQESGAUgAQIQDgQgABEwBSABAREwBCAAHQ4GIAESgJUOCyAEAQgOEoC5EoC9BiABARKAtQQg
ABJFBxABAR4AHgAHMAEBARAeAAQIABIMBAgAEggECAASPQQIABIoAygADgQoABEwBCgAHQ4FKAAS
gMUEKAATAAgBAAgAAAAAAB4BAAEAVAIWV3JhcE5vbkV4Y2VwdGlvblRocm93cwEIAQACAAAAAABJ
AQAaLk5FVEZyYW1ld29yayxWZXJzaW9uPXY0LjUBAFQOFEZyYW1ld29ya0Rpc3BsYXlOYW1lEi5O
RVQgRnJhbWV3b3JrIDQuNQgBAAEAAAAAAAUBAAAAABgBAApNeVRlbXBsYXRlCDExLjAuMC4wAAAu
AQADAAAADUNybUNvbm5lY3Rpb24GQWN0aW9uEFJlbGF0aW9uc2hpcE5hbWUAAA0BAAhWYWxpZGF0
ZQAAYQEANFN5c3RlbS5XZWIuU2VydmljZXMuUHJvdG9jb2xzLlNvYXBIdHRwQ2xpZW50UHJvdG9j
b2wSQ3JlYXRlX19JbnN0YW5jZV9fE0Rpc3Bvc2VfX0luc3RhbmNlX18AAAAQAQALTXkuQ29tcHV0
ZXIAABMBAA5NeS5BcHBsaWNhdGlvbgAADAEAB015LlVzZXIAABMBAA5NeS5XZWJTZXJ2aWNlcwAA
DQEACFNldHRpbmdzAAAsAQAnU2VsZWN0IER5bmFtaWNzIENSTSBDb25uZWN0aW9uIE1hbmFnZXIu
AAAWAQARQ3JtQ29ubmVjdGlvblR5cGUAAB4BABlTZWxlY3QgYWN0aW9uIHRvIHBlcmZvcm0uAAAf
AQAaU3BlY2lmeSByZWxhdGlvbnNoaXAgbmFtZS4AAAAAAPBNAAAAAAAAAAAAAApOAAAAIAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAD8TQAAAAAAAAAAAAAAAF9Db3JEbGxNYWluAG1zY29yZWUuZGxsAAAA
AAD/JQAgABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAABgAAIAA
AAAAAAAAAAAAAAAAAAEAAQAAADAAAIAAAAAAAAAAAAAAAAAAAAEAAAAAAEgAAABYYAAA7AIAAAAA
AAAAAAAA7AI0AAAAVgBTAF8AVgBFAFIAUwBJAE8ATgBfAEkATgBGAE8AAAAAAL0E7/4AAAEAAAAA
AAAAAAAAAAAAAAAAAD8AAAAAAAAABAAAAAIAAAAAAAAAAAAAAAAAAABEAAAAAQBWAGEAcgBGAGkA
bABlAEkAbgBmAG8AAAAAACQABAAAAFQAcgBhAG4AcwBsAGEAdABpAG8AbgAAAAAAAACwBEwCAAAB
AFMAdAByAGkAbgBnAEYAaQBsAGUASQBuAGYAbwAAACgCAAABADAAMAAwADAAMAA0AGIAMAAAACwA
AgABAEYAaQBsAGUARABlAHMAYwByAGkAcAB0AGkAbwBuAAAAAAAgAAAAMAAIAAEARgBpAGwAZQBW
AGUAcgBzAGkAbwBuAAAAAAAwAC4AMAAuADAALgAwAAAAigA1AAEASQBuAHQAZQByAG4AYQBsAE4A
YQBtAGUAAABTAGMAcgBpAHAAdABDAG8AbQBwAG8AbgBlAG4AdABfAGYAYgA5AGYAZQA0AGQAYgBk
AGQAMQA1ADQAZgBlADEAYgAwADYAOQAwADMAMAA1ADQAYQAyADIAZABjADkAMgAuAGQAbABsAAAA
AAAoAAIAAQBMAGUAZwBhAGwAQwBvAHAAeQByAGkAZwBoAHQAAAAgAAAAkgA1AAEATwByAGkAZwBp
AG4AYQBsAEYAaQBsAGUAbgBhAG0AZQAAAFMAYwByAGkAcAB0AEMAbwBtAHAAbwBuAGUAbgB0AF8A
ZgBiADkAZgBlADQAZABiAGQAZAAxADUANABmAGUAMQBiADAANgA5ADAAMwAwADUANABhADIAMgBk
AGMAOQAyAC4AZABsAGwAAAAAADQACAABAFAAcgBvAGQAdQBjAHQAVgBlAHIAcwBpAG8AbgAAADAA
LgAwAC4AMAAuADAAAAA4AAgAAQBBAHMAcwBlAG0AYgBsAHkAIABWAGUAcgBzAGkAbwBuAAAAMAAu
ADAALgAwAC4AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAwAAAAcPgAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=]]></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">ScriptComponent_780521567bcc4f928a643689dcd570f0</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="{EB1EB761-DB8F-4F1C-96A3-1EF8BB8AE919}" /></connections><inputs><input id="15" name="Input" hasSideEffects="true"><externalMetadataColumns isUsed="True"><externalMetadataColumn id="16" name="FirstEntityName" dataType="wstr" length="100" /><externalMetadataColumn id="17" name="FirstEntityId" dataType="guid" /><externalMetadataColumn id="18" name="SecondEntityName" dataType="wstr" length="100" /><externalMetadataColumn id="19" name="SecondEntityId" dataType="guid" /></externalMetadataColumns></input></inputs></component>