<component id="26" name="Salesforce Bulk Result" componentClassID="Microsoft.ManagedComponentHost" description="Executes a custom script." localeId="1033" version="10" 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="27" 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-2014 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.Collections
Imports System.Xml
Imports System.Net
Imports System.IO
Imports System.Threading
Imports System.Globalization

Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports Microsoft.VisualBasic.FileIO
Imports CozyRoc.SqlServer.SSIS
Imports CozyRoc.SqlServer.SSIS.Attributes
Imports CozyRoc.Sforce.Service


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

    Private JobUrl_3P As String = "{0}://{1}/services/async/{2}/job/"
    Private BulkNS As String = "http://www.force.com/2009/06/asyncapi/dataload"


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub Input_ProcessInputRow(ByVal Row As InputBuffer)
        Dim batchId As String = CStr(Row.Buffer(m_batchIdx))

        Try
            If m_batchId <> batchId Then
                ' Load next batch.
                m_batchId = batchId

                If String.IsNullOrEmpty(m_jobId) Then
                    ' Load job identifier.
                    m_jobId = CStr(GetVariable_(Me.JobIdVariable))
                End If

                If Not m_batchRes Is Nothing Then
                    Call m_batchRes.Dispose()
                End If

                m_batchRes = GetBatchResult_(m_service, m_jobId, m_batchId)
            End If

            ' Get batch result.
            Dim record() As String = m_batchRes.ReadFields()
            If record Is Nothing Then
                ' There is no more data.
                Exit Sub
            End If

            With Row
                .ResultId = record(0)
                .Success = Convert.ToBoolean(record(1))
                .Created = Convert.ToBoolean(record(2))
                .Error = record(3)
            End With
        Catch ex As Exception
            Call FireError_(ex.ToString())
        End Try
    End Sub ' Input_ProcessInputRow


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

        m_connection = CType( _
            MyBase.Connections.Connection.AcquireConnection(Nothing), _
            ISforceConnection)
        m_service = CType(m_connection.Connect(), SforceService)

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

        ' Get batch column index.
        Dim inputCol As IDTSInputColumn100 = input.InputColumnCollection(Me.BatchIdColumn)
        m_batchIdx = 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.Connection) Then
                Throw New ApplicationException("Select Salesforce connection.")
            End If

            If String.IsNullOrEmpty(Me.JobIdVariable) Then
                Throw New ApplicationException("Select job id variable.")
            End If

            If String.IsNullOrEmpty(Me.BatchIdColumn) Then
                Throw New ApplicationException("Select batch id column.")
            End If

            ' Setup batch id column.
            Dim input As IDTSInput100 = MyBase.ComponentMetaData.InputCollection(0)
            Call input.InputColumnCollection.RemoveAll()
            Dim virtInput As IDTSVirtualInput100 = input.GetVirtualInput()
            Dim virtColumn As IDTSVirtualInputColumn100 = virtInput.VirtualInputColumnCollection(Me.BatchIdColumn)
            Call virtInput.SetUsageType(virtColumn.LineageID, DTSUsageType.UT_READONLY)

            ' 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("Connection").ConnectionManagerID = Me.Connection

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

        Validate = result
    End Function    'Validate


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Select Salesforce Connection Manager.")> _
    <Connection("ConnectionType")> _
    Public Property Connection() As String
        Get
            Connection = m_sforceConnection
        End Get
        Set(ByVal value As String)
            m_sforceConnection = value
        End Set
    End Property    ' Connection


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Select job id variable.")> _
    <Variable()> _
    Public Property JobIdVariable() As String
        Get
            JobIdVariable = m_jobIdVar
        End Get
        Set(ByVal value As String)
            m_jobIdVar = value
        End Set
    End Property    ' JobIdVariable


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Select batch id column.")> _
    <InputVirtualColumn()> _
    Public Property BatchIdColumn() As String
        Get
            BatchIdColumn = m_batchIdCol
        End Get
        Set(ByVal value As String)
            m_batchIdCol = value
        End Set
    End Property    ' BatchIdColumn
#End Region ' Properties


