<component id="91" name="Regex Match" componentClassID="{2E42D45B-F83C-400F-8D77-61DDE6A7DF29}" description="Executes a custom script." localeId="1033" usesDispositions="false" validateExternalMetadata="True" version="4" pipelineVersion="0" 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="95" name="SourceCode" dataType="System.String" state="cdata" isArray="true" description="Stores the source code of the component" typeConverter="NOTBROWSABLE" UITypeEditor="" containsID="false" expressionType="None"><arrayElements arrayElementCount="18"><arrayElement dataType="System.String"><![CDATA[\scriptcomponent_fde66044b6af42b09a2faf6a1f41d053.vbproj]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <!-- This section defines project-level properties.

       Configuration - Specifies whether the default configuration is Release or Debug.
       Platform - Specifies what CPU the output of this project can run on.
       OutputType - Must be "Library" for VSTA.
       NoStandardLibraries - Set to "false" for VSTA.
       RootNamespace - In C#, this specifies the namespace given to new files.
                       In Visual Basic, all objects are wrapped in this namespace at runtime.
       AssemblyName - Name of the output assembly.
  -->
  <PropertyGroup>
    <ProjectTypeGuids>{A860303F-1F3F-4691-B57E-529FC101A107};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <OutputType>Library</OutputType>
    <RootNamespace>ScriptComponent_fde66044b6af42b09a2faf6a1f41d053.vbproj</RootNamespace>
    <AssemblyName>ScriptComponent_fde66044b6af42b09a2faf6a1f41d053.vbproj</AssemblyName>
    <StartupObject>
    </StartupObject>
    <OptionExplicit>On</OptionExplicit>
    <OptionCompare>Binary</OptionCompare>
    <OptionStrict>Off</OptionStrict>
    <OptionInfer>On</OptionInfer>
    <ProjectGuid>{190B6B3A-597A-4E64-B1DC-8308F4A23FDC}</ProjectGuid>
  </PropertyGroup>
  <!-- This section defines properties that are set when the "Debug" configuration is
       selected.

       DebugSymbols - If true, create symbols (.pdb). If false, do not create symbols.
       Optimize - If true, optimize the build output. If false, do not optimize.
       OutputPath - Output path of the project relative to the project file.
       EnableUnmanagedDebugging - If true, starting the debugger will attach both managed and unmanaged debuggers.
       DefineConstants - Constants defined for the preprocessor.
       Warning Level - Warning level for the compiler.
  -->
  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <DefineConstants>
    </DefineConstants>
    <DefineDebug>true</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <DebugSymbols>true</DebugSymbols>
    <Optimize>false</Optimize>
    <OutputPath>bin\</OutputPath>
    <RegisterForComInterop>false</RegisterForComInterop>
    <RemoveIntegerChecks>false</RemoveIntegerChecks>
    <NoWarn>42016,42017,42018,42019,42032</NoWarn>
  </PropertyGroup>
  <!-- This section defines properties that are set when the "Release" configuration is
       selected.

       DebugSymbols - If true, create symbols (.pdb). If false, do not create symbols.
       Optimize - If true, optimize the build output. If false, do not optimize.
       OutputPath - Output path of the project relative to the project file.
       EnableUnmanagedDebugging - If true, starting the debugger will attach both managed and unmanaged debuggers.
       DefineConstants - Constants defined for the preprocessor.
       Warning Level - Warning level for the compiler.
  -->
  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
    <DefineConstants>
    </DefineConstants>
    <DefineDebug>false</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <DebugSymbols>false</DebugSymbols>
    <Optimize>true</Optimize>
    <OutputPath>bin\</OutputPath>
    <RegisterForComInterop>false</RegisterForComInterop>
    <RemoveIntegerChecks>false</RemoveIntegerChecks>
    <NoWarn>42016,42017,42018,42019,42032</NoWarn>
  </PropertyGroup>
  <!-- This section enables pre- and post-build steps. However,
       it is recommended that MSBuild tasks be used instead of these properties.
  -->
  <PropertyGroup>
    <PreBuildEvent>
    </PreBuildEvent>
    <PostBuildEvent>
    </PostBuildEvent>
  </PropertyGroup>
  <!-- This sections specifies references for the project. -->
  <ItemGroup>
    <Reference Include="CozyRoc.SSISPlus.2008, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea, processorArchitecture=MSIL" />
    <Reference Include="Microsoft.SqlServer.ManagedDTS, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL" />
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xml" />
    <Reference Include="Microsoft.SqlServer.TxScript, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSRuntimeWrap, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSPipelineWrap, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.PipelineHost, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
  </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>
  <!-- This section defines the user source files that are part of the
       project.

       Compile - Specifies a source file to compile.
       EmbeddedResource - Specifies a .resx file for embedded resources.
       None - Specifies a file that is not to be passed to the compiler (for instance,
              a text file or XML file).
       AppDesigner - Specifies the directory where the application properties files can
                     be found.
  -->
  <ItemGroup>
    <AppDesigner Include="My Project\" />
    <Compile Include="BufferWrapper.vb" />
    <Compile Include="ComponentWrapper.vb" />
    <Compile Include="main.vb" />
    <Compile Include="My Project\AssemblyInfo.vb">
      <SubType>Code</SubType>
    </Compile>
    <EmbeddedResource Include="My Project\Resources.resx">
      <Generator>VbMyResourcesResXFileCodeGenerator</Generator>
      <LastGenOutput>Resources.Designer.vb</LastGenOutput>
      <CustomToolNamespace>My.Resources</CustomToolNamespace>
    </EmbeddedResource>
    <Compile Include="My Project\Resources.Designer.vb">
      <AutoGen>True</AutoGen>
      <DesignTime>True</DesignTime>
      <DependentUpon>Resources.resx</DependentUpon>
      <SubType>Code</SubType>
    </Compile>
    <None Include="My Project\Settings.settings">
      <Generator>SettingsSingleFileGenerator</Generator>
      <LastGenOutput>Settings.Designer.vb</LastGenOutput>
    </None>
    <Compile Include="My Project\Settings.Designer.vb">
      <AutoGen>True</AutoGen>
      <DependentUpon>Settings.settings</DependentUpon>
      <SubType>Code</SubType>
    </Compile>
    <!-- Include the default configuration information and metadata files for the add-in.
         These files are copied to the build output directory when the project is
         built, and the path to the configuration file is passed to add-in on the command
         line when debugging.
    -->
  </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="{A860303F-1F3F-4691-B57E-529FC101A107}">
        <ProjectProperties HostName="VSTAHostName" HostPackage="{C1B21C64-9E6F-4923-A89D-9F958503C1CE}" ApplicationType="usd" Language="vb" TemplatesPath="" />
        <Host Name="SSIS_ScriptComponent" />
        <ProjectClient>
          <HostIdentifier>SSIS_ScriptComponent</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
</Project>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\my project\assemblyinfo.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[Imports System
Imports System.Reflection
Imports System.Runtime.InteropServices

' General Information about an assembly is controlled through the following 
' set of attributes. Change these attribute values to modify the information
' associated with an assembly.

' Review the values of the assembly attributes

<Assembly: AssemblyTitle("ScriptComponent_fde66044b6af42b09a2faf6a1f41d053.vbproj")> 
<Assembly: AssemblyDescription("")> 
<Assembly: AssemblyCompany("Microsoft")> 
<Assembly: AssemblyProduct("ScriptComponent_fde66044b6af42b09a2faf6a1f41d053.vbproj")> 
<Assembly: AssemblyCopyright("Copyright @ Microsoft 2010")> 
<Assembly: AssemblyTrademark("")> 
<Assembly: CLSCompliant(True)> 

<Assembly: ComVisible(False)> 

'The following GUID is for the ID of the typelib if this project is exposed to COM
<Assembly: Guid("59f1bb81-02e5-459f-b97d-94c8cc864eb3")> 

' Version information for an assembly consists of the following four values:
'
'      Major Version
'      Minor Version 
'      Build Number
'      Revision
'
' You can specify all the values or you can default the Build and Revision Numbers 
' by using the '*' as shown below:
' <Assembly: AssemblyVersion("1.0.*")>

<Assembly: AssemblyVersion("1.0.0.0")> 
<Assembly: AssemblyFileVersion("1.0.0.0")> 
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\my project\settings.settings]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version='1.0' encoding='iso-8859-1'?>
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)" GeneratedClassNamespace="" GeneratedClassName="MySettings">
  <Profiles>
    <Profile Name="(Default)" />
  </Profiles>
  <Settings />
