首页
社区
课程
招聘
[原创] 看雪 2022 KCTF 秋季赛 第八题 商贸往来
2022-12-4 07:02 19544

[原创] 看雪 2022 KCTF 秋季赛 第八题 商贸往来

2022-12-4 07:02
19544

IDA逆向,主程序逻辑不多,前面先是解析 PEB 找到 KERNEL32.DLL 的基址以及 GetProcAddress 和 LoadLibraryA 的地址,然后通过 GetProcAddress 找到若干个 win32api 函数的地址存入一个结构中供后续使用。

 

可以定义下面的结构体,这样伪代码中的间接函数调用会变得非常好看

 

(p.s. 从做题来讲其实没啥必要,直接动态调试找关键点更快。但,看着一片清爽堪比源代码的伪代码,何尝不是一种赏心悦目呢~)
(p.s. IDA 有 Shift+F9 的 Structures 窗口和 Shift+F1 的 Local Types 窗口,前者是交互式定义,后者是代码定义(包含导入的以及创建的),二者同步。下面的结构体就是在 Structures 窗口中定义后从 Local Types 窗口导出的)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
struct struc_1
{
  int kernel32_dll_baseaddr;
  HMODULE (__stdcall *LoadLibraryA)(LPCSTR lpLibFileName);
  FARPROC (__stdcall *GetProcAddress)(HMODULE hModule, LPCSTR lpProcName);
  int LocalAlloc;
  void (__stdcall *ExitProcess)(UINT uExitCode);
  HMODULE (__stdcall *GetModuleHandleW)(LPCWSTR lpModuleName);
  int (__stdcall *lstrlenA)(LPCSTR lpString);
  BOOL (__stdcall *CreateProcessW)(LPCWSTR lpApplicationName, LPWSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory, LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation);
  BOOL (__stdcall *GetThreadContext)(HANDLE hThread, LPCONTEXT lpContext);
  DWORD (__stdcall *ResumeThread)(HANDLE hThread);
  BOOL (__stdcall *CloseHandle)(HANDLE hObject);
  LPVOID (__stdcall *VirtualAllocEx)(HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect);
  BOOL (__stdcall *WriteProcessMemory)(HANDLE hProcess, LPVOID lpBaseAddress, LPCVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesWritten);
  BOOL (__stdcall *GetExitCodeProcess)(HANDLE hProcess, LPDWORD lpExitCode);
  DWORD (__stdcall *GetModuleFileNameW)(HMODULE hModule, LPWSTR lpFilename, DWORD nSize);
  DWORD (__stdcall *WaitForSingleObject)(HANDLE hHandle, DWORD dwMilliseconds);
  BOOL (__stdcall *TerminateProcess)(HANDLE hProcess, UINT uExitCode);
  LPVOID (__stdcall *VirtualAlloc)(LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect);
  DWORD (__stdcall *GetLastError)();
  HANDLE (__stdcall *CreateEventA)(LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, BOOL bInitialState, LPCSTR lpName);
  int user32_dll_baseaddr;
  INT_PTR (__stdcall *DialogBoxParamA)(HINSTANCE, LPCSTR, HWND, DLGPROC, LPARAM);
  int (__stdcall *MessageBoxA)(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType);
  HWND (__stdcall *GetDlgItem)(HWND hDlg, int nIDDlgItem);
  int (__stdcall *GetWindowTextLengthA)(HWND hWnd);
  int (__stdcall *GetWindowTextA)(HWND hWnd, LPSTR lpString, int nMaxCount);
  int cabinet_dll_baseaddr;
  BOOL (__stdcall *CreateDecompressor)(DWORD Algorithm, void *AllocationRoutines, void *DecompressorHandle);
  int (__stdcall *Decompress)(int, void *, size_t, void *, SIZE_T, SIZE_T *);
  BOOL (__stdcall *CloseDecompressor)(void *DecompressorHandle);
  char *decompressedbuf;
  int decompressedlength;
};

从 start 看起,先是 sub_402D4C 末尾:

1
2
3
4
5
6
7
v26 = ((int (__stdcall *)(_DWORD, int, _DWORD, INT_PTR (__stdcall *)(HWND, UINT, WPARAM, LPARAM), struct struc_1 *))v83->GetModuleHandleW)(
        0,
        101,
        0,
        sub_4026D2,
        v83);
((void (__stdcall *)(int))v83->DialogBoxParamA)(v26);

虽然定义好了函数类型,但是 IDA 对参数的识别还是有问题。上面的 101, 0, sub_4026D2, v83 实际上是下面 DialogBoxParamA 函数的参数。从汇编中可以发现原因:这四个参数是在上面 GetModuleHandleW 函数前面 push 的。

1
2
3
4
5
6
7
8
9
10
.text:00404198                 push    [ebp+var_20]
.text:0040419B                 push    offset sub_4026D2
.text:004041A0                 push    0
.text:004041A2                 push    65h ; 'e'
.text:004041A4                 push    0
.text:004041A6                 mov     eax, [ebp+var_20]
.text:004041A9                 call    dword ptr [eax+14h]
.text:004041AC                 push    eax
.text:004041AD                 mov     eax, [ebp+var_20]
.text:004041B0                 call    dword ptr [eax+54h]
 

sub_4026D2 是窗口的事件处理函数,其中对check按钮点击的处理如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
  else if ( v23 == 0x111 && (unsigned __int16)a3 == 0x3EA )
  {
    v36 = stru_4ABE44;
    v22 = stru_4ABE44->GetDlgItem(a1, 0x3E9);
    if ( v22 )
    {
      for ( i = 0; i < 0x100; ++i )
        inputtext[i] = 0;
      inputtextlength = v36->GetWindowTextLengthA(v22);
      if ( inputtextlength <= 210 && inputtextlength >= 1 )
      {
        v36->GetWindowTextA(v22, inputtext, 255);
        inputtextlength = v36->lstrlenA(inputtext);
        if ( inputtextlength >= 1 && inputtextlength <= 128 )
        {
          for ( j = inputtextlength; j < 128; ++j )
          {
            if ( j % 2 )
              inputtext[j] = 32;
            else
              inputtext[j] = 127;
          }
          v35 = 1;
        }
        else
        {
          v35 = 0;
        }
      }
      else
      {
        v35 = 0;
      }
    }
    else
    {
      v35 = 0;
    }
    if ( v35 )
    {
      v43 = stru_4ABE44;
      if ( stru_4ABE44->GetModuleFileNameW(0, (LPWSTR)v5, 255) )
      {
        strcpy(shellcode, "h");                 // 0x68
        shellcode[2] = 0;
        shellcode[3] = 0;
        shellcode[4] = 0;
        shellcode[5] = 0xB8;
        shellcode[6] = 0;
        shellcode[7] = 0;
        shellcode[8] = 0;
        shellcode[9] = 0;
        shellcode[10] = 0xFF;
        shellcode[11] = 0xD0;                   // 068 00 00 00 00          push   0x0
                                                // 5:  b8 00 00 00 00          mov    eax,0x0
                                                // a:  ff d0                   call   eax
        entrypoint = 0;
        allocedmemoryforinputtext = 0;
        v9 = -1;
        for ( k = 0; k < 0x44; ++k )
          *((_BYTE *)&v8.cb + k) = 0;
        v8.cb = 68;
        for ( m = 0; m < 0x10; ++m )
          *((_BYTE *)&pi.hProcess + m) = 0;
        if ( v43->CreateProcessW((LPCWSTR)v5, 0, 0, 0, 0, CREATE_SUSPENDED, 0, 0, &v8, &pi) )
        {
          v6.ContextFlags = 0x10007;
          if ( !v43->GetThreadContext(pi.hThread, &v6) )
            goto LABEL_69;
          entrypoint = v6.Eax;
          allocedmemoryforinputtext = (char *)v43->VirtualAllocEx(pi.hProcess, 0, 128, 4096, 4);
          if ( !allocedmemoryforinputtext )
            goto LABEL_69;
          for ( n = 0; n < 0x80; n += v18 )
          {
            v18 = 0;
            if ( !v43->WriteProcessMemory(pi.hProcess, &allocedmemoryforinputtext[n], &inputtext[n], 128 - n, &v18) )
            {
              v17 = 0;
              goto LABEL_45;
            }
          }
          v17 = 1;
          if ( !v17 )
            goto LABEL_69;
LABEL_45:
          baseaddr = (IMAGE_DOS_HEADER *)v43->GetModuleHandleW(0);
          peheader = (IMAGE_NT_HEADERS *)((char *)baseaddr + baseaddr->e_lfanew);
          offset = entrypoint - peheader->OptionalHeader.AddressOfEntryPoint;
          v12 = (char *)sub_401000 - (char *)baseaddr;
          *(_DWORD *)&shellcode[1] = allocedmemoryforinputtext;
          *(_DWORD *)&shellcode[6] = (char *)sub_401000 - (char *)baseaddr + offset;
          for ( ii = 0; ii < 0xC; ii += v16 )
          {
            v16 = 0;
            if ( !v43->WriteProcessMemory(
                    pi.hProcess,
                    (LPVOID)(ii + entrypoint),
                    &shellcode[ii],
                    12 - ii,
                    (SIZE_T *)&v16) )
            {
              v15 = 0;
              goto LABEL_52;
            }
          }
          v15 = 1;
LABEL_52:
          if ( v15 )
          {
            v43->ResumeThread(pi.hThread);
            v31 = 2;
            if ( v43->WaitForSingleObject(pi.hProcess, 30000) )
            {
              v43->TerminateProcess(pi.hProcess, 2);
            }
            else
            {
              v19 = 0;
              if ( v43->GetExitCodeProcess(pi.hProcess, &v19) && v19 != 2 )
                v31 = v19;                      // want 1
            }
            if ( v31 == 2 )
            {
              strcpy(v26, "Unknown Error");
              v43->MessageBoxA(0, v26, v26, 0);
              v43->ExitProcess(0);
              v14 = 0;
            }
            else
            {
              if ( pi.hThread )
              {
                v43->TerminateProcess(pi.hProcess, 2);
                v43->CloseHandle(pi.hThread);
              }
              if ( pi.hProcess )
                v43->CloseHandle(pi.hProcess);
              if ( v31 != 1 )
                v43->ExitProcess(0);
              v14 = v31;
            }
            v29 = v14;
          }
          else
          {
LABEL_69:
            v30 = 2;
            strcpy(v25, "Unknown Error");
            v43->MessageBoxA(0, v25, v25, 0);
            v43->ExitProcess(0);
            v13 = 0;
            v29 = 0;
          }
        }
        else
        {
          v29 = -1;
        }
      }
      else
      {
        v29 = -1;
      }
      if ( v29 )
      {
        strcpy(v24, "SUCCESS!");
        strcpy(v27, "INFO");
        stru_4ABE44->MessageBoxA(0, v24, v27, 0);
      }
    }
    stru_4ABE44->ExitProcess(0);
  }

做好类型标注之后,反编译出来的伪代码看起来已经和源代码没什么差别了。
基本逻辑是:获取输入框的值,padding到128字节长;启动另一个crackme进程,在入口点处通过 VirtualAllocEx 创建一块内存区域保存输入的值,然后通过 WriteProcessMemory 写入 shellcode,作用是以输入的值为参数跳转到 sub_401000。父进程则检查ExitCode,如果是 1 则验证通过。
(刚拿到程序时,随便乱输再点击check会卡几秒然后闪退。这种现象给人的感觉很像是是不兼容的bug(因为 readme 里提到要求 win10 物理机,而本机是 win11),但实际上是正常的,因为上面的代码逻辑就是这么写的)

 

