'Creates a self-extracting VBS file slightly more than twice
'the size of the original file. The created file will be named
'the same as the source file except for an additional VBS 
'extension. For example, "test.gif" would create "test.gif.vbs".
'When run, the self-extracting VBS file will create the original
'file in the same directory as the VBS file.


Dim fs, ts, wsh
Dim blnScriptCreated, blnQ193998Created
Dim strFunctionName, strLine, strScriptFile, strQ193998File
Dim varByteArray
Dim intPos, intPercent, lngCounter
Const BYTES_PER_LINE = 256
Const ForWriting = 2
Set wsh = CreateObject("Wscript.Shell")
Set fs = CreateObject("Scripting.FileSystemObject")

'Verify we have a good argument
If WScript.Arguments.Count <> 1 Then
	WScript.Echo "Drop a file on me. I will create a VBS self-extractor."
	WScript.Quit 1
End If
If Not fs.FileExists(WScript.Arguments(0)) Then
	WScript.Echo "The argument you supplied does not exist as a file."
	WScript.Quit 1
End If

'Use ADO if available, otherwise create and use Q193998
If IsRegistered("ADODB.Stream") Then
	'Base the name of the function we'll create on the source file, but clean it up first
	For intCounter = 1 To Len(fs.GetBaseName(WScript.Arguments(0)))
		If InStr("QWERTYUIOPASDFGHJKLZXCVBNM1234567890", Ucase(Mid(fs.GetBaseName(WScript.Arguments(0)), intCounter, 1))) <> 0 Then
			strFunctionName = strFunctionName & Mid(fs.GetBaseName(WScript.Arguments(0)), intCounter, 1)
		End If
	Next
	If strFunctionName = "" Then strFunctionName = "File"
	strFunctionName = UCase(Left(strFunctionName, 1)) & LCase(Mid(strFunctionName, 2))
	strFunctionName = "Create" & strFunctionName
	'Read the source file
	varByteArray = ReadByteArray(WScript.Arguments(0))
	'Begin writing the output file
	Set ts = fs.OpenTextFile(WScript.Arguments(0) & ".vbs", ForWriting, True)
	ts.WriteLine "'This script will create a file named """ & fs.GetFileName(WScript.Arguments(0)) & """"
	ts.WriteLine ""
	ts.WriteLine strFunctionName & " " & "Left(Wscript.ScriptFullName, InStrRev(WScript.ScriptFullName, ""\"")) & """ & fs.GetFileName(WScript.Arguments(0)) & """"
	ts.WriteLine ""
	ts.WriteLine "Sub " & strFunctionName & "(strOutFile)"
	ts.WriteLine "Dim ts, x"
	ts.WriteLine "If Instr(strOutFile, ""\"") = 0 Then strOutFile = Left(Wscript.ScriptFullName, InStrRev(WScript.ScriptFullName, ""\"")) & strOutFile"
	ts.WriteLine vbTab & "Set ts = CreateObject(""Scripting.FileSystemObject"").OpenTextFile(strOutFile, 2, True)"
	ts.WriteLine vbTab & "On Error Resume Next"
	ts.Write vbTab & "For x = 1 To " & (BYTES_PER_LINE * 2) - 1 & " Step 2 : ts.Write Chr(Clng(""&H"" & Mid("
	intPercent = 0
	'Now read every byte in the file and spit out hex
	strLine = ""
	For lngCounter = 1 to UBound(varByteArray) + 1
		strLine = strLine & Right("00" & Hex(Ascb(Midb(varByteArray,lngCounter,1))), 2)
		If lngCounter Mod BYTES_PER_LINE = 0 Then
			'Outside quote the string
			strLine = """" & strLine & """"
			'Now write the accumulated data line
			ts.WriteLine strLine & ",x,2))) : Next"
			strLine = ""
			If lngCounter <> UBound(varByteArray) + 1 Then
				ts.Write vbTab & "For x = 1 To " & (BYTES_PER_LINE * 2) - 1 & " Step 2 : ts.Write Chr(Clng(""&H"" & Mid("
			End If
			'Show progress
			If Cint(100 * lngCounter / UBound(varByteArray)) <> intPercent Then
				intPercent = Cint(100 * lngCounter / UBound(varByteArray))
				If Lcase(Right(Wscript.FullName, 12)) = "\cscript.exe" Then
					'Text output if host is CSCRIPT
					intPercent = Cint(100 * lngCounter / UBound(varByteArray))
					WScript.Echo intPercent & "%"
				End If
			End If
		End If
	Next
	If strLine <> "" Then 
		'Outside quote the string
		strLine = """" & strLine & """"
		'Now write the accumulated data line
		ts.WriteLine strLine & ",x,2))) : Next"
	End If
	ts.WriteLine vbTab & "ts.Close"
	ts.WriteLine "End Sub"
	ts.Close
Else
	'Create and register the Q193998 OCX file
	If IsRegistered("q193998.BinRead") Then
		blnQ193998Created = False
	Else
		strQ193998File = fs.GetAbsolutePathName(WScript.ScriptFullName & "\..\q193998.ocx")
		CreateQ193998 strQ193998File
		RegisterServer strQ193998File
		blnQ193998Created = True
	End If
	'Create a working script (Q193998 script must be a separate process)
	strScriptFile = fs.GetAbsolutePathName(WScript.ScriptFullName & "\..\~sfx.vbs")
	If fs.FileExists(strScriptFile) Then
		blnScriptCreated = False
	Else
		CreateSfx strScriptFile
		blnScriptCreated = True
	End If
	'Warn the user not to close this window
	If Lcase(Right(Wscript.FullName, 12)) = "\cscript.exe" Then
		WScript.Echo "Do not close this window. This window has launched "
		WScript.Echo "a child window to perform the requested task. This "
		WScript.Echo "window will close as soon as the child window finishes."
	End If
	'Launch the working script and wait for it to finish
	wsh.Run "cscript.exe" & " " & """" & strScriptFile & """" & " " & """" & WScript.Arguments(0) & """", 1, True
	'Delete working files if appropriate
	If blnScriptCreated Then
		On Error Resume Next
		If fs.FileExists(strScriptFile) Then fs.DeleteFile strScriptFile, True
		On Error Goto 0
	End If
	'UnRegister and delete objects if appropriate
	If blnQ193998Created Then
		UnRegisterServer strQ193998File
		On Error Resume Next 'Delete might fail if OCX/DLL isn't released
		fs.DeleteFile strQ193998File, True
		On Error Goto 0 'Turn Error checking back on
	End If
End If

Function IsRegistered(strObjectName)
'Returns True if object can be created
Dim obj
On Error Resume Next
	Set obj = Nothing
	Set obj = CreateObject(strObjectName)
	If obj Is Nothing Then
		IsRegistered = False
	Else
		IsRegistered = True
		Set obj = Nothing
	End If
End Function

Sub RegisterServer(strPath)
Dim fs, wsh
Const SystemFolder = 1
Const WshNormalFocus = 1
Set wsh = CreateObject("Wscript.Shell")
Set fs = CreateObject("Scripting.FileSystemObject")
	Select Case Lcase(Right(strPath, 4))
		Case ".exe"
			wsh.Run strPath & " /RegServer", WshNormalFocus, True
		Case ".wsc"
			wsh.Run "regsvr32.exe /i:""" & strPath & """ """ & fs.GetSpecialFolder(SystemFolder) & "\scrobj.dll""", WshNormalFocus, True
		Case Else
			wsh.Run "regsvr32.exe /s """ & strPath & """", WshNormalFocus, True
			'wsh.Run "rundll32.exe """ & strPath & """ DllRegisterServer", WshNormalFocus, True
	End Select
End Sub

Sub UnRegisterServer(strPath)
Dim fs, wsh
Const SystemFolder = 1
Const WshNormalFocus = 1
Set wsh = CreateObject("Wscript.Shell")
Set fs = CreateObject("Scripting.FileSystemObject")
	Select Case Lcase(Right(strPath, 4))
		Case ".exe"
			wsh.Run strPath & " /UnRegServer", WshNormalFocus, True
		Case ".wsc"
			wsh.Run "regsvr32.exe /u /n /i:""" & strPath & """ """ & fs.GetSpecialFolder(SystemFolder) & "\scrobj.dll""", WshNormalFocus, True
		Case Else
			wsh.Run "regsvr32.exe /s /u """ & strPath & """", WshNormalFocus, True
			'wsh.Run "rundll32.exe """ & strPath & """ DllUnRegisterServer", WshNormalFocus, True
	End Select
End Sub

Function ReadByteArray(strFileName)
Const adTypeBinary = 1
Dim bin
	Set bin = CreateObject("ADODB.Stream")
	bin.Type = adTypeBinary
	bin.Open
	bin.LoadFromFile strFileName
	ReadByteArray = bin.Read
End Function

Sub CreateSfx(strOutFile)
Dim ts, x
If Instr(strOutFile, "\") = 0 Then strOutFile = Left(Wscript.ScriptFullName, InStrRev(WScript.ScriptFullName), "\") & strOutFile
	Set ts = CreateObject("Scripting.FileSystemObject").OpenTextFile(strOutFile, 2, True)
	On Error Resume Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("44696D207661724279746541727261792C206C6E67436F756E7465722C2066732C2074732C20626C6E576173437265617465640D0A44696D2073747246756E6374696F6E4E616D652C207374724C696E652C20696E74506F732C20696E7450657263656E740D0A436F6E73742042595445535F5045525F4C494E45203D203235360D0A436F6E737420466F7257726974696E67203D20320D0A536574206673203D204372656174654F626A6563742822536372697074696E672E46696C6553797374656D4F626A65637422290D0A274261736520746865206E616D65206F66207468652066756E6374696F6E207765276C6C20637265617465206F6E20746865",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("20736F757263652066696C652C2062757420636C65616E2069742075702066697273740D0A466F7220696E74436F756E746572203D203120546F204C656E2866732E476574426173654E616D6528575363726970742E417267756D656E747328302929290D0A20202020496620496E537472282251574552545955494F504153444647484A4B4C5A584356424E4D31323334353637383930222C205563617365284D69642866732E476574426173654E616D6528575363726970742E417267756D656E7473283029292C20696E74436F756E7465722C2031292929203C3E2030205468656E0D0A202020202020202073747246756E6374696F6E4E616D65203D",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("2073747246756E6374696F6E4E616D652026204D69642866732E476574426173654E616D6528575363726970742E417267756D656E7473283029292C20696E74436F756E7465722C2031290D0A20202020456E642049660D0A4E6578740D0A49662073747246756E6374696F6E4E616D65203D202222205468656E2073747246756E6374696F6E4E616D65203D202246696C65220D0A73747246756E6374696F6E4E616D65203D205543617365284C6566742873747246756E6374696F6E4E616D652C203129292026204C43617365284D69642873747246756E6374696F6E4E616D652C203229290D0A73747246756E6374696F6E4E616D65203D2022437265",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("6174652220262073747246756E6374696F6E4E616D650D0A27526561642074686520736F757263652066696C650D0A766172427974654172726179203D204372656174654F626A6563742822713139333939382E42696E5265616422292E7265616442696E46696C6528575363726970742E417267756D656E7473283029290D0A27426567696E2077726974696E6720746865206F75747075742066696C650D0A536574207473203D2066732E4F70656E5465787446696C6528575363726970742E417267756D656E7473283029202620222E766273222C20466F7257726974696E672C2054727565290D0A74732E57726974654C696E652022275468697320",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("7363726970742077696C6C2063726561746520612066696C65206E616D65642022222220262066732E47657446696C654E616D6528575363726970742E417267756D656E747328302929202620222222220D0A74732E57726974654C696E652022220D0A74732E57726974654C696E652073747246756E6374696F6E4E616D65202620222022202620224C65667428577363726970742E53637269707446756C6C4E616D652C20496E53747252657628575363726970742E53637269707446756C6C4E616D652C2022225C2222292920262022222220262066732E47657446696C654E616D6528575363726970742E417267756D656E74732830292920262022",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("2222220D0A74732E57726974654C696E652022220D0A74732E57726974654C696E652022537562202220262073747246756E6374696F6E4E616D6520262022287374724F757446696C6529220D0A74732E57726974654C696E65202244696D2074732C2078220D0A74732E57726974654C696E652022496620496E737472287374724F757446696C652C2022225C222229203D2030205468656E207374724F757446696C65203D204C65667428577363726970742E53637269707446756C6C4E616D652C20496E53747252657628575363726970742E53637269707446756C6C4E616D65292C2022225C2222292026207374724F757446696C65220D0A74732E",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("57726974654C696E6520766254616220262022536574207473203D204372656174654F626A656374282222536372697074696E672E46696C6553797374656D4F626A6563742222292E4F70656E5465787446696C65287374724F757446696C652C20322C205472756529220D0A74732E57726974654C696E65207662546162202620224F6E204572726F7220526573756D65204E657874220D0A74732E577269746520766254616220262022466F722078203D203120546F20222026202842595445535F5045525F4C494E45202A203229202D20312026202220537465702032203A2074732E57726974652043687228436C6E67282222264822222026204D69",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("6428220D0A696E7450657263656E74203D20300D0A274E6F772072656164206576657279206279746520696E207468652066696C6520616E642073706974206F7574206865780D0A7374724C696E65203D2022220D0A466F72206C6E67436F756E746572203D203120746F2055426F756E6428766172427974654172726179290D0A202020207374724C696E65203D207374724C696E65202620526967687428223030222026204865782841736362284D696462287661724279746541727261792C6C6E67436F756E7465722C312929292C2032290D0A202020204966206C6E67436F756E746572204D6F642042595445535F5045525F4C494E45203D203020",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("5468656E0D0A2020202020202020274F7574736964652071756F74652074686520737472696E670D0A20202020202020207374724C696E65203D20222222222026207374724C696E65202620222222220D0A2020202020202020274E6F772077726974652074686520616363756D756C617465642064617461206C696E650D0A202020202020202074732E57726974654C696E65207374724C696E65202620222C782C32292929203A204E657874220D0A20202020202020207374724C696E65203D2022220D0A20202020202020204966206C6E67436F756E746572203C3E2055426F756E642876617242797465417272617929205468656E0D0A2020202020",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("2020202020202074732E577269746520766254616220262022466F722078203D203120546F20222026202842595445535F5045525F4C494E45202A203229202D20312026202220537465702032203A2074732E57726974652043687228436C6E67282222264822222026204D696428220D0A2020202020202020456E642049660D0A20202020202020202753686F772070726F67726573730D0A202020202020202049662043696E7428313030202A206C6E67436F756E746572202F2055426F756E64287661724279746541727261792929203C3E20696E7450657263656E74205468656E0D0A202020202020202020202020696E7450657263656E74203D20",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("43696E7428313030202A206C6E67436F756E746572202F2055426F756E642876617242797465417272617929290D0A2020202020202020202020204966204C6361736528526967687428577363726970742E46756C6C4E616D652C2031322929203D20225C637363726970742E65786522205468656E0D0A202020202020202020202020202020202754657874206F757470757420696620686F737420697320435343524950540D0A20202020202020202020202020202020696E7450657263656E74203D2043696E7428313030202A206C6E67436F756E746572202F2055426F756E642876617242797465417272617929290D0A2020202020202020202020",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("2020202020575363726970742E4563686F20696E7450657263656E742026202225220D0A202020202020202020202020456E642049660D0A2020202020202020456E642049660D0A20202020456E642049660D0A4E6578740D0A4966207374724C696E65203C3E202222205468656E200D0A20202020274F7574736964652071756F74652074686520737472696E670D0A202020207374724C696E65203D20222222222026207374724C696E65202620222222220D0A20202020274E6F772077726974652074686520616363756D756C617465642064617461206C696E650D0A2020202074732E57726974654C696E65207374724C696E65202620222C782C32",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("292929203A204E657874220D0A456E642049660D0A74732E57726974654C696E652076625461622026202274732E436C6F7365220D0A74732E57726974654C696E652022456E6420537562220D0A74732E436C6F7365",x,2))) : Next
	ts.Close
End Sub

Sub CreateQ193998(strOutFile)
Dim ts, x
If Instr(strOutFile, "\") = 0 Then strOutFile = Left(Wscript.ScriptFullName, InStrRev(WScript.ScriptFullName), "\") & strOutFile
	Set ts = CreateObject("Scripting.FileSystemObject").OpenTextFile(strOutFile, 2, True)
	On Error Resume Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("4D5A90000300000004000000FFFF0000B800000000000000400000000000000000000000000000000000000000000000000000000000000000000000800000000E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F64652E0D0D0A2400000000000000504500004C010500DF3FF0400000000000000000E0000E210B010414000C0000001E0000000000004810000000100000002000000000001100100000000200000400000001000000040000000000000000600000000400009DC4000002000000000010000010000000001000001000000000000010000000C0190000A4000000",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("003000002800000000400000C80C00000000000000000000000000000000000000500000C40000000000000000000000000000000000000000000000000000000000000000000000000000000000000040020000200000005C300000340000000000000000000000000000000000000000000000000000002E74657874000000640A000000100000000C000000040000000000000000000000000000200000602E646174610000008C0A0000002000000000000000000000000000000000000000000000400000C02E696461746100000C010000003000000002000000100000000000000000000000000000400000402E72737263000000C80C000000400000",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("000E000000120000000000000000000000000000400000402E72656C6F630000E200000000500000000200000020000000000000000000000000000040000042499943381000000000000000000000004D535642564D35302E444C4C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("FF2570300011FF2574300011FF256C300011FF2568300011FF2560300011FF2564300011FF255C300011FF2578300011FF2584300011FF2580300011FF257C300011FF25883000115A68842A001168882A001152E9E9FFFFFF000000480000003000000040000000380000000ED0A9BC78936D45824BEEC15A31F02200000000020001000000727475703D2271313933393938007131393339393800003D22220D0A54690000000088000000000000000200000000000000ECD9180D250513488099E5E15A3E7BE00100000090000000A00000000100000091010200002030757131393342696E526561640084E3B5C6F4921B4E880941A0DE6AD29E15AF3A20",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("04D7AF4085350780F54C63C550000000741940A40A1AC94AAB01F677C358B95100000000000000000000000000000000000000000300000091010200ECD9180D250513488099E5E15A3E7BE085000000000000004C1700115CA0D900564235218C0E2A000000000000000000000000007E0000000000000000000000000004000904000000000000000000001015001100F0300000FFFFFF090000000100000001000000E90000000C1100110C1100115C1000116800000070000000780000007900000071313933393938007131393339393800007131393339393800000000010000006C1300110000000008180011FFFFFFFF00000000C013001100200011",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("01000000B050170003002000000000009CEC17005812001101000000181400110000000064120011010000006C120011010000006812001101000000701200110100E20168006C0098120011D022001100000000E42413000010001106100011EC140011281400113814001148140011400029003C00000058140011FFFFFFFF00000000000000009C120011D8E8140068140011FFFFFFFF5F1300110000000070120011E011001112100011181000111E10001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B800000000663D33C0BA541900116824100011C3000000002420001148180011FFFFFFFF0000000014200011FE9B87AABB868D4FBA7CD09B530719340E00010004000100C0130011000000000000000000000000F813001109040000090400000000000002000000E0110011FFFFFFFFDC1400110000000000000000000000000014001101000000F0130011FFFF000003A81D0000000000D0140011000000007131393339393800",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("42696E52656164003B2733D5190C634D8568C9198E342CC4ECD9180D250513488099E5E15A3E7BE0741940A40A1AC94AAB01F677C358B95184E3B5C6F4921B4E880941A0DE6AD29E15AF3A2004D7AF4085350780F54C63C51250AD339966CF11B70C00AA0060D39355736572436F6E74726F6C002E3DFBFCFAA06810A73808002B3371B5433A5C50726F6772616D2046696C65735C5642354343455C5642352E4F4C4200564200007414001100000000050000000900000084140011A4140011C8220011000000000000000058D014007265616442696E46696C65000C00480000000000000000001600000004000000010000000000000000007301FFFFFFFF",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("01000000564241352E444C4C00000000F40100006C13001100000000A0190011B01900118C0A0000002000110C100011000000002A005C00410044003A005C0065007200690063005C004D007900200044006F00630075006D0065006E00740073005C00500072006F006A0065006300740073005C0071003100390033003900390038005C0073006F0075007200630065005C0071003100390033003900390038002E007600620070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C11001100000000FFCC310000741940A40A1AC94AAB01F677C358B9513B2733D5190C634D8568C9198E342CC41250AD339966CF11B70C00AA0060D3930000000000000000000000000000000000000000000000000000000000000000000000002C0000002700000000070042696E5265616400281901004200350000000000000000C0120000100E0000FF04000000E4170011081800117C180011000000000801A507FFFF00000000000000000360DC1700110000000000000000",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("000000001E102F0000000000E0110011FFFFFFFF000000000000000000000000D417001100000000D4170011D4170011D41700110000000000000000000000004800000004010000000000006C130011FFFFFFFF00000000D8170011000000000000000000000000FFFFFFFF00000000A814001158140011CC2200116266696C656E616D6500000058685C11001168842A001168882A001150E98CF7FFFF58685C11001168842A001168882A001150E97CF7FFFF58685C11001168842A001168882A001150E96CF7FFFF58685C11001150E966F7FFFF00006C0C004368FFFF2E4B70002738FF0B00000400E77160FF3538FF6C68FF6C60FFE4F4FFFE5D20016C",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("68FF5E010004007164FFF5000000006C64FFF501000000AE045CFFFE8E0100FFFF010000006C60FFE4045CFFFF1602006C60FFE4FD3D6C5CFF4D48FF1120FD006CFFFF2F10001000FF2F10001000FF2F10001000E01100110C0044007C003C00000000000000FB01000000002200000000000400000000016CFF020058FF010068FF01005CFF0501000000000000000010000000000001000000000038FF0200E9E9E9E9CCCCCCCCCCCCCCCCCCCCCCCC9E9E9E9ECCCCCCCCCCCCCCCCCCCCCCCC00000000DF3FF04000000000101A0000010000000400000004000000E8190000F8190000081A0000CA1800009E180000B4180000881800001C1A00002C1A0000",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("3E1A0000501A00000000010002000300713139333939382E6F637800446C6C43616E556E6C6F61644E6F7700446C6C476574436C6173734F626A65637400446C6C526567697374657253657276657200446C6C556E726567697374657253657276657200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("28300000FFFFFFFFFFFFFFFF903000005C30000000000000000000000000000000000000000000009E300000B0300000C4300000DA300000F63000008802008042020080650000806600008067000080680000806900008000000000FC2F3E769D293076D17F31764A633176592B30769C362E76926131765DA6317643A8337623F139767D1331767D023276000000004D535642564D35302E444C4C000000004D65746843616C6C456E67696E65000000004556454E545F53494E4B5F4164645265660000004556454E545F53494E4B5F52656C65617365000000004556454E545F53494E4B5F5175657279496E746572666163650000005F5F766261457863",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("65707448616E646C6572000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("00000000DF3FF040180000000300020078010080980000808801008080000080A2010080680000800200000050000080100000003800008000000000DF3FF040180000000000010001000000B000008000000000DF3FF040180000000000010030750000C800008000000000DF3FF040180000000000010001000000E000008000000000DF3FF040180000000000010001000000F800008000000000DF3FF0401800000000000100010000001001008000000000DF3FF0401800000000000100090400002801000000000000DF3FF0401800000000000100000000003801000000000000DF3FF0401800000000000100000000004801000000000000DF3FF040",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("1800000000000100000000005801000000000000DF3FF04018000000000001000000000068010000D041000044030000B00400000000000014450000E0000000B004000000000000F445000014000000B0040000000000000846000014000000B0040000000000001C460000AC060000B004000000000000070054005900500045004C00490042000C005F004900490044005F00420049004E0052004500410044000F005F005300520043004900490044005F00420049004E0052004500410044000000000000000000000000000000440334000000560053005F00560045005200530049004F004E005F0049004E0046004F0000000000BD04EFFE00000100",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("0000010000000000000001000000000000000000000000000400000002000000000000000000000000000000440000000000560061007200460069006C00650049006E0066006F00000000002400040000005400720061006E0073006C006100740069006F006E00000000000904B004A4020000010053007400720069006E006700460069006C00650049006E0066006F00000080020000010030003400300039003000340042003000000058003E00010043006F006D006D0065006E0074007300000043006F00640065002000660072006F006D0020004D006900630072006F0073006F006600740020004B00420020005100310039003300390039003800",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("0000000038001800010043006F006D00700061006E0079004E0061006D00650000000000450072006900630020005000680065006C00700073000000700048000100460069006C0065004400650073006300720069007000740069006F006E0000000000520065006100640073002000620069006E006100720079002000660069006C006500200069006E0074006F00200061002000620079007400650020006100720072006100790000003800140001004C006500670061006C0043006F00700079007200690067006800740000004D006900630072006F0073006F00660074000000380018000100500072006F0064007500630074004E0061006D006500",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("0000000071003100390033003900390038002E006F006300780000002C000A000100460069006C006500560065007200730069006F006E000000000031002E00300030000000000030000A000100500072006F006400750063007400560065007200730069006F006E00000031002E00300030000000000030001000010049006E007400650072006E0061006C004E0061006D0065000000710031003900330039003900380000004000180001004F0072006900670069006E0061006C00460069006C0065006E0061006D006500000071003100390033003900390038002E006F006300780000002C00020001004F004C004500530065006C00660052006500",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("670069007300740065007200000000000000000028000000100000000F0000000100040000000000780000000000000000000000100000001000000000000000000080000080000000808000800000008000800080800000C0C0C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00778000000000077777877777777707777787000000070777778F770F77070777778F870F07070777778FFF0F000707777787000000070777778F770F0B800777778F870F0B708777778FFF0FF0B807777787777770B7077777CCCCCCCC0B807777CCCCCCCC0B0077777777777770197777777777777000771000000015AF3A2004D7AF40",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("85350780F54C63C51000000084E3B5C6F4921B4E880941A0DE6AD29E4D5346540200010000000000090400000000000041000000010000000200000003000000000000000000000000000000060000003300000000000000FFFFFFFFFFFFFFFF200000008000000001000000010000000000000064000000C8000000500100002C010000FFFFFFFF0F000000AC0300000C000000FFFFFFFF0F000000B80300001C000000FFFFFFFF0F0000008C03000020000000FFFFFFFF0F0000007C02000080000000FFFFFFFF0F000000FC02000090000000FFFFFFFF0F000000D403000000020000FFFFFFFF0F000000D405000084000000FFFFFFFF0F00000058060000",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("0C000000FFFFFFFF0F0000006406000008000000FFFFFFFF0F000000FFFFFFFF00000000FFFFFFFF0F000000FFFFFFFF00000000FFFFFFFF0F000000FFFFFFFF00000000FFFFFFFF0F000000FFFFFFFF00000000FFFFFFFF0F000000FFFFFFFF00000000FFFFFFFF0F000000342100006C06000060000000580000000300000000000000010000000000000000000000000000000000000060000000D01100001400000001000000FFFFFFFF0000000000000000FFFFFFFF0100A80704000000010000000200070000000000FFFFFFFF25210100AC06000000000000FFFFFFFF0300000000000000000000000000000000000000000000000000000018000000",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("200000002800000001000000FFFFFFFF0000000000000000FFFFFFFF0200000004000000000000000000000000000000FFFFFFFF24210200AC06000000000000FFFFFFFF0300000000000000000000000000000000000000000000000000000078000000901000003C00000001000000FFFFFFFF0000000000000000FFFFFFFF0100000004000000FFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFF48000000FFFFFFFFFFFFFFFFFFFFFFFF18000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78000000FFFFFFFF30000000FFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("FFFFFFFF60000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0ED0A9BC78936D45824BEEC15A31F022FEFFFFFFFFFFFFFFECD9180D250513488099E5E15A3E7BE064000000FFFFFFFF3004020000000000C00000000000004602000000FFFFFFFF0004020000000000C00000000000004601000000FFFFFFFF84E3B5C6F4921B4E880941A0DE6AD29E00000000FFFFFFFF15AF3A2004D7AF4085350780F54C63C5C8000000FFFFFFFF0000000001000000FFFFFFFF10000000C800000003000000FFFFFFFFFFFFFFFF0000010300000000480000003000000000000000020000002D005354444F4C45322E544C42575757FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14000000FFFFFFFFFFFFFFFF6C000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54000000FFFFFFFFFFFFFFFF3C000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0700B47A71313933",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("3939385700000000FFFFFFFF083850F65F42696E5265616464000000FFFFFFFF0738651F42696E5265616457C8000000FFFFFFFF09386F7A5F5F42696E5265616457575700000000FFFFFFFF0B00EC657265616442696E46696C6557FFFFFFFFFFFFFFFF0900D32F6266696C656E616D655757570700713139333939385757571A000C400C000C8030000000300000001900198000000000A5075C000944000002000000080008806C0000000100000000000000FFFFFFFF0A0000000000036054000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("00100000C4000000023008300E3014301A30203026302C30323038303E3044304A304F3054318C31A831AC31B031E431EC31F831FC3114321C3224322C3234323C3248324C3258325C326032643268326C327832883290329832A032A432A832AC32B032623367337033743380339C33AC33C033C833D833E033F033A834B834BC34C03414351C35203528352C354437D437D837DC37F4370C38203828382C3830384C3858387038743878388A388F389438A038A538AA38B638BB38C038CC3854390000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",x,2))) : Next
	For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",x,2))) : Next
	ts.Close
End Sub