</SettingsFile>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\bufferwrapper.vb]]></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

    Dim MatchOutputID As Integer
    Dim NoMatchOutputID As Integer

    Public Sub New(ByVal Component As ScriptComponent, ByVal ObjectID As Integer, ByVal IsInput As Boolean, ByVal Buffer As PipelineBuffer)
        MyBase.New(Component, ObjectID, IsInput, Buffer)

        MatchOutputID = Component.ComponentMetaData.OutputCollection("Match").ID
        NoMatchOutputID = Component.ComponentMetaData.OutputCollection("NoMatch").ID
    End Sub

    Public Overrides ReadOnly Property StaticInputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Sub DirectRowToMatch()
        MyBase.DirectRow(MatchOutputID)
    End Sub

    Public Sub DirectRowToNoMatch()
        MyBase.DirectRow(NoMatchOutputID)
    End Sub

    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[\my project\settings.designer.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA['------------------------------------------------------------------------------
' <autogenerated>
'     This code was generated by a tool.
'
'     Changes to this file may cause incorrect behavior and will be lost if
'     the code is regenerated.
' </autogenerated>
'------------------------------------------------------------------------------

Option Strict Off
Option Explicit On



Partial Friend NotInheritable Class MySettings
    Inherits System.Configuration.ApplicationSettingsBase

    Private Shared m_Value As MySettings

    Private Shared m_SyncObject As Object = New Object

    <System.Diagnostics.DebuggerNonUserCode()> _
    Public Shared ReadOnly Property Value() As MySettings
        Get
            If (MySettings.m_Value Is Nothing) Then
                System.Threading.Monitor.Enter(MySettings.m_SyncObject)
                If (MySettings.m_Value Is Nothing) Then
                    Try
                        MySettings.m_Value = New MySettings
                    Finally
                        System.Threading.Monitor.Exit(MySettings.m_SyncObject)
                    End Try
                End If
            End If
            Return MySettings.m_Value
        End Get
    End Property
End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\my project\resources.designer.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA['------------------------------------------------------------------------------
' <autogenerated>
'     This code was generated by a tool.
'
'     Changes to this file may cause incorrect behavior and will be lost if
'     the code is regenerated.
' </autogenerated>
'------------------------------------------------------------------------------

Option Strict Off
Option Explicit On


Namespace My.Resources
    
    '''<summary>
    '''   A strongly-typed resource class, for looking up localized strings, etc.
    '''</summary>
    'This class was auto-generated by the Strongly Typed Resource Builder
    'class via a tool like ResGen or Visual Studio.NET.
    'To add or remove a member, edit your .ResX file then rerun ResGen
    'with the /str option, or rebuild your VS project.
    Class MyResources
        
        Private Shared _resMgr As System.Resources.ResourceManager
        
        Private Shared _resCulture As System.Globalization.CultureInfo
        
        Friend Sub New()
            MyBase.New
        End Sub
        
        '''<summary>
        '''   Returns the cached ResourceManager instance used by this class.
        '''</summary>
        <System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)>  _
        Public Shared ReadOnly Property ResourceManager() As System.Resources.ResourceManager
            Get
                If (_resMgr Is Nothing) Then
                    Dim temp As System.Resources.ResourceManager = New System.Resources.ResourceManager("My.Resources.MyResources", GetType(MyResources).Assembly)
                    _resMgr = temp
                End If
                Return _resMgr
            End Get
        End Property
        
        '''<summary>
        '''   Overrides the current thread's CurrentUICulture property for all
        '''   resource lookups using this strongly typed resource class.
        '''</summary>
        <System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)>  _
        Public Shared Property Culture() As System.Globalization.CultureInfo
            Get
                Return _resCulture
            End Get
            Set
                _resCulture = value
            End Set
        End Property
    End Class
End Namespace
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\componentwrapper.vb]]></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 Buffer As PipelineBuffer)

        If InputID = MyBase.ComponentMetaData.InputCollection("Input").ID Then
            Input_ProcessInput(New InputBuffer(Me, InputID, True, Buffer))
        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[\my project\resources.resx]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<root>
  <!-- 
    Microsoft ResX Schema 
    
    Version 2.0
    
    The primary goals of this format is to allow a simple XML format 
    that is mostly human readable. The generation and parsing of the 
    various data types are done through the TypeConverter classes 
    associated with the data types.
    
    Example:
    
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
                
    There are any number of "resheader" rows that contain simple 
    name/value pairs.
    
    Each data row contains a name, and value. The row also contains a 
    type or mimetype. Type corresponds to a .NET class that support 
    text/value conversion through the TypeConverter architecture. 
    Classes that don't support this are serialized and stored with the 
    mimetype set.
    
    The mimetype is used for serialized objects, and tells the 
    ResXResourceReader how to depersist the object. This is currently not 
    extensible. For a given mimetype the value must be set accordingly:
    
    Note - application/x-microsoft.net.object.binary.base64 is the format 
    that the ResXResourceWriter will generate, however the reader can 
    read any of the formats listed below.
    
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with 
            : System.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array 
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
</root>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\main.vb]]></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.Text.RegularExpressions

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


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


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub Input_ProcessInputRow(ByVal Row As InputBuffer)
        Dim input As String = Row.Buffer(m_columnIndex).ToString()

        If m_regex.IsMatch(input) Then
            Call Row.DirectRowToMatch()
        Else
            Call Row.DirectRowToNoMatch()
        End If
    End Sub ' Input_ProcessInputRow


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

        ' Initialize regular expression object.
        Dim options As RegexOptions = RegexOptions.Compiled

        If Me.IgnoreCase Then
            options = options Or RegexOptions.IgnoreCase
        End If

        If Me.Multiline Then
            options = options Or RegexOptions.Multiline
        End If

        options = RegexOptions.Multiline

        m_regex = New Regex(Me.Pattern, options)

        ' Setup column index.
        Dim input As IDTSInput100 = Me.ComponentMetaData.InputCollection(0)
        m_columnIndex = Me.HostComponent.BufferManager.FindColumnByLineageID( _
            input.Buffer, _
            input.InputColumnCollection(0).LineageID)
    End Sub ' PreExecute


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

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

            If String.IsNullOrEmpty(Me.Pattern) Then
                Throw New ApplicationException("Specify regular expression.")
            End If

            ' Setup input columns based on selection.
            Dim input As IDTSInput100 = Me.ComponentMetaData.InputCollection(0)
            Dim virtInput As IDTSVirtualInput100 = input.GetVirtualInput()

            Call input.InputColumnCollection.RemoveAll()
            Dim virtColumn As IDTSVirtualInputColumn100 = virtInput.VirtualInputColumnCollection( _
                Me.Column)
            Call virtInput.SetUsageType(virtColumn.LineageID, DTSUsageType.UT_READONLY)

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

        Validate = result
    End Function    'Validate


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Select input column to use in regular expression filter.")> _
    <Category("Input")> _
    <InputVirtualColumn()> _
    Public Property Column() As String
        Get
            Column = m_column
        End Get
        Set(ByVal value As String)
            m_column = value
        End Set
    End Property    ' Column


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specify filter regular expression.")> _
    <Category("Regex")> _
    <RegularExpressionDialog()> _
    Public Property Pattern() As String
        Get
            Pattern = m_pattern
        End Get
        Set(ByVal value As String)
            m_pattern = value
        End Set
    End Property    ' Pattern


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specifies case-insensitive matching.")> _
    <Category("Regex")> _
    Public Property IgnoreCase() As Boolean
        Get
            IgnoreCase = m_ignoreCase
        End Get
        Set(ByVal value As Boolean)
            m_ignoreCase = value
        End Set
    End Property    ' IgnoreCase


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Multiline mode. Changes the meaning of ^ and $ so they match at the beginning and end, respectively, of any line, and not just the beginning and end of the entire string.")> _
    <Category("Regex")> _
    Public Property Multiline() As Boolean
        Get
            Multiline = m_multiline
        End Get
        Set(ByVal value As Boolean)
            m_multiline = value
        End Set
    End Property    ' Multiline
