<component id="2" name="Checksum" 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="18"><arrayElement dataType="System.String"><![CDATA[ScriptComponent_34de6a2852f74048adcd913b9e905a25.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>{0307EFC9-D066-4C8A-9909-2BE8A061046E}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>My Project</AppDesignerFolder>
    <RootNamespace>ScriptComponent_34de6a2852f74048adcd913b9e905a25</RootNamespace>
    <AssemblyName>ScriptComponent_34de6a2852f74048adcd913b9e905a25</AssemblyName>
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <OptionCompare>Binary</OptionCompare>
    <OptionExplicit>On</OptionExplicit>
    <OptionStrict>On</OptionStrict>
    <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">
      <Private>False</Private>
    </Reference>
    <Reference Include="System.Data">
      <Private>False</Private>
    </Reference>
    <Reference Include="System.Drawing">
      <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_SC140</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
  <ItemGroup>
    <Compile Include="ScriptMain.vb" />
    <Compile Include="CRC32.vb" />
    <Compile Include="BufferWrapper.vb" />
    <Compile Include="ComponentWrapper.vb" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="My Project\" />
  </ItemGroup>
</Project>]]></arrayElement><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-2009 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.Drawing.Design
Imports System.Windows.Forms
Imports System.Windows.Forms.Design
Imports System.Text

Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS.Attributes


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
<ValidateProperties("Validate")> _
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute> _
<CLSCompliant(False)> _
Public Class ScriptMain
    Inherits UserComponent


    Private Const ColumnSeparator As String = "," + vbCr


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub Input_ProcessInputRow(ByVal Row As InputBuffer)
        m_sb.Length = 0

        Dim colsCount As Integer = m_inputIndexes.Length
        For colIndex As Integer = 0 To colsCount - 1
            Dim bufIndex As Integer = m_inputIndexes(colIndex)

            If Row.Buffer.IsNull(bufIndex) Then
                Call m_sb.Append("\0")
            Else
                Call m_sb.Append(Row.Buffer(bufIndex).ToString())
            End If

            m_sb.Append("\n")
        Next

        ' Setup hash.
        m_crc32.Initialize()
        Row.Checksum = BitConverter.ToInt32(m_crc32.ComputeHash(Encoding.Unicode.GetBytes(m_sb.ToString())), 0)
    End Sub ' Input_ProcessInputRow


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

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

        ' Initialize.
        m_sb = New StringBuilder()
        m_crc32 = New CRC32()

        ' Setup dynamic input columns indexes.
        Dim colsCount As Integer = input.InputColumnCollection.Count
        m_inputIndexes = New Integer(colsCount - 1) {}
        For colIndex As Integer = 0 To colsCount - 1
            m_inputIndexes(colIndex) = Me.HostComponent.BufferManager.FindColumnByLineageID( _
                input.Buffer, _
                input.InputColumnCollection(colIndex).LineageID)
        Next
    End Sub ' PreExecute


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

        Try
            If String.IsNullOrEmpty(Me.InputColumns) Then
                Throw New ApplicationException("Select input columns.")
            End If

            ' Setup input columns based on selection.
            Dim selectedCols() As String = CStr(Me.InputColumns).Split( _
                New String() {ColumnSeparator}, _
                StringSplitOptions.None)
            Dim input As IDTSInput100 = Me.ComponentMetaData.InputCollection(0)
            Dim virtInput As IDTSVirtualInput100 = input.GetVirtualInput()

            Call input.InputColumnCollection.RemoveAll()

            For Each col As String In selectedCols
                If Not String.IsNullOrEmpty(col) Then
                    Dim virtColumn As IDTSVirtualInputColumn100 = virtInput.VirtualInputColumnCollection(col)
                    Call virtInput.SetUsageType(virtColumn.LineageID, DTSUsageType.UT_READONLY)
                End If
            Next

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

        Validate = result
    End Function    'Validate


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Select input columns for checksum.")> _
    <Editor(GetType(ColumnsEditor), GetType(UITypeEditor))> _
    <TypeConverter(GetType(ColumnsConverter))> _
    Public Property InputColumns() As String
        Get
            InputColumns = m_inputCols
        End Get
        Set(ByVal value As String)
            m_inputCols = value
        End Set
    End Property    ' InputColumns
#End Region ' Properties


#Region "Internals"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Provides multiple input columns selection
    Private Class ColumnsEditor
        Inherits UITypeEditor


        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        Public Overrides Function EditValue( _
            ByVal context As ITypeDescriptorContext, _
            ByVal provider As IServiceProvider, _
            ByVal value As Object) As Object

            Dim result As Object = value

            If Not context Is Nothing AndAlso _
                Not context.Instance Is Nothing AndAlso _
                Not context.PropertyDescriptor Is Nothing AndAlso _
                Not provider Is Nothing Then

                Dim edSvc As IWindowsFormsEditorService = CType(provider.GetService( _
                    GetType(IWindowsFormsEditorService)), _
                    IWindowsFormsEditorService)
                Dim descriptor As ICustomTypeDescriptor = CType( _
                    context.Instance, _
                    ICustomTypeDescriptor)
                Dim component As ScriptMain = CType( _
                    descriptor.GetPropertyOwner(context.PropertyDescriptor), _
                    ScriptMain)
                Dim virtInput As IDTSVirtualInput100 = component.ComponentMetaData.InputCollection(0).GetVirtualInput()

                If value Is Nothing Then
                    value = String.Empty
                End If

                ' Load selected columns.
                Dim selectedCols() As String = CStr(value).Split( _
                    New String() {ColumnSeparator}, _
                    StringSplitOptions.None)

                ' Build input columns list.
                Dim clb As CheckedListBox = New CheckedListBox()
                clb.CheckOnClick = True
                clb.BorderStyle = BorderStyle.None

                For Each virtCol As IDTSVirtualInputColumn100 In virtInput.VirtualInputColumnCollection
                    Dim selected As Boolean = ContainsString_(selectedCols, virtCol.Name)
                    Call clb.Items.Add(virtCol.Name, selected)
                Next

                Call edSvc.DropDownControl(clb)

                ' Store selected columns.
                Dim selCount As Integer = clb.CheckedItems.Count
                If selCount > 0 Then
                    selectedCols = New String(selCount - 1) {}
                    For selIndex As Integer = 0 To selCount - 1
                        Dim col As String = CStr(clb.CheckedItems(selIndex))
                        selectedCols(selIndex) = col
                    Next

                    Call Array.Sort(selectedCols)
                    result = String.Join(ColumnSeparator, selectedCols)
                End If
            End If

            EditValue = result
        End Function    ' EditValue


        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        Public Overrides Function GetEditStyle( _
            ByVal context As ITypeDescriptorContext) As UITypeEditorEditStyle

            If Not context Is Nothing AndAlso Not context.Instance Is Nothing Then
                Return UITypeEditorEditStyle.DropDown
            End If

            Return MyBase.GetEditStyle(context)
        End Function    ' GetEditStyle


