<?xml version="1.0"?>
<ScriptProject Name="ScriptTask_fd0c0833c62f4d99a46fb4cd64df57ea" VSTAMajorVersion="3" VSTAMinorVersion="0" Language="VisualBasic">
  <ProjectItem Name="ScriptMain.vb" Encoding="UTF8">
<![CDATA[' Microsoft SQL Server Integration Services Script Task
'
' Copyright (c) 2007 CozyRoc LLC
' 
' Permission is hereby granted, free of charge, to any person
' obtaining a copy of this software and associated documentation
' files (the "Software"), to deal in the Software without
' restriction, including without limitation the rights to use,
' copy, modify, merge, publish, distribute, sublicense, and/or sell
' copies of the Software, and to permit persons to whom the
' Software is furnished to do so, subject to the following
' conditions:
' 
' The above copyright notice and this permission notice shall be
' included in all copies or substantial portions of the Software.
' 
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
' EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
' OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
' NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
' HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
' WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
' FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
' OTHER DEALINGS IN THE SOFTWARE.

Imports System
Imports System.ComponentModel
Imports System.Collections
Imports System.Xml
Imports System.Xml.Serialization
Imports System.Data
Imports System.Data.OleDb

Imports Microsoft.SqlServer.Dts.Runtime
Imports CozyRoc.SqlServer.SSIS
Imports CozyRoc.SqlServer.SSIS.Attributes


<SortProperties(New String() {"PackageConnection", "ConfigurationEnvironment", "ConfigurationWorksheet"})> _
<Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute> _
<System.CLSCompliantAttribute(False)> _
Partial Public Class ScriptMain
	Inherits Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase

	Enum ScriptResults
		Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success
		Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
	End Enum
    Private Class Consts
        Public Const ExcelAdoConnectString_1P As String = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source={0};"
    End Class


    ' The execution engine calls this method when the task executes.
    ' To access the object model, use the Dts object. Connections, variables, events,
    ' and logging features are available as static members of the Dts class.
    ' Before returning from this method, set the value of Dts.TaskResult to indicate success or failure.
    ' 
    ' To open Code and Text Editor Help, press F1.
    ' To open Object Browser, press Ctrl+Alt+J.

    Public Sub Main()
        Dim result As Integer

        result = ScriptResults.Success

        Try
            Call SetupConfiguration_()
        Catch ex As Exception
            result = ScriptResults.Failure
            Call Dts.Events.FireError(0, String.Empty, ex.Message, String.Empty, 0)
        End Try

        Dts.TaskResult = result
    End Sub ' Main


    <Connection("PackageConnectionType")> _
    <Description("Specifies the name of the Package connection manager.")> _
    Public Property PackageConnection() As String
        Get
            PackageConnection = m_packageConnection
        End Get
        Set(ByVal value As String)
            m_packageConnection = value
        End Set
    End Property    ' PackageConnection


    <List("GetVariables")> _
    <Description("Specifies environment variable containing Excel configuration file path.")> _
    Public Property ConfigurationEnvironment() As String
        Get
            ConfigurationEnvironment = m_configEnv
        End Get
        Set(ByVal value As String)
            m_configEnv = value
        End Set
    End Property    ' ConfigurationEnvironment


    <List("GetWorksheets")> _
    <Description("Specifies Excel worksheet containing configuration information.")> _
    Public Property ConfigurationWorksheet() As String
        Get
            ConfigurationWorksheet = m_configSheet
        End Get
        Set(ByVal value As String)
            m_configSheet = value
        End Set
    End Property


    ' Returns a list of environment variables.
    Public Function GetVariables() As Object()
        Dim keys As ICollection
        Dim result() As Object

        keys = System.Environment.GetEnvironmentVariables().Keys
        result = New Object(keys.Count - 1) {}
        Call keys.CopyTo(result, 0)

        GetVariables = result
    End Function    ' GetVariables


    ' Returns a list of Excel worksheets.
    Public Function GetWorksheets() As Object()
        Dim result() As Object
        Dim conn As OleDbConnection
        Dim xlsSchema As DataTable
        Dim sheetsCount As Integer
        Dim sheet As Integer
        Dim sheetName As String

        Try
            conn = GetXlsConnection_()
            xlsSchema = conn.GetOleDbSchemaTable( _
                OleDbSchemaGuid.Tables, _
                New Object() {Nothing, Nothing, Nothing, "TABLE"})
            sheetsCount = xlsSchema.Rows.Count
            result = New Object(sheetsCount) {}
            For sheet = 0 To sheetsCount - 1
                sheetName = xlsSchema.Rows(sheet).Item("Table_Name").ToString()
                result(sheet) = sheetName.Substring(0, sheetName.Length - 1)    ' Remove $ at the end of name.
            Next
        Catch ex As Exception
            result = Nothing
            Call MsgBox(ex.Message)
        Finally
            If Not conn Is Nothing Then
                conn.Close()
            End If
        End Try

        GetWorksheets = result
    End Function    ' GetWorksheets


    Private ReadOnly Property PackageConnectionType() As String
        Get
            PackageConnectionType = "PACKAGE"
        End Get
    End Property    ' PackageConnectionType


    ' Returns OLEDB connection to specified Excel file in environment variable.
    Private Function GetXlsConnection_() As OleDbConnection
        Dim result As OleDbConnection
        Dim fileName As String

        ' Get Excel configuration file.
        fileName = System.Environment.GetEnvironmentVariable(Me.ConfigurationEnvironment)

        result = New OleDbConnection()
        result.ConnectionString = String.Format(Consts.ExcelAdoConnectString_1P, fileName)
        Call result.Open()

        GetXlsConnection_ = result
    End Function    ' GetXlsConnection_


    Private Sub SetupConfiguration_()
        Dim packageConn As IPackageConnection
        Dim package As Package
        Dim conn As OleDbConnection
        Dim cmd As OleDbCommand
        Dim reader As OleDbDataReader
        Dim path As String
        Dim value As String
        Dim prop As DtsProperty
        Dim objectFromPath As Object

        ' Get package.
        packageConn = CType(Dts.Connections(Me.PackageConnection).AcquireConnection(Nothing), IPackageConnection)
        package = CType(packageConn.GetPackage(), Package)

        Try
            ' Open DataReader to load configuration information.
            conn = GetXlsConnection_()
            cmd = New OleDbCommand()
            cmd.Connection = conn
            cmd.CommandText = String.Format("SELECT * FROM [{0}$]", Me.ConfigurationWorksheet)
            reader = cmd.ExecuteReader()

            While reader.Read
                path = reader.GetString(0)
                value = reader.GetString(1)

                ' Set value from configuration.
                objectFromPath = package.GetObjectFromPackagePath(path, prop)
                Call prop.SetValue(objectFromPath, value)
            End While
        Finally
            If Not reader Is Nothing Then
                Call reader.Close()
            End If
            If Not conn Is Nothing Then
                Call conn.Close()
            End If
        End Try
    End Sub ' SetupConfiguration_


    Private m_packageConnection As String
    Private m_configEnv As String
    Private m_configSheet As String
End Class   ' ScriptMain]]></ProjectItem>
  <ProjectItem Name="ScriptTask_fd0c0833c62f4d99a46fb4cd64df57ea.vbproj" Encoding="UTF16LE">
<![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>{DE5BE152-B3B5-448D-BC10-9F2A66E621F4}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>My Project</AppDesignerFolder>
    <RootNamespace>ScriptTask_fd0c0833c62f4d99a46fb4cd64df57ea</RootNamespace>
    <AssemblyName>ScriptTask_fd0c0833c62f4d99a46fb4cd64df57ea</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>
  <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.ManagedDTS, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.ScriptTask, 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="System.Xml">
      <Private>False</Private>
    </Reference>
  </ItemGroup>
  <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" />
  <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="ScriptTask" />
        <ProjectClient>
          <HostIdentifier>SSIS_ST120</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
  <ItemGroup>
    <Compile Include="ScriptMain.vb" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="My Project\" />
  </ItemGroup>
</Project>]]></ProjectItem>
  <ProjectItem Name="Project" Encoding="UTF16LE">
<![CDATA[<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<c:Project xmlns:c="http://schemas.microsoft.com/codeprojectml/2010/08/main" xmlns:msb="http://schemas.microsoft.com/developer/msbuild/2003" runtimeVersion="4.0" schemaVersion="1.0">
	<msb:PropertyGroup>
		<msb:CodeName>ScriptTask_fd0c0833c62f4d99a46fb4cd64df57ea</msb:CodeName>
		<msb:Language>msBuild</msb:Language>
		<msb:DisplayName>ScriptTask_fd0c0833c62f4d99a46fb4cd64df57ea</msb:DisplayName>
		<msb:ProjectId>{E7E5AC69-1425-4F81-918F-2278E5011A12}</msb:ProjectId>
	</msb:PropertyGroup>
	<msb:ItemGroup>
		<msb:Project Include="ScriptTask_fd0c0833c62f4d99a46fb4cd64df57ea.vbproj"/>
		<msb:File Include="ScriptMain.vb"/>
		<msb:Folder Include="My Project\"/>
	</msb:ItemGroup>
</c:Project>]]></ProjectItem>
  <BinaryItem Name="ScriptTask_fd0c0833c62f4d99a46fb4cd64df57ea.dll">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
AAAAAAYYKgETAAQA0CEAAAAABhgqARMABADYIQAAAAAGAD8DEwAEAEAiAAAAAAYIRANxAAQAWCIA
AAAABghaA6YABABkIgAAAAAGCHYDcQAFAHwiAAAAAAYIkwOmAAUAiCIAAAAABgiwA3EABgCgIgAA
AAAGCMsDpgAGAKwiAAAAAAYA5gOrAAcA4CIAAAAABgDzA6sABwDMIwAAAAABCAEEcQAHAOAjAAAA
AAEASQSwAAcAHCQAAAAAAQBbBBMABwDwJAAAAAAGGCoBEwAHAAAAAQAmAgAAAQBfAgAAAQBfAgAA
AQBwAwAAAQBwAwAAAQBwAwkAKgETAFEAKgFtAWEAKgF8AREAKgETAGkAKgETACQAKgETACwAKgET
ADQAKgETADwAKgETACQAfAKLACwAfAKLADQAfAKLADwAfAKLAHEAKgETAHkAKgETAIEAKgGmAIkA
gQYRAhkAHwJjABkAKAJoACkAogYeAhkAQQJxAJkAvgYuAhkAKgETAKEAKgE+AkQAxQKQAEwA6AaL
AEwA8ga7AkwAKgETAKkAKgHKAjkAKgETALkARQfVAjkAZwfbAsEAgwfgAtEAlQe1ALEAmwdxAMkA
pwflArkAsQcXAMEAwwfuAuEACQj5AukAIQj+AtkAKghoANkAOggDAwEBYAgTA0EAZwgYA/kAjQgi
AxEBKghoABEBnggoAxkBnggvA9EApwhoANEAsgg0AyEB4Qg6A0EA6AgTAOEA7ghYA0EAKgETANEA
BQldA0EADAmmAEEAIQkTAMEA4gl0A2EBngh6A2kBBAqBA0kBFgqGAzkBKgETADkBIQqKAzkBMAqm
ADkBQAqQA1kBTgqWA0EBWAqbA1EBcQqkA1kBegqqA1kB6AgTAHEBKgHKAnkBKgETAIEBKgHFA4kB
KgGmAJEBKgGmAJkBKgGmAKEBKgHuAqkBKgETALEBKgGmAAgAKADDAAgALADIAA4AMADNACkAgwDL
AS4AawIkBS4AcwItBS4AewJMBUAAEwBzAUAAKwDIAEMAGwCCAUMAEwBzAUkAgwD9AWMAEwBzAWMA
GwCCAWkAgwDcAYAAKwDIAIMAewDIAIMAcwDIAIMAGwCCAYkAgwDpAaAAKwDIAKMAwwBGAqMAEwBz
AcAAKwDIAMMAEwBzAcMA6wDPAskAWwJRBMkAUwIWBOAAKwDIAOMAQwLIAOMASwLLA+MAOwLPAukA
UwJsBOkAYwK6BAABKwDIAAABEwBzAQkBUwLMBAkBYwIRBSABEwBzASABKwDIAEABEwBzAUABKwDI
AGABEwBzAWABKwDIAIABKwDIAKABKwDIAMABKwDIAMABEwBzAeABKwDIAAACEwBzAQACKwDIALcB
vAHBAcYBFgIaAiUCKgI5AjkCwQLzAioCKgIqAgoDRQMqAmMDrgMEAAEABgAFAAcABgAAAE4BTwAA
AAcCVAAAALYBWQAAABMCXgAAAM8CmAAAAJ0EuAAAAK8EuAAAAMgEuAAAAN8EuAACAAQAAwACAAUA
BQACAAYABwACAAcACQACAA8ACwACABMADQABABQADQABABYADwACABUADwACABcAEQABABgAEQAC
ABsAEwB1AHUAiACbAaIBqQGwAagCrwIEgAAAAAAAAAAAAAAAAAAAAACvAAAABAAAAAAAAAAAAAAA
AQAKAAAAAAAKAAAAAAAAAAAAAAAKABMAAAAAAAwAAAAAAAAAAAAAAJ0A2wIAAAAABAAAAAAAAAAA
AAAAAQAbBAAAAAAEAAAAAAAAAAAAAAABAFcBAAAAAAwAAAAAAAAAAAAAAJ0AMwkAAAAAAQAAAAAA
AAAAAAAAawN6CQAAAAAFAAQABgAEAAgABwAJAAcAAAAQAAwAXQIAABAAGQBdAgAAAAAbAF0CLQA0
Ai0AtgIAAAA8TW9kdWxlPgBtc2NvcmxpYgBNaWNyb3NvZnQuVmlzdWFsQmFzaWMATXlBcHBsaWNh
dGlvbgBTY3JpcHRUYXNrX2ZkMGMwODMzYzYyZjRkOTlhNDZmYjRjZDY0ZGY1N2VhLk15AE15Q29t
cHV0ZXIATXlQcm9qZWN0AE15V2ViU2VydmljZXMAVGhyZWFkU2FmZU9iamVjdFByb3ZpZGVyYDEA
U2NyaXB0TWFpbgBTY3JpcHRUYXNrX2ZkMGMwODMzYzYyZjRkOTlhNDZmYjRjZDY0ZGY1N2VhAFNj
cmlwdFJlc3VsdHMAQ29uc3RzAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5BcHBsaWNhdGlvblNlcnZp
Y2VzAEFwcGxpY2F0aW9uQmFzZQAuY3RvcgBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuRGV2aWNlcwBD
b21wdXRlcgBTeXN0ZW0AT2JqZWN0AC5jY3RvcgBnZXRfQ29tcHV0ZXIAbV9Db21wdXRlck9iamVj
dFByb3ZpZGVyAGdldF9BcHBsaWNhdGlvbgBtX0FwcE9iamVjdFByb3ZpZGVyAFVzZXIAZ2V0X1Vz
ZXIAbV9Vc2VyT2JqZWN0UHJvdmlkZXIAZ2V0X1dlYlNlcnZpY2VzAG1fTXlXZWJTZXJ2aWNlc09i
amVjdFByb3ZpZGVyAEFwcGxpY2F0aW9uAFdlYlNlcnZpY2VzAEVxdWFscwBvAEdldEhhc2hDb2Rl
AFR5cGUAR2V0VHlwZQBUb1N0cmluZwBDcmVhdGVfX0luc3RhbmNlX18AVABpbnN0YW5jZQBEaXNw
b3NlX19JbnN0YW5jZV9fAGdldF9HZXRJbnN0YW5jZQBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuTXlT
ZXJ2aWNlcy5JbnRlcm5hbABDb250ZXh0VmFsdWVgMQBtX0NvbnRleHQAR2V0SW5zdGFuY2UATWlj
cm9zb2Z0LlNxbFNlcnZlci5TY3JpcHRUYXNrAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRHRzLlRhc2tz
LlNjcmlwdFRhc2sAVlNUQVJUU2NyaXB0T2JqZWN0TW9kZWxCYXNlAE1haW4AZ2V0X1BhY2thZ2VD
b25uZWN0aW9uAHNldF9QYWNrYWdlQ29ubmVjdGlvbgB2YWx1ZQBnZXRfQ29uZmlndXJhdGlvbkVu
dmlyb25tZW50AHNldF9Db25maWd1cmF0aW9uRW52aXJvbm1lbnQAZ2V0X0NvbmZpZ3VyYXRpb25X
b3Jrc2hlZXQAc2V0X0NvbmZpZ3VyYXRpb25Xb3Jrc2hlZXQAR2V0VmFyaWFibGVzAEdldFdvcmtz
aGVldHMAZ2V0X1BhY2thZ2VDb25uZWN0aW9uVHlwZQBTeXN0ZW0uRGF0YQBTeXN0ZW0uRGF0YS5P
bGVEYgBPbGVEYkNvbm5lY3Rpb24AR2V0WGxzQ29ubmVjdGlvbl8AU2V0dXBDb25maWd1cmF0aW9u
XwBtX3BhY2thZ2VDb25uZWN0aW9uAG1fY29uZmlnRW52AG1fY29uZmlnU2hlZXQAUGFja2FnZUNv
bm5lY3Rpb24AQ29uZmlndXJhdGlvbkVudmlyb25tZW50AENvbmZpZ3VyYXRpb25Xb3Jrc2hlZXQA
UGFja2FnZUNvbm5lY3Rpb25UeXBlAEVudW0AdmFsdWVfXwBTdWNjZXNzAEZhaWx1cmUARXhjZWxB
ZG9Db25uZWN0U3RyaW5nXzFQAFN5c3RlbS5Db21wb25lbnRNb2RlbABFZGl0b3JCcm93c2FibGVB
dHRyaWJ1dGUARWRpdG9yQnJvd3NhYmxlU3RhdGUAU3lzdGVtLkNvZGVEb20uQ29tcGlsZXIAR2Vu
ZXJhdGVkQ29kZUF0dHJpYnV0ZQBTeXN0ZW0uRGlhZ25vc3RpY3MARGVidWdnZXJIaWRkZW5BdHRy
aWJ1dGUATWljcm9zb2Z0LlZpc3VhbEJhc2ljLkNvbXBpbGVyU2VydmljZXMAU3RhbmRhcmRNb2R1
bGVBdHRyaWJ1dGUASGlkZU1vZHVsZU5hbWVBdHRyaWJ1dGUAU3lzdGVtLkNvbXBvbmVudE1vZGVs
LkRlc2lnbgBIZWxwS2V5d29yZEF0dHJpYnV0ZQBTeXN0ZW0uUnVudGltZS5Db21waWxlclNlcnZp
Y2VzAFJ1bnRpbWVIZWxwZXJzAEdldE9iamVjdFZhbHVlAFJ1bnRpbWVUeXBlSGFuZGxlAEdldFR5
cGVGcm9tSGFuZGxlAEFjdGl2YXRvcgBDcmVhdGVJbnN0YW5jZQBNeUdyb3VwQ29sbGVjdGlvbkF0
dHJpYnV0ZQBnZXRfVmFsdWUAc2V0X1ZhbHVlAFN5c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNl
cwBDb21WaXNpYmxlQXR0cmlidXRlAEV4Y2VwdGlvbgBQcm9qZWN0RGF0YQBTZXRQcm9qZWN0RXJy
b3IAU2NyaXB0T2JqZWN0TW9kZWwAZ2V0X0R0cwBFdmVudHNPYmplY3RXcmFwcGVyAGdldF9FdmVu
dHMAU3RyaW5nAEVtcHR5AGdldF9NZXNzYWdlAEZpcmVFcnJvcgBDbGVhclByb2plY3RFcnJvcgBz
ZXRfVGFza1Jlc3VsdABTeXN0ZW0uQ29sbGVjdGlvbnMASUNvbGxlY3Rpb24ARW52aXJvbm1lbnQA
SURpY3Rpb25hcnkAR2V0RW52aXJvbm1lbnRWYXJpYWJsZXMAZ2V0X0tleXMAZ2V0X0NvdW50AEFy
cmF5AENvcHlUbwBEYXRhVGFibGUAT2xlRGJTY2hlbWFHdWlkAEd1aWQAVGFibGVzAEdldE9sZURi
U2NoZW1hVGFibGUARGF0YVJvd0NvbGxlY3Rpb24AZ2V0X1Jvd3MARGF0YVJvdwBnZXRfSXRlbQBn
ZXRfTGVuZ3RoAFN1YnN0cmluZwBJbnRlcmFjdGlvbgBNc2dCb3hSZXN1bHQATXNnQm94U3R5bGUA
TXNnQm94AENsb3NlAEdldEVudmlyb25tZW50VmFyaWFibGUARm9ybWF0AHNldF9Db25uZWN0aW9u
U3RyaW5nAE9wZW4AT2xlRGJDb21tYW5kAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuTWFuYWdlZERUUwBN
aWNyb3NvZnQuU3FsU2VydmVyLkR0cy5SdW50aW1lAFBhY2thZ2UAQ296eVJvYy5TU0lTUGx1cy4y
MDE0AENvenlSb2MuU3FsU2VydmVyLlNTSVMASVBhY2thZ2VDb25uZWN0aW9uAER0c1Byb3BlcnR5
AE9sZURiRGF0YVJlYWRlcgBDb25uZWN0aW9ucwBnZXRfQ29ubmVjdGlvbnMAQ29ubmVjdGlvbk1h
bmFnZXIAQWNxdWlyZUNvbm5lY3Rpb24AR2V0UGFja2FnZQBzZXRfQ29ubmVjdGlvbgBzZXRfQ29t
bWFuZFRleHQARXhlY3V0ZVJlYWRlcgBHZXRTdHJpbmcAR2V0T2JqZWN0RnJvbVBhY2thZ2VQYXRo
AFNldFZhbHVlAFJlYWQAQ0xTQ29tcGxpYW50QXR0cmlidXRlAFNTSVNTY3JpcHRUYXNrRW50cnlQ
b2ludEF0dHJpYnV0ZQBDb3p5Um9jLlNxbFNlcnZlci5TU0lTLkF0dHJpYnV0ZXMAU29ydFByb3Bl
cnRpZXNBdHRyaWJ1dGUARGVzY3JpcHRpb25BdHRyaWJ1dGUAQ29ubmVjdGlvbkF0dHJpYnV0ZQBM
aXN0QXR0cmlidXRlAENvbXBpbGF0aW9uUmVsYXhhdGlvbnNBdHRyaWJ1dGUAUnVudGltZUNvbXBh
dGliaWxpdHlBdHRyaWJ1dGUAU3lzdGVtLlJ1bnRpbWUuVmVyc2lvbmluZwBUYXJnZXRGcmFtZXdv
cmtBdHRyaWJ1dGUAU2NyaXB0VGFza19mZDBjMDgzM2M2MmY0ZDk5YTQ2ZmI0Y2Q2NGRmNTdlYS5k
bGwAAAAAAAtUAEEAQgBMAEUAABVUAGEAYgBsAGUAXwBOAGEAbQBlAAAPUABBAEMASwBBAEcARQAA
gJ9QAHIAbwB2AGkAZABlAHIAPQBNAGkAYwByAG8AcwBvAGYAdAAuAEoAZQB0AC4ATwBMAEUARABC
AC4ANAAuADAAOwBFAHgAdABlAG4AZABlAGQAIABQAHIAbwBwAGUAcgB0AGkAZQBzAD0ARQB4AGMA
ZQBsACAAOAAuADAAOwBEAGEAdABhACAAUwBvAHUAcgBjAGUAPQB7ADAAfQA7AAApUwBFAEwARQBD
AFQAIAAqACAARgBSAE8ATQAgAFsAewAwAH0AJABdAAAAAFcqxg9pKUVDicmqJCw/Zu0ACLd6XFYZ
NOCJCLA/X38R1Qo6AyAAAQMAAAEEAAASDAcGFRIYARIMBAAAEggHBhUSGAESCAQAABIRBwYVEhgB
EhEEAAASFAcGFRIYARIUBAgAEgwECAASCAQIABIRBAgAEhQEIAECHAMgAAgEIAASFQMgAA4CHgAH
EAEBHgAeAAcwAQEBEB4AAhMABCAAEwAHBhUSGQETAAQoABMACImEXc2AgMyRBCABAQ4EIAAdHAQg
ABIhAgYOAygADgIGCAMGESAEAAAAAAQBAAAAgJ5QAHIAbwB2AGkAZABlAHIAPQBNAGkAYwByAG8A
cwBvAGYAdAAuAEoAZQB0AC4ATwBMAEUARABCAC4ANAAuADAAOwBFAHgAdABlAG4AZABlAGQAIABQ
AHIAbwBwAGUAcgB0AGkAZQBzAD0ARQB4AGMAZQBsACAAOAAuADAAOwBEAGEAdABhACAAUwBvAHUA
cgBjAGUAPQB7ADAAfQA7AAUgAQERLQgBAAEAAAAAAAUgAgEODhgBAApNeVRlbXBsYXRlCDEwLjAu
MC4wAAAGFRIYARIMBhUSGAESCAYVEhgBEhEGFRIYARIUBAcBEgwEBwESCAQHARIRBAcBEhQQAQAL
TXkuQ29tcHV0ZXIAAAwBAAdNeS5Vc2VyAAATAQAOTXkuV2ViU2VydmljZXMAABMBAA5NeS5BcHBs
aWNhdGlvbgAABAABHBwDBwECAwcBCAYAARIVEUkEBwESFQMHAQ4FEAEAHgAECgEeAAQHAR4AByAE
AQ4ODg5hAQA0U3lzdGVtLldlYi5TZXJ2aWNlcy5Qcm90b2NvbHMuU29hcEh0dHBDbGllbnRQcm90
b2NvbBJDcmVhdGVfX0luc3RhbmNlX18TRGlzcG9zZV9fSW5zdGFuY2VfXwAAAAYVEhgBEwAGFRIZ
ARMABAoBEwAFIAEBEwAIBwMTABMAEwAEIAEBAgUBAAAAAAUAAQESWQQgABJhBCAAEmUIIAUCCA4O
DggEIAEBCAUHAggSWQQAABJ1BCAAEm0GIAIBEnkICAcDHRwSbR0cBAYRgIUJIAISfRGAhR0cBSAA
EoCJBiABEoCNCAQgARwOBSACDggICgADEYCVHBGAmRwSBwoSIR0cHRwIDggSfRJZHRwIBAABDg4F
AAIODhwHBwMOEiESIQgWz0kLuAw06gUgABKAsQYgARKAtRwEIAEcHAMgABwFIAEBEiEFIAASgK0E
IAEOCAggAhwOEBKAqQUgAgEcHAMgAAIWBwkSgJ0SIRwSgKESgKUOEoCpEoCtDgUgAQEdDkoBAAMA
AAARUGFja2FnZUNvbm5lY3Rpb24YQ29uZmlndXJhdGlvbkVudmlyb25tZW50FkNvbmZpZ3VyYXRp
b25Xb3Jrc2hlZXQAADoBADVTcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIFBhY2thZ2UgY29ubmVj
dGlvbiBtYW5hZ2VyLgAAGgEAFVBhY2thZ2VDb25uZWN0aW9uVHlwZQAATQEASFNwZWNpZmllcyBl
bnZpcm9ubWVudCB2YXJpYWJsZSBjb250YWluaW5nIEV4Y2VsIGNvbmZpZ3VyYXRpb24gZmlsZSBw
YXRoLgAAEQEADEdldFZhcmlhYmxlcwAARAEAP1NwZWNpZmllcyBFeGNlbCB3b3Jrc2hlZXQgY29u
dGFpbmluZyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uLgAAEgEADUdldFdvcmtzaGVldHMAAAgB
AAgAAAAAAB4BAAEAVAIWV3JhcE5vbkV4Y2VwdGlvblRocm93cwFHAQAaLk5FVEZyYW1ld29yayxW
ZXJzaW9uPXY0LjABAFQOFEZyYW1ld29ya0Rpc3BsYXlOYW1lEC5ORVQgRnJhbWV3b3JrIDTgQAAA
AAAAAAAAAAD+QAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8EAAAAAAAAAAAAAAAAAAAAAAX0Nv
ckRsbE1haW4AbXNjb3JlZS5kbGwAAAAAAP8lACAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAA
AAAYAACAAAAAAAAAAAAAAAAAAAABAAEAAAAwAACAAAAAAAAAAAAAAAAAAAABAAAAAABIAAAAWGAA
ANQCAAAAAAAAAAAAANQCNAAAAFYAUwBfAFYARQBSAFMASQBPAE4AXwBJAE4ARgBPAAAAAAC9BO/+
AAABAAAAAAAAAAAAAAAAAAAAAAA/AAAAAAAAAAQAAAACAAAAAAAAAAAAAAAAAAAARAAAAAEAVgBh
AHIARgBpAGwAZQBJAG4AZgBvAAAAAAAkAAQAAABUAHIAYQBuAHMAbABhAHQAaQBvAG4AAAAAAAAA
sAQ0AgAAAQBTAHQAcgBpAG4AZwBGAGkAbABlAEkAbgBmAG8AAAAQAgAAAQAwADAAMAAwADAANABi
ADAAAAAsAAIAAQBGAGkAbABlAEQAZQBzAGMAcgBpAHAAdABpAG8AbgAAAAAAIAAAADAACAABAEYA
aQBsAGUAVgBlAHIAcwBpAG8AbgAAAAAAMAAuADAALgAwAC4AMAAAAIAAMAABAEkAbgB0AGUAcgBu
AGEAbABOAGEAbQBlAAAAUwBjAHIAaQBwAHQAVABhAHMAawBfAGYAZAAwAGMAMAA4ADMAMwBjADYA
MgBmADQAZAA5ADkAYQA0ADYAZgBiADQAYwBkADYANABkAGYANQA3AGUAYQAuAGQAbABsAAAAKAAC
AAEATABlAGcAYQBsAEMAbwBwAHkAcgBpAGcAaAB0AAAAIAAAAIgAMAABAE8AcgBpAGcAaQBuAGEA
bABGAGkAbABlAG4AYQBtAGUAAABTAGMAcgBpAHAAdABUAGEAcwBrAF8AZgBkADAAYwAwADgAMwAz
AGMANgAyAGYANABkADkAOQBhADQANgBmAGIANABjAGQANgA0AGQAZgA1ADcAZQBhAC4AZABsAGwA
AAA0AAgAAQBQAHIAbwBkAHUAYwB0AFYAZQByAHMAaQBvAG4AAAAwAC4AMAAuADAALgAwAAAAOAAI
AAEAQQBzAHMAZQBtAGIAbAB5ACAAVgBlAHIAcwBpAG8AbgAAADAALgAwAC4AMAAuADAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAMAAAAEDEAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</BinaryItem>
</ScriptProject>