#Region "Internals"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private ReadOnly Property ConnectionType() As String()
        Get
            ConnectionType = New String() {"SFORCE"}
        End Get
    End Property    ' ConnectionType


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


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

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

        GetVariable_ = result
    End Function    ' GetVariable_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Find the API version in use by stepping the service URL from the back.
    ' The first segment which can be converted to number is the version.
    Private Function GetServiceVersion_(ByVal url As Uri) As Double
        Dim result As Double = 27
        Dim segments As String() = url.Segments
        Dim segsCount As Integer = segments.Length

        For segIndex As Integer = segsCount - 1 To 0 Step -1
            Dim segment As String = segments(segIndex).Trim("/"c)
            If Double.TryParse(segment, NumberStyles.Any, CultureInfo.InvariantCulture, result) Then
                Exit For
            End If
        Next

        GetServiceVersion_ = result
    End Function    ' GetServiceVersion_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function PrepareRequest_( _
        ByVal service As SforceService, _
        ByVal url As String) As HttpWebRequest

        ' Setup base job request url.
        Dim serviceUri As Uri = New Uri(service.Url)
        Dim jobUrl As String = String.Format( _
            JobUrl_3P, _
            serviceUri.Scheme, _
            serviceUri.Host, _
            GetServiceVersion_(serviceUri))

        Dim result As HttpWebRequest = CType(WebRequest.Create(jobUrl + url), HttpWebRequest)
        Call result.Headers.Add("X-SFDC-Session", service.SessionHeaderValue.sessionId)

        PrepareRequest_ = result
    End Function    ' PrepareRequest_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetXmlResult_(ByVal req As HttpWebRequest) As XmlDocument
        Dim result As New XmlDocument

        Try
            Using res As WebResponse = req.GetResponse()
                Call result.Load(res.GetResponseStream())
            End Using
        Catch ex As WebException
            ' The regular exception information is not very useful. Extract error information.
            If ex.Response Is Nothing Then
                ' Error happened before server was able to respond.
                Throw
            End If

            Using errorStream As Stream = ex.Response.GetResponseStream()
                Throw New Exception(New StreamReader(errorStream).ReadToEnd(), ex)
            End Using
        End Try

        GetXmlResult_ = result
    End Function    ' GetXmlResult_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetCsvResult_(ByVal req As HttpWebRequest) As TextFieldParser
        Dim result As TextFieldParser

        Try
            m_readRes = req.GetResponse()
            result = New TextFieldParser(m_readRes.GetResponseStream())
            result.HasFieldsEnclosedInQuotes = True
            Call result.SetDelimiters(",")

            ' Skip first row which is header.
            Call result.ReadFields()
        Catch ex As WebException
            ' The regular exception information is not very useful. Extract error information.
            If ex.Response Is Nothing Then
                ' Error happened before server was able to respond.
                Throw
            End If

            Using errorStream As Stream = ex.Response.GetResponseStream()
                Throw New Exception(New StreamReader(errorStream).ReadToEnd(), ex)
            End Using
        End Try

        GetCsvResult_ = result
    End Function    ' GetCsvResult_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetBatchResult_( _
        ByVal service As SforceService, _
        ByVal jobId As String, _
        ByVal batchId As String) As TextFieldParser

        ' Loop until batch result is ready.
        While True
            Dim doc As XmlDocument = GetXmlResult_(PrepareRequest_(service, jobId + "/batch/" + batchId))
            Dim ns As XmlNamespaceManager = New XmlNamespaceManager(doc.NameTable)
            Call ns.AddNamespace("bl", BulkNS)
            Dim state As String = doc.SelectSingleNode("/bl:batchInfo/bl:state", ns).InnerText
            Select Case state
                Case "Completed"
                    ' Ready.
                    Exit While

                Case "InProgress", "Queued"
                    ' Have to wait.

                Case "Failed", "Not Processed"
                    Throw New Exception(String.Format("'{0}' batch failed or aborted.", batchId))
            End Select

            ' Wait 5 seconds and try again.
            Call Thread.Sleep(5 * 1000)
        End While

        GetBatchResult_ = GetCsvResult_(PrepareRequest_(service, jobId + "/batch/" + batchId + "/result"))
    End Function    ' GetBatchResult_
#End Region ' Internals


#Region "Attributes"
    Private m_sforceConnection As String
    Private m_jobIdVar As String
    Private m_batchIdCol As String

    Private m_connection As ISforceConnection
    Private m_service As SforceService
    Private m_batchIdx As Integer
    Private m_jobId As String
    Private m_batchId As String
    Private m_readRes As WebResponse
    Private m_batchRes As TextFieldParser
#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 WriteOnly Property [ResultId]() As String
        Set
            Me(0) = Value
        End Set
    End Property
    Public WriteOnly Property [ResultId_IsNull] As Boolean
        Set
            If (value)
                SetNull(0)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [Success]() As Boolean
        Set
            Me(1) = Value
        End Set
    End Property
    Public WriteOnly Property [Success_IsNull] As Boolean
        Set
            If (value)
                SetNull(1)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [Created]() As Boolean
        Set
            Me(2) = Value
        End Set
    End Property
    Public WriteOnly Property [Created_IsNull] As Boolean
        Set
            If (value)
                SetNull(2)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [Error]() As String
        Set
            Me(3) = Value
        End Set
    End Property
    Public WriteOnly Property [Error_IsNull] As Boolean
        Set
            If (value)
                SetNull(3)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {"ResultId", "Success", "Created", "Error"}
        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_e6007d71caeb4ae18f1e3ca85dc10c00.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>{A47DD1EF-D780-450A-9F4F-71911350A163}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>My Project</AppDesignerFolder>
    <RootNamespace>ScriptComponent_e6007d71caeb4ae18f1e3ca85dc10c00</RootNamespace>
    <AssemblyName>ScriptComponent_e6007d71caeb4ae18f1e3ca85dc10c00</AssemblyName>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>.\bin\Debug\</OutputPath>
    <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
    <DefineDebug>true</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
    <DebugSymbols>false</DebugSymbols>
    <Optimize>true</Optimize>
    <OutputPath>.\bin\Release\</OutputPath>
    <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
    <DefineDebug>false</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <!-- This sections specifies references for the project. -->
  <ItemGroup>
    <Reference Include="CozyRoc.SSISPlus.2016, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>C:\Program Files (x86)\Microsoft SQL Server\130\SDK\Assemblies\CozyRoc.SSISPlus.2016.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=13.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSRuntimeWrap, Version=13.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSPipelineWrap, Version=13.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.PipelineHost, Version=13.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="Microsoft.SqlServer.ManagedDTS" />
    <Reference Include="System.Xml" />
    <Reference Include="CozyRoc.Sforce" />
    <Reference Include="System.Web.Services" />
  </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="" DebugInfoExeName="devenv.exe" DebugInfoCommandLine="/vstaHostDebugUri:&quot;vstadebug1d950abe-8d64-4e99-b52a-ec69e017384d/990a8fef-0e01-4f63-ab93-9bfc2d690328&quot;" />
        <Host Name="SSIS_SC110" />
        <ProjectClient>
          <HostIdentifier>SSIS_SC130</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 Connection() As IDTSConnectionManager100
        Get
            Return ParentComponent.ComponentMetaData.RuntimeConnectionCollection("Connection").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_e6007d71caeb4ae18f1e3ca85dc10c00</msb:CodeName>
		<msb:NoContent>Reference;Import;Folder</msb:NoContent>
		<msb:ProjectId>{9881464E-5AF8-46FC-B3EA-6B470CE73FC6}</msb:ProjectId>
		<msb:DisplayName>ScriptComponent_e6007d71caeb4ae18f1e3ca85dc10c00</msb:DisplayName>
	</msb:PropertyGroup>
	<msb:ItemGroup>
		<msb:Folder Include="My Project\"/>
		<msb:File Include="ScriptMain.vb"/>
		<msb:File Include="ComponentWrapper.vb"/>
		<msb:File Include="BufferWrapper.vb"/>
		<msb:Project Include="ScriptComponent_e6007d71caeb4ae18f1e3ca85dc10c00.vbproj"/>
	</msb:ItemGroup>
