<component id="1" name="Script Component" 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="5" 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[\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\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_5611ff4080ed4d32bb643cb87bc9f810.vbproj")> 
<Assembly: AssemblyDescription("")> 
<Assembly: AssemblyCompany("Microsoft")> 
<Assembly: AssemblyProduct("ScriptComponent_5611ff4080ed4d32bb643cb87bc9f810.vbproj")> 
<Assembly: AssemblyCopyright("Copyright @ Microsoft 2016")> 
<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("fa309625-6df5-4e1f-ae06-a2871b1417d8")> 

' 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 OutputBuffer
    Inherits ScriptBufferPlus

    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)
    End Sub

    Public Overrides ReadOnly Property StaticInputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overloads Sub AddRow()
        MyBase.AddRow()
    End Sub

    Public Overloads Sub SetEndOfRowset()
        MyBase.SetEndOfRowset()
    End Sub

    Public Overloads Function EndOfRowset() As Boolean
        EndOfRowset = MyBase.EndOfRowset
    End Function

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 OutputBuffer As OutputBuffer

    Public Overridable Sub FinishOutputs()
    End Sub

    Private Sub MarkOutputsFinished()

        If OutputBuffer IsNot Nothing Then
            OutputBuffer.SetEndOfRowset
            OutputBuffer = Nothing
        End If

    End Sub

    Public Overrides Sub PrimeOutput(ByVal Outputs As Integer, ByVal OutputIDs() As Integer, ByVal Buffers() As PipelineBuffer)

        For I As Integer = 0 To Outputs - 1
            If OutputIDs(I) = MyBase.ComponentMetaData.OutputCollection("Output").ID Then
                OutputBuffer = New OutputBuffer(Me, OutputIDs(I), False, Buffers(I))
            End If
        Next

        CreateNewOutputRows()

        FinishOutputs()
        MarkOutputsFinished()

    End Sub

    Public Overridable Sub CreateNewOutputRows()
    End Sub

End Class

Public Class Connections

    Dim ParentComponent As ScriptComponent

    <CLSCompliant(False)> _
    Public Sub New(ByVal Component As ScriptComponent)
        ParentComponent = Component
    End Sub

    Public ReadOnly Property CrmConnection() As IDTSConnectionManager100
        Get
            Return ParentComponent.ComponentMetaData.RuntimeConnectionCollection("CrmConnection").ConnectionManager
        End Get
    End Property

End Class

Public Class Variables

    Dim ParentComponent As ScriptComponent

    <CLSCompliant(False)> _
    Public Sub New(ByVal Component As ScriptComponent)
        ParentComponent = Component
    End Sub

End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\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-2016 COZYROC LLC
' 
' Permission is hereby granted, free of charge, to any person
' obtaining a copy of this software and associated documentation
' files (the "Software"), to deal in the Software without
' restriction, including without limitation the rights to use,
' copy, modify, merge, publish, distribute, sublicense, and/or sell
' copies of the Software, and to permit persons to whom the
' Software is furnished to do so, subject to the following
' conditions:
' 
' The above copyright notice and this permission notice shall be
' included in all copies or substantial portions of the Software.
' 
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
' EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
' OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
' NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
' HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
' WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
' FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
' OTHER DEALINGS IN THE SOFTWARE.

Imports System
Imports System.ComponentModel
Imports System.Collections
Imports System.Collections.Generic

Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS
Imports CozyRoc.SqlServer.SSIS.Attributes
Imports CozyRoc.Dynamics.Crm
Imports CozyRoc.Dynamics.Crm2011.OrganizationService


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


    Public Const ListDelimiter As String = "," + vbLf


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub CreateNewOutputRows()
        Dim connection As IConnection = CType( _
            Me.Connections.CrmConnection.AcquireConnection(Nothing), _
            IConnection)

        Dim colsIdx As Hashtable = GetColumnsIdx_()

        Try
            Call connection.Connect()

            ' 0 - CRM Service
            Dim service As OrganizationServiceClient = CType( _
                connection.GetService(0), _
                OrganizationServiceClient)

            ' Setup request.
            Dim req As New OrganizationRequest()
            req.RequestName = "RetrieveEntityChanges"
            req("EntityName") = Me.Entity

            Dim cs As ColumnSet = New ColumnSet()
            cs.Columns = Me.Attributes.Split( _
                New String() {ListDelimiter}, _
                StringSplitOptions.None)
            req("Columns") = cs

            Dim pi As PagingInfo = New PagingInfo()
            pi.Count = Me.BatchSize
            pi.PageNumber = 1
            req("PageInfo") = pi

            req("DataVersion") = Convert.ToString(GetVariable_(Me.TokenVariable))

            While True
                Dim res As OrganizationResponse = service.Execute(req)
                Dim entityChanges As BusinessEntityChanges = CType( _
                    res("EntityChanges"), _
                    BusinessEntityChanges)

                ' Process entity changes.
                For Each change As Object In entityChanges.Changes
                    Call MyBase.OutputBuffer.AddRow()

                    Dim newUpdated As NewOrUpdatedItem = TryCast(change, NewOrUpdatedItem)
                    Dim deleted As RemovedOrDeletedItem = TryCast(change, RemovedOrDeletedItem)

                    If Not newUpdated Is Nothing Then
                        ' New or updated.
                        MyBase.OutputBuffer.Buffer(CType(colsIdx("_Type"), Integer)) = "updated"
                        MyBase.OutputBuffer.Buffer(CType(colsIdx("Id"), Integer)) = newUpdated.NewOrUpdatedEntity.Id

                        For Each pair As KeyValuePair(Of String, Object) In newUpdated.NewOrUpdatedEntity.Attributes
                            If Not colsIdx.Contains(pair.Key) Then
                                Continue For
                            End If

                            Try
                                MyBase.OutputBuffer.Buffer(CType(colsIdx(pair.Key), Integer)) = pair.Value
                            Catch ex As Exception
                                Call FireError_(String.Format( _
                                    "Failed to process column '{0}': {1}", _
                                    pair.Key, _
                                    pair.Value))
                            End Try
                        Next
                    ElseIf Not deleted Is Nothing Then
                        ' Deleted.
                        MyBase.OutputBuffer.Buffer(CType(colsIdx("_Type"), Integer)) = "deleted"
                        MyBase.OutputBuffer.Buffer(CType(colsIdx("Id"), Integer)) = deleted.RemovedItem.Id
                    End If
                Next

                If entityChanges.MoreRecords Then
                    ' Setup next PageInfo.
                    pi.PageNumber += 1
                    pi.PagingCookie = entityChanges.PagingCookie
                Else
                    ' Reached end. Store token and exit loop.
                    SetVariable_(Me.TokenVariable, entityChanges.DataToken)
                    Exit While
                End If
            End While

            Call MyBase.OutputBuffer.SetEndOfRowset()
        Catch ex As Exception
            Call FireError_(ex.Message)
        Finally
            Call connection.Close()
        End Try
    End Sub ' CreateNewOutputRows


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

        Try
            If String.IsNullOrEmpty(Me.CrmConnection) Then
                Throw New Exception("Select Dynamics CRM Connection.")
            End If

            If String.IsNullOrEmpty(Me.Entity) Then
                Throw New Exception("Select Dynamics CRM Entity.")
            End If

            If String.IsNullOrEmpty(Me.Attributes) Then
                Throw New Exception("Select attribute(s).")
            End If

            If String.IsNullOrEmpty(Me.TokenVariable) Then
                Throw New Exception("Select token variable.")
            End If

            Dim output As IDTSOutput100 = MyBase.ComponentMetaData.OutputCollection(0)
            If output.OutputColumnCollection.Count = 0 Then
                ' Setup output columns collection.
                Call SetupOutputColumns_()
            End If

            ' Store connection information in the runtime connection collection, too.
            ' Cannot directly use RuntimeConnectionCollection in the property get/set
            ' because of issues with multi-threading.
            Me.ComponentMetaData.RuntimeConnectionCollection("CrmConnection").ConnectionManagerID = Me.CrmConnection

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

        Validate = result
    End Function    ' Validate


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns list of entities in the currently selected Dynamics CRM connection.
    Public Function GetEntityList() As String()
        Dim result() As String

        Dim connection As IConnection = CType( _
            Me.DesignConnections(Me.CrmConnection).AcquireConnection(Nothing), _
            IConnection)
        Call connection.Connect()

        Try
            result = connection.GetEntityList(2)  ' 2 - Read
            Call Array.Sort(result)
        Finally
            Call connection.Close()
        End Try

        GetEntityList = result
    End Function    ' GetEntityList


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns list of attributes in the currently selected entity.
    Public Function GetAttributeList() As String()
        Dim result As ArrayList = New ArrayList()

        Dim attrList() As IAttribute = GetAttributes_()
        For Each attr As IAttribute In attrList
            Call result.Add(attr.Name)
        Next

        Call result.Sort()

        GetAttributeList = CType(result.ToArray(GetType(String)), String())
    End Function    ' GetAttributeList


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetAttributes_() As IAttribute()
        If Not m_entityAttributes Is Nothing Then
            Return m_entityAttributes
        End If

        ' Cache entity attributes.
        Dim connection As IConnection = CType( _
            Me.DesignConnections(Me.CrmConnection).AcquireConnection(Nothing), _
            IConnection)
        Call connection.Connect()

        Try
            Dim entity As IEntity = connection.GetEntity(Me.Entity)
            m_entityAttributes = entity.GetAttributes()
        Finally
            Call connection.Close()
        End Try

        GetAttributes_ = m_entityAttributes
    End Function    ' GetAttributes_


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Select Dynamics CRM Connection Manager.")> _
    <Connection("CrmConnectionType")> _
    Public Property CrmConnection() As String
        Get
            CrmConnection = m_crmConnection
        End Get
        Set(ByVal value As String)
            m_crmConnection = value
        End Set
    End Property    ' CrmConnection


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Select Dynamics CRM entity.")> _
    <List("GetEntityList")> _
    <RefreshProperties(RefreshProperties.All)> _
    Public Property Entity() As String
        Get
            Entity = m_entity
        End Get
        Set(ByVal value As String)
            If m_entity <> value Then
                If Not String.IsNullOrEmpty(m_entity) Then
                    ' Reset selected attributes.
                    Me.Attributes = String.Empty
                End If

                m_entity = value
            End If
        End Set
    End Property    ' Entity


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Select one or more attributes to retrieve.")> _
    <List("GetAttributeList", True, False)> _
    Public Property Attributes() As String
        Get
            Attributes = m_attributes
        End Get
        Set(ByVal value As String)
            If m_attributes <> value Then
                If Not String.IsNullOrEmpty(m_attributes) Then
                    ' Force output columns to be reloaded.
                    If Me.ComponentMetaData.OutputCollection.Count > 0 Then
                        Dim output As IDTSOutput100 = Me.ComponentMetaData.OutputCollection(0)
                        Call output.OutputColumnCollection.RemoveAll()
                    End If
                End If

                m_attributes = value
            End If
        End Set
    End Property    ' Attributes


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Specifies retrieve batch size.")> _
    <DefaultValue(5000)> _
    Public Property BatchSize() As Integer
        Get
            BatchSize = m_batchSize
        End Get
        Set(ByVal value As Integer)
            m_batchSize = value
        End Set
    End Property    ' BatchSize


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Select variable containing token.")> _
    <Variable()> _
    Public Property TokenVariable() As String
        Get
            TokenVariable = m_tokenVariable
        End Get
        Set(ByVal value As String)
            m_tokenVariable = value
        End Set
    End Property    ' TokenVariable