sub_401000的主要逻辑如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
  if ( v108->CreateDecompressor(5, 0, &v53) )   // CreateDecompressor COMPRESS_ALGORITHM_LZMS
  {
    v39 = 0;
    if ( !v108->Decompress(                     // Decompress
            (int)v53,
            off_406000,
            dword_406004,
            0,
            0,
            &v52) && v108->GetLastError() == 122 )// GetLastError
    {
      v51 = (char *)v108->VirtualAlloc(0, v52, 0x1000, 0x40);// VirtualAlloc
      if ( v51 )
      {
        if ( v108->Decompress(                  // Decompress
               (int)v53,
               off_406000,
               dword_406004,
               v51,
               v52,
               &v28) )
        {
          v108->decompressedbuf = v51;
          v108->decompressedlength = v52;
          v39 = 1;
        }
      }
    }
    v108->CloseDecompressor(v53);               // CloseDecompressor
    v38 = v39;
  }
  else
  {
    v38 = 0;
  }
  if ( v38 )
  {
    v90 = 0;
    v29[0] = 5;
    v29[1] = 0;
    v29[2] = 4;
    v29[3] = 3;
    v29[4] = 2;
    v29[5] = 1;
    for ( ii = 0; ii < 6; ++ii )
    {
      v32 = v29[ii];
      v92 = 0;
      v47 = 0;
      for ( jj = 0; jj <= v32; ++jj )
      {
        v47 = &v108->decompressedbuf[v92 + 4];
        v46 = *(_DWORD *)&v108->decompressedbuf[v92];
        v92 += v46 + 4;
      }
      v90 = v47;
      if ( !((int (__stdcall *)(int, HMODULE (__stdcall *)(LPCSTR), FARPROC (__stdcall *)(HMODULE, LPCSTR), int))v47)(
              v108->kernel32_dll_baseaddr,
              v108->LoadLibraryA,
              v108->GetProcAddress,
              a1) )
        goto LABEL_134;
    }
    v56 = 1;
    v91 = 0;
    v45 = 0;
    for ( kk = 0; kk <= 6; ++kk )
    {
      v45 = &v108->decompressedbuf[v91 + 4];
      v48 = *(_DWORD *)&v108->decompressedbuf[v91];
      v91 += v48 + 4;
    }
    v90 = v45;
    if ( !((int (__stdcall *)(int, HMODULE (__stdcall *)(LPCSTR), FARPROC (__stdcall *)(HMODULE, LPCSTR), int))v45)(
            v108->kernel32_dll_baseaddr,
            v108->LoadLibraryA,
            v108->GetProcAddress,
            a1) )
      v56 = 0;
  }
LABEL_134:
  v108->ExitProcess(v56);                       // ExitProcess

这里的逻辑也很简单:从data段解压一段代码,然后调用其中的7个函数,只有都返回 1 ,才会 ExitProcess(1),进而父进程判定验证通过。(与 readme 里描述的背景故事对应起来了)

 

因此,需要把这段代码提取出来做进一步的分析。父进程没有反调试,直接断点在这里即可简单提取出来。

 

(实际上,做题时不知道是怎么想的,竟然尝试自己写程序调用 Decompress 函数解压数据,但是又对 Windows 编程不熟(p.s. Windows上编程和api比Linux麻烦太多了),搞了很长时间,也没成功)
(个人其实非常不喜欢动态调试,所以有时候宁愿硬猜或者重写也不想上调试器,但最后往往是白费力气)


 

IDA 加载提取出来的代码,容易找到其中的7个函数。每个函数都是4个参数(分别是KERNEL32.DLL的地址、LoadLibraryA函数的地址、GetProcAddress函数的地址、128字节的输入缓冲区)
随便点了一个,F5的时候直接卡住。继续挂机了一个多小时,终于成功反编译出来了一个函数。同理,经过漫长的等待,把7个函数都反编译出来了。

反编译慢的原因在于栈帧太大(IDA识别出栈上有几千个变量)
如果在 IDA 的汇编窗口定位到函数中按 Alt+P 打开 Edit function 窗口取消勾选 BP based frame,就会很快反编译成功,但是 ebp 会作为一个数组参数传入函数,原来的栈变量都会变成在这个数组中按偏移取值,基本没法看

 

即使反编译成功了,每个函数的伪代码也有几万行,还是没法看。所以,这里直接从数据流入手:对函数的第4个参数按x取交叉引用。
第7个函数的a4参数的部分交叉引用如下:

1
2
3
4
5
6
7
8
9
10
...
w    18266    2      a4[126] = v1863[a4[126]];
r    18266    18      a4[126] = v1863[a4[126]];
w    18300    2      a4[82] = v1863[a4[82]];
r    18300    17      a4[82] = v1863[a4[82]];
r    18331    7      if ( a4[126] != 24 )
r    18333    7      if ( a4[30] != 151 )
r    18335    7      if ( a4[44] != 165 )
r    18337    7      if ( a4[123] != 31 )
...

再向前查找v1863,发现是在代码中赋值的常量,所以这个函数的逻辑相当于对a4做了一个类似S盒变换的操作,直接可逆。

 

其他6个函数类似,不过只有前面的变换(除了S盒,还有位运算、异或、交换等,但都是可逆的),没有最后的 if 判断。

 

理论上到这一步只要逆推7个函数的所有运算逻辑即可还原输入(前提是程序没有暗坑),但是有两个问题:每个函数即使只考虑输入有关的代码也有几千行,人力还是不行,而自动化也不容易;每个函数内部还有大量对 win32api 的调用,一些“常量”也是计算出来的。

 

所以通过反推逻辑找到正确输入的工作量基本不可承受,动态调试更是不太可能。但一血只用了7个小时,肯定有非常简单的做法。

 

观察交叉引用窗口,突然注意到所有的变换都只涉及单个字节。这表明改变输入的一个字节,只会有一个输入字节随之改变,所以能够逐字节爆破!

 

(这里又是自己的执念(希望靠纯静态逆向反推出输入):其实只要先观察两三个函数就能发现这个现象,并不需要花费大量时间等7个函数都反编译出来)


 

第7个函数最后已经给出了经过变换后的最终值,所以只要能够不断变换输入并且设法获取变换后的结果就可以爆破了。

 

相对简单的方法是自己写程序照抄 sub_401000 的逻辑依次调用这7个函数拿到变换的结果(初始值由第4个参数输入,变换后的值仍通过第4个参数传出)。
到这里没有办法,只能打开 Visual Studio 开始写 Windows 程序。
(直到现在才发现,这是我装好 Visual Studio 之后第一次创建项目)
(不过即使不用vs写代码,vs还是必须要装的,因为附带的运行库、MSVC编译工具链、Windows SDK、调试器等都是非常重要的工具,例如 pip 安装某些 Python 包时需要调用vc++编译器)(据说 MSVC 有独立的编译工具链?但官网上可能只想让人连带vs一起装)

 

由于7个函数跑一遍很慢(需要几秒种),因此必须减小爆破的次数。
基于每个输入字节只会影响一个输出字节的假设,可以同时爆破所有的的字节,例如把输入的128字节设为相同的字符,如果发现输出的某一位与预期值匹配,则其对应的输入位就是正确的值。

 

另外对于输入与输出的位置对应关系,只要修改输入的一个位置,观察输出的哪个位置有变化即可。

 

收集数据的程序如下:(C++)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#pragma comment(lib, "cabinet.lib")
 
#include <iostream>
#include <fstream>
#include <windows.h>
#include <compressapi.h>
 
/*
char alldata[1 * 1024 * 1024];
char outbuf[10 * 1024 * 1024];
 
int main() {
    std::ifstream t;
    t.open("D:\\tmp\\crackme.exe");
    t.read(alldata, 695296);
    char* data = &alldata[0x3808];
    int len = 0xA5E3A;
    int outbufsize = sizeof(outbuf);
    SIZE_T outlen = 0;
    DECOMPRESSOR_HANDLE handle = 0;
    int r = CreateDecompressor(5, 0, &handle);
    std::cout << "create " << r << std::endl;
    r = Decompress(handle, data, len, outbuf, outbufsize, &outlen);
    std::cout << "decompress " << r << std::endl;
    std::cout << outlen << std::endl;
    std::ofstream o;
    o.open("D:\\tmp\\tmp1.bin");
    o.write(outbuf, outlen);
    std::cout << "Hello World!\n";
}
*/
 
typedef int (__stdcall *DOFUNC)(void*, void*, void*, char*);
 
