{30D016F9-3734-4E33-A861-5E7D899E18F3};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}
Debug
AnyCPU
8.0.30703
2.0
{3AF74B7B-CE4A-41E0-BFEF-C38D33FD6209}
Library
My Project
ScriptTask_621609c6b8b34789b81ad064fe2a737d
ScriptTask_621609c6b8b34789b81ad064fe2a737d
v4.0
512
Binary
On
On
true
full
false
.\bin\Debug\
false
true
true
prompt
4
false
true
.\bin\Release\
false
false
true
prompt
4
False
C:\Program Files (x86)\Microsoft SQL Server\130\SDK\Assemblies\CozyRoc.SSISPlus.2016.dll
False
False
SSIS_ST130
]]>
unlzw.c code in gzip-1.2.4 (written
' by Peter Jannesen) and the original compress code.
'
' Based on implementation by Ronald Tschalr (ronald@innovation.ch).
Class UncompressInputStream
Inherits Stream
' Methods
' @param is the input stream to decompress
Public Sub New(ByVal inputStream As Stream)
Me._inputStream = inputStream
Me.parse_header()
End Sub ' New
Private Sub fill()
Me.got = Me._inputStream.Read(Me.data, Me.end, Me.data.Length - 1 - Me.end)
If Me.got > 0 Then
Me.end += Me.got
End If
End Sub ' fill
Public Overrides Sub Flush()
Throw New NotSupportedException
End Sub ' Flush
Private Const LZW_MAGIC As Integer = &H1F9D
Private Const MAX_BITS As Integer = &H10
Private Const INIT_BITS As Integer = 9
Private Const HDR_MAXBITS As Integer = &H1F
Private Const HDR_EXTENDED As Integer = &H20
Private Const HDR_FREE As Integer = &H40
Private Const HDR_BLOCK_MODE As Integer = &H80
Private Sub parse_header()
' read in and check magic number
Dim t As Integer = Me.read_byte()
If t < 0 Then
Throw New Exception("Failed to read magic number")
End If
Dim magic As Integer = ((t And &HFF) << 8)
t = Me.read_byte()
If t < 0 Then
Throw New Exception("Failed to read magic number")
End If
magic += (t And &HFF)
If (magic <> LZW_MAGIC) Then
Throw New IOException("Input not in compress format (read magic number 0x" & magic.ToString("x") & ")")
End If
' read in header byte
Dim header As Integer = Me.read_byte()
If header < 0 Then
Throw New Exception("Failed to read header")
End If
Me.block_mode = ((header And HDR_BLOCK_MODE) > 0)
Me.maxbits = (header And HDR_MAXBITS)
If Me.maxbits > MAX_BITS Then
Throw New IOException( _
"Stream compressed with " & Me.maxbits.ToString() & _
" bits, but can only handle " & MAX_BITS.ToString() & " bits")
End If
If (header And HDR_EXTENDED) > 0 Then
Throw New IOException("Header extension bit set")
End If
If (header And HDR_FREE) > 0 Then
Throw New IOException("Header bit 6 set")
End If
' initialize stuff
Me.maxmaxcode = (CInt(1) << Me.maxbits)
Me.n_bits = INIT_BITS
Me.maxcode = (CInt(1) << Me.n_bits) - 1
Me.bitmask = Me.maxcode
Me.oldcode = -1
Me.finchar = 0
Me.free_ent = CType(IIf(Me.block_mode, TBL_FIRST, &H100), Integer)
Me.tab_prefix = New Integer((CInt(1) << Me.maxbits) - 1) {}
Me.tab_suffix = New Byte((CInt(1) << Me.maxbits) - 1) {}
Me.stack = New Byte((CInt(1) << Me.maxbits) - 1) {}
Me.stackp = Me.stack.Length
Dim idx As Integer = &HFF
Do While idx >= 0
Me.tab_suffix(idx) = CByte(idx)
idx -= 1
Loop
End Sub ' parse_header
Private one As Byte() = New Byte(1 - 1) {}
Public Function read_byte() As Integer
If Me._inputStream.Read(Me.one, 0, 1) = 1 Then
Return (Me.one(0) And &HFF)
End If
Return -1
End Function ' read_byte
Public Function read_internal(ByVal buf As Byte(), ByVal off As Integer, ByVal len As Integer) As Integer
If Me.eof Then
Return -1
End If
Dim num As Integer
Dim start As Integer = off
Dim l_tab_prefix As Integer() = Me.tab_prefix
Dim l_tab_suffix As Byte() = Me.tab_suffix
Dim l_stack As Byte() = Me.stack
Dim l_n_bits As Integer = Me.n_bits
Dim l_maxcode As Integer = Me.maxcode
Dim l_maxmaxcode As Integer = Me.maxmaxcode
Dim l_bitmask As Integer = Me.bitmask
Dim l_oldcode As Integer = Me.oldcode
Dim l_finchar As Byte = Me.finchar
Dim l_stackp As Integer = Me.stackp
Dim l_free_ent As Integer = Me.free_ent
Dim l_data As Byte() = Me.data
Dim l_bit_pos As Integer = Me.bit_pos
' empty stack if stuff still left
Dim s_size As Integer = (l_stack.Length - l_stackp)
If s_size > 0 Then
num = CType(IIf((s_size >= len), len, s_size), Integer)
Array.Copy(l_stack, l_stackp, buf, off, num)
off += num
len -= num
l_stackp += num
End If
If len = 0 Then
Me.stackp = l_stackp
Return (off - start)
End If
' loop, filling local buffer until enough data has been decompressed
main_loop:
If Me.end < EXTRA Then
Call Me.fill()
End If
Dim bit_in As Integer = CType(IIf(Me.got > 0, _
(Me.end - (Me.end Mod l_n_bits)) << 3, _
(Me.end << 3) - (l_n_bits - 1)), _
Integer)
Do While l_bit_pos < bit_in
Dim n_bytes As Integer
' check for code-width expansion
If l_free_ent > l_maxcode Then
n_bytes = (l_n_bits << 3)
l_bit_pos = ((l_bit_pos - 1) + n_bytes - (l_bit_pos - 1 + n_bytes) Mod n_bytes)
l_n_bits += 1
l_maxcode = CType(IIf(l_n_bits = Me.maxbits, _
l_maxmaxcode, _
((CInt(1) << l_n_bits) - 1)), _
Integer)
l_bitmask = ((CInt(1) << l_n_bits) - 1)
l_bit_pos = Me.resetbuf(l_bit_pos)
GoTo main_loop
End If
' read next code
Dim pos As Integer = (l_bit_pos >> 3)
Dim code As Integer = _
(((l_data(pos) And &HFF) Or ((l_data(pos + 1) And &HFF) << 8) Or _
((l_data(pos + 2) And &HFF) << &H10)) _
>> (l_bit_pos And 7)) And l_bitmask
l_bit_pos += l_n_bits
' handle first iteration
If (l_oldcode = -1) Then
If (code >= &H100) Then
Throw New IOException(("corrupt input: " & code & " > 255"))
End If
l_oldcode = code
l_finchar = CByte(code)
buf(off) = l_finchar
off += 1
len -= 1
Continue Do
End If
' handle CLEAR code
If code = TBL_CLEAR AndAlso Me.block_mode Then
Array.Copy(Me.zeros, 0, l_tab_prefix, 0, Me.zeros.Length)
l_free_ent = TBL_FIRST - 1
n_bytes = (l_n_bits << 3)
l_bit_pos = ((l_bit_pos - 1) + n_bytes - (l_bit_pos - 1 + n_bytes) Mod n_bytes)
l_n_bits = INIT_BITS
l_maxcode = ((CInt(1) << l_n_bits) - 1)
l_bitmask = l_maxcode
l_bit_pos = Me.resetbuf(l_bit_pos)
GoTo main_loop
End If
' setup
Dim incode As Integer = code
l_stackp = l_stack.Length
' Handle KwK case
If code >= l_free_ent Then
If code > l_free_ent Then
Throw New IOException( _
"corrupt input: code=" & code.ToString() & _
", free_ent=" & l_free_ent.ToString())
End If
l_stackp -= 1
l_stack(l_stackp) = l_finchar
code = l_oldcode
End If
' Generate output characters in reverse order
Do While (code >= &H100)
l_stackp -= 1
l_stack(l_stackp) = l_tab_suffix(code)
code = l_tab_prefix(code)
Loop
l_finchar = l_tab_suffix(code)
buf(off) = l_finchar
off += 1
len -= 1
' And put them out in forward order
s_size = (l_stack.Length - l_stackp)
num = CType(IIf(s_size >= len, len, s_size), Integer)
Array.Copy(l_stack, l_stackp, buf, off, num)
off += num
len -= num
l_stackp += num
' generate new entry in table
If l_free_ent < l_maxmaxcode Then
l_tab_prefix(l_free_ent) = l_oldcode
l_tab_suffix(l_free_ent) = l_finchar
l_free_ent += 1
End If
' Remember previous code
l_oldcode = incode
' if output buffer full, then return
If len = 0 Then
Me.n_bits = l_n_bits
Me.maxcode = l_maxcode
Me.bitmask = l_bitmask
Me.oldcode = l_oldcode
Me.finchar = l_finchar
Me.stackp = l_stackp
Me.free_ent = l_free_ent
Me.bit_pos = l_bit_pos
Return (off - start)
End If
Loop
l_bit_pos = Me.resetbuf(l_bit_pos)
If (Me.got > 0) Then
GoTo main_loop
End If
Me.n_bits = l_n_bits
Me.maxcode = l_maxcode
Me.bitmask = l_bitmask
Me.oldcode = l_oldcode
Me.finchar = l_finchar
Me.stackp = l_stackp
Me.free_ent = l_free_ent
Me.bit_pos = l_bit_pos
Me.eof = True
Return (off - start)
End Function ' read_internal
Public Overrides Function Read(ByVal buffer As Byte(), ByVal offset As Integer, ByVal count As Integer) As Integer
Return Me.read_internal(buffer, offset, count)
End Function ' Read
' Moves the unread data in the buffer to the beginning and resets
' the pointers.
Private Function resetbuf(ByVal bit_pos As Integer) As Integer
Dim pos As Integer = (bit_pos >> 3)
Array.Copy(Me.data, pos, Me.data, 0, (Me.end - pos))
Me.end -= pos
Return 0
End Function ' resetbuf
Public Overrides Function Seek(ByVal offset As Long, ByVal origin As SeekOrigin) As Long
Throw New NotSupportedException
End Function ' Seek
Public Overrides Sub SetLength(ByVal value As Long)
Throw New NotSupportedException
End Sub ' SetLength
Public Overrides Sub Write(ByVal buffer As Byte(), ByVal offset As Integer, ByVal count As Integer)
Throw New NotSupportedException
End Sub ' Write
' Properties
Public Overrides ReadOnly Property CanRead() As Boolean
Get
If Me.eof Then
Return False
End If
Return Me._inputStream.CanRead
End Get
End Property ' CanRead
Public Overrides ReadOnly Property CanSeek() As Boolean
Get
Return False
End Get
End Property ' CanSeek
Public Overrides ReadOnly Property CanWrite() As Boolean
Get
Return False
End Get
End Property ' CanWrite
Public Overrides ReadOnly Property Length() As Long
Get
Throw New NotSupportedException
End Get
End Property ' Length
Public Overrides Property Position() As Long
Get
Throw New NotSupportedException
End Get
Set(ByVal value As Long)
Throw New NotSupportedException
End Set
End Property ' Position
' Fields
Private _inputStream As Stream = Nothing
' string table stuff
Private Const TBL_CLEAR As Integer = &H100
Private Const TBL_FIRST As Integer = TBL_CLEAR + 1
Private tab_prefix As Integer()
Private tab_suffix As Byte()
Private zeros As Integer() = New Integer(&H100 - 1) {}
Private stack As Byte()
' various state
Private block_mode As Boolean
Private n_bits As Integer
Private maxbits As Integer
Private maxmaxcode As Integer
Private maxcode As Integer
Private bitmask As Integer
Private oldcode As Integer
Private finchar As Byte
Private stackp As Integer
Private free_ent As Integer
' input buffer
Private data As Byte() = New Byte(&H2710 - 1) {}
Private bit_pos As Integer = 0
Private [end] As Integer = 0
Private got As Integer = 0
Private eof As Boolean = False
Private Const EXTRA As Integer = &H40
End Class ' UncompressInputStream
_
_
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
' 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
Dim fireAgain As Boolean
Try
Dim sourceFile As String = GetConnectionFile_(Me.SourceFile)
Dim inStream As Stream = New UncompressInputStream(File.OpenRead(sourceFile))
Dim buf As Byte() = New Byte(&H1000 - 1) {}
Dim targetFile As String = GetConnectionFile_(Me.TargetFile)
Using outStream As Stream = File.Create(targetFile)
Try
Dim bytesRead As Integer = 0
Do While True
bytesRead = inStream.Read(buf, 0, buf.Length)
If bytesRead <= 0 Then
Exit Do
End If
Call outStream.Write(buf, 0, bytesRead)
Loop
Call outStream.Flush()
Catch ex As Exception
' Failed to uncompress. Remove target file.
Call outStream.Close()
Call File.Delete(targetFile)
Throw
End Try
End Using
Call Dts.Events.FireInformation( _
0, _
String.Empty, _
String.Format("Uncompressed '{0}' to '{1}'.", sourceFile, targetFile), _
String.Empty, _
0, _
fireAgain)
result = ScriptResults.Success
Catch ex As Exception
result = ScriptResults.Failure
Dts.Events.FireError(0, String.Empty, ex.Message, String.Empty, 0)
End Try
Dts.TaskResult = result
End Sub ' Main
#Region "Internals"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' SourceFile property.
_
_
Public Property SourceFile() As String
Get
SourceFile = m_source
End Get
Set(ByVal value As String)
m_source = value
End Set
End Property ' SourceFile
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' TargetFile property.
_
_
Public Property TargetFile() As String
Get
TargetFile = m_target
End Get
Set(ByVal value As String)
m_target = value
End Set
End Property ' TargetFile
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private ReadOnly Property FileConnectionType() As String
Get
FileConnectionType = "FILE"
End Get
End Property ' FileConnectionType
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Validate specified connection is the expected type.
Private Function ValidateConnection_( _
ByVal managerName As String, _
ByVal expectedType As String) As Boolean
Dim result As Boolean
Dim manager As ConnectionManager
If Not String.IsNullOrEmpty(managerName) Then
manager = Dts.Connections(managerName)
If manager.CreationName = expectedType Then
result = True
Else
' Doesn't match expected type.
Dts.Events.FireError( _
0, _
String.Empty, _
String.Format( _
"'{0}' connection is not '{1}' type.", _
managerName, _
expectedType), _
String.Empty, _
0)
End If
End If
ValidateConnection_ = result
End Function ' ValidateConnection_
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Retrieves file path from specified file connection manager.
Private Function GetConnectionFile_(ByVal managerName As String) As String
Dim result As String
Dim manager As ConnectionManager
Dim fileConnection As Object
If ValidateConnection_(managerName, "FILE") Then
manager = Dts.Connections(managerName)
fileConnection = manager.AcquireConnection(Nothing)
If Not fileConnection Is Nothing Then
result = fileConnection.ToString()
Else
Dts.Events.FireError( _
0, _
String.Empty, _
String.Format("''{0}' connection file doesn't exist.", managerName), _
String.Empty, _
0)
End If
End If
GetConnectionFile_ = result
End Function ' GetConnectionFile_
#End Region ' Internals
#Region "Attributes"
Private m_source As String
Private m_target As String
#End Region ' Attributes
End Class ' ScriptMain]]>
msBuild
ScriptTask_621609c6b8b34789b81ad064fe2a737d
ScriptTask_621609c6b8b34789b81ad064fe2a737d
{AD8A1FE0-398F-44E7-9BCC-1F69CF9E9FEC}
]]>
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
KQAAACoAAAAXAAAATQAAAAwAAAAuAAAADQAAAAQAAAANAAAAEAAAAAgAAAABAAAABgAAAAMAAAAD
AAAAAgAAAAAAQQYBAAAAAAAGAHAEbwkGAMgEbwkGAIoDsAgPAI8JAAAGAPsDMwUGAJ0GhQAGAOUG
hQAKAKYEsAUGAJAErQYKAPQCsAUGAHUHrQYGAFAKrQYGALQGrQYOAEcEngkSAFsEKwYSAHMDIAgS
ADUDKwYSAJ4DKwYWABAD/wgWAGQIwwgGABQEsAgWAMsDSAkWAOMDUQEWAFAI/wgWACwEUQEGAOcC
rQYGALcDKQkWAAEA4QUSAF4DvQYGAOYErQYGACsArQYGAGkHrQYGAF0FrQYGAF0HhQAWACUHUQEW
AMcJSAkGAOIKrQYGAHoChQAGAHYGhQAWADcBSAkGABMCrQYKABkGsAUKADgIsAUaANcJnAIaAAQI
nAIWAAAKSAkGAPEJbwkGAB8CrQYGAJkIrQYAAAAARwAAAAAAAQABAAAAAACBBmcBGQABAAEAAQAA
ANoGZwEpACAAEgAAAAAABwezCk0AIgAbAAAAAABiCLMKUQAiABwAAAEQAFcKswoxACIAHQACAQAA
KQoAADUAJgAiAAUBAADxCAAAMQApACIABQEAABAAAAAxACkAKQBRgFYADQJRgM4ADQJRgMQADQJR
gLgADQJRgGAADQJRgHwADQJRgG0ADQIBALwCEAIBAJcGFAJRgI8ADQJRgNcADQIBAJ0KGAIBAKgK
EAIBAOsJGAIBAH8FEAIBAPwBHAIBABoKDQIBACEKDQIBAPEBDQIBAPQBDQIBANkFDQIBAOkBDQIB
AIgHHwIBAIEHDQIBAIAKDQIBAEMBEAIBAOMJDQIBAKgBDQIBAI8KDQIBACYFHAJRgFAADQIBANQB
6gABAGEK6gAxAMYHIgIxAJ0HKgIxALEHMgIxAN8HOgIGBggBDQJWgAoKQgJWgOwCQgIhAJMKlQFQ
IAAAAAAGGKMIRgIBAMAgAAAAAAEAcQYGAAIAFiEAAAAAxgJkBQYAAgAgIQAAAAABAJAHBgACACAj
AAAAAAYA6wRqAQIAWCMAAAAABgALBjMAAgCHJwAAAADGAqMBMwAFAJQnAAAAAAEAKgVMAggA0CcA
AAAAxgKMBVECCQAWIQAAAADGAnUFWAILABYhAAAAAMYCWAPLAAwA5CcAAAAAxgqTAa4ADwAKKAAA
AADGCoUFrgAPAAooAAAAAMYKUQOuAA8AECgAAAAAxgpqBV0CDwAkKAAAAADGCkMHXQIPABYhAAAA
AMYKUAdYAg8ANigAAAAABhijCAYAEABAKAAAAAAGAOAGBgAQAHgpAAAAAAYIQwJPABAAjSkAAAAA
BghSAhAAEACYKQAAAAAGCGECTwARAK0pAAAAAAYIcAIQABEAuCkAAAAAAQjNAk8AEgDMKQAAAAAB
ACMBYQISADAqAAAAAAEAEAFDABQAnyoAAAAABhijCAYAFQCnKgAAAAAGGKMIBgAVAK8qAAAAABMI
VQhnAhUAuyoAAAAAEwj3BmwCFQDHKgAAAAATCEwIcQIVANMqAAAAABMI4Qh2AhUA3yoAAAAAERip
CAgBFQAJKwAAAADGAsAJZQEVABcrAAAAAMYC3QFqARYAHysAAAAAgwDkAnsCFgArKwAAAADGAlsF
TwAWADQrAAAAABEA9QCAAhYAVCsAAAAAAQDhAIgCFwBdKwAAAAAGGKMIBgAYAGgrAAAAAAMIuwFL
ARgAnCsAAAAABhijCAYAGAAAAAEAmAYAAAEALwUAAAIAIgUAAAMAuQYAAAEA/QcAAAIAagoAAAMA
iQoAAAEA4wkAAAEAagoAAAIA8AYAAAEAGAUAAAEA/QcAAAIAagoAAAMAiQoAAAEAGAUAAAEAGAUA
AAEAGAUAAAEAkAIAAAIAwAIAAAEAkAIAAAEAfwcAAAEAywEAAAEAywEJAKMIAQARAKMIBgAZAKMI
CgApAKMIEABBAKMIBgBJAKMIFQBxAKMIEAB5AKMIEACBAKMIGgCRAKMIIACpAKMIBgCxAKMIBgC5
AKMIBgDJAKMIJgDZAKMIFQDpAKMIEAAxAKMIBgAxAKMBMwABAaMIBgBZAKMIEAD5AFsFQwAJAUIK
SAARAaMIEAD5AFsFTwAJAUIKUwAZAR4FWQAhARYIYAApAegKhgAhAVsFkwAJAUIKmAAxAJMBrgBR
AKMIBgAxAZ8BxAAxAS4DxAAxAFgDywAxAGQFBgBBAYkI0wAxACADBgAxAUoD2QBJASYDBgBRABIK
3gBRATcK5AAJAfUK6gAJAUkK7QBZARUH9ABZAAcCTwBZAW0I/wBBAXcICAFRAXEKAQAJAe0KFQFR
AdMJGgFhAaQGIAFpAX8CTwBxAU0FJwFpATEHNAF5AQkFOQFhAFsFTwAJAUkKPgGZAKMIBgChAKMI
BgAMALsBSwEUALsBSwEcALsBSwEkALsBSwEMAKMIBgAUAKMIBgAcAKMIBgAkAKMIBgBhAMAJZQFh
AN0BagHRADECbgGJAawBfgFhAKMIBgA0AJMKlQE8APUESwE8AP8ErAE8AKMIBgAIAAQA1gEIAAgA
2wEIAAwA4AEIABAA5QEIABQA6gEIABgA7wEIABwA9AEIACgA+QEIACwA/gEIAHwA7wEIAJwAAwII
AKAACAIuAAsAtQIuABMAvgIuABsA3QIuACMA5gJjACsACAJjADMANwODAEsAPQODAFMALgOjAEsA
PQOjAFMALgPDAGMACALDAGsACALDAEsAPQPJADsAuAPJAEMA0APpADsAuAPpAEMA9wMDAVMALgMD
AXMAVgMjAVMALgMjAXsANwMpAYMAHgRJAYMALwRpAYMAQwSJAYMAUASAA1sACAKAA1MALgOgA1sA
CALAA1sACALgA1sACAIABFsACAJABFMALgNABFsACAJgBFMALgNgBFsACAKABFMALgOABFsACAKg
BFMALgOgBFsACALABFsACALgBFsACAIABVsACAIABVMALgMgBVsACAJABVsACAJABVMALgMuADsA
ZQBpAKAApgCqALIADAEQAS4BdgGJAQIAAQADAAYABgAJAAkADQAAAJcBkAIAAIkFkAIAAFUDkAIA
AHgFlAIAAFQHlAIAAFYCmAIAAHQCmAIAANECmAIAAGQInAIAAAkHoQIAAFAIpgIAAPMIqwIAAL8B
sAICAAwAAwACAA0ABQACAA4ABwACAA8ACQACABAACwABABEACwACABQADQABABUADQACABYADwAB
ABcADwACABgAEQACAB0AEwACAB4AFQACAB8AFwACACAAGQACACkAGwBEAVABVwFeAXsBjgGdAaQB
BIAAAAAAAAAAAAAAAAAAAAAAZwEAAAQAAAAAAAAAAAAAALIBSAEAAAAADQAAAAAAAAAAAAAAuwGR
BQAAAAABAAAAAAAAAAAAAADEATEAAAAAAAQAAAAAAAAAAAAAALIBrQYAAAAACgAAAAAAAAAAAAAA
zQFRAQAAAAANAAAAAAAAAAAAAAC7AZkAAAAAAAcAAwAIAAYACQAGAAAAEAASAN8AAAAQAE0A3wAA
AAAATwDfAJEAhAGRAKcBAAAAQ29udGV4dFZhbHVlYDEAVGhyZWFkU2FmZU9iamVjdFByb3ZpZGVy
YDEASW50MzIAQ296eVJvYy5TU0lTUGx1cy4yMDE2ADxNb2R1bGU+AEVYVFJBAExaV19NQUdJQwBI
RFJfRVhURU5ERUQASERSX0JMT0NLX01PREUASERSX0ZSRUUAU3lzdGVtLklPAFRCTF9DTEVBUgBN
aWNyb3NvZnQuU3FsU2VydmVyLk1hbmFnZWREVFMASERSX01BWEJJVFMASU5JVF9CSVRTAE1BWF9C
SVRTAFRCTF9GSVJTVABEaXNwb3NlX19JbnN0YW5jZV9fAENyZWF0ZV9fSW5zdGFuY2VfXwB2YWx1
ZV9fAEdldENvbm5lY3Rpb25GaWxlXwBWYWxpZGF0ZUNvbm5lY3Rpb25fAFByb2plY3REYXRhAGRh
dGEAbXNjb3JsaWIATWljcm9zb2Z0LlZpc3VhbEJhc2ljAFNjcmlwdFRhc2tfNjIxNjA5YzZiOGIz
NDc4OWI4MWFkMDY0ZmUyYTczN2QAZ2V0X0NhblJlYWQAT3BlblJlYWQAZW5kAENyZWF0ZUluc3Rh
bmNlAGdldF9HZXRJbnN0YW5jZQBpbnN0YW5jZQBtX3NvdXJjZQBHZXRIYXNoQ29kZQBvbGRjb2Rl
AG1heG1heGNvZGUAYmxvY2tfbW9kZQBnZXRfTWVzc2FnZQBJRGlzcG9zYWJsZQBSdW50aW1lVHlw
ZUhhbmRsZQBHZXRUeXBlRnJvbUhhbmRsZQBnZXRfU291cmNlRmlsZQBzZXRfU291cmNlRmlsZQBn
ZXRfVGFyZ2V0RmlsZQBzZXRfVGFyZ2V0RmlsZQBnZXRfQ3JlYXRpb25OYW1lAG1hbmFnZXJOYW1l
AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRHRzLlJ1bnRpbWUAb25lAGV4cGVjdGVkVHlwZQBnZXRfRmls
ZUNvbm5lY3Rpb25UeXBlAEdldFR5cGUARmFpbHVyZQBWU1RBUlRTY3JpcHRPYmplY3RNb2RlbEJh
c2UAQXBwbGljYXRpb25CYXNlAENsb3NlAERpc3Bvc2UAQ3JlYXRlAEVkaXRvckJyb3dzYWJsZVN0
YXRlAERlbGV0ZQBnZXRfQ2FuV3JpdGUASGVscEtleXdvcmRBdHRyaWJ1dGUAR2VuZXJhdGVkQ29k
ZUF0dHJpYnV0ZQBEZWJ1Z2dhYmxlQXR0cmlidXRlAEVkaXRvckJyb3dzYWJsZUF0dHJpYnV0ZQBD
b21WaXNpYmxlQXR0cmlidXRlAFN0YW5kYXJkTW9kdWxlQXR0cmlidXRlAEhpZGVNb2R1bGVOYW1l
QXR0cmlidXRlAFRhcmdldEZyYW1ld29ya0F0dHJpYnV0ZQBEZWJ1Z2dlckhpZGRlbkF0dHJpYnV0
ZQBNeUdyb3VwQ29sbGVjdGlvbkF0dHJpYnV0ZQBDb25uZWN0aW9uQXR0cmlidXRlAERlc2NyaXB0
aW9uQXR0cmlidXRlAENvbXBpbGF0aW9uUmVsYXhhdGlvbnNBdHRyaWJ1dGUAQ0xTQ29tcGxpYW50
QXR0cmlidXRlAFNTSVNTY3JpcHRUYXNrRW50cnlQb2ludEF0dHJpYnV0ZQBSdW50aW1lQ29tcGF0
aWJpbGl0eUF0dHJpYnV0ZQBCeXRlAHJlYWRfYnl0ZQBnZXRfVmFsdWUAc2V0X1ZhbHVlAEdldE9i
amVjdFZhbHVlAHZhbHVlAElJZgBvZmYAZW9mAHJlc2V0YnVmAFN5c3RlbS5SdW50aW1lLlZlcnNp
b25pbmcAQ29tcGFyZVN0cmluZwBUb1N0cmluZwBGbHVzaABnZXRfTGVuZ3RoAFNldExlbmd0aABz
dGFjawBnZXRfQ2FuU2VlawBNaWNyb3NvZnQuU3FsU2VydmVyLlNjcmlwdFRhc2sATWljcm9zb2Z0
LlNxbFNlcnZlci5EdHMuVGFza3MuU2NyaXB0VGFzawBiaXRtYXNrAE1pY3Jvc29mdC5WaXN1YWxC
YXNpYy5NeVNlcnZpY2VzLkludGVybmFsAHJlYWRfaW50ZXJuYWwAU2NyaXB0T2JqZWN0TW9kZWwA
U3lzdGVtLkNvbXBvbmVudE1vZGVsAFNjcmlwdFRhc2tfNjIxNjA5YzZiOGIzNDc4OWI4MWFkMDY0
ZmUyYTczN2QuZGxsAGZpbGwARmlsZVN0cmVhbQBVbmNvbXByZXNzSW5wdXRTdHJlYW0AX2lucHV0
U3RyZWFtAGdldF9JdGVtAFN5c3RlbQBFbnVtAGxlbgBTeXN0ZW0uQ29tcG9uZW50TW9kZWwuRGVz
aWduAFNjcmlwdE1haW4AU2Vla09yaWdpbgBvcmlnaW4AZ2V0X0FwcGxpY2F0aW9uAE15QXBwbGlj
YXRpb24ARmlyZUluZm9ybWF0aW9uAEludGVyYWN0aW9uAEFjcXVpcmVDb25uZWN0aW9uAGdldF9Q
b3NpdGlvbgBzZXRfUG9zaXRpb24ASU9FeGNlcHRpb24ATm90U3VwcG9ydGVkRXhjZXB0aW9uAG8A
c3RhY2twAGZpbmNoYXIAcGFyc2VfaGVhZGVyAG1fQXBwT2JqZWN0UHJvdmlkZXIAbV9Vc2VyT2Jq
ZWN0UHJvdmlkZXIAbV9Db21wdXRlck9iamVjdFByb3ZpZGVyAG1fTXlXZWJTZXJ2aWNlc09iamVj
dFByb3ZpZGVyAGJ1ZmZlcgBDb25uZWN0aW9uTWFuYWdlcgBUb0ludGVnZXIAU3lzdGVtLkNvZGVE
b20uQ29tcGlsZXIARXZlbnRzT2JqZWN0V3JhcHBlcgBnZXRfVXNlcgBnZXRfQ29tcHV0ZXIATXlD
b21wdXRlcgBGaXJlRXJyb3IAQ2xlYXJQcm9qZWN0RXJyb3IAU2V0UHJvamVjdEVycm9yAEFjdGl2
YXRvcgAuY3RvcgAuY2N0b3IAU3lzdGVtLkRpYWdub3N0aWNzAE1pY3Jvc29mdC5WaXN1YWxCYXNp
Yy5EZXZpY2VzAGdldF9XZWJTZXJ2aWNlcwBNeVdlYlNlcnZpY2VzAE1pY3Jvc29mdC5WaXN1YWxC
YXNpYy5BcHBsaWNhdGlvblNlcnZpY2VzAFN5c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNlcwBN
aWNyb3NvZnQuVmlzdWFsQmFzaWMuQ29tcGlsZXJTZXJ2aWNlcwBTeXN0ZW0uUnVudGltZS5Db21w
aWxlclNlcnZpY2VzAERlYnVnZ2luZ01vZGVzAENvenlSb2MuU3FsU2VydmVyLlNTSVMuQXR0cmli
dXRlcwBFcXVhbHMAQ29udmVyc2lvbnMAZ2V0X0Nvbm5lY3Rpb25zAGJpdF9wb3MAemVyb3MAUnVu
dGltZUhlbHBlcnMAT3BlcmF0b3JzAFN1Y2Nlc3MAZ2V0X0R0cwBuX2JpdHMAbWF4Yml0cwBTY3Jp
cHRSZXN1bHRzAGdldF9FdmVudHMAQ29uY2F0AEZvcm1hdABPYmplY3QATXlQcm9qZWN0AG1fdGFy
Z2V0AG9mZnNldABzZXRfVGFza1Jlc3VsdABmcmVlX2VudABjb3VudABnb3QAbV9Db250ZXh0AHRh
Yl9wcmVmaXgAdGFiX3N1ZmZpeABTY3JpcHRUYXNrXzYyMTYwOWM2YjhiMzQ3ODliODFhZDA2NGZl
MmE3MzdkLk15AEFycmF5AENvcHkASXNOdWxsT3JFbXB0eQAAADdGAGEAaQBsAGUAZAAgAHQAbwAg
AHIAZQBhAGQAIABtAGEAZwBpAGMAIABuAHUAbQBiAGUAcgAAZUkAbgBwAHUAdAAgAG4AbwB0ACAA
aQBuACAAYwBvAG0AcAByAGUAcwBzACAAZgBvAHIAbQBhAHQAIAAoAHIAZQBhAGQAIABtAGEAZwBp
AGMAIABuAHUAbQBiAGUAcgAgADAAeAAAA3gAAAMpAAArRgBhAGkAbABlAGQAIAB0AG8AIAByAGUA
YQBkACAAaABlAGEAZABlAHIAAC9TAHQAcgBlAGEAbQAgAGMAbwBtAHAAcgBlAHMAcwBlAGQAIAB3
AGkAdABoACAAADcgAGIAaQB0AHMALAAgAGIAdQB0ACAAYwBhAG4AIABvAG4AbAB5ACAAaABhAG4A
ZABsAGUAIAAACyAAYgBpAHQAcwAAMUgAZQBhAGQAZQByACAAZQB4AHQAZQBuAHMAaQBvAG4AIABi
AGkAdAAgAHMAZQB0AAAhSABlAGEAZABlAHIAIABiAGkAdAAgADYAIABzAGUAdAAAH2MAbwByAHIA
dQBwAHQAIABpAG4AcAB1AHQAOgAgAAANIAA+ACAAMgA1ADUAACljAG8AcgByAHUAcAB0ACAAaQBu
AHAAdQB0ADoAIABjAG8AZABlAD0AABcsACAAZgByAGUAZQBfAGUAbgB0AD0AADlVAG4AYwBvAG0A
cAByAGUAcwBzAGUAZAAgACcAewAwAH0AJwAgAHQAbwAgACcAewAxAH0AJwAuAAEJRgBJAEwARQAA
RycAewAwAH0AJwAgAGMAbwBuAG4AZQBjAHQAaQBvAG4AIABpAHMAIABuAG8AdAAgACcAewAxAH0A
JwAgAHQAeQBwAGUALgABSycAJwB7ADAAfQAnACAAYwBvAG4AbgBlAGMAdABpAG8AbgAgAGYAaQBs
AGUAIABkAG8AZQBzAG4AJwB0ACAAZQB4AGkAcwB0AC4AAQBBjdlLxtTHS6bFLdV+g8ibAAQgAQEI
AyAAAQUgAQEREQQgAQEOBCABAQIFIAIBDg4FIAEBEUUHIAQBDg4ODgQHARAIByADCB0FCAgHBwUI
CAgICAQgAQ4OBgADDg4ODgMgAA4FAAEOHQ4GAAMcAhwcBAABCBwDBwEIHAcWCAgIHQgdBR0FCAgI
CAgFCAgdBQgICAgICAgMAAUBEoCVCBKAlQgIBAABDggHAAQODg4ODgUHAggQCAMHAQoDBwECAyAA
AhEHCggCDhIZHQUOEhkIEi0SLQYAARKAnQ4HIAMBHQUICAUAAQESLQQAAQEOBSAAEoCpBSAAEoCt
AgYOBgADDg4cHAogBgEIDg4OCBACCCAFAggODg4IAwAAAQMHAQ4EBwICAgQAAQIOBSAAEoCxBiAB
EoC1HAYAAwgODgIFBwMODhwEIAEcHAQAARwcBQACDg4cBhUSJAESFAQgABMABhUSJAESEAYVEiQB
EmEGFRIkARIgBCABAhwDIAAIBwABEmkRgMEEBwEeAAIeAAUQAQAeAAQKAR4ABAcBEwAGFRIkARMA
BwYVEnEBEwAGFRJxARMAAhMABAoBEwAFIAEBEwAIt3pcVhk04IkIiYRdzYCAzJEIFs9JC7gMNOoI
sD9ffxHVCjoEnR8AAAQQAAAABAkAAAAEHwAAAAQgAAAABEAAAAAEgAAAAAQAAQAABAEBAAAEAAAA
AAQBAAAAAgYIAwYdBQMGEhkDBh0IAgYCAgYFBwYVEiQBEhQHBhUSJAESEAcGFRIkARJhBwYVEiQB
EiADBhEcBSABARIZBCABCAgGIAIKChEdBCABAQoDIAAKBSACAg4OBAAAEhQEAAASEAQAABJhBAAA
EiAEIAASaQcQAQEeAB4ABzABAQEQHgADKAACAygACgMoAA4ECAASFAQIABIQBAgAEmEECAASIAQo
ABMACAEACAAAAAAAHgEAAQBUAhZXcmFwTm9uRXhjZXB0aW9uVGhyb3dzAQgBAAIAAAAAAEcBABou
TkVURnJhbWV3b3JrLFZlcnNpb249djQuMAEAVA4URnJhbWV3b3JrRGlzcGxheU5hbWUQLk5FVCBG
cmFtZXdvcmsgNAgBAAEAAAAAAAUBAAAAABgBAApNeVRlbXBsYXRlCDExLjAuMC4wAABhAQA0U3lz
dGVtLldlYi5TZXJ2aWNlcy5Qcm90b2NvbHMuU29hcEh0dHBDbGllbnRQcm90b2NvbBJDcmVhdGVf
X0luc3RhbmNlX18TRGlzcG9zZV9fSW5zdGFuY2VfXwAAABcBABJGaWxlQ29ubmVjdGlvblR5cGUA
ACYBACFTZWxlY3QgY29ubmVjdGlvbiB0byBzb3VyY2UgZmlsZS4AACYBACFTZWxlY3QgY29ubmVj
dGlvbiB0byB0YXJnZXQgZmlsZS4AABABAAtNeS5Db21wdXRlcgAAEwEADk15LkFwcGxpY2F0aW9u
AAAMAQAHTXkuVXNlcgAAEwEADk15LldlYlNlcnZpY2VzAABESQAAAAAAAAAAAABeSQAAACAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAUEkAAAAAAAAAAAAAAABfQ29yRGxsTWFpbgBtc2NvcmVlLmRsbAAA
AAAA/yUAIAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAABgA
AIAAAAAAAAAAAAAAAAAAAAEAAQAAADAAAIAAAAAAAAAAAAAAAAAAAAEAAAAAAEgAAABYYAAA1AIA
AAAAAAAAAAAA1AI0AAAAVgBTAF8AVgBFAFIAUwBJAE8ATgBfAEkATgBGAE8AAAAAAL0E7/4AAAEA
AAAAAAAAAAAAAAAAAAAAAD8AAAAAAAAABAAAAAIAAAAAAAAAAAAAAAAAAABEAAAAAQBWAGEAcgBG
AGkAbABlAEkAbgBmAG8AAAAAACQABAAAAFQAcgBhAG4AcwBsAGEAdABpAG8AbgAAAAAAAACwBDQC
AAABAFMAdAByAGkAbgBnAEYAaQBsAGUASQBuAGYAbwAAABACAAABADAAMAAwADAAMAA0AGIAMAAA
ACwAAgABAEYAaQBsAGUARABlAHMAYwByAGkAcAB0AGkAbwBuAAAAAAAgAAAAMAAIAAEARgBpAGwA
ZQBWAGUAcgBzAGkAbwBuAAAAAAAwAC4AMAAuADAALgAwAAAAgAAwAAEASQBuAHQAZQByAG4AYQBs
AE4AYQBtAGUAAABTAGMAcgBpAHAAdABUAGEAcwBrAF8ANgAyADEANgAwADkAYwA2AGIAOABiADMA
NAA3ADgAOQBiADgAMQBhAGQAMAA2ADQAZgBlADIAYQA3ADMANwBkAC4AZABsAGwAAAAoAAIAAQBM
AGUAZwBhAGwAQwBvAHAAeQByAGkAZwBoAHQAAAAgAAAAiAAwAAEATwByAGkAZwBpAG4AYQBsAEYA
aQBsAGUAbgBhAG0AZQAAAFMAYwByAGkAcAB0AFQAYQBzAGsAXwA2ADIAMQA2ADAAOQBjADYAYgA4
AGIAMwA0ADcAOAA5AGIAOAAxAGEAZAAwADYANABmAGUAMgBhADcAMwA3AGQALgBkAGwAbAAAADQA
CAABAFAAcgBvAGQAdQBjAHQAVgBlAHIAcwBpAG8AbgAAADAALgAwAC4AMAAuADAAAAA4AAgAAQBB
AHMAcwBlAG0AYgBsAHkAIABWAGUAcgBzAGkAbwBuAAAAMAAuADAALgAwAC4AMAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAwAAABwOQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=