<component id="2" name="Google Data Source" componentClassID="Microsoft.ManagedComponentHost" description="Executes a custom script." localeId="1033" version="9" 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[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

End Class

Public Class Variables

    Dim ParentComponent As ScriptComponent

    <CLSCompliant(False)> _
    Public Sub New(ByVal Component As ScriptComponent)
        ParentComponent = Component
    End Sub

End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[BufferWrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services buffer wrappers
' This module defines classes for accessing data flow buffers
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!


Option Strict Off   ' This allows usage of PipelineBuffer typed accessors.

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class 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 [title]() As String
        Set
            Me(0) = Value
        End Set
    End Property
    Public WriteOnly Property [title_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 [link]() As String
        Set
            Me(1) = Value
        End Set
    End Property
    Public WriteOnly Property [link_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 [content]() As String
        Set
            Me(2) = Value
        End Set
    End Property
    Public WriteOnly Property [content_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 [author]() As String
        Set
            Me(3) = Value
        End Set
    End Property
    Public WriteOnly Property [author_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 [id]() As String
        Set
            Me(4) = Value
        End Set
    End Property
    Public WriteOnly Property [id_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 [updated]() As DateTime
        Set
            Me(5) = Value
        End Set
    End Property
    Public WriteOnly Property [updated_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 [extensions]() As String
        Set
            Me(6) = Value
        End Set
    End Property
    Public WriteOnly Property [extensions_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 Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {"title", "link", "content", "author", "id", "updated", "extensions"}
        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[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-2010 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://code.google.com/apis/gdata/docs/2.0/reference.html

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

Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS.Attributes
Imports Google.GData.Client
Imports Google.GData.Extensions


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
<SortProperties(New String() { _
    "Service", "BaseUrl", _
    "IsUsernameVariable", "Username", "UsernameVariable", _
    "IsPasswordVariable", "Password", "PasswordVariable", _
    "ProxyUrl", "ProxyUser", "ProxyPassword", _
    "BatchSize", "IsQueryVariable", "Query", "QueryVariable"})> _
<FilterProperties("GetProperties")> _
<ValidateProperties("Validate")> _
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute> _
<CLSCompliant(False)> _
Public Class ScriptMain
    Inherits UserComponent


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Sub New()
        ' Setup Google services list.
        m_serviceList = New Hashtable()
        With m_serviceList
            Call .Add("analytics", "https://www.google.com/analytics/feeds/data")
            Call .Add("apps", "https://apps-apis.google.com/a/feeds/")
            Call .Add("blogger", "")
            Call .Add("cl", "")
            Call .Add("codesearch", "")
            Call .Add("cp", "http://www.google.com/m8/feeds/contacts/")
            Call .Add("gbase", "http://www.google.com/base/")
            Call .Add("health", "https://www.google.com/health/feeds/")
            Call .Add("lh2", "http://picasaweb.google.com/data/feed/api/user/")
            Call .Add("weaver", "https://www.google.com/h9/feeds/")
            Call .Add("wise", "http://spreadsheets.google.com/feeds/")
            Call .Add("writely", "http://docs.google.com/feeds/default/private/full")
            Call .Add("youtube", "http://gdata.youtube.com/feeds/api/")
        End With
    End Sub


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub CreateNewOutputRows()
        Dim userStr As String = Me.Username
        If Me.IsUsernameVariable Then
            ' Username is contained in variable.
            userStr = CStr(GetVariable_(Me.UsernameVariable))
        End If

        Dim passStr As String = Me.Password
        If Me.IsPasswordVariable Then
            ' Password is contained in variable.
            passStr = CStr(GetVariable_(Me.PasswordVariable))
        End If

        ' Setup service.
        Dim service As Service = New Service(Me.Service, "CozyRoc Google Data Source")
        Call service.setUserCredentials(userStr, passStr)

        If Not String.IsNullOrEmpty(Me.ProxyUrl) Then
            ' Setup proxy.
            Dim proxy As WebProxy = New WebProxy(Me.BaseUrl)
            If String.IsNullOrEmpty(Me.ProxyUser) Then
                proxy.UseDefaultCredentials = False
                proxy.Credentials = New NetworkCredential(Me.ProxyUser, Me.Password)
            End If

            Dim rf As GDataRequestFactory = CType(service.RequestFactory, GDataRequestFactory)
            rf.Proxy = proxy
        End If

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

        Call FireInformation_(String.Format("Execute query: {0}", queryStr))

        ' Setup query object.
        Dim query As FeedQuery = New FeedQuery(Me.BaseUrl)
        query.NumberToRetrieve = Me.BatchSize
        query.ExtraParameters = queryStr

        Try
            Dim feed As AtomFeed = service.Query(query)

            While True
                Dim itemsCount As Integer = feed.Entries.Count
                For itemIndex As Integer = 0 To itemsCount - 1
                    Dim entry As AtomEntry = feed.Entries(itemIndex)

                    With Me.OutputBuffer
                        Call .AddRow()

                        .id = entry.Id.Uri.Content
                        .title = entry.Title.Text
                        .content = entry.Content.Content
                        .updated = entry.Updated

                        ' Setup links.
                        .link = GetLinks_(entry)

                        ' Setup authors.
                        .author = GetAuthors_(entry)

                        ' Setup extensions.
                        .extensions = GetExtensions_(entry)
                    End With
                Next

                If String.IsNullOrEmpty(feed.NextChunk) Then
                    ' No more data to retrieve.
                    Exit While
                End If

                ' Setup next query iteration.
                query.StartIndex += itemsCount
                feed = service.Query(query)
            End While
        Catch ex As Exception
            Call FireError_(ex.Message)
        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("Service")
        Call result.Add("BaseUrl")

        Call result.Add("IsUsernameVariable")
        Call result.Add(IIf(Me.IsUsernameVariable, "UsernameVariable", "Username"))

        Call result.Add("IsPasswordVariable")
        Call result.Add(IIf(Me.IsPasswordVariable, "PasswordVariable", "Password"))

        Call result.Add("ProxyUrl")
        Call result.Add("ProxyUser")
        Call result.Add("ProxyPassword")
        Call result.Add("BatchSize")

        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

        Try
            If String.IsNullOrEmpty(Me.Service) Then
                Throw New ApplicationException("Select Google service.")
            End If

            If String.IsNullOrEmpty(Me.BaseUrl) Then
                Throw New ApplicationException("Specify base URL.")
            End If

            If String.IsNullOrEmpty(Me.Username) Then
                Throw New ApplicationException("Specify service user name.")
            End If

            If String.IsNullOrEmpty(Me.Password) Then
                Throw New ApplicationException("Specify service password.")
            End If

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

        Validate = result
    End Function    'Validate


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Function GetServices() As String()
        Dim result As String() = New String(m_serviceList.Count - 1) {}
        Call m_serviceList.Keys.CopyTo(result, 0)
        GetServices = result
    End Function    ' GetServices


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("	Service")> _
    <Description("Select Google service.")> _
    <List("GetServices")> _
    <RefreshProperties(RefreshProperties.All)> _
    Public Property Service() As String
        Get
            Service = m_service
        End Get
        Set(ByVal value As String)
            If m_service <> value Then
                m_service = value

                ' Setup base URL from service.
                Me.BaseUrl = CStr(m_serviceList(m_service))
            End If
        End Set
    End Property    ' Service


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("	Service")> _
    <Description("Specify base URL.")> _
    Public Property BaseUrl() As String
        Get
            BaseUrl = m_baseUrl
        End Get
        Set(ByVal value As String)
            m_baseUrl = value
        End Set
    End Property    ' BaseUrl


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("	Service")> _
    <Description("Specifies if Username property references package variable.")> _
    <RefreshProperties(RefreshProperties.All)> _
    Public Property IsUsernameVariable() As Boolean
        Get
            IsUsernameVariable = m_isUserVar
        End Get
        Set(ByVal value As Boolean)
            If m_isUserVar <> value Then
                m_isUserVar = value
                m_username = String.Empty
            End If
        End Set
    End Property    ' IsUsernameVariable


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("	Service")> _
    <Description("Specify service user name.")> _
    Public Property Username() As String
        Get
            Username = m_username
        End Get
        Set(ByVal value As String)
            m_username = value
        End Set
    End Property    ' Username


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("	Service")> _
    <Description("Specifies variable containing username.")> _
    <Variable()> _
    Public Property UsernameVariable() As String
        Get
            UsernameVariable = Me.Username
        End Get
        Set(ByVal value As String)
            Me.Username = value
        End Set
    End Property    ' UsernameVariable


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("	Service")> _
    <Description("Specifies if Password property references package variable.")> _
    <RefreshProperties(RefreshProperties.All)> _
    Public Property IsPasswordVariable() As Boolean
        Get
            IsPasswordVariable = m_isPassVar
        End Get
        Set(ByVal value As Boolean)
            If m_isPassVar <> value Then
                m_isPassVar = value
                m_password = String.Empty
            End If
        End Set
    End Property    ' IsPasswordVariable


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("	Service")> _
    <Description("Specify service password.")> _
    <PasswordPropertyText(True)> _
    Public Property Password() As String
        Get
            Password = m_password
        End Get
        Set(ByVal value As String)
            m_password = value
        End Set
    End Property    ' Password


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("	Service")> _
    <Description("Specifies variable containing password.")> _
    <Variable()> _
    Public Property PasswordVariable() As String
        Get
            PasswordVariable = Me.Password
        End Get
        Set(ByVal value As String)
            Me.Password = value
        End Set
    End Property    ' PasswordVariable


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Proxy")> _
    <Description("Specify proxy server URL (optional).")> _
    Public Property ProxyUrl() As String
        Get
            ProxyUrl = m_proxyUrl
        End Get
        Set(ByVal value As String)
            m_proxyUrl = value
        End Set
    End Property    ' ProxyUrl


    <Category("Proxy")> _
    <Description("Specify proxy user name (optional).")> _
    Public Property ProxyUser() As String
        Get
            ProxyUser = m_proxyUser
        End Get
        Set(ByVal value As String)
            m_proxyUser = value
        End Set
    End Property    ' ProxyUser


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Proxy")> _
    <Description("Specify proxy password (optional).")> _
    <PasswordPropertyText(True)> _
    Public Property ProxyPassword() As String
        Get
            ProxyPassword = m_proxyPassword
        End Get
        Set(ByVal value As String)
            m_proxyPassword = value
        End Set
    End Property    ' ProxyPassword


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Query")> _
    <Description("Specify batch number of rows to get.")> _
    <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


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Query")> _
    <Description("Specifies if Query property references package variable.")> _
    <RefreshProperties(RefreshProperties.All)> _
    Public Property IsQueryVariable() As Boolean
        Get
            IsQueryVariable = m_isQueryVar
        End Get
        Set(ByVal value As Boolean)
            If m_isQueryVar <> value Then
                m_isQueryVar = value
                m_query = String.Empty
            End If
        End Set
    End Property    ' IsQueryVariable


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Query")> _
    <Description("Specify query string with parameters.")> _
    <TextDialog("Enter query")> _
    Public Property Query() As String
        Get
            Query = m_query
        End Get
        Set(ByVal value As String)
            m_query = value
        End Set
    End Property    ' Query


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Query")> _
    <Description("Specifies variable containing query.")> _
    <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 Function GetLinks_(ByVal entry As AtomEntry) As String
        Dim result As String

        For Each link As AtomLink In entry.Links
            If Not String.IsNullOrEmpty(result) Then
                result += vbCrLf
            End If

            result += link.HRef.Content
        Next

        GetLinks_ = result
    End Function    ' GetLinks_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetAuthors_(ByVal entry As AtomEntry) As String
        Dim result As String

        For Each person As AtomPerson In entry.Authors
            If Not String.IsNullOrEmpty(result) Then
                result += vbCrLf
            End If

            result += person.Email
        Next

        GetAuthors_ = result
    End Function    ' GetAuthors_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetExtensions_(ByVal entry As AtomEntry) As String
        Dim result As String

        For Each extension As XmlExtension In entry.ExtensionElements
            result += extension.Node.OuterXml
        Next

        If Not String.IsNullOrEmpty(result) Then
            ' Wrap result in start/end tag to create valid XML fragment.
            result = "<extension>" + result + "</extension>"
        End If

        GetExtensions_ = result
    End Function    ' GetExtensions_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetVariable_(ByVal varName As String) As Object
        Dim result As Object

        Dim vars As IDTSVariables100
        Call MyBase.VariableDispenser.LockOneForRead(varName, vars)
        Try
            result = vars(varName).Value
        Finally
            Call vars.Unlock()
        End Try

        GetVariable_ = result
    End Function    ' GetVariable_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub FireInformation_(ByVal message As String)
        Dim fireAgain As Boolean = False
        Call MyBase.ComponentMetaData.FireInformation( _
            0, _
            "Google Data Source", _
            message, _
            String.Empty, _
            0, _
            fireAgain)
    End Sub ' FireInformation_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub FireError_(ByVal message As String)
        Dim cancel As Boolean = False
        Call MyBase.ComponentMetaData.FireError( _
            0, _
            "Google Data Source", _
            message, _
            String.Empty, _
            0, _
            cancel)
    End Sub ' FireError_
#End Region ' Internals


#Region "Attributes"
    Private m_service As String
    Private m_baseUrl As String
    Private m_isUserVar As Boolean
    Private m_username As String
    Private m_isPassVar As Boolean
    Private m_password As String

    Private m_proxyUrl As String
    Private m_proxyUser As String
    Private m_proxyPassword As String

    Private m_batchSize As Integer
    Private m_isQueryVar As Boolean
    Private m_query As String

    Private m_serviceList As Hashtable
#End Region ' Attributes
End Class   ' ScriptMain
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[Project]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF16LE]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<c:Project xmlns:c="http://schemas.microsoft.com/codeprojectml/2010/08/main" xmlns:msb="http://schemas.microsoft.com/developer/msbuild/2003" runtimeVersion="4.0" schemaVersion="1.0">
	<msb:PropertyGroup>
		<msb:Language>msBuild</msb:Language>
		<msb:CodeName>ScriptComponent_6fdc68d8fdd0420d9bab2d80f34c59ec</msb:CodeName>
		<msb:DisplayName>ScriptComponent_6fdc68d8fdd0420d9bab2d80f34c59ec</msb:DisplayName>
		<msb:ProjectId>{34F669CD-C6FC-4A55-8E25-5B59930020CD}</msb:ProjectId>
	</msb:PropertyGroup>
	<msb:ItemGroup>
		<msb:Project Include="ScriptComponent_6fdc68d8fdd0420d9bab2d80f34c59ec.vbproj"/>
		<msb:Folder Include="My Project\"/>
		<msb:File Include="ScriptMain.vb"/>
		<msb:File Include="ComponentWrapper.vb"/>
		<msb:File Include="BufferWrapper.vb"/>
	</msb:ItemGroup>
</c:Project>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[ScriptComponent_6fdc68d8fdd0420d9bab2d80f34c59ec.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>{C28B888E-A27F-41C9-B65A-BA082F11B087}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>My Project</AppDesignerFolder>
    <RootNamespace>ScriptComponent_6fdc68d8fdd0420d9bab2d80f34c59ec</RootNamespace>
    <AssemblyName>ScriptComponent_6fdc68d8fdd0420d9bab2d80f34c59ec</AssemblyName>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <OptionCompare>Binary</OptionCompare>
    <OptionExplicit>On</OptionExplicit>
    <OptionStrict>On</OptionStrict>
  </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.2014, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>C:\Program Files (x86)\Microsoft SQL Server\120\SDK\Assemblies\CozyRoc.SSISPlus.2014.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=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSRuntimeWrap, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSPipelineWrap, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.PipelineHost, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="System">
      <Private>False</Private>
    </Reference>
    <Reference Include="System.Data">
      <Private>False</Private>
    </Reference>
    <Reference Include="Microsoft.SqlServer.ManagedDTS">
      <Private>False</Private>
    </Reference>
    <Reference Include="System.Xml">
      <Private>False</Private>
    </Reference>
    <Reference Include="Google.GData.Client">
      <Private>False</Private>
    </Reference>
  </ItemGroup>
  <!-- Visual Basic supports Importing namespaces (equivalent to using statements in C#).-->
  <ItemGroup>
    <Import Include="Microsoft.VisualBasic" />
    <Import Include="System" />
    <Import Include="System.Collections" />
    <Import Include="System.Data" />
    <Import Include="System.Diagnostics" />
    <Import Include="System.Windows.Forms" />
  </ItemGroup>
  <ItemGroup>
    <AppDesigner Include="My Project\" />
  </ItemGroup>
  <!-- Include the build rules for a VB project.-->
  <Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
  <!-- This section defines VSTA properties that describe the host-changable project properties. -->
  <ProjectExtensions>
    <VisualStudio>
      <FlavorProperties GUID="{30D016F9-3734-4E33-A861-5E7D899E18F3}">
        <ProjectProperties HostName="VSTAHostName" HostPackage="{B3A685AA-7EAF-4BC6-9940-57959FA5AC07}" ApplicationType="usd" Language="vb" TemplatesPath="" />
        <Host Name="SSIS_SC120" />
        <ProjectClient>
          <HostIdentifier>SSIS_SC120</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>
</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_6fdc68d8fdd0420d9bab2d80f34c59ec.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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
AQAYBAAAAQAYBAAAAQAYBAAAAQAYBAAAAQAYBAAAAQAYBAAAAQAYBAAAAQAaBgAAAgAiBgAAAwAs
BgAABADtAwAAAQDLAwAAAQDLAwAAAQBvBgAAAQCeBgAAAQCeBgAAAQCeBgAAAQCeBgAAAQCeBgAA
AQCeBgAAAQCeBgAAAQCeBgAAAQCeBgAAAQCeBgAAAQCeBgAAAQCeBgAAAQCeBgAAAQCeBgAAAQCe
BgAAAQCeCAAAAQCeCAAAAQCeCAAAAQDMCAAAAQDlCAAAAQDlCAkAUAETAHkAUAE4AYkAUAFHAREA
UAETAJEAUAETACQAUAETACwAUAETADQAUAETADwAUAETACQAogKLACwAogKLADQAogKLADwAogKL
AJkAUAETAKEAUAETAKkAUAHAALEAvAvhARkARQJjABkATgJoACkA3QvuARkAZwJxAMEA+Qv+ARkA
UAETAMkAUAEOAkQA6wKQAEwAIwyLAEwALQyLAkwAUAETANEAUAHFADkAUAGvADkAcQylAjkAegwO
AeEAUAHAAOkA/gQTAOkABQUTAOkAFAXQAPEAUAHFAGEAUAETAEEAvwyyAnEAUAETAHEAywy+AikB
ZwLJAgEBUAFHAQEBIA1HAdkAMw3OAgkBUAHAAAkBQQ3FADEBUAFHAQkBeg3TAgEBnw3aAhEBvA3g
AtkAxg3nAvkAUAHAAPkAzQ0OAfkA4g3AAAEBUgrtAhkBCg71AlQAKw5oAFkBNQ4DA2kARQ4JA3EB
YQ4PA3kBaQ5xAGkAhw4VA4EBkQ5xAGkAaQ4bA4kBaQ5xAGkApg4hAxkBsg5xAPkAwA5oAPkAzw4O
AZkB6g4nAyEB+g5xAJkBBg8XAKEBUAETAKEBywxOA6kBLg9TA6EBOA9aA7kBUAHAAHEAKw5oAHEA
YQ91A8EBag97A8kBew+DA3EANQ6KA9kAiQ8nAWkA1A+PA2QA3g+eA2wA7A+LANkA+A+xA9EB/w8P
A/EBFBDQAPkBKRATAGkAURDHA3QA3g+eA3wA7A+LAAECXRBxACECvBDvAykC3g/1A4QA7A+LABEC
5RAJBDEC7hBxANkA+A8PBEEAcBEmBEkChhEsBEECNQ41BFECIww8BEECpRETAEEAEhJIBFkCKBJO
BFkCOBJOBGECUAETAGkCUAHAAHECUAHAAHkCUAF6BIECUAFDBZECUAHAAJkCUAHAAKECUAETAKkC
UAHFALECUAEOAbkCUAHAAMECUAHAAMkCUAEOAdECUAETANkCUAHAACkAgwCbAS4A0wMlCC4A2wMu
CC4A4wNNCEAAEwA+AUAAKwBmAUMAGwBNAUMAEwA+AUkAgwDNAWMAEwA+AWMAGwBNAWkAgwCsAYAA
KwBmAYMAGwBNAYMAewBmAYMAcwBmAYkAgwC5AaAAKwBmAaMAEwA+AaMAwwAWAsAAKwBmAcMA6wCa
AsMAEwA+AeAAKwBmAeMAKwGaAgABEwA+AQABKwBmAQMBKwGaAiABKwBmASABEwA+AUABEwA+AUAB
KwBmAWABKwBmAWABEwA+AWMBiwOABGMBgwNnBGMBKwGaAmMBcwNmAWMBewNZBIABKwBmAaABKwBm
AcABEwA+AcABKwBmAeABKwBmAQACKwBmAQACEwA+AckCowOLBckCkwM+AckCwwMPB8kCmwMgB+kC
owOLBekCmwP7BQkDowOLBQkDkwM+AQkDmwOYBykDmwN4BykDowOLBUkDowOLBUkDqwNmAUkDmwPZ
B2kDowOLBWkDkwM+AWkDmwNKBYkDmwMGCIkDowOLBYkDswM7BqkDqwNmAakDowOLBakDmwOZBckD
mwPGBckDowPwBekDmwMSBukDowPwBQkEmwNBBgkEswM7BgkEowPwBSkEuwPcBikEmwPlBikEowOn
BkkEowOnBkkEmwNpBkkEkwM+AWkEmwNNB2kEowOnBmkEywM8B4kEqwNmAYkEmwOyBokEowOnBkAF
KwGaAmAFKwGaAocBjAGRAZYB5gHqAfUB+gEJAgkCkQKgAqsC5gG5AsQCLgNlA20DqwL6AfoB5gH6
AfoB5gH6AfoB+gH6AfoB6gHmAfoB+gG3A98DFgRABOYB5gEEAAEABgAFAAcABgALABYAAAB0AU8A
AAAtAlQAAADcAVkAAAA5Al4AAAD1ApgAAAAgBdQAAAAzBdkAAAA5Bd0AAABGBdkAAABLBd0AAABX
BdkAAABfBd0AAABuBdkAAAB1Bd0AAACDBdkAAACGBd0AAACQBeEAAACYBd0AAACnBdkAAACyBd0A
AADEBdQAAACtCdkAAAC1CdkAAAC9Cd0AAADQCdkAAADZCdkAAADqCd0AAAD9CdkAAAAGCtkAAAAX
CtkAAAAgCtkAAAAqCtkAAAA4CjQBAABCCt0AAABSCtkAAABYCtkAAgAEAAMAAgAFAAUAAgAGAAcA
AgAHAAkAAgAPAAsAAgASAA0AAQATAA8AAQAUABEAAQAVABMAAQAWABUAAQAXABcAAQAYABkAAQAZ
ABsAAQAaAB0AAQAbAB8AAQAcACEAAQAdACMAAQAeACUAAQAfACcAAQAgACkAAgAhACsAAgAxAC0A
AQAyAC0AAgAzAC8AAQA0AC8AAgA1ADEAAQA2ADEAAQA4ADMAAgA3ADMAAgA5ADUAAQA6ADUAAgA7
ADcAAQA8ADcAAQA+ADkAAgA9ADkAAgA/ADsAAQBAADsAAQBCAD0AAgBBAD0AAQBEAD8AAgBDAD8A
AgBFAEEAAQBGAEEAAQBIAEMAAgBHAEMAAgBJAEUAAQBKAEUAAgBLAEcAAQBMAEcAAgBNAEkAAQBO
AEkAdQB1AIgAawFyAXkBgAF4An8C+wJiA5UDqAPNA9YDAAQEgAAAAAAAAAAAAAAAAAAAAAC2AAAA
BAAAAAAAAAAAAAAAAQAKAAAAAAAKAAAAAAAAAAAAAAAKABMAAAAAAAEAAAAAAAAAAAAAAJ0AAQMA
AAAADAAAAAAAAAAAAAAApgA/AwAAAAAMAAAAAAAAAAAAAACmAI0DAAAAAAEABgAAAAAAAAAAABMB
dggAAAAABAAAAAAAAAAAAAAAAQB9AQAAAAACAAAAAAAAAAAAAAABAH0BAAAAAAIAAAAAAAAAAAAA
AAEACgAAAAAABAAAAAAAAAAAAAAAAQDSEAAAAAACAAAAAAAAAAAAAAABANIQAAAAAAwAAAAAAAAA
AAAAAKYA+xAAAAAADAAAAAAAAAAAAAAApgCsEQAAAAAFAAQABgAEAAAAEAAMAIMCAAAQABkAgwIA
AAAAGwCDAi0ABAItAIYCAAAAPE1vZHVsZT4AbXNjb3JsaWIATWljcm9zb2Z0LlZpc3VhbEJhc2lj
AE15QXBwbGljYXRpb24AU2NyaXB0Q29tcG9uZW50XzZmZGM2OGQ4ZmRkMDQyMGQ5YmFiMmQ4MGYz
NGM1OWVjLk15AE15Q29tcHV0ZXIATXlQcm9qZWN0AE15V2ViU2VydmljZXMAVGhyZWFkU2FmZU9i
amVjdFByb3ZpZGVyYDEAT3V0cHV0QnVmZmVyAFNjcmlwdENvbXBvbmVudF82ZmRjNjhkOGZkZDA0
MjBkOWJhYjJkODBmMzRjNTllYwBVc2VyQ29tcG9uZW50AENvbm5lY3Rpb25zAFZhcmlhYmxlcwBT
Y3JpcHRNYWluAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5BcHBsaWNhdGlvblNlcnZpY2VzAEFwcGxp
Y2F0aW9uQmFzZQAuY3RvcgBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuRGV2aWNlcwBDb21wdXRlcgBT
eXN0ZW0AT2JqZWN0AC5jY3RvcgBnZXRfQ29tcHV0ZXIAbV9Db21wdXRlck9iamVjdFByb3ZpZGVy
AGdldF9BcHBsaWNhdGlvbgBtX0FwcE9iamVjdFByb3ZpZGVyAFVzZXIAZ2V0X1VzZXIAbV9Vc2Vy
T2JqZWN0UHJvdmlkZXIAZ2V0X1dlYlNlcnZpY2VzAG1fTXlXZWJTZXJ2aWNlc09iamVjdFByb3Zp
ZGVyAEFwcGxpY2F0aW9uAFdlYlNlcnZpY2VzAEVxdWFscwBvAEdldEhhc2hDb2RlAFR5cGUAR2V0
VHlwZQBUb1N0cmluZwBDcmVhdGVfX0luc3RhbmNlX18AVABpbnN0YW5jZQBEaXNwb3NlX19JbnN0
YW5jZV9fAGdldF9HZXRJbnN0YW5jZQBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuTXlTZXJ2aWNlcy5J
bnRlcm5hbABDb250ZXh0VmFsdWVgMQBtX0NvbnRleHQAR2V0SW5zdGFuY2UAQ296eVJvYy5TU0lT
UGx1cy4yMDE0AENvenlSb2MuU3FsU2VydmVyLlNTSVMAU2NyaXB0QnVmZmVyUGx1cwBNaWNyb3Nv
ZnQuU3FsU2VydmVyLlR4U2NyaXB0AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRHRzLlBpcGVsaW5lAFNj
cmlwdENvbXBvbmVudABNaWNyb3NvZnQuU3FsU2VydmVyLlBpcGVsaW5lSG9zdABQaXBlbGluZUJ1
ZmZlcgBPdXRwdXROYW1lTWFwAENvbXBvbmVudABPYmplY3RJRABJc0lucHV0AEJ1ZmZlcgBPdXRw
dXRNYXAAZ2V0X1N0YXRpY0lucHV0Q29sdW1ucwBzZXRfdGl0bGUAVmFsdWUAc2V0X3RpdGxlX0lz
TnVsbABzZXRfbGluawBzZXRfbGlua19Jc051bGwAc2V0X2NvbnRlbnQAc2V0X2NvbnRlbnRfSXNO
dWxsAHNldF9hdXRob3IAc2V0X2F1dGhvcl9Jc051bGwAc2V0X2lkAHNldF9pZF9Jc051bGwARGF0
ZVRpbWUAc2V0X3VwZGF0ZWQAc2V0X3VwZGF0ZWRfSXNOdWxsAHNldF9leHRlbnNpb25zAHNldF9l
eHRlbnNpb25zX0lzTnVsbABnZXRfU3RhdGljT3V0cHV0Q29sdW1ucwBBZGRSb3cAU2V0RW5kT2ZS
b3dzZXQARW5kT2ZSb3dzZXQAU3RhdGljSW5wdXRDb2x1bW5zAHRpdGxlAHRpdGxlX0lzTnVsbABs
aW5rAGxpbmtfSXNOdWxsAGNvbnRlbnQAY29udGVudF9Jc051bGwAYXV0aG9yAGF1dGhvcl9Jc051
bGwAaWQAaWRfSXNOdWxsAHVwZGF0ZWQAdXBkYXRlZF9Jc051bGwAZXh0ZW5zaW9ucwBleHRlbnNp
b25zX0lzTnVsbABTdGF0aWNPdXRwdXRDb2x1bW5zAFNjcmlwdENvbXBvbmVudFBsdXMARmluaXNo
T3V0cHV0cwBNYXJrT3V0cHV0c0ZpbmlzaGVkAFByaW1lT3V0cHV0AE91dHB1dHMAT3V0cHV0SURz
AEJ1ZmZlcnMAQ3JlYXRlTmV3T3V0cHV0Um93cwBQYXJlbnRDb21wb25lbnQAR2V0UHJvcGVydGll
cwBWYWxpZGF0ZQBlcnJNZXNzYWdlAEdldFNlcnZpY2VzAGdldF9TZXJ2aWNlAHNldF9TZXJ2aWNl
AHZhbHVlAGdldF9CYXNlVXJsAHNldF9CYXNlVXJsAGdldF9Jc1VzZXJuYW1lVmFyaWFibGUAc2V0
X0lzVXNlcm5hbWVWYXJpYWJsZQBnZXRfVXNlcm5hbWUAc2V0X1VzZXJuYW1lAGdldF9Vc2VybmFt
ZVZhcmlhYmxlAHNldF9Vc2VybmFtZVZhcmlhYmxlAGdldF9Jc1Bhc3N3b3JkVmFyaWFibGUAc2V0
X0lzUGFzc3dvcmRWYXJpYWJsZQBnZXRfUGFzc3dvcmQAc2V0X1Bhc3N3b3JkAGdldF9QYXNzd29y
ZFZhcmlhYmxlAHNldF9QYXNzd29yZFZhcmlhYmxlAGdldF9Qcm94eVVybABzZXRfUHJveHlVcmwA
Z2V0X1Byb3h5VXNlcgBzZXRfUHJveHlVc2VyAGdldF9Qcm94eVBhc3N3b3JkAHNldF9Qcm94eVBh
c3N3b3JkAGdldF9CYXRjaFNpemUAc2V0X0JhdGNoU2l6ZQBnZXRfSXNRdWVyeVZhcmlhYmxlAHNl
dF9Jc1F1ZXJ5VmFyaWFibGUAZ2V0X1F1ZXJ5AHNldF9RdWVyeQBnZXRfUXVlcnlWYXJpYWJsZQBz
ZXRfUXVlcnlWYXJpYWJsZQBHb29nbGUuR0RhdGEuQ2xpZW50AEF0b21FbnRyeQBHZXRMaW5rc18A
ZW50cnkAR2V0QXV0aG9yc18AR2V0RXh0ZW5zaW9uc18AR2V0VmFyaWFibGVfAHZhck5hbWUARmly
ZUluZm9ybWF0aW9uXwBtZXNzYWdlAEZpcmVFcnJvcl8AbV9zZXJ2aWNlAG1fYmFzZVVybABtX2lz
VXNlclZhcgBtX3VzZXJuYW1lAG1faXNQYXNzVmFyAG1fcGFzc3dvcmQAbV9wcm94eVVybABtX3By
b3h5VXNlcgBtX3Byb3h5UGFzc3dvcmQAbV9iYXRjaFNpemUAbV9pc1F1ZXJ5VmFyAG1fcXVlcnkA
U3lzdGVtLkNvbGxlY3Rpb25zAEhhc2h0YWJsZQBtX3NlcnZpY2VMaXN0AFNlcnZpY2UAQmFzZVVy
bABJc1VzZXJuYW1lVmFyaWFibGUAVXNlcm5hbWUAVXNlcm5hbWVWYXJpYWJsZQBJc1Bhc3N3b3Jk
VmFyaWFibGUAUGFzc3dvcmQAUGFzc3dvcmRWYXJpYWJsZQBQcm94eVVybABQcm94eVVzZXIAUHJv
eHlQYXNzd29yZABCYXRjaFNpemUASXNRdWVyeVZhcmlhYmxlAFF1ZXJ5AFF1ZXJ5VmFyaWFibGUA
U3lzdGVtLkNvbXBvbmVudE1vZGVsAEVkaXRvckJyb3dzYWJsZUF0dHJpYnV0ZQBFZGl0b3JCcm93
c2FibGVTdGF0ZQBTeXN0ZW0uQ29kZURvbS5Db21waWxlcgBHZW5lcmF0ZWRDb2RlQXR0cmlidXRl
AFN5c3RlbS5EaWFnbm9zdGljcwBEZWJ1Z2dlckhpZGRlbkF0dHJpYnV0ZQBNaWNyb3NvZnQuVmlz
dWFsQmFzaWMuQ29tcGlsZXJTZXJ2aWNlcwBTdGFuZGFyZE1vZHVsZUF0dHJpYnV0ZQBIaWRlTW9k
dWxlTmFtZUF0dHJpYnV0ZQBTeXN0ZW0uQ29tcG9uZW50TW9kZWwuRGVzaWduAEhlbHBLZXl3b3Jk
QXR0cmlidXRlAFN5c3RlbS5SdW50aW1lLkNvbXBpbGVyU2VydmljZXMAUnVudGltZUhlbHBlcnMA
R2V0T2JqZWN0VmFsdWUAUnVudGltZVR5cGVIYW5kbGUAR2V0VHlwZUZyb21IYW5kbGUAQWN0aXZh
dG9yAENyZWF0ZUluc3RhbmNlAE15R3JvdXBDb2xsZWN0aW9uQXR0cmlidXRlAGdldF9WYWx1ZQBz
ZXRfVmFsdWUAU3lzdGVtLlJ1bnRpbWUuSW50ZXJvcFNlcnZpY2VzAENvbVZpc2libGVBdHRyaWJ1
dGUAU3RyaW5nAHNldF9JdGVtAFNldE51bGwASW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbgBTY3Jp
cHRCdWZmZXIAQ0xTQ29tcGxpYW50QXR0cmlidXRlAEdldE91dHB1dElEAEFkZABGZWVkUXVlcnkA
U3lzdGVtLk5ldABXZWJQcm94eQBHRGF0YVJlcXVlc3RGYWN0b3J5AEF0b21GZWVkAEV4Y2VwdGlv
bgBDb252ZXJzaW9ucwBzZXRVc2VyQ3JlZGVudGlhbHMASXNOdWxsT3JFbXB0eQBzZXRfVXNlRGVm
YXVsdENyZWRlbnRpYWxzAE5ldHdvcmtDcmVkZW50aWFsAElDcmVkZW50aWFscwBzZXRfQ3JlZGVu
dGlhbHMASUdEYXRhUmVxdWVzdEZhY3RvcnkAZ2V0X1JlcXVlc3RGYWN0b3J5AElXZWJQcm94eQBz
ZXRfUHJveHkARm9ybWF0AHNldF9OdW1iZXJUb1JldHJpZXZlAHNldF9FeHRyYVBhcmFtZXRlcnMA
QXRvbUVudHJ5Q29sbGVjdGlvbgBnZXRfRW50cmllcwBBdG9tQ29sbGVjdGlvbkJhc2VgMQBnZXRf
Q291bnQAZ2V0X0l0ZW0AQXRvbUlkAGdldF9JZABBdG9tQmFzZUxpbmsAQXRvbVVyaQBnZXRfVXJp
AGdldF9Db250ZW50AEF0b21UZXh0Q29uc3RydWN0AGdldF9UaXRsZQBnZXRfVGV4dABBdG9tQ29u
dGVudABnZXRfVXBkYXRlZABnZXRfTmV4dENodW5rAGdldF9TdGFydEluZGV4AHNldF9TdGFydElu
ZGV4AFByb2plY3REYXRhAFNldFByb2plY3RFcnJvcgBnZXRfTWVzc2FnZQBDbGVhclByb2plY3RF
cnJvcgBBcnJheUxpc3QASW50ZXJhY3Rpb24ASUlmAEFycmF5AFRvQXJyYXkAQXBwbGljYXRpb25F
eGNlcHRpb24ASUNvbGxlY3Rpb24AZ2V0X0tleXMAQ29weVRvAE9wZXJhdG9ycwBDb21wYXJlU3Ry
aW5nAEVtcHR5AEF0b21MaW5rAFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljAElFbnVtZXJhdG9y
YDEAQXRvbUxpbmtDb2xsZWN0aW9uAGdldF9MaW5rcwBHZXRFbnVtZXJhdG9yAGdldF9DdXJyZW50
AENvbmNhdABnZXRfSFJlZgBJRW51bWVyYXRvcgBNb3ZlTmV4dABJRGlzcG9zYWJsZQBEaXNwb3Nl
AEF0b21QZXJzb24AQXRvbVBlcnNvbkNvbGxlY3Rpb24AZ2V0X0F1dGhvcnMAZ2V0X0VtYWlsAEdv
b2dsZS5HRGF0YS5FeHRlbnNpb25zAFhtbEV4dGVuc2lvbgBJRXh0ZW5zaW9uRWxlbWVudEZhY3Rv
cnkAQXRvbUJhc2UARXh0ZW5zaW9uTGlzdABnZXRfRXh0ZW5zaW9uRWxlbWVudHMAU3lzdGVtLlht
bABYbWxOb2RlAGdldF9Ob2RlAGdldF9PdXRlclhtbABNaWNyb3NvZnQuU3FsU2VydmVyLkRUU1J1
bnRpbWVXcmFwAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRHRzLlJ1bnRpbWUuV3JhcHBlcgBJRFRTVmFy
aWFibGVzMTAwAElEVFNWYXJpYWJsZURpc3BlbnNlcjEwMABnZXRfVmFyaWFibGVEaXNwZW5zZXIA
TG9ja09uZUZvclJlYWQASURUU1ZhcmlhYmxlMTAwAFVubG9jawBNaWNyb3NvZnQuU3FsU2VydmVy
LkRUU1BpcGVsaW5lV3JhcABNaWNyb3NvZnQuU3FsU2VydmVyLkR0cy5QaXBlbGluZS5XcmFwcGVy
AElEVFNDb21wb25lbnRNZXRhRGF0YTEwMABnZXRfQ29tcG9uZW50TWV0YURhdGEARmlyZUluZm9y
bWF0aW9uAEZpcmVFcnJvcgBTU0lTU2NyaXB0Q29tcG9uZW50RW50cnlQb2ludEF0dHJpYnV0ZQBD
b3p5Um9jLlNxbFNlcnZlci5TU0lTLkF0dHJpYnV0ZXMAVmFsaWRhdGVQcm9wZXJ0aWVzQXR0cmli
dXRlAEZpbHRlclByb3BlcnRpZXNBdHRyaWJ1dGUAU29ydFByb3BlcnRpZXNBdHRyaWJ1dGUAUmVm
cmVzaFByb3BlcnRpZXNBdHRyaWJ1dGUAUmVmcmVzaFByb3BlcnRpZXMARGVzY3JpcHRpb25BdHRy
aWJ1dGUAQ2F0ZWdvcnlBdHRyaWJ1dGUAVmFyaWFibGVBdHRyaWJ1dGUAUGFzc3dvcmRQcm9wZXJ0
eVRleHRBdHRyaWJ1dGUARGVmYXVsdFZhbHVlQXR0cmlidXRlAExpc3RBdHRyaWJ1dGUAVGV4dERp
YWxvZ0F0dHJpYnV0ZQBDb21waWxhdGlvblJlbGF4YXRpb25zQXR0cmlidXRlAFJ1bnRpbWVDb21w
YXRpYmlsaXR5QXR0cmlidXRlAFN5c3RlbS5SdW50aW1lLlZlcnNpb25pbmcAVGFyZ2V0RnJhbWV3
b3JrQXR0cmlidXRlAFNjcmlwdENvbXBvbmVudF82ZmRjNjhkOGZkZDA0MjBkOWJhYjJkODBmMzRj
NTllYy5kbGwAAACAm0kAcwBOAHUAbABsACAAcAByAG8AcABlAHIAdAB5ACAAYwBhAG4AbgBvAHQA
IABiAGUAIABzAGUAdAAgAHQAbwAgAEYAYQBsAHMAZQAuACAAQQBzAHMAaQBnAG4AIABhACAAdgBh
AGwAdQBlACAAdABvACAAdABoAGUAIABjAG8AbAB1AG0AbgAgAGkAbgBzAHQAZQBhAGQALgAAC3QA
aQB0AGwAZQAACWwAaQBuAGsAAA9jAG8AbgB0AGUAbgB0AAANYQB1AHQAaABvAHIAAAVpAGQAAA91
AHAAZABhAHQAZQBkAAAVZQB4AHQAZQBuAHMAaQBvAG4AcwAADU8AdQB0AHAAdQB0AAATYQBuAGEA
bAB5AHQAaQBjAHMAAFdoAHQAdABwAHMAOgAvAC8AdwB3AHcALgBnAG8AbwBnAGwAZQAuAGMAbwBt
AC8AYQBuAGEAbAB5AHQAaQBjAHMALwBmAGUAZQBkAHMALwBkAGEAdABhAAAJYQBwAHAAcwAAS2gA
dAB0AHAAcwA6AC8ALwBhAHAAcABzAC0AYQBwAGkAcwAuAGcAbwBvAGcAbABlAC4AYwBvAG0ALwBh
AC8AZgBlAGUAZABzAC8AAQ9iAGwAbwBnAGcAZQByAAABAAVjAGwAABVjAG8AZABlAHMAZQBhAHIA
YwBoAAAFYwBwAABRaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGcAbwBvAGcAbABlAC4AYwBvAG0ALwBt
ADgALwBmAGUAZQBkAHMALwBjAG8AbgB0AGEAYwB0AHMALwAAC2cAYgBhAHMAZQAAN2gAdAB0AHAA
OgAvAC8AdwB3AHcALgBnAG8AbwBnAGwAZQAuAGMAbwBtAC8AYgBhAHMAZQAvAAANaABlAGEAbAB0
AGgAAEloAHQAdABwAHMAOgAvAC8AdwB3AHcALgBnAG8AbwBnAGwAZQAuAGMAbwBtAC8AaABlAGEA
bAB0AGgALwBmAGUAZQBkAHMALwAAB2wAaAAyAABfaAB0AHQAcAA6AC8ALwBwAGkAYwBhAHMAYQB3
AGUAYgAuAGcAbwBvAGcAbABlAC4AYwBvAG0ALwBkAGEAdABhAC8AZgBlAGUAZAAvAGEAcABpAC8A
dQBzAGUAcgAvAAANdwBlAGEAdgBlAHIAAEFoAHQAdABwAHMAOgAvAC8AdwB3AHcALgBnAG8AbwBn
AGwAZQAuAGMAbwBtAC8AaAA5AC8AZgBlAGUAZABzAC8AAAl3AGkAcwBlAABLaAB0AHQAcAA6AC8A
LwBzAHAAcgBlAGEAZABzAGgAZQBlAHQAcwAuAGcAbwBvAGcAbABlAC4AYwBvAG0ALwBmAGUAZQBk
AHMALwAAD3cAcgBpAHQAZQBsAHkAAGNoAHQAdABwADoALwAvAGQAbwBjAHMALgBnAG8AbwBnAGwA
ZQAuAGMAbwBtAC8AZgBlAGUAZABzAC8AZABlAGYAYQB1AGwAdAAvAHAAcgBpAHYAYQB0AGUALwBm
AHUAbABsAAAPeQBvAHUAdAB1AGIAZQAAR2gAdAB0AHAAOgAvAC8AZwBkAGEAdABhAC4AeQBvAHUA
dAB1AGIAZQAuAGMAbwBtAC8AZgBlAGUAZABzAC8AYQBwAGkALwAANUMAbwB6AHkAUgBvAGMAIABH
AG8AbwBnAGwAZQAgAEQAYQB0AGEAIABTAG8AdQByAGMAZQAAJUUAeABlAGMAdQB0AGUAIABxAHUA
ZQByAHkAOgAgAHsAMAB9AAAPUwBlAHIAdgBpAGMAZQAAD0IAYQBzAGUAVQByAGwAACVJAHMAVQBz
AGUAcgBuAGEAbQBlAFYAYQByAGkAYQBiAGwAZQAAIVUAcwBlAHIAbgBhAG0AZQBWAGEAcgBpAGEA
YgBsAGUAABFVAHMAZQByAG4AYQBtAGUAACVJAHMAUABhAHMAcwB3AG8AcgBkAFYAYQByAGkAYQBi
AGwAZQAAIVAAYQBzAHMAdwBvAHIAZABWAGEAcgBpAGEAYgBsAGUAABFQAGEAcwBzAHcAbwByAGQA
ABFQAHIAbwB4AHkAVQByAGwAABNQAHIAbwB4AHkAVQBzAGUAcgAAG1AAcgBvAHgAeQBQAGEAcwBz
AHcAbwByAGQAABNCAGEAdABjAGgAUwBpAHoAZQAAH0kAcwBRAHUAZQByAHkAVgBhAHIAaQBhAGIA
bABlAAAbUQB1AGUAcgB5AFYAYQByAGkAYQBiAGwAZQAAC1EAdQBlAHIAeQAALVMAZQBsAGUAYwB0
ACAARwBvAG8AZwBsAGUAIABzAGUAcgB2AGkAYwBlAC4AACNTAHAAZQBjAGkAZgB5ACAAYgBhAHMA
ZQAgAFUAUgBMAC4AADVTAHAAZQBjAGkAZgB5ACAAcwBlAHIAdgBpAGMAZQAgAHUAcwBlAHIAIABu
AGEAbQBlAC4AADNTAHAAZQBjAGkAZgB5ACAAcwBlAHIAdgBpAGMAZQAgAHAAYQBzAHMAdwBvAHIA
ZAAuAAAFDQAKAAAXPABlAHgAdABlAG4AcwBpAG8AbgA+AAAZPAAvAGUAeAB0AGUAbgBzAGkAbwBu
AD4AACVHAG8AbwBnAGwAZQAgAEQAYQB0AGEAIABTAG8AdQByAGMAZQAAAADgcYPUpxGlSZrdZZO2
FBl0AAi3elxWGTTgiQiwP19/EdUKOgMgAAEDAAABBAAAEgwHBhUSGAESDAQAABIIBwYVEhgBEggE
AAASEQcGFRIYARIRBAAAEhQHBhUSGAESFAQIABIMBAgAEggECAASEQQIABIUBCABAhwDIAAIBCAA
EhUDIAAOAh4ABxABAR4AHgAHMAEBARAeAAITAAQgABMABwYVEhkBEwAEKAATAAgWz0kLuAw06giJ
hF3NgIDMkQsgBQESIQgCEiUSKQQgAB0OBCABAQ4EIAEBAgUgAQERLQMgAAIEKAAdDgMoAA4DKAAC
BCgAES0DBhIkAwYSKAMGEhwLIAQBCB0IHRIlEikDBhIhBSABARIhBSABAhAOBCABAQgIBKWcqbAn
ODAFIAEOEjUEIAEcDgIGDgIGAgIGCAMGEjkDKAAIBSABARFBCAEAAQAAAAAABSACAQ4OGAEACk15
VGVtcGxhdGUIMTAuMC4wLjAAAAQBAAAABhUSGAESDAYVEhgBEggGFRIYARIRBhUSGAESFAQHARIM
BAcBEggEBwESEQQHARIUEAEAC015LkNvbXB1dGVyAAAMAQAHTXkuVXNlcgAAEwEADk15LldlYlNl
cnZpY2VzAAATAQAOTXkuQXBwbGljYXRpb24AAAQAARwcAwcBAgMHAQgGAAESFRFdBAcBEhUDBwEO
BRABAB4ABAoBHgAEBwEeAAcgBAEODg4OYQEANFN5c3RlbS5XZWIuU2VydmljZXMuUHJvdG9jb2xz
LlNvYXBIdHRwQ2xpZW50UHJvdG9jb2wSQ3JlYXRlX19JbnN0YW5jZV9fE0Rpc3Bvc2VfX0luc3Rh
bmNlX18AAAAGFRIYARMABhUSGQETAAQKARMABSABARMACAcDEwATABMABQEAAAAABAcBHQ4FIAIB
CBwGBwIdDh0OBgACCBIpDgQHAggIBSACARwcBAcBEjkEAAEOHAQAAQIOBiABARKAnQUgABKAoQYg
AQESgKkFAAIODhwHIAESgI0SfQUgABKArQcVEoCxARI1BSABEjUIBSAAEoC1BSAAEoC9BSAAEoDB
BSAAEoDFBSAAEYDJBgABARKAkR8HDw4SfQ4SgIEOEoCFEoCJEoCNCBI1CBKAkQgSHBJ9BCABCBwG
AAMcAhwcByABEoDZEhUCHQ4HBwIdDhKA0QcHAwICEoCRBSAAEoDhByACARKA2QgGAAMIDg4CBCAB
HBwFIAASgPEIFRKAsQESgOkJIAAVEoD1ARMACBUSgO0BEoDpBQACDg4ODwcEDg4SgOkVEoDtARKA
6QUgABKBBQgVEoCxARKBAQgVEoDtARKBAQ8HBA4OEoEBFRKA7QESgQEFIAASgRUKIAAVEoD1ARKB
DQgVEoDtARKBDQUgABKBHQYAAw4ODg4PBwQODhKBCRUSgO0BEoENBSAAEoElCCACAQ4QEoEhBiAB
EoEpHAMgABwHBwMcHBKBIQUgABKBLQogBgEIDg4OCBACDQEACFZhbGlkYXRlAAASAQANR2V0UHJv
cGVydGllcwAABSABAR0OgMEBAA8AAAAHU2VydmljZQdCYXNlVXJsEklzVXNlcm5hbWVWYXJpYWJs
ZQhVc2VybmFtZRBVc2VybmFtZVZhcmlhYmxlEklzUGFzc3dvcmRWYXJpYWJsZQhQYXNzd29yZBBQ
YXNzd29yZFZhcmlhYmxlCFByb3h5VXJsCVByb3h5VXNlcg1Qcm94eVBhc3N3b3JkCUJhdGNoU2l6
ZQ9Jc1F1ZXJ5VmFyaWFibGUFUXVlcnkNUXVlcnlWYXJpYWJsZQAABiABARGBRUABADtTcGVjaWZp
ZXMgaWYgUGFzc3dvcmQgcHJvcGVydHkgcmVmZXJlbmNlcyBwYWNrYWdlIHZhcmlhYmxlLgAADQEA
CAlTZXJ2aWNlAAAsAQAnU3BlY2lmaWVzIHZhcmlhYmxlIGNvbnRhaW5pbmcgcGFzc3dvcmQuAAAp
AQAkU3BlY2lmeSBwcm94eSBzZXJ2ZXIgVVJMIChvcHRpb25hbCkuAAAKAQAFUHJveHkAABYBABFT
cGVjaWZ5IGJhc2UgVVJMLgAAKAEAI1NwZWNpZnkgcHJveHkgdXNlciBuYW1lIChvcHRpb25hbCku
AAAFAQABAAAnAQAiU3BlY2lmeSBwcm94eSBwYXNzd29yZCAob3B0aW9uYWwpLgAAPQEAOFNwZWNp
ZmllcyBpZiBRdWVyeSBwcm9wZXJ0eSByZWZlcmVuY2VzIHBhY2thZ2UgdmFyaWFibGUuAAAKAQAF
UXVlcnkAACkBACRTcGVjaWZpZXMgdmFyaWFibGUgY29udGFpbmluZyBxdWVyeS4AAAgBAGQAAAAA
ACkBACRTcGVjaWZ5IGJhdGNoIG51bWJlciBvZiByb3dzIHRvIGdldC4AABABAAtHZXRTZXJ2aWNl
cwAAGwEAFlNlbGVjdCBHb29nbGUgc2VydmljZS4AABABAAtFbnRlciBxdWVyeQAAKgEAJVNwZWNp
ZnkgcXVlcnkgc3RyaW5nIHdpdGggcGFyYW1ldGVycy4AAB8BABpTcGVjaWZ5IHNlcnZpY2UgdXNl
ciBuYW1lLgAAQAEAO1NwZWNpZmllcyBpZiBVc2VybmFtZSBwcm9wZXJ0eSByZWZlcmVuY2VzIHBh
Y2thZ2UgdmFyaWFibGUuAAAsAQAnU3BlY2lmaWVzIHZhcmlhYmxlIGNvbnRhaW5pbmcgdXNlcm5h
bWUuAAAeAQAZU3BlY2lmeSBzZXJ2aWNlIHBhc3N3b3JkLgAACAEACAAAAAAAHgEAAQBUAhZXcmFw
Tm9uRXhjZXB0aW9uVGhyb3dzAUcBABouTkVURnJhbWV3b3JrLFZlcnNpb249djQuMAEAVA4URnJh
bWV3b3JrRGlzcGxheU5hbWUQLk5FVCBGcmFtZXdvcmsgNAAAAFRlAAAAAAAAAAAAAG5lAAAAIAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABgZQAAAAAAAAAAAAAAAF9Db3JEbGxNYWluAG1zY29yZWUuZGxs
AAAAAAD/JQAgABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAAAAYAACAAAAAAAAAAAAAAAAA
AAABAAEAAAAwAACAAAAAAAAAAAAAAAAAAAABAAAAAABIAAAAWIAAAOwCAAAAAAAAAAAAAOwCNAAA
AFYAUwBfAFYARQBSAFMASQBPAE4AXwBJAE4ARgBPAAAAAAC9BO/+AAABAAAAAAAAAAAAAAAAAAAA
AAA/AAAAAAAAAAQAAAACAAAAAAAAAAAAAAAAAAAARAAAAAEAVgBhAHIARgBpAGwAZQBJAG4AZgBv
AAAAAAAkAAQAAABUAHIAYQBuAHMAbABhAHQAaQBvAG4AAAAAAAAAsARMAgAAAQBTAHQAcgBpAG4A
ZwBGAGkAbABlAEkAbgBmAG8AAAAoAgAAAQAwADAAMAAwADAANABiADAAAAAsAAIAAQBGAGkAbABl
AEQAZQBzAGMAcgBpAHAAdABpAG8AbgAAAAAAIAAAADAACAABAEYAaQBsAGUAVgBlAHIAcwBpAG8A
bgAAAAAAMAAuADAALgAwAC4AMAAAAIwANQABAEkAbgB0AGUAcgBuAGEAbABOAGEAbQBlAAAAUwBj
AHIAaQBwAHQAQwBvAG0AcABvAG4AZQBuAHQAXwA2AGYAZABjADYAOABkADgAZgBkAGQAMAA0ADIA
MABkADkAYgBhAGIAMgBkADgAMABmADMANABjADUAOQBlAGMALgBkAGwAbAAAAAAAKAACAAEATABl
AGcAYQBsAEMAbwBwAHkAcgBpAGcAaAB0AAAAIAAAAJQANQABAE8AcgBpAGcAaQBuAGEAbABGAGkA
bABlAG4AYQBtAGUAAABTAGMAcgBpAHAAdABDAG8AbQBwAG8AbgBlAG4AdABfADYAZgBkAGMANgA4
AGQAOABmAGQAZAAwADQAMgAwAGQAOQBiAGEAYgAyAGQAOAAwAGYAMwA0AGMANQA5AGUAYwAuAGQA
bABsAAAAAAA0AAgAAQBQAHIAbwBkAHUAYwB0AFYAZQByAHMAaQBvAG4AAAAwAC4AMAAuADAALgAw
AAAAOAAIAAEAQQBzAHMAZQBtAGIAbAB5ACAAVgBlAHIAcwBpAG8AbgAAADAALgAwAC4AMAAuADAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABgAAAMAAAAgDUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA]]></arrayElement></arrayElements></property><property id="9" name="UserComponentTypeName" dataType="System.String">CozyRoc.SqlServer.SSIS.ScriptComponentHostPlus, CozyRoc.SSISPlus.2014, 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_6fdc68d8fdd0420d9bab2d80f34c59ec</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=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91">VisualBasic</property></properties><outputs><output id="14" name="Output" hasSideEffects="true"><outputColumns><outputColumn id="15" name="title" description="The title of the item." lineageId="15" length="100" dataType="wstr" /><outputColumn id="16" name="link" description="The URL of the item." lineageId="16" length="500" dataType="wstr" /><outputColumn id="17" name="content" description="The item synopsis." lineageId="17" length="4000" dataType="wstr" /><outputColumn id="18" name="author" description="Email address of the author of the item." lineageId="18" length="254" dataType="wstr" /><outputColumn id="19" name="id" description="A string that uniquely identifies the item." lineageId="19" length="500" dataType="wstr" /><outputColumn id="20" name="updated" description="Indicates when the item was published." lineageId="20" dataType="dbTimeStamp" /><outputColumn id="21" name="extensions" lineageId="21" length="4000" dataType="wstr" /></outputColumns><externalMetadataColumns /></output></outputs></component>