int main() {
    int len = 0x276000;
    char* code = (char *)VirtualAlloc(NULL, len, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
    std::ifstream t;
    // t.open("D:\\tmp\\MEM_022C0000_00276000.mem", std::ios::binary);
    t.open("MEM_022C0000_00276000.mem", std::ios::binary);
    t.read(code, len);
 
    HMODULE kernel32dll_base = LoadLibraryA("kernel32.dll");
    DWORD tmp;
    // int r = VirtualProtect(kernel32dll_base, 40960, PAGE_EXECUTE_READWRITE, &tmp);
 
    int offsets[7] = { 0x4, 0x2F208, 0x5F60C, 0xA6C10, 0x117C14, 0x1D0A180x23DA1C };
    int order[6+1] = { 5, 0, 4, 3, 2, 16 };
 
    char testinput[128];
    int testinput_len = 128;
 
    /*
    memcpy(testinput, ":*D#O+_I3;`}0NfP-=2/+Y\"_>A8S6]L|4G;UHiA5mnol^k;#OhW2!UEJf0\"7?Dt5m{CqE*AZr~$1(zW@TBXKL&2r?+3kwxC90O\'%&PyVo~)\'Q%Z@6b}REKF[cgFe/-?I", 128);
    for (int j = 0; j < 7; j++) {
        DOFUNC func = (DOFUNC)&code[offsets[order[j]]];
        int r = func(kernel32dll_base, LoadLibraryA, GetProcAddress, testinput);
        std::cout << r;
        // Sleep(10000);
    }
    std::cout << std::endl;
    for (int k = 0; k < testinput_len - 1; k++) {
        std::cout << (int)(unsigned char)testinput[k] << " ";
    }
    std::cout << (int)(unsigned char)testinput[testinput_len - 1] << std::endl;
    return 0;
    */
 
    std::ofstream o;
 
    o.open("D:\\tmp\\outputsforindex.txt");
    for (int i = 0; i < testinput_len; i++) {
        memset(testinput, 0, testinput_len);
        testinput[i] = 1;
        for (int j = 0; j < 7; j++) {
            DOFUNC func = (DOFUNC)&code[offsets[order[j]]];
            int r = func(kernel32dll_base, LoadLibraryA, GetProcAddress, testinput);
        }
        std::cout << i << ": ";
        o << i << ": ";
        for (int k = 0; k < testinput_len - 1; k++) {
            std::cout << (int)(unsigned char)testinput[k] << " ";
            o << (int)(unsigned char)testinput[k] << " ";
        }
        std::cout << (int)(unsigned char)testinput[testinput_len - 1] << std::endl;
        o << (int)(unsigned char)testinput[testinput_len - 1] << std::endl;
    }
    o.close();
 
    o.open("D:\\tmp\\outputs.txt");
    // o.open("outputs.txt");
    for (int c = 32; c < 128; c++) {
        memset(testinput, c, testinput_len);
        for (int j = 0; j < 7; j++) {
            DOFUNC func = (DOFUNC)&code[offsets[order[j]]];
            int r = func(kernel32dll_base, LoadLibraryA, GetProcAddress, testinput);
        }
        std::cout << c << ": ";
        o << c << ": ";
        for (int k = 0; k < testinput_len - 1; k++) {
            std::cout << (int)(unsigned char)testinput[k] << " ";
            o << (int)(unsigned char)testinput[k] << " ";
        }
        std::cout << (int)(unsigned char)testinput[testinput_len - 1] << std::endl;
        o << (int)(unsigned char)testinput[testinput_len - 1] << std::endl;
    }
    o.close();
 
    return 0;
}

分析数据得到输入的程序如下:(Python3)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
a4 = [None] * 128
 
a4[126] = 24
a4[30] = 151
a4[44] = 165
a4[123] = 31
a4[84] = 244
a4[2] = 66
a4[13] = 167
a4[94] = 68
a4[89] = 60
a4[45] = 203
a4[7] = 227
a4[35] = 104
a4[67] = 236
a4[106] = 42
a4[98] = 115
a4[76] = 31
a4[21] = 39
a4[39] = 234
a4[22] = 36
a4[10] = 222
a4[3] = 107
a4[115] = 188
a4[75] = 147
a4[9] = 208
a4[55] = 153
a4[116] = 187
a4[56] = 89
a4[18] = 2
a4[92] = 248
a4[34] = 235
a4[23] = 189
a4[63] = 106
a4[43] = 96
a4[77] = 4
a4[65] = 222
a4[70] = 11
a4[66] = 210
a4[104] = 195
a4[15] = 106
a4[124] = 156
a4[88] = 55
a4[100] = 104
a4[61] = 217
a4[58] = 47
a4[109] = 181
a4[48] = 69
a4[114] = 22
a4[25] = 187
a4[54] = 58
a4[51] = 83
a4[49] = 251
a4[121] = 119
a4[57] = 111
a4[93] = 200
a4[117] = 140
a4[110] = 55
a4[112] = 79
a4[28] = 9
a4[19] = 6
a4[5] = 80
a4[81] = 228
a4[82] = 214
a4[108] = 204
a4[86] = 18
a4[96] = 99
a4[97] = 16
a4[0] = 121
a4[73] = 182
a4[113] = 15
a4[36] = 144
a4[87] = 77
a4[42] = 196
a4[33] = 182
a4[79] = 68
a4[16] = 105
a4[29] = 163
a4[122] = 170
a4[107] = 182
a4[120] = 238
a4[83] = 158
a4[8] = 70
a4[59] = 84
a4[1] = 23
a4[26] = 227
a4[101] = 215
a4[6] = 122
a4[17] = 208
a4[32] = 60
a4[52] = 192
a4[46] = 195
a4[95] = 118
a4[11] = 78
a4[60] = 74
a4[62] = 14
a4[118] = 83
a4[72] = 138
a4[40] = 17
a4[71] = 164
a4[80] = 238
a4[111] = 97
a4[69] = 74
a4[85] = 69
a4[31] = 48
a4[91] = 17
a4[103] = 47
a4[38] = 208
a4[105] = 132
a4[14] = 138
a4[99] = 45
a4[4] = 59
a4[74] = 250
a4[125] = 194
a4[37] = 9
a4[90] = 240
a4[27] = 30
a4[53] = 128
a4[78] = 16
a4[20] = 240
a4[12] = 36
a4[127] = 222
a4[64] = 52
a4[47] = 252
a4[24] = 192
a4[102] = 157
a4[41] = 242
a4[119] = 39
a4[50] = 92
a4[68] = 175
 
print(a4)
# [121, 23, 66, 107, 59, 80, 122, 227, 70, 208, 222, 78, 36, 167, 138, 106, 105, 208, 2, 6, 240, 39, 36, 189, 192, 187, 227, 30, 9, 163, 151, 48, 60, 182, 235, 104, 144, 9, 208, 234, 17, 242, 196, 96, 165, 203, 195, 252, 69, 251, 92, 83, 192, 128, 58, 153, 89, 111, 47, 84, 74, 217, 14, 106, 52, 222, 210, 236, 175, 74, 11, 164, 138, 182, 250, 147, 31, 4, 16, 68, 238, 228, 214, 158, 244, 69, 18, 77, 55, 60, 240, 17, 248, 200, 68, 118, 99, 16, 115, 45, 104, 215, 157, 47, 195, 132, 42, 182, 204, 181, 55, 97, 79, 15, 22, 188, 187, 140, 83, 39, 238, 119, 170, 31, 156, 194, 24, 222]
 
base = list(map(int, "79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138".split()))
indexmap = '''0: 79 254 171 27 238 97 244 26 228 217 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
1: 79 254 171 27 238 97 244 26 228 2 91 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
2: 79 254 171 27 238 97 244 56 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
3: 79 254 171 27 238 97 244 26 112 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
4: 79 254 171 27 238 142 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
5: 79 254 171 27 238 97 98 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
6: 79 254 171 126 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
7: 79 254 171 27 27 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
8: 79 210 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
9: 79 254 145 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
10: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 210 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
11: 219 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
12: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 176 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
13: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 67 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
14: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 181 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
15: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 103 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
16: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 122 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
17: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 109 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
18: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 216 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
19: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 231 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
20: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 50 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
21: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 186 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
22: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 196 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
23: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 9 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
24: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 43 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
25: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 178 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
26: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 26 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
27: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 217 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
28: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 173 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
29: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 234 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
30: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 66 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
31: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 194 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
32: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 88 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
33: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 84 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
34: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 252 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
35: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 14 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
36: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 177 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
37: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 179 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
38: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 175 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
39: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 8 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
40: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 143 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
41: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 65 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
42: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 56 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
43: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 192 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
44: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 201 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
45: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 33 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
46: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 128 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
47: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 30 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
48: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 118 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
49: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 12 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
50: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 30 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
51: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 201 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
52: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 20 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
53: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 42 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
54: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 114 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
55: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 189 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
56: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 175 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
57: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 219 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
58: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 243 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
59: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 193 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
60: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 155 27 98 145 101 182 168 244 187 236 7 217 214 138
61: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 62 67 27 98 145 101 182 168 244 187 236 7 217 214 138
62: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 19 145 101 182 168 244 187 236 7 217 214 138
63: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 146 98 145 101 182 168 244 187 236 7 217 214 138
64: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 44 182 168 244 187 236 7 217 214 138
65: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 60 101 182 168 244 187 236 7 217 214 138
66: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 155 244 187 236 7 217 214 138
67: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 47 168 244 187 236 7 217 214 138
68: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 11 236 7 217 214 138
69: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 121 187 236 7 217 214 138
70: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 68 217 214 138
71: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 144 7 217 214 138
72: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 237 138
73: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 150 214 138
74: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 26 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
75: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 149
76: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 238 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
77: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 111 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
78: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 243 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
79: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 2 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
80: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 68 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
81: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 183 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
82: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 70 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
83: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 148 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
84: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 84 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
85: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 200 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
86: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 193 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
87: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 128 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
88: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 114 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
89: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 16 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
90: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 72 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
91: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 200 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
92: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 234 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
93: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 51 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
94: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 67 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
95: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 215 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
96: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 172 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
97: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 242 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
98: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 251 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
99: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 208 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
100: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 184 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
101: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 74 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
102: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 72 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
103: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 13 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
104: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 241 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
105: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 208 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
106: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 115 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
107: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 182 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
108: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 142 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
109: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 25 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
110: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 97 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
111: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 196 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
112: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 84 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
113: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 136 23 254 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
114: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 108 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
115: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 157 39 150 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
116: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 129 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
117: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 220 125 211 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
118: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 145 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
119: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 240 64 236 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
120: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 43 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
121: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 90 206 77 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
122: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 188 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
123: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 90 244 19 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
124: 79 254 171 27 238 97 244 26 228 2 34 206 141 230 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
125: 79 254 171 27 238 97 244 26 228 2 34 206 141 50 95 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
126: 79 254 171 27 238 97 244 26 228 2 34 62 141 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138
127: 79 254 171 27 238 97 244 26 228 2 34 206 161 50 90 244 90 206 240 64 220 125 157 39 136 23 239 205 120 61 26 79 210 64 175 112 180 254 72 158 118 44 21 167 237 41 170 159 236 160 126 140 233 213 212 129 254 60 139 181 122 55 98 113 211 166 86 181 21 169 63 167 69 110 54 50 136 36 195 124 227 74 176 7 142 209 32 65 11 30 47 95 147 192 54 201 13 87 239 240 135 146 27 55 74 140 125 178 182 170 24 95 205 19 67 27 98 145 101 182 168 244 187 236 7 217 214 138'''
 
outputs = '''32: 18 218 19 182 119 231 14 194 10 99 35 141 121 5 222 68 232 14 126 227 34 248 166 24 22 48 153 61 152 167 31 201 237 159 34 147 146 194 198 68 142 177 20 95 29 126 161 247 153 120 31 105 175 59 230 213 187 164 123 96 242 56 137 108 191 212 154 67 241 7 114 139 37 252 251 144 172 197 78 136 193 152 219 129 172 2 164 11 159 237 68 99 176 146 218 146 204 94 95 124 124 177 24 155 96 203 15 104 142 52 203 176 247 216 115 162 0 179 183 154 16 51 251 229 101 87 107 163
33: 64 236 252 15 196 67 3 71 196 157 76 113 34 239 40 164 102 120 238 65 199 73 181 174 170 45 173 146 100 70 164 96 57 231 190 38 208 210 184 12 64 120 89 250 33 88 73 177 241 195 182 77 89 104 76 22 48 167 220 191 92 68 213 28 134 40 128 25 51 122 95 253 38 244 88 151 218 182 185 219 148 185 224 188 231 131 108 49 83 12 213 251 118 82 86 181 162 210 203 81 179 245 11 236 235 136 42 30 203 55 23 67 7 46 24 242 215 181 212 119 115 97 196 132 14 197 208 215
34: 51 135 106 246 227 69 153 182 38 16 90 129 81 210 48 18 157 231 65 79 163 14 75 156 160 202 90 101 210 177 99 217 156 255 60 91 66 62 214 70 24 224 90 69 148 116 83 2 157 7 111 247 68 32 99 54 97 112 95 126 171 85 160 37 73 248 147 231 118 2 241 90 224 204 185 227 31 176 191 162 55 147 253 196 72 142 140 10 158 222 167 139 170 97 8 154 123 120 139 190 219 75 103 49 68 116 146 150 105 120 28 73 79 183 193 102 124 108 69 40 169 155 131 203 200 126 56 111
35: 199 136 172 183 163 87 56 122 70 196 252 231 38 82 13 214 137 125 214 77 153 148 103 65 242 216 121 156 41 67 200 216 10 244 41 234 97 208 203 45 13 194 99 72 152 143 175 236 194 116 19 211 15 129 90 60 93 203 29 242 163 52 17 255 208 165 189 126 134 62 27 120 226 107 221 11 91 240 108 143 251 115 16 106 108 138 41 186 230 57 102 202 113 52 146 9 132 56 34 45 115 254 100 238 219 76 224 88 90 190 26 211 58 110 103 84 161 70 152 14 101 213 153 161 144 13 72 122
36: 135 87 155 141 44 122 24 180 107 254 155 1 250 196 147 228 38 142 141 242 22 50 243 176 144 185 146 198 247 13 55 9 63 129 9 246 107 112 57 30 104 53 114 154 104 62 119 19 102 200 150 43 88 121 21 9 222 161 130 143 5 109 201 106 87 111 48 245 212 187 147 81 5 150 132 244 188 234 125 35 161 204 124 102 164 168 149 233 109 206 80 184 91 105 240 38 191 116 237 150 127 125 149 222 155 218 104 254 101 249 7 197 147 37 84 34 241 126 133 42 88 47 200 116 59 220 41 189
37: 223 233 98 234 55 114 255 18 73 112 131 29 181 236 165 157 17 18 82 81 126 166 65 138 216 33 128 10 255 21 151 234 39 51 79 128 0 172 181 53 17 57 40 3 245 93 157 65 231 88 17 253 155 163 64 225 220 171 221 178 38 83 54 161 69 219 92 193 111 35 175 68 163 123 74 40 60 148 220 150 142 165 248 30 4 98 219 75 247 79 224 74 173 243 175 235 101 164 173 77 185 117 28 111 134 52 178 19 32 38 199 199 48 33 206 141 160 245 9 223 69 224 57 60 158 130 38 71
38: 119 69 156 2 28 15 133 4 222 24 200 32 64 141 7 197 25 19 187 62 102 22 192 85 108 208 252 240 69 188 68 76 129 232 144 236 240 9 215 236 152 81 209 213 93 229 187 165 49 175 227 93 174 160 58 77 17 132 150 91 106 234 45 3 19 74 239 225 104 97 35 13 2 10 89 99 157 196 73 202 62 154 128 126 35 222 235 165 243 196 222 69 61 251 130 199 171 241 249 99 234 83 169 19 15 6 72 123 27 76 128 55 127 56 203 76 78 196 63 87 87 135 156 61 24 211 250 190
39: 149 253 159 41 37 181 187 183 146 116 176 37 172 11 91 163 174 73 237 136 136 88 119 64 110 147 159 136 123 38 100 171 60 113 243 187 206 220 55 234 128 209 168 59 69 76 149 254 224 169 210 8 4 16 62 191 71 124 62 127 90 228 215 76 205 240 112 156 1 73 159 197 29 125 140 62 85 158 46 64 202 173 108 122 34 164 6 89 23 121 178 25 106 147 189 246 173 184 107 76 132 1 143 26 67 228 35 67 162 102 11 47 13 132 12 185 158 35 109 61 27 131 28 119 41 138 234 105
40: 208 114 190 84 145 118 40 231 132 100 181 160 102 116 179 21 188 36 130 14 209 65 130 251 29 124 179 215 156 132 50 195 176 220 180 51 12 92 13 114 248 61 152 82 168 64 112 180 130 106 85 0 28 253 181 72 44 104 50 238 158 217 177 90 22 133 171 162 100 157 24 52 187 185 253 226 237 52 113 76 163 40 166 244 93 247 233 95 238 158 159 121 36 236 210 35 86 71 141 93 210 116 153 159 202 206 16 235 207 101 48 140 50 31 95 194 108 2 87 207 49 159 103 199 104 139 30 217
41: 14 225 223 223 67 165 73 94 108 41 182 26 164 137 245 39 194 229 60 25 204 18 145 111 37 168 185 126 167 240 56 48 19 191 54 188 245 55 99 214 231 227 160 202 135 10 152 217 93 219 10 68 75 83 14 120 245 44 4 200 10 136 25 81 59 129 129 208 115 182 245 49 4 112 131 171 99 165 201 0 23 102 102 4 19 204 44 227 174 100 121 15 47 167 12 26 165 163 40 34 148 105 199 213 132 142 79 201 116 93 129 253 92 217 124 240 67 236 117 141 152 95 68 164 67 99 157 5
42: 99 191 230 149 30 137 150 253 185 143 222 217 223 121 85 113 130 238 70 139 18 30 4 214 51 103 145 92 228 94 37 167 224 85 185 136 101 138 120 168 218 185 41 43 211 132 11 103 162 217 53 15 122 126 98 244 160 200 7 150 98 43 84 61 245 150 89 155 185 126 59 26 128 27 78 45 15 192 51 44 177 90 202 217 205 236 96 218 61 156 44 49 155 217 242 92 151 46 56 198 167 123 117 142 17 192 144 250 56 248 80 70 6 152 116 176 211 37 62 79 158 119 249 232 222 149 251 124
43: 110 40 22 83 74 195 122 45 1 247 104 55 230 123 123 37 133 160 217 126 227 175 187 139 172 13 59 227 188 236 71 149 3 27 153 235 174 78 46 201 79 29 231 206 70 136 239 119 240 194 92 63 154 230 226 138 228 54 113 156 168 249 166 144 183 56 76 166 107 99 22 117 211 121 250 17 73 39 249 200 27 155 169 61 150 91 98 60 5 114 59 192 41 43 166 41 232 191 35 83 154 134 176 86 136 252 51 181 210 255 110 105 60 197 26 159 117 227 229 5 159 103 150 210 238 90 177 56
44: 157 120 30 45 77 166 219 250 130 191 238 143 14 197 247 95 165 34 18 12 95 186 148 109 68 72 77 201 83 90 94 51 190 88 150 126 95 21 1 94 155 137 232 150 101 179 114 80 251 25 29 7 46 77 195 43 115 38 54 7 139 88 145 103 235 97 201 75 215 45 119 66 233 86 197 239 240 175 72 56 9 171 30 136 52 19 151 84 131 91 99 89 125 75 128 206 181 85 28 115 116 9 161 202 41 133 243 5 74 208 99 8 54 151 27 237 62 135 193 97 247 113 134 4 89 30 161 68
45: 9 34 83 65 154 31 159 81 102 31 107 149 242 234 138 232 140 68 174 162 131 3 164 132 159 244 131 207 57 40 246 246 83 84 14 10 207 145 178 123 94 94 191 122 129 52 59 121 78 144 201 57 241 196 12 133 181 108 216 66 143 122 38 15 70 66 11 37 209 87 11 72 21 85 84 224 128 153 146 240 44 245 52 145 220 95 59 232 58 73 22 101 203 145 157 124 6 154 43 130 240 188 59 176 44 238 32 111 206 171 192 19 20 173 240 4 243 174 210 177 223 220 211 12 189 69 254 235
46: 192 15 167 56 17 63 13 40 122 176 86 214 118 105 146 55 244 13 124 84 40 118 160 213 212 51 56 53 47 11 248 166 110 225 172 168 166 114 3 104 166 101 235 116 48 106 198 95 249 212 165 200 237 224 222 58 64 93 146 177 140 213 185 24 133 152 169 18 244 124 9 187 156 44 68 28 169 71 83 10 134 160 70 250 213 112 224 216 69 71 36 52 40 99 5 56 255 44 176 29 66 106 14 76 23 104 254 130 16 220 161 43 94 215 37 7 147 214 53 188 220 232 59 172 253 70 115 167
47: 107 176 205 151 246 5 237 230 191 243 241 102 185 167 20 140 170 132 97 206 166 138 45 150 123 97 33 182 235 211 134 136 171 101 212 3 152 24 123 157 6 110 147 210 197 161 21 250 47 255 168 87 22 79 179 107 104 192 86 130 120 156 131 134 209 88 132 32 129 120 150 164 116 246 174 241 68 69 111 154 212 92 207 100 101 245 189 201 235 200 143 116 79 94 4 30 180 161 100 9 187 141 188 244 135 44 140 53 231 20 81 69 29 157 243 231 47 241 127 231 180 172 44 0 152 244 134 78
48: 87 28 222 242 192 229 226 159 47 113 214 106 113 32 72 69 81 54 183 5 171 158 76 99 147 217 198 40 163 6 51 180 17 16 96 248 60 82 95 131 93 242 77 137 66 61 184 52 167 234 144 183 29 113 127 131 131 254 181 38 36 163 200 102 202 131 210 145 32 38 224 84 98 140 193 8 201 127 45 193 111 36 90 16 206 50 85 163 28 118 109 93 63 103 216 95 103 151 208 136 48 165 165 191 48 1 148 148 155 181 62 100 146 91 73 122 46 10 199 74 26 255 158 107 233 141 127 76
49: 21 199 182 159 89 254 222 103 178 130 101 121 15 30 225 90 54 65 39 50 232 108 60 14 222 133 221 191 114 118 45 2 131 13 186 251 53 211 36 48 22 240 79 30 20 118 37 50 156 70 57 124 12 170 80 158 179 24 129 221 164 92 39 39 36 62 53 116 83 142 94 95 55 214 19 41 251 91 49 236 78 48 58 116 27 225 186 205 87 36 127 85 112 112 99 104 251 228 134 151 176 181 131 62 66 164 3 155 70 239 238 241 16 244 169 88 104 59 25 133 202 241 235 90 219 216 124 222
50: 210 126 68 60 230 164 242 102 236 135 20 168 44 181 30 53 51 234 12 57 151 196 138 207 26 142 70 35 170 128 63 11 201 18 198 224 247 207 186 116 119 146 249 184 80 97 142 240 219 192 58 83 51 239 89 64 82 85 72 71 216 5 124 85 143 174 4 81 200 25 187 104 138 155 96 84 250 143 168 191 248 1 131 181 247 229 115 181 178 129 108 44 124 127 76 139 14 224 74 213 243 237 110 47 47 154 33 233 82 172 138 53 216 213 230 6 9 150 68 32 213 251 197 44 161 245 248 159
51: 217 23 139 108 11 58 79 220 255 114 197 177 132 112 210 254 126 187 107 33 8 123 195 222 1 3 82 239 43 12 48 113 90 86 161 203 133 209 6 250 69 51 96 223 14 114 123 252 204 209 97 5 224 147 102 216 92 41 33 46 17 29 64 192 21 84 211 9 96 100 196 91 39 234 202 162 180 85 86 80 14 34 130 141 114 10 177 105 97 42 253 56 89 13 176 76 121 219 128 132 140 13 175 205 78 160 82 153 68 133 89 240 77 230 63 87 35 169 223 245 252 189 73 53 247 5 43 45
52: 95 237 157 165 173 222 190 0 34 66 235 137 221 163 170 134 32 95 104 36 206 17 121 117 74 54 232 143 215 209 195 70 203 6 251 217 69 182 76 230 59 17 245 65 141 181 209 182 50 74 45 106 1 249 213 208 194 138 154 89 147 9 69 51 130 94 213 34 165 129 101 70 12 201 44 255 163 139 54 36 117 184 228 12 112 199 18 8 54 44 103 108 227 63 56 94 80 132 157 235 42 172 208 117 193 198 157 136 172 242 167 120 163 74 17 20 182 250 96 64 216 229 184 43 211 122 126 64
53: 113 63 150 86 83 119 94 101 248 235 141 3 168 25 23 41 255 105 81 46 1 187 20 188 99 86 150 152 46 231 202 161 246 149 225 106 231 63 12 43 244 24 201 200 127 6 61 91 225 75 108 56 2 141 148 218 130 99 48 41 44 237 199 126 165 52 152 109 36 43 198 50 180 236 204 24 205 44 60 239 109 37 5 37 17 28 8 40 224 85 182 17 133 122 70 6 33 108 138 111 149 122 51 210 91 236 44 79 123 28 75 228 101 148 182 188 97 34 40 93 123 82 86 219 116 41 64 150
54: 226 235 120 121 1 207 110 99 223 126 37 205 252 65 115 142 192 76 204 185 85 16 151 230 186 187 61 234 135 210 167 27 251 78 107 255 96 116 145 245 207 252 74 68 232 176 50 7 103 202 127 32 87 57 26 113 53 123 145 57 177 35 20 180 162 153 148 22 122 10 208 192 186 102 184 2 67 7 35 197 244 88 214 62 83 107 206 161 77 193 93 249 56 171 125 5 172 49 112 211 152 88 216 64 226 101 40 214 133 126 19 30 240 89 225 83 152 7 226 171 70 23 6 67 79 103 195 219
55: 20 132 105 163 108 68 96 160 55 242 32 72 241 2 182 10 200 49 5 107 21 66 167 166 128 198 137 77 144 45 84 106 16 245 177 219 35 11 252 164 181 91 204 233 118 5 174 140 10 186 59 167 129 206 69 79 23 121 21 73 49 21 68 175 151 209 168 136 50 69 8 148 175 136 213 205 135 128 159 227 65 162 208 60 47 49 1 43 117 99 174 189 42 142 83 224 247 102 212 54 189 69 212 6 148 254 78 121 150 57 168 97 169 160 71 86 114 246 59 205 153 67 160 173 167 25 5 31
56: 242 219 73 37 174 209 183 115 18 239 171 0 224 107 189 180 248 50 176 215 156 157 250 212 193 137 45 130 142 218 226 69 188 105 22 76 67 183 247 19 186 142 131 249 183 153 121 243 237 35 72 133 185 14 177 210 70 76 227 39 202 57 123 220 175 250 166 147 190 186 248 140 215 130 120 53 75 157 94 46 238 124 116 3 87 17 100 83 132 133 134 114 116 67 180 174 109 211 133 156 67 100 97 105 241 213 130 25 77 37 155 186 12 71 128 248 68 244 14 221 134 86 77 108 193 207 225 39
57: 158 204 136 249 225 218 137 62 21 169 190 188 43 92 145 249 153 17 40 48 169 8 198 45 197 20 162 247 222 113 66 148 192 183 5 37 72 202 122 212 106 65 221 58 165 15 218 1 128 104 191 188 127 148 124 150 31 64 195 205 246 105 41 223 193 32 149 27 56 162 253 225 76 164 236 101 187 132 8 248 35 110 105 144 62 230 21 113 197 11 144 126 127 185 196 3 223 9 93 152 20 138 99 120 113 117 93 118 229 16 30 24 37 241 100 101 82 189 122 34 224 252 49 118 148 1 123 98
58: 231 198 151 123 63 98 217 242 168 208 193 142 53 244 224 45 70 249 226 97 36 86 91 88 119 63 22 75 151 91 185 6 14 221 62 173 161 162 92 51 224 176 205 103 137 202 214 25 220 145 208 54 202 241 252 112 124 81 25 135 12 101 209 115 237 7 218 249 154 52 234 21 234 247 66 63 82 95 186 127 16 10 182 78 70 174 209 183 253 143 204 148 183 95 108 29 57 35 98 232 181 223 87 251 117 248 18 166 224 247 247 65 18 238 152 241 70 64 33 113 194 198 181 77 127 203 70 59
59: 38 150 66 248 54 235 232 69 87 33 48 122 67 229 198 135 213 79 120 169 146 120 149 34 214 218 196 18 219 137 172 89 209 103 104 247 11 111 168 186 209 10 88 29 166 102 41 199 107 50 102 95 195 54 173 11 111 150 210 131 176 251 78 18 85 137 39 65 4 51 189 73 66 1 56 43 152 61 197 17 170 59 82 36 29 89 204 46 55 19 225 94 247 76 211 162 38 242 58 227 104 235 31 123 140 17 91 122 253 72 27 162 157 104 119 230 155 12 120 184 104 158 98 237 240 95 143 153
60: 81 193 58 78 88 54 178 38 113 122 237 249 39 120 183 153 168 180 253 246 218 81 168 202 97 141 247 91 224 55 36 172 165 29 56 45 234 30 111 66 211 4 43 254 32 96 246 93 34 5 198 209 150 198 175 190 155 247 137 77 71 53 108 12 47 229 122 19 61 70 164 200 45 231 146 93 118 215 117 109 60 161 229 112 58 38 202 255 27 247 151 64 200 193 213 183 70 207 92 144 201 143 129 198 147 43 76 47 232 33 9 87 150 188 197 32 150 243 202 238 196 212 167 136 131 189 111 183
61: 122 21 213 162 148 199 60 91 128 147 250 145 178 67 231 94 201 199 76 66 112 139 59 118 116 195 215 21 6 233 82 19 34 177 149 46 228 119 142 62 189 199 207 101 16 31 181 79 73 181 187 94 213 172 23 115 51 19 151 199 66 231 112 148 91 202 231 130 188 74 194 31 86 191 98 44 211 45 130 218 76 179 220 210 165 162 227 145 249 149 150 158 178 155 39 19 135 122 152 41 126 18 192 143 20 167 121 39 19 3 191 71 188 142 255 226 133 133 73 55 133 246 62 216 216 9 99 33
62: 220 186 189 47 187 211 225 92 77 245 140 220 0 22 185 238 111 85 213 93 66 53 51 68 86 52 72 254 105 205 70 239 186 19 97 27 118 61 205 126 29 42 104 240 187 117 202 58 57 102 100 232 133 99 191 62 43 55 64 51 213 94 33 10 176 164 185 204 123 172 104 93 173 37 195 177 140 179 16 84 178 56 243 91 178 102 95 230 162 204 196 2 222 123 33 178 163 215 150 134 25 50 160 81 50 29 172 57 98 199 171 118 182 2 31 1 123 248 255 169 12 235 210 19 169 56 98 16
63: 84 171 231 251 239 16 111 49 0 183 166 78 151 189 29 218 24 216 173 119 154 162 146 145 36 12 113 127 227 14 46 134 12 158 246 157 1 129 194 95 194 13 50 220 172 148 2 70 211 251 246 224 189 164 85 236 133 0 247 23 28 202 141 221 8 11 107 239 84 224 127 212 84 200 182 222 27 222 87 11 25 223 222 94 216 13 196 174 33 140 46 86 216 35 110 100 105 152 2 105 114 233 218 69 214 170 252 140 144 169 123 26 99 228 22 225 172 65 24 105 99 14 188 211 48 15 44 51
64: 55 242 254 208 249 210 23 57 31 104 10 91 52 254 6 118 76 46 10 190 57 219 232 21 245 59 68 65 9 162 131 154 206 82 193 47 44 79 31 16 73 181 247 130 15 24 49 139 105 167 99 109 152 95 156 162 118 73 134 230 74 39 235 241 31 109 77 94 152 190 171 154 32 65 72 221 24 28 227 57 53 105 189 28 13 129 205 153 182 29 32 102 5 36 22 114 61 234 151 120 41 136 147 91 168 146 189 124 200 174 157 38 80 99 194 69 94 118 119 128 130 234 39 123 132 191 246 155
65: 5 238 78 63 84 178 147 226 63 214 109 170 33 172 4 62 228 130 68 248 64 149 24 148 113 105 127 231 10 227 60 101 101 248 122 231 191 58 47 49 103 189 35 149 111 39 9 61 112 85 251 35 156 5 77 217 98 206 103 29 45 205 204 47 213 179 172 151 9 1 83 170 105 104 95 107 84 4 70 184 10 5 210 71 85 195 122 101 44 105 171 250 248 204 181 247 32 70 236 231 63 250 105 88 9 90 156 183 139 234 182 90 232 207 82 58 54 233 249 201 135 17 144 221 156 168 135 3
66: 136 64 215 58 91 59 33 53 201 44 217 58 125 75 216 158 205 81 87 76 80 124 134 73 218 65 226 42 149 232 160 127 255 252 157 233 198 139 244 65 160 73 200 246 180 200 191 238 72 9 84 4 188 47 9 220 202 154 47 170 230 177 18 96 104 36 57 88 240 91 65 38 152 145 30 242 192 122 20 199 223 144 140 245 64 137 215 175 196 76 4 110 66 194 169 36 149 141 3 49 95 99 174 16 161 131 106 113 148 180 253 177 64 105 158 132 127 8 74 51 227 169 126 168 164 23 132 83
67: 151 178 26 241 254 135 25 155 197 38 81 179 248 52 227 143 71 61 233 54 42 15 245 120 32 95 46 29 138 63 44 211 67 173 49 170 169 7 249 172 121 246 146 96 17 192 144 76 247 244 133 71 111 93 208 35 2 221 165 129 201 19 136 38 89 176 58 59 217 222 57 161 107 254 245 116 65 3 3 208 198 170 6 199 224 152 172 177 70 147 237 242 136 176 133 25 167 126 32 199 18 219 64 27 1 79 70 23 93 29 227 103 2 153 30 187 38 13 93 129 238 56 20 92 40 170 178 241
68: 98 100 3 70 43 70 5 227 232 234 229 107 72 160 105 213 208 3 136 183 190 29 48 162 196 140 224 167 89 68 222 188 53 194 231 64 241 179 35 233 95 202 244 201 134 128 18 127 187 245 237 119 139 69 134 55 107 34 144 28 225 206 5 72 239 64 87 97 35 226 47 195 74 162 25 112 178 209 209 255 187 240 249 111 116 190 49 252 217 124 191 7 49 47 42 188 49 194 106 73 85 56 116 4 196 58 221 225 115 150 219 135 170 15 135 143 157 31 45 77 231 39 76 129 126 44 89 85
69: 2 252 249 157 162 7 9 34 231 39 151 96 66 212 119 35 169 121 54 26 4 39 120 5 239 129 228 62 103 133 3 37 213 239 67 169 74 101 238 140 21 253 12 34 176 138 185 31 215 203 190 225 118 50 39 165 182 62 182 186 39 135 67 199 155 5 155 104 43 98 221 102 47 223 143 104 76 141 79 234 151 24 235 230 140 188 167 240 135 151 154 138 39 53 145 222 65 61 39 4 191 22 18 177 126 63 17 3 204 90 43 141 177 247 198 120 237 129 90 138 2 146 170 155 57 206 27 130
70: 75 229 74 224 36 247 146 192 144 98 242 77 208 62 17 106 12 141 103 6 61 237 84 187 176 153 27 100 109 237 236 233 168 236 92 100 195 103 26 18 70 131 6 204 96 98 63 89 199 184 76 13 236 115 114 88 169 223 35 20 23 145 88 185 9 45 51 227 110 76 228 236 237 205 100 158 36 202 199 232 45 86 122 114 107 248 105 207 84 217 34 16 130 60 220 17 111 150 163 203 206 17 5 219 101 171 8 205 175 200 111 61 120 139 163 39 107 166 198 24 191 204 171 238 109 213 200 4
71: 241 125 253 219 146 77 239 218 36 76 59 45 98 153 86 215 94 244 59 192 28 55 251 224 88 249 216 200 93 179 211 162 61 184 102 13 3 201 69 200 238 40 246 243 228 45 0 176 254 56 199 223 205 209 65 234 197 162 215 95 24 128 211 78 147 28 108 137 73 88 109 86 87 227 92 111 90 115 226 41 153 130 186 119 21 69 139 158 212 162 236 199 213 8 67 150 152 52 156 197 123 53 229 199 80 194 203 46 185 192 184 231 47 10 42 147 247 124 150 217 34 16 202 56 108 42 74 221
72: 8 187 224 227 79 237 209 118 251 212 178 234 95 8 223 169 123 126 43 41 74 0 128 13 194 108 193 213 33 181 244 109 122 28 50 190 120 23 251 252 129 179 46 89 186 51 56 171 232 59 215 118 124 204 113 66 180 163 246 17 0 79 197 209 58 234 182 38 93 220 97 193 246 243 170 18 26 64 93 47 207 167 147 51 188 100 161 217 4 96 240 9 182 20 161 79 227 133 72 74 158 167 94 170 244 9 183 35 15 98 188 146 117 72 144 28 5 123 232 27 61 202 32 226 51 238 203 245
73: 124 2 23 49 59 189 84 35 131 227 248 194 36 97 87 162 151 154 99 45 26 56 80 59 154 115 158 211 240 19 11 65 241 246 12 92 126 235 245 117 111 221 141 247 177 131 147 34 27 80 231 6 24 53 112 63 174 98 87 1 114 130 126 67 144 121 134 24 177 19 152 183 230 116 244 126 40 49 235 247 156 219 101 133 44 159 182 12 78 128 185 171 172 153 163 33 176 20 88 208 75 199 255 98 127 96 236 101 100 156 39 72 100 107 47 208 162 190 116 103 147 225 243 187 2 209 108 164
74: 27 22 194 90 176 129 31 145 17 50 194 239 195 202 128 14 100 138 9 112 91 144 200 190 34 58 245 184 179 51 138 196 70 185 90 57 186 163 185 46 12 178 54 148 25 209 105 197 179 125 106 207 178 248 103 155 235 143 132 68 18 190 244 250 112 235 10 235 18 11 155 8 202 49 128 130 176 17 1 19 159 116 154 18 41 96 70 90 229 93 247 163 58 139 254 73 95 82 206 164 138 23 2 153 149 66 102 182 180 63 249 182 30 67 231 151 249 96 206 189 66 88 38 133 215 193 168 37
75: 36 248 232 194 14 250 59 187 35 14 180 154 146 78 58 54 221 80 166 34 192 10 36 95 162 67 192 59 213 79 233 77 56 192 91 135 8 113 90 219 125 60 142 79 223 125 34 8 152 63 196 251 32 25 184 17 89 45 49 54 127 95 121 138 218 119 116 119 24 212 148 64 149 168 36 182 242 111 188 34 160 210 168 218 174 183 62 193 9 115 5 54 52 207 147 187 23 214 26 72 232 231 230 71 139 180 118 247 95 75 15 251 156 186 34 9 192 122 182 139 96 152 221 114 31 97 247 141
76: 161 65 153 14 15 47 254 85 26 73 164 60 84 37 27 44 30 203 42 29 13 11 7 135 165 229 241 139 169 85 16 177 138 202 93 149 23 197 85 195 236 133 220 91 219 160 38 215 242 89 42 180 10 128 218 197 250 57 37 137 195 91 117 122 53 144 17 12 19 107 129 74 212 11 2 27 78 205 81 142 38 9 76 92 244 232 121 5 75 187 160 11 33 16 51 239 63 104 33 10 155 225 145 0 85 188 152 216 145 157 211 168 32 93 69 108 230 89 21 142 242 107 224 143 118 100 96 199
77: 96 212 143 231 207 171 32 173 83 74 11 13 174 185 212 24 44 233 47 80 198 101 98 123 6 165 124 236 211 186 228 66 69 234 57 122 193 74 51 24 196 48 193 62 188 238 204 251 121 36 192 19 208 214 172 95 108 130 148 59 211 216 242 32 221 185 146 228 139 215 178 67 96 220 191 108 207 42 25 159 113 253 221 35 63 249 103 31 74 183 172 211 220 118 63 180 116 195 8 180 173 132 190 112 12 7 227 26 24 241 146 172 74 86 147 254 141 176 252 194 177 92 198 130 62 143 167 18
78: 17 104 218 82 42 141 148 87 148 213 105 85 171 209 129 230 108 97 129 22 197 135 132 2 75 28 238 102 86 60 140 142 197 147 72 41 75 215 98 232 51 14 206 168 45 236 43 148 126 236 135 34 119 212 19 103 234 22 161 118 60 119 173 46 79 222 127 117 167 58 202 46 130 55 13 48 122 211 47 195 200 211 151 242 237 246 38 253 68 37 200 194 245 56 80 101 125 139 241 42 245 121 186 192 39 212 220 232 227 161 20 214 162 1 19 22 14 74 41 151 205 90 80 9 183 110 3 231
79: 238 200 90 20 140 80 86 141 23 162 120 134 180 148 219 168 34 124 131 0 99 159 3 11 248 188 116 229 253 35 132 135 29 247 249 48 210 36 222 198 36 37 196 166 116 237 24 13 91 22 47 73 55 194 83 109 255 222 30 165 32 188 237 157 100 0 245 5 126 159 222 110 225 163 209 77 13 154 114 167 145 187 79 166 254 26 5 58 172 4 162 23 166 57 185 140 78 233 105 36 252 168 157 34 201 35 95 4 222 153 142 42 172 85 156 107 242 200 156 123 7 72 207 139 39 118 240 237
80: 171 50 39 79 226 213 144 113 104 89 79 207 192 216 88 64 136 106 203 210 2 215 28 254 93 174 251 68 126 206 47 120 0 24 201 151 248 31 208 96 246 49 107 44 97 220 79 94 229 87 61 234 179 9 211 232 128 7 59 37 207 233 42 213 192 71 82 236 248 95 14 182 125 69 216 115 119 56 42 69 36 47 99 171 57 31 45 125 79 135 70 187 156 214 124 158 74 5 161 142 178 120 134 48 159 244 41 83 73 131 153 91 98 38 173 127 153 164 187 226 43 127 24 233 12 232 253 12
81: 120 185 71 16 52 20 72 164 78 42 47 211 93 95 252 67 37 113 41 125 228 194 25 184 109 166 206 85 112 163 126 92 189 107 236 84 150 107 173 109 252 116 243 119 249 156 52 170 160 119 49 128 97 242 110 239 154 148 235 149 41 103 167 44 66 51 7 201 89 199 40 199 244 82 124 240 233 167 102 89 84 244 56 195 219 197 154 92 101 186 76 83 25 213 127 211 234 244 254 90 117 114 231 52 103 20 225 84 87 160 104 83 161 6 218 44 203 49 254 157 203 100 15 78 159 58 165 171
82: 144 38 235 52 150 239 170 184 187 178 122 68 209 54 112 139 215 173 152 82 214 143 155 62 192 82 133 163 2 215 117 131 238 11 78 166 175 152 11 11 213 75 76 193 106 32 151 226 169 37 238 205 27 13 66 205 172 242 22 53 55 232 229 127 252 21 236 92 7 227 144 143 218 4 218 12 9 195 234 252 235 194 109 127 56 194 171 114 105 46 209 193 160 106 205 182 137 2 244 19 65 253 236 131 245 40 219 196 122 134 86 45 84 32 72 135 50 54 253 244 76 10 116 125 146 54 77 57
83: 252 166 44 235 168 193 234 27 235 53 244 51 173 182 99 192 27 251 67 200 15 119 10 243 240 15 42 69 175 229 150 103 76 138 17 193 51 16 73 115 107 45 212 245 253 129 93 87 108 129 83 184 228 11 229 181 186 139 190 234 99 235 203 246 96 226 144 49 39 63 166 135 70 8 226 237 197 93 187 68 215 16 180 205 187 37 232 204 128 107 14 96 17 157 148 23 18 178 197 38 94 19 115 241 215 220 230 190 214 27 246 204 39 172 58 235 151 113 60 215 136 2 45 146 8 218 176 139
84: 134 139 37 96 26 172 138 135 16 253 234 201 134 188 236 202 121 71 135 100 134 130 96 127 39 151 51 124 225 255 41 28 212 162 86 208 73 165 232 169 219 165 176 107 94 204 232 101 164 187 88 163 91 236 205 233 122 111 131 196 72 45 80 107 232 86 62 120 156 234 0 39 58 71 153 82 171 83 129 170 166 100 232 251 130 198 148 123 251 225 85 46 201 222 135 215 242 0 218 191 239 73 140 200 169 187 166 219 1 246 218 31 214 101 132 121 90 188 159 199 14 187 87 64 45 196 131 243
85: 202 8 199 196 131 147 250 169 37 68 175 108 200 24 193 63 93 202 74 49 255 6 191 74 98 197 32 248 118 7 109 24 81 34 155 62 109 124 153 197 146 19 103 78 8 80 45 186 165 176 164 18 190 155 55 198 191 125 14 25 16 14 250 210 32 168 183 251 183 23 75 230 208 219 201 136 212 89 243 177 129 247 60 125 145 35 109 77 52 130 227 5 45 168 243 160 221 183 49 21 255 14 148 253 92 132 64 203 181 87 65 110 233 240 234 216 92 67 235 234 253 65 136 120 197 119 223 234
86: 1 181 62 31 129 246 248 105 9 186 114 89 76 135 208 8 141 15 93 105 68 32 177 179 140 36 122 89 19 110 240 17 180 238 182 129 144 108 18 160 187 187 38 85 146 42 139 187 159 233 147 72 82 102 165 19 28 189 124 233 8 239 193 93 30 24 229 219 136 128 52 63 213 242 126 110 92 12 14 214 213 140 183 185 192 65 43 222 218 231 137 241 87 4 228 102 131 225 158 84 122 241 151 7 36 23 126 78 36 129 254 107 181 75 176 177 27 178 244 222 113 174 34 93 198 223 8 210
87: 239 105 61 166 185 252 106 59 110 85 196 92 70 64 184 71 247 98 145 141 128 249 242 172 3 29 30 108 158 139 227 87 28 123 232 26 221 245 29 2 149 7 45 143 61 22 53 235 141 61 180 10 98 87 118 126 240 209 55 84 198 116 205 0 166 157 41 129 235 54 23 136 170 194 116 245 120 244 101 179 39 230 34 128 95 21 210 160 153 84 42 147 119 7 149 21 145 239 45 194 13 64 217 167 195 231 194 248 195 236 160 41 201 214 192 82 42 18 49 108 0 29 66 152 130 199 6 142
88: 177 83 144 7 46 163 129 80 117 125 133 7 23 13 220 177 181 10 236 191 180 133 161 114 156 88 50 82 168 96 40 240 142 17 98 34 255 32 250 203 201 205 29 227 169 111 129 109 86 253 81 221 137 76 187 153 214 241 253 246 224 59 217 217 50 197 167 122 33 81 99 137 137 105 168 55 81 5 22 213 138 12 20 33 37 187 123 44 85 233 155 239 250 83 104 171 40 47 1 62 84 34 223 185 57 149 62 141 64 125 141 51 179 146 140 91 149 6 32 204 228 144 174 25 26 64 94 208
89: 11 163 52 92 165 241 213 144 249 94 49 46 8 133 150 65 85 195 26 240 175 203 68 210 52 134 138 178 177 119 129 153 164 217 101 229 55 47 237 189 20 238 137 100 206 188 244 3 82 13 22 231 99 125 255 127 193 251 234 132 167 38 77 211 108 114 188 108 163 48 161 150 133 182 15 137 185 248 68 225 152 133 192 150 214 235 253 79 234 2 241 26 179 33 173 134 235 204 84 3 72 242 35 113 200 89 58 187 48 60 12 238 72 174 250 170 105 165 103 206 208 217 176 212 217 132 212 121
90: 247 133 126 100 217 22 154 46 72 4 100 35 196 222 79 175 251 122 170 167 137 212 18 177 92 215 99 30 49 190 62 114 105 132 245 184 6 132 124 119 173 46 66 239 63 230 117 118 239 81 50 255 209 65 138 32 136 67 219 47 103 32 44 153 127 217 143 4 17 171 6 188 36 181 31 3 246 79 246 233 6 33 190 209 193 92 212 224 161 251 43 137 88 191 61 12 37 22 225 239 86 194 162 119 63 102 164 218 126 0 1 37 183 161 189 100 142 148 88 69 78 166 117 31 207 180 138 28
91: 45 97 141 221 247 236 229 236 126 222 28 189 126 225 241 50 167 215 184 10 240 223 67 199 104 11 225 57 172 214 83 97 173 198 189 42 136 43 88 215 16 233 183 192 155 69 13 16 185 131 12 254 49 156 72 166 37 255 175 209 219 173 186 43 17 26 34 154 119 135 210 79 71 99 238 26 243 54 37 77 143 128 242 192 207 6 216 225 185 31 95 214 53 89 34 191 113 128 109 166 205 142 240 220 7 211 12 175 11 117 130 106 38 220 51 247 83 100 86 227 80 116 245 138 15 163 129 213
92: 244 57 147 192 20 9 233 109 66 111 228 165 188 140 172 229 146 136 137 15 226 239 42 193 238 32 143 132 195 29 73 50 149 65 136 221 124 228 176 55 112 234 39 99 87 101 173 14 35 238 101 99 157 151 183 137 125 82 94 122 70 193 210 71 190 89 28 124 150 40 79 1 145 98 99 89 160 183 104 134 95 2 209 252 157 215 94 147 104 216 84 66 95 108 53 1 186 136 140 44 0 110 13 129 29 168 255 217 41 184 103 143 93 242 79 79 212 38 99 200 206 184 61 57 19 178 233 179
93: 62 54 137 102 181 99 215 76 162 255 119 24 227 3 111 116 214 197 32 110 77 85 14 66 234 40 149 63 12 8 38 91 88 145 141 140 134 89 103 229 182 79 8 105 132 198 39 12 163 97 224 76 149 80 220 21 32 23 88 197 104 150 37 155 15 203 96 17 65 93 92 144 23 224 230 250 229 137 110 66 168 228 64 69 211 40 239 17 36 40 218 166 55 109 126 107 21 143 91 178 36 94 245 93 208 114 240 128 234 94 145 133 23 81 249 183 238 240 95 17 162 133 21 224 34 201 166 254
94: 88 115 212 175 49 140 208 136 247 184 139 25 74 118 74 100 184 149 86 187 82 104 123 57 230 83 102 214 23 124 76 193 36 9 114 161 205 244 60 161 245 3 167 196 3 81 126 117 161 143 235 143 235 191 104 183 205 170 173 179 152 100 231 5 131 155 85 53 28 4 143 194 109 251 67 186 104 235 150 224 103 146 194 212 54 64 120 16 154 171 168 115 137 79 79 57 193 169 115 148 14 147 48 121 87 25 147 243 236 58 54 196 95 237 111 244 101 114 67 203 128 129 247 54 106 186 17 21
95: 65 222 201 107 87 161 245 163 123 22 188 251 100 88 114 57 150 143 118 138 152 244 133 87 103 55 229 105 200 27 184 86 35 206 178 30 253 68 41 207 114 41 255 21 161 155 110 86 46 180 20 52 37 244 167 118 218 229 43 81 87 82 243 165 67 194 191 48 220 16 236 158 239 173 254 147 69 97 222 228 49 127 114 249 109 81 97 172 191 5 192 71 54 188 167 214 142 171 143 222 218 170 7 216 220 227 68 12 69 89 88 134 134 109 246 204 132 131 240 131 60 190 47 204 249 67 175 200
96: 227 208 1 55 21 109 180 197 250 57 174 30 239 155 75 117 65 253 138 241 31 226 100 77 106 66 118 27 76 172 237 52 146 130 53 4 110 117 167 145 78 121 230 191 121 244 179 67 58 222 8 67 158 72 1 51 13 28 205 218 239 254 76 83 52 147 26 212 16 80 252 223 179 238 94 36 235 43 212 24 150 65 123 198 82 117 60 71 72 106 101 221 21 115 123 204 117 8 232 113 15 71 16 254 16 161 56 85 212 206 131 1 137 30 208 14 58 16 211 127 150 249 179 148 58 160 88 249
97: 22 16 152 39 13 191 102 190 76 69 150 195 191 84 235 120 220 90 11 61 30 77 184 37 191 243 233 48 243 71 161 126 79 97 219 214 199 157 224 118 158 20 124 134 0 152 84 81 60 132 160 202 250 90 31 117 230 120 24 210 237 78 214 99 34 44 156 86 157 138 225 251 134 172 61 16 54 0 154 1 115 243 3 44 154 160 126 138 198 131 252 208 72 70 113 120 222 217 178 147 52 76 194 232 129 182 127 66 238 4 73 178 53 135 141 36 222 32 165 158 229 209 31 242 54 136 7 170
98: 60 93 255 33 101 149 141 213 180 128 99 27 197 128 136 19 35 247 159 156 10 1 104 26 121 176 227 218 136 69 180 202 93 108 218 164 139 65 38 167 147 171 226 92 242 171 55 209 227 52 202 135 220 222 53 86 109 25 214 56 83 113 72 101 231 20 204 1 130 131 180 242 115 128 16 70 62 51 160 37 104 108 104 179 210 101 231 249 231 8 110 59 2 240 118 46 64 13 103 200 78 97 113 214 184 83 247 9 5 41 220 58 192 45 184 210 174 106 219 68 166 111 71 253 36 78 66 113
99: 159 245 168 119 104 64 176 247 151 32 95 124 205 34 221 92 49 208 80 174 89 253 74 80 205 130 35 66 234 120 121 232 77 204 112 96 105 77 172 74 134 8 32 19 82 79 140 224 214 178 37 44 238 234 251 147 45 80 194 141 247 207 238 168 61 116 90 218 187 147 21 82 112 60 35 143 22 221 18 251 48 218 234 17 32 116 53 219 12 163 139 232 142 69 14 220 207 72 101 8 194 232 181 248 228 210 177 168 22 48 21 22 109 106 20 29 221 82 130 73 156 125 67 86 29 65 121 6
100: 63 172 72 101 7 53 151 148 212 249 93 203 27 68 84 217 41 109 154 213 127 238 238 44 19 113 89 180 249 180 229 198 242 67 4 6 183 4 97 8 84 247 97 50 76 34 135 42 166 173 94 17 114 8 8 224 117 180 248 133 175 252 227 143 124 156 6 172 192 32 87 71 0 199 198 161 221 33 152 79 128 101 43 189 222 252 225 151 195 169 55 120 208 88 171 44 169 67 214 187 145 65 136 100 128 150 86 184 108 49 116 201 154 166 178 239 32 182 172 135 74 242 178 99 60 146 54 255
101: 29 84 103 197 4 185 6 233 25 109 232 131 186 152 127 110 105 64 127 222 14 205 169 100 207 21 174 119 79 223 165 183 97 139 200 16 203 49 118 71 132 188 106 133 241 218 32 168 96 140 15 120 76 144 125 94 241 91 53 255 245 245 179 190 93 208 50 101 120 31 36 42 72 48 144 148 123 173 224 192 4 28 178 154 106 58 176 110 144 244 91 157 0 205 16 194 71 68 102 56 73 255 251 128 143 5 7 194 117 110 34 205 69 134 65 75 245 212 123 89 58 194 105 20 56 155 155 125
102: 10 6 164 26 93 51 114 143 5 9 102 173 49 57 78 52 230 220 143 78 39 97 144 231 231 49 135 109 70 53 225 124 250 5 47 204 99 69 87 35 10 143 178 140 65 145 108 130 41 78 73 235 225 52 215 111 143 2 153 188 223 225 66 237 181 113 216 243 175 233 133 176 174 160 0 32 230 247 174 235 112 45 68 226 73 207 0 220 31 166 104 92 254 141 9 53 9 15 0 209 163 152 93 72 10 121 14 70 245 42 55 154 70 131 41 105 22 51 185 228 232 74 26 38 243 195 69 47
103: 214 196 129 75 250 232 64 131 106 18 84 148 63 146 178 190 23 205 2 229 7 19 92 129 255 220 1 72 28 169 249 175 177 170 123 86 243 75 152 255 68 235 125 244 212 49 17 196 44 241 7 48 134 46 202 245 251 238 250 10 53 137 100 216 177 123 14 100 113 193 219 30 209 232 34 79 77 144 82 135 126 217 119 243 115 217 55 203 10 48 199 150 194 21 82 39 153 155 11 46 146 220 68 156 99 21 90 96 67 166 18 170 25 193 106 103 23 36 42 116 167 75 177 59 135 57 149 193
104: 174 90 121 112 120 93 22 146 93 252 67 209 247 53 11 203 224 40 229 101 178 87 78 9 223 191 41 113 50 250 42 253 193 207 188 56 61 98 226 89 113 208 57 22 91 190 240 114 118 141 21 121 39 159 96 75 149 31 211 148 218 178 218 23 195 170 46 214 223 189 62 27 10 108 43 139 234 62 99 97 210 177 71 9 49 23 92 239 156 178 245 81 84 177 41 121 246 93 126 125 203 215 53 209 18 54 215 228 106 221 46 32 118 29 179 246 80 22 228 155 184 179 142 215 61 252 48 67
105: 43 161 162 199 200 8 253 223 33 215 236 81 87 238 171 1 202 193 194 87 87 183 248 3 82 116 134 83 185 216 9 139 235 219 128 192 34 142 234 125 86 231 61 6 255 205 20 23 36 57 177 123 177 91 180 15 190 199 225 185 34 124 195 137 168 23 47 110 44 153 74 166 240 80 169 21 131 252 10 132 146 233 45 64 252 73 141 97 204 60 113 58 159 218 0 212 201 226 222 242 47 21 141 83 205 163 59 234 18 115 0 245 113 227 137 166 198 172 27 243 121 199 155 109 241 35 62 94
106: 186 49 67 247 32 206 196 33 243 134 239 111 150 249 242 253 45 119 242 129 116 35 193 133 111 24 60 219 7 160 29 59 43 151 116 89 112 200 213 52 198 6 25 9 226 50 22 53 196 146 200 102 13 152 143 228 84 190 209 161 132 70 71 156 74 201 235 35 86 104 207 132 195 230 69 196 86 217 211 92 176 227 137 215 158 59 158 99 173 248 229 229 126 183 24 109 136 223 136 27 212 27 203 208 254 67 119 68 164 193 122 247 65 236 125 133 131 20 76 49 188 31 208 207 128 241 26 185
107: 127 59 123 105 124 198 97 254 19 65 77 82 5 199 167 51 120 245 218 207 19 181 230 67 209 41 115 33 217 9 191 74 31 135 73 33 250 177 138 191 76 47 123 42 125 37 252 233 69 15 185 136 35 100 122 96 221 10 44 11 3 64 181 187 145 106 206 185 184 39 46 209 203 179 76 0 219 146 216 70 232 132 25 96 111 143 23 241 35 77 49 234 27 196 114 242 96 16 7 64 68 224 114 54 234 13 179 177 33 79 112 60 222 55 94 150 225 66 158 86 110 115 225 113 141 62 128 103
108: 153 226 179 210 45 106 16 225 46 11 162 11 175 147 243 174 240 60 121 120 27 233 37 28 59 100 170 183 122 33 250 31 234 77 21 109 141 246 66 110 124 16 24 112 6 36 158 174 181 147 206 219 90 96 116 176 8 16 251 190 254 27 7 13 135 148 79 198 13 143 220 78 43 210 206 19 216 135 223 151 194 55 93 131 15 54 47 100 240 18 190 152 26 51 111 118 184 1 147 104 10 163 210 23 172 169 229 164 153 205 185 5 207 96 38 154 13 141 207 147 148 137 58 85 186 22 144 248
109: 243 20 35 144 85 89 100 9 15 148 118 86 2 134 103 125 98 166 132 134 118 206 214 136 131 114 157 118 25 198 220 249 4 215 11 59 225 59 150 40 33 190 238 203 159 99 216 227 154 254 250 58 43 29 27 215 137 29 118 124 64 183 99 254 113 191 244 159 109 210 249 77 248 202 91 217 50 2 190 72 131 215 165 110 159 18 104 235 24 111 181 141 195 129 68 54 219 158 213 254 183 229 101 95 125 175 180 102 151 96 74 33 191 251 85 163 226 153 83 99 200 186 40 111 21 12 116 252
110: 169 76 158 30 234 61 202 181 211 223 184 74 117 61 2 82 246 174 75 122 93 173 203 58 157 135 217 173 24 125 33 81 23 212 105 99 160 196 5 155 3 55 30 229 235 4 7 71 94 54 4 96 5 111 46 108 35 204 27 42 130 80 13 171 204 159 164 168 207 250 216 121 219 129 23 72 190 161 213 13 164 231 81 27 77 165 170 45 190 112 243 131 108 200 20 96 0 115 70 241 8 139 6 166 52 115 84 16 72 104 158 64 89 177 227 26 61 235 70 179 112 71 22 76 173 53 35 65
111: 48 101 228 212 60 25 142 84 233 181 111 146 3 253 149 12 10 230 235 194 157 102 95 56 158 235 140 94 42 174 34 165 132 182 94 230 38 48 30 184 184 203 129 27 182 215 162 129 233 214 230 240 84 94 49 145 219 184 82 98 21 168 93 150 223 60 56 66 147 209 90 48 111 103 139 225 146 63 96 23 211 72 141 240 147 121 211 180 56 223 169 174 139 41 45 231 99 247 170 177 105 206 239 39 51 10 249 170 149 114 236 198 22 50 187 10 8 201 213 121 190 63 135 228 107 43 95 186
112: 78 70 95 161 75 73 182 207 213 164 19 43 143 113 156 15 207 228 89 245 168 71 113 131 76 254 125 28 251 166 254 102 99 154 125 12 92 122 78 239 191 36 31 40 119 119 180 44 209 211 128 23 77 246 61 167 246 102 1 92 100 182 29 247 38 33 187 8 63 202 60 163 79 192 101 66 193 20 115 60 132 156 48 163 175 250 111 28 193 47 73 14 69 85 27 141 218 81 94 169 196 61 243 10 76 135 48 72 121 56 205 79 242 165 46 249 227 144 204 4 222 230 30 30 125 28 243 80
113: 3 192 165 153 56 72 52 20 189 59 152 36 138 201 70 104 0 38 250 220 132 95 102 22 80 111 21 221 1 37 57 20 223 142 35 25 21 255 42 192 1 230 2 74 83 110 65 122 250 216 5 228 211 116 216 87 11 5 83 142 126 154 165 68 23 132 140 238 145 185 239 56 210 31 46 230 5 72 145 163 67 122 133 142 173 72 144 55 18 64 61 226 117 128 139 22 253 64 99 31 53 45 139 106 255 153 13 22 177 168 37 252 14 40 233 125 24 91 16 39 139 208 218 171 33 167 105 116
114: 33 147 101 214 248 180 198 47 94 188 4 244 80 203 234 107 79 117 106 20 254 44 56 141 90 125 208 112 245 66 102 5 155 100 220 254 88 168 196 105 105 210 92 242 27 20 241 98 216 248 203 22 192 130 131 68 61 84 9 211 240 146 184 243 212 251 243 21 237 229 31 248 136 175 137 113 107 11 26 110 46 203 155 255 141 30 110 246 91 219 234 76 12 66 144 50 72 91 118 205 208 174 78 82 191 77 46 135 49 71 135 200 171 69 55 190 204 211 214 212 144 218 25 18 96 177 24 168
115: 106 223 85 239 33 52 227 198 193 118 57 130 107 248 148 98 231 32 155 124 17 38 186 211 62 157 63 226 164 155 212 53 59 70 42 55 25 205 183 149 92 18 33 80 154 23 8 27 177 170 157 129 199 229 197 206 5 185 142 173 220 99 2 149 149 140 221 188 155 6 70 184 73 197 239 146 115 47 9 12 181 238 22 151 60 219 173 103 209 194 148 177 255 135 203 200 203 232 62 20 39 236 42 186 178 199 69 224 25 59 118 244 166 199 244 191 31 130 84 112 251 134 60 17 119 74 181 127
116: 164 112 140 215 122 136 231 206 170 105 216 63 228 195 96 160 190 131 219 228 75 155 185 142 221 99 114 150 132 171 176 21 117 33 223 90 58 232 146 14 40 26 73 81 170 254 219 200 213 189 195 210 197 219 188 110 50 89 12 103 236 102 58 203 140 225 32 142 180 154 86 2 171 35 45 156 79 6 112 123 13 246 187 227 160 179 244 54 123 16 249 119 7 39 251 89 144 80 31 98 168 217 249 126 146 69 4 48 84 88 179 7 184 18 167 16 187 40 233 167 114 182 137 243 74 121 68 101
117: 41 162 209 179 100 204 216 202 152 83 98 5 133 245 196 237 210 0 146 148 142 136 246 79 213 247 161 115 220 207 39 199 127 249 70 238 204 186 225 75 9 1 52 109 98 38 6 40 76 154 87 177 94 203 135 169 199 8 213 187 137 71 162 54 78 95 220 78 77 242 192 36 193 67 7 4 80 241 126 148 224 141 135 50 45 94 129 117 19 95 179 29 75 3 36 227 231 146 75 15 54 82 132 203 98 191 134 13 119 12 124 3 218 120 49 174 51 63 132 149 235 150 232 220 226 81 236 87
118: 189 232 149 225 194 92 75 128 53 40 207 23 32 240 126 122 3 190 220 4 217 2 204 140 70 143 44 41 20 249 112 29 100 41 6 81 39 37 8 210 164 213 197 155 73 239 113 152 3 28 134 181 61 254 169 3 4 48 42 145 30 41 172 228 0 182 207 106 218 108 4 141 50 15 180 10 38 76 48 129 18 222 8 49 148 234 201 26 14 61 138 109 230 90 150 243 48 4 196 55 98 228 75 195 82 155 97 100 75 235 216 232 203 224 18 180 37 83 3 192 82 76 217 200 124 6 238 9
119: 183 75 33 187 103 133 36 8 234 88 186 235 137 26 81 187 144 156 133 164 162 131 202 160 204 31 98 36 184 202 8 73 148 150 203 53 62 234 23 103 108 198 237 127 143 203 44 32 31 240 70 229 229 220 209 130 178 53 100 100 162 0 246 131 27 146 109 23 10 236 168 216 48 188 189 141 191 216 156 207 37 193 126 239 20 103 160 80 152 155 235 204 129 234 134 78 34 130 205 92 88 203 235 40 222 196 52 193 88 158 105 49 219 138 39 126 199 75 224 198 45 64 222 189 93 102 141 49
120: 140 175 47 226 105 220 158 19 174 165 208 98 17 74 34 205 101 88 122 37 84 122 218 50 14 253 231 46 63 62 32 132 126 72 119 153 83 130 246 98 175 70 62 32 85 123 195 206 235 134 122 155 206 143 232 31 20 79 244 94 227 143 97 145 39 227 93 150 57 112 142 115 52 21 81 216 126 236 237 229 21 96 62 46 138 184 155 59 114 81 33 169 242 228 202 185 141 79 240 206 172 149 86 140 198 84 138 28 34 231 127 102 211 210 149 110 33 173 162 12 182 58 219 239 234 171 86 112
121: 115 158 27 172 98 248 74 88 29 137 85 237 217 217 28 61 117 74 95 63 81 242 171 203 30 156 28 38 113 54 113 129 194 134 33 104 54 243 143 142 89 223 13 5 5 199 70 54 79 73 136 66 58 197 236 180 213 50 229 65 29 197 222 253 241 102 184 80 125 12 110 23 200 95 103 202 143 134 58 100 219 6 2 177 195 71 124 254 150 234 18 180 134 189 178 250 215 174 193 223 182 162 220 2 55 156 165 236 209 5 210 226 110 232 171 192 72 155 222 214 120 27 85 222 244 89 55 84
122: 49 94 169 195 96 88 39 42 218 194 74 230 184 109 176 32 21 200 55 108 135 134 16 159 35 118 47 32 161 147 194 84 152 25 16 17 232 153 134 38 38 67 53 132 36 55 97 60 25 161 95 170 100 131 0 37 176 114 239 85 65 110 14 69 234 117 12 183 124 231 12 32 53 39 11 238 16 138 71 25 226 111 112 70 76 253 50 194 76 97 141 27 16 107 3 77 104 50 185 75 221 74 187 190 42 157 71 52 240 36 25 128 139 111 92 155 18 156 30 186 249 227 162 209 38 221 20 160
123: 54 213 236 5 205 81 62 232 252 142 14 119 18 177 240 239 159 144 193 225 194 169 129 240 141 87 92 199 190 31 152 236 205 47 171 191 153 251 239 128 41 168 180 2 173 66 220 51 52 159 52 132 198 34 198 132 65 70 155 75 111 28 109 21 11 78 223 125 0 204 146 172 168 138 114 90 177 84 193 4 122 216 184 80 163 74 242 4 6 127 187 212 80 169 87 119 148 131 198 63 23 211 90 103 46 100 213 7 154 83 85 190 252 70 168 149 34 140 89 67 174 13 180 13 178 80 186 29
124: 233 174 238 205 118 29 220 89 50 156 153 61 233 127 131 36 180 115 62 217 184 137 197 0 143 186 95 253 146 245 65 10 222 228 187 216 78 20 125 21 98 39 36 71 81 197 60 0 193 150 66 41 143 174 161 41 224 250 112 254 121 121 251 111 115 186 228 187 6 42 102 180 35 228 141 204 52 160 4 121 233 242 67 158 89 1 247 196 141 14 221 68 214 211 155 61 245 206 127 250 157 6 127 188 115 184 206 115 50 109 181 28 221 141 181 89 200 167 94 162 163 151 99 74 6 24 84 118
125: 121 44 207 72 151 173 34 238 195 140 240 79 163 16 130 154 1 110 199 157 54 75 239 189 174 196 183 135 129 208 87 71 24 83 226 58 76 180 171 72 144 255 189 54 71 43 27 231 243 10 71 31 67 169 34 172 114 210 6 93 206 98 176 195 46 175 73 89 250 21 251 129 181 143 154 37 249 74 123 45 136 123 32 247 240 182 58 0 170 88 248 175 57 71 191 209 42 252 97 249 44 112 8 80 86 205 101 120 168 132 117 183 132 87 10 40 139 104 15 173 151 105 133 105 157 233 147 81
126: 191 140 53 91 92 12 143 21 59 95 142 159 21 31 9 109 162 26 134 175 181 107 54 143 53 16 160 202 72 26 187 248 124 146 235 114 111 137 209 31 45 174 218 76 114 67 92 69 16 1 56 16 160 56 224 161 210 26 208 67 51 223 232 121 84 57 175 121 226 121 50 177 104 149 151 117 61 194 28 40 165 186 96 65 122 223 249 104 129 172 78 140 253 37 43 87 30 236 104 233 87 182 242 57 28 8 26 108 174 238 113 93 159 22 127 52 154 52 175 218 52 1 189 104 155 194 146 119
127: 147 202 185 24 0 249 210 208 45 28 147 216 6 91 233 83 28 254 230 8 185 79 223 229 102 112 147 161 124 95 208 75 247 119 118 108 164 109 163 209 157 105 84 153 142 243 10 218 191 128 32 134 25 205 207 122 30 216 212 18 75 191 34 25 222 49 202 98 12 102 113 191 31 54 106 254 11 108 132 14 214 150 199 38 90 122 145 35 63 34 128 31 22 54 136 186 249 111 181 168 91 201 237 189 190 0 120 230 221 74 3 48 86 20 11 184 181 213 143 60 8 4 255 58 97 157 52 207'''
 
 
 
rmap = {}
for line in indexmap.split("\n"):
    c, tmp = line.split(":")
    c = int(c)
    buf = list(map(int, tmp.split()))
    assert len(buf) == 128, len(buf)
    for i, t in enumerate(buf):
        if t != base[i]:
            assert i not in rmap
            rmap[i] = c
print(rmap)
 
 
ans = [None] * 128
 
for line in outputs.split("\n"):
    c, tmp = line.split(":")
    c = int(c)
    buf = list(map(int, tmp.split()))
    assert len(buf) == 128, len(buf)
    for i, t in enumerate(buf):
        if t == a4[i]:
            index = rmap[i]
            assert ans[index] is None, ans[index]
            ans[index] = c
 
print(ans)
print(bytes(ans))    # b':*D#O+_I3;`}0NfP-=2/+Y"_>A8S6]L|4G;UHiA5mnol^k;#OhW2!UEJf0"7?Dt5m{CqE*AZr~$1(zW@TBXKL&2r?+3kwxC90O\'%&PyVo~)\'Q%Z@6b}REKF[cgFe/-?I'

 

此时距离题目放出过去了 17 个小时

 

脚本能够没有触发 assert 的跑完,本身就已经证明了以上思路是正确的。

 

看到 print 的输出 b':*D#O+_I3;`}0NfP-=2/+Y"_>A8S6]L|4G;UHiA5mnol^k;#OhW2!UEJf0"7?Dt5m{CqE*AZr~$1(zW@TBXKL&2r?+3kwxC90O\'%&PyVo~)\'Q%Z@6b}REKF[cgFe/-?I' ,熟练的掐头(b')去尾('),很 happy 的输入给程序去验证,结果又是闪退。

 

(相信读者应该一眼就看到问题所在了,但是这个问题足足坑了我又 17 个小时……)


 

踩坑

 

第一步当然是用这串输入过一遍7个函数看输出的内容是否正确。
(见上面C++代码中被注释掉的片段)粘贴进vs时,还注意到vs的代码格式化自动在双引号旁边加了旁空格,所以在前面补上了 \ (然而还是没注意到问题所在)。

 

代码跑起来,输出的内容与从第7个函数中提取的最终待比较值完全一致,于是陷入僵局。

 

由于这串输出看起来实在不整齐,所以又怀疑代码有暗坑导致这种调用方式与实际不同。

 

为了方便调试,把父进程在子进程入口点处注入的shellcode以及输入字符串patch到原程序中,然后用 x32dbg 调试,同时另一边vs F5调试,发现第2个函数执行完后就已经不同了。

 

开始怀疑自己的实现有问题,于是重新检查了若干遍 C++ 代码与 Python 代码,没有发现问题。

 

没有头绪,又启动了一次调试,发现竟然与上一次的执行结果不一样。再次试验,发现每次调试输出的结果都不同;另一边在vs中发现,如果是Ctrl+F5执行,输入每次都是固定且正确的,而使用F5调试,每次的输入结果也是不同的,这才确定有反调试。

 

思路继续跑偏,认为代码可能检查了执行时间(GetProcAddress确实有几个时间相关的函数),或者自己的patch可能触发了代码自校验,于是转而考虑如何不patch,而是采用与父进程相同的VirtualAllocEx与WriteProcessMemory方法调用子进程。

 

看到已有三解,又想到一血时间那么短,感觉题目复杂度不会这么高。

 

走投无路,尝试直接调试原始程序,在创建子进程的地方下断点却总是断不下来;反复几次之后,只好从 sub_4026D2 处理 check 按钮点击的位置开始单步调试,发现 GetWindowTextA 返回的字符串长度是 130,但是 Python 中打印的长度又确实是 128。

 

逐字节对照输入的字符串与内存中的值,终于发现问题所在:
回顾 print(bytes(ans)) 的输出 b':*D#O+_I3;`}0NfP-=2/+Y"_>A8S6]L|4G;UHiA5mnol^k;#OhW2!UEJf0"7?Dt5m{CqE*AZr~$1(zW@TBXKL&2r?+3kwxC90O\'%&PyVo~)\'Q%Z@6b}REKF[cgFe/-?I',这是 bytes 的 repr 表示,由于最外层是 b'',所以内部的单引号'前面加上了转义符 \,掐头去尾复制后多出的两个字符就来源于此。

 

而在 C++ 中,如果字符串字面值中的 \ 与它后面的字符不构成转义序列,会被直接忽略,所以 C++ 代码跑出的结果是正常的。


 

最终提交时距离题目放出过去了 34 个小时

 

以往做的几乎所有题目,flag只包含字母数字下划线大括号,所以为了少打几个字符,直接以 bytes 输出结果也不会有问题:

1
2
3
# flag = [...]    # number list
# then do some calucation on flag
print(bytes(flag))

以后再也不偷懒了!

1
print(bytes(ans).decode())

这才是真正正确的输入:

1
:*D#O+_I3;`}0NfP-=2/+Y"_>A8S6]L|4G;UHiA5mnol^k;#OhW2!UEJf0"7?Dt5m{CqE*AZr~$1(zW@TBXKL&2r?+3kwxC90O'%&PyVo~)'Q%Z@6b}REKF[cgFe/-?I

经测试,在 win11物理机、win10物理机、win10虚拟机 都能验证通过


 

附件是几个 IDA 的数据库,以及反编译出来的伪代码。

 

(p.s. writeup这种东西,如果不是刚做完题立刻就写,到后面只会越来越不想写……第八题花费的时间远超预期,而且今天中午第九题又要开了,之前想着周末补上第七题的writeup,现在看来又要往后推了……不过可以相信,总有一天是会写完的\^)


[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

上传的附件:
收藏
点赞3
打赏
分享
最新回复 (3)
雪    币: 618
活跃值: (759)
能力值: ( LV3,RANK:35 )
在线值:
发帖
回帖
粉丝
Just_Cracker 2022-12-15 10:12
2
0
师傅下载凭证过期了 能更新一下嘛
雪    币: 4357
活跃值: (874)
能力值: ( LV8,RANK:142 )
在线值:
发帖
回帖
粉丝
elecs 2 2023-1-17 16:57
3
0
请问python脚本中的base数值怎么得到的?
雪    币: 4357
活跃值: (874)
能力值: ( LV8,RANK:142 )
在线值:
发帖
回帖
粉丝
elecs 2 2023-1-17 17:25
4
0
知道了,就是输入0x80个零时获得的testinput
游客
登录 | 注册 方可回帖
返回