<component id="2" name="OData Source" componentClassID="{874F7595-FB5F-40FF-96AF-FBFF8250E3EF}" description="Executes a custom script." localeId="1033" version="7" contactInfo="Executes a custom script.;Microsoft Corporation;Microsoft SqlServer v9; © 2004 Microsoft Corporation; All Rights Reserved; http://www.microsoft.com/sql/support;0"><properties><property id="3" name="SourceCode" state="cdata" dataType="System.String" isArray="true" description="Stores the source code of the component" typeConverter="NOTBROWSABLE"><arrayElements arrayElementCount="15"><arrayElement dataType="System.String"><![CDATA[ScriptMain.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' CozyRoc SQL Server Integration Services user script component
'
' Copyright (c) 2006-2011 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.

' The following resources were used as a reference:
' http://www.odata.org/developers/protocols/overview
' http://msdn.microsoft.com/en-us/library/ff478141.aspx

Imports System
Imports System.ComponentModel
Imports System.Collections
Imports System.Xml
Imports System.IO

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


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
<SortProperties(New String() { _
    "Connection", "BatchSize", _
    "Collection", "IsQueryVariable", "Query", "QueryVariable"})> _
<FilterProperties("GetProperties")> _
<ValidateProperties("Validate")> _
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute> _
<CLSCompliant(False)> _
Public Class ScriptMain
    Inherits UserComponent


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub CreateNewOutputRows()
        Dim colsIdx As Hashtable = GetColumnsIdx_()

        ' Setup query template.
        Dim queryStr As String = Me.Query
        If Me.IsQueryVariable Then
            ' Query is contained in variable.
            queryStr = CStr(GetVariable_(Me.QueryVariable))
        End If

        Dim queryTemplate_1P As String = Me.Collection & "?"
        If Not String.IsNullOrEmpty(queryStr) Then
            queryTemplate_1P &= queryStr & "&"
        End If

        queryTemplate_1P &= String.Format("$top={0}&$skip={1}", Me.BatchSize, "{0}")

        Dim doc As XmlDocument = New XmlDocument()
        Dim conn As Object = Me.Connections.Http.AcquireConnection(Nothing)
        Dim connection As HttpClientConnection = New HttpClientConnection(conn)
        Dim page As Integer = 0
        Dim ns As XmlNamespaceManager = Nothing

        Try
            While True
                ' Download data.
                connection.ServerURL = String.Format(queryTemplate_1P, page * Me.BatchSize)
                Using odataStream As Stream = New MemoryStream(connection.DownloadData())
                    Call doc.Load(odataStream)
                End Using

                If ns Is Nothing Then
                    ' Initialize namespace manager.
                    ns = New XmlNamespaceManager(doc.NameTable)
                    Call ns.AddNamespace("atom", "http://www.w3.org/2005/Atom")
                End If

                Dim entryList As XmlNodeList = doc.SelectNodes("/atom:feed/atom:entry", ns)
                If entryList.Count = 0 Then
                    ' Reached end of feed.
                    Call OutputBuffer.SetEndOfRowset()
                    Exit While
                End If

                ' Push items.
                For Each entry As XmlElement In entryList
                    With OutputBuffer
                        Call .AddRow()

                        ' Setup atom data.
                        .Buffer(CInt(colsIdx("atom_id"))) = GetText_(entry("id"))
                        .Buffer(CInt(colsIdx("atom_title"))) = GetText_(entry("title"))
                        .Buffer(CInt(colsIdx("atom_updated"))) = DateTime.Parse(GetText_(entry("updated")))
                        .Buffer(CInt(colsIdx("atom_author"))) = GetText_(entry("author"))

                        Dim linkElem As XmlElement = entry("link")
                        If Not linkElem Is Nothing Then
                            Dim link As String = linkElem.GetAttribute("href")
                            If Not link.StartsWith("http://") Then
                                ' Link is relative.
                                link = doc.DocumentElement.GetAttribute("xml:base") & link
                            End If
                            .Buffer(CInt(colsIdx("atom_link"))) = link
                        End If

                        Dim categoryElem As XmlElement = entry("category")
                        If Not categoryElem Is Nothing Then
                            .Buffer(CInt(colsIdx("atom_category"))) = categoryElem.GetAttribute("term")
                        End If

                        ' Setup collection properties.
                        Dim contentElem As XmlElement = entry("content")
                        If Not contentElem Is Nothing Then
                            Dim propsList As XmlNodeList = contentElem("m:properties").ChildNodes
                            For Each propElem As XmlElement In propsList
                                If colsIdx.Contains(propElem.LocalName) Then
                                    Dim value As Object

                                    Select Case propElem.GetAttribute("m:type")
                                        Case "Edm.Binary"
                                            value = Convert.FromBase64String(propElem.InnerText)

                                        Case Else
                                            value = propElem.InnerText
                                    End Select

                                    .Buffer(CInt(colsIdx(propElem.LocalName))) = value
                                End If
                            Next
                        End If
                    End With
                Next

                page += 1
            End While
        Catch ex As Exception
            Call FireError_(ex.Message)
        Finally
            Call Me.Connections.Http.ReleaseConnection(conn)
        End Try
    End Sub ' CreateNewOutputRows


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns list of current properties based on current state.
    Public Function GetProperties() As String()
        Dim result As New ArrayList

        Call result.Add("Connection")
        Call result.Add("BatchSize")
        Call result.Add("Collection")
        Call result.Add("IsQueryVariable")
        Call result.Add(IIf(Me.IsQueryVariable, "QueryVariable", "Query"))

        Return CType(result.ToArray(GetType(String)), String())
    End Function    ' GetProperties


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

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

            If String.IsNullOrEmpty(Me.Collection) Then
                Throw New Exception("Specify collection.")
            End If

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

            Me.ComponentMetaData.RuntimeConnectionCollection("Http").ConnectionManagerID = Me.Connection
        Catch ex As Exception
            result = False
            errMessage = ex.Message
        End Try

        Validate = result
    End Function    ' Validate


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns list of tables in the currently selected Oracle connection.
    Public Function GetCollections() As String()
        Dim result As ArrayList = New ArrayList()

        ' Download collections.
        Dim doc As XmlDocument = New XmlDocument()
        Dim conn As Object = Me.DesignConnections(Me.Connection).AcquireConnection(Nothing)
        Dim connection As HttpClientConnection = New HttpClientConnection(conn)
        Try
            Using odataStream As Stream = New MemoryStream(connection.DownloadData())
                Call doc.Load(odataStream)
            End Using
        Finally
            Call Me.DesignConnections(Me.Connection).ReleaseConnection(conn)
        End Try

        ' Setup collections list.
        Dim ns As XmlNamespaceManager = New XmlNamespaceManager(doc.NameTable)
        Call ns.AddNamespace("app", "http://www.w3.org/2007/app")
        Dim collections As XmlNodeList = doc.SelectNodes("/app:service/app:workspace/app:collection", ns)
        For Each collection As XmlElement In collections
            Dim href As String = collection.GetAttribute("href")
            If Not href.StartsWith("http://") Then
                ' The collection reference is relative.
                href = Connection.ServerURL & "/" & href
            End If

            Call result.Add(href)
        Next

        Return CType(result.ToArray(GetType(String)), String())
    End Function    ' GetCollections


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Select HTTP Connection Manager.")> _
    <Category("Settings")> _
    <Connection("HttpConnectionType")> _
    <RefreshProperties(RefreshProperties.All)> _
    Public Property Connection() As String
        Get
            Connection = m_connection
        End Get
        Set(ByVal value As String)
            If m_connection <> value Then
                m_connection = value
                Me.Collection = String.Empty
            End If
        End Set
    End Property    ' Connection


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specifies the number of rows to be retrieved as a batch.")> _
    <Category("Settings")> _
    <DefaultValue(100)> _
    Public Property BatchSize() As Integer
        Get
            BatchSize = m_batchSize
        End Get
        Set(ByVal value As Integer)
            m_batchSize = value
        End Set
    End Property    ' BatchSize


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Select OData collection.")> _
    <Category("Source")> _
    <List("GetCollections")> _
    Public Property Collection() As String
        Get
            Collection = m_collection
        End Get
        Set(ByVal value As String)
            If m_collection <> value Then
                If Not String.IsNullOrEmpty(m_collection) 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_collection = value
            End If
        End Set
    End Property    ' Collection


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Indicates whether the query is stored in a variable.")> _
    <Category("Source")> _
    <RefreshProperties(RefreshProperties.All)> _
    <DefaultValue(False)> _
    Public Property IsQueryVariable() As Boolean
        Get
            IsQueryVariable = m_isQueryVariable
        End Get
        Set(ByVal value As Boolean)
            If m_isQueryVariable <> value Then
                m_isQueryVariable = value
                Me.Query = String.Empty
            End If
        End Set
    End Property    ' IsQueryVariable


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specify OData query.")> _
    <Category("Source")> _
    Public Property Query() As String
        Get
            Query = m_query
        End Get
        Set(ByVal value As String)
            m_query = value
        End Set
    End Property    ' Table


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specifies the variable that contains the query.")> _
    <Category("Source")> _
    <Variable()> _
    Public Property QueryVariable() As String
        Get
            QueryVariable = Me.Query
        End Get
        Set(ByVal value As String)
            Me.Query = value
        End Set
    End Property    ' QueryVariable
#End Region ' Properties


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


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub SetupOutputColumns_()
        ' Load collection properties.
        Dim metaService As String = Me.Collection.Substring(0, Me.Collection.LastIndexOf("/") + 1) + "$metadata"
        Dim collectionName As String = Me.Collection.Substring(Me.Collection.LastIndexOf("/") + 1)

        Dim doc As XmlDocument = New XmlDocument()
        Dim conn As Object = Me.DesignConnections(Me.Connection).AcquireConnection(Nothing)
        Dim connection As HttpClientConnection = New HttpClientConnection(conn)
        Dim serverURL As String = connection.ServerURL
        Try
            connection.ServerURL = metaService
            Using odataStream As Stream = New MemoryStream(connection.DownloadData())
                Call doc.Load(odataStream)
            End Using
        Finally
            connection.ServerURL = serverURL
            Call Me.DesignConnections(Me.Connection).ReleaseConnection(conn)
        End Try

        Dim ns As XmlNamespaceManager = New XmlNamespaceManager(doc.NameTable)
        Call ns.AddNamespace("edm", "http://schemas.microsoft.com/ado/2007/05/edm")
        Call ns.AddNamespace("edmx", "http://schemas.microsoft.com/ado/2007/06/edmx")
        Dim props As XmlNodeList = doc.SelectNodes( _
            String.Format("/edmx:Edmx/edmx:DataServices/edm:Schema/edm:EntityType['{0}']/edm:Property", collectionName), _
            ns)

        Dim output As IDTSOutput100 = MyBase.ComponentMetaData.OutputCollection(0)
        Call output.OutputColumnCollection.RemoveAll()
        Dim column As IDTSOutputColumn100

        ' Setup base (Atom) columns.
        column = output.OutputColumnCollection.New()
        column.Name = "atom_id"
        Call column.SetDataTypeProperties(DataType.DT_WSTR, 1000, 0, 0, 0)

        column = output.OutputColumnCollection.New()
        column.Name = "atom_title"
        Call column.SetDataTypeProperties(DataType.DT_WSTR, 250, 0, 0, 0)

        column = output.OutputColumnCollection.New()
        column.Name = "atom_updated"
        Call column.SetDataTypeProperties(DataType.DT_DBTIMESTAMP, 0, 0, 0, 0)

        column = output.OutputColumnCollection.New()
        column.Name = "atom_author"
        Call column.SetDataTypeProperties(DataType.DT_WSTR, 250, 0, 0, 0)

        column = output.OutputColumnCollection.New()
        column.Name = "atom_link"
        Call column.SetDataTypeProperties(DataType.DT_WSTR, 1000, 0, 0, 0)

        column = output.OutputColumnCollection.New()
        column.Name = "atom_category"
        Call column.SetDataTypeProperties(DataType.DT_WSTR, 1000, 0, 0, 0)

        For Each prop As XmlElement In props
            ' Get column info.
            Dim dtsType As Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType
            Dim length As Integer
            Dim precision As Integer
            Dim scale As Integer
            Dim codePage As Integer
            GetTypeFromPropertyType_( _
                prop.GetAttribute("Type"), _
                dtsType, _
                length, _
                precision, _
                scale, _
                codePage)

            ' Setup output column.
            column = output.OutputColumnCollection.New()
            column.Name = prop.GetAttribute("Name")
            Call column.SetDataTypeProperties(dtsType, length, precision, scale, codePage)
        Next
    End Sub ' SetupOutputColumns_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Get SSIS type from specified DataRow.
    Private Sub GetTypeFromPropertyType_( _
        ByVal propertyType As String, _
        ByRef dtsType As Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType, _
        ByRef length As Integer, _
        ByRef precision As Integer, _
        ByRef scale As Integer, _
        ByRef codePage As Integer)

        length = 0
        precision = 0
        scale = 0
        codePage = 0

        Select Case propertyType
            Case "Edm.Binary"
                dtsType = DataType.DT_IMAGE

            Case "Edm.Boolean"
                dtsType = DataType.DT_BOOL

            Case "Edm.Byte"
                dtsType = DataType.DT_UI1

            Case "Edm.DateTime", "Edm.DateTimeOffset"
                dtsType = DataType.DT_DBTIMESTAMP

            Case "Edm.Time"
                dtsType = DataType.DT_DBTIME

            Case "Edm.Decimal"
                dtsType = DataType.DT_DECIMAL

            Case "Edm.Double"
                dtsType = DataType.DT_R8

            Case "Edm.Single"
                dtsType = DataType.DT_R4

            Case "Edm.Guid"
                dtsType = DataType.DT_GUID

            Case "Edm.Int16"
                dtsType = DataType.DT_I2

            Case "Edm.Int32"
                dtsType = DataType.DT_I4

            Case "Edm.Int64"
                dtsType = DataType.DT_I8

            Case "Edm.String"
                dtsType = DataType.DT_WSTR
                length = 250

            Case Else
                Throw New Exception("Unhandled property type.")
        End Select
    End Sub ' GetTypeFromPropertyType_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub FireError_(ByVal message As String)
        Dim cancel As Boolean = False
        Call MyBase.ComponentMetaData.FireError( _
            0, _
            "OData 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 MyBase.VariableDispenser.LockOneForRead(varName, vars)
        Try
            result = vars(varName).Value
        Finally
            Call vars.Unlock()
        End Try

        GetVariable_ = result
    End Function    ' GetVariable_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Setup column name -> buffer index map.
    Private Function GetColumnsIdx_() As Hashtable
        Dim result As Hashtable = New Hashtable

        Dim output As IDTSOutput100 = Me.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)

            ' Setup buffer index.
            Call result.Add( _
                column.Name, _
                Me.HostComponent.BufferManager.FindColumnByLineageID( _
                    output.Buffer, _
                    column.LineageID))
        Next

        GetColumnsIdx_ = result
    End Function    ' GetColumnsIdx_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetText_(ByVal element As XmlElement) As String
        Dim result As String = String.Empty

        If Not element Is Nothing Then
            result = element.InnerText
            If result.Length > 4000 Then
                ' Maximum 4000 characters are supported in data flow.
                result = result.Substring(0, 4000)
            End If
        End If

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


#Region "Attributes"
    Private m_connection As String
    Private m_collection As String
    Private m_batchSize As Integer
    Private m_isQueryVariable As Boolean
    Private m_query As String
#End Region ' Attributes
End Class   ' ScriptMain
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[BufferWrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services buffer wrappers
' This module defines classes for accessing data flow buffers
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!


Option Strict Off   ' This allows usage of PipelineBuffer typed accessors.

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class OutputBuffer
    Inherits ScriptBufferPlus

    Public Sub New(ByVal Component As ScriptComponent, ByVal ObjectID As Integer, ByVal IsInput As Boolean, ByVal Buffer As PipelineBuffer, ByVal OutputMap As OutputNameMap)
        MyBase.New(Component, ObjectID, IsInput, Buffer, OutputMap)
    End Sub

    Public Overrides ReadOnly Property StaticInputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public WriteOnly Property [atomid]() As String
        Set
            Me(0) = Value
        End Set
    End Property
    Public WriteOnly Property [atomid_IsNull] As Boolean
        Set
            If (value)
                SetNull(0)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [atomtitle]() As String
        Set
            Me(1) = Value
        End Set
    End Property
    Public WriteOnly Property [atomtitle_IsNull] As Boolean
        Set
            If (value)
                SetNull(1)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [atomupdated]() As DateTime
        Set
            Me(2) = Value
        End Set
    End Property
    Public WriteOnly Property [atomupdated_IsNull] As Boolean
        Set
            If (value)
                SetNull(2)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [atomauthor]() As String
        Set
            Me(3) = Value
        End Set
    End Property
    Public WriteOnly Property [atomauthor_IsNull] As Boolean
        Set
            If (value)
                SetNull(3)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [atomlink]() As String
        Set
            Me(4) = Value
        End Set
    End Property
    Public WriteOnly Property [atomlink_IsNull] As Boolean
        Set
            If (value)
                SetNull(4)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [atomcategory]() As String
        Set
            Me(5) = Value
        End Set
    End Property
    Public WriteOnly Property [atomcategory_IsNull] As Boolean
        Set
            If (value)
                SetNull(5)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [ROWID]() As Int32
        Set
            Me(6) = Value
        End Set
    End Property
    Public WriteOnly Property [ROWID_IsNull] As Boolean
        Set
            If (value)
                SetNull(6)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [State]() As String
        Set
            Me(7) = Value
        End Set
    End Property
    Public WriteOnly Property [State_IsNull] As Boolean
        Set
            If (value)
                SetNull(7)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [City]() As String
        Set
            Me(8) = Value
        End Set
    End Property
    Public WriteOnly Property [City_IsNull] As Boolean
        Set
            If (value)
                SetNull(8)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [Year]() As Int32
        Set
            Me(9) = Value
        End Set
    End Property
    Public WriteOnly Property [Year_IsNull] As Boolean
        Set
            If (value)
                SetNull(9)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [Population]() As Int32
        Set
            Me(10) = Value
        End Set
    End Property
    Public WriteOnly Property [Population_IsNull] As Boolean
        Set
            If (value)
                SetNull(10)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [ViolentCrime]() As Int32
        Set
            Me(11) = Value
        End Set
    End Property
    Public WriteOnly Property [ViolentCrime_IsNull] As Boolean
        Set
            If (value)
                SetNull(11)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [MurderAndNonEgligentManslaughter]() As Int32
        Set
            Me(12) = Value
        End Set
    End Property
    Public WriteOnly Property [MurderAndNonEgligentManslaughter_IsNull] As Boolean
        Set
            If (value)
                SetNull(12)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [ForcibleRape]() As Int32
        Set
            Me(13) = Value
        End Set
    End Property
    Public WriteOnly Property [ForcibleRape_IsNull] As Boolean
        Set
            If (value)
                SetNull(13)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [Robbery]() As Int32
        Set
            Me(14) = Value
        End Set
    End Property
    Public WriteOnly Property [Robbery_IsNull] As Boolean
        Set
            If (value)
                SetNull(14)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [AggravatedAssault]() As Int32
        Set
            Me(15) = Value
        End Set
    End Property
    Public WriteOnly Property [AggravatedAssault_IsNull] As Boolean
        Set
            If (value)
                SetNull(15)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [PropertyCrime]() As Int32
        Set
            Me(16) = Value
        End Set
    End Property
    Public WriteOnly Property [PropertyCrime_IsNull] As Boolean
        Set
            If (value)
                SetNull(16)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [Burglary]() As Int32
        Set
            Me(17) = Value
        End Set
    End Property
    Public WriteOnly Property [Burglary_IsNull] As Boolean
        Set
            If (value)
                SetNull(17)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [LarcenyTheft]() As Int32
        Set
            Me(18) = Value
        End Set
    End Property
    Public WriteOnly Property [LarcenyTheft_IsNull] As Boolean
        Set
            If (value)
                SetNull(18)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [MotorVehicleTheft]() As Int32
        Set
            Me(19) = Value
        End Set
    End Property
    Public WriteOnly Property [MotorVehicleTheft_IsNull] As Boolean
        Set
            If (value)
                SetNull(19)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [Arson]() As Int32
        Set
            Me(20) = Value
        End Set
    End Property
    Public WriteOnly Property [Arson_IsNull] As Boolean
        Set
            If (value)
                SetNull(20)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {"atom_id", "atom_title", "atom_updated", "atom_author", "atom_link", "atom_category", "ROWID", "State", "City", "Year", "Population", "ViolentCrime", "MurderAndNonEgligentManslaughter", "ForcibleRape", "Robbery", "AggravatedAssault", "PropertyCrime", "Burglary", "LarcenyTheft", "MotorVehicleTheft", "Arson"}
        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[ScriptComponent_0c4f2d277da94cd3bcb7ec6aa65b1a54.vbproj]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF16LE]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="utf-16"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <ProjectTypeGuids>{30D016F9-3734-4E33-A861-5E7D899E18F3};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>8.0.30703</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{2D2F8FA7-A0FA-461E-AC36-5FEE017C3B1E}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>My Project</AppDesignerFolder>
    <RootNamespace>ScriptComponent_0c4f2d277da94cd3bcb7ec6aa65b1a54</RootNamespace>
    <AssemblyName>ScriptComponent_0c4f2d277da94cd3bcb7ec6aa65b1a54</AssemblyName>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>.\bin\Debug\</OutputPath>
    <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
    <DefineDebug>true</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
    <DebugSymbols>false</DebugSymbols>
    <Optimize>true</Optimize>
    <OutputPath>.\bin\Release\</OutputPath>
    <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
    <DefineDebug>false</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <!-- This sections specifies references for the project. -->
  <ItemGroup>
    <Reference Include="CozyRoc.SSISPlus.2012, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>C:\Program Files (x86)\Microsoft SQL Server\110\SDK\Assemblies\CozyRoc.SSISPlus.2012.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.SqlServer.ManagedDTS, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SqlServer.ManagedDTS\v4.0_11.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.ManagedDTS.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xml" />
    <Reference Include="Microsoft.SqlServer.TxScript, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSRuntimeWrap, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSPipelineWrap, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.PipelineHost, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="System.Xml" />
  </ItemGroup>
  <!-- Visual Basic supports Importing namespaces (equivalent to using statements in C#).-->
  <ItemGroup>
    <Import Include="Microsoft.VisualBasic" />
    <Import Include="System" />
    <Import Include="System.Collections" />
    <Import Include="System.Data" />
    <Import Include="System.Diagnostics" />
    <Import Include="System.Windows.Forms" />
  </ItemGroup>
  <ItemGroup>
    <AppDesigner Include="My Project\" />
  </ItemGroup>
  <!-- Include the build rules for a VB project.-->
  <Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
  <!-- This section defines VSTA properties that describe the host-changable project properties. -->
  <ProjectExtensions>
    <VisualStudio>
      <FlavorProperties GUID="{30D016F9-3734-4E33-A861-5E7D899E18F3}">
        <ProjectProperties HostName="VSTAHostName" HostPackage="{B3A685AA-7EAF-4BC6-9940-57959FA5AC07}" ApplicationType="usd" Language="vb" TemplatesPath="" DebugInfoExeName="devenv.exe" DebugInfoCommandLine="/vstaHostDebugUri:&quot;vstadebug06e0baa7-4188-477d-875e-5581589b51d0/0c244f58-0099-4862-8589-75d09273133a&quot;" />
        <Host Name="SSIS_SC110" />
        <ProjectClient>
          <HostIdentifier>SSIS_SC110</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
  <ItemGroup>
    <Compile Include="ScriptMain.vb" />
    <Compile Include="BufferWrapper.vb" />
    <Compile Include="ComponentWrapper.vb" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="My Project\" />
  </ItemGroup>
  <PropertyGroup>
    <OptionCompare>Binary</OptionCompare>
  </PropertyGroup>
  <PropertyGroup>
    <OptionExplicit>On</OptionExplicit>
  </PropertyGroup>
  <PropertyGroup>
    <OptionStrict>On</OptionStrict>
  </PropertyGroup>
</Project>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[ComponentWrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services component wrapper
' This module defines the base class for your component
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class UserComponent
    Inherits ScriptComponentPlus

    Public Connections As New Connections(Me)
    Public Variables As New Variables(Me)

    Public 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, ByVal OutputMap As OutputNameMap)

        For I As Integer = 0 To Outputs - 1
            If OutputIDs(I) = GetOutputID(OutputMap, "Output") Then
                OutputBuffer = New OutputBuffer(Me, OutputIDs(I), False, Buffers(I), OutputMap)
            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 Http() As IDTSConnectionManager100
        Get
            Return ParentComponent.ComponentMetaData.RuntimeConnectionCollection("Http").ConnectionManager
        End Get
    End Property

End Class

Public Class Variables

    Dim ParentComponent As ScriptComponent

    <CLSCompliant(False)> _
    Public Sub New(ByVal Component As ScriptComponent)
        ParentComponent = Component
    End Sub

End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[Project]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF16LE]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<c:Project xmlns:c="http://schemas.microsoft.com/codeprojectml/2010/08/main" xmlns:msb="http://schemas.microsoft.com/developer/msbuild/2003" runtimeVersion="4.0" schemaVersion="1.0">
	<msb:PropertyGroup>
		<msb:Language>msBuild</msb:Language>
		<msb:NoContent>Reference;Import;Folder</msb:NoContent>
		<msb:ProjectId>{9A07FE73-BBCA-404F-B789-221010128005}</msb:ProjectId>
		<msb:DisplayName>ScriptComponent_0c4f2d277da94cd3bcb7ec6aa65b1a54</msb:DisplayName>
		<msb:CodeName>ScriptComponent_0c4f2d277da94cd3bcb7ec6aa65b1a54</msb:CodeName>
	</msb:PropertyGroup>
	<msb:ItemGroup>
		<msb:Folder Include="My Project\"/>
		<msb:File Include="ScriptMain.vb"/>
		<msb:File Include="BufferWrapper.vb"/>
		<msb:File Include="ComponentWrapper.vb"/>
		<msb:Project Include="ScriptComponent_0c4f2d277da94cd3bcb7ec6aa65b1a54.vbproj"/>
	</msb:ItemGroup>
</c:Project>]]></arrayElement></arrayElements></property><property id="4" name="BinaryCode" state="cdata" dataType="System.String" isArray="true" description="Stores the binary representation of the component" typeConverter="NOTBROWSABLE"><arrayElements arrayElementCount="2"><arrayElement dataType="System.String"><![CDATA[ScriptComponent_0c4f2d277da94cd3bcb7ec6aa65b1a54.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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
WQGBATUSNQNBAUESaABBAUsSPwNZAVkSRQM5AGUSSQN5AMQQBgNhAXASTgOBAcQQUwNJAIwPtwJZ
AHoSWQOBAIASXwPpAI0SZAMxAZgSaQOBAawSbgOBALsScQB5AMkSYwCJAdwSdAOBAOoScQCRAQAT
ewNZARET1QCZASYTgQNRATYTcQCZAUITFwBpAFQTCwOhAVABEwChAXATuwOpAYATwAOhAYoTxwNR
AVABwAARAbgT2gPBAcQQ4AO5AesT5wPJAUESaAAhAQYUwABhAB4U+APRAcQQ/gPZAbIRBgPZAVQT
CwMpAUYUcQDpAFQUQQHBAUESaADJAVoUEwDpAHgUKQTpAIQULgTpAIQUNATJAY4UOQThAZIUwADh
AZsUPwQRAbEUcARBAOUUewTxAfsUgQTpAcQQigT5AT4PRQPpARoVEwB5AFABEwDJAcQQmQThASEV
cQBhADwVoAQBAmMVpgS5AWUSaADhAXUVaAAJAoMVrAR5AHATsgTpAJkVaAARAlABEwAZAlABwAAh
AlABwAApAlAB7gQxAlABQQVBAlABwABJAlABwABRAlABwABZAlABwABhAlABxQBpAlABEwBhAlAB
0ABxAlAB0AB5AlABEwCBAlABwAApAIMArQEuAFMEqgYuAFsEyQYuAEsEoQZAABMAUAFAACsAeAFD
ABMAUAFDABsAXwFJAIMA3wFjABsAXwFjABMAUAFpAIMA0gGAACsAeAGDAHsAeAGDAHMAeAGDABsA
XwGJAIMAvgGgACsAeAGjABMAUAGjAMMAKALAACsAeAHDAOsArALDABMAUAHgACsAeAHjACsBrAIA
ARMAUAEAASsAeAEDASsBrAIgARMAUAEgASsAeAFAASsAeAFAARMAUAFgARMAUAFgASsAeAFjAesD
eAFjAfsD2wRjASsBrAJjAfMDzQRjAQME9ASAASsAeAGgASsAeAHAARMAUAHAASsAeAHgASsAeAEA
AhMAUAEAAisAeAFpBiMEbgVpBhsEYAVpBgsEUAFpBhMESAWJBiMESQaJBkMEQAaJBhsEYAWpBhsE
pwWpBisEkwWpBiMEswXJBiME0QXJBjMErALJBhsEpwXJBgsEUAHpBhsEpwXpBiMEhwYJBxsEpwUJ
ByMECwYJBzsEeAHACCsBrAIACSsBrAKZAZ4BowGoAfgB/AEHAgwCGwIbAqMCsgK9AvgBywLjAogD
0gPtAwUEDAL8AQwCIwT4AQwCDAK9AkkEDAL4AZEEuATIBAQAAQAGAAUABwAGAAkAMgALADMAAAB0
AU8AAAAtAlQAAADcAVkAAAA5Al4AAAD1ApgAAAByB9kAAACFB94AAACMB+IAAACaB94AAACkB+IA
AAC1B+YAAADBB+IAAADUB94AAADfB+IAAADxB94AAAD6B+IAAAAKCN4AAAAXCOIAAAArCOsAAAAx
COIAAAA+CN4AAABECOIAAABRCN4AAABWCOIAAABiCOsAAABnCOIAAABzCOsAAAB+COIAAACQCOsA
AACdCOIAAACxCOsAAADSCOIAAAD6COsAAAAHCeIAAAAbCesAAAAjCeIAAAAyCesAAABECeIAAABd
CesAAABrCeIAAACACesAAACJCeIAAACZCesAAACmCeIAAAC6CesAAADMCeIAAADlCesAAADrCeIA
AAD4CdkAAAD5ChYBAAAqDd4AAAA1DesAAAA/Dd4AAABKDeIAAABaDd4AAABgDd4AAABuDdkAAgAE
AAMAAgAFAAUAAgAGAAcAAgAHAAkAAgAPAAsAAgASAA0AAQATAA8AAQAUABEAAQAVABMAAQAWABUA
AQAXABcAAQAYABkAAQAZABsAAQAaAB0AAQAbAB8AAQAcACEAAQAdACMAAQAeACUAAQAfACcAAQAg
ACkAAQAhACsAAQAiAC0AAQAjAC8AAQAkADEAAQAlADMAAQAmADUAAQAnADcAAQAoADkAAQApADsA
AQAqAD0AAQArAD8AAQAsAEEAAQAtAEMAAQAuAEUAAQAvAEcAAQAwAEkAAQAxAEsAAQAyAE0AAQAz
AE8AAQA0AFEAAQA1AFMAAQA2AFUAAQA3AFcAAQA4AFkAAQA5AFsAAQA6AF0AAQA7AF8AAQA8AGEA
AgA9AGMAAgBHAGUAAgBOAGcAAQBPAGcAAgBQAGkAAQBRAGkAAQBTAGsAAgBSAGsAAgBUAG0AAQBV
AG0AAgBWAG8AAQBXAG8AAgBYAHEAAQBZAHEAAgBaAHMAdQB1AIgAfQGEAYsBkgGKApECzwMEgAAA
AAAAAAAAAAAAAAAAAAC2AAAABAAAAAAAAAAAAAAAAQAKAAAAAAAKAAAAAAAAAAAAAAAKABMAAAAA
AAEAAAAAAAAAAAAAAJ0AAQMAAAAACwAAAAAAAAAAAAAApgA/AwAAAAALAAAAAAAAAAAAAACmAI0D
AAAAAAsAAAAAAAAAAAAAAKYAjAoAAAAABAAAAAAAAAAAAAAAAQDDDAAAAAAEAAAAAAAAAAAAAAAB
AH0BAAAAAAsAAAAAAAAAAAAAAKYA7A8AAAAACwAAAAAAAAAAAAAApgDjEAAAAAAFAAQABgAEAAAA
EAAMAIMCAAAQABkAgwIAAAAAGwCDAi0AFgItAJgCAAAAAAA8TW9kdWxlPgBtc2NvcmxpYgBNaWNy
b3NvZnQuVmlzdWFsQmFzaWMATXlBcHBsaWNhdGlvbgBTY3JpcHRDb21wb25lbnRfMGM0ZjJkMjc3
ZGE5NGNkM2JjYjdlYzZhYTY1YjFhNTQuTXkATXlDb21wdXRlcgBNeVByb2plY3QATXlXZWJTZXJ2
aWNlcwBUaHJlYWRTYWZlT2JqZWN0UHJvdmlkZXJgMQBPdXRwdXRCdWZmZXIAU2NyaXB0Q29tcG9u
ZW50XzBjNGYyZDI3N2RhOTRjZDNiY2I3ZWM2YWE2NWIxYTU0AFVzZXJDb21wb25lbnQAQ29ubmVj
dGlvbnMAVmFyaWFibGVzAFNjcmlwdE1haW4ATWljcm9zb2Z0LlZpc3VhbEJhc2ljLkFwcGxpY2F0
aW9uU2VydmljZXMAQXBwbGljYXRpb25CYXNlAC5jdG9yAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5E
ZXZpY2VzAENvbXB1dGVyAFN5c3RlbQBPYmplY3QALmNjdG9yAGdldF9Db21wdXRlcgBtX0NvbXB1
dGVyT2JqZWN0UHJvdmlkZXIAZ2V0X0FwcGxpY2F0aW9uAG1fQXBwT2JqZWN0UHJvdmlkZXIAVXNl
cgBnZXRfVXNlcgBtX1VzZXJPYmplY3RQcm92aWRlcgBnZXRfV2ViU2VydmljZXMAbV9NeVdlYlNl
cnZpY2VzT2JqZWN0UHJvdmlkZXIAQXBwbGljYXRpb24AV2ViU2VydmljZXMARXF1YWxzAG8AR2V0
SGFzaENvZGUAVHlwZQBHZXRUeXBlAFRvU3RyaW5nAENyZWF0ZV9fSW5zdGFuY2VfXwBUAGluc3Rh
bmNlAERpc3Bvc2VfX0luc3RhbmNlX18AZ2V0X0dldEluc3RhbmNlAE1pY3Jvc29mdC5WaXN1YWxC
YXNpYy5NeVNlcnZpY2VzLkludGVybmFsAENvbnRleHRWYWx1ZWAxAG1fQ29udGV4dABHZXRJbnN0
YW5jZQBDb3p5Um9jLlNTSVNQbHVzLjIwMTIAQ296eVJvYy5TcWxTZXJ2ZXIuU1NJUwBTY3JpcHRC
dWZmZXJQbHVzAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuVHhTY3JpcHQATWljcm9zb2Z0LlNxbFNlcnZl
ci5EdHMuUGlwZWxpbmUAU2NyaXB0Q29tcG9uZW50AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuUGlwZWxp
bmVIb3N0AFBpcGVsaW5lQnVmZmVyAE91dHB1dE5hbWVNYXAAQ29tcG9uZW50AE9iamVjdElEAElz
SW5wdXQAQnVmZmVyAE91dHB1dE1hcABnZXRfU3RhdGljSW5wdXRDb2x1bW5zAHNldF9hdG9taWQA
VmFsdWUAc2V0X2F0b21pZF9Jc051bGwAc2V0X2F0b210aXRsZQBzZXRfYXRvbXRpdGxlX0lzTnVs
bABEYXRlVGltZQBzZXRfYXRvbXVwZGF0ZWQAc2V0X2F0b211cGRhdGVkX0lzTnVsbABzZXRfYXRv
bWF1dGhvcgBzZXRfYXRvbWF1dGhvcl9Jc051bGwAc2V0X2F0b21saW5rAHNldF9hdG9tbGlua19J
c051bGwAc2V0X2F0b21jYXRlZ29yeQBzZXRfYXRvbWNhdGVnb3J5X0lzTnVsbABzZXRfUk9XSUQA
c2V0X1JPV0lEX0lzTnVsbABzZXRfU3RhdGUAc2V0X1N0YXRlX0lzTnVsbABzZXRfQ2l0eQBzZXRf
Q2l0eV9Jc051bGwAc2V0X1llYXIAc2V0X1llYXJfSXNOdWxsAHNldF9Qb3B1bGF0aW9uAHNldF9Q
b3B1bGF0aW9uX0lzTnVsbABzZXRfVmlvbGVudENyaW1lAHNldF9WaW9sZW50Q3JpbWVfSXNOdWxs
AHNldF9NdXJkZXJBbmROb25FZ2xpZ2VudE1hbnNsYXVnaHRlcgBzZXRfTXVyZGVyQW5kTm9uRWds
aWdlbnRNYW5zbGF1Z2h0ZXJfSXNOdWxsAHNldF9Gb3JjaWJsZVJhcGUAc2V0X0ZvcmNpYmxlUmFw
ZV9Jc051bGwAc2V0X1JvYmJlcnkAc2V0X1JvYmJlcnlfSXNOdWxsAHNldF9BZ2dyYXZhdGVkQXNz
YXVsdABzZXRfQWdncmF2YXRlZEFzc2F1bHRfSXNOdWxsAHNldF9Qcm9wZXJ0eUNyaW1lAHNldF9Q
cm9wZXJ0eUNyaW1lX0lzTnVsbABzZXRfQnVyZ2xhcnkAc2V0X0J1cmdsYXJ5X0lzTnVsbABzZXRf
TGFyY2VueVRoZWZ0AHNldF9MYXJjZW55VGhlZnRfSXNOdWxsAHNldF9Nb3RvclZlaGljbGVUaGVm
dABzZXRfTW90b3JWZWhpY2xlVGhlZnRfSXNOdWxsAHNldF9BcnNvbgBzZXRfQXJzb25fSXNOdWxs
AGdldF9TdGF0aWNPdXRwdXRDb2x1bW5zAEFkZFJvdwBTZXRFbmRPZlJvd3NldABFbmRPZlJvd3Nl
dABTdGF0aWNJbnB1dENvbHVtbnMAYXRvbWlkAGF0b21pZF9Jc051bGwAYXRvbXRpdGxlAGF0b210
aXRsZV9Jc051bGwAYXRvbXVwZGF0ZWQAYXRvbXVwZGF0ZWRfSXNOdWxsAGF0b21hdXRob3IAYXRv
bWF1dGhvcl9Jc051bGwAYXRvbWxpbmsAYXRvbWxpbmtfSXNOdWxsAGF0b21jYXRlZ29yeQBhdG9t
Y2F0ZWdvcnlfSXNOdWxsAFJPV0lEAFJPV0lEX0lzTnVsbABTdGF0ZQBTdGF0ZV9Jc051bGwAQ2l0
eQBDaXR5X0lzTnVsbABZZWFyAFllYXJfSXNOdWxsAFBvcHVsYXRpb24AUG9wdWxhdGlvbl9Jc051
bGwAVmlvbGVudENyaW1lAFZpb2xlbnRDcmltZV9Jc051bGwATXVyZGVyQW5kTm9uRWdsaWdlbnRN
YW5zbGF1Z2h0ZXIATXVyZGVyQW5kTm9uRWdsaWdlbnRNYW5zbGF1Z2h0ZXJfSXNOdWxsAEZvcmNp
YmxlUmFwZQBGb3JjaWJsZVJhcGVfSXNOdWxsAFJvYmJlcnkAUm9iYmVyeV9Jc051bGwAQWdncmF2
YXRlZEFzc2F1bHQAQWdncmF2YXRlZEFzc2F1bHRfSXNOdWxsAFByb3BlcnR5Q3JpbWUAUHJvcGVy
dHlDcmltZV9Jc051bGwAQnVyZ2xhcnkAQnVyZ2xhcnlfSXNOdWxsAExhcmNlbnlUaGVmdABMYXJj
ZW55VGhlZnRfSXNOdWxsAE1vdG9yVmVoaWNsZVRoZWZ0AE1vdG9yVmVoaWNsZVRoZWZ0X0lzTnVs
bABBcnNvbgBBcnNvbl9Jc051bGwAU3RhdGljT3V0cHV0Q29sdW1ucwBTY3JpcHRDb21wb25lbnRQ
bHVzAEZpbmlzaE91dHB1dHMATWFya091dHB1dHNGaW5pc2hlZABQcmltZU91dHB1dABPdXRwdXRz
AE91dHB1dElEcwBCdWZmZXJzAENyZWF0ZU5ld091dHB1dFJvd3MAUGFyZW50Q29tcG9uZW50AE1p
Y3Jvc29mdC5TcWxTZXJ2ZXIuRFRTUnVudGltZVdyYXAATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMu
UnVudGltZS5XcmFwcGVyAElEVFNDb25uZWN0aW9uTWFuYWdlcjEwMABnZXRfSHR0cABIdHRwAEdl
dFByb3BlcnRpZXMAVmFsaWRhdGUAZXJyTWVzc2FnZQBHZXRDb2xsZWN0aW9ucwBnZXRfQ29ubmVj
dGlvbgBzZXRfQ29ubmVjdGlvbgB2YWx1ZQBnZXRfQmF0Y2hTaXplAHNldF9CYXRjaFNpemUAZ2V0
X0NvbGxlY3Rpb24Ac2V0X0NvbGxlY3Rpb24AZ2V0X0lzUXVlcnlWYXJpYWJsZQBzZXRfSXNRdWVy
eVZhcmlhYmxlAGdldF9RdWVyeQBzZXRfUXVlcnkAZ2V0X1F1ZXJ5VmFyaWFibGUAc2V0X1F1ZXJ5
VmFyaWFibGUAZ2V0X0h0dHBDb25uZWN0aW9uVHlwZQBTZXR1cE91dHB1dENvbHVtbnNfAERhdGFU
eXBlAEdldFR5cGVGcm9tUHJvcGVydHlUeXBlXwBwcm9wZXJ0eVR5cGUAZHRzVHlwZQBsZW5ndGgA
cHJlY2lzaW9uAHNjYWxlAGNvZGVQYWdlAEZpcmVFcnJvcl8AbWVzc2FnZQBHZXRWYXJpYWJsZV8A
dmFyTmFtZQBTeXN0ZW0uQ29sbGVjdGlvbnMASGFzaHRhYmxlAEdldENvbHVtbnNJZHhfAFN5c3Rl
bS5YbWwAWG1sRWxlbWVudABHZXRUZXh0XwBlbGVtZW50AG1fY29ubmVjdGlvbgBtX2NvbGxlY3Rp
b24AbV9iYXRjaFNpemUAbV9pc1F1ZXJ5VmFyaWFibGUAbV9xdWVyeQBDb25uZWN0aW9uAEJhdGNo
U2l6ZQBDb2xsZWN0aW9uAElzUXVlcnlWYXJpYWJsZQBRdWVyeQBRdWVyeVZhcmlhYmxlAEh0dHBD
b25uZWN0aW9uVHlwZQBTeXN0ZW0uQ29tcG9uZW50TW9kZWwARWRpdG9yQnJvd3NhYmxlQXR0cmli
dXRlAEVkaXRvckJyb3dzYWJsZVN0YXRlAFN5c3RlbS5Db2RlRG9tLkNvbXBpbGVyAEdlbmVyYXRl
ZENvZGVBdHRyaWJ1dGUAU3lzdGVtLkRpYWdub3N0aWNzAERlYnVnZ2VySGlkZGVuQXR0cmlidXRl
AE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5Db21waWxlclNlcnZpY2VzAFN0YW5kYXJkTW9kdWxlQXR0
cmlidXRlAEhpZGVNb2R1bGVOYW1lQXR0cmlidXRlAFN5c3RlbS5Db21wb25lbnRNb2RlbC5EZXNp
Z24ASGVscEtleXdvcmRBdHRyaWJ1dGUAU3lzdGVtLlJ1bnRpbWUuQ29tcGlsZXJTZXJ2aWNlcwBS
dW50aW1lSGVscGVycwBHZXRPYmplY3RWYWx1ZQBSdW50aW1lVHlwZUhhbmRsZQBHZXRUeXBlRnJv
bUhhbmRsZQBBY3RpdmF0b3IAQ3JlYXRlSW5zdGFuY2UATXlHcm91cENvbGxlY3Rpb25BdHRyaWJ1
dGUAZ2V0X1ZhbHVlAHNldF9WYWx1ZQBTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMAQ29t
VmlzaWJsZUF0dHJpYnV0ZQBTdHJpbmcAc2V0X0l0ZW0AU2V0TnVsbABJbnZhbGlkT3BlcmF0aW9u
RXhjZXB0aW9uAEludDMyAFNjcmlwdEJ1ZmZlcgBDTFNDb21wbGlhbnRBdHRyaWJ1dGUAR2V0T3V0
cHV0SUQATWljcm9zb2Z0LlNxbFNlcnZlci5EVFNQaXBlbGluZVdyYXAATWljcm9zb2Z0LlNxbFNl
cnZlci5EdHMuUGlwZWxpbmUuV3JhcHBlcgBJRFRTQ29tcG9uZW50TWV0YURhdGExMDAAZ2V0X0Nv
bXBvbmVudE1ldGFEYXRhAElEVFNSdW50aW1lQ29ubmVjdGlvbkNvbGxlY3Rpb24xMDAAZ2V0X1J1
bnRpbWVDb25uZWN0aW9uQ29sbGVjdGlvbgBJRFRTUnVudGltZUNvbm5lY3Rpb24xMDAAZ2V0X0l0
ZW0AZ2V0X0Nvbm5lY3Rpb25NYW5hZ2VyAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuTWFuYWdlZERUUwBN
aWNyb3NvZnQuU3FsU2VydmVyLkR0cy5SdW50aW1lAEh0dHBDbGllbnRDb25uZWN0aW9uAFhtbERv
Y3VtZW50AFhtbE5hbWVzcGFjZU1hbmFnZXIAWG1sTm9kZUxpc3QAU3lzdGVtLklPAFN0cmVhbQBF
eGNlcHRpb24ASUVudW1lcmF0b3IAQ29udmVyc2lvbnMAQ29uY2F0AElzTnVsbE9yRW1wdHkARm9y
bWF0AEFjcXVpcmVDb25uZWN0aW9uAHNldF9TZXJ2ZXJVUkwARG93bmxvYWREYXRhAE1lbW9yeVN0
cmVhbQBMb2FkAElEaXNwb3NhYmxlAERpc3Bvc2UAWG1sTmFtZVRhYmxlAGdldF9OYW1lVGFibGUA
QWRkTmFtZXNwYWNlAFhtbE5vZGUAU2VsZWN0Tm9kZXMAZ2V0X0NvdW50AEdldEVudW1lcmF0b3IA
Z2V0X0N1cnJlbnQAZ2V0X0J1ZmZlcgBUb0ludGVnZXIAUGFyc2UAR2V0QXR0cmlidXRlAFN0YXJ0
c1dpdGgAZ2V0X0RvY3VtZW50RWxlbWVudABnZXRfQ2hpbGROb2RlcwBnZXRfTG9jYWxOYW1lAENv
bnRhaW5zAE9wZXJhdG9ycwBDb21wYXJlU3RyaW5nAGdldF9Jbm5lclRleHQAQ29udmVydABGcm9t
QmFzZTY0U3RyaW5nAE1vdmVOZXh0AFByb2plY3REYXRhAFNldFByb2plY3RFcnJvcgBnZXRfTWVz
c2FnZQBDbGVhclByb2plY3RFcnJvcgBSZWxlYXNlQ29ubmVjdGlvbgBBcnJheUxpc3QAQWRkAElu
dGVyYWN0aW9uAElJZgBBcnJheQBUb0FycmF5AElEVFNPdXRwdXQxMDAASURUU091dHB1dENvbGxl
Y3Rpb24xMDAAZ2V0X091dHB1dENvbGxlY3Rpb24ASURUU091dHB1dENvbHVtbkNvbGxlY3Rpb24x
MDAAZ2V0X091dHB1dENvbHVtbkNvbGxlY3Rpb24Ac2V0X0Nvbm5lY3Rpb25NYW5hZ2VySUQAZ2V0
X0Rlc2lnbkNvbm5lY3Rpb25zAENvbm5lY3Rpb25NYW5hZ2VyAGdldF9TZXJ2ZXJVUkwARW1wdHkA
UmVtb3ZlQWxsAElEVFNPdXRwdXRDb2x1bW4xMDAATGFzdEluZGV4T2YAU3Vic3RyaW5nAE5ldwBz
ZXRfTmFtZQBTZXREYXRhVHlwZVByb3BlcnRpZXMARmlyZUVycm9yAElEVFNWYXJpYWJsZXMxMDAA
SURUU1ZhcmlhYmxlRGlzcGVuc2VyMTAwAGdldF9WYXJpYWJsZURpc3BlbnNlcgBMb2NrT25lRm9y
UmVhZABJRFRTVmFyaWFibGUxMDAAVW5sb2NrAGdldF9OYW1lAFBpcGVsaW5lQ29tcG9uZW50AGdl
dF9Ib3N0Q29tcG9uZW50AElEVFNCdWZmZXJNYW5hZ2VyMTAwAGdldF9CdWZmZXJNYW5hZ2VyAGdl
dF9MaW5lYWdlSUQARmluZENvbHVtbkJ5TGluZWFnZUlEAGdldF9MZW5ndGgAU1NJU1NjcmlwdENv
bXBvbmVudEVudHJ5UG9pbnRBdHRyaWJ1dGUAQ296eVJvYy5TcWxTZXJ2ZXIuU1NJUy5BdHRyaWJ1
dGVzAFZhbGlkYXRlUHJvcGVydGllc0F0dHJpYnV0ZQBGaWx0ZXJQcm9wZXJ0aWVzQXR0cmlidXRl
AFNvcnRQcm9wZXJ0aWVzQXR0cmlidXRlAFJlZnJlc2hQcm9wZXJ0aWVzQXR0cmlidXRlAFJlZnJl
c2hQcm9wZXJ0aWVzAENvbm5lY3Rpb25BdHRyaWJ1dGUAQ2F0ZWdvcnlBdHRyaWJ1dGUARGVzY3Jp
cHRpb25BdHRyaWJ1dGUATGlzdEF0dHJpYnV0ZQBEZWZhdWx0VmFsdWVBdHRyaWJ1dGUAVmFyaWFi
bGVBdHRyaWJ1dGUAQ29tcGlsYXRpb25SZWxheGF0aW9uc0F0dHJpYnV0ZQBSdW50aW1lQ29tcGF0
aWJpbGl0eUF0dHJpYnV0ZQBTeXN0ZW0uUnVudGltZS5WZXJzaW9uaW5nAFRhcmdldEZyYW1ld29y
a0F0dHJpYnV0ZQBTY3JpcHRDb21wb25lbnRfMGM0ZjJkMjc3ZGE5NGNkM2JjYjdlYzZhYTY1YjFh
NTQuZGxsAAAAgJtJAHMATgB1AGwAbAAgAHAAcgBvAHAAZQByAHQAeQAgAGMAYQBuAG4AbwB0ACAA
YgBlACAAcwBlAHQAIAB0AG8AIABGAGEAbABzAGUALgAgAEEAcwBzAGkAZwBuACAAYQAgAHYAYQBs
AHUAZQAgAHQAbwAgAHQAaABlACAAYwBvAGwAdQBtAG4AIABpAG4AcwB0AGUAYQBkAC4AAA9hAHQA
bwBtAF8AaQBkAAAVYQB0AG8AbQBfAHQAaQB0AGwAZQAAGWEAdABvAG0AXwB1AHAAZABhAHQAZQBk
AAAXYQB0AG8AbQBfAGEAdQB0AGgAbwByAAATYQB0AG8AbQBfAGwAaQBuAGsAABthAHQAbwBtAF8A
YwBhAHQAZQBnAG8AcgB5AAALUgBPAFcASQBEAAALUwB0AGEAdABlAAAJQwBpAHQAeQAACVkAZQBh
AHIAABVQAG8AcAB1AGwAYQB0AGkAbwBuAAAZVgBpAG8AbABlAG4AdABDAHIAaQBtAGUAAEFNAHUA
cgBkAGUAcgBBAG4AZABOAG8AbgBFAGcAbABpAGcAZQBuAHQATQBhAG4AcwBsAGEAdQBnAGgAdABl
AHIAABlGAG8AcgBjAGkAYgBsAGUAUgBhAHAAZQAAD1IAbwBiAGIAZQByAHkAACNBAGcAZwByAGEA
dgBhAHQAZQBkAEEAcwBzAGEAdQBsAHQAABtQAHIAbwBwAGUAcgB0AHkAQwByAGkAbQBlAAARQgB1
AHIAZwBsAGEAcgB5AAAZTABhAHIAYwBlAG4AeQBUAGgAZQBmAHQAACNNAG8AdABvAHIAVgBlAGgA
aQBjAGwAZQBUAGgAZQBmAHQAAAtBAHIAcwBvAG4AAA1PAHUAdABwAHUAdAAACUgAdAB0AHAAAAM/
AAADJgAAJSQAdABvAHAAPQB7ADAAfQAmACQAcwBrAGkAcAA9AHsAMQB9AAAHewAwAH0AAAlhAHQA
bwBtAAA3aAB0AHQAcAA6AC8ALwB3AHcAdwAuAHcAMwAuAG8AcgBnAC8AMgAwADAANQAvAEEAdABv
AG0AACsvAGEAdABvAG0AOgBmAGUAZQBkAC8AYQB0AG8AbQA6AGUAbgB0AHIAeQAABWkAZAAAC3QA
aQB0AGwAZQAAD3UAcABkAGEAdABlAGQAAA1hAHUAdABoAG8AcgAACWwAaQBuAGsAAAloAHIAZQBm
AAAPaAB0AHQAcAA6AC8ALwAAEXgAbQBsADoAYgBhAHMAZQAAEWMAYQB0AGUAZwBvAHIAeQAACXQA
ZQByAG0AAA9jAG8AbgB0AGUAbgB0AAAZbQA6AHAAcgBvAHAAZQByAHQAaQBlAHMAAA1tADoAdAB5
AHAAZQAAFUUAZABtAC4AQgBpAG4AYQByAHkAABVDAG8AbgBuAGUAYwB0AGkAbwBuAAATQgBhAHQA
YwBoAFMAaQB6AGUAABVDAG8AbABsAGUAYwB0AGkAbwBuAAAfSQBzAFEAdQBlAHIAeQBWAGEAcgBp
AGEAYgBsAGUAABtRAHUAZQByAHkAVgBhAHIAaQBhAGIAbABlAAALUQB1AGUAcgB5AAAlUwBlAGwA
ZQBjAHQAIABjAG8AbgBuAGUAYwB0AGkAbwBuAC4AACdTAHAAZQBjAGkAZgB5ACAAYwBvAGwAbABl
AGMAdABpAG8AbgAuAAAHYQBwAHAAADVoAHQAdABwADoALwAvAHcAdwB3AC4AdwAzAC4AbwByAGcA
LwAyADAAMAA3AC8AYQBwAHAAAFMvAGEAcABwADoAcwBlAHIAdgBpAGMAZQAvAGEAcABwADoAdwBv
AHIAawBzAHAAYQBjAGUALwBhAHAAcAA6AGMAbwBsAGwAZQBjAHQAaQBvAG4AAAMvAAAJSABUAFQA
UAAAEyQAbQBlAHQAYQBkAGEAdABhAAAHZQBkAG0AAFloAHQAdABwADoALwAvAHMAYwBoAGUAbQBh
AHMALgBtAGkAYwByAG8AcwBvAGYAdAAuAGMAbwBtAC8AYQBkAG8ALwAyADAAMAA3AC8AMAA1AC8A
ZQBkAG0AAAllAGQAbQB4AABbaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBv
AHMAbwBmAHQALgBjAG8AbQAvAGEAZABvAC8AMgAwADAANwAvADAANgAvAGUAZABtAHgAAICVLwBl
AGQAbQB4ADoARQBkAG0AeAAvAGUAZABtAHgAOgBEAGEAdABhAFMAZQByAHYAaQBjAGUAcwAvAGUA
ZABtADoAUwBjAGgAZQBtAGEALwBlAGQAbQA6AEUAbgB0AGkAdAB5AFQAeQBwAGUAWwAnAHsAMAB9
ACcAXQAvAGUAZABtADoAUAByAG8AcABlAHIAdAB5AAEJVAB5AHAAZQAACU4AYQBtAGUAABdFAGQA
bQAuAEIAbwBvAGwAZQBhAG4AABFFAGQAbQAuAEIAeQB0AGUAABlFAGQAbQAuAEQAYQB0AGUAVABp
AG0AZQAAJUUAZABtAC4ARABhAHQAZQBUAGkAbQBlAE8AZgBmAHMAZQB0AAARRQBkAG0ALgBUAGkA
bQBlAAAXRQBkAG0ALgBEAGUAYwBpAG0AYQBsAAAVRQBkAG0ALgBEAG8AdQBiAGwAZQAAFUUAZABt
AC4AUwBpAG4AZwBsAGUAABFFAGQAbQAuAEcAdQBpAGQAABNFAGQAbQAuAEkAbgB0ADEANgAAE0UA
ZABtAC4ASQBuAHQAMwAyAAATRQBkAG0ALgBJAG4AdAA2ADQAABVFAGQAbQAuAFMAdAByAGkAbgBn
AAAxVQBuAGgAYQBuAGQAbABlAGQAIABwAHIAbwBwAGUAcgB0AHkAIAB0AHkAcABlAC4AABlPAEQA
YQB0AGEAIABTAG8AdQByAGMAZQAAAPTk/njl/fVAmkJdpqoho0MACLd6XFYZNOCJCLA/X38R1Qo6
AyAAAQMAAAEEAAASDAcGFRIYARIMBAAAEggHBhUSGAESCAQAABIRBwYVEhgBEhEEAAASFAcGFRIY
ARIUBAgAEgwECAASCAQIABIRBAgAEhQEIAECHAMgAAgEIAASFQMgAA4CHgAHEAEBHgAeAAcwAQEB
EB4AAhMABCAAEwAHBhUSGQETAAQoABMACBbPSQu4DDTqCImEXc2AgMyRCyAFARIhCAISJRIpBCAA
HQ4EIAEBDgQgAQECBSABAREtBCABAQgDIAACBCgAHQ4DKAAOAygAAgQoABEtAygACAMGEiQDBhIo
AwYSHAsgBAEIHQgdEiUSKQMGEiEFIAEBEiEEIAASNQQoABI1BSABAhAODyAGAQ4QETkQCBAIEAgQ
CAQgARwOBCAAEj0FIAEOEkECBg4CBggCBgIFIAEBEUkIAQABAAAAAAAFIAIBDg4YAQAKTXlUZW1w
bGF0ZQgxMC4wLjAuMAAABAEAAAAGFRIYARIMBhUSGAESCAYVEhgBEhEGFRIYARIUBAcBEgwEBwES
CAQHARIRBAcBEhQQAQALTXkuQ29tcHV0ZXIAABMBAA5NeS5XZWJTZXJ2aWNlcwAADAEAB015LlVz
ZXIAABMBAA5NeS5BcHBsaWNhdGlvbgAABAABHBwDBwECAwcBCAYAARIVEWUEBwESFQMHAQ4FEAEA
HgAECgEeAAQHAR4AByAEAQ4ODg5hAQA0U3lzdGVtLldlYi5TZXJ2aWNlcy5Qcm90b2NvbHMuU29h
cEh0dHBDbGllbnRQcm90b2NvbBJDcmVhdGVfX0luc3RhbmNlX18TRGlzcG9zZV9fSW5zdGFuY2Vf
XwAAAAYVEhgBEwAGFRIZARMABAoBEwAFIAEBEwAIBwMTABMAEwAFAQAAAAAEBwEdDgUgAgEIHAYH
Ah0OHQ4GAAIIEikOBAcCCAgFIAASgIkFIAASgI0GIAESgJEcBAcBEjUEAAEOHAUAAg4ODgQAAQIO
BgADDg4ODgYAAw4OHBwEIAEcHAQgAQEcBQACDg4cBCAAHQUFIAEBHQUGIAEBEoClBSAAEoC9BiAB
ARKAvQkgAhKAoQ4SgJ0FIAASgK0DIAAcBCAAEiUEAAEIHAUgARJBDgUAAREtDgQgAQ4OBCABAg4E
IAASQQUgABKAoQYAAwgODgIFAAEdBQ4GAAEBEoCpMgcXEj0cEoCVEoCZEoCdCA4OEoChEoClEkES
QRJBEkEOEoChEkEcEoCpEoCtEhwSgK0OBCABCBwGAAMcAhwcByABEoDZEhUCHQ4HBwIdDhKA0QUg
ABKA4QYgARKA3RwFIAASgOUKBwQCAhKA3RKAqQUgABKA6QYgARKA7RwdBwsSgKEcEoCVEoCZHQ4S
gJ0SgNESgKUSQQ4SgK0FBwESgN0EIAEIDgUgAg4ICAQgAQ4IBSAAEoDxCSAFARE5CAgICCYHEg4S
gPEcEoCVEoCZDhKAnRKA3RKAoQ4SgKUIETkICBJBCBKArQogBgEIDg4OCBACBSAAEoD5CCACAQ4Q
EoD1BiABEoD9HAcHAxwcEoD1BiABEoDxHAUgABKBAQUgABKBBQUgAggICAUgAgEcHA8HBwgSPRKA
3RI9CBKA8QgEBwIODg0BAAhWYWxpZGF0ZQAAEgEADUdldFByb3BlcnRpZXMAAAUgAQEdDkwBAAYA
AAAKQ29ubmVjdGlvbglCYXRjaFNpemUKQ29sbGVjdGlvbg9Jc1F1ZXJ5VmFyaWFibGUFUXVlcnkN
UXVlcnlWYXJpYWJsZQAABiABARGBHRcBABJIdHRwQ29ubmVjdGlvblR5cGUAAA0BAAhTZXR0aW5n
cwAAJAEAH1NlbGVjdCBIVFRQIENvbm5lY3Rpb24gTWFuYWdlci4AABMBAA5HZXRDb2xsZWN0aW9u
cwAACwEABlNvdXJjZQAAHQEAGFNlbGVjdCBPRGF0YSBjb2xsZWN0aW9uLgAAOQEANEluZGljYXRl
cyB3aGV0aGVyIHRoZSBxdWVyeSBpcyBzdG9yZWQgaW4gYSB2YXJpYWJsZS4AADQBAC9TcGVjaWZp
ZXMgdGhlIHZhcmlhYmxlIHRoYXQgY29udGFpbnMgdGhlIHF1ZXJ5LgAACAEAZAAAAAAAPQEAOFNw
ZWNpZmllcyB0aGUgbnVtYmVyIG9mIHJvd3MgdG8gYmUgcmV0cmlldmVkIGFzIGEgYmF0Y2guAAAZ
AQAUU3BlY2lmeSBPRGF0YSBxdWVyeS4AAAgBAAgAAAAAAB4BAAEAVAIWV3JhcE5vbkV4Y2VwdGlv
blRocm93cwFHAQAaLk5FVEZyYW1ld29yayxWZXJzaW9uPXY0LjABAFQOFEZyYW1ld29ya0Rpc3Bs
YXlOYW1lEC5ORVQgRnJhbWV3b3JrIDQAAACkcAAAAAAAAAAAAAC+cAAAACAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAsHAAAAAAAAAAAAAAAABfQ29yRGxsTWFpbgBtc2NvcmVlLmRsbAAAAAAA/yUAIEAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAAAAYAACAAAAAAAAAAAAAAAAAAAABAAEA
AAAwAACAAAAAAAAAAAAAAAAAAAABAAAAAABIAAAAWIAAAOwCAAAAAAAAAAAAAOwCNAAAAFYAUwBf
AFYARQBSAFMASQBPAE4AXwBJAE4ARgBPAAAAAAC9BO/+AAABAAAAAAAAAAAAAAAAAAAAAAA/AAAA
AAAAAAQAAAACAAAAAAAAAAAAAAAAAAAARAAAAAEAVgBhAHIARgBpAGwAZQBJAG4AZgBvAAAAAAAk
AAQAAABUAHIAYQBuAHMAbABhAHQAaQBvAG4AAAAAAAAAsARMAgAAAQBTAHQAcgBpAG4AZwBGAGkA
bABlAEkAbgBmAG8AAAAoAgAAAQAwADAAMAAwADAANABiADAAAAAsAAIAAQBGAGkAbABlAEQAZQBz
AGMAcgBpAHAAdABpAG8AbgAAAAAAIAAAADAACAABAEYAaQBsAGUAVgBlAHIAcwBpAG8AbgAAAAAA
MAAuADAALgAwAC4AMAAAAIwANQABAEkAbgB0AGUAcgBuAGEAbABOAGEAbQBlAAAAUwBjAHIAaQBw
AHQAQwBvAG0AcABvAG4AZQBuAHQAXwAwAGMANABmADIAZAAyADcANwBkAGEAOQA0AGMAZAAzAGIA
YwBiADcAZQBjADYAYQBhADYANQBiADEAYQA1ADQALgBkAGwAbAAAAAAAKAACAAEATABlAGcAYQBs
AEMAbwBwAHkAcgBpAGcAaAB0AAAAIAAAAJQANQABAE8AcgBpAGcAaQBuAGEAbABGAGkAbABlAG4A
YQBtAGUAAABTAGMAcgBpAHAAdABDAG8AbQBwAG8AbgBlAG4AdABfADAAYwA0AGYAMgBkADIANwA3
AGQAYQA5ADQAYwBkADMAYgBjAGIANwBlAGMANgBhAGEANgA1AGIAMQBhADUANAAuAGQAbABsAAAA
AAA0AAgAAQBQAHIAbwBkAHUAYwB0AFYAZQByAHMAaQBvAG4AAAAwAC4AMAAuADAALgAwAAAAOAAI
AAEAQQBzAHMAZQBtAGIAbAB5ACAAVgBlAHIAcwBpAG8AbgAAADAALgAwAC4AMAAuADAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABwAAAMAAAA0DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA]]></arrayElement></arrayElements></property><property id="9" name="UserComponentTypeName" dataType="System.String">CozyRoc.SqlServer.SSIS.ScriptComponentHostPlus, CozyRoc.SSISPlus.2012, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea</property><property id="11" name="VSTAProjectName" dataType="System.String" description="Specifies the name of the Microsoft Visual Studio Tools for Applications project. Project names must be unique within a package." typeConverter="NOTBROWSABLE">ScriptComponent_0c4f2d277da94cd3bcb7ec6aa65b1a54</property><property id="12" name="ScriptLanguage" dataType="System.String" description="Specifies the programming language used by the script." typeConverter="Microsoft.SqlServer.VSTAHosting.ScriptingLanguages, Microsoft.SqlServer.VSTAScriptingLib, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91">VisualBasic</property></properties><connections><connection id="14" name="Http" connectionManagerID="{6E8F8510-996A-4E70-B07B-644924DB45F8}" /></connections><outputs><output id="15" name="Output" hasSideEffects="true"><outputColumns><outputColumn id="38" name="atom_id" lineageId="38" length="1000" dataType="wstr" /><outputColumn id="39" name="atom_title" lineageId="39" length="250" dataType="wstr" /><outputColumn id="40" name="atom_updated" lineageId="40" dataType="dbTimeStamp" /><outputColumn id="41" name="atom_author" lineageId="41" length="250" dataType="wstr" /><outputColumn id="42" name="atom_link" lineageId="42" length="1000" dataType="wstr" /><outputColumn id="43" name="atom_category" lineageId="43" length="1000" dataType="wstr" /><outputColumn id="44" name="ROWID" lineageId="44" dataType="i4" /><outputColumn id="45" name="State" lineageId="45" length="250" dataType="wstr" /><outputColumn id="46" name="City" lineageId="46" length="250" dataType="wstr" /><outputColumn id="47" name="Year" lineageId="47" dataType="i4" /><outputColumn id="48" name="Population" lineageId="48" dataType="i4" /><outputColumn id="49" name="ViolentCrime" lineageId="49" dataType="i4" /><outputColumn id="50" name="MurderAndNonEgligentManslaughter" lineageId="50" dataType="i4" /><outputColumn id="51" name="ForcibleRape" lineageId="51" dataType="i4" /><outputColumn id="52" name="Robbery" lineageId="52" dataType="i4" /><outputColumn id="53" name="AggravatedAssault" lineageId="53" dataType="i4" /><outputColumn id="54" name="PropertyCrime" lineageId="54" dataType="i4" /><outputColumn id="55" name="Burglary" lineageId="55" dataType="i4" /><outputColumn id="56" name="LarcenyTheft" lineageId="56" dataType="i4" /><outputColumn id="57" name="MotorVehicleTheft" lineageId="57" dataType="i4" /><outputColumn id="58" name="Arson" lineageId="58" dataType="i4" /></outputColumns><externalMetadataColumns /></output></outputs></component>