#End Region ' Properties


#Region "Internals"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private ReadOnly Property CrmConnectionType() As String()
        Get
            CrmConnectionType = New String() {"DYNAMICS-CRM"}
        End Get
    End Property    ' CrmConnectionType


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub FireError_(ByVal message As String)
        Dim cancel As Boolean = False
        Call MyBase.ComponentMetaData.FireError( _
            0, _
            "Dynamics CRM Entity Changes Source", _
            message, _
            String.Empty, _
            0, _
            cancel)
    End Sub ' FireError_


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

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

        GetVariable_ = result
    End Function    ' GetVariable_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub SetVariable_(ByVal varName As String, ByVal value As Object)
        Dim vars As IDTSVariables100 = Nothing

        Call Me.VariableDispenser.LockOneForWrite(varName, vars)
        Try
            vars(varName).Value = value
        Finally
            Call vars.Unlock()
        End Try
    End Sub ' SetVariable_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub SetupOutputColumns_()
        ' Get entity attributes.
        Dim entityAttrList() As IAttribute = GetAttributes_()

        Dim attrList() As String = Me.Attributes.Split( _
            New String() {ListDelimiter}, _
            StringSplitOptions.None)

        Dim output As IDTSOutput100 = Me.ComponentMetaData.OutputCollection(0)
        Dim column As IDTSOutputColumn100 = Nothing

        ' Setup entity change type column.
        column = output.OutputColumnCollection.[New]()
        column.Name = "_Type"
        Call column.SetDataTypeProperties(DataType.DT_WSTR, 10, 0, 0, 0)

        ' Setup entity identifier column.
        column = output.OutputColumnCollection.[New]()
        column.Name = "Id"
        Call column.SetDataTypeProperties(DataType.DT_GUID, 0, 0, 0, 0)

        For Each value As String In attrList
            ' Find CRM attribute.
            Dim attr As IAttribute = FindAttribute_(entityAttrList, value)

            ' Setup output column.
            column = output.OutputColumnCollection.[New]()
            column.Name = attr.Name
            Call column.SetDataTypeProperties( _
                CType(attr.AttributeType, DataType), _
                attr.Length, _
                attr.Precision, _
                attr.Scale, _
                0)
        Next
    End Sub ' SetupOutputColumns_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function FindAttribute_( _
        ByVal attrList() As IAttribute, _
        ByVal name As String) As IAttribute

        Dim result As IAttribute = Nothing

        For Each attr As IAttribute In attrList
            If attr.Name.Equals(name, StringComparison.OrdinalIgnoreCase) Then
                ' Found.
                result = attr
                Exit For
            End If
        Next

        If result Is Nothing Then
            Throw New Exception(String.Format("'{0}' attribute not found.", name))
        End If

        FindAttribute_ = result
    End Function    ' FindAttribute_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns columns index.
    Private Function GetColumnsIdx_() As Hashtable
        Dim result As Hashtable = New Hashtable()

        Dim output As IDTSOutput100 = MyBase.ComponentMetaData.OutputCollection(0)
        Dim colsCount As Integer = output.OutputColumnCollection.Count
        For colIndex As Integer = 0 To colsCount - 1
            Dim column As IDTSOutputColumn100 = output.OutputColumnCollection(colIndex)
            result(column.Name) = Me.HostComponent.BufferManager.FindColumnByLineageID( _
                output.Buffer, _
                column.LineageID)
        Next

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


#Region "Attributes"
    Private m_crmConnection As String
    Private m_entity As String
    Private m_entityAttributes() As IAttribute
    Private m_attributes As String
    Private m_batchSize As Integer
    Private m_tokenVariable As String
#End Region ' Attributes

End Class   ' ScriptMain
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\scriptcomponent_5611ff4080ed4d32bb643cb87bc9f810.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_5611ff4080ed4d32bb643cb87bc9f810.vbproj</RootNamespace>
    <AssemblyName>ScriptComponent_5611ff4080ed4d32bb643cb87bc9f810.vbproj</AssemblyName>
    <StartupObject>
    </StartupObject>
    <OptionExplicit>On</OptionExplicit>
    <OptionCompare>Binary</OptionCompare>
    <OptionStrict>Off</OptionStrict>
    <OptionInfer>On</OptionInfer>
    <ProjectGuid>{232E01AC-AC36-4929-A490-6B908FAAA383}</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.Dynamics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea, processorArchitecture=MSIL" />
    <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></arrayElements></property>