</c:Project>]]></arrayElement></arrayElements></property><property id="28" 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_e6007d71caeb4ae18f1e3ca85dc10c00.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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
JQCNKAAAAAATCG0NCQMlAJkoAAAAABMIAgoOAyUApSgAAAAAEwg+DRMDJQCxKAAAAAATCCMOGQMl
AL0oAAAAABEYyw1oACUA5ygAAAAAxgI3Dw8CJQD1KAAAAADGAi4EpgAmAP0oAAAAAIMAUwUeAyYA
CSkAAAAAxgJyCGQAJgAUKQAAAAARAJ0CJAMmADQpAAAAAAEAiQIsAycAPSkAAAAABhjFDQYAKABI
KQAAAAADCAYE9AEoAHwpAAAAAAYYxQ0GACgAAAABAE0RAAABAF8EAAABADMIAAABADMIAAABADMI
AAABAGoEAAABAOgEAAABAHgJAAABAO8DAAACAHgJAAABAMcLAAABAMcLAAABAO8DAAACAFoDAAAD
AGIDAAABAIgQAAACACcCAAADAAARAAAEAJIMAAAFAHALAAABAC0IAAABAC0IAAABAC0IAAABAC0I
AAABAC0IAAABAC0IAAABAC0IAAABAC0IAAABADACAAACAPAEAAADAJIMAAAEAHALAAABAJIMAAAB
AE0RAAABAIgQAAABAIgQAAABAGALAAABABYEAAABABYECQDFDQEAEQDFDQYAGQDFDQoAKQDFDRAA
MQDFDRUAOQDFDRAAQQDFDQYASQDFDRsA0QDFDRAA2QDFDRAA4QDFDRAA6QDFDQYA8QDFDQYAKQHF
DSAAOQHFDSYAUQHFDQYAWQHFDQYAYQHFDQYAcQHFDS0AgQHFDRsAkQHFDRAA+QBmDD0ACQGOCUMA
mQFyCEgAoQFkCE0AqQGQEVQAaQCrBQYAaQDlDVkAsQGsCVQAuQGrDV4AcQByCGQAuQGZDWgAAQHi
BwYAIQH7CnMAUQAVEHgAAQEXA3wAwQGkCoIAyQGOCYgAeQA1Co4A2QGOCZQAGQGAEJoA4QHDDKAA
eQBmDKYAgQDrAaYA6QH5AaoAAQHtBwYAUQClBQYA8QHFDRAA2QHGCAYAeQDwELkA+QFPCr8AAQKO
CcUAiQDrAaYA+QEzBcsAwQFwCtMAEQKOCdkAGQIPAhAAcQBTBGQAqQGYEe0AwQGPDfAAAQFHDQIB
IQKFAwgBmQCOCRABKQL5B3gAMQIkCBcBmQB/CAYAoQDED1kAqQGnCSQBQQJbBSoBSQKzBTABYQJw
CWQAoQDFDRAAoQD6BGQAoQDGEGQAqQH9D0QBqQH2D0wBaQLFBVIBqQCFD1kBYQINCF8BeQJqA2QA
cQKgAyAAsQDFDQYAqQCZBXIBYQB8CXcBsQCbA3wBgQKrBQYAuQCABXIBiQLFDXwBiQKwA2QAcQDF
DYIBaQDFDXwBaQD3DhsAaQCgDxUAqQH2D54BsQByBKUByQDFDasByQC6AyAAmQI6BLIBmQIbEWQA
qQH9D7sBcQDFDRAAoQLBC8EBqQH2D8YB+QDFDc4B+QCXCd0B+QBQCQEAqQLFDRAAuQJJEeMBuQIo
EOMBGQHFDQYAeQDkAaYAkQDFDQYAGQKtDOcBQQHFDQYASQHFDQYADAAGBPQBFAAGBPQBHAAGBPQB
JAAGBPQBDADFDQYAFADFDQYAHADFDQYAJADFDQYAkQA3Dw8CkQAuBKYAeQHWBBQCkQByCGQAyQL3
AyUCNAApETwCPAD5B/QBPAADCFUCPADFDQYAKQBLAJkEKQBTAKcEKQBbANIELgALAGEDLgATAGoD
LgAbAIkDLgAjAJIDQwArAO4DQwAzABAEQwA7AOADQwBDANoDSQBLAJkESQBTAOYESQBjAOADYwBD
ANoDaQBLAJkEaQBTAAMFaQBrAOADgwBDANoD4wBzAB4E4wB7AOUDAwFzAB4EAwF7AOUDIwGLAOAD
IwGTAOADIwFzAB4EQwF7AOUDQwGbADcEYwF7AOUDYwGjANoDCQKrACAFKQKrADEFSQKrAEUFaQKr
AFIFoARDANoD4ARDANoDIAWDAOADIAV7AOUDQAWDAOADYAWDAOADgAWDAOADoAWDAOAD4AV7AOUD
4AWDAOADAAZ7AOUDAAaDAOADIAZ7AOUDIAaDAOADQAZ7AOUDQAaDAOADYAaDAOADgAaDAOADoAaD
AOADoAZ7AOUDwAaDAOAD4AaDAOAD4AZ7AOUDNQBsALAA4ADkAOkA+wAcAT0BZQGJAZQBHQIwAgIA
AQADAAUABQAPAAkAEAALABQAAAACCzQDAACjBDQDAAD0CTQDAABEBTgDAABCDzgDAAB8AzQDAAAJ
CT0DAAC8Dz0DAABBCT0DAACoAz0DAAAdCT0DAAC1DTQDAAAwCT0DAABZDzgDAAACC0EDAAB8DUcD
AAAUCkwDAABCDVEDAAA1DlcDAAAKBFwDAgAGAAMAAQAHAAMAAgAIAAUAAQAJAAUAAgAKAAcAAQAL
AAcAAgAMAAkAAgAVAAsAAQAWAA0AAQAXAA8AAQAYABEAAQAZABMAAQAaABUAAQAbABcAAQAcABkA
AQAdABsAAgAeAB0AAgAmAB8AAgAqACEAAgArACMAAgAsACUAAgAtACcAAgA2ACkA7QH5AQACCAIi
AjUCRQJNAgSAAAAAAAAAAAAAAAAAAAAAAGQBAAAEAAAAAAAAAAAAAABbAjkDAAAAAAEAAAAAAAAA
AAAAAGQCxQEAAAAADQAAAAAAAAAAAAAAbQKSEAAAAAABAAAAAAAAAAAAAABkAh8EAAAAAAQAAAAA
AAAAAAAAAFsCoAkAAAAACgAAAAAAAAAAAAAAdgJCAwAAAAANAAAAAAAAAAAAAABtAp0LAAAAAA0A
AAAAAAAAAAAAAG0CegsAAAAABAAAAAAAAAAAAAAAWwJYCQAAAAANAAAAAAAAAAAAAABtAs8QAAAA
AAoACQALAAkAAAAQABYAhwIAABAAZwCHAgAAAABpAIcCAQErAgEBUAIAAABJRFRTQ29tcG9uZW50
TWV0YURhdGExMDAASURUU1ZhcmlhYmxlMTAwAElEVFNJbnB1dENvbHVtbjEwMABJRFRTVmlydHVh
bElucHV0Q29sdW1uMTAwAElEVFNJbnB1dENvbHVtbkNvbGxlY3Rpb24xMDAASURUU1ZpcnR1YWxJ
bnB1dENvbHVtbkNvbGxlY3Rpb24xMDAASURUU1J1bnRpbWVDb25uZWN0aW9uQ29sbGVjdGlvbjEw
MABJRFRTSW5wdXRDb2xsZWN0aW9uMTAwAElEVFNSdW50aW1lQ29ubmVjdGlvbjEwMABJRFRTQ29u
bmVjdGlvbk1hbmFnZXIxMDAASURUU0J1ZmZlck1hbmFnZXIxMDAASURUU1ZhcmlhYmxlRGlzcGVu
c2VyMTAwAElEVFNWYXJpYWJsZXMxMDAASURUU0lucHV0MTAwAElEVFNWaXJ0dWFsSW5wdXQxMDAA
U2NyaXB0Q29tcG9uZW50X2U2MDA3ZDcxY2FlYjRhZTE4ZjFlM2NhODVkYzEwYzAwAENvbnRleHRW
YWx1ZWAxAFRocmVhZFNhZmVPYmplY3RQcm92aWRlcmAxAEludDMyAENvenlSb2MuU1NJU1BsdXMu
MjAxNgA8TW9kdWxlPgBnZXRfSUQAZ2V0X0xpbmVhZ2VJRABGaW5kQ29sdW1uQnlMaW5lYWdlSUQA
c2V0X0Nvbm5lY3Rpb25NYW5hZ2VySUQAT2JqZWN0SUQASW5wdXRJRABTeXN0ZW0uSU8ATWljcm9z
b2Z0LlZpc3VhbEJhc2ljLkZpbGVJTwBKb2JVcmxfM1AAQ296eVJvYy5TcWxTZXJ2ZXIuU1NJUwBC
dWxrTlMAVABEaXNwb3NlX19JbnN0YW5jZV9fAENyZWF0ZV9fSW5zdGFuY2VfXwBHZXRWYXJpYWJs
ZV8AR2V0U2VydmljZVZlcnNpb25fAEZpcmVFcnJvcl8AR2V0QmF0Y2hSZXN1bHRfAEdldFhtbFJl
c3VsdF8AR2V0Q3N2UmVzdWx0XwBQcmVwYXJlUmVxdWVzdF8AZ2V0X0NvbXBvbmVudE1ldGFEYXRh
AFByb2plY3REYXRhAG1zY29ybGliAE1pY3Jvc29mdC5WaXN1YWxCYXNpYwBtX2pvYklkAG1fYmF0
Y2hJZABnZXRfc2Vzc2lvbklkAHNldF9SZXN1bHRJZABMb2NrT25lRm9yUmVhZABUaHJlYWQATG9h
ZABBZGQAc2V0X0NyZWF0ZWQAUmVhZFRvRW5kAEFkZE5hbWVzcGFjZQBDb3p5Um9jLlNmb3JjZS5T
ZXJ2aWNlAF9TZm9yY2VTZXJ2aWNlAG1fc2VydmljZQBDcmVhdGVJbnN0YW5jZQBnZXRfR2V0SW5z
dGFuY2UAaW5zdGFuY2UAQ296eVJvYy5TZm9yY2UAR2V0SGFzaENvZGUAU2VsZWN0U2luZ2xlTm9k
ZQBYbWxOb2RlAGdldF9NZXNzYWdlAGVyck1lc3NhZ2UAbWVzc2FnZQBnZXRfTmFtZVRhYmxlAFht
bE5hbWVUYWJsZQBnZXRfSm9iSWRWYXJpYWJsZQBzZXRfSm9iSWRWYXJpYWJsZQBJRGlzcG9zYWJs
ZQBEb3VibGUAUnVudGltZVR5cGVIYW5kbGUAR2V0VHlwZUZyb21IYW5kbGUAdmFyTmFtZQBJbnB1
dE5hbWUAZ2V0X1NjaGVtZQBNaWNyb3NvZnQuU3FsU2VydmVyLkR0cy5QaXBlbGluZQBEVFNVc2Fn
ZVR5cGUAU2V0VXNhZ2VUeXBlAGdldF9Db25uZWN0aW9uVHlwZQBHZXRUeXBlAGdldF9JbnZhcmlh
bnRDdWx0dXJlAEFwcGxpY2F0aW9uQmFzZQBnZXRfUmVzcG9uc2UAV2ViUmVzcG9uc2UAR2V0UmVz
cG9uc2UAQ2xvc2UARGlzcG9zZQBUcnlQYXJzZQBWYWxpZGF0ZQBDcmVhdGUARWRpdG9yQnJvd3Nh
YmxlU3RhdGUASGVscEtleXdvcmRBdHRyaWJ1dGUAR2VuZXJhdGVkQ29kZUF0dHJpYnV0ZQBEZWJ1
Z2dhYmxlQXR0cmlidXRlAFZhcmlhYmxlQXR0cmlidXRlAEVkaXRvckJyb3dzYWJsZUF0dHJpYnV0
ZQBDb21WaXNpYmxlQXR0cmlidXRlAFN0YW5kYXJkTW9kdWxlQXR0cmlidXRlAEhpZGVNb2R1bGVO
YW1lQXR0cmlidXRlAFRhcmdldEZyYW1ld29ya0F0dHJpYnV0ZQBEZWJ1Z2dlckhpZGRlbkF0dHJp
YnV0ZQBJbnB1dFZpcnR1YWxDb2x1bW5BdHRyaWJ1dGUATXlHcm91cENvbGxlY3Rpb25BdHRyaWJ1
dGUAQ29ubmVjdGlvbkF0dHJpYnV0ZQBEZXNjcmlwdGlvbkF0dHJpYnV0ZQBWYWxpZGF0ZVByb3Bl
cnRpZXNBdHRyaWJ1dGUAU29ydFByb3BlcnRpZXNBdHRyaWJ1dGUAQ29tcGlsYXRpb25SZWxheGF0
aW9uc0F0dHJpYnV0ZQBDTFNDb21wbGlhbnRBdHRyaWJ1dGUAU1NJU1NjcmlwdENvbXBvbmVudEVu
dHJ5UG9pbnRBdHRyaWJ1dGUAQ2F0ZWdvcnlBdHRyaWJ1dGUAUnVudGltZUNvbXBhdGliaWxpdHlB
dHRyaWJ1dGUAUHJlRXhlY3V0ZQBQb3N0RXhlY3V0ZQBnZXRfVmFsdWUAc2V0X1ZhbHVlAGdldF9T
ZXNzaW9uSGVhZGVyVmFsdWUAR2V0T2JqZWN0VmFsdWUAdmFsdWUAU3lzdGVtLlRocmVhZGluZwBT
eXN0ZW0uUnVudGltZS5WZXJzaW9uaW5nAENvbXBhcmVTdHJpbmcAVG9TdHJpbmcAVXJpAFVubG9j
awBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuTXlTZXJ2aWNlcy5JbnRlcm5hbABTeXN0ZW0uQ29tcG9u
ZW50TW9kZWwAUmVtb3ZlQWxsAFNjcmlwdENvbXBvbmVudF9lNjAwN2Q3MWNhZWI0YWUxOGYxZTNj
YTg1ZGMxMGMwMC5kbGwAc2V0X1Jlc3VsdElkX0lzTnVsbABzZXRfQ3JlYXRlZF9Jc051bGwAc2V0
X0Vycm9yX0lzTnVsbABzZXRfU3VjY2Vzc19Jc051bGwAU2V0TnVsbABTeXN0ZW0uWG1sAG1fYmF0
Y2hJZENvbABnZXRfVXJsAHVybABHZXRSZXNwb25zZVN0cmVhbQBnZXRfSXRlbQBzZXRfSXRlbQBT
eXN0ZW0AVHJpbQBUb0Jvb2xlYW4AU3lzdGVtLkNvbXBvbmVudE1vZGVsLkRlc2lnbgBTY3JpcHRN
YWluAGdldF9CYXRjaElkQ29sdW1uAHNldF9CYXRjaElkQ29sdW1uAGdldF9BcHBsaWNhdGlvbgBN
eUFwcGxpY2F0aW9uAFN5c3RlbS5HbG9iYWxpemF0aW9uAGdldF9JbnB1dENvbHVtbkNvbGxlY3Rp
b24AZ2V0X1ZpcnR1YWxJbnB1dENvbHVtbkNvbGxlY3Rpb24AZ2V0X1J1bnRpbWVDb25uZWN0aW9u
Q29sbGVjdGlvbgBXZWJIZWFkZXJDb2xsZWN0aW9uAGdldF9JbnB1dENvbGxlY3Rpb24AZ2V0X0Nv
bm5lY3Rpb24Ac2V0X0Nvbm5lY3Rpb24ASVNmb3JjZUNvbm5lY3Rpb24AbV9zZm9yY2VDb25uZWN0
aW9uAEFjcXVpcmVDb25uZWN0aW9uAG1fY29ubmVjdGlvbgBXZWJFeGNlcHRpb24AQXBwbGljYXRp
b25FeGNlcHRpb24ASW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbgBDdWx0dXJlSW5mbwBPdXRwdXRO
YW1lTWFwAE91dHB1dE1hcABNaWNyb3NvZnQuU3FsU2VydmVyLkRUU1J1bnRpbWVXcmFwAE1pY3Jv
c29mdC5TcWxTZXJ2ZXIuRFRTUGlwZWxpbmVXcmFwAFNsZWVwAHJlcQBtX2pvYklkVmFyAENoYXIA
U2Vzc2lvbkhlYWRlcgBTdHJlYW1SZWFkZXIASUZvcm1hdFByb3ZpZGVyAG1fQXBwT2JqZWN0UHJv
dmlkZXIAbV9Vc2VyT2JqZWN0UHJvdmlkZXIAbV9Db21wdXRlck9iamVjdFByb3ZpZGVyAG1fTXlX
ZWJTZXJ2aWNlc09iamVjdFByb3ZpZGVyAGdldF9CdWZmZXIAUGlwZWxpbmVCdWZmZXIAU2NyaXB0
QnVmZmVyAElucHV0QnVmZmVyAFhtbE5hbWVzcGFjZU1hbmFnZXIAZ2V0X0Nvbm5lY3Rpb25NYW5h
Z2VyAGdldF9CdWZmZXJNYW5hZ2VyAFN5c3RlbS5Db2RlRG9tLkNvbXBpbGVyAE1pY3Jvc29mdC5T
cWxTZXJ2ZXIuRHRzLlJ1bnRpbWUuV3JhcHBlcgBNaWNyb3NvZnQuU3FsU2VydmVyLkR0cy5QaXBl
bGluZS5XcmFwcGVyAGdldF9Vc2VyAGdldF9WYXJpYWJsZURpc3BlbnNlcgBUZXh0RmllbGRQYXJz
ZXIAZ2V0X0NvbXB1dGVyAE15Q29tcHV0ZXIAc2V0X0Vycm9yAEZpcmVFcnJvcgBDbGVhclByb2pl
Y3RFcnJvcgBTZXRQcm9qZWN0RXJyb3IAQWN0aXZhdG9yAC5jdG9yAC5jY3RvcgBTeXN0ZW0uRGlh
Z25vc3RpY3MAUmVhZEZpZWxkcwBtX3JlYWRSZXMAbV9iYXRjaFJlcwBNaWNyb3NvZnQuVmlzdWFs
QmFzaWMuRGV2aWNlcwBnZXRfV2ViU2VydmljZXMATXlXZWJTZXJ2aWNlcwBNaWNyb3NvZnQuVmlz
dWFsQmFzaWMuQXBwbGljYXRpb25TZXJ2aWNlcwBTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2Vydmlj
ZXMATWljcm9zb2Z0LlZpc3VhbEJhc2ljLkNvbXBpbGVyU2VydmljZXMAU3lzdGVtLlJ1bnRpbWUu
Q29tcGlsZXJTZXJ2aWNlcwBEZWJ1Z2dpbmdNb2RlcwBWYXJpYWJsZXMATnVtYmVyU3R5bGVzAHNl
dF9IYXNGaWVsZHNFbmNsb3NlZEluUXVvdGVzAENvenlSb2MuU3FsU2VydmVyLlNTSVMuQXR0cmli
dXRlcwBFcXVhbHMAZ2V0X1N0YXRpY0lucHV0Q29sdW1ucwBnZXRfU3RhdGljT3V0cHV0Q29sdW1u
cwBDb252ZXJzaW9ucwBDb25uZWN0aW9ucwBnZXRfSGVhZGVycwBSdW50aW1lSGVscGVycwBTZXRE
ZWxpbWl0ZXJzAE9wZXJhdG9ycwBzZXRfU3VjY2VzcwBnZXRfU2VnbWVudHMAU2NyaXB0QnVmZmVy
UGx1cwBTY3JpcHRDb21wb25lbnRQbHVzAENvbmNhdABGb3JtYXQAT2JqZWN0AE15UHJvamVjdABD
b25uZWN0AFN5c3RlbS5OZXQARW5kT2ZSb3dzZXQAWG1sRG9jdW1lbnQAUGlwZWxpbmVDb21wb25l
bnQAVXNlckNvbXBvbmVudABQYXJlbnRDb21wb25lbnQAU2NyaXB0Q29tcG9uZW50AGdldF9Ib3N0
Q29tcG9uZW50AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuVHhTY3JpcHQAQ29udmVydABIdHRwV2ViUmVx
dWVzdABnZXRfSG9zdABNaWNyb3NvZnQuU3FsU2VydmVyLlBpcGVsaW5lSG9zdABHZXRWaXJ0dWFs
SW5wdXQASXNJbnB1dABJbnB1dF9Qcm9jZXNzSW5wdXQAZ2V0X0lubmVyVGV4dABtX0NvbnRleHQA
SW5wdXRfUHJvY2Vzc0lucHV0Um93AE5leHRSb3cAbV9iYXRjaElkeABTY3JpcHRDb21wb25lbnRf
ZTYwMDdkNzFjYWViNGFlMThmMWUzY2E4NWRjMTBjMDAuTXkASXNOdWxsT3JFbXB0eQAAAABDewAw
AH0AOgAvAC8AewAxAH0ALwBzAGUAcgB2AGkAYwBlAHMALwBhAHMAeQBuAGMALwB7ADIAfQAvAGoA
bwBiAC8AAF1oAHQAdABwADoALwAvAHcAdwB3AC4AZgBvAHIAYwBlAC4AYwBvAG0ALwAyADAAMAA5
AC8AMAA2AC8AYQBzAHkAbgBjAGEAcABpAC8AZABhAHQAYQBsAG8AYQBkAAA7UwBlAGwAZQBjAHQA
IABTAGEAbABlAHMAZgBvAHIAYwBlACAAYwBvAG4AbgBlAGMAdABpAG8AbgAuAAAvUwBlAGwAZQBj
AHQAIABqAG8AYgAgAGkAZAAgAHYAYQByAGkAYQBiAGwAZQAuAAAvUwBlAGwAZQBjAHQAIABiAGEA
dABjAGgAIABpAGQAIABjAG8AbAB1AG0AbgAuAAAVQwBvAG4AbgBlAGMAdABpAG8AbgAADVMARgBP
AFIAQwBFAAAtUwBhAGwAZQBzAGYAbwByAGMAZQAgAEIAdQBsAGsAIABSAGUAcwB1AGwAdAAAHVgA
LQBTAEYARABDAC0AUwBlAHMAcwBpAG8AbgABAywAAA8vAGIAYQB0AGMAaAAvAAAFYgBsAAAtLwBi
AGwAOgBiAGEAdABjAGgASQBuAGYAbwAvAGIAbAA6AHMAdABhAHQAZQAAE0MAbwBtAHAAbABlAHQA
ZQBkAAAVSQBuAFAAcgBvAGcAcgBlAHMAcwAADVEAdQBlAHUAZQBkAAANRgBhAGkAbABlAGQAABtO
AG8AdAAgAFAAcgBvAGMAZQBzAHMAZQBkAAA9JwB7ADAAfQAnACAAYgBhAHQAYwBoACAAZgBhAGkA
bABlAGQAIABvAHIAIABhAGIAbwByAHQAZQBkAC4AAQ8vAHIAZQBzAHUAbAB0AACAm0kAcwBOAHUA
bABsACAAcAByAG8AcABlAHIAdAB5ACAAYwBhAG4AbgBvAHQAIABiAGUAIABzAGUAdAAgAHQAbwAg
AEYAYQBsAHMAZQAuACAAQQBzAHMAaQBnAG4AIABhACAAdgBhAGwAdQBlACAAdABvACAAdABoAGUA
IABjAG8AbAB1AG0AbgAgAGkAbgBzAHQAZQBhAGQALgAAEVIAZQBzAHUAbAB0AEkAZAAAD1MAdQBj
AGMAZQBzAHMAAA9DAHIAZQBhAHQAZQBkAAALRQByAHIAbwByAAALSQBuAHAAdQB0AAAAAGVFCkuQ
SupCiUf+/K4gQKUABCABAQgDIAABBSABARERBCABAQ4FIAEBHQ4EIAEBAgUgAgEODgYgAQERgJkH
IAQBDg4ODgcHAw4dDhI5BSAAEoCFBCABHAgEAAEOHAYAAwgODgIEAAECDgQgAB0OBQABARI5AyAA
DgMAAAEGBwISPRJBBCABHBwDIAAcBSAAEoDhBSAAEoDlBSABEj0cBSAAEoDtBSABEkEcBSAAEoDx
BSAAEoD1AyAACAUgAggICAgHBAICEkUSOQUgABKA/QUgABKBAQUgARJFHAcgAggIEYEFBSAAEoEJ
BiABEoENHAMHAQ4EBwEdDgMHAQICBg4KIAYBCA4ODggQAgYHAxwcEk0FIAASgREHIAIBDhASTQYg
ARKBFRwEAAEcHAcHBA0NHQ4IBSABDh0DBQAAEoEhDAAEAg4RgSkSgS0QDQYHAhJVElEHAAQODhwc
HAUAAg4ODgYAARKBNQ4FIAASgTkFIAASgT0MBwUSWRJZEjESXRJhBCAAEjEEIAASYQUgAQESYQYg
AgEOEjkKBwQSNRI1El0SYQkHBBI1ElkSZQ4GAAMODg4OBSAAEoFJBiABARKBSQggAhKBTQ4SZQUA
Ag4OHAQAAQEIBwAEDg4ODg4OIAUBEoCBCAISgIUSgIkFIAIBCBwDIAACBSAAEoCRBhUSLAESIAQg
ABMABhUSLAESHAcVEiwBEoC1BhUSLAESKAQgAQIcCAABEoC9EYFhBAcBHgACHgAFEAEAHgAECgEe
AAQHARMABhUSLAETAAgGFRKAxQETAAcVEoDFARMAAhMABAoBEwAFIAEBEwAIt3pcVhk04IkIFs9J
C7gMNOoIiYRdzYCAzJEIsD9ffxHVCjoDBhIpAwYSLQIGCAMGEjEDBhI1AwYSFAMGEhgEBhKAgQcG
FRIsARIgBwYVEiwBEhwIBhUSLAESgLUHBhUSLAESKAUgAQESDAUgAQIQDgQgARwOBSABDRJRByAC
ElUSLQ4GIAESWRJVBiABEjUSVQggAxI1Ei0ODgsgBAEIDhKAhRKAiQYgAQESgIEEAAASIAQAABIc
BQAAEoC1BAAAEigFIAASgL0HEAEBHgAeAAcwAQEBEB4AAygADgQoAB0OAygAAgUoABKAkQQIABIg
BAgAEhwFCAASgLUECAASKAQoABMACAEACAAAAAAAHgEAAQBUAhZXcmFwTm9uRXhjZXB0aW9uVGhy
b3dzAQgBAAIAAAAAAEcBABouTkVURnJhbWV3b3JrLFZlcnNpb249djQuMAEAVA4URnJhbWV3b3Jr
RGlzcGxheU5hbWUQLk5FVCBGcmFtZXdvcmsgNAUBAAAAAAQBAAAACAEAAQAAAAAAIQEAAgAAAApD
b25uZWN0aW9uDUpvYklkVmFyaWFibGUAAA0BAAhWYWxpZGF0ZQAAGAEACk15VGVtcGxhdGUIMTEu
MC4wLjAAAGEBADRTeXN0ZW0uV2ViLlNlcnZpY2VzLlByb3RvY29scy5Tb2FwSHR0cENsaWVudFBy
b3RvY29sEkNyZWF0ZV9fSW5zdGFuY2VfXxNEaXNwb3NlX19JbnN0YW5jZV9fAAAADQEACFNldHRp
bmdzAAAqAQAlU2VsZWN0IFNhbGVzZm9yY2UgQ29ubmVjdGlvbiBNYW5hZ2VyLgAAEwEADkNvbm5l
Y3Rpb25UeXBlAAAcAQAXU2VsZWN0IGpvYiBpZCB2YXJpYWJsZS4AABwBABdTZWxlY3QgYmF0Y2gg
aWQgY29sdW1uLgAAEAEAC015LkNvbXB1dGVyAAATAQAOTXkuQXBwbGljYXRpb24AAAwBAAdNeS5V
c2VyAAATAQAOTXkuV2ViU2VydmljZXMAAAAACFMAAAAAAAAAAAAAIlMAAAAgAAAAAAAAAAAAAAAA
AAAAAAAAAAAAABRTAAAAAAAAAAAAAAAAX0NvckRsbE1haW4AbXNjb3JlZS5kbGwAAAAAAP8lACAA
EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAAAAYAACAAAAA
AAAAAAAAAAAAAAABAAEAAAAwAACAAAAAAAAAAAAAAAAAAAABAAAAAABIAAAAWGAAAOwCAAAAAAAA
AAAAAOwCNAAAAFYAUwBfAFYARQBSAFMASQBPAE4AXwBJAE4ARgBPAAAAAAC9BO/+AAABAAAAAAAA
AAAAAAAAAAAAAAA/AAAAAAAAAAQAAAACAAAAAAAAAAAAAAAAAAAARAAAAAEAVgBhAHIARgBpAGwA
ZQBJAG4AZgBvAAAAAAAkAAQAAABUAHIAYQBuAHMAbABhAHQAaQBvAG4AAAAAAAAAsARMAgAAAQBT
AHQAcgBpAG4AZwBGAGkAbABlAEkAbgBmAG8AAAAoAgAAAQAwADAAMAAwADAANABiADAAAAAsAAIA
AQBGAGkAbABlAEQAZQBzAGMAcgBpAHAAdABpAG8AbgAAAAAAIAAAADAACAABAEYAaQBsAGUAVgBl
AHIAcwBpAG8AbgAAAAAAMAAuADAALgAwAC4AMAAAAIoANQABAEkAbgB0AGUAcgBuAGEAbABOAGEA
bQBlAAAAUwBjAHIAaQBwAHQAQwBvAG0AcABvAG4AZQBuAHQAXwBlADYAMAAwADcAZAA3ADEAYwBh
AGUAYgA0AGEAZQAxADgAZgAxAGUAMwBjAGEAOAA1AGQAYwAxADAAYwAwADAALgBkAGwAbAAAAAAA
KAACAAEATABlAGcAYQBsAEMAbwBwAHkAcgBpAGcAaAB0AAAAIAAAAJIANQABAE8AcgBpAGcAaQBu
AGEAbABGAGkAbABlAG4AYQBtAGUAAABTAGMAcgBpAHAAdABDAG8AbQBwAG8AbgBlAG4AdABfAGUA
NgAwADAANwBkADcAMQBjAGEAZQBiADQAYQBlADEAOABmADEAZQAzAGMAYQA4ADUAZABjADEAMABj
ADAAMAAuAGQAbABsAAAAAAA0AAgAAQBQAHIAbwBkAHUAYwB0AFYAZQByAHMAaQBvAG4AAAAwAC4A
MAAuADAALgAwAAAAOAAIAAEAQQBzAHMAZQBtAGIAbAB5ACAAVgBlAHIAcwBpAG8AbgAAADAALgAw
AC4AMAAuADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAMAAAANDMAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA]]></arrayElement></arrayElements></property><property id="33" name="UserComponentTypeName" dataType="System.String">CozyRoc.ScriptComponentHostPlus</property><property id="35" 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_e6007d71caeb4ae18f1e3ca85dc10c00</property><property id="36" 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="39" name="Connection" connectionManagerID="{162DFF70-22F8-4C32-B62C-59E3200C6903}" /></connections><inputs><input id="40" name="Input" hasSideEffects="true"><externalMetadataColumns /></input></inputs><outputs><output id="42" name="Output" synchronousInputId="40"><outputColumns><outputColumn id="43" name="ResultId" lineageId="43" length="50" dataType="wstr" /><outputColumn id="44" name="Success" lineageId="44" dataType="bool" /><outputColumn id="45" name="Created" lineageId="45" dataType="bool" /><outputColumn id="46" name="Error" lineageId="46" length="500" dataType="wstr" /></outputColumns><externalMetadataColumns /></output></outputs></component>