#Region "Internals"
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        ' Returns true if specified string exists in array.
        Private Function ContainsString_(ByVal array() As String, ByVal str As String) As Boolean
            Dim result As Boolean = False

            For Each item As String In array
                If item = str Then
                    ' Found match.
                    result = True
                    Exit For
                End If
            Next

            ContainsString_ = result
        End Function    ' ContainsString_

#End Region ' Internals


#Region "Attributes"
#End Region ' Attributes
    End Class   ' ColumnsEditor


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' The only purpose of this class is to limit edit in grid.
    Private Class ColumnsConverter
        Inherits TypeConverter

        Public Sub New()
        End Sub ' New


        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        Public Overrides Function CanConvertFrom( _
            ByVal context As ITypeDescriptorContext, _
            ByVal sourceType As Type) As Boolean

            CanConvertFrom = False
        End Function    ' CanConvertFrom
    End Class   ' ColumnsConverter



#End Region ' Internals


#Region "Attributes"
    Private m_inputCols As String

    Private m_sb As StringBuilder
    Private m_crc32 As CRC32
    Private m_inputIndexes() As Integer
#End Region ' Attributes
End Class   ' ScriptMain
]]></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

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[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 [Checksum]() As Int32
        Set
            Me(0) = Value
        End Set
    End Property
    Public WriteOnly Property [Checksum_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 Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {"Checksum"}
        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[CRC32.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-2009 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.Collections
Imports System.IO
Imports System.Security.Cryptography


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Calculates CRC32 hash.
' Based on code found here: http://www.algorithm-code.com/wiki/CRC32_Algorithm
Public Class CRC32
    Inherits HashAlgorithm


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Initialize the cache
    Shared Sub New()
        g_AllOnes = UInteger.MaxValue
        g_cachedCRC32Tables = Hashtable.Synchronized(New Hashtable)
        g_autoCache = True
    End Sub ' New


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Creates a CRC32 object using the DefaultPolynomial
    Public Sub New()
        Call Me.New(CRC32.DefaultPolynomial)
    End Sub ' New


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Creates a CRC32 object using the specified polynomial
    Public Sub New(ByVal aPolynomial As UInteger)
        Call Me.New(aPolynomial, CRC32.AutoCache)
    End Sub ' New


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Creates a CRC32 object using the specified polynomial
    Public Sub New(ByVal aPolynomial As UInteger, ByVal cacheTable As Boolean)
        MyBase.HashSizeValue = &H20

        m_crc32Table = DirectCast(g_cachedCRC32Tables(aPolynomial), UInteger())
        If m_crc32Table Is Nothing Then
            m_crc32Table = CRC32.BuildCRC32Table(aPolynomial)
            If cacheTable Then
                Call g_cachedCRC32Tables.Add(aPolynomial, m_crc32Table)
            End If
        End If

        Call Me.Initialize()
    End Sub ' New


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Shared Sub ClearCache()
        Call g_cachedCRC32Tables.Clear()
    End Sub ' ClearCache


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Initializes an implementation of HashAlgorithm.
    Public Overrides Sub Initialize()
        m_crc = g_AllOnes
    End Sub 'Initialize


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Protected Overrides Sub HashCore( _
        ByVal buffer As Byte(), _
        ByVal offset As Integer, _
        ByVal count As Integer)

        ' Save the text in the buffer. 
        For i As Integer = offset To count - 1
            Dim tabPtr As ULong = CULng((m_crc And &HFF) Xor buffer(i))
            m_crc >>= 8
            m_crc = m_crc Xor m_crc32Table(CInt(tabPtr))
        Next
    End Sub ' HashCore


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Protected Overrides Function HashFinal() As Byte()
        Dim result As Byte() = New Byte(4 - 1) {}

        Dim finalCRC As ULong = m_crc Xor g_AllOnes
        result(0) = CByte((finalCRC >> 24) And CULng(&HFF))
        result(1) = CByte((finalCRC >> 16) And CULng(&HFF))
        result(2) = CByte((finalCRC >> 8) And CULng(&HFF))
        result(3) = CByte(finalCRC And CULng(&HFF))

        HashFinal = result
    End Function    ' HashFinal


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Computes the hash value for the specified Stream.
    Public Function ComputeHash(ByVal stream As Stream) As Byte()
        Dim buffer As Byte() = New Byte(4096 - 1) {}

        Do While True
            Dim bytesRead As Integer = stream.Read(buffer, 0, 4096)
            If bytesRead = 0 Then
                Exit Do
            End If

            Call HashCore(buffer, 0, bytesRead)
        Loop

        ComputeHash = HashFinal()
    End Function    ' ComputeHash


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Overloaded. Computes the hash value for the input data.
    Public Function ComputeHash(ByVal buffer As Byte()) As Byte()
        ComputeHash = Me.ComputeHash(buffer, 0, buffer.Length)
    End Function    ' ComputeHash


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Computes the hash value for the input data.
    Public Function ComputeHash( _
        ByVal buffer As Byte(), _
        ByVal offset As Integer, _
        ByVal count As Integer) As Byte()

        Call Me.HashCore(buffer, offset, count)
        ComputeHash = Me.HashFinal()
    End Function    ' ComputeHash


#Region "Propeties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns the default polynomial (used in WinZip, Ethernet, etc)
    Public Shared ReadOnly Property DefaultPolynomial() As UInteger
        Get
            Return &H4C11DB7
        End Get
    End Property    ' DefaultPolynomial


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Gets or sets the auto-cache setting of this class.
    Public Shared Property AutoCache() As Boolean
        Get
            Return g_autoCache
        End Get
        Set(ByVal value As Boolean)
            g_autoCache = value
        End Set
    End Property    ' AutoCache
#End Region ' Propeties


#Region "Internals"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Builds a crc32 table given a polynomial
    Protected Shared Function BuildCRC32Table(ByVal ulPolynomial As UInteger) As UInteger()
        Dim result() As UInteger = New UInteger(255) {}
        Dim dwSrc As UInteger

        ' 256 values representing ASCII character codes. 
        For i As Integer = 0 To 255
            dwSrc = CUInt(i)

            For j As Integer = 8 To 1 Step -1
                If ((dwSrc And 1) = 1) Then
                    dwSrc = (dwSrc >> 1) Xor ulPolynomial
                Else
                    dwSrc >>= 1
                End If
            Next

            result(i) = dwSrc
        Next

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


#Region "Attributes"
    Protected Shared g_AllOnes As UInteger
    Protected Shared g_cachedCRC32Tables As Hashtable
    Protected Shared g_autoCache As Boolean

    Protected m_crc32Table As UInteger()
    Private m_crc As UInteger
#End Region ' Attributes
End Class   ' CRC32
]]></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_34de6a2852f74048adcd913b9e905a25</msb:CodeName>
    <msb:Language>msBuild</msb:Language>
    <msb:DisplayName>ScriptComponent_34de6a2852f74048adcd913b9e905a25</msb:DisplayName>
    <msb:ProjectId>{3172B8B7-DD8E-4AC2-BEC3-8398C90CA5C3}</msb:ProjectId>
  </msb:PropertyGroup>
  <msb:ItemGroup>
    <msb:Project Include="ScriptComponent_34de6a2852f74048adcd913b9e905a25.vbproj" />
    <msb:File Include="ComponentWrapper.vb" />
    <msb:File Include="ScriptMain.vb" />
    <msb:File Include="BufferWrapper.vb" />
    <msb:File Include="CRC32.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_34de6a2852f74048adcd913b9e905a25.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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
CgYqAAEQAAACALIATwEBFgAAAAATMAIAGQAAAA4AABEDLAwDb1sAAAosBBkKKwgCAyhxAAAKCgYq
AAAAEzADACYAAAAPAAARFgsDDBYNKxQICZoEFihyAAAKLQQXCysKCRfWDQkIjmky5gcKBioeAihz
AAAKKgAAEzABAAQAAAAKAAARFgoGKkJTSkIBAAEAAAAAAAwAAAB2NC4wLjMwMzE5AAAAAAUAbAAA
AFQNAAAjfgAAwA0AAOAPAAAjU3RyaW5ncwAAAACgHQAA/AAAACNVUwCcHgAAEAAAACNHVUlEAAAA
rB4AADwGAAAjQmxvYgAAAAAAAAACAAABVx2iCQkOAAAA+gEzABYAAAEAAABQAAAADgAAABMAAAA4
AAAAKgAAAHMAAAABAAAAMgAAAA8AAAAFAAAADAAAAA4AAAAJAAAAAQAAAAkAAAAEAAAAAwAAAAMA
AAAAAGkHAQAAAAAABgCeBWIMBgD7BWIMBgCJBKMLDwCCDAAABgD6BH4GCgByBFUKCgBIBEkHCgCd
BEkHDgAnBPILDgDrCrYLBgATBaMLDgDKBDsMDgDiBDICBgADDuoHDgCrCvILDgArBTICBgAZBOoH
BgC2BBwMDgDVAB8HCgBdBDEIEgCCBbkMFgDUBdADBgC+BeoHBgD7CRIPGgC0AH4KGgDBAH4KGgAt
AH4KBgAzCeoHHgBXCxsICgAoD0kHBgCBCeoHIgBrAk4IIgBlDyENBgAmC5MNHgCaAxsICgCwCkkH
CgBGBUkHCgByBUkHCgBbBUkHBgDxB7QPBgBcA5MNBgDKB6gBEgDeDbIBFgBdDtADJgAUCtADFgA/
CdADEgDvDbIBBgB1BhIPBgDPCuoHGgABAH4KGgCIAH4KBgAWAeoHGgBHAH4KJgAtDtADGgCfAH4K
GgAaAH4KBgCoBuoHBgAOCeoHBgCyDeoHGgBkAH4KGgD8A34KDgAYAjsMBgANAeoHBgAkBuoHBgAj
CeoHFgAjCtADBgDFDWIMBgBmA+oHBgBAC+oHCgCMC0kHCgByC0kHDgCHDTsMIgBsDyENIgCOAyEN
hwDpCAAABgBQA+oHIgDCByENhwCYCAAABgCoD+oHDgDUDTsMAAAAAGMBAAAAAAEAAQAAAAAAigh0
DyUAAQABAAAAAADpCnQPKQABAAIAAAEQAAoOdA85AAEAAwABAAAAaggcASAABQAIAAEAAAD/ABwB
oQAKAA4AAQAAADAKHAGtAA8AHQABAAAAPw4cAb0ADwAkAAEAAACmDRwBOQARACgAAQAAAKUMHAE5
ABIAKQAFAQAA5AsAADkAEwAqAAUBAADkAAAAOQATADEAAwAAAGQLAAB1ABQAMwADAAAAvgoAAJEA
FAA3ADEAuwl7AjEAkgmDAjEApgmLAjEA1AmTAlGAFgv0AQEA+gz0AQEALQKbAgEABQGfAgEA5Ayj
AhQArwynAhQAkQyqAhQAEQOvAgQAOAOyAgEASAKnAgYApg22AgYApQy6AgEATQ6+AgEATQ6+AiEA
Hg+nAVAgAAAAAAYYSgsGAAEAWCAAAAAABhhKCwYAAQBgIAAAAAARGFALCgEBAIogAAAAABMI3ArD
AgEAliAAAAAAEwh6CMgCAQCiIAAAAAATCKcKzQIBAK4gAAAAABMI1AvSAgEAuiAAAAAABhhKCwYA
AQDEIAAAAADGAkcP1wIBAIQhAAAAAMYCGQYGAAIAJCIAAAAABgA/BN0CAgD8IgAAAAAGCDYNeQAD
ABEjAAAAAAYIRw0QAAMAGiMAAAAAERhQCwoBBAA3IwAAAAAGGEoLBgAEAEQjAAAAAAYYSgvjAgQA
VCMAAAAABhhKC+gCBQC9IwAAAAAWAB0DCgEHAMkjAAAAAMYCagYGAAcA2CMAAAAAxAIeBO4CBwAw
JAAAAADEAhUH9gIKAIwkAAAAAAYAvgb7AgoAyCQAAAAABgC+BgMDCwDkJAAAAAAGAL4GCgMMAAIl
AAAAABYI/wYTAw8ACSUAAAAAFgj1AhcDDwAQJQAAAAAWCAMDGwMPABglAAAAABQAKAMgAxAAayUA
AAAABhhKC1kBEQB6JQAAAADGClgNJgMWAIIlAAAAAAYIDggBABYAkSUAAAAABgieBykAFwCoJQAA
AADGCm8NJgMYALglAAAAAIYAXQ9yARgA0CUAAAAAhgAbDnIBGADlJQAAAAAGGEoLBgAYAAUmAAAA
AMYC/A4rAxgANSYAAAAARgP2DtcCHABIJgAAAABGA0cP1wIdAEomAAAAAAYYSgs3Ax4AWSYAAAAA
BhhKCzcDHwBoJgAAAADGAvMMewEgAHYmAAAAAMYCxgKwACEAfiYAAAAAgwAWBD4DIQCKJgAAAADG
AqYGeQAhAJQmAAAAABEA3wFDAyEAtCYAAAAAAQDLAUsDIgC9JgAAAAAGGEoLBgAjAMgmAAAAAAMI
rQJYACMA/CYAAAAABhhKCwYAIwAPJwAAAAAGGEoLBgAjABgnAAAAAMYCWgZTAyMAxCgAAAAAxgKw
AzsCJgDsKAAAAAABAPIBXAMnAB4pAAAAAAYYSgsGACkAKCkAAAAAxgL/B2MDKQAAAAEAYQ8AAAEA
6gIAAAEAZAYAAAEA5gYAAAEA5gYAAAIARQMAAAEAPAoAAAIAFA4AAAMAlQ4AAAEA0QcAAAEAPAoA
AAEAPAoAAAIAFA4AAAMAlQ4AAAEAZAYAAAEA8gYAAAEAdQ4AAAIAlwEAAAMA7g4AAAQANQoAAAUA
TQkAAAEAXgYAAAEAXgYAAAEAoAEAAAIAxgMAAAMANQoAAAQATQkAAAEANQoAAAEAYQ8AAAEAdQ4A
AAEAdQ4AAAEAPQkAAAEAvQIAAAEAvQIAAAEAPw8AAAIA8gkAAAMAZAYAAAEAPw8AAAEArg8AAAIA
nwsAAAEAPw8AAAIA8QMJAEoLAQARAEoLBgAZAEoLCgApAEoLEAAxAEoLFQBBAEoLGwBZAEoLBgBh
AEoLBgBpAEoLBgCBAEoLIQCRAEoLKQChAEoLEACpAEoLEACxAEoLBgC5AEoLKQApAUoLEAAxAUoL
LgA5AUoLNgBJAEoLBgBRAEoLBgAMAEoLBgAUAEoLBgAcAEoLBgAkAEoLBgAMAK0CWAAUAK0CWAAc
AK0CWAAkAK0CWADBAMoGAQBZAQkKYwBpAasHaQDBAGQCbgBpAdgHdABxAKYGeQCBAdICfQDBAKYG
eQCBAdsMgwCJARQBiQBhARkGBgBhAQICmACRAfoIngCZAdgHpADBAEoLBgDJAK4IqgCpAYsOsAB5
AW0OtACxAUMKugDJAAkKsACpAdgHwADBAXMBsAC5AYEBxwDJAdEP3ADRAUoLEADJAScO4QDJAN4O
6wCpAV8HBgDRAMgI8ADhAdgH9gDZAHMBsADRAAkE/ADxAQYLBAHhAN4CeQDxAfQKCgFJAUoLBgBJ
AVcCEgFBAUoLBgBBAT0GGwFJAdgHHgFJAVMCJgFJAXsJBgBRAU4CQgFZAUoLWQFZAeEHaAFZAbIH
AQAJAkoLEAARAl0PcgERAhsOcgF5AUoLBgDJAGwBsABxAEoLBgAZAksGdgFxAPMMewFxAMYCsACJ
AHgDgAEpAp4CkAE8AB4PpwFEACkGWABEADMGvgFEAEoLBgDpAEoLBgDxAJEC3QHxAIgL4QH5AIYC
5wE5Am0K7QHJAdkP9AFBAqYG9wEJAUoLBgAJAdUGKQBJAooD/AHhATILAwIRAX8O3QHZAL0DeQAJ
AQYNCQJZAlMCDwIRAQkPcgFhAjcEBgABAboHFQIJARANHAJxAosOsABxAtgHdAB5ArgOIgLJAXUI
LgLpALADOwKBApgGSwIhAUoLBgAOABQAdgIpAGMAtQQuAAsAnQMuABMApgMuABsAxQMuACMAzgNA
ADsAGARAADMAHQRDACsALARDADMAHQRJAGMAxgRjACsALARjADMAHQRpAGMA2gSAADsAGASDAEMA
GASDAEsAGASDACsALASJAGMA5wSgADsAGASjAGsARQSjAHMAGASjAHsAJgSpAIMA+wSpAIsAIwWp
AJMA6QXAADsAGATgADsAGATjAHsAJgQDAXsAJgRjATMAHQRjAVMAUwSDATMAHQSDAVsAJgQABXsA
JgQgBXsAJgRABTMAHQRABTsAGARgBTMAHQRgBTsAGASABTMAHQSABTsAGASgBTMAHQSgBTsAGATA
BTsAGATgBTsAGAQABjsAGAQABjMAHQQgBjsAGARABjsAGARABjMAHQRdAJAAzQAOASwBNAE6AUoB
TwFuAYgBmwHEATUCQwIEAAEABQAFAAYABgAHAAgADAAMAAAA6wprAwAAjAhwAwAAqwp1AwAA5gt6
AwAAYg1/AwAAAweDAwAABwOHAwAAXA2LAwAAEgiQAwAAogeUAwAAcw2LAwAAsQKYAwIABAADAAIA
BQAFAAIABgAHAAIABwAJAAIADAALAAEADQALAAIAGQANAAIAGgAPAAEAGwAPAAIAHgARAAEAHwAT
AAEAIAAVAAIAIQAXAAIAMQAZADwAQwBKAFEAIwGNAaABrwG2AQSAAAAAAAAAAAAAAAAAAAAAABwB
AAAEAAAAAAAAAAAAAABSAiQCAAAAAAQAAAAAAAAAAAAAAFIC6gcAAAAACgAAAAAAAAAAAAAAWwIy
AgAAAAABAAAAAAAAAAAAAABkAk0BAAAAAA4AAAAAAAAAAAAAAG0Cmw4AAAAADgAAAAAAAAAAAAAA
bQJXCQAAAAAEAAAAAAAAAAAAAABbAq8GAAAAAAQAAAAAAAAAAAAAAFICIQ0AAAAADgAAAAAAAAAA
AAAAbQK9DgAAAAALAAQADAAEAA0ABQAOAAUAAAAQABgAyQEAABAAXQDJAQAAAABfAMkBqwCWAasA
uQHfACoCAAAASURUU0NvbXBvbmVudE1ldGFEYXRhMTAwAElEVFNJbnB1dENvbHVtbjEwMABJRFRT
VmlydHVhbElucHV0Q29sdW1uMTAwAElEVFNJbnB1dENvbHVtbkNvbGxlY3Rpb24xMDAASURUU1Zp
cnR1YWxJbnB1dENvbHVtbkNvbGxlY3Rpb24xMDAASURUU0lucHV0Q29sbGVjdGlvbjEwMABJRFRT
QnVmZmVyTWFuYWdlcjEwMABJRFRTSW5wdXQxMDAASURUU1ZpcnR1YWxJbnB1dDEwMABDb250ZXh0
VmFsdWVgMQBUaHJlYWRTYWZlT2JqZWN0UHJvdmlkZXJgMQBDUkMzMgBtX2NyYzMyAFVJbnQzMgBU
b0ludDMyAFNjcmlwdENvbXBvbmVudF8zNGRlNmEyODUyZjc0MDQ4YWRjZDkxM2I5ZTkwNWEyNQBD
b3p5Um9jLlNTSVNQbHVzLjIwMTcAPE1vZHVsZT4AZ2V0X0lEAGdldF9MaW5lYWdlSUQARmluZENv
bHVtbkJ5TGluZWFnZUlEAE9iamVjdElEAElucHV0SUQAU3lzdGVtLklPAENvenlSb2MuU3FsU2Vy
dmVyLlNTSVMAVABEaXNwb3NlX19JbnN0YW5jZV9fAENyZWF0ZV9fSW5zdGFuY2VfXwBDb250YWlu
c1N0cmluZ18AZ2V0X0NvbXBvbmVudE1ldGFEYXRhAFByb2plY3REYXRhAG1zY29ybGliAG1fc2IA
TWljcm9zb2Z0LlZpc3VhbEJhc2ljAG1fY3JjAFJlYWQAQWRkAFN5bmNocm9uaXplZABBcHBlbmQA
SVdpbmRvd3NGb3Jtc0VkaXRvclNlcnZpY2UAR2V0U2VydmljZQBnZXRfSW5zdGFuY2UAQ3JlYXRl
SW5zdGFuY2UAZ2V0X0dldEluc3RhbmNlAGluc3RhbmNlAEdldEhhc2hDb2RlAGdldF9Vbmljb2Rl
AGdldF9NZXNzYWdlAGVyck1lc3NhZ2UAZ2V0X0F1dG9DYWNoZQBzZXRfQXV0b0NhY2hlAGdfYXV0
b0NhY2hlAENsZWFyQ2FjaGUAQnVpbGRDUkMzMlRhYmxlAG1fY3JjMzJUYWJsZQBjYWNoZVRhYmxl
AElEaXNwb3NhYmxlAEhhc2h0YWJsZQBSdW50aW1lVHlwZUhhbmRsZQBHZXRUeXBlRnJvbUhhbmRs
ZQBzZXRfQm9yZGVyU3R5bGUAVUlUeXBlRWRpdG9yRWRpdFN0eWxlAEdldEVkaXRTdHlsZQBnZXRf
TmFtZQBJbnB1dE5hbWUATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUGlwZWxpbmUAc291cmNlVHlw
ZQBEVFNVc2FnZVR5cGUAU2V0VXNhZ2VUeXBlAEdldFR5cGUASGFzaENvcmUAQXBwbGljYXRpb25C
YXNlAERpc3Bvc2UAVmFsaWRhdGUARWRpdG9yQnJvd3NhYmxlU3RhdGUASGVscEtleXdvcmRBdHRy
aWJ1dGUAR2VuZXJhdGVkQ29kZUF0dHJpYnV0ZQBEZWJ1Z2dhYmxlQXR0cmlidXRlAEVkaXRvckJy
b3dzYWJsZUF0dHJpYnV0ZQBDb21WaXNpYmxlQXR0cmlidXRlAFN0YW5kYXJkTW9kdWxlQXR0cmli
dXRlAEhpZGVNb2R1bGVOYW1lQXR0cmlidXRlAFRhcmdldEZyYW1ld29ya0F0dHJpYnV0ZQBEZWJ1
Z2dlckhpZGRlbkF0dHJpYnV0ZQBNeUdyb3VwQ29sbGVjdGlvbkF0dHJpYnV0ZQBEZXNjcmlwdGlv
bkF0dHJpYnV0ZQBUeXBlQ29udmVydGVyQXR0cmlidXRlAEVkaXRvckF0dHJpYnV0ZQBWYWxpZGF0
ZVByb3BlcnRpZXNBdHRyaWJ1dGUAQ29tcGlsYXRpb25SZWxheGF0aW9uc0F0dHJpYnV0ZQBDTFND
b21wbGlhbnRBdHRyaWJ1dGUAU1NJU1NjcmlwdENvbXBvbmVudEVudHJ5UG9pbnRBdHRyaWJ1dGUA
UnVudGltZUNvbXBhdGliaWxpdHlBdHRyaWJ1dGUAUHJlRXhlY3V0ZQBCeXRlAGdldF9WYWx1ZQBz
ZXRfVmFsdWUASGFzaFNpemVWYWx1ZQBHZXRPYmplY3RWYWx1ZQBFZGl0VmFsdWUAdmFsdWUASW5p
dGlhbGl6ZQBFbmNvZGluZwBTeXN0ZW0uUnVudGltZS5WZXJzaW9uaW5nAENvbXBhcmVTdHJpbmcA
VG9TdHJpbmcAU3lzdGVtLkRyYXdpbmcAQ29tcHV0ZUhhc2gAc2V0X0xlbmd0aABzZXRfQ2hlY2tP
bkNsaWNrAGFQb2x5bm9taWFsAHVsUG9seW5vbWlhbABnZXRfRGVmYXVsdFBvbHlub21pYWwASGFz
aEZpbmFsAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5NeVNlcnZpY2VzLkludGVybmFsAFN5c3RlbS5D
b21wb25lbnRNb2RlbABSZW1vdmVBbGwAU2NyaXB0Q29tcG9uZW50XzM0ZGU2YTI4NTJmNzQwNDhh
ZGNkOTEzYjllOTA1YTI1LmRsbABzZXRfQ2hlY2tzdW1fSXNOdWxsAFNldE51bGwARHJvcERvd25D
b250cm9sAFN0cmVhbQBzdHJlYW0AZ2V0X0l0ZW0Ac2V0X0l0ZW0AU3lzdGVtAEhhc2hBbGdvcml0
aG0AQ2FuQ29udmVydEZyb20Ac2V0X0NoZWNrc3VtAFN5c3RlbS5EcmF3aW5nLkRlc2lnbgBTeXN0
ZW0uQ29tcG9uZW50TW9kZWwuRGVzaWduAFN5c3RlbS5XaW5kb3dzLkZvcm1zLkRlc2lnbgBTY3Jp
cHRNYWluAEpvaW4AZ2V0X0FwcGxpY2F0aW9uAE15QXBwbGljYXRpb24AQ2hlY2tlZEl0ZW1Db2xs
ZWN0aW9uAGdldF9JbnB1dENvbHVtbkNvbGxlY3Rpb24AZ2V0X1ZpcnR1YWxJbnB1dENvbHVtbkNv
bGxlY3Rpb24AT2JqZWN0Q29sbGVjdGlvbgBnZXRfSW5wdXRDb2xsZWN0aW9uAEFwcGxpY2F0aW9u
RXhjZXB0aW9uAEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24AbwBPdXRwdXROYW1lTWFwAE91dHB1
dE1hcABNaWNyb3NvZnQuU3FsU2VydmVyLkRUU1BpcGVsaW5lV3JhcABDbGVhcgBJU2VydmljZVBy
b3ZpZGVyAG1fQXBwT2JqZWN0UHJvdmlkZXIAbV9Vc2VyT2JqZWN0UHJvdmlkZXIAbV9Db21wdXRl
ck9iamVjdFByb3ZpZGVyAG1fTXlXZWJTZXJ2aWNlc09iamVjdFByb3ZpZGVyAHByb3ZpZGVyAFN0
cmluZ0J1aWxkZXIAZ2V0X0J1ZmZlcgBQaXBlbGluZUJ1ZmZlcgBTY3JpcHRCdWZmZXIASW5wdXRC
dWZmZXIAYnVmZmVyAGdldF9CdWZmZXJNYW5hZ2VyAFN5c3RlbS5Db2RlRG9tLkNvbXBpbGVyAEdl
dFByb3BlcnR5T3duZXIATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUGlwZWxpbmUuV3JhcHBlcgBn
ZXRfVXNlcgBUeXBlQ29udmVydGVyAENvbHVtbnNDb252ZXJ0ZXIAQml0Q29udmVydGVyAGdldF9D
b21wdXRlcgBNeUNvbXB1dGVyAENsZWFyUHJvamVjdEVycm9yAFNldFByb2plY3RFcnJvcgBDb2x1
bW5TZXBhcmF0b3IASUVudW1lcmF0b3IAR2V0RW51bWVyYXRvcgBBY3RpdmF0b3IALmN0b3IALmNj
dG9yAFVJVHlwZUVkaXRvcgBDb2x1bW5zRWRpdG9yAElDdXN0b21UeXBlRGVzY3JpcHRvcgBnZXRf
UHJvcGVydHlEZXNjcmlwdG9yAHN0cgBTeXN0ZW0uRGlhZ25vc3RpY3MATWljcm9zb2Z0LlZpc3Vh
bEJhc2ljLkRldmljZXMAZ2V0X1dlYlNlcnZpY2VzAE15V2ViU2VydmljZXMATWljcm9zb2Z0LlZp
c3VhbEJhc2ljLkFwcGxpY2F0aW9uU2VydmljZXMAU3lzdGVtLlJ1bnRpbWUuSW50ZXJvcFNlcnZp
Y2VzAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5Db21waWxlclNlcnZpY2VzAFN5c3RlbS5SdW50aW1l
LkNvbXBpbGVyU2VydmljZXMARGVidWdnaW5nTW9kZXMAZ19jYWNoZWRDUkMzMlRhYmxlcwBWYXJp
YWJsZXMAZ19BbGxPbmVzAENvenlSb2MuU3FsU2VydmVyLlNTSVMuQXR0cmlidXRlcwBHZXRCeXRl
cwBtX2lucHV0SW5kZXhlcwBFcXVhbHMAbV9pbnB1dENvbHMAZ2V0X0l0ZW1zAGdldF9DaGVja2Vk
SXRlbXMAU3lzdGVtLldpbmRvd3MuRm9ybXMAZ2V0X0lucHV0Q29sdW1ucwBzZXRfSW5wdXRDb2x1
bW5zAGdldF9TdGF0aWNJbnB1dENvbHVtbnMAZ2V0X1N0YXRpY091dHB1dENvbHVtbnMAQ29udmVy
c2lvbnMAU3lzdGVtLkNvbGxlY3Rpb25zAENvbm5lY3Rpb25zAFN0cmluZ1NwbGl0T3B0aW9ucwBS
dW50aW1lSGVscGVycwBPcGVyYXRvcnMAU2NyaXB0QnVmZmVyUGx1cwBTY3JpcHRDb21wb25lbnRQ
bHVzAE9iamVjdABNeVByb2plY3QAb2Zmc2V0AEVuZE9mUm93c2V0AFNwbGl0AFBpcGVsaW5lQ29t
cG9uZW50AFVzZXJDb21wb25lbnQAUGFyZW50Q29tcG9uZW50AFNjcmlwdENvbXBvbmVudABnZXRf
SG9zdENvbXBvbmVudABnZXRfQ3VycmVudABnZXRfQ291bnQAY291bnQATWljcm9zb2Z0LlNxbFNl
cnZlci5UeFNjcmlwdABTb3J0AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuUGlwZWxpbmVIb3N0AEdldFZp
cnR1YWxJbnB1dABJc0lucHV0AElucHV0X1Byb2Nlc3NJbnB1dABNb3ZlTmV4dABTeXN0ZW0uVGV4
dABtX0NvbnRleHQASVR5cGVEZXNjcmlwdG9yQ29udGV4dABjb250ZXh0AElucHV0X1Byb2Nlc3NJ
bnB1dFJvdwBOZXh0Um93AENoZWNrZWRMaXN0Qm94AFNjcmlwdENvbXBvbmVudF8zNGRlNmEyODUy
Zjc0MDQ4YWRjZDkxM2I5ZTkwNWEyNS5NeQBBcnJheQBhcnJheQBTeXN0ZW0uU2VjdXJpdHkuQ3J5
cHRvZ3JhcGh5AElzTnVsbE9yRW1wdHkAAAAFXAAwAAAFXABuAAArUwBlAGwAZQBjAHQAIABpAG4A
cAB1AHQAIABjAG8AbAB1AG0AbgBzAC4AAAUsAA0AAICbSQBzAE4AdQBsAGwAIABwAHIAbwBwAGUA
cgB0AHkAIABjAGEAbgBuAG8AdAAgAGIAZQAgAHMAZQB0ACAAdABvACAARgBhAGwAcwBlAC4AIABB
AHMAcwBpAGcAbgAgAGEAIAB2AGEAbAB1AGUAIAB0AG8AIAB0AGgAZQAgAGMAbwBsAHUAbQBuACAA
aQBuAHMAdABlAGEAZAAuAAARQwBoAGUAYwBrAHMAdQBtAAALSQBuAHAAdQB0AAAAAJ+tOUpaeSBC
tkiEbaCSHJsABCABAQgDIAABBSABARERBCABAQ4FIAIBDg4FIAEBER0HIAQBDg4ODgQgAQECByAC
ARJFEkUFIAEBEkUGFRIwARIMBhUSMAESCAYVEjABEj0GFRIwARIsBCAAEwAFBwMICAgFIAASgLUE
IAECCAUgARJhDgQgARwIAyAADgUAABKAwQUgAR0FDgYAAggdBQgHBwQSZQgICAUgABKAyQUgABKA
zQUgARJlHAUgABKA1QMgAAgFIAASgNkFIAASgN0GIAESgOEcBSACCAgIDgcIAgISaR0OCA4SbRJx
BAABAg4JIAIdDh0OEYDtBCAAEmkFIAASgPEFIAESbRwHIAIICBGA9QUAAQEScQMAAAEDBwEOCAAB
EoClEoClAgYIBCABHBwCHQkFIAIBHBwHBwQICAsQCQUHAh0FCwcHAx0FHQUIByADCB0FCAgEBwEd
BQkHBR0JHQkJCAgOIAUBEoCxCAISgLUSgLkFIAIBCBwDBwECAyAAAgQAARwcBCABAhwHAAESRRGB
EQQHAR4AAh4ABRABAB4ABAoBHgAEBwETAAYVEjABEwAHBhUSTQETAAYVEk0BEwACEwAECgETAAUg
AQETABgHDRwcEoCBEmkdDhKAhQgSgIkSbQIICA4DIAAcBSAAEoEZBSABHBJFBiABHBKBGQIGDgQA
AQ4cBiABARGBKQUgABKAiQUgABKBLQUgAggcAgYgAQESgTUFIAASgTkHEAEBAR0eAAMKAQ4GAAIO
Dh0OBQcBEYCNByABEYCNEnkHBwQCAh0OCAYAAwgODgIIt3pcVhk04IkIsD9ffxHVCjoIFs9JC7gM
NOoIiYRdzYCAzJEELAANAAcGFRIwARIMBwYVEjABEggHBhUSMAESPQcGFRIwARIsAwYSYQMGEhgD
Bh0IAgYJBAYSgKUCBgIDBh0JAwYSJAMGEigEBhKAsQQAABIMBAAAEggEAAASPQQAABIsBSABARIc
BSABAhAOBCABAQkFIAIBCQIHIAMBHQUICAQgAB0FByABHQUSgKkGIAEdBR0FCCADHQUdBQgIAwAA
CQMAAAIEAAEBAgUAAR0JCQQgAB0OCyAEAQgOEoC1EoC5BiABARKAsQQgABJFBxABAR4AHgAHMAEB
ARAeAAggAxwSeRJ9HAYgAgIdDg4HIAICEnkSRQQIABIMBAgAEggECAASPQQIABIsAygADgMIAAkD
CAACBCgAHQ4DKAAIAygAAgQoABMACAEACAAAAAAAHgEAAQBUAhZXcmFwTm9uRXhjZXB0aW9uVGhy
b3dzAQgBAAIAAAAAAEkBABouTkVURnJhbWV3b3JrLFZlcnNpb249djQuNQEAVA4URnJhbWV3b3Jr
RGlzcGxheU5hbWUSLk5FVCBGcmFtZXdvcmsgNC41BAEAAAAIAQABAAAAAAAFAQAAAAAYAQAKTXlU
ZW1wbGF0ZQgxMS4wLjAuMAAADQEACFZhbGlkYXRlAABhAQA0U3lzdGVtLldlYi5TZXJ2aWNlcy5Q
cm90b2NvbHMuU29hcEh0dHBDbGllbnRQcm90b2NvbBJDcmVhdGVfX0luc3RhbmNlX18TRGlzcG9z
ZV9fSW5zdGFuY2VfXwAAABABAAtNeS5Db21wdXRlcgAAEwEADk15LkFwcGxpY2F0aW9uAAAMAQAH
TXkuVXNlcgAAEwEADk15LldlYlNlcnZpY2VzAAAnAQAiU2VsZWN0IGlucHV0IGNvbHVtbnMgZm9y
IGNoZWNrc3VtLgAAgMQBAElTY3JpcHRDb21wb25lbnRfMzRkZTZhMjg1MmY3NDA0OGFkY2Q5MTNi
OWU5MDVhMjUuU2NyaXB0TWFpbitDb2x1bW5zRWRpdG9ydVN5c3RlbS5EcmF3aW5nLkRlc2lnbi5V
SVR5cGVFZGl0b3IsIFN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1
dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQAAUQEATFNjcmlwdENvbXBvbmVu
dF8zNGRlNmEyODUyZjc0MDQ4YWRjZDkxM2I5ZTkwNWEyNS5TY3JpcHRNYWluK0NvbHVtbnNDb252
ZXJ0ZXIAAABITgAAAAAAAAAAAABiTgAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVE4AAAAAAAAA
AAAAAABfQ29yRGxsTWFpbgBtc2NvcmVlLmRsbAAAAAAA/yUAIAAQAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAABgAAIAA
AAAAAAAAAAAAAAAAAAEAAQAAADAAAIAAAAAAAAAAAAAAAAAAAAEAAAAAAEgAAABYYAAA7AIAAAAA
AAAAAAAA7AI0AAAAVgBTAF8AVgBFAFIAUwBJAE8ATgBfAEkATgBGAE8AAAAAAL0E7/4AAAEAAAAA
AAAAAAAAAAAAAAAAAD8AAAAAAAAABAAAAAIAAAAAAAAAAAAAAAAAAABEAAAAAQBWAGEAcgBGAGkA
bABlAEkAbgBmAG8AAAAAACQABAAAAFQAcgBhAG4AcwBsAGEAdABpAG8AbgAAAAAAAACwBEwCAAAB
AFMAdAByAGkAbgBnAEYAaQBsAGUASQBuAGYAbwAAACgCAAABADAAMAAwADAAMAA0AGIAMAAAACwA
AgABAEYAaQBsAGUARABlAHMAYwByAGkAcAB0AGkAbwBuAAAAAAAgAAAAMAAIAAEARgBpAGwAZQBW
AGUAcgBzAGkAbwBuAAAAAAAwAC4AMAAuADAALgAwAAAAigA1AAEASQBuAHQAZQByAG4AYQBsAE4A
YQBtAGUAAABTAGMAcgBpAHAAdABDAG8AbQBwAG8AbgBlAG4AdABfADMANABkAGUANgBhADIAOAA1
ADIAZgA3ADQAMAA0ADgAYQBkAGMAZAA5ADEAMwBiADkAZQA5ADAANQBhADIANQAuAGQAbABsAAAA
AAAoAAIAAQBMAGUAZwBhAGwAQwBvAHAAeQByAGkAZwBoAHQAAAAgAAAAkgA1AAEATwByAGkAZwBp
AG4AYQBsAEYAaQBsAGUAbgBhAG0AZQAAAFMAYwByAGkAcAB0AEMAbwBtAHAAbwBuAGUAbgB0AF8A
MwA0AGQAZQA2AGEAMgA4ADUAMgBmADcANAAwADQAOABhAGQAYwBkADkAMQAzAGIAOQBlADkAMAA1
AGEAMgA1AC4AZABsAGwAAAAAADQACAABAFAAcgBvAGQAdQBjAHQAVgBlAHIAcwBpAG8AbgAAADAA
LgAwAC4AMAAuADAAAAA4AAgAAQBBAHMAcwBlAG0AYgBsAHkAIABWAGUAcgBzAGkAbwBuAAAAMAAu
ADAALgAwAC4AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAwAAAB0PgAAAAAAAAAAAAAAAAAAAAAA
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_34de6a2852f74048adcd913b9e905a25</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><inputs><input id="14" name="Input" hasSideEffects="true"></input></inputs><outputs><output id="16" name="Output" synchronousInputId="14"><outputColumns><outputColumn id="17" name="Checksum" lineageId="17" dataType="i4" /></outputColumns><externalMetadataColumns /></output></outputs></component>