<property id="6" 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_5611ff4080ed4d32bb643cb87bc9f810.vbproj.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAgAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v
ZGUuDQ0KJAAAAAAAAABQRQAATAEDAHA0WFgAAAAAAAAAAOAAAiELAQgAAEAAAAAMAAAAAAAA/l4A
AAAgAAAAYAAAAABAAAAgAAAAAgAABAAAAAAAAAAEAAAAAAAAAACgAAAAAgAAAAAAAAIAQIUAABAA
ABAAAAAAEAAAEAAAAAAAABAAAAAAAAAAAAAAAKReAABXAAAAAGAAALgJAAAAAAAAAAAAAAAAAAAA
AAAAAIAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAIAAACAAAAAAAAAAAAAAACCAAAEgAAAAAAAAAAAAAAC50ZXh0AAAABD8AAAAgAAAAQAAAAAIA
AAAAAAAAAAAAAAAAACAAAGAucnNyYwAAALgJAAAAYAAAAAoAAABCAAAAAAAAAAAAAAAAAABAAABA
LnJlbG9jAAAMAAAAAIAAAAACAAAATAAAAAAAAAAAAAAAAAAAQAAAQgAAAAAAAAAAAAAAAAAAAADg
XgAAAAAAAEgAAAACAAUAjC4AABgwAAABAAAAAAAAAFAgAAC4AAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAALQAAADOyu++AQAAAJEAAABsU3lzdGVtLlJlc291cmNlcy5S
ZXNvdXJjZVJlYWRlciwgbXNjb3JsaWIsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFs
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5I1N5c3RlbS5SZXNvdXJjZXMuUnVudGlt
ZVJlc291cmNlU2V0AgAAAAAAAAAAAAAAUEFEUEFEULQAAAAeAigBAAAKKh4CKAQAAAoqpnMGAAAK
gAEAAARzBwAACoACAAAEcwgAAAqAAwAABHMJAAAKgAQAAAQqAAATMAEACwAAAAEAABF+AQAABG8K
AAAKKgATMAEACwAAAAIAABF+AgAABG8LAAAKKgATMAEACwAAAAMAABF+AwAABG8MAAAKKgATMAEA
CwAAAAQAABF+BAAABG8NAAAKKgATMAIADQAAAAUAABECAygRAAAKKBIAAAoqAAAAEzABAAcAAAAG
AAARAigTAAAKKgATMAEACwAAAAcAABHQBQAAAigUAAAKKgATMAEABwAAAAgAABECKBUAAAoqABMw
AQAQAAAACQAAEQKMAQAAGy0GKAEAACsqAioTMAIAEAAAAAoAABEDEgD+FQIAABsGgQIAABsqHgIo
FwAACioTMAIAKAAAAAsAABECexkAAApvGgAACgsHjAMAABstEigCAAArCwJ7GQAACgdvGwAACgcq
SgIoFwAACgJzHAAACn0ZAAAKKgAyAgMEBQ4EKB4AAAoqAAAAEzABAAcAAAAMAAARFo0dAAABKgAT
MAEABwAAAA0AABEWjR0AAAEqAB4CKB8AAAoqHgIoIAAACioTMAEACQAAAA4AABECKCEAAAoKBioA
AAB+AigjAAAKAgJzHAAABn0GAAAEAgJzHgAABn0HAAAEKgYqAABuAnsIAAAELBICewgAAARvFQAA
BgIUfQgAAAQqEzAGAFUAAAAPAAARFgMX2gsKKzYEBpQCKCQAAApvJQAACnIBAABwbyYAAApvJwAA
CjMTAgIEBpQWBQaacxEAAAZ9CAAABAYX1goGBzHGAm8bAAAGAm8YAAAGAm8ZAAAGKgAAAAYqAAA6
AigXAAAKAgN9CQAABCoAEzACACAAAAAQAAARAnsJAAAEbyQAAApvKAAACnIPAABwbykAAApvKgAA
Cio6AigXAAAKAgN9CgAABCoAHgIoFwAABiobMAUAKwMAABEAABECewYAAARvHQAABhRvKwAACnQl
AAABCwJvNQAABgoHbywAAAoHFm8tAAAKdCkAAAETBXMuAAAKEwQRBHIrAABwby8AAAoRBHJXAABw
Am8nAAAGbzAAAApzMQAACgwIAm8pAAAGF40dAAABEw4RDhZybQAAcKIRDhZvMgAACm8zAAAKEQRy
cwAAcAhvMAAACnM0AAAKDQkCbysAAAZvNQAACgkXbzYAAAoRBHKDAABwCW8wAAAKEQRylQAAcAIC
by0AAAZvMQAABigRAAAKKDcAAApvMAAAChEFEQRvOAAAChMHEQdyrQAAcG85AAAKdCoAAAETBhEG
bzoAAApvOwAAChMPOJEBAAASDyg8AAAKKBEAAAoTCAJ7CAAABG8UAAAGEQh1LQAAARMKEQh1LAAA
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
HgAFCdYIHgAyCRoJBgBcCUkJCgCbCXQJCgCzCRMAHgDoCcsJBgAdCv0JBgA7CucBBgBfCucBCgB4
ChMABgC8Cp0KBgDQCucBEgDXCsYDBgDkCucBIgBHCx4LIgB2Cx4LIgCjCx4LIgDBCx4LIgAEDB4L
DgAzDAYGJgB9DFAMJgCHDFAMJgCSDFAMJgCmDFAMJgDADFAMJgDWDFAMJgDrDFAMJgAADVAMBgAs
DRENBgA7DecBBgBFDRENwwBMDQAABgCVDecBBgDTDecBJgDjDVAMCgA0DnQJJgC+B1AMBgBhDucB
JgBtDlAMCgCSDnQJBgDQDucBJgDkDlAMBgBzD+cBIgB5Dx4LKgADAfMPKgApEPMPBgA7EOcBBgBG
ED0HDgBlEAYGCgCFEHQJGgC3EGQFGgDIEGQFGgAGEWQFIgAtER4LGgBOEWQFBgCiEecBFgCzEcYD
IgDXER4LEgAiEsYDDgBrEkkSDgCHEkkSHgCfEtYIHgC6EtYIDgDMEkkSHgDaEtYIHgDvEtYIHgAB
E9YIDgAXE0kSDgApE0kSBgBPEz0TBgB2E2UTBgCJE0kJBgDyE/0JBgASFP0JBgAwFD0TBgBNFJ0K
BgBbFD0TBgB2FD0TBgCRFD0TBgCqFD0TBgDDFD0TBgDgFD0TAAAAAAEAAAAAAAEAAQAAAAAAKQA3
AAUAAQABAAAAAAByADcACQABAAIAAAEQAH0ANwANAAEAAwAFAQAAhwAAAA0ABQAIAAUBAACVAAAA
DQAFAA8AAQAAALAAvQAdAAYAEQABAAAA9QC9ACkABgAXAAEAAAADAb0ADQAJABwAAQAAAA8BvQAN
AAoAHgABAAAAGQG9ACAACwAfAAAAAAAkATABDQASADYAAAEQAHUBvQBBABQAOgAxAAkCIAAxADIC
LQAxAFQCOgAxAHkCRwAhAFUDkAAGAAMBxwAGAA8BywAGALAAzwABADEF3QABADEF3QBWgMUF8QAB
AGkH8QABAHkH8QABAIIHKAEBAJUH8QABAKIHLQEBAK4H8QARABsIOAERAEQIPAERALcIWgERAL8I
XgEIIQAAAAAGGLoBEwABABAhAAAAAAYYugETAAEAGCEAAAAAERj1ARcAAQBEIQAAAAATCPwBGwAB
AFwhAAAAABMIIgIoAAEAdCEAAAAAEwhLAjUAAQCMIQAAAAATCGkCQgABAKQhAAAAAEYCrwJjAAEA
wCEAAAAARgK4AmgAAgDUIQAAAACDAMkCbAACAOwhAAAAAEYC0QJxAAIAACIAAAAAEQDaAngAAgAc
IgAAAAABAPgCgAADADgiAAAAAAYYugETAAQAQCIAAAAAAwgMA4sABAB0IgAAAAAGGLoBEwAEAIgi
AAAAAAYYugGvAAQAmCIAAAAARgpJBLkACACsIgAAAABGCmAEuQAIAMAiAAAAAIYAeAQTAAgAyCIA
AAAAhgB/BBMACADQIgAAAACGAI4EvgAIAOgiAAAAAAYYugETAAgACCMAAAAARgPVBBMACAAMIwAA
AAABAOMEEwAIACgjAAAAAEYC9wTTAAgAjCMAAAAARgMdBRMACwCQIwAAAAAGGLoB4QALAKAjAAAA
AAYIpQXnAAwAzCMAAAAABhi6AeEADADcIwAAAAAGGLoBEwANAOQjAAAAAEYCHQUTAA0AmCcAAAAA
BgDTBfkADQCAKAAAAAAGAOcFuQAOANwoAAAAAAYA9QW5AA4APCkAAAAAAQAmBv8ADgC4KQAAAAAG
CKUFcQAOANApAAAAAAYINQYFAQ4A3CkAAAAABghNBnEADwD0KQAAAAAGCFgGBQEPACgqAAAAAAYI
YwZxABAAQCoAAAAABghyBgUBEACoKgAAAAAGCIEGaAARAMAqAAAAAAYIjwYKAREAzCoAAAAABgid
BnEAEgDkKgAAAAAGCK8GBQESAPAqAAAAAAEIwQa5ABMAECsAAAAAAQDXBgUBEwA8KwAAAAABAOoG
DwEUAIwrAAAAAAEA/wYUARUA1CsAAAAAAQAMBxMAFwDQLAAAAAABACAHGgEXACAtAAAAAAEAWgcj
ARkAtC0AAAAAAxi6ARMAGQC8LQAAAAAWCFAIQAEZAPgtAAAAABYIZAhFARkADC4AAAAAFghwCEoB
GQAULgAAAAARGPUBFwAaACguAAAAAAYYugETABoAMC4AAAAAFgjMCGEBGgAAAAEAtgIAAAEA7wIA
AAEA7wIAAAEAJwQAAAIAMQQAAAMAOgQAAAQAQgQAAAEAAwUAAAIACwUAAAMAFQUAAAEAJwQAAAEA
JwQAAAEA3AUAAAEARwYAAAEARwYAAAEARwYAAAEARwYAAAEARwYAAAEA4gYAAAEA9wYAAAEA9wYA
AAIARwYAAAEALwcAAAIAOAcAAAEAfAgJALoBEwCJALoBawGZALoBegERALoBEwChALoBEwAkALoB
EwAsALoBEwA0ALoBEwA8ALoBEwAkAAwDiwAsAAwDiwA0AAwDiwA8AAwDiwCpALoBEwCxALoBEwC5
ALoBBQHBACwKEwIZAK8CYwAZALgCaAApAE0KIAIZANECcQDRAGkKMAIZALoBEwDZALoBQAJEAFUD
kABMAMwIiwBMAJMKvQJMALoBEwDhALoBygI5ALoBrwDxAHgEEwDxAH8EEwDxAI4EvgD5ALoBygJR
ALoBEwBBAGAL2gIBAY4L4AIJAbEL5gIRAboLaAABAeQL8gIZAbEL+AIhAR0M5wBZAFcNBAMpAWkN
EwApAXENCQNBAboBEwBBAXwNBQFBAYwNFAExAboBEwDpAKgNDgMxAa4NGAM5AboBEwA5AboNCgE5
AcQNCgGZAdECHgNJAdsNIwNZAbELDwFRAQMOLANUAA8OOQNcAB0OiwA5ACkOSgNpALELBAOpAUAO
TwNJAIwNVANpAUoOWgOxAWYOYAOxAWMGZgNkAA8OOQNsAB0OiwB0AIEOiwBpAIkOYwB0AMwIjgPJ
AZ4OkwPpAK4OmgPJAbUOFwBsAMcOvgDRAdwOEwBhAfQOoQPZAWYOYANcAMcOvgBRAQQPvgA5ARQP
aABRASMPcQA5ATQPBQFRAUUPcQB5AVMPcQApAV8PEwDpAGUP7AN5AboBBQERAZcP8QPpAbIPaAAh
AbwPBQFRABMQAgTxAbELCAT5AVcNBAMpAecFDwQBAkEQFQQJAroBEwBhAFAQcQAJAlkQKwQJAkEQ
EwAJAl0QMAQpAW0QTAQRAncQ/wAZAo8QXwTpAJ0Q8QAJAbIPaADpAaMQEwABAa0QcwRBAOEQfgQp
AvcQhAQhArELjQQxAswIlAQhAhYREwApAh0RhAQxApMKoATpAUERqwQ5AkURBQE5AlcRsQRhAG0R
aABhAH8RaABhAIoRaABhAJgRaADpAK8C0gTpAK4O2gRpALoBEwDpAbEL7QQ5AlAQcQBRAMUR9ARR
AuwR+gQRASkOaAA5Av4RaABZAgwSAAVpAIwNBgVhAroBEwBpAroBBQFxAroBGAN5AroBawWJAroB
BQGRAroBBQGZAroBBQGhAroBCgGpAroBEwCJAroBCAaxAroBBQEpAFgTmwZxALoBoQaBALoBEwDB
An4TvgbBAoQTvgbJAroBEwDRAroBCgHZAroBEwDhAroBBQHpAroBBQHxAroBBQH5AroBBQEBA7oB
BQEJA7oBBQERA7oBBQEZA7oBBQEOACwA9AApAIMAzQEuAOsELQcuAMMEyAYuAOMEzwIuAPsEigcu
AAMFzwIuAAsFTQcuAPMETQcuAMsE0QYuANME8AYuANsE/QYuAOsAzwIuABMBJwdAABMAcQFAACsA
mAFDABMAcQFDABsAgAFJAIMA/wFjABMAcQFjABsAgAFpAIMA3gGAACsAmAGDAHMAmAGDABsAgAGD
AHsAmAGJAIMA6wGgACsAmAGjAMMASAKjABMAcQHAACsAmAHDABMAcQHDAOsAzwLgACsAmAHjABMB
zwIAARMAcQEAASsAmAEDARMBzwIgASsAmAEgARMAcQEpAYsEVwYpAWMEbgYpAWsEpgVAASsAmAFA
ARMAcQFJAWsEpgVJAVMEcQFJAVsEcgVJAWMEhQVgARMAcQFgASsAmAFjATsEmAFjAUsEKgVjARMB
zwJjAUMEHAVpAWMEJwZpAYMEDwZpAWsEpgWAASsAmAGJAXMEtAWJAWsEpgWJAWMEvQWgASsAmAGp
AXsEmAGpAWME4QWpAWsEpgXAARMAcQHAASsAmAHgASsAmAHpARMAtQYAAhMAcQEAAisAmAEJAhMA
tQYpArsEmAGAAxMBzwLAAxMBzwK5Ab4BwwHIARgCHAInAiwCOwI7AsMC1QLVAhgC7QL/AqcD9wMh
BDsEUwQsAiwCLAJmBBwCLAJsBBgCmASlBLwE4AQMBakGsAbDBgQAAQAGAAUABwAGAAkACAALAAkA
DAAPAA0AEQAAAN4BTwAAAJcCVAAAAEYCWQAAAKMCXgAAAF8DmAAAAJoEwgAAAK0EwgAAALcF7AAA
ALcFMAEAAL4HMAEAAMUHMAEAANAHNAEAANoHMAEAAOgHwgAAAAsIUAEAAIIIVQEAAHwIZgECAAQA
AwACAAUABQACAAYABwACAAcACQACAA8ACwACABIADQACABMADwACAB0AEQACACUAEwABACYAEwAB
ACgAFQACACcAFQABACoAFwACACkAFwACACsAGQABACwAGQACAC0AGwABAC4AGwACAC8AHQACADcA
HwACADgAIQABADkAIQACADwAIwB1AHUAiACdAaQBqwGyAaoCsQIyA0MDbAN5A4YDOAQEgAAAAQAA
AAAAAAAAAAAAAAC9AAAAAgAAAAAAAAAAAAAAAQAKAAAAAAAIAAAAAAAAAAAAAAAKABMAAAAAAAEA
AAAAAAAAAAAAAJ0AawMAAAAACgAAAAAAAAAAAAAApgCpAwAAAAAKAAAAAAAAAAAAAACmAPcDAAAA
AAoAAAAAAAAAAAAAAKYAQQUAAAAAAgAAAAAAAAAAAAAAAQDnAQAAAAAKAAAAAAAAAAAAAACmAPoK
AAAAAAEAAAAAAAAAAAAAAJ0APwwAAAAACgAAAAAAAAAAAAAApgDUDwAAAAAAAAAAAQAAAKYTAAAF
AAQABgAEAAAAEAAMAO0CAAAQABkA7QIAAAAAGwDtAi0ANgItALgCwwAdBAAAADxNb2R1bGU+AG1z
Y29ybGliAE1pY3Jvc29mdC5WaXN1YWxCYXNpYwBNeUFwcGxpY2F0aW9uAFNjcmlwdENvbXBvbmVu
dF81NjExZmY0MDgwZWQ0ZDMyYmI2NDNjYjg3YmM5ZjgxMC52YnByb2ouTXkATXlDb21wdXRlcgBN
eVByb2plY3QATXlXZWJTZXJ2aWNlcwBUaHJlYWRTYWZlT2JqZWN0UHJvdmlkZXJgMQBPdXRwdXRC
dWZmZXIAU2NyaXB0Q29tcG9uZW50XzU2MTFmZjQwODBlZDRkMzJiYjY0M2NiODdiYzlmODEwLnZi
cHJvagBVc2VyQ29tcG9uZW50AENvbm5lY3Rpb25zAFZhcmlhYmxlcwBTY3JpcHRNYWluAE15UmVz
b3VyY2VzAFNjcmlwdENvbXBvbmVudF81NjExZmY0MDgwZWQ0ZDMyYmI2NDNjYjg3YmM5ZjgxMC52
YnByb2ouTXkuUmVzb3VyY2VzAE15U2V0dGluZ3MATWljcm9zb2Z0LlZpc3VhbEJhc2ljLkFwcGxp
Y2F0aW9uU2VydmljZXMAQXBwbGljYXRpb25CYXNlAC5jdG9yAE1pY3Jvc29mdC5WaXN1YWxCYXNp
Yy5EZXZpY2VzAENvbXB1dGVyAFN5c3RlbQBPYmplY3QALmNjdG9yAGdldF9Db21wdXRlcgBtX0Nv
bXB1dGVyT2JqZWN0UHJvdmlkZXIAZ2V0X0FwcGxpY2F0aW9uAG1fQXBwT2JqZWN0UHJvdmlkZXIA
VXNlcgBnZXRfVXNlcgBtX1VzZXJPYmplY3RQcm92aWRlcgBnZXRfV2ViU2VydmljZXMAbV9NeVdl
YlNlcnZpY2VzT2JqZWN0UHJvdmlkZXIAQXBwbGljYXRpb24AV2ViU2VydmljZXMARXF1YWxzAG8A
R2V0SGFzaENvZGUAVHlwZQBHZXRUeXBlAFRvU3RyaW5nAENyZWF0ZV9fSW5zdGFuY2VfXwBUAGlu
c3RhbmNlAERpc3Bvc2VfX0luc3RhbmNlX18AZ2V0X0dldEluc3RhbmNlAE1pY3Jvc29mdC5WaXN1
YWxCYXNpYy5NeVNlcnZpY2VzLkludGVybmFsAENvbnRleHRWYWx1ZWAxAG1fQ29udGV4dABHZXRJ
bnN0YW5jZQBDb3p5Um9jLlNTSVNQbHVzLjIwMDgAQ296eVJvYy5TcWxTZXJ2ZXIuU1NJUwBTY3Jp
cHRCdWZmZXJQbHVzAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuVHhTY3JpcHQATWljcm9zb2Z0LlNxbFNl
cnZlci5EdHMuUGlwZWxpbmUAU2NyaXB0Q29tcG9uZW50AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuUGlw
ZWxpbmVIb3N0AFBpcGVsaW5lQnVmZmVyAENvbXBvbmVudABPYmplY3RJRABJc0lucHV0AEJ1ZmZl
cgBnZXRfU3RhdGljSW5wdXRDb2x1bW5zAGdldF9TdGF0aWNPdXRwdXRDb2x1bW5zAEFkZFJvdwBT
ZXRFbmRPZlJvd3NldABFbmRPZlJvd3NldABTdGF0aWNJbnB1dENvbHVtbnMAU3RhdGljT3V0cHV0
Q29sdW1ucwBTY3JpcHRDb21wb25lbnRQbHVzAEZpbmlzaE91dHB1dHMATWFya091dHB1dHNGaW5p
c2hlZABQcmltZU91dHB1dABPdXRwdXRzAE91dHB1dElEcwBCdWZmZXJzAENyZWF0ZU5ld091dHB1
dFJvd3MAUGFyZW50Q29tcG9uZW50AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRFRTUnVudGltZVdyYXAA
TWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUnVudGltZS5XcmFwcGVyAElEVFNDb25uZWN0aW9uTWFu
YWdlcjEwMABnZXRfQ3JtQ29ubmVjdGlvbgBDcm1Db25uZWN0aW9uAExpc3REZWxpbWl0ZXIAVmFs
aWRhdGUAZXJyTWVzc2FnZQBHZXRFbnRpdHlMaXN0AEdldEF0dHJpYnV0ZUxpc3QAQ296eVJvYy5E
eW5hbWljcy5Dcm0ASUF0dHJpYnV0ZQBHZXRBdHRyaWJ1dGVzXwBzZXRfQ3JtQ29ubmVjdGlvbgB2
YWx1ZQBnZXRfRW50aXR5AHNldF9FbnRpdHkAZ2V0X0F0dHJpYnV0ZXMAc2V0X0F0dHJpYnV0ZXMA
Z2V0X0JhdGNoU2l6ZQBzZXRfQmF0Y2hTaXplAGdldF9Ub2tlblZhcmlhYmxlAHNldF9Ub2tlblZh
cmlhYmxlAGdldF9Dcm1Db25uZWN0aW9uVHlwZQBGaXJlRXJyb3JfAG1lc3NhZ2UAR2V0VmFyaWFi
bGVfAHZhck5hbWUAU2V0VmFyaWFibGVfAFNldHVwT3V0cHV0Q29sdW1uc18ARmluZEF0dHJpYnV0
ZV8AYXR0ckxpc3QAbmFtZQBTeXN0ZW0uQ29sbGVjdGlvbnMASGFzaHRhYmxlAEdldENvbHVtbnNJ
ZHhfAG1fY3JtQ29ubmVjdGlvbgBtX2VudGl0eQBtX2VudGl0eUF0dHJpYnV0ZXMAbV9hdHRyaWJ1
dGVzAG1fYmF0Y2hTaXplAG1fdG9rZW5WYXJpYWJsZQBFbnRpdHkAQXR0cmlidXRlcwBCYXRjaFNp
emUAVG9rZW5WYXJpYWJsZQBDcm1Db25uZWN0aW9uVHlwZQBTeXN0ZW0uUmVzb3VyY2VzAFJlc291
cmNlTWFuYWdlcgBfcmVzTWdyAFN5c3RlbS5HbG9iYWxpemF0aW9uAEN1bHR1cmVJbmZvAF9yZXND
dWx0dXJlAGdldF9SZXNvdXJjZU1hbmFnZXIAZ2V0X0N1bHR1cmUAc2V0X0N1bHR1cmUAVmFsdWUA
Q3VsdHVyZQBTeXN0ZW0uQ29uZmlndXJhdGlvbgBBcHBsaWNhdGlvblNldHRpbmdzQmFzZQBtX1Zh
bHVlAG1fU3luY09iamVjdABnZXRfVmFsdWUAU3lzdGVtLkNvbXBvbmVudE1vZGVsAEVkaXRvckJy
b3dzYWJsZUF0dHJpYnV0ZQBFZGl0b3JCcm93c2FibGVTdGF0ZQBTeXN0ZW0uQ29kZURvbS5Db21w
aWxlcgBHZW5lcmF0ZWRDb2RlQXR0cmlidXRlAFN5c3RlbS5EaWFnbm9zdGljcwBEZWJ1Z2dlckhp
ZGRlbkF0dHJpYnV0ZQBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuQ29tcGlsZXJTZXJ2aWNlcwBTdGFu
ZGFyZE1vZHVsZUF0dHJpYnV0ZQBIaWRlTW9kdWxlTmFtZUF0dHJpYnV0ZQBTeXN0ZW0uQ29tcG9u
ZW50TW9kZWwuRGVzaWduAEhlbHBLZXl3b3JkQXR0cmlidXRlAFN5c3RlbS5SdW50aW1lLkNvbXBp
bGVyU2VydmljZXMAUnVudGltZUhlbHBlcnMAR2V0T2JqZWN0VmFsdWUAUnVudGltZVR5cGVIYW5k
bGUAR2V0VHlwZUZyb21IYW5kbGUAQWN0aXZhdG9yAENyZWF0ZUluc3RhbmNlAE15R3JvdXBDb2xs
ZWN0aW9uQXR0cmlidXRlAHNldF9WYWx1ZQBTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMA
Q29tVmlzaWJsZUF0dHJpYnV0ZQBTdHJpbmcAU2NyaXB0QnVmZmVyAENMU0NvbXBsaWFudEF0dHJp
YnV0ZQBNaWNyb3NvZnQuU3FsU2VydmVyLkRUU1BpcGVsaW5lV3JhcABNaWNyb3NvZnQuU3FsU2Vy
dmVyLkR0cy5QaXBlbGluZS5XcmFwcGVyAElEVFNDb21wb25lbnRNZXRhRGF0YTEwMABnZXRfQ29t
cG9uZW50TWV0YURhdGEASURUU091dHB1dENvbGxlY3Rpb24xMDAAZ2V0X091dHB1dENvbGxlY3Rp
b24ASURUU091dHB1dDEwMABnZXRfSXRlbQBnZXRfSUQASURUU1J1bnRpbWVDb25uZWN0aW9uQ29s
bGVjdGlvbjEwMABnZXRfUnVudGltZUNvbm5lY3Rpb25Db2xsZWN0aW9uAElEVFNSdW50aW1lQ29u
bmVjdGlvbjEwMABnZXRfQ29ubmVjdGlvbk1hbmFnZXIASUNvbm5lY3Rpb24AQ296eVJvYy5EeW5h
bWljcwBDb3p5Um9jLkR5bmFtaWNzLkNybTIwMTEuT3JnYW5pemF0aW9uU2VydmljZQBDb2x1bW5T
ZXQAUGFnaW5nSW5mbwBPcmdhbml6YXRpb25SZXF1ZXN0AE9yZ2FuaXphdGlvblNlcnZpY2VDbGll
bnQAQnVzaW5lc3NFbnRpdHlDaGFuZ2VzAE9yZ2FuaXphdGlvblJlc3BvbnNlAFJlbW92ZWRPckRl
bGV0ZWRJdGVtAE5ld09yVXBkYXRlZEl0ZW0AU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMAS2V5
VmFsdWVQYWlyYDIARXhjZXB0aW9uAExpc3RgMQBFbnVtZXJhdG9yAEFjcXVpcmVDb25uZWN0aW9u
AENvbm5lY3QAR2V0U2VydmljZQBzZXRfUmVxdWVzdE5hbWUAc2V0X0l0ZW0AU3RyaW5nU3BsaXRP
cHRpb25zAFNwbGl0AHNldF9Db2x1bW5zAHNldF9Db3VudABzZXRfUGFnZU51bWJlcgBDb252ZXJ0
AEV4ZWN1dGUAQnVzaW5lc3NFbnRpdHlDaGFuZ2VzQ29sbGVjdGlvbgBnZXRfQ2hhbmdlcwBHZXRF
bnVtZXJhdG9yAGdldF9DdXJyZW50AGdldF9CdWZmZXIAQ29udmVyc2lvbnMAVG9JbnRlZ2VyAGdl
dF9OZXdPclVwZGF0ZWRFbnRpdHkAR3VpZABnZXRfSWQAQXR0cmlidXRlQ29sbGVjdGlvbgBnZXRf
S2V5AENvbnRhaW5zAFByb2plY3REYXRhAFNldFByb2plY3RFcnJvcgBGb3JtYXQAQ2xlYXJQcm9q
ZWN0RXJyb3IATW92ZU5leHQASURpc3Bvc2FibGUARGlzcG9zZQBFbnRpdHlSZWZlcmVuY2UAZ2V0
X1JlbW92ZWRJdGVtAGdldF9Nb3JlUmVjb3JkcwBnZXRfUGFnZU51bWJlcgBnZXRfUGFnaW5nQ29v
a2llAHNldF9QYWdpbmdDb29raWUAZ2V0X0RhdGFUb2tlbgBnZXRfTWVzc2FnZQBDbG9zZQBJc051
bGxPckVtcHR5AEludDMyAElEVFNPdXRwdXRDb2x1bW5Db2xsZWN0aW9uMTAwAGdldF9PdXRwdXRD
b2x1bW5Db2xsZWN0aW9uAGdldF9Db3VudABzZXRfQ29ubmVjdGlvbk1hbmFnZXJJRABNaWNyb3Nv
ZnQuU3FsU2VydmVyLk1hbmFnZWREVFMATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUnVudGltZQBn
ZXRfRGVzaWduQ29ubmVjdGlvbnMAQ29ubmVjdGlvbk1hbmFnZXIAQXJyYXkAU29ydABBcnJheUxp
c3QAZ2V0X05hbWUAQWRkAFRvQXJyYXkASUVudGl0eQBHZXRFbnRpdHkAR2V0QXR0cmlidXRlcwBP
cGVyYXRvcnMAQ29tcGFyZVN0cmluZwBFbXB0eQBSZW1vdmVBbGwARmlyZUVycm9yAElEVFNWYXJp
YWJsZXMxMDAASURUU1ZhcmlhYmxlRGlzcGVuc2VyMTAwAGdldF9WYXJpYWJsZURpc3BlbnNlcgBM
b2NrT25lRm9yUmVhZABJRFRTVmFyaWFibGUxMDAAVW5sb2NrAExvY2tPbmVGb3JXcml0ZQBJRFRT
T3V0cHV0Q29sdW1uMTAwAE5ldwBzZXRfTmFtZQBEYXRhVHlwZQBTZXREYXRhVHlwZVByb3BlcnRp
ZXMAZ2V0X0F0dHJpYnV0ZVR5cGUAZ2V0X0xlbmd0aABnZXRfUHJlY2lzaW9uAGdldF9TY2FsZQBT
dHJpbmdDb21wYXJpc29uAFBpcGVsaW5lQ29tcG9uZW50AGdldF9Ib3N0Q29tcG9uZW50AElEVFNC
dWZmZXJNYW5hZ2VyMTAwAGdldF9CdWZmZXJNYW5hZ2VyAGdldF9MaW5lYWdlSUQARmluZENvbHVt
bkJ5TGluZWFnZUlEAFNTSVNTY3JpcHRDb21wb25lbnRFbnRyeVBvaW50QXR0cmlidXRlAENvenlS
b2MuU3FsU2VydmVyLlNTSVMuQXR0cmlidXRlcwBWYWxpZGF0ZVByb3BlcnRpZXNBdHRyaWJ1dGUA
U29ydFByb3BlcnRpZXNBdHRyaWJ1dGUAUmVmcmVzaFByb3BlcnRpZXNBdHRyaWJ1dGUAUmVmcmVz
aFByb3BlcnRpZXMATGlzdEF0dHJpYnV0ZQBEZXNjcmlwdGlvbkF0dHJpYnV0ZQBDYXRlZ29yeUF0
dHJpYnV0ZQBEZWZhdWx0VmFsdWVBdHRyaWJ1dGUAVmFyaWFibGVBdHRyaWJ1dGUAQ29ubmVjdGlv
bkF0dHJpYnV0ZQBTeXN0ZW0uUmVmbGVjdGlvbgBBc3NlbWJseQBnZXRfQXNzZW1ibHkAU3lzdGVt
LlRocmVhZGluZwBNb25pdG9yAEVudGVyAEV4aXQARGVidWdnZXJOb25Vc2VyQ29kZUF0dHJpYnV0
ZQBTY3JpcHRDb21wb25lbnRfNTYxMWZmNDA4MGVkNGQzMmJiNjQzY2I4N2JjOWY4MTAudmJwcm9q
LlJlc291cmNlcy5yZXNvdXJjZXMAQ29tcGlsYXRpb25SZWxheGF0aW9uc0F0dHJpYnV0ZQBSdW50
aW1lQ29tcGF0aWJpbGl0eUF0dHJpYnV0ZQBBc3NlbWJseUZpbGVWZXJzaW9uQXR0cmlidXRlAEd1
aWRBdHRyaWJ1dGUAQXNzZW1ibHlUcmFkZW1hcmtBdHRyaWJ1dGUAQXNzZW1ibHlDb3B5cmlnaHRB
dHRyaWJ1dGUAQXNzZW1ibHlQcm9kdWN0QXR0cmlidXRlAEFzc2VtYmx5Q29tcGFueUF0dHJpYnV0
ZQBBc3NlbWJseURlc2NyaXB0aW9uQXR0cmlidXRlAEFzc2VtYmx5VGl0bGVBdHRyaWJ1dGUAU2Ny
aXB0Q29tcG9uZW50XzU2MTFmZjQwODBlZDRkMzJiYjY0M2NiODdiYzlmODEwLnZicHJvai5kbGwA
AAANTwB1AHQAcAB1AHQAABtDAHIAbQBDAG8AbgBuAGUAYwB0AGkAbwBuAAArUgBlAHQAcgBpAGUA
dgBlAEUAbgB0AGkAdAB5AEMAaABhAG4AZwBlAHMAABVFAG4AdABpAHQAeQBOAGEAbQBlAAAFLAAK
AAAPQwBvAGwAdQBtAG4AcwAAEVAAYQBnAGUASQBuAGYAbwAAF0QAYQB0AGEAVgBlAHIAcwBpAG8A
bgAAG0UAbgB0AGkAdAB5AEMAaABhAG4AZwBlAHMAAAtfAFQAeQBwAGUAAA91AHAAZABhAHQAZQBk
AAAFSQBkAABHRgBhAGkAbABlAGQAIAB0AG8AIABwAHIAbwBjAGUAcwBzACAAYwBvAGwAdQBtAG4A
IAAnAHsAMAB9ACcAOgAgAHsAMQB9AAEPZABlAGwAZQB0AGUAZAAAP1MAZQBsAGUAYwB0ACAARAB5
AG4AYQBtAGkAYwBzACAAQwBSAE0AIABDAG8AbgBuAGUAYwB0AGkAbwBuAC4AADdTAGUAbABlAGMA
dAAgAEQAeQBuAGEAbQBpAGMAcwAgAEMAUgBNACAARQBuAHQAaQB0AHkALgAAKVMAZQBsAGUAYwB0
ACAAYQB0AHQAcgBpAGIAdQB0AGUAKABzACkALgAALVMAZQBsAGUAYwB0ACAAdABvAGsAZQBuACAA
dgBhAHIAaQBhAGIAbABlAC4AABlEAFkATgBBAE0ASQBDAFMALQBDAFIATQABRUQAeQBuAGEAbQBp
AGMAcwAgAEMAUgBNACAARQBuAHQAaQB0AHkAIABDAGgAYQBuAGcAZQBzACAAUwBvAHUAcgBjAGUA
ADUnAHsAMAB9ACcAIABhAHQAdAByAGkAYgB1AHQAZQAgAG4AbwB0ACAAZgBvAHUAbgBkAC4AATFN
AHkALgBSAGUAcwBvAHUAcgBjAGUAcwAuAE0AeQBSAGUAcwBvAHUAcgBjAGUAcwAAAKafR3GfXwVI
ubvQjk9C73IACLd6XFYZNOCJCLA/X38R1Qo6AyAAAQMAAAEEAAASDAcGFRIYARIMBAAAEggHBhUS
GAESCAQAABIRBwYVEhgBEhEEAAASFAcGFRIYARIUBAgAEgwECAASCAQIABIRBAgAEhQEIAECHAMg
AAgEIAASFQMgAA4CHgAHEAEBHgAeAAcwAQEBEB4AAhMABCAAEwAHBhUSGQETAAQoABMACBbPSQu4
DDTqCImEXc2AgMyRCSAEARIhCAISJQQgAB0OAyAAAgQoAB0OAwYSJAMGEigDBhIcCSADAQgdCB0S
JQMGEiEFIAEBEiEEIAASLQQoABItAgYOBCwACgAFIAECEA4FIAAdEjEEIAEBDgQgAQEIBCABHA4F
IAIBDhwIIAISMR0SMQ4EIAASNQQGHRIxAgYIAygADgMoAAgDBhI5AwYSPQQAABI5BAAAEj0FAAEB
Ej0ECAASOQQIABI9AwYSNAIGHAQAABI0BAgAEjQFIAEBEUkIAQABAAAAAAAFIAIBDg4XAQAKTXlU
ZW1wbGF0ZQc4LjAuMC4wAAAEAQAAAAYVEhgBEgwGFRIYARIIBhUSGAESEQYVEhgBEhQEBwESDAQH
ARIIBAcBEhEEBwESFBABAAtNeS5Db21wdXRlcgAADAEAB015LlVzZXIAABMBAA5NeS5XZWJTZXJ2
aWNlcwAAEwEADk15LkFwcGxpY2F0aW9uAAAEAAEcHAMHAQIDBwEIBgABEhURZQQHARIVAwcBDgUQ
AQAeAAQKAR4ABAcBHgAHIAQBDg4ODmEBADRTeXN0ZW0uV2ViLlNlcnZpY2VzLlByb3RvY29scy5T
b2FwSHR0cENsaWVudFByb3RvY29sEkNyZWF0ZV9fSW5zdGFuY2VfXxNEaXNwb3NlX19JbnN0YW5j
ZV9fAAAABhUSGAETAAYVEhkBEwAECgETAAUgAQETAAYHAhMAEwAEIAEBAgUBAAAAAAQHAR0OBSAA
EoCBBSAAEoCFBiABEoCJHAQHAggIBSAAEoCNBiABEoCRHAQHARItBCABHBwEIAEcCAkgAh0OHQ4R
gMkFIAEBHQ4EAAEOHAggARKArRKAoQUgABKA0QYVEoDBARwJIAAVEYDFARMABhURgMUBHAQgABIl
BAABCBwFIAIBCBwFIAASgNkFIAARgN0FIAASgOEMFRKAwQEVEYC5Ag4cDBURgMUBFRGAuQIOHAcV
EYC5Ag4cBCAAEwEGAAEBEoC9BgADDg4cHAUgABKA7UQHEhI1EoCVEoCZEoCdEoChEoClEoCpEoCt
HBKAsRKAtRURgLkCDhwSgL0SgL0dDhURgMUBHBURgMUBFRGAuQIOHBKAnQQAAQIOBSAAEoD1CgcE
AgISgIkSgL0FIAASgPkGIAESgP0cBSABHQ4IBxABAQEdHgADCgEOCQcDEoCVHQ4dDgQgAQgcByAB
EoEBEhUCHQ4QBwYdEjEdDhKBBRIxCB0SMQYgARKBCQ4LBwMSgJUdEjESgQkGAAMIDg4CBQcBEoCJ
BgcCHQ4dDgogBgEIDg4OCBACBSAAEoEVCCACAQ4QEoERBiABEoEZHAMgABwHBwMcHBKBEQQgAQEc
BQcBEoERBSAAEoEdCiAFARGBIQgICAgVBwkdDhKBHR0SMRKAiRIxDh0OCB0OByACAg4RgSUFAAIO
DhwMBwUSMRIxEjEIHRIxBiABEoEdHAUgABKBKQUgABKBLQUgAggICAUgAgEcHA8HBwgSNRKAiRI1
CBKBHQgNAQAIVmFsaWRhdGUAAEABAAUAAAANQ3JtQ29ubmVjdGlvbgZFbnRpdHkKQXR0cmlidXRl
cw1Ub2tlblZhcmlhYmxlCUJhdGNoU2l6ZQAABiABARGBQRIBAA1HZXRFbnRpdHlMaXN0AAAgAQAb
U2VsZWN0IER5bmFtaWNzIENSTSBlbnRpdHkuAAANAQAIU2V0dGluZ3MAAAgBAIgTAAAAACMBAB5T
cGVjaWZpZXMgcmV0cmlldmUgYmF0Y2ggc2l6ZS4AACYBACFTZWxlY3QgdmFyaWFibGUgY29udGFp
bmluZyB0b2tlbi4AAAYgAwEOAgIXAQAQR2V0QXR0cmlidXRlTGlzdAEAAAAvAQAqU2VsZWN0IG9u
ZSBvciBtb3JlIGF0dHJpYnV0ZXMgdG8gcmV0cmlldmUuAAAWAQARQ3JtQ29ubmVjdGlvblR5cGUA
ACwBACdTZWxlY3QgRHluYW1pY3MgQ1JNIENvbm5lY3Rpb24gTWFuYWdlci4AAAUgABKBXQcgAgEO
EoFdBgcCEjkSOQQHARI9CAEAAgAAAAAABAABARwEBwESNAgBAAgAAAAAAB4BAAEAVAIWV3JhcE5v
bkV4Y2VwdGlvblRocm93cwEMAQAHMS4wLjAuMAAAKQEAJGZhMzA5NjI1LTZkZjUtNGUxZi1hZTA2
LWEyODcxYjE0MTdkOAAABQEAAQAAHwEAGkNvcHlyaWdodCBAIE1pY3Jvc29mdCAyMDE2AAA8AQA3
U2NyaXB0Q29tcG9uZW50XzU2MTFmZjQwODBlZDRkMzJiYjY0M2NiODdiYzlmODEwLnZicHJvagAA
DgEACU1pY3Jvc29mdAAAAAAAzF4AAAAAAAAAAAAA7l4AAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AOBeAAAAAAAAAAAAAAAAAAAAAAAAAABfQ29yRGxsTWFpbgBtc2NvcmVlLmRsbAAAAAAA/yUAIEAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAMAAAAoAACADgAAAEgAAIAQ
AAAAYAAAgAAAAAAAAAAAAAAAAAAAAgACAAAAeAAAgAMAAACQAACAAAAAAAAAAAAAAAAAAAABAAB/
AACoAACAAAAAAAAAAAAAAAAAAAABAAEAAADAAACAAAAAAAAAAAAAAAAAAAABAAAAAADYAAAAAAAA
AAAAAAAAAAAAAAABAAAAAADoAAAAAAAAAAAAAAAAAAAAAAABAAAAAAD4AAAAAAAAAAAAAAAAAAAA
AAABAAAAAAAIAQAAgGUAAOgCAAAAAAAAAAAAAGhoAAAoAQAAAAAAAAAAAACQaQAAIgAAAAAAAAAA
AAAAGGEAAGgEAAAAAAAAAAAAAGgENAAAAFYAUwBfAFYARQBSAFMASQBPAE4AXwBJAE4ARgBPAAAA
AAC9BO/+AAABAAAAAQAAAAAAAAABAAAAAAA/AAAAAAAAAAQAAAACAAAAAAAAAAAAAAAAAAAARAAA
AAEAVgBhAHIARgBpAGwAZQBJAG4AZgBvAAAAAAAkAAQAAABUAHIAYQBuAHMAbABhAHQAaQBvAG4A
AAAAAAAAsATIAwAAAQBTAHQAcgBpAG4AZwBGAGkAbABlAEkAbgBmAG8AAACkAwAAAQAwADAAMAAw
ADAANABiADAAAAA0AAoAAQBDAG8AbQBwAGEAbgB5AE4AYQBtAGUAAAAAAE0AaQBjAHIAbwBzAG8A
ZgB0AAAAmAA4AAEARgBpAGwAZQBEAGUAcwBjAHIAaQBwAHQAaQBvAG4AAAAAAFMAYwByAGkAcAB0
AEMAbwBtAHAAbwBuAGUAbgB0AF8ANQA2ADEAMQBmAGYANAAwADgAMABlAGQANABkADMAMgBiAGIA
NgA0ADMAYwBiADgANwBiAGMAOQBmADgAMQAwAC4AdgBiAHAAcgBvAGoAAAAwAAgAAQBGAGkAbABl
AFYAZQByAHMAaQBvAG4AAAAAADEALgAwAC4AMAAuADAAAACYADwAAQBJAG4AdABlAHIAbgBhAGwA
TgBhAG0AZQAAAFMAYwByAGkAcAB0AEMAbwBtAHAAbwBuAGUAbgB0AF8ANQA2ADEAMQBmAGYANAAw
ADgAMABlAGQANABkADMAMgBiAGIANgA0ADMAYwBiADgANwBiAGMAOQBmADgAMQAwAC4AdgBiAHAA
cgBvAGoALgBkAGwAbAAAAFwAGwABAEwAZQBnAGEAbABDAG8AcAB5AHIAaQBnAGgAdAAAAEMAbwBw
AHkAcgBpAGcAaAB0ACAAQAAgAE0AaQBjAHIAbwBzAG8AZgB0ACAAMgAwADEANgAAAAAAoAA8AAEA
TwByAGkAZwBpAG4AYQBsAEYAaQBsAGUAbgBhAG0AZQAAAFMAYwByAGkAcAB0AEMAbwBtAHAAbwBu
AGUAbgB0AF8ANQA2ADEAMQBmAGYANAAwADgAMABlAGQANABkADMAMgBiAGIANgA0ADMAYwBiADgA
NwBiAGMAOQBmADgAMQAwAC4AdgBiAHAAcgBvAGoALgBkAGwAbAAAAJAAOAABAFAAcgBvAGQAdQBj
AHQATgBhAG0AZQAAAAAAUwBjAHIAaQBwAHQAQwBvAG0AcABvAG4AZQBuAHQAXwA1ADYAMQAxAGYA
ZgA0ADAAOAAwAGUAZAA0AGQAMwAyAGIAYgA2ADQAMwBjAGIAOAA3AGIAYwA5AGYAOAAxADAALgB2
AGIAcAByAG8AagAAADQACAABAFAAcgBvAGQAdQBjAHQAVgBlAHIAcwBpAG8AbgAAADEALgAwAC4A
MAAuADAAAAA4AAgAAQBBAHMAcwBlAG0AYgBsAHkAIABWAGUAcgBzAGkAbwBuAAAAMQAuADAALgAw
AC4AMAAAACgAAAAgAAAAQAAAAAEABAAAAAAAgAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACA
AAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAB3d3d3d3d3d3d3d3d3d3AERERERERERERERERERERwBP/////////////////0cAT/////
////////////9HAE//////////////////RwBP/////////////////0cAT/////////////////
9HAE//////////////////RwBP/////////////////0cAT/////////////////9HAE////////
//////////RwBP/////////////////0cAT/////////////////9HAE//////////////////Rw
BP/////////////////0cAT/////////////////9HAE//////////////////RwBP//////////
///////0cAT/////////////////9HAE//////////////////RwBIiIiIiIiIiIiIiIiIiEcARE
RERERERERERERERERHAETExMTExMTExMTs7OSXRwBMzMzMzMzMzMzMzMzMzEAABERERERERERERE
REREQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////
////////////////wAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGA
AAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAADwAAAB///
/////////////ygAAAAQAAAAIAAAAAEABAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA
AACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8A
AAAAAAAAAAAHd3d3d3d3d0RERERERERHT///////+EdP///////4R0////////hHT///////+EdP
///////4R0////////hHT///////+EdP///////4R0iIiIiIiIhHTMzMzMzMzEfEREREREREwAAA
AAAAAAAAAAAAAAAAAAD//wAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAEAAP//AAD//wAAAAABAAIAICAQAAEABADoAgAAAgAQEBAAAQAEACgBAAADAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABQAAAMAAAAAD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA]]></arrayElement></arrayElements></property>
<property id="13" 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="137" 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_5611ff4080ed4d32bb643cb87bc9f810</property>
<property id="138" 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>
<connections>
<connection id="25" name="CrmConnection" description="" connectionManagerID="{9cab3e7c-579f-4fad-9af8-fc4294e51641}" /></connections>
<outputs>
<output id="4" name="Output" description="" exclusionGroup="0" synchronousInputId="0" deleteOutputOnPathDetached="false" hasSideEffects="true" dangling="false" isErrorOut="false" isSorted="false" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed"><externalMetadataColumns isUsed="False" /></output>
</outputs>
</component>