#End Region ' Properties


#Region "Attributes"
    Private m_column As String
    Private m_pattern As String
    Private m_ignoreCase As Boolean
    Private m_multiline As Boolean

    Private m_columnIndex As Integer
    Private m_regex As Regex
#End Region ' Attributes
End Class   ' ScriptMain
]]></arrayElement></arrayElements></property>
<property id="96" name="BinaryCode" dataType="System.String" state="cdata" isArray="true" description="Stores the binary representation of the component" typeConverter="NOTBROWSABLE" UITypeEditor="" containsID="false" expressionType="None"><arrayElements arrayElementCount="2"><arrayElement dataType="System.String"><![CDATA[\bin\scriptcomponent_fde66044b6af42b09a2faf6a1f41d053.vbproj.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAgAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v
ZGUuDQ0KJAAAAAAAAABQRQAATAEDAJ07rkwAAAAAAAAAAOAAAiELAQgAACoAAAAMAAAAAAAAbkkA
AAAgAAAAYAAAAABAAAAgAAAAAgAABAAAAAAAAAAEAAAAAAAAAACgAAAAAgAAAAAAAAIAQIUAABAA
ABAAAAAAEAAAEAAAAAAAABAAAAAAAAAAAAAAACBJAABLAAAAAGAAALgJAAAAAAAAAAAAAAAAAAAA
AAAAAIAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAIAAACAAAAAAAAAAAAAAACCAAAEgAAAAAAAAAAAAAAC50ZXh0AAAAdCkAAAAgAAAAKgAAAAIA
AAAAAAAAAAAAAAAAACAAAGAucnNyYwAAALgJAAAAYAAAAAoAAAAsAAAAAAAAAAAAAAAAAABAAABA
LnJlbG9jAAAMAAAAAIAAAAACAAAANgAAAAAAAAAAAAAAAAAAQAAAQgAAAAAAAAAAAAAAAAAAAABQ
SQAAAAAAAEgAAAACAAUA2CYAAEgiAAABAAAAAAAAAFAgAAC4AAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAALQAAADOyu++AQAAAJEAAABsU3lzdGVtLlJlc291cmNlcy5S
ZXNvdXJjZVJlYWRlciwgbXNjb3JsaWIsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFs
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5I1N5c3RlbS5SZXNvdXJjZXMuUnVudGlt
ZVJlc291cmNlU2V0AgAAAAAAAAAAAAAAUEFEUEFEULQAAAAeAigBAAAKKh4CKAQAAAoqpnMGAAAK
gAEAAARzBwAACoACAAAEcwgAAAqAAwAABHMJAAAKgAQAAAQqAAATMAEACwAAAAEAABF+AQAABG8K
AAAKKgATMAEACwAAAAIAABF+AgAABG8LAAAKKgATMAEACwAAAAMAABF+AwAABG8MAAAKKgATMAEA
CwAAAAQAABF+BAAABG8NAAAKKgATMAIADQAAAAUAABECAygRAAAKKBIAAAoqAAAAEzABAAcAAAAG
AAARAigTAAAKKgATMAEACwAAAAcAABHQBQAAAigUAAAKKgATMAEABwAAAAgAABECKBUAAAoqABMw
AQAQAAAACQAAEQKMAQAAGy0GKAEAACsqAioTMAIAEAAAAAoAABEDEgD+FQIAABsGgQIAABsqHgIo
FwAACioTMAIAKAAAAAsAABECexkAAApvGgAACgsHjAMAABstEigCAAArCwJ7GQAACgdvGwAACgcq
SgIoFwAACgJzHAAACn0ZAAAKKgATMAUATAAAAAAAAAACAwQFDgQoHgAACgIDbx8AAApvIAAACnIB
AABwbyEAAApvIgAACn0GAAAEAgNvHwAACm8gAAAKcg0AAHBvIQAACm8iAAAKfQcAAAQqEzABAAcA
AAAMAAARFo0eAAABKgA2AgJ7BgAABCgjAAAKKgAANgICewcAAAQoIwAACioAABMwAQAHAAAADQAA
ERaNHgAAASoAEzABAAkAAAAOAAARAigkAAAKCgYqAAAAEzABAAkAAAAPAAARAiglAAAKCgYqAAAA
fgIoJwAACgICcxwAAAZ9CAAABAICcx0AAAZ9CQAABCq2AwIoHwAACm8oAAAKch0AAHBvKQAACm8q
AAAKMw8CAgMXBHMRAAAGbxoAAAYqAABKKwcCA28bAAAGA28WAAAGLfEqAAYqAAA6AigXAAAKAgN9
CgAABCoAOgIoFwAACgIDfQsAAAQqAB4CKBgAAAYqEzACADQAAAAQAAARA28rAAAKAnsQAAAEbywA
AApvFQAACgoCexEAAAQGby0AAAosCANvEwAABisGA28UAAAGKhMwBQB+AAAAEQAAEQIoLgAACh4L
Am8mAAAGLAQHF2ALAm8oAAAGLAQHGGALGAsCAm8kAAAGB3MvAAAKfREAAAQCbx8AAApvKAAAChaM
JAAAAW8pAAAKCgICbzAAAApvMQAACgZvMgAACgZvMwAAChaMJAAAAW80AAAKbzUAAApvNgAACn0Q
AAAEKgAAGzADAJ4AAAASAAARAm8iAAAGKDcAAAosC3IpAABwczgAAAp6Am8kAAAGKDcAAAosC3JT
AABwczgAAAp6Am8fAAAKbygAAAoWjCQAAAFvKQAACgwIbzkAAAoTBAhvMwAACm86AAAKEQRvOwAA
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
ZQXpAA8AcCUAAAAABgh5BXEAEACIJQAAAAAGCIQF7wAQAJQlAAAAAAYIlQVxABEArCUAAAAABgih
Be8AEQC4JQAAAAAGCK0FwQASANAlAAAAAAYIvAX0ABIA3CUAAAAABgjLBcEAEwD0JQAAAAAGCNkF
9AATAAAmAAAAAAMYuQETABQACCYAAAAAFgjIBhMBFABEJgAAAAAWCNwGGAEUAFgmAAAAABYI6AYd
ARQAYCYAAAAAERj0ARcAFQB0JgAAAAAGGLkBEwAVAHwmAAAAABYIRAc0ARUAAAABALUCAAABAO4C
AAABAO4CAAABAEQEAAACAE4EAAADAFcEAAAEAF8EAAABABUFAAACAF8EAAABAF8EAAABAEYFAAAB
AEQEAAABAEQEAAABAEYFAAABAG4FAAABAI8FAAABAI8FAAABAI8FAAABAI8FAAABAPQGCQC5ARMA
eQC5AT4BiQC5AU0BEQC5ARMAkQC5ARMAJAC5ARMALAC5ARMANAC5ARMAPAC5ARMAJAALA4sALAAL
A4sANAALA4sAPAALA4sAmQC5ARMAoQC5ARMAqQC5Ae8AsQCkCOYBGQCuAmMAGQC3AmgAKQDFCPMB
GQDQAnEAwQDhCAMCGQC5ARMAyQC5ARMCRABUA5AATABEB4sATAALCZACTAC5ARMA0QC5AfQAOQC5
AbIAQQCuCaMC2QDcCagC4QD/Ca0C6QAICmgA+QAjCrgC+QC5BMEA+QDBBMEAAQG5AfQAUQC5ARMA
2QBaCr0CCQH/CcMCEQEICmgAOQB7CsoCSQD/Cc8CWQCGCtQCQQBaBRMAWQC5AdkCUQCzCuECKQHa
CucCEQF7CmgAEQEJC+0COQH/CfMCQQE2C2gAMQFEC/oC8QCSCwkDYQG5Ae8AEQG1Cw4DOQHFCxMA
UQHzCxQDaQH/CRoDSQE2C2gAUQEhDCEDeQE6DCkDWQFKDHEAeQFWDBcAgQG5ARMAiQG5Ae8AkQG5
AU8DmQG5ARMAoQG5Ae8AqQG5Ae8AsQG5ARMAKQBkDdoEYQC5AeAEcQC5ARMAwQGKDf0EwQGQDf0E
yQG5ARMA0QG5AbgC2QG5ARMA4QG5Ae8A6QG5Ae8A8QG5Ae8A+QG5Ae8AAQK5Ae8ACQK5Ae8AEQK5
Ae8AGQK5Ae8AKQCDALQBLgCzAskFLgCrAowFLgDDAowFLgCjAmwFLgCDAhAFLgC7Ap0CLgCLAi8F
LgB7AgcFLgCTAjwFLgDrAJ0CLgCbAp0CLgAzAWYFQAArAGsBQAATAEQBQwATAEQBQwAbAFMBSQCD
AKABYwATAEQBYwAbAFMBaQCDAMUBgAArAGsBgwAbAFMBgwB7AGsBgwBzAGsBiQCDANIBoAArAGsB
owATAEQBowDDABsCwAArAGsBwwATAEQBwwDrAJ0C4AArAGsB4wAzAZ0CAAErAGsBAAETAEQBAwEz
AZ0CCQEzArUDCQFDAmsBCQE7AsADIAErAGsBIAETAEQBKQE7Ao0DKQErAmsBKQEzAoIDQAErAGsB
QAETAEQBSQEzAoIDSQE7Av4DYAETAEQBYAErAGsBYwETAmsBYwEjAlUDYwEzAZ0CYwEbAkEDaQEz
AoIDaQE7AigEgAErAGsBiQETAPQEoAErAGsBqQETAPQEwAETAEQBwAErAGsByQFzAmsB4AErAGsB
AAIrAGsBAAITAEQBgAMzAZ0CoAMzAZ0CjAGRAZYBmwHrAe8B+gH/AQ4CDgKWArMCswLrAesB/wEA
AzAD/wH/AesB6wHoBO8EAgUEAAEABgAFAAcABgALAAgADAAMAA0ADgAAAN0BTwAAAJYCVAAAAEUC
WQAAAKICXgAAAF4DmAAAAM0ExQAAAOAExQAAAE4GAwEAAFUGAwEAAF0GBwEAAGgGBwEAAIMGIwEA
APoGKAEAAPQGOQECAAQAAwACAAUABQACAAYABwACAAcACQACAA8ACwACABIADQACABUADwACACIA
EQABACMAEQACACQAEwABACUAEwACACYAFQABACcAFQABACkAFwACACgAFwACACsAGQACACwAGwAB
AC0AGwACADAAHQB1AHUAiABwAXcBfgGFAX0ChAIEgAAAAQAAAAAAAAAAAAAAAAC8AAAAAgAAAAAA
AAAAAAAAAQAKAAAAAAAIAAAAAAAAAAAAAAAKABMAAAAAAAEAAAAAAAAAAAAAAJ0AagMAAAAACgAA
AAAAAAAAAAAAqQDGAwAAAAAKAAAAAAAAAAAAAACpABQEAAAAAAIAAAAAAAAAAAAAAAEA5gEAAAAA
CgAAAAAAAAAAAAAAqQBICQAAAAAAAAAAAQAAALINAAAFAAQABgAEAAAAEAAMAOwCAAAQABkA7AIA
AAAAGwDsAi0ACQItAIsCAAAAPE1vZHVsZT4AbXNjb3JsaWIATWljcm9zb2Z0LlZpc3VhbEJhc2lj
AE15QXBwbGljYXRpb24AU2NyaXB0Q29tcG9uZW50X2ZkZTY2MDQ0YjZhZjQyYjA5YTJmYWY2YTFm
NDFkMDUzLnZicHJvai5NeQBNeUNvbXB1dGVyAE15UHJvamVjdABNeVdlYlNlcnZpY2VzAFRocmVh
ZFNhZmVPYmplY3RQcm92aWRlcmAxAElucHV0QnVmZmVyAFNjcmlwdENvbXBvbmVudF9mZGU2NjA0
NGI2YWY0MmIwOWEyZmFmNmExZjQxZDA1My52YnByb2oAVXNlckNvbXBvbmVudABDb25uZWN0aW9u
cwBWYXJpYWJsZXMAU2NyaXB0TWFpbgBNeVJlc291cmNlcwBTY3JpcHRDb21wb25lbnRfZmRlNjYw
NDRiNmFmNDJiMDlhMmZhZjZhMWY0MWQwNTMudmJwcm9qLk15LlJlc291cmNlcwBNeVNldHRpbmdz
AE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5BcHBsaWNhdGlvblNlcnZpY2VzAEFwcGxpY2F0aW9uQmFz
ZQAuY3RvcgBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuRGV2aWNlcwBDb21wdXRlcgBTeXN0ZW0AT2Jq
ZWN0AC5jY3RvcgBnZXRfQ29tcHV0ZXIAbV9Db21wdXRlck9iamVjdFByb3ZpZGVyAGdldF9BcHBs
aWNhdGlvbgBtX0FwcE9iamVjdFByb3ZpZGVyAFVzZXIAZ2V0X1VzZXIAbV9Vc2VyT2JqZWN0UHJv
dmlkZXIAZ2V0X1dlYlNlcnZpY2VzAG1fTXlXZWJTZXJ2aWNlc09iamVjdFByb3ZpZGVyAEFwcGxp
Y2F0aW9uAFdlYlNlcnZpY2VzAEVxdWFscwBvAEdldEhhc2hDb2RlAFR5cGUAR2V0VHlwZQBUb1N0
cmluZwBDcmVhdGVfX0luc3RhbmNlX18AVABpbnN0YW5jZQBEaXNwb3NlX19JbnN0YW5jZV9fAGdl
dF9HZXRJbnN0YW5jZQBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuTXlTZXJ2aWNlcy5JbnRlcm5hbABD
b250ZXh0VmFsdWVgMQBtX0NvbnRleHQAR2V0SW5zdGFuY2UAQ296eVJvYy5TU0lTUGx1cy4yMDA4
AENvenlSb2MuU3FsU2VydmVyLlNTSVMAU2NyaXB0QnVmZmVyUGx1cwBNYXRjaE91dHB1dElEAE5v
TWF0Y2hPdXRwdXRJRABNaWNyb3NvZnQuU3FsU2VydmVyLlR4U2NyaXB0AE1pY3Jvc29mdC5TcWxT
ZXJ2ZXIuRHRzLlBpcGVsaW5lAFNjcmlwdENvbXBvbmVudABNaWNyb3NvZnQuU3FsU2VydmVyLlBp
cGVsaW5lSG9zdABQaXBlbGluZUJ1ZmZlcgBDb21wb25lbnQAT2JqZWN0SUQASXNJbnB1dABCdWZm
ZXIAZ2V0X1N0YXRpY0lucHV0Q29sdW1ucwBEaXJlY3RSb3dUb01hdGNoAERpcmVjdFJvd1RvTm9N
YXRjaABnZXRfU3RhdGljT3V0cHV0Q29sdW1ucwBOZXh0Um93AEVuZE9mUm93c2V0AFN0YXRpY0lu
cHV0Q29sdW1ucwBTdGF0aWNPdXRwdXRDb2x1bW5zAFNjcmlwdENvbXBvbmVudFBsdXMAUHJvY2Vz
c0lucHV0AElucHV0SUQASW5wdXRfUHJvY2Vzc0lucHV0AElucHV0X1Byb2Nlc3NJbnB1dFJvdwBS
b3cAUGFyZW50Q29tcG9uZW50AFByZUV4ZWN1dGUAVmFsaWRhdGUAZXJyTWVzc2FnZQBnZXRfQ29s
dW1uAHNldF9Db2x1bW4AdmFsdWUAZ2V0X1BhdHRlcm4Ac2V0X1BhdHRlcm4AZ2V0X0lnbm9yZUNh
c2UAc2V0X0lnbm9yZUNhc2UAZ2V0X011bHRpbGluZQBzZXRfTXVsdGlsaW5lAG1fY29sdW1uAG1f
cGF0dGVybgBtX2lnbm9yZUNhc2UAbV9tdWx0aWxpbmUAbV9jb2x1bW5JbmRleABTeXN0ZW0uVGV4
dC5SZWd1bGFyRXhwcmVzc2lvbnMAUmVnZXgAbV9yZWdleABDb2x1bW4AUGF0dGVybgBJZ25vcmVD
YXNlAE11bHRpbGluZQBTeXN0ZW0uUmVzb3VyY2VzAFJlc291cmNlTWFuYWdlcgBfcmVzTWdyAFN5
c3RlbS5HbG9iYWxpemF0aW9uAEN1bHR1cmVJbmZvAF9yZXNDdWx0dXJlAGdldF9SZXNvdXJjZU1h
bmFnZXIAZ2V0X0N1bHR1cmUAc2V0X0N1bHR1cmUAVmFsdWUAQ3VsdHVyZQBTeXN0ZW0uQ29uZmln
dXJhdGlvbgBBcHBsaWNhdGlvblNldHRpbmdzQmFzZQBtX1ZhbHVlAG1fU3luY09iamVjdABnZXRf
VmFsdWUAU3lzdGVtLkNvbXBvbmVudE1vZGVsAEVkaXRvckJyb3dzYWJsZUF0dHJpYnV0ZQBFZGl0
b3JCcm93c2FibGVTdGF0ZQBTeXN0ZW0uQ29kZURvbS5Db21waWxlcgBHZW5lcmF0ZWRDb2RlQXR0
cmlidXRlAFN5c3RlbS5EaWFnbm9zdGljcwBEZWJ1Z2dlckhpZGRlbkF0dHJpYnV0ZQBNaWNyb3Nv
ZnQuVmlzdWFsQmFzaWMuQ29tcGlsZXJTZXJ2aWNlcwBTdGFuZGFyZE1vZHVsZUF0dHJpYnV0ZQBI
aWRlTW9kdWxlTmFtZUF0dHJpYnV0ZQBTeXN0ZW0uQ29tcG9uZW50TW9kZWwuRGVzaWduAEhlbHBL
ZXl3b3JkQXR0cmlidXRlAFN5c3RlbS5SdW50aW1lLkNvbXBpbGVyU2VydmljZXMAUnVudGltZUhl
bHBlcnMAR2V0T2JqZWN0VmFsdWUAUnVudGltZVR5cGVIYW5kbGUAR2V0VHlwZUZyb21IYW5kbGUA
QWN0aXZhdG9yAENyZWF0ZUluc3RhbmNlAE15R3JvdXBDb2xsZWN0aW9uQXR0cmlidXRlAHNldF9W
YWx1ZQBTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMAQ29tVmlzaWJsZUF0dHJpYnV0ZQBN
aWNyb3NvZnQuU3FsU2VydmVyLkRUU1BpcGVsaW5lV3JhcABNaWNyb3NvZnQuU3FsU2VydmVyLkR0
cy5QaXBlbGluZS5XcmFwcGVyAElEVFNDb21wb25lbnRNZXRhRGF0YTEwMABnZXRfQ29tcG9uZW50
TWV0YURhdGEASURUU091dHB1dENvbGxlY3Rpb24xMDAAZ2V0X091dHB1dENvbGxlY3Rpb24ASURU
U091dHB1dDEwMABnZXRfSXRlbQBnZXRfSUQAU3RyaW5nAFNjcmlwdEJ1ZmZlcgBEaXJlY3RSb3cA
Q0xTQ29tcGxpYW50QXR0cmlidXRlAElEVFNJbnB1dENvbGxlY3Rpb24xMDAAZ2V0X0lucHV0Q29s
bGVjdGlvbgBJRFRTSW5wdXQxMDAAZ2V0X0J1ZmZlcgBJc01hdGNoAFJlZ2V4T3B0aW9ucwBJbnQz
MgBQaXBlbGluZUNvbXBvbmVudABnZXRfSG9zdENvbXBvbmVudABJRFRTQnVmZmVyTWFuYWdlcjEw
MABnZXRfQnVmZmVyTWFuYWdlcgBJRFRTSW5wdXRDb2x1bW5Db2xsZWN0aW9uMTAwAGdldF9JbnB1
dENvbHVtbkNvbGxlY3Rpb24ASURUU0lucHV0Q29sdW1uMTAwAGdldF9MaW5lYWdlSUQARmluZENv
bHVtbkJ5TGluZWFnZUlEAElEVFNWaXJ0dWFsSW5wdXRDb2x1bW4xMDAASURUU1ZpcnR1YWxJbnB1
dDEwMABFeGNlcHRpb24ASXNOdWxsT3JFbXB0eQBBcHBsaWNhdGlvbkV4Y2VwdGlvbgBHZXRWaXJ0
dWFsSW5wdXQAUmVtb3ZlQWxsAElEVFNWaXJ0dWFsSW5wdXRDb2x1bW5Db2xsZWN0aW9uMTAwAGdl
dF9WaXJ0dWFsSW5wdXRDb2x1bW5Db2xsZWN0aW9uAERUU1VzYWdlVHlwZQBTZXRVc2FnZVR5cGUA
UHJvamVjdERhdGEAU2V0UHJvamVjdEVycm9yAGdldF9NZXNzYWdlAENsZWFyUHJvamVjdEVycm9y
AFNTSVNTY3JpcHRDb21wb25lbnRFbnRyeVBvaW50QXR0cmlidXRlAENvenlSb2MuU3FsU2VydmVy
LlNTSVMuQXR0cmlidXRlcwBWYWxpZGF0ZVByb3BlcnRpZXNBdHRyaWJ1dGUAU29ydFByb3BlcnRp
ZXNBdHRyaWJ1dGUAUmVndWxhckV4cHJlc3Npb25EaWFsb2dBdHRyaWJ1dGUAQ2F0ZWdvcnlBdHRy
aWJ1dGUARGVzY3JpcHRpb25BdHRyaWJ1dGUASW5wdXRWaXJ0dWFsQ29sdW1uQXR0cmlidXRlAFN5
c3RlbS5SZWZsZWN0aW9uAEFzc2VtYmx5AGdldF9Bc3NlbWJseQBTeXN0ZW0uVGhyZWFkaW5nAE1v
bml0b3IARW50ZXIARXhpdABEZWJ1Z2dlck5vblVzZXJDb2RlQXR0cmlidXRlAFNjcmlwdENvbXBv
bmVudF9mZGU2NjA0NGI2YWY0MmIwOWEyZmFmNmExZjQxZDA1My52YnByb2ouUmVzb3VyY2VzLnJl
c291cmNlcwBDb21waWxhdGlvblJlbGF4YXRpb25zQXR0cmlidXRlAFJ1bnRpbWVDb21wYXRpYmls
aXR5QXR0cmlidXRlAEFzc2VtYmx5RmlsZVZlcnNpb25BdHRyaWJ1dGUAR3VpZEF0dHJpYnV0ZQBB
c3NlbWJseVRyYWRlbWFya0F0dHJpYnV0ZQBBc3NlbWJseUNvcHlyaWdodEF0dHJpYnV0ZQBBc3Nl
bWJseVByb2R1Y3RBdHRyaWJ1dGUAQXNzZW1ibHlDb21wYW55QXR0cmlidXRlAEFzc2VtYmx5RGVz
Y3JpcHRpb25BdHRyaWJ1dGUAQXNzZW1ibHlUaXRsZUF0dHJpYnV0ZQBTY3JpcHRDb21wb25lbnRf
ZmRlNjYwNDRiNmFmNDJiMDlhMmZhZjZhMWY0MWQwNTMudmJwcm9qLmRsbAAAAAtNAGEAdABjAGgA
AA9OAG8ATQBhAHQAYwBoAAALSQBuAHAAdQB0AAApUwBlAGwAZQBjAHQAIABpAG4AcAB1AHQAIABj
AG8AbAB1AG0AbgAuAAA3UwBwAGUAYwBpAGYAeQAgAHIAZQBnAHUAbABhAHIAIABlAHgAcAByAGUA
cwBzAGkAbwBuAC4AADFNAHkALgBSAGUAcwBvAHUAcgBjAGUAcwAuAE0AeQBSAGUAcwBvAHUAcgBj
AGUAcwAAAAAAJOFnnRQoREODj+t6F1sYvAAIt3pcVhk04IkIsD9ffxHVCjoDIAABAwAAAQQAABIM
BwYVEhgBEgwEAAASCAcGFRIYARIIBAAAEhEHBhUSGAESEQQAABIUBwYVEhgBEhQECAASDAQIABII
BAgAEhEECAASFAQgAQIcAyAACAQgABIVAyAADgIeAAcQAQEeAB4ABzABAQEQHgACEwAEIAATAAcG
FRIZARMABCgAEwAIFs9JC7gMNOoCBggIiYRdzYCAzJEJIAQBEiEIAhIlBCAAHQ4DIAACBCgAHQ4D
BhIkAwYSKAYgAgEIEiUFIAEBEhwDBhIhBSABARIhBSABAhAOBCABAQ4EIAEBAgIGDgIGAgMGEi0D
KAAOAygAAgMGEjEDBhI1BAAAEjEEAAASNQUAAQESNQQIABIxBAgAEjUDBhI0AgYcBAAAEjQECAAS
NAUgAQERQQgBAAEAAAAAAAUgAgEODhcBAApNeVRlbXBsYXRlBzguMC4wLjAAAAQBAAAABhUSGAES
DAYVEhgBEggGFRIYARIRBhUSGAESFAQHARIMBAcBEggEBwESEQQHARIUEwEADk15LkFwcGxpY2F0
aW9uAAAQAQALTXkuQ29tcHV0ZXIAAAwBAAdNeS5Vc2VyAAATAQAOTXkuV2ViU2VydmljZXMAAAQA
ARwcAwcBAgMHAQgGAAESFRFdBAcBEhUDBwEOBRABAB4ABAoBHgAEBwEeAAcgBAEODg4OYQEANFN5
c3RlbS5XZWIuU2VydmljZXMuUHJvdG9jb2xzLlNvYXBIdHRwQ2xpZW50UHJvdG9jb2wSQ3JlYXRl
X19JbnN0YW5jZV9fE0Rpc3Bvc2VfX0luc3RhbmNlX18AAAAGFRIYARMABhUSGQETAAQKARMABSAB
ARMABgcCEwATAAUBAAAAAAQgABJtBCAAEnEFIAESdRwEBwEdDgQgAQEIBSAAEoCFBiABEoCJHAQg
ABIlBCABHAgEIAECDgcgAgEOEYCNBSAAEoCVBSAAEoCZBSAAEoCdBiABEoChHAUgAggICAgHAhKA
iRGAjQQAAQIOBSAAEoCpBSAAEoC1BiABEoClHAcgAggIEYC5BgABARKArRAHBgICEoCJEoClEoCp
EoCtDQEACFZhbGlkYXRlAAAFIAEBHQ4sAQAEAAAABkNvbHVtbgdQYXR0ZXJuCklnbm9yZUNhc2UJ
TXVsdGlsaW5lAAAKAQAFUmVnZXgAACcBACJTcGVjaWZ5IGZpbHRlciByZWd1bGFyIGV4cHJlc3Np
b24uAAAKAQAFSW5wdXQAAD0BADhTZWxlY3QgaW5wdXQgY29sdW1uIHRvIHVzZSBpbiByZWd1bGFy
IGV4cHJlc3Npb24gZmlsdGVyLgAAKQEAJFNwZWNpZmllcyBjYXNlLWluc2Vuc2l0aXZlIG1hdGNo
aW5nLgAAgLABAICqTXVsdGlsaW5lIG1vZGUuIENoYW5nZXMgdGhlIG1lYW5pbmcgb2YgXiBhbmQg
JCBzbyB0aGV5IG1hdGNoIGF0IHRoZSBiZWdpbm5pbmcgYW5kIGVuZCwgcmVzcGVjdGl2ZWx5LCBv
ZiBhbnkgbGluZSwgYW5kIG5vdCBqdXN0IHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiB0aGUgZW50
aXJlIHN0cmluZy4AAAUgABKA3QcgAgEOEoDdBgcCEjESMQQHARI1CAEAAgAAAAAABAABARwEBwES
NAgBAAgAAAAAAB4BAAEAVAIWV3JhcE5vbkV4Y2VwdGlvblRocm93cwEMAQAHMS4wLjAuMAAAKQEA
JDU5ZjFiYjgxLTAyZTUtNDU5Zi1iOTdkLTk0YzhjYzg2NGViMwAABQEAAQAAHwEAGkNvcHlyaWdo
dCBAIE1pY3Jvc29mdCAyMDEwAAA8AQA3U2NyaXB0Q29tcG9uZW50X2ZkZTY2MDQ0YjZhZjQyYjA5
YTJmYWY2YTFmNDFkMDUzLnZicHJvagAADgEACU1pY3Jvc29mdAAASEkAAAAAAAAAAAAAXkkAAAAg
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBJAAAAAAAAAABfQ29yRGxsTWFpbgBtc2NvcmVlLmRsbAAA
AAAA/yUAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAwAAACgA
AIAOAAAASAAAgBAAAABgAACAAAAAAAAAAAAAAAAAAAACAAIAAAB4AACAAwAAAJAAAIAAAAAAAAAA
AAAAAAAAAAEAAH8AAKgAAIAAAAAAAAAAAAAAAAAAAAEAAQAAAMAAAIAAAAAAAAAAAAAAAAAAAAEA
AAAAANgAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAOgAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAPgAAAAA
AAAAAAAAAAAAAAAAAAEAAAAAAAgBAACAZQAA6AIAAAAAAAAAAAAAaGgAACgBAAAAAAAAAAAAAJBp
AAAiAAAAAAAAAAAAAAAYYQAAaAQAAAAAAAAAAAAAaAQ0AAAAVgBTAF8AVgBFAFIAUwBJAE8ATgBf
AEkATgBGAE8AAAAAAL0E7/4AAAEAAAABAAAAAAAAAAEAAAAAAD8AAAAAAAAABAAAAAIAAAAAAAAA
AAAAAAAAAABEAAAAAQBWAGEAcgBGAGkAbABlAEkAbgBmAG8AAAAAACQABAAAAFQAcgBhAG4AcwBs
AGEAdABpAG8AbgAAAAAAAACwBMgDAAABAFMAdAByAGkAbgBnAEYAaQBsAGUASQBuAGYAbwAAAKQD
AAABADAAMAAwADAAMAA0AGIAMAAAADQACgABAEMAbwBtAHAAYQBuAHkATgBhAG0AZQAAAAAATQBp
AGMAcgBvAHMAbwBmAHQAAACYADgAAQBGAGkAbABlAEQAZQBzAGMAcgBpAHAAdABpAG8AbgAAAAAA
UwBjAHIAaQBwAHQAQwBvAG0AcABvAG4AZQBuAHQAXwBmAGQAZQA2ADYAMAA0ADQAYgA2AGEAZgA0
ADIAYgAwADkAYQAyAGYAYQBmADYAYQAxAGYANAAxAGQAMAA1ADMALgB2AGIAcAByAG8AagAAADAA
CAABAEYAaQBsAGUAVgBlAHIAcwBpAG8AbgAAAAAAMQAuADAALgAwAC4AMAAAAJgAPAABAEkAbgB0
AGUAcgBuAGEAbABOAGEAbQBlAAAAUwBjAHIAaQBwAHQAQwBvAG0AcABvAG4AZQBuAHQAXwBmAGQA
ZQA2ADYAMAA0ADQAYgA2AGEAZgA0ADIAYgAwADkAYQAyAGYAYQBmADYAYQAxAGYANAAxAGQAMAA1
ADMALgB2AGIAcAByAG8AagAuAGQAbABsAAAAXAAbAAEATABlAGcAYQBsAEMAbwBwAHkAcgBpAGcA
aAB0AAAAQwBvAHAAeQByAGkAZwBoAHQAIABAACAATQBpAGMAcgBvAHMAbwBmAHQAIAAyADAAMQAw
AAAAAACgADwAAQBPAHIAaQBnAGkAbgBhAGwARgBpAGwAZQBuAGEAbQBlAAAAUwBjAHIAaQBwAHQA
QwBvAG0AcABvAG4AZQBuAHQAXwBmAGQAZQA2ADYAMAA0ADQAYgA2AGEAZgA0ADIAYgAwADkAYQAy
AGYAYQBmADYAYQAxAGYANAAxAGQAMAA1ADMALgB2AGIAcAByAG8AagAuAGQAbABsAAAAkAA4AAEA
UAByAG8AZAB1AGMAdABOAGEAbQBlAAAAAABTAGMAcgBpAHAAdABDAG8AbQBwAG8AbgBlAG4AdABf
AGYAZABlADYANgAwADQANABiADYAYQBmADQAMgBiADAAOQBhADIAZgBhAGYANgBhADEAZgA0ADEA
ZAAwADUAMwAuAHYAYgBwAHIAbwBqAAAANAAIAAEAUAByAG8AZAB1AGMAdABWAGUAcgBzAGkAbwBu
AAAAMQAuADAALgAwAC4AMAAAADgACAABAEEAcwBzAGUAbQBiAGwAeQAgAFYAZQByAHMAaQBvAG4A
AAAxAC4AMAAuADAALgAwAAAAKAAAACAAAABAAAAAAQAEAAAAAACAAgAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A
//8AAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAHd3d3d3d3d3d3d3d3d3cARERERERERERERERERERHAE////////////
//////RwBP/////////////////0cAT/////////////////9HAE//////////////////RwBP//
///////////////0cAT/////////////////9HAE//////////////////RwBP//////////////
///0cAT/////////////////9HAE//////////////////RwBP/////////////////0cAT/////
////////////9HAE//////////////////RwBP/////////////////0cAT/////////////////
9HAE//////////////////RwBP/////////////////0cAT/////////////////9HAEiIiIiIiI
iIiIiIiIiIRwBEREREREREREREREREREcARMTExMTExMTExOzs5JdHAEzMzMzMzMzMzMzMzMzMQA
AERERERERERERERERERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAP/////////////////////AAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAA
AAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAA
AYAAAAPAAAAH////////////////KAAAABAAAAAgAAAAAQAEAAAAAADAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/
AP8A//8AAP///wAAAAAAAAAAAAd3d3d3d3d3REREREREREdP///////4R0////////hHT///////
+EdP///////4R0////////hHT///////+EdP///////4R0////////hHSIiIiIiIiEdMzMzMzMzM
R8RERERERETAAAAAAAAAAAAAAAAAAAAAAP//AACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA//8AAP//AAAAAAEAAgAgIBAAAQAEAOgCAAACABAQEAAB
AAQAKAEAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAwAAABwOQAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=]]></arrayElement></arrayElements></property>
<property id="103" name="UserComponentTypeName" dataType="System.String" state="default" isArray="false" description="" typeConverter="" UITypeEditor="" containsID="false" expressionType="None">CozyRoc.SqlServer.SSIS.ScriptComponentHostPlus, CozyRoc.SSISPlus.2008, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea</property>
<property id="373" name="VSTAProjectName" dataType="System.String" state="default" isArray="false" description="Specifies the name of the Microsoft Visual Studio Tools for Applications project. Project names must be unique within a package." typeConverter="NOTBROWSABLE" UITypeEditor="" containsID="false" expressionType="None">ScriptComponent_fde66044b6af42b09a2faf6a1f41d053</property>
<property id="374" name="ScriptLanguage" dataType="System.String" state="default" isArray="false" description="Specifies the programming language used by the script." typeConverter="Microsoft.SqlServer.VSTAHosting.ScriptingLanguages, Microsoft.SqlServer.VSTAScriptingLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" UITypeEditor="" containsID="false" expressionType="None">VisualBasic</property></properties>
<inputs>
<input id="93" name="Input" description="" hasSideEffects="true" dangling="false" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed"><externalMetadataColumns isUsed="False" /></input>
</inputs>
<outputs>
<output id="94" name="Match" description="" exclusionGroup="1" synchronousInputId="93" deleteOutputOnPathDetached="false" hasSideEffects="false" dangling="false" isErrorOut="false" isSorted="false" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed"><externalMetadataColumns isUsed="False" /></output>
<output id="219" name="NoMatch" description="" exclusionGroup="1" synchronousInputId="93" deleteOutputOnPathDetached="false" hasSideEffects="false" dangling="false" isErrorOut="false" isSorted="false" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed"><externalMetadataColumns isUsed="False" /></output>
</outputs>
</component>