diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json new file mode 100644 index 00000000..862aed87 --- /dev/null +++ b/.vscode/c_cpp_properties.json @@ -0,0 +1,16 @@ +{ + "configurations": [ + { + "name": "Linux", + "includePath": [ + "${workspaceFolder}/**" + ], + "defines": [], + "compilerPath": "/usr/bin/gcc", + "cStandard": "gnu17", + "cppStandard": "gnu++14", + "intelliSenseMode": "linux-gcc-x64" + } + ], + "version": 4 +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 9b5fdd53..20f06d5a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -47,6 +47,22 @@ "streambuf": "cpp", "cinttypes": "cpp", "typeinfo": "cpp", - "files.eol": "\n" + "files.eol": "\n", + "bitset": "cpp", + "chrono": "cpp", + "complex": "cpp", + "condition_variable": "cpp", + "cstring": "cpp", + "ctime": "cpp", + "set": "cpp", + "ratio": "cpp", + "regex": "cpp", + "future": "cpp", + "iomanip": "cpp", + "mutex": "cpp", + "shared_mutex": "cpp", + "thread": "cpp", + "variant": "cpp", + "list": "cpp" } } \ No newline at end of file diff --git a/documentation/man-database.h b/documentation/man-database.h new file mode 100644 index 00000000..684260d5 --- /dev/null +++ b/documentation/man-database.h @@ -0,0 +1,237 @@ +unsigned char documentation_database_txt[] = { + 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x28, 0x33, 0x29, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x20, 0x46, + 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x4d, 0x61, 0x6e, + 0x75, 0x61, 0x6c, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x41, 0x54, 0x41, 0x42, + 0x41, 0x53, 0x45, 0x28, 0x33, 0x29, 0x0a, 0x0a, 0x0a, 0x0a, 0x4e, 0x08, + 0x4e, 0x41, 0x08, 0x41, 0x4d, 0x08, 0x4d, 0x45, 0x08, 0x45, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x20, 0x2d, 0x20, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x20, + 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x0a, 0x0a, + 0x0a, 0x53, 0x08, 0x53, 0x59, 0x08, 0x59, 0x4e, 0x08, 0x4e, 0x4f, 0x08, + 0x4f, 0x50, 0x08, 0x50, 0x53, 0x08, 0x53, 0x49, 0x08, 0x49, 0x53, 0x08, + 0x53, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x08, 0x64, + 0x61, 0x08, 0x61, 0x74, 0x08, 0x74, 0x61, 0x08, 0x61, 0x62, 0x08, 0x62, + 0x61, 0x08, 0x61, 0x73, 0x08, 0x73, 0x65, 0x08, 0x65, 0x20, 0x20, 0x5b, + 0x2d, 0x2d, 0x6d, 0x61, 0x67, 0x20, 0x20, 0x5f, 0x08, 0x6d, 0x5f, 0x08, + 0x61, 0x5f, 0x08, 0x78, 0x5f, 0x08, 0x2d, 0x5f, 0x08, 0x6d, 0x5f, 0x08, + 0x61, 0x5f, 0x08, 0x67, 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x69, 0x5f, 0x08, + 0x74, 0x5f, 0x08, 0x75, 0x5f, 0x08, 0x64, 0x5f, 0x08, 0x65, 0x20, 0x7c, + 0x20, 0x2d, 0x2d, 0x73, 0x74, 0x61, 0x72, 0x73, 0x20, 0x5f, 0x08, 0x6e, + 0x5f, 0x08, 0x75, 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x2d, 0x5f, 0x08, 0x73, + 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x72, 0x5f, 0x08, 0x73, + 0x5d, 0x20, 0x5b, 0x2d, 0x2d, 0x6b, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x20, 0x2d, 0x2d, 0x6b, 0x76, 0x65, 0x63, 0x2d, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x74, 0x6f, 0x72, 0x2d, 0x6d, 0x69, 0x6e, 0x2d, + 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x5f, 0x08, 0x6d, + 0x5f, 0x08, 0x69, 0x5f, 0x08, 0x6e, 0x20, 0x2d, 0x2d, 0x6b, 0x76, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x2d, 0x6d, 0x61, 0x78, 0x2d, 0x64, 0x69, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x61, + 0x5f, 0x08, 0x78, 0x20, 0x2d, 0x2d, 0x6b, 0x76, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x2d, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x2d, 0x62, + 0x69, 0x6e, 0x73, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, + 0x08, 0x6e, 0x5f, 0x08, 0x75, 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x2d, 0x5f, + 0x08, 0x62, 0x5f, 0x08, 0x69, 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x73, 0x5d, + 0x20, 0x5b, 0x2d, 0x2d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, + 0x08, 0x6f, 0x5f, 0x08, 0x75, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x70, 0x5f, + 0x08, 0x75, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x2d, 0x5f, 0x08, 0x70, 0x5f, + 0x08, 0x61, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x68, 0x5d, 0x0a, 0x0a, 0x0a, + 0x44, 0x08, 0x44, 0x45, 0x08, 0x45, 0x53, 0x08, 0x53, 0x43, 0x08, 0x43, + 0x52, 0x08, 0x52, 0x49, 0x08, 0x49, 0x50, 0x08, 0x50, 0x54, 0x08, 0x54, + 0x49, 0x08, 0x49, 0x4f, 0x08, 0x4f, 0x4e, 0x08, 0x4e, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x08, 0x64, 0x61, 0x08, 0x61, 0x74, + 0x08, 0x74, 0x61, 0x08, 0x61, 0x62, 0x08, 0x62, 0x61, 0x08, 0x61, 0x73, + 0x08, 0x73, 0x65, 0x08, 0x65, 0x20, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x20, 0x28, 0x61, 0x20, 0x73, 0x75, 0x62, 0x73, 0x65, + 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, + 0x72, 0x20, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x29, 0x2c, 0x20, + 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x69, 0x73, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, + 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x20, 0x75, 0x6e, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x73, 0x74, 0x61, + 0x72, 0x73, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x73, 0x74, 0x2e, 0x20, + 0x54, 0x68, 0x65, 0x20, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, + 0x20, 0x20, 0x73, 0x74, 0x61, 0x72, 0x20, 0x20, 0x63, 0x61, 0x74, 0x61, + 0x6c, 0x6f, 0x67, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x20, 0x61, 0x62, 0x6f, 0x75, + 0x74, 0x20, 0x39, 0x30, 0x30, 0x30, 0x20, 0x73, 0x74, 0x61, 0x72, 0x73, + 0x2c, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x63, 0x61, 0x6e, 0x20, + 0x62, 0x65, 0x20, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x20, 0x69, + 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x20, 0x62, 0x79, 0x20, 0x66, 0x69, 0x6c, 0x2d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x72, 0x73, 0x20, 0x6f, + 0x75, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x5f, 0x08, + 0x6d, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x78, 0x5f, 0x08, 0x2d, 0x5f, 0x08, + 0x6d, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x67, 0x5f, 0x08, 0x6e, 0x5f, 0x08, + 0x69, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x75, 0x5f, 0x08, 0x64, 0x5f, 0x08, + 0x65, 0x20, 0x6f, 0x72, 0x20, 0x62, 0x79, 0x20, 0x67, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x20, 0x20, 0x74, 0x68, 0x65, 0x20, 0x20, 0x5f, 0x08, + 0x6e, 0x5f, 0x08, 0x75, 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x2d, 0x5f, 0x08, + 0x73, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x72, 0x5f, 0x08, + 0x73, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x69, + 0x67, 0x68, 0x74, 0x65, 0x73, 0x74, 0x20, 0x20, 0x73, 0x74, 0x61, 0x72, + 0x73, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x74, + 0x61, 0x6c, 0x6f, 0x67, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, + 0x61, 0x72, 0x65, 0x20, 0x73, 0x65, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x20, + 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x73, 0x20, 0x6f, 0x66, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x64, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, + 0x65, 0x6e, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x20, 0x66, + 0x69, 0x6c, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, + 0x08, 0x6f, 0x5f, 0x08, 0x75, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x70, 0x5f, + 0x08, 0x75, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x2d, 0x5f, 0x08, 0x70, 0x5f, + 0x08, 0x61, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x68, 0x2e, 0x0a, 0x0a, 0x0a, + 0x20, 0x20, 0x20, 0x4f, 0x08, 0x4f, 0x70, 0x08, 0x70, 0x74, 0x08, 0x74, + 0x69, 0x08, 0x69, 0x6f, 0x08, 0x6f, 0x6e, 0x08, 0x6e, 0x73, 0x08, 0x73, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, + 0x08, 0x2d, 0x6d, 0x08, 0x6d, 0x69, 0x08, 0x69, 0x6e, 0x08, 0x6e, 0x2d, + 0x08, 0x2d, 0x6d, 0x08, 0x6d, 0x61, 0x08, 0x61, 0x67, 0x08, 0x67, 0x20, + 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x69, 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x69, + 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x75, 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x2d, + 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x67, 0x5f, 0x08, 0x6e, + 0x5f, 0x08, 0x69, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x75, 0x5f, 0x08, 0x64, + 0x5f, 0x08, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, + 0x20, 0x20, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x20, 0x20, + 0x74, 0x6f, 0x20, 0x73, 0x74, 0x61, 0x72, 0x73, 0x20, 0x77, 0x69, 0x74, + 0x68, 0x20, 0x6d, 0x61, 0x67, 0x6e, 0x69, 0x74, 0x75, 0x64, 0x65, 0x20, + 0x6c, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x6e, 0x69, + 0x6d, 0x75, 0x6d, 0x2d, 0x6d, 0x61, 0x67, 0x6e, 0x69, 0x2d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x74, 0x75, 0x64, 0x65, 0x20, 0x28, 0x62, 0x72, 0x69, 0x67, 0x68, + 0x74, 0x65, 0x72, 0x20, 0x73, 0x74, 0x61, 0x72, 0x73, 0x20, 0x68, 0x61, + 0x76, 0x65, 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x20, 0x6d, 0x61, 0x67, + 0x6e, 0x69, 0x74, 0x75, 0x64, 0x65, 0x73, 0x29, 0x2e, 0x0a, 0x0a, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, + 0x2d, 0x6d, 0x08, 0x6d, 0x61, 0x08, 0x61, 0x78, 0x08, 0x78, 0x2d, 0x08, + 0x2d, 0x73, 0x08, 0x73, 0x74, 0x08, 0x74, 0x61, 0x08, 0x61, 0x72, 0x08, + 0x72, 0x73, 0x08, 0x73, 0x20, 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x75, 0x5f, + 0x08, 0x6d, 0x5f, 0x08, 0x2d, 0x5f, 0x08, 0x73, 0x5f, 0x08, 0x74, 0x5f, + 0x08, 0x61, 0x5f, 0x08, 0x72, 0x5f, 0x08, 0x73, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x73, 0x20, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x5f, 0x08, + 0x6e, 0x5f, 0x08, 0x75, 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x2d, 0x5f, 0x08, + 0x73, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x72, 0x5f, 0x08, + 0x73, 0x20, 0x62, 0x72, 0x69, 0x67, 0x68, 0x74, 0x65, 0x73, 0x74, 0x20, + 0x73, 0x74, 0x61, 0x72, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x2e, 0x0a, 0x0a, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, + 0x2d, 0x6b, 0x08, 0x6b, 0x76, 0x08, 0x76, 0x65, 0x08, 0x65, 0x63, 0x08, + 0x63, 0x74, 0x08, 0x74, 0x6f, 0x08, 0x6f, 0x72, 0x08, 0x72, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, + 0x4b, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x64, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x6b, 0x08, 0x6b, 0x76, + 0x08, 0x76, 0x65, 0x08, 0x65, 0x63, 0x08, 0x63, 0x74, 0x08, 0x74, 0x6f, + 0x08, 0x6f, 0x72, 0x08, 0x72, 0x2d, 0x08, 0x2d, 0x6d, 0x08, 0x6d, 0x69, + 0x08, 0x69, 0x6e, 0x08, 0x6e, 0x2d, 0x08, 0x2d, 0x64, 0x08, 0x64, 0x69, + 0x08, 0x69, 0x73, 0x08, 0x73, 0x74, 0x08, 0x74, 0x61, 0x08, 0x61, 0x6e, + 0x08, 0x6e, 0x63, 0x08, 0x63, 0x65, 0x08, 0x65, 0x20, 0x5f, 0x08, 0x6d, + 0x5f, 0x08, 0x69, 0x5f, 0x08, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x53, 0x65, 0x74, + 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, + 0x6d, 0x20, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x62, + 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6b, 0x76, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, + 0x6e, 0x67, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x20, 0x20, 0x74, + 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x69, 0x5f, 0x08, + 0x6e, 0x20, 0x28, 0x64, 0x65, 0x67, 0x72, 0x65, 0x65, 0x73, 0x29, 0x2e, + 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x74, 0x6f, + 0x20, 0x30, 0x2e, 0x35, 0x20, 0x69, 0x66, 0x20, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x6b, + 0x08, 0x6b, 0x76, 0x08, 0x76, 0x65, 0x08, 0x65, 0x63, 0x08, 0x63, 0x74, + 0x08, 0x74, 0x6f, 0x08, 0x6f, 0x72, 0x08, 0x72, 0x2d, 0x08, 0x2d, 0x6d, + 0x08, 0x6d, 0x61, 0x08, 0x61, 0x78, 0x08, 0x78, 0x2d, 0x08, 0x2d, 0x64, + 0x08, 0x64, 0x69, 0x08, 0x69, 0x73, 0x08, 0x73, 0x74, 0x08, 0x74, 0x61, + 0x08, 0x61, 0x6e, 0x08, 0x6e, 0x63, 0x08, 0x63, 0x65, 0x08, 0x65, 0x20, + 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x78, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x53, 0x65, 0x74, 0x73, 0x20, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x61, + 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x20, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x20, 0x62, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x6b, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x62, 0x75, + 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x20, 0x74, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x08, 0x6d, 0x5f, 0x08, + 0x61, 0x5f, 0x08, 0x78, 0x20, 0x28, 0x64, 0x65, 0x67, 0x72, 0x65, 0x65, + 0x73, 0x29, 0x2e, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, + 0x20, 0x74, 0x6f, 0x20, 0x31, 0x35, 0x20, 0x69, 0x66, 0x20, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, + 0x2d, 0x6b, 0x08, 0x6b, 0x76, 0x08, 0x76, 0x65, 0x08, 0x65, 0x63, 0x08, + 0x63, 0x74, 0x08, 0x74, 0x6f, 0x08, 0x6f, 0x72, 0x08, 0x72, 0x2d, 0x08, + 0x2d, 0x64, 0x08, 0x64, 0x69, 0x08, 0x69, 0x73, 0x08, 0x73, 0x74, 0x08, + 0x74, 0x61, 0x08, 0x61, 0x6e, 0x08, 0x6e, 0x63, 0x08, 0x63, 0x65, 0x08, + 0x65, 0x2d, 0x08, 0x2d, 0x62, 0x08, 0x62, 0x69, 0x08, 0x69, 0x6e, 0x08, + 0x6e, 0x73, 0x08, 0x73, 0x20, 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x75, 0x5f, + 0x08, 0x6d, 0x5f, 0x08, 0x2d, 0x5f, 0x08, 0x62, 0x5f, 0x08, 0x69, 0x5f, + 0x08, 0x6e, 0x5f, 0x08, 0x73, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x53, 0x65, 0x74, 0x73, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, + 0x6f, 0x66, 0x20, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, + 0x62, 0x69, 0x6e, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x6b, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x62, 0x75, 0x69, 0x6c, + 0x64, 0x69, 0x6e, 0x67, 0x20, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x74, 0x6f, 0x20, 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x75, + 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x2d, 0x5f, 0x08, 0x62, 0x5f, 0x08, 0x69, + 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x73, 0x2e, 0x20, 0x20, 0x44, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x31, 0x30, 0x30, + 0x30, 0x30, 0x20, 0x69, 0x66, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x74, 0x08, 0x74, + 0x72, 0x08, 0x72, 0x61, 0x08, 0x61, 0x63, 0x08, 0x63, 0x6b, 0x08, 0x6b, + 0x69, 0x08, 0x69, 0x6e, 0x08, 0x6e, 0x67, 0x08, 0x67, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x54, + 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x6f, 0x64, 0x65, + 0x20, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x0a, 0x0a, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, + 0x2d, 0x6f, 0x08, 0x6f, 0x75, 0x08, 0x75, 0x74, 0x08, 0x74, 0x70, 0x08, + 0x70, 0x75, 0x08, 0x75, 0x74, 0x08, 0x74, 0x20, 0x5f, 0x08, 0x6f, 0x5f, + 0x08, 0x75, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x70, 0x5f, 0x08, 0x75, 0x5f, + 0x08, 0x74, 0x5f, 0x08, 0x2d, 0x5f, 0x08, 0x70, 0x5f, 0x08, 0x61, 0x5f, + 0x08, 0x74, 0x5f, 0x08, 0x68, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x68, 0x65, 0x20, + 0x66, 0x69, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x20, 0x74, 0x6f, 0x2e, 0x20, 0x44, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x73, 0x74, 0x64, 0x6f, + 0x75, 0x74, 0x2e, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x68, 0x08, 0x68, 0x65, 0x08, + 0x65, 0x6c, 0x08, 0x6c, 0x70, 0x08, 0x70, 0x20, 0x50, 0x72, 0x69, 0x6e, + 0x74, 0x73, 0x20, 0x20, 0x74, 0x68, 0x65, 0x20, 0x20, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x6d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x20, 0x65, 0x6e, 0x74, 0x72, + 0x79, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x2e, + 0x0a, 0x0a, 0x0a, 0x53, 0x08, 0x53, 0x45, 0x08, 0x45, 0x45, 0x08, 0x45, + 0x20, 0x41, 0x08, 0x41, 0x4c, 0x08, 0x4c, 0x53, 0x08, 0x53, 0x4f, 0x08, + 0x4f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70, 0x69, 0x70, + 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x28, 0x33, 0x29, 0x0a, 0x0a, 0x0a, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x36, 0x20, 0x4e, 0x6f, + 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x32, 0x30, 0x32, 0x31, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x41, 0x54, 0x41, 0x42, + 0x41, 0x53, 0x45, 0x28, 0x33, 0x29, 0x0a +}; +unsigned int documentation_database_txt_len = 2803; diff --git a/documentation/man-pipeline.h b/documentation/man-pipeline.h new file mode 100644 index 00000000..98331db9 --- /dev/null +++ b/documentation/man-pipeline.h @@ -0,0 +1,1313 @@ +unsigned char documentation_pipeline_txt[] = { + 0x50, 0x49, 0x50, 0x45, 0x4c, 0x49, 0x4e, 0x45, 0x28, 0x33, 0x29, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x20, 0x46, + 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x4d, 0x61, 0x6e, + 0x75, 0x61, 0x6c, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x49, 0x50, 0x45, 0x4c, + 0x49, 0x4e, 0x45, 0x28, 0x33, 0x29, 0x0a, 0x0a, 0x0a, 0x0a, 0x4e, 0x08, + 0x4e, 0x41, 0x08, 0x41, 0x4d, 0x08, 0x4d, 0x45, 0x08, 0x45, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, + 0x6e, 0x65, 0x20, 0x2d, 0x20, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x20, + 0x61, 0x20, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x6f, + 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x72, 0x20, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x0a, 0x0a, 0x0a, + 0x53, 0x08, 0x53, 0x59, 0x08, 0x59, 0x4e, 0x08, 0x4e, 0x4f, 0x08, 0x4f, + 0x50, 0x08, 0x50, 0x53, 0x08, 0x53, 0x49, 0x08, 0x49, 0x53, 0x08, 0x53, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70, 0x08, 0x70, 0x69, + 0x08, 0x69, 0x70, 0x08, 0x70, 0x65, 0x08, 0x65, 0x6c, 0x08, 0x6c, 0x69, + 0x08, 0x69, 0x6e, 0x08, 0x6e, 0x65, 0x08, 0x65, 0x20, 0x20, 0x2d, 0x2d, + 0x70, 0x6e, 0x67, 0x20, 0x20, 0x5f, 0x08, 0x66, 0x5f, 0x08, 0x69, 0x5f, + 0x08, 0x6c, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x70, 0x5f, 0x08, 0x61, 0x5f, + 0x08, 0x74, 0x5f, 0x08, 0x68, 0x20, 0x20, 0x28, 0x2d, 0x2d, 0x66, 0x6f, + 0x63, 0x61, 0x6c, 0x2d, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x20, + 0x5f, 0x08, 0x6c, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x67, + 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x68, 0x20, 0x2d, 0x2d, 0x70, 0x69, 0x78, + 0x65, 0x6c, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x5f, 0x08, 0x73, 0x5f, + 0x08, 0x69, 0x5f, 0x08, 0x7a, 0x5f, 0x08, 0x65, 0x29, 0x20, 0x7c, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x2d, 0x66, 0x6f, 0x76, + 0x20, 0x5f, 0x08, 0x64, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x67, 0x5f, 0x08, + 0x72, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x73, 0x20, 0x5b, + 0x2d, 0x2d, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x69, 0x64, 0x2d, 0x61, + 0x6c, 0x67, 0x6f, 0x20, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x6c, 0x5f, 0x08, + 0x67, 0x5f, 0x08, 0x6f, 0x5f, 0x08, 0x72, 0x5f, 0x08, 0x69, 0x5f, 0x08, + 0x74, 0x5f, 0x08, 0x68, 0x5f, 0x08, 0x6d, 0x20, 0x20, 0x5b, 0x2d, 0x2d, + 0x63, 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x69, 0x64, 0x2d, 0x64, 0x75, 0x6d, + 0x6d, 0x79, 0x2d, 0x73, 0x74, 0x61, 0x72, 0x73, 0x20, 0x20, 0x5f, 0x08, + 0x6e, 0x5f, 0x08, 0x75, 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x2d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x08, 0x73, 0x5f, 0x08, 0x74, + 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x72, 0x5f, 0x08, 0x73, 0x5d, 0x5d, 0x20, + 0x20, 0x5b, 0x2d, 0x2d, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x69, 0x64, + 0x2d, 0x6d, 0x61, 0x67, 0x2d, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, + 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x69, 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x2d, + 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x67, 0x5d, 0x20, 0x5b, + 0x2d, 0x2d, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x20, 0x5f, + 0x08, 0x66, 0x5f, 0x08, 0x69, 0x5f, 0x08, 0x6c, 0x5f, 0x08, 0x65, 0x5f, + 0x08, 0x6e, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x65, 0x5d, + 0x20, 0x5b, 0x2d, 0x2d, 0x73, 0x74, 0x61, 0x72, 0x2d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x64, 0x2d, 0x61, 0x6c, 0x67, 0x6f, + 0x20, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x6c, 0x5f, 0x08, 0x67, 0x5f, 0x08, + 0x6f, 0x20, 0x28, 0x2d, 0x2d, 0x67, 0x76, 0x2d, 0x74, 0x6f, 0x6c, 0x65, + 0x72, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x5f, 0x08, 0x64, 0x5f, 0x08, 0x65, + 0x5f, 0x08, 0x67, 0x5f, 0x08, 0x72, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x65, + 0x5f, 0x08, 0x73, 0x20, 0x7c, 0x20, 0x2d, 0x2d, 0x70, 0x79, 0x2d, 0x74, + 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x5f, 0x08, 0x64, + 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x67, 0x5f, 0x08, 0x72, 0x5f, 0x08, 0x65, + 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x73, 0x20, 0x20, 0x2d, 0x2d, 0x66, 0x61, + 0x6c, 0x73, 0x65, 0x2d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x73, 0x74, 0x61, 0x72, 0x73, 0x20, 0x20, 0x5f, 0x08, 0x6e, 0x5f, 0x08, + 0x75, 0x5f, 0x08, 0x6d, 0x20, 0x20, 0x2d, 0x2d, 0x6d, 0x61, 0x78, 0x2d, + 0x6d, 0x69, 0x73, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2d, 0x70, 0x72, 0x6f, + 0x62, 0x20, 0x20, 0x5f, 0x08, 0x70, 0x5f, 0x08, 0x72, 0x5f, 0x08, 0x6f, + 0x5f, 0x08, 0x62, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x62, 0x5f, 0x08, 0x69, + 0x5f, 0x08, 0x6c, 0x5f, 0x08, 0x69, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x79, + 0x29, 0x5d, 0x20, 0x20, 0x5b, 0x2d, 0x2d, 0x61, 0x74, 0x74, 0x69, 0x74, + 0x75, 0x64, 0x65, 0x2d, 0x61, 0x6c, 0x67, 0x6f, 0x20, 0x20, 0x5f, 0x08, + 0x61, 0x5f, 0x08, 0x6c, 0x5f, 0x08, 0x67, 0x5f, 0x08, 0x6f, 0x5d, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5b, 0x2d, 0x2d, 0x70, 0x6c, + 0x6f, 0x74, 0x20, 0x5f, 0x08, 0x6f, 0x5f, 0x08, 0x75, 0x5f, 0x08, 0x74, + 0x5f, 0x08, 0x70, 0x5f, 0x08, 0x75, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x2d, + 0x5f, 0x08, 0x70, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x68, + 0x5d, 0x08, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70, + 0x08, 0x70, 0x69, 0x08, 0x69, 0x70, 0x08, 0x70, 0x65, 0x08, 0x65, 0x6c, + 0x08, 0x6c, 0x69, 0x08, 0x69, 0x6e, 0x08, 0x6e, 0x65, 0x08, 0x65, 0x20, + 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x67, 0x08, 0x67, 0x65, 0x08, 0x65, + 0x6e, 0x08, 0x6e, 0x65, 0x08, 0x65, 0x72, 0x08, 0x72, 0x61, 0x08, 0x61, + 0x74, 0x08, 0x74, 0x65, 0x08, 0x65, 0x5b, 0x08, 0x5b, 0x3d, 0x08, 0x3d, + 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x75, 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x2d, + 0x5f, 0x08, 0x69, 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x67, + 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x73, 0x5d, 0x08, 0x5d, 0x20, 0x5b, 0x08, + 0x5b, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x68, 0x08, 0x68, 0x6f, 0x08, + 0x6f, 0x72, 0x08, 0x72, 0x69, 0x08, 0x69, 0x7a, 0x08, 0x7a, 0x6f, 0x08, + 0x6f, 0x6e, 0x08, 0x6e, 0x74, 0x08, 0x74, 0x61, 0x08, 0x61, 0x6c, 0x08, + 0x6c, 0x2d, 0x08, 0x2d, 0x72, 0x08, 0x72, 0x65, 0x08, 0x65, 0x73, 0x08, + 0x73, 0x20, 0x5f, 0x08, 0x72, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x73, 0x5d, + 0x08, 0x5d, 0x20, 0x5b, 0x08, 0x5b, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, + 0x76, 0x08, 0x76, 0x65, 0x08, 0x65, 0x72, 0x08, 0x72, 0x74, 0x08, 0x74, + 0x69, 0x08, 0x69, 0x63, 0x08, 0x63, 0x61, 0x08, 0x61, 0x6c, 0x08, 0x6c, + 0x2d, 0x08, 0x2d, 0x72, 0x08, 0x72, 0x65, 0x08, 0x65, 0x73, 0x08, 0x73, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x08, 0x72, 0x5f, + 0x08, 0x65, 0x5f, 0x08, 0x73, 0x5d, 0x08, 0x5d, 0x20, 0x5b, 0x08, 0x5b, + 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x68, 0x08, 0x68, 0x6f, 0x08, 0x6f, + 0x72, 0x08, 0x72, 0x69, 0x08, 0x69, 0x7a, 0x08, 0x7a, 0x6f, 0x08, 0x6f, + 0x6e, 0x08, 0x6e, 0x74, 0x08, 0x74, 0x61, 0x08, 0x61, 0x6c, 0x08, 0x6c, + 0x2d, 0x08, 0x2d, 0x66, 0x08, 0x66, 0x6f, 0x08, 0x6f, 0x76, 0x08, 0x76, + 0x20, 0x5f, 0x08, 0x64, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x67, 0x5f, 0x08, + 0x72, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x73, 0x5d, 0x08, + 0x5d, 0x20, 0x5b, 0x08, 0x5b, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x72, + 0x08, 0x72, 0x65, 0x08, 0x65, 0x66, 0x08, 0x66, 0x2d, 0x08, 0x2d, 0x62, + 0x08, 0x62, 0x72, 0x08, 0x72, 0x69, 0x08, 0x69, 0x67, 0x08, 0x67, 0x68, + 0x08, 0x68, 0x74, 0x08, 0x74, 0x6e, 0x08, 0x6e, 0x65, 0x08, 0x65, 0x73, + 0x08, 0x73, 0x73, 0x08, 0x73, 0x20, 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x61, + 0x5f, 0x08, 0x67, 0x5d, 0x08, 0x5d, 0x20, 0x5b, 0x08, 0x5b, 0x2d, 0x08, + 0x2d, 0x2d, 0x08, 0x2d, 0x73, 0x08, 0x73, 0x70, 0x08, 0x70, 0x72, 0x08, + 0x72, 0x65, 0x08, 0x65, 0x61, 0x08, 0x61, 0x64, 0x08, 0x64, 0x2d, 0x08, + 0x2d, 0x73, 0x08, 0x73, 0x74, 0x08, 0x74, 0x64, 0x08, 0x64, 0x64, 0x08, + 0x64, 0x65, 0x08, 0x65, 0x76, 0x08, 0x76, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x5f, 0x08, 0x73, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x64, + 0x5f, 0x08, 0x64, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x76, 0x5d, 0x08, 0x5d, + 0x20, 0x20, 0x5b, 0x08, 0x5b, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x6e, + 0x08, 0x6e, 0x6f, 0x08, 0x6f, 0x69, 0x08, 0x69, 0x73, 0x08, 0x73, 0x65, + 0x08, 0x65, 0x2d, 0x08, 0x2d, 0x73, 0x08, 0x73, 0x74, 0x08, 0x74, 0x64, + 0x08, 0x64, 0x64, 0x08, 0x64, 0x65, 0x08, 0x65, 0x76, 0x08, 0x76, 0x20, + 0x20, 0x5f, 0x08, 0x73, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x64, 0x5f, 0x08, + 0x64, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x76, 0x5d, 0x08, 0x5d, 0x20, 0x20, + 0x20, 0x5b, 0x08, 0x5b, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x62, 0x08, + 0x62, 0x6f, 0x08, 0x6f, 0x72, 0x08, 0x72, 0x65, 0x08, 0x65, 0x73, 0x08, + 0x73, 0x69, 0x08, 0x69, 0x67, 0x08, 0x67, 0x68, 0x08, 0x68, 0x74, 0x08, + 0x74, 0x2d, 0x08, 0x2d, 0x72, 0x08, 0x72, 0x69, 0x08, 0x69, 0x67, 0x08, + 0x67, 0x68, 0x08, 0x68, 0x74, 0x08, 0x74, 0x2d, 0x08, 0x2d, 0x61, 0x08, + 0x61, 0x73, 0x08, 0x73, 0x63, 0x08, 0x63, 0x20, 0x20, 0x20, 0x5f, 0x08, + 0x61, 0x5f, 0x08, 0x73, 0x5f, 0x08, 0x63, 0x5f, 0x08, 0x65, 0x5f, 0x08, + 0x6e, 0x5f, 0x08, 0x73, 0x5f, 0x08, 0x69, 0x5f, 0x08, 0x6f, 0x5f, 0x08, + 0x6e, 0x5d, 0x08, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x5b, 0x08, 0x5b, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x62, 0x08, 0x62, + 0x6f, 0x08, 0x6f, 0x72, 0x08, 0x72, 0x65, 0x08, 0x65, 0x73, 0x08, 0x73, + 0x69, 0x08, 0x69, 0x67, 0x08, 0x67, 0x68, 0x08, 0x68, 0x74, 0x08, 0x74, + 0x2d, 0x08, 0x2d, 0x64, 0x08, 0x64, 0x65, 0x08, 0x65, 0x63, 0x08, 0x63, + 0x20, 0x20, 0x5f, 0x08, 0x64, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x63, 0x5f, + 0x08, 0x6c, 0x5f, 0x08, 0x69, 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x61, 0x5f, + 0x08, 0x74, 0x5f, 0x08, 0x69, 0x5f, 0x08, 0x6f, 0x5f, 0x08, 0x6e, 0x5d, + 0x08, 0x5d, 0x20, 0x5b, 0x08, 0x5b, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, + 0x62, 0x08, 0x62, 0x6f, 0x08, 0x6f, 0x72, 0x08, 0x72, 0x65, 0x08, 0x65, + 0x73, 0x08, 0x73, 0x69, 0x08, 0x69, 0x67, 0x08, 0x67, 0x68, 0x08, 0x68, + 0x74, 0x08, 0x74, 0x2d, 0x08, 0x2d, 0x72, 0x08, 0x72, 0x6f, 0x08, 0x6f, + 0x6c, 0x08, 0x6c, 0x6c, 0x08, 0x6c, 0x20, 0x5f, 0x08, 0x72, 0x5f, 0x08, + 0x6f, 0x5f, 0x08, 0x6c, 0x5f, 0x08, 0x6c, 0x5d, 0x08, 0x5d, 0x20, 0x5b, + 0x08, 0x5b, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x63, 0x08, 0x63, 0x65, + 0x08, 0x65, 0x6e, 0x08, 0x6e, 0x74, 0x08, 0x74, 0x72, 0x08, 0x72, 0x6f, + 0x08, 0x6f, 0x69, 0x08, 0x69, 0x64, 0x08, 0x64, 0x2d, 0x08, 0x2d, 0x61, + 0x08, 0x61, 0x6c, 0x08, 0x6c, 0x67, 0x08, 0x67, 0x6f, 0x08, 0x6f, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x08, 0x61, 0x5f, 0x08, + 0x6c, 0x5f, 0x08, 0x67, 0x5f, 0x08, 0x6f, 0x5f, 0x08, 0x72, 0x5f, 0x08, + 0x69, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x68, 0x5f, 0x08, 0x6d, 0x20, 0x20, + 0x5b, 0x08, 0x5b, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x63, 0x08, 0x63, + 0x65, 0x08, 0x65, 0x6e, 0x08, 0x6e, 0x74, 0x08, 0x74, 0x72, 0x08, 0x72, + 0x6f, 0x08, 0x6f, 0x69, 0x08, 0x69, 0x64, 0x08, 0x64, 0x2d, 0x08, 0x2d, + 0x64, 0x08, 0x64, 0x75, 0x08, 0x75, 0x6d, 0x08, 0x6d, 0x6d, 0x08, 0x6d, + 0x79, 0x08, 0x79, 0x2d, 0x08, 0x2d, 0x73, 0x08, 0x73, 0x74, 0x08, 0x74, + 0x61, 0x08, 0x61, 0x72, 0x08, 0x72, 0x73, 0x08, 0x73, 0x20, 0x20, 0x5f, + 0x08, 0x6e, 0x5f, 0x08, 0x75, 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x2d, 0x5f, + 0x08, 0x73, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x72, 0x5f, + 0x08, 0x73, 0x5d, 0x08, 0x5d, 0x5d, 0x08, 0x5d, 0x20, 0x20, 0x5b, 0x08, + 0x5b, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x63, 0x08, 0x63, 0x65, 0x08, + 0x65, 0x6e, 0x08, 0x6e, 0x74, 0x08, 0x74, 0x72, 0x08, 0x72, 0x6f, 0x08, + 0x6f, 0x69, 0x08, 0x69, 0x64, 0x08, 0x64, 0x2d, 0x08, 0x2d, 0x6d, 0x08, + 0x6d, 0x61, 0x08, 0x61, 0x67, 0x08, 0x67, 0x2d, 0x08, 0x2d, 0x66, 0x08, + 0x66, 0x69, 0x08, 0x69, 0x6c, 0x08, 0x6c, 0x74, 0x08, 0x74, 0x65, 0x08, + 0x65, 0x72, 0x08, 0x72, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x69, 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x2d, + 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x67, 0x5d, 0x08, 0x5d, + 0x20, 0x5b, 0x08, 0x5b, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x64, 0x08, + 0x64, 0x61, 0x08, 0x61, 0x74, 0x08, 0x74, 0x61, 0x08, 0x61, 0x62, 0x08, + 0x62, 0x61, 0x08, 0x61, 0x73, 0x08, 0x73, 0x65, 0x08, 0x65, 0x20, 0x5f, + 0x08, 0x66, 0x5f, 0x08, 0x69, 0x5f, 0x08, 0x6c, 0x5f, 0x08, 0x65, 0x5f, + 0x08, 0x6e, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x65, 0x5d, + 0x08, 0x5d, 0x20, 0x5b, 0x08, 0x5b, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, + 0x73, 0x08, 0x73, 0x74, 0x08, 0x74, 0x61, 0x08, 0x61, 0x72, 0x08, 0x72, + 0x2d, 0x08, 0x2d, 0x69, 0x08, 0x69, 0x64, 0x08, 0x64, 0x2d, 0x08, 0x2d, + 0x61, 0x08, 0x61, 0x6c, 0x08, 0x6c, 0x67, 0x08, 0x67, 0x6f, 0x08, 0x6f, + 0x20, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x6c, 0x5f, 0x08, 0x67, 0x5f, 0x08, + 0x6f, 0x20, 0x28, 0x08, 0x28, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x67, + 0x08, 0x67, 0x76, 0x08, 0x76, 0x2d, 0x08, 0x2d, 0x74, 0x08, 0x74, 0x6f, + 0x08, 0x6f, 0x6c, 0x08, 0x6c, 0x65, 0x08, 0x65, 0x72, 0x08, 0x72, 0x61, + 0x08, 0x61, 0x6e, 0x08, 0x6e, 0x63, 0x08, 0x63, 0x65, 0x08, 0x65, 0x20, + 0x5f, 0x08, 0x64, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x2d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x08, 0x67, 0x5f, 0x08, 0x72, 0x5f, + 0x08, 0x65, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x73, 0x20, 0x7c, 0x08, 0x7c, + 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x70, 0x08, 0x70, 0x79, 0x08, + 0x79, 0x2d, 0x08, 0x2d, 0x74, 0x08, 0x74, 0x6f, 0x08, 0x6f, 0x6c, 0x08, + 0x6c, 0x65, 0x08, 0x65, 0x72, 0x08, 0x72, 0x61, 0x08, 0x61, 0x6e, 0x08, + 0x6e, 0x63, 0x08, 0x63, 0x65, 0x08, 0x65, 0x20, 0x5f, 0x08, 0x64, 0x5f, + 0x08, 0x65, 0x5f, 0x08, 0x67, 0x5f, 0x08, 0x72, 0x5f, 0x08, 0x65, 0x5f, + 0x08, 0x65, 0x5f, 0x08, 0x73, 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, + 0x2d, 0x66, 0x08, 0x66, 0x61, 0x08, 0x61, 0x6c, 0x08, 0x6c, 0x73, 0x08, + 0x73, 0x65, 0x08, 0x65, 0x2d, 0x08, 0x2d, 0x73, 0x08, 0x73, 0x74, 0x08, + 0x74, 0x61, 0x08, 0x61, 0x72, 0x08, 0x72, 0x73, 0x08, 0x73, 0x20, 0x20, + 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x75, 0x5f, 0x08, 0x6d, 0x20, 0x20, 0x2d, + 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x6d, 0x08, 0x6d, 0x61, 0x08, 0x61, 0x78, + 0x08, 0x78, 0x2d, 0x08, 0x2d, 0x6d, 0x08, 0x6d, 0x69, 0x08, 0x69, 0x73, + 0x08, 0x73, 0x6d, 0x08, 0x6d, 0x61, 0x08, 0x61, 0x74, 0x08, 0x74, 0x63, + 0x08, 0x63, 0x68, 0x08, 0x68, 0x2d, 0x08, 0x2d, 0x70, 0x08, 0x70, 0x72, + 0x08, 0x72, 0x6f, 0x08, 0x6f, 0x62, 0x08, 0x62, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x5f, 0x08, 0x70, 0x5f, 0x08, 0x72, 0x5f, 0x08, + 0x6f, 0x5f, 0x08, 0x62, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x62, 0x5f, 0x08, + 0x69, 0x5f, 0x08, 0x6c, 0x5f, 0x08, 0x69, 0x5f, 0x08, 0x74, 0x5f, 0x08, + 0x79, 0x20, 0x20, 0x7c, 0x08, 0x7c, 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, + 0x08, 0x2d, 0x70, 0x08, 0x70, 0x72, 0x08, 0x72, 0x65, 0x08, 0x65, 0x76, + 0x08, 0x76, 0x2d, 0x08, 0x2d, 0x61, 0x08, 0x61, 0x74, 0x08, 0x74, 0x74, + 0x08, 0x74, 0x69, 0x08, 0x69, 0x74, 0x08, 0x74, 0x75, 0x08, 0x75, 0x64, + 0x08, 0x64, 0x65, 0x08, 0x65, 0x20, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x74, + 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x69, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x75, + 0x5f, 0x08, 0x64, 0x5f, 0x08, 0x65, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, + 0x2d, 0x75, 0x08, 0x75, 0x6e, 0x08, 0x6e, 0x63, 0x08, 0x63, 0x65, 0x08, + 0x65, 0x72, 0x08, 0x72, 0x74, 0x08, 0x74, 0x61, 0x08, 0x61, 0x69, 0x08, + 0x69, 0x6e, 0x08, 0x6e, 0x74, 0x08, 0x74, 0x79, 0x08, 0x79, 0x20, 0x5f, + 0x08, 0x72, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x64, 0x5f, 0x08, 0x69, 0x5f, + 0x08, 0x75, 0x5f, 0x08, 0x73, 0x20, 0x28, 0x08, 0x28, 0x2d, 0x08, 0x2d, + 0x2d, 0x08, 0x2d, 0x74, 0x08, 0x74, 0x72, 0x08, 0x72, 0x61, 0x08, 0x61, + 0x63, 0x08, 0x63, 0x6b, 0x08, 0x6b, 0x2d, 0x08, 0x2d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x08, 0x69, 0x6e, 0x08, 0x6e, 0x67, + 0x08, 0x67, 0x2d, 0x08, 0x2d, 0x63, 0x08, 0x63, 0x6f, 0x08, 0x6f, 0x6d, + 0x08, 0x6d, 0x70, 0x08, 0x70, 0x61, 0x08, 0x61, 0x72, 0x08, 0x72, 0x65, + 0x08, 0x65, 0x2d, 0x08, 0x2d, 0x74, 0x08, 0x74, 0x68, 0x08, 0x68, 0x72, + 0x08, 0x72, 0x65, 0x08, 0x65, 0x73, 0x08, 0x73, 0x68, 0x08, 0x68, 0x6f, + 0x08, 0x6f, 0x6c, 0x08, 0x6c, 0x64, 0x08, 0x64, 0x20, 0x5f, 0x08, 0x74, + 0x5f, 0x08, 0x68, 0x5f, 0x08, 0x72, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x73, + 0x5f, 0x08, 0x68, 0x5f, 0x08, 0x6f, 0x5f, 0x08, 0x6c, 0x5f, 0x08, 0x64, + 0x29, 0x08, 0x29, 0x29, 0x08, 0x29, 0x5d, 0x08, 0x5d, 0x20, 0x5b, 0x08, + 0x5b, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x61, 0x08, 0x61, 0x74, 0x08, + 0x74, 0x74, 0x08, 0x74, 0x69, 0x08, 0x69, 0x74, 0x08, 0x74, 0x75, 0x08, + 0x75, 0x64, 0x08, 0x64, 0x65, 0x08, 0x65, 0x2d, 0x08, 0x2d, 0x61, 0x08, + 0x61, 0x6c, 0x08, 0x6c, 0x67, 0x08, 0x67, 0x6f, 0x08, 0x6f, 0x20, 0x5f, + 0x08, 0x61, 0x5f, 0x08, 0x6c, 0x5f, 0x08, 0x67, 0x5f, 0x08, 0x6f, 0x5d, + 0x08, 0x5d, 0x20, 0x5b, 0x08, 0x5b, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, + 0x70, 0x08, 0x70, 0x6c, 0x08, 0x6c, 0x6f, 0x08, 0x6f, 0x74, 0x08, 0x74, + 0x20, 0x20, 0x5f, 0x08, 0x6f, 0x5f, 0x08, 0x75, 0x5f, 0x08, 0x74, 0x5f, + 0x08, 0x2d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x08, + 0x70, 0x5f, 0x08, 0x75, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x2d, 0x5f, 0x08, + 0x70, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x68, 0x5d, 0x08, + 0x5d, 0x0a, 0x0a, 0x0a, 0x44, 0x08, 0x44, 0x45, 0x08, 0x45, 0x53, 0x08, + 0x53, 0x43, 0x08, 0x43, 0x52, 0x08, 0x52, 0x49, 0x08, 0x49, 0x50, 0x08, + 0x50, 0x54, 0x08, 0x54, 0x49, 0x08, 0x49, 0x4f, 0x08, 0x4f, 0x4e, 0x08, + 0x4e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70, 0x08, 0x70, + 0x69, 0x08, 0x69, 0x70, 0x08, 0x70, 0x65, 0x08, 0x65, 0x6c, 0x08, 0x6c, + 0x69, 0x08, 0x69, 0x6e, 0x08, 0x6e, 0x65, 0x08, 0x65, 0x20, 0x69, 0x73, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, + 0x20, 0x74, 0x6f, 0x20, 0x73, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x73, 0x74, + 0x61, 0x67, 0x65, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x73, 0x74, 0x61, 0x72, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x2d, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, + 0x65, 0x2e, 0x20, 0x41, 0x6e, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, + 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x74, 0x61, 0x6b, 0x65, 0x6e, + 0x20, 0x69, 0x6e, 0x20, 0x61, 0x73, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, + 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x5f, 0x08, 0x66, 0x5f, 0x08, 0x69, + 0x5f, 0x08, 0x6c, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x70, 0x5f, 0x08, 0x61, + 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x68, 0x2c, 0x20, 0x20, 0x6f, 0x72, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x28, 0x73, 0x29, 0x20, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x20, 0x62, 0x65, + 0x20, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, + 0x61, 0x63, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, + 0x20, 0x76, 0x61, 0x72, 0x69, 0x6f, 0x75, 0x73, 0x20, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x20, 0x54, 0x68, 0x65, + 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x66, 0x69, 0x76, 0x65, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, + 0x73, 0x74, 0x61, 0x67, 0x65, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x20, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x3a, + 0x20, 0x20, 0x2d, 0x2d, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x69, 0x64, + 0x2c, 0x20, 0x20, 0x2d, 0x2d, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x69, + 0x64, 0x2d, 0x6d, 0x61, 0x67, 0x2d, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x2d, 0x69, + 0x64, 0x2c, 0x20, 0x2d, 0x2d, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, + 0x65, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x2d, 0x2d, 0x61, 0x74, 0x74, + 0x69, 0x74, 0x75, 0x64, 0x65, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x2d, + 0x2d, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x69, 0x64, 0x20, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x68, 0x6f, 0x6f, 0x73, + 0x65, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x63, 0x65, 0x6e, 0x74, + 0x72, 0x6f, 0x69, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x6c, 0x67, 0x6f, + 0x72, 0x69, 0x74, 0x68, 0x6d, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, + 0x2c, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x2d, 0x2d, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x69, 0x64, 0x2d, 0x6d, + 0x61, 0x67, 0x2d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x75, 0x73, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x64, 0x69, + 0x64, 0x61, 0x74, 0x65, 0x20, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x69, + 0x64, 0x73, 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x77, 0x20, 0x61, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x65, 0x72, 0x74, 0x61, 0x69, + 0x6e, 0x20, 0x6d, 0x61, 0x67, 0x6e, 0x69, 0x74, 0x75, 0x64, 0x65, 0x2e, + 0x20, 0x54, 0x68, 0x65, 0x20, 0x2d, 0x2d, 0x64, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, + 0x65, 0x72, 0x20, 0x20, 0x74, 0x6f, 0x20, 0x20, 0x73, 0x70, 0x65, 0x63, + 0x69, 0x66, 0x69, 0x63, 0x79, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, + 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x20, + 0x20, 0x54, 0x68, 0x65, 0x20, 0x2d, 0x2d, 0x69, 0x64, 0x20, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x73, 0x74, 0x61, 0x72, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x2d, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x6c, 0x67, 0x6f, 0x72, + 0x69, 0x74, 0x68, 0x6d, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x2d, 0x2d, 0x61, 0x74, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, + 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x65, 0x74, 0x65, + 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6f, + 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x2d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x63, 0x75, 0x62, 0x65, 0x73, 0x61, 0x74, 0x20, 0x69, + 0x6e, 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, 0x0a, 0x0a, 0x0a, 0x20, + 0x20, 0x20, 0x4f, 0x08, 0x4f, 0x70, 0x08, 0x70, 0x74, 0x08, 0x74, 0x69, + 0x08, 0x69, 0x6f, 0x08, 0x6f, 0x6e, 0x08, 0x6e, 0x73, 0x08, 0x73, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, + 0x2d, 0x70, 0x08, 0x70, 0x6e, 0x08, 0x6e, 0x67, 0x08, 0x67, 0x20, 0x5f, + 0x08, 0x66, 0x5f, 0x08, 0x69, 0x5f, 0x08, 0x6c, 0x5f, 0x08, 0x65, 0x5f, + 0x08, 0x70, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x68, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x70, 0x6e, 0x67, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, + 0x6e, 0x20, 0x5f, 0x08, 0x66, 0x5f, 0x08, 0x69, 0x5f, 0x08, 0x6c, 0x5f, + 0x08, 0x65, 0x5f, 0x08, 0x70, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x74, 0x5f, + 0x08, 0x68, 0x2e, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x66, 0x08, 0x66, 0x6f, 0x08, + 0x6f, 0x63, 0x08, 0x63, 0x61, 0x08, 0x61, 0x6c, 0x08, 0x6c, 0x2d, 0x08, + 0x2d, 0x6c, 0x08, 0x6c, 0x65, 0x08, 0x65, 0x6e, 0x08, 0x6e, 0x67, 0x08, + 0x67, 0x74, 0x08, 0x74, 0x68, 0x08, 0x68, 0x20, 0x5f, 0x08, 0x6c, 0x5f, + 0x08, 0x65, 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x67, 0x5f, 0x08, 0x74, 0x5f, + 0x08, 0x68, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x63, + 0x61, 0x6c, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x6f, 0x66, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x20, + 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x6f, 0x6f, 0x6b, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x28, 0x69, + 0x6e, 0x20, 0x6d, 0x6d, 0x29, 0x2e, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x70, 0x08, + 0x70, 0x69, 0x08, 0x69, 0x78, 0x08, 0x78, 0x65, 0x08, 0x65, 0x6c, 0x08, + 0x6c, 0x2d, 0x08, 0x2d, 0x73, 0x08, 0x73, 0x69, 0x08, 0x69, 0x7a, 0x08, + 0x7a, 0x65, 0x08, 0x65, 0x20, 0x5f, 0x08, 0x73, 0x5f, 0x08, 0x69, 0x5f, + 0x08, 0x7a, 0x5f, 0x08, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x68, 0x65, 0x20, + 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x6f, + 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, + 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x6f, 0x6f, 0x6b, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x28, + 0x69, 0x6e, 0x20, 0x6d, 0x29, 0x2e, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x66, 0x08, + 0x66, 0x6f, 0x08, 0x6f, 0x76, 0x08, 0x76, 0x20, 0x5f, 0x08, 0x64, 0x5f, + 0x08, 0x65, 0x5f, 0x08, 0x67, 0x5f, 0x08, 0x72, 0x5f, 0x08, 0x65, 0x5f, + 0x08, 0x65, 0x5f, 0x08, 0x73, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x68, 0x65, 0x20, + 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x20, 0x6f, 0x66, 0x20, 0x20, + 0x76, 0x69, 0x65, 0x77, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, + 0x74, 0x6f, 0x6f, 0x6b, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x69, 0x63, + 0x74, 0x75, 0x72, 0x65, 0x20, 0x28, 0x69, 0x6e, 0x20, 0x64, 0x65, 0x2d, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x67, 0x72, 0x65, 0x65, 0x73, 0x29, 0x2e, 0x20, 0x44, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x32, + 0x30, 0x20, 0x64, 0x65, 0x67, 0x20, 0x69, 0x66, 0x20, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, + 0x63, 0x08, 0x63, 0x65, 0x08, 0x65, 0x6e, 0x08, 0x6e, 0x74, 0x08, 0x74, + 0x72, 0x08, 0x72, 0x6f, 0x08, 0x6f, 0x69, 0x08, 0x69, 0x64, 0x08, 0x64, + 0x2d, 0x08, 0x2d, 0x61, 0x08, 0x61, 0x6c, 0x08, 0x6c, 0x67, 0x08, 0x67, + 0x6f, 0x08, 0x6f, 0x20, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x6c, 0x5f, 0x08, + 0x67, 0x5f, 0x08, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x75, 0x6e, 0x73, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x6c, 0x5f, 0x08, + 0x67, 0x5f, 0x08, 0x6f, 0x20, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x69, + 0x64, 0x69, 0x6e, 0x67, 0x20, 0x20, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, + 0x74, 0x68, 0x6d, 0x2e, 0x20, 0x20, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, + 0x69, 0x7a, 0x65, 0x64, 0x20, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x20, 0x20, 0x61, 0x72, 0x65, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x75, + 0x6d, 0x6d, 0x79, 0x20, 0x20, 0x28, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, + 0x20, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x69, 0x64, 0x20, 0x61, 0x6c, + 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x29, 0x2c, 0x20, 0x63, 0x6f, + 0x67, 0x20, 0x28, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x20, 0x6f, 0x66, + 0x20, 0x67, 0x72, 0x61, 0x76, 0x69, 0x74, 0x79, 0x29, 0x2c, 0x20, 0x61, + 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x77, 0x63, 0x6f, 0x67, 0x20, 0x28, + 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x77, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x20, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x20, 0x6f, 0x66, 0x20, 0x67, 0x72, 0x61, 0x76, 0x69, 0x74, 0x79, + 0x29, 0x2e, 0x20, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, + 0x20, 0x74, 0x6f, 0x20, 0x64, 0x75, 0x6d, 0x6d, 0x79, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x69, 0x66, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, + 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x2e, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x63, 0x08, 0x63, 0x65, 0x08, 0x65, + 0x6e, 0x08, 0x6e, 0x74, 0x08, 0x74, 0x72, 0x08, 0x72, 0x6f, 0x08, 0x6f, + 0x69, 0x08, 0x69, 0x64, 0x08, 0x64, 0x2d, 0x08, 0x2d, 0x64, 0x08, 0x64, + 0x75, 0x08, 0x75, 0x6d, 0x08, 0x6d, 0x6d, 0x08, 0x6d, 0x79, 0x08, 0x79, + 0x2d, 0x08, 0x2d, 0x73, 0x08, 0x73, 0x74, 0x08, 0x74, 0x61, 0x08, 0x61, + 0x72, 0x08, 0x72, 0x73, 0x08, 0x73, 0x20, 0x5f, 0x08, 0x6e, 0x5f, 0x08, + 0x75, 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x2d, 0x5f, 0x08, 0x73, 0x5f, 0x08, + 0x74, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x72, 0x5f, 0x08, 0x73, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x52, 0x75, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x75, + 0x6d, 0x6d, 0x79, 0x20, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x69, 0x64, + 0x69, 0x6e, 0x67, 0x20, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, + 0x6d, 0x20, 0x28, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x20, 0x63, 0x65, + 0x6e, 0x74, 0x72, 0x6f, 0x69, 0x64, 0x20, 0x61, 0x6c, 0x67, 0x6f, 0x72, + 0x69, 0x74, 0x68, 0x6d, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x74, 0x68, + 0x20, 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x75, 0x5f, 0x08, 0x6d, 0x5f, 0x08, + 0x2d, 0x5f, 0x08, 0x73, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x61, 0x5f, 0x08, + 0x72, 0x5f, 0x08, 0x73, 0x20, 0x73, 0x74, 0x61, 0x72, 0x73, 0x20, 0x63, + 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x69, 0x64, 0x65, 0x64, 0x2e, 0x20, 0x44, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x35, + 0x20, 0x69, 0x66, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, + 0x73, 0x20, 0x20, 0x6e, 0x6f, 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x63, 0x08, + 0x63, 0x65, 0x08, 0x65, 0x6e, 0x08, 0x6e, 0x74, 0x08, 0x74, 0x72, 0x08, + 0x72, 0x6f, 0x08, 0x6f, 0x69, 0x08, 0x69, 0x64, 0x08, 0x64, 0x2d, 0x08, + 0x2d, 0x6d, 0x08, 0x6d, 0x61, 0x08, 0x61, 0x67, 0x08, 0x67, 0x2d, 0x08, + 0x2d, 0x66, 0x08, 0x66, 0x69, 0x08, 0x69, 0x6c, 0x08, 0x6c, 0x74, 0x08, + 0x74, 0x65, 0x08, 0x65, 0x72, 0x08, 0x72, 0x20, 0x5f, 0x08, 0x6d, 0x5f, + 0x08, 0x69, 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x2d, 0x5f, 0x08, 0x6d, 0x5f, + 0x08, 0x61, 0x5f, 0x08, 0x67, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x57, 0x69, 0x6c, 0x6c, + 0x20, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x64, + 0x65, 0x72, 0x20, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x20, 0x61, 0x73, 0x20, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x69, 0x64, + 0x20, 0x69, 0x66, 0x20, 0x69, 0x74, 0x73, 0x20, 0x6d, 0x61, 0x67, 0x6e, + 0x69, 0x74, 0x75, 0x64, 0x65, 0x20, 0x69, 0x73, 0x20, 0x62, 0x65, 0x2d, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x5f, 0x08, 0x6d, 0x5f, 0x08, + 0x69, 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x2d, 0x5f, 0x08, 0x6d, 0x5f, 0x08, + 0x61, 0x5f, 0x08, 0x67, 0x2e, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x73, 0x08, 0x73, + 0x74, 0x08, 0x74, 0x61, 0x08, 0x61, 0x72, 0x08, 0x72, 0x2d, 0x08, 0x2d, + 0x69, 0x08, 0x69, 0x64, 0x08, 0x64, 0x2d, 0x08, 0x2d, 0x61, 0x08, 0x61, + 0x6c, 0x08, 0x6c, 0x67, 0x08, 0x67, 0x6f, 0x08, 0x6f, 0x20, 0x5f, 0x08, + 0x61, 0x5f, 0x08, 0x6c, 0x5f, 0x08, 0x67, 0x5f, 0x08, 0x6f, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x52, 0x75, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x5f, 0x08, + 0x61, 0x5f, 0x08, 0x6c, 0x5f, 0x08, 0x67, 0x5f, 0x08, 0x6f, 0x20, 0x73, + 0x74, 0x61, 0x72, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x6c, 0x67, 0x6f, 0x72, + 0x69, 0x74, 0x68, 0x6d, 0x2e, 0x20, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x74, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x61, 0x72, + 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x22, 0x64, 0x75, 0x6d, 0x6d, 0x79, 0x22, 0x2c, + 0x20, 0x20, 0x22, 0x67, 0x76, 0x22, 0x2c, 0x20, 0x22, 0x70, 0x79, 0x72, + 0x61, 0x6d, 0x69, 0x64, 0x22, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x22, + 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x22, 0x2e, 0x20, 0x44, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x22, + 0x70, 0x79, 0x72, 0x61, 0x6d, 0x69, 0x64, 0x22, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, + 0x66, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, + 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, + 0x2e, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, + 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x61, 0x08, 0x61, 0x6e, 0x08, 0x6e, 0x67, + 0x08, 0x67, 0x75, 0x08, 0x75, 0x6c, 0x08, 0x6c, 0x61, 0x08, 0x61, 0x72, + 0x08, 0x72, 0x2d, 0x08, 0x2d, 0x74, 0x08, 0x74, 0x6f, 0x08, 0x6f, 0x6c, + 0x08, 0x6c, 0x65, 0x08, 0x65, 0x72, 0x08, 0x72, 0x61, 0x08, 0x61, 0x6e, + 0x08, 0x6e, 0x63, 0x08, 0x63, 0x65, 0x08, 0x65, 0x20, 0x5b, 0x5f, 0x08, + 0x74, 0x5f, 0x08, 0x6f, 0x5f, 0x08, 0x6c, 0x5f, 0x08, 0x65, 0x5f, 0x08, + 0x72, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x63, 0x5f, 0x08, + 0x65, 0x5d, 0x20, 0x53, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x20, 0x61, 0x6e, + 0x67, 0x75, 0x6c, 0x61, 0x72, 0x20, 0x20, 0x63, 0x65, 0x6e, 0x74, 0x72, + 0x6f, 0x69, 0x64, 0x69, 0x6e, 0x67, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x74, 0x6f, 0x6c, 0x65, + 0x72, 0x61, 0x6e, 0x63, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x73, 0x65, + 0x64, 0x20, 0x20, 0x69, 0x6e, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x73, + 0x74, 0x61, 0x72, 0x20, 0x69, 0x64, 0x20, 0x61, 0x6c, 0x67, 0x6f, 0x72, + 0x69, 0x74, 0x68, 0x6d, 0x73, 0x2c, 0x20, 0x74, 0x6f, 0x20, 0x5f, 0x08, + 0x74, 0x5f, 0x08, 0x6f, 0x5f, 0x08, 0x6c, 0x5f, 0x08, 0x65, 0x5f, 0x08, + 0x72, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x63, 0x5f, 0x08, + 0x65, 0x20, 0x64, 0x65, 0x67, 0x72, 0x65, 0x65, 0x73, 0x2e, 0x20, 0x44, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6f, + 0x20, 0x30, 0x2e, 0x30, 0x34, 0x20, 0x64, 0x65, 0x67, 0x72, 0x65, 0x65, + 0x73, 0x2e, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x66, 0x08, 0x66, 0x61, 0x08, 0x61, + 0x6c, 0x08, 0x6c, 0x73, 0x08, 0x73, 0x65, 0x08, 0x65, 0x2d, 0x08, 0x2d, + 0x73, 0x08, 0x73, 0x74, 0x08, 0x74, 0x61, 0x08, 0x61, 0x72, 0x08, 0x72, + 0x73, 0x08, 0x73, 0x20, 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x75, 0x5f, 0x08, + 0x6d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x75, 0x5f, 0x08, + 0x6d, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x73, 0x74, + 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x20, 0x6f, 0x66, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x20, 0x73, + 0x74, 0x61, 0x72, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x20, 0x77, 0x68, 0x6f, 0x6c, 0x65, 0x20, 0x20, 0x73, 0x70, 0x68, 0x65, + 0x72, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x20, 0x70, 0x79, 0x72, 0x61, 0x6d, 0x69, 0x64, 0x20, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x65, 0x20, 0x73, 0x74, 0x61, 0x72, 0x20, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x2e, + 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x74, 0x6f, 0x20, 0x35, 0x30, 0x30, 0x20, 0x69, 0x66, 0x20, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, + 0x2d, 0x6d, 0x08, 0x6d, 0x61, 0x08, 0x61, 0x78, 0x08, 0x78, 0x2d, 0x08, + 0x2d, 0x6d, 0x08, 0x6d, 0x69, 0x08, 0x69, 0x73, 0x08, 0x73, 0x6d, 0x08, + 0x6d, 0x61, 0x08, 0x61, 0x74, 0x08, 0x74, 0x63, 0x08, 0x63, 0x68, 0x08, + 0x68, 0x2d, 0x08, 0x2d, 0x70, 0x08, 0x70, 0x72, 0x08, 0x72, 0x6f, 0x08, + 0x6f, 0x62, 0x08, 0x62, 0x20, 0x5f, 0x08, 0x70, 0x5f, 0x08, 0x72, 0x5f, + 0x08, 0x6f, 0x5f, 0x08, 0x62, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x62, 0x5f, + 0x08, 0x69, 0x5f, 0x08, 0x6c, 0x5f, 0x08, 0x69, 0x5f, 0x08, 0x74, 0x5f, + 0x08, 0x79, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x08, 0x70, 0x5f, 0x08, 0x72, 0x5f, + 0x08, 0x6f, 0x5f, 0x08, 0x62, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x62, 0x5f, + 0x08, 0x69, 0x5f, 0x08, 0x6c, 0x5f, 0x08, 0x69, 0x5f, 0x08, 0x74, 0x5f, + 0x08, 0x79, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x61, + 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, + 0x62, 0x6c, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x6e, 0x20, 0x69, 0x6e, + 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x74, + 0x61, 0x72, 0x20, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x20, 0x66, 0x6f, 0x72, + 0x20, 0x20, 0x73, 0x74, 0x61, 0x72, 0x20, 0x69, 0x64, 0x20, 0x61, 0x6c, + 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x73, 0x20, 0x77, 0x68, 0x69, + 0x63, 0x68, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x69, + 0x74, 0x2e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x73, 0x20, 0x74, 0x6f, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x31, 0x2e, 0x0a, + 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, + 0x2d, 0x08, 0x2d, 0x70, 0x08, 0x70, 0x72, 0x08, 0x72, 0x65, 0x08, 0x65, + 0x76, 0x08, 0x76, 0x2d, 0x08, 0x2d, 0x61, 0x08, 0x61, 0x74, 0x08, 0x74, + 0x74, 0x08, 0x74, 0x69, 0x08, 0x69, 0x74, 0x08, 0x74, 0x75, 0x08, 0x75, + 0x64, 0x08, 0x64, 0x65, 0x08, 0x65, 0x20, 0x5f, 0x08, 0x61, 0x5f, 0x08, + 0x74, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x69, 0x5f, 0x08, 0x74, 0x5f, 0x08, + 0x75, 0x5f, 0x08, 0x64, 0x5f, 0x08, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x08, + 0x61, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x69, 0x5f, 0x08, + 0x74, 0x5f, 0x08, 0x75, 0x5f, 0x08, 0x64, 0x5f, 0x08, 0x65, 0x20, 0x69, + 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x20, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, + 0x20, 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x20, 0x20, + 0x61, 0x74, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x20, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x20, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, + 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x2e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x53, 0x68, 0x6f, + 0x75, 0x6c, 0x64, 0x20, 0x20, 0x67, 0x69, 0x76, 0x65, 0x20, 0x20, 0x72, + 0x61, 0x2c, 0x20, 0x20, 0x64, 0x65, 0x63, 0x2c, 0x20, 0x20, 0x61, 0x6e, + 0x64, 0x20, 0x20, 0x72, 0x6f, 0x6c, 0x6c, 0x20, 0x20, 0x61, 0x73, 0x20, + 0x20, 0x61, 0x20, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x2d, 0x73, 0x65, + 0x70, 0x61, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x6c, 0x69, 0x73, 0x74, + 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, 0x61, 0x2c, 0x64, 0x65, 0x63, 0x2c, + 0x72, 0x6f, 0x6c, 0x6c, 0x2e, 0x22, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x75, 0x08, + 0x75, 0x6e, 0x08, 0x6e, 0x63, 0x08, 0x63, 0x65, 0x08, 0x65, 0x72, 0x08, + 0x72, 0x74, 0x08, 0x74, 0x61, 0x08, 0x61, 0x69, 0x08, 0x69, 0x6e, 0x08, + 0x6e, 0x74, 0x08, 0x74, 0x79, 0x08, 0x79, 0x20, 0x5f, 0x08, 0x72, 0x5f, + 0x08, 0x61, 0x5f, 0x08, 0x64, 0x5f, 0x08, 0x69, 0x5f, 0x08, 0x75, 0x5f, + 0x08, 0x73, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x74, 0x72, 0x61, + 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x2e, 0x20, + 0x5f, 0x08, 0x72, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x64, 0x5f, 0x08, 0x69, + 0x5f, 0x08, 0x75, 0x5f, 0x08, 0x73, 0x20, 0x67, 0x69, 0x76, 0x65, 0x73, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, + 0x79, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x20, + 0x6d, 0x75, 0x63, 0x68, 0x20, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x76, 0x69, 0x65, + 0x77, 0x20, 0x63, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x68, 0x61, 0x76, 0x65, + 0x20, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x20, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x35, 0x20, + 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x74, 0x08, 0x74, 0x72, + 0x08, 0x72, 0x61, 0x08, 0x61, 0x63, 0x08, 0x63, 0x6b, 0x08, 0x6b, 0x69, + 0x08, 0x69, 0x6e, 0x08, 0x6e, 0x67, 0x08, 0x67, 0x2d, 0x08, 0x2d, 0x63, + 0x08, 0x63, 0x6f, 0x08, 0x6f, 0x6d, 0x08, 0x6d, 0x70, 0x08, 0x70, 0x61, + 0x08, 0x61, 0x72, 0x08, 0x72, 0x65, 0x08, 0x65, 0x2d, 0x08, 0x2d, 0x74, + 0x08, 0x74, 0x68, 0x08, 0x68, 0x72, 0x08, 0x72, 0x65, 0x08, 0x65, 0x73, + 0x08, 0x73, 0x68, 0x08, 0x68, 0x6f, 0x08, 0x6f, 0x6c, 0x08, 0x6c, 0x64, + 0x08, 0x64, 0x20, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x68, 0x5f, 0x08, 0x72, + 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x73, 0x5f, 0x08, 0x68, 0x5f, 0x08, 0x6f, + 0x5f, 0x08, 0x6c, 0x5f, 0x08, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x08, 0x74, + 0x5f, 0x08, 0x68, 0x5f, 0x08, 0x72, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x73, + 0x5f, 0x08, 0x68, 0x5f, 0x08, 0x6f, 0x5f, 0x08, 0x6c, 0x5f, 0x08, 0x64, + 0x20, 0x20, 0x69, 0x73, 0x20, 0x20, 0x74, 0x68, 0x65, 0x20, 0x20, 0x74, + 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x20, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x20, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, + 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x6f, + 0x64, 0x65, 0x2e, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, + 0x20, 0x74, 0x6f, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x30, 0x31, 0x20, 0x69, + 0x66, 0x20, 0x6e, 0x6f, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x69, + 0x73, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x2e, 0x0a, 0x0a, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, + 0x61, 0x08, 0x61, 0x74, 0x08, 0x74, 0x74, 0x08, 0x74, 0x69, 0x08, 0x69, + 0x74, 0x08, 0x74, 0x75, 0x08, 0x75, 0x64, 0x08, 0x64, 0x65, 0x08, 0x65, + 0x2d, 0x08, 0x2d, 0x61, 0x08, 0x61, 0x6c, 0x08, 0x6c, 0x67, 0x08, 0x67, + 0x6f, 0x08, 0x6f, 0x20, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x6c, 0x5f, 0x08, + 0x67, 0x5f, 0x08, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x75, 0x6e, 0x73, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x6c, 0x5f, 0x08, + 0x67, 0x5f, 0x08, 0x6f, 0x20, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, + 0x68, 0x6d, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, + 0x74, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x20, 0x73, 0x74, 0x61, 0x67, + 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x20, 0x70, 0x69, + 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x2e, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x22, 0x64, 0x71, 0x6d, 0x22, 0x20, + 0x28, 0x44, 0x61, 0x76, 0x65, 0x6e, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x51, + 0x29, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x22, 0x74, 0x72, 0x69, 0x61, 0x64, + 0x22, 0x2e, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x20, + 0x74, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x71, 0x6d, 0x2e, 0x0a, 0x0a, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, + 0x2d, 0x67, 0x08, 0x67, 0x65, 0x08, 0x65, 0x6e, 0x08, 0x6e, 0x65, 0x08, + 0x65, 0x72, 0x08, 0x72, 0x61, 0x08, 0x61, 0x74, 0x08, 0x74, 0x65, 0x08, + 0x65, 0x5b, 0x3d, 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x75, 0x5f, 0x08, 0x6d, + 0x5f, 0x08, 0x2d, 0x5f, 0x08, 0x69, 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x61, + 0x5f, 0x08, 0x67, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x73, 0x5d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x73, 0x20, 0x5f, + 0x08, 0x6e, 0x5f, 0x08, 0x75, 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x2d, 0x5f, + 0x08, 0x69, 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x67, 0x5f, + 0x08, 0x65, 0x5f, 0x08, 0x73, 0x20, 0x6d, 0x61, 0x6e, 0x79, 0x20, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x20, 0x4d, 0x75, 0x74, 0x75, 0x61, + 0x6c, 0x6c, 0x79, 0x20, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, + 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, + 0x2d, 0x70, 0x08, 0x70, 0x6e, 0x08, 0x6e, 0x67, 0x08, 0x67, 0x2e, 0x0a, + 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, + 0x2d, 0x08, 0x2d, 0x67, 0x08, 0x67, 0x65, 0x08, 0x65, 0x6e, 0x08, 0x6e, + 0x65, 0x08, 0x65, 0x72, 0x08, 0x72, 0x61, 0x08, 0x61, 0x74, 0x08, 0x74, + 0x65, 0x08, 0x65, 0x2d, 0x08, 0x2d, 0x78, 0x08, 0x78, 0x2d, 0x08, 0x2d, + 0x72, 0x08, 0x72, 0x65, 0x08, 0x65, 0x73, 0x08, 0x73, 0x6f, 0x08, 0x6f, + 0x6c, 0x08, 0x6c, 0x75, 0x08, 0x75, 0x74, 0x08, 0x74, 0x69, 0x08, 0x69, + 0x6f, 0x08, 0x6f, 0x6e, 0x08, 0x6e, 0x20, 0x5f, 0x08, 0x70, 0x5f, 0x08, + 0x69, 0x5f, 0x08, 0x78, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x6c, 0x5f, 0x08, + 0x73, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x53, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x20, + 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, + 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x28, 0x73, 0x29, + 0x20, 0x74, 0x6f, 0x20, 0x5f, 0x08, 0x70, 0x5f, 0x08, 0x69, 0x5f, 0x08, + 0x78, 0x5f, 0x08, 0x2d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x08, 0x65, 0x5f, 0x08, + 0x6c, 0x5f, 0x08, 0x73, 0x2e, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x31, 0x30, 0x32, 0x34, 0x2e, 0x0a, + 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, + 0x2d, 0x08, 0x2d, 0x67, 0x08, 0x67, 0x65, 0x08, 0x65, 0x6e, 0x08, 0x6e, + 0x65, 0x08, 0x65, 0x72, 0x08, 0x72, 0x61, 0x08, 0x61, 0x74, 0x08, 0x74, + 0x65, 0x08, 0x65, 0x2d, 0x08, 0x2d, 0x79, 0x08, 0x79, 0x2d, 0x08, 0x2d, + 0x72, 0x08, 0x72, 0x65, 0x08, 0x65, 0x73, 0x08, 0x73, 0x6f, 0x08, 0x6f, + 0x6c, 0x08, 0x6c, 0x75, 0x08, 0x75, 0x74, 0x08, 0x74, 0x69, 0x08, 0x69, + 0x6f, 0x08, 0x6f, 0x6e, 0x08, 0x6e, 0x20, 0x5f, 0x08, 0x70, 0x5f, 0x08, + 0x69, 0x5f, 0x08, 0x78, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x6c, 0x5f, 0x08, + 0x73, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x53, 0x65, 0x74, 0x73, 0x20, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x20, 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x20, + 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, + 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x28, 0x73, 0x29, + 0x20, 0x74, 0x6f, 0x20, 0x5f, 0x08, 0x70, 0x5f, 0x08, 0x69, 0x5f, 0x08, + 0x78, 0x5f, 0x08, 0x2d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x08, 0x65, 0x5f, 0x08, + 0x6c, 0x5f, 0x08, 0x73, 0x2e, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x31, 0x30, 0x32, 0x34, 0x2e, 0x0a, + 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, + 0x2d, 0x08, 0x2d, 0x67, 0x08, 0x67, 0x65, 0x08, 0x65, 0x6e, 0x08, 0x6e, + 0x65, 0x08, 0x65, 0x72, 0x08, 0x72, 0x61, 0x08, 0x61, 0x74, 0x08, 0x74, + 0x65, 0x08, 0x65, 0x2d, 0x08, 0x2d, 0x72, 0x08, 0x72, 0x65, 0x08, 0x65, + 0x66, 0x08, 0x66, 0x65, 0x08, 0x65, 0x72, 0x08, 0x72, 0x65, 0x08, 0x65, + 0x6e, 0x08, 0x6e, 0x63, 0x08, 0x63, 0x65, 0x08, 0x65, 0x2d, 0x08, 0x2d, + 0x62, 0x08, 0x62, 0x72, 0x08, 0x72, 0x69, 0x08, 0x69, 0x67, 0x08, 0x67, + 0x68, 0x08, 0x68, 0x74, 0x08, 0x74, 0x6e, 0x08, 0x6e, 0x65, 0x08, 0x65, + 0x73, 0x08, 0x73, 0x73, 0x08, 0x73, 0x20, 0x5f, 0x08, 0x6f, 0x5f, 0x08, + 0x62, 0x5f, 0x08, 0x73, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x72, 0x5f, 0x08, + 0x76, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x64, 0x5f, 0x08, 0x2d, 0x5f, 0x08, + 0x62, 0x5f, 0x08, 0x72, 0x5f, 0x08, 0x69, 0x5f, 0x08, 0x67, 0x5f, 0x08, + 0x68, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x65, 0x5f, 0x08, + 0x73, 0x5f, 0x08, 0x73, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x20, 0x73, 0x74, 0x61, + 0x72, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6d, 0x61, 0x67, 0x6e, 0x69, + 0x74, 0x75, 0x64, 0x65, 0x20, 0x30, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, + 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x20, 0x68, 0x61, 0x76, 0x65, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x62, 0x72, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x65, 0x73, 0x73, + 0x20, 0x20, 0x5f, 0x08, 0x6f, 0x5f, 0x08, 0x62, 0x5f, 0x08, 0x73, 0x5f, + 0x08, 0x65, 0x5f, 0x08, 0x72, 0x5f, 0x08, 0x76, 0x5f, 0x08, 0x65, 0x5f, + 0x08, 0x64, 0x5f, 0x08, 0x2d, 0x5f, 0x08, 0x62, 0x5f, 0x08, 0x72, 0x5f, + 0x08, 0x69, 0x5f, 0x08, 0x67, 0x5f, 0x08, 0x68, 0x5f, 0x08, 0x74, 0x5f, + 0x08, 0x6e, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x73, 0x5f, 0x08, 0x73, 0x2e, + 0x20, 0x20, 0x41, 0x6e, 0x20, 0x20, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x64, 0x20, 0x20, 0x62, 0x72, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x65, + 0x73, 0x73, 0x20, 0x20, 0x6f, 0x66, 0x20, 0x31, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, + 0x75, 0x6c, 0x6c, 0x79, 0x20, 0x73, 0x61, 0x74, 0x75, 0x72, 0x61, 0x74, + 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, + 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, + 0x61, 0x72, 0x20, 0x20, 0x28, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, + 0x65, 0x6c, 0x79, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x77, 0x68, 0x69, 0x74, 0x65, 0x29, + 0x2e, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x74, + 0x6f, 0x20, 0x31, 0x30, 0x30, 0x2e, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x67, 0x08, + 0x67, 0x65, 0x08, 0x65, 0x6e, 0x08, 0x6e, 0x65, 0x08, 0x65, 0x72, 0x08, + 0x72, 0x61, 0x08, 0x61, 0x74, 0x08, 0x74, 0x65, 0x08, 0x65, 0x2d, 0x08, + 0x2d, 0x73, 0x08, 0x73, 0x70, 0x08, 0x70, 0x72, 0x08, 0x72, 0x65, 0x08, + 0x65, 0x61, 0x08, 0x61, 0x64, 0x08, 0x64, 0x2d, 0x08, 0x2d, 0x73, 0x08, + 0x73, 0x74, 0x08, 0x74, 0x64, 0x08, 0x64, 0x64, 0x08, 0x64, 0x65, 0x08, + 0x65, 0x76, 0x08, 0x76, 0x20, 0x5f, 0x08, 0x73, 0x5f, 0x08, 0x74, 0x5f, + 0x08, 0x64, 0x5f, 0x08, 0x64, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x76, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x53, 0x65, 0x74, 0x73, 0x20, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x64, 0x65, 0x76, + 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x47, 0x61, 0x75, 0x73, 0x73, 0x69, 0x61, 0x6e, 0x20, 0x64, + 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x77, 0x65, 0x20, 0x75, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6f, 0x20, + 0x61, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x70, 0x68, 0x6f, 0x74, + 0x6f, 0x6e, 0x73, 0x20, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, + 0x64, 0x20, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x20, 0x65, 0x61, 0x63, + 0x68, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x73, 0x74, 0x61, 0x72, 0x2e, 0x20, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x31, 0x2e, + 0x30, 0x2e, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x67, 0x08, 0x67, 0x65, 0x08, 0x65, + 0x6e, 0x08, 0x6e, 0x65, 0x08, 0x65, 0x72, 0x08, 0x72, 0x61, 0x08, 0x61, + 0x74, 0x08, 0x74, 0x65, 0x08, 0x65, 0x2d, 0x08, 0x2d, 0x73, 0x08, 0x73, + 0x68, 0x08, 0x68, 0x6f, 0x08, 0x6f, 0x74, 0x08, 0x74, 0x2d, 0x08, 0x2d, + 0x6e, 0x08, 0x6e, 0x6f, 0x08, 0x6f, 0x69, 0x08, 0x69, 0x73, 0x08, 0x73, + 0x65, 0x08, 0x65, 0x20, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x72, 0x5f, 0x08, + 0x75, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x7c, 0x5f, 0x08, 0x66, 0x5f, 0x08, + 0x61, 0x5f, 0x08, 0x6c, 0x5f, 0x08, 0x73, 0x5f, 0x08, 0x65, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x20, 0x20, 0x6f, 0x72, + 0x20, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x20, 0x73, + 0x68, 0x6f, 0x74, 0x20, 0x6e, 0x6f, 0x69, 0x73, 0x65, 0x20, 0x73, 0x69, + 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x6e, 0x20, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x73, 0x2e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x72, 0x75, 0x65, + 0x2e, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, + 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x67, 0x08, 0x67, 0x65, 0x08, 0x65, 0x6e, + 0x08, 0x6e, 0x65, 0x08, 0x65, 0x72, 0x08, 0x72, 0x61, 0x08, 0x61, 0x74, + 0x08, 0x74, 0x65, 0x08, 0x65, 0x2d, 0x08, 0x2d, 0x64, 0x08, 0x64, 0x61, + 0x08, 0x61, 0x72, 0x08, 0x72, 0x6b, 0x08, 0x6b, 0x2d, 0x08, 0x2d, 0x63, + 0x08, 0x63, 0x75, 0x08, 0x75, 0x72, 0x08, 0x72, 0x72, 0x08, 0x72, 0x65, + 0x08, 0x65, 0x6e, 0x08, 0x6e, 0x74, 0x08, 0x74, 0x20, 0x5f, 0x08, 0x6e, + 0x5f, 0x08, 0x6f, 0x5f, 0x08, 0x69, 0x5f, 0x08, 0x73, 0x5f, 0x08, 0x65, + 0x5f, 0x08, 0x2d, 0x5f, 0x08, 0x6c, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x76, + 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x53, 0x65, 0x74, + 0x20, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x20, 0x62, 0x72, + 0x69, 0x67, 0x68, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x20, 0x6f, 0x66, 0x20, + 0x64, 0x61, 0x72, 0x6b, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, + 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x2c, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x30, 0x20, 0x28, 0x6e, + 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x64, 0x61, 0x72, 0x6b, 0x20, 0x20, 0x6e, 0x6f, + 0x69, 0x73, 0x65, 0x29, 0x20, 0x20, 0x74, 0x6f, 0x20, 0x31, 0x20, 0x28, + 0x77, 0x68, 0x6f, 0x6c, 0x65, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, + 0x70, 0x75, 0x72, 0x65, 0x20, 0x77, 0x68, 0x69, 0x74, 0x65, 0x29, 0x2e, + 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x74, 0x6f, + 0x20, 0x30, 0x2e, 0x31, 0x2e, 0x20, 0x63, 0x66, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, + 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x67, 0x08, 0x67, 0x65, 0x08, 0x65, 0x6e, + 0x08, 0x6e, 0x65, 0x08, 0x65, 0x72, 0x08, 0x72, 0x61, 0x08, 0x61, 0x74, + 0x08, 0x74, 0x65, 0x08, 0x65, 0x2d, 0x08, 0x2d, 0x73, 0x08, 0x73, 0x65, + 0x08, 0x65, 0x6e, 0x08, 0x6e, 0x73, 0x08, 0x73, 0x69, 0x08, 0x69, 0x74, + 0x08, 0x74, 0x69, 0x08, 0x69, 0x76, 0x08, 0x76, 0x69, 0x08, 0x69, 0x74, + 0x08, 0x74, 0x79, 0x08, 0x79, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x20, 0x73, 0x68, 0x6f, 0x74, 0x20, 0x6e, 0x6f, + 0x69, 0x73, 0x65, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, + 0x79, 0x2e, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x67, 0x08, 0x67, 0x65, 0x08, 0x65, + 0x6e, 0x08, 0x6e, 0x65, 0x08, 0x65, 0x72, 0x08, 0x72, 0x61, 0x08, 0x61, + 0x74, 0x08, 0x74, 0x65, 0x08, 0x65, 0x2d, 0x08, 0x2d, 0x73, 0x08, 0x73, + 0x65, 0x08, 0x65, 0x6e, 0x08, 0x6e, 0x73, 0x08, 0x73, 0x69, 0x08, 0x69, + 0x74, 0x08, 0x74, 0x69, 0x08, 0x69, 0x76, 0x08, 0x76, 0x69, 0x08, 0x69, + 0x74, 0x08, 0x74, 0x79, 0x08, 0x79, 0x20, 0x5f, 0x08, 0x73, 0x5f, 0x08, + 0x65, 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x73, 0x5f, 0x08, 0x69, 0x5f, 0x08, + 0x74, 0x5f, 0x08, 0x69, 0x5f, 0x08, 0x76, 0x5f, 0x08, 0x69, 0x5f, 0x08, + 0x74, 0x5f, 0x08, 0x79, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x69, 0x6d, 0x75, + 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, + 0x20, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x20, 0x66, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x20, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x20, 0x6f, 0x6e, 0x6c, 0x79, + 0x20, 0x20, 0x68, 0x61, 0x73, 0x20, 0x20, 0x61, 0x6e, 0x20, 0x6f, 0x62, + 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x66, 0x66, + 0x65, 0x63, 0x74, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x73, 0x68, 0x6f, + 0x74, 0x20, 0x6e, 0x6f, 0x69, 0x73, 0x65, 0x20, 0x69, 0x73, 0x20, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x63, 0x66, + 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x67, 0x08, 0x67, 0x65, 0x08, + 0x65, 0x6e, 0x08, 0x6e, 0x65, 0x08, 0x65, 0x72, 0x08, 0x72, 0x61, 0x08, + 0x61, 0x74, 0x08, 0x74, 0x65, 0x08, 0x65, 0x2d, 0x08, 0x2d, 0x73, 0x08, + 0x73, 0x68, 0x08, 0x68, 0x6f, 0x08, 0x6f, 0x74, 0x08, 0x74, 0x2d, 0x08, + 0x2d, 0x6e, 0x08, 0x6e, 0x6f, 0x08, 0x6f, 0x69, 0x08, 0x69, 0x73, 0x08, + 0x73, 0x65, 0x08, 0x65, 0x29, 0x2e, 0x20, 0x20, 0x41, 0x20, 0x20, 0x68, + 0x69, 0x67, 0x68, 0x65, 0x72, 0x20, 0x20, 0x73, 0x65, 0x6e, 0x73, 0x69, + 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x20, 0x20, 0x6d, 0x65, 0x61, 0x6e, + 0x73, 0x20, 0x20, 0x74, 0x68, 0x61, 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x65, + 0x77, 0x65, 0x72, 0x20, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x6e, 0x73, 0x20, + 0x63, 0x61, 0x6e, 0x20, 0x63, 0x61, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x73, 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x62, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x64, 0x20, 0x62, 0x72, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x65, + 0x73, 0x73, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, + 0x6e, 0x2d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x6f, 0x72, 0x2c, 0x20, 0x73, 0x6f, + 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, + 0x6e, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, + 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x6e, 0x73, 0x20, 0x63, 0x61, 0x75, 0x73, + 0x65, 0x73, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x20, 0x73, 0x68, 0x6f, + 0x74, 0x20, 0x20, 0x6e, 0x6f, 0x69, 0x73, 0x65, 0x2e, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x42, 0x72, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x20, 0x20, + 0x69, 0x73, 0x20, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, + 0x65, 0x64, 0x20, 0x20, 0x61, 0x63, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, + 0x67, 0x20, 0x20, 0x74, 0x6f, 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, + 0x2d, 0x67, 0x08, 0x67, 0x65, 0x08, 0x65, 0x6e, 0x08, 0x6e, 0x65, 0x08, + 0x65, 0x72, 0x08, 0x72, 0x61, 0x08, 0x61, 0x74, 0x08, 0x74, 0x65, 0x08, + 0x65, 0x2d, 0x08, 0x2d, 0x72, 0x08, 0x72, 0x65, 0x08, 0x65, 0x66, 0x08, + 0x66, 0x65, 0x08, 0x65, 0x72, 0x08, 0x72, 0x65, 0x08, 0x65, 0x6e, 0x08, + 0x6e, 0x63, 0x08, 0x63, 0x65, 0x08, 0x65, 0x2d, 0x08, 0x2d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x62, 0x08, 0x62, 0x72, 0x08, 0x72, 0x69, 0x08, 0x69, 0x67, 0x08, + 0x67, 0x68, 0x08, 0x68, 0x74, 0x08, 0x74, 0x6e, 0x08, 0x6e, 0x65, 0x08, + 0x65, 0x73, 0x08, 0x73, 0x73, 0x08, 0x73, 0x20, 0x73, 0x6f, 0x20, 0x74, + 0x68, 0x61, 0x74, 0x20, 0x61, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x69, 0x6e, + 0x67, 0x20, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x69, 0x74, + 0x79, 0x20, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x20, 0x6e, 0x6f, 0x74, + 0x20, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x20, 0x6f, 0x62, + 0x2d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x20, 0x62, + 0x72, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2e, 0x0a, 0x0a, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, + 0x08, 0x2d, 0x67, 0x08, 0x67, 0x65, 0x08, 0x65, 0x6e, 0x08, 0x6e, 0x65, + 0x08, 0x65, 0x72, 0x08, 0x72, 0x61, 0x08, 0x61, 0x74, 0x08, 0x74, 0x65, + 0x08, 0x65, 0x2d, 0x08, 0x2d, 0x72, 0x08, 0x72, 0x65, 0x08, 0x65, 0x61, + 0x08, 0x61, 0x64, 0x08, 0x64, 0x2d, 0x08, 0x2d, 0x6e, 0x08, 0x6e, 0x6f, + 0x08, 0x6f, 0x69, 0x08, 0x69, 0x73, 0x08, 0x73, 0x65, 0x08, 0x65, 0x2d, + 0x08, 0x2d, 0x73, 0x08, 0x73, 0x74, 0x08, 0x74, 0x64, 0x08, 0x64, 0x64, + 0x08, 0x64, 0x65, 0x08, 0x65, 0x76, 0x08, 0x76, 0x20, 0x5f, 0x08, 0x73, + 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x64, 0x5f, 0x08, 0x64, 0x5f, 0x08, 0x65, + 0x5f, 0x08, 0x76, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x53, 0x65, 0x74, 0x73, 0x20, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x20, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, + 0x64, 0x20, 0x64, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x6f, 0x66, 0x20, 0x47, 0x61, 0x75, 0x73, 0x73, 0x69, 0x61, 0x6e, 0x20, + 0x6e, 0x6f, 0x69, 0x73, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x28, 0x73, 0x29, 0x20, 0x74, 0x6f, + 0x20, 0x5f, 0x08, 0x73, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x64, 0x5f, 0x08, + 0x64, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x76, 0x2e, 0x20, 0x4e, 0x6f, 0x69, + 0x73, 0x65, 0x20, 0x69, 0x73, 0x20, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, + 0x65, 0x64, 0x20, 0x20, 0x69, 0x6e, 0x20, 0x20, 0x6f, 0x62, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x64, 0x20, 0x20, 0x62, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x6e, 0x65, 0x73, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x77, 0x68, 0x65, 0x72, + 0x65, 0x20, 0x31, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, + 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x20, 0x62, 0x65, + 0x74, 0x77, 0x65, 0x65, 0x6e, 0x20, 0x70, 0x75, 0x72, 0x65, 0x20, 0x77, + 0x68, 0x69, 0x74, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x70, 0x75, 0x72, + 0x65, 0x20, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x2e, 0x20, 0x44, 0x65, 0x2d, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x74, 0x6f, + 0x20, 0x30, 0x2e, 0x30, 0x35, 0x2e, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x67, 0x08, + 0x67, 0x65, 0x08, 0x65, 0x6e, 0x08, 0x6e, 0x65, 0x08, 0x65, 0x72, 0x08, + 0x72, 0x61, 0x08, 0x61, 0x74, 0x08, 0x74, 0x65, 0x08, 0x65, 0x2d, 0x08, + 0x2d, 0x72, 0x08, 0x72, 0x61, 0x08, 0x61, 0x2c, 0x20, 0x2d, 0x08, 0x2d, + 0x2d, 0x08, 0x2d, 0x67, 0x08, 0x67, 0x65, 0x08, 0x65, 0x6e, 0x08, 0x6e, + 0x65, 0x08, 0x65, 0x72, 0x08, 0x72, 0x61, 0x08, 0x61, 0x74, 0x08, 0x74, + 0x65, 0x08, 0x65, 0x2d, 0x08, 0x2d, 0x64, 0x08, 0x64, 0x65, 0x08, 0x65, + 0x2c, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x67, 0x08, 0x67, 0x65, + 0x08, 0x65, 0x6e, 0x08, 0x6e, 0x65, 0x08, 0x65, 0x72, 0x08, 0x72, 0x61, + 0x08, 0x61, 0x74, 0x08, 0x74, 0x65, 0x08, 0x65, 0x2d, 0x08, 0x2d, 0x72, + 0x08, 0x72, 0x6f, 0x08, 0x6f, 0x6c, 0x08, 0x6c, 0x6c, 0x08, 0x6c, 0x20, + 0x5f, 0x08, 0x64, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x67, 0x5f, 0x08, 0x72, + 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x73, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x53, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x69, 0x67, 0x68, + 0x74, 0x20, 0x61, 0x73, 0x63, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2c, + 0x20, 0x64, 0x65, 0x63, 0x6c, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x6f, 0x6c, 0x6c, 0x20, 0x6f, + 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x2e, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, + 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x67, 0x08, 0x67, 0x65, 0x08, 0x65, 0x6e, + 0x08, 0x6e, 0x65, 0x08, 0x65, 0x72, 0x08, 0x72, 0x61, 0x08, 0x61, 0x74, + 0x08, 0x74, 0x65, 0x08, 0x65, 0x2d, 0x08, 0x2d, 0x65, 0x08, 0x65, 0x78, + 0x08, 0x78, 0x70, 0x08, 0x70, 0x6f, 0x08, 0x6f, 0x73, 0x08, 0x73, 0x75, + 0x08, 0x75, 0x72, 0x08, 0x72, 0x65, 0x08, 0x65, 0x20, 0x5f, 0x08, 0x65, + 0x5f, 0x08, 0x78, 0x5f, 0x08, 0x70, 0x5f, 0x08, 0x6f, 0x5f, 0x08, 0x73, + 0x5f, 0x08, 0x75, 0x5f, 0x08, 0x72, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x2d, + 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x69, 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x65, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x20, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x75, 0x72, + 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x73, 0x2e, 0x20, 0x4f, 0x6e, 0x6c, 0x79, 0x20, 0x75, 0x73, 0x65, + 0x66, 0x75, 0x6c, 0x20, 0x77, 0x72, 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x6f, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x62, 0x6c, 0x75, 0x72, 0x2e, 0x20, 0x44, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x69, 0x73, 0x20, 0x30, 0x20, + 0x28, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x62, 0x6c, 0x75, 0x72, + 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x29, 0x2e, 0x0a, + 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, + 0x2d, 0x08, 0x2d, 0x67, 0x08, 0x67, 0x65, 0x08, 0x65, 0x6e, 0x08, 0x6e, + 0x65, 0x08, 0x65, 0x72, 0x08, 0x72, 0x61, 0x08, 0x61, 0x74, 0x08, 0x74, + 0x65, 0x08, 0x65, 0x2d, 0x08, 0x2d, 0x62, 0x08, 0x62, 0x6c, 0x08, 0x6c, + 0x75, 0x08, 0x75, 0x72, 0x08, 0x72, 0x2d, 0x08, 0x2d, 0x72, 0x08, 0x72, + 0x61, 0x08, 0x61, 0x2c, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x67, + 0x08, 0x67, 0x65, 0x08, 0x65, 0x6e, 0x08, 0x6e, 0x65, 0x08, 0x65, 0x72, + 0x08, 0x72, 0x61, 0x08, 0x61, 0x74, 0x08, 0x74, 0x65, 0x08, 0x65, 0x2d, + 0x08, 0x2d, 0x62, 0x08, 0x62, 0x6c, 0x08, 0x6c, 0x75, 0x08, 0x75, 0x72, + 0x08, 0x72, 0x2d, 0x08, 0x2d, 0x64, 0x08, 0x64, 0x65, 0x08, 0x65, 0x2c, + 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x67, 0x08, 0x67, 0x65, 0x08, + 0x65, 0x6e, 0x08, 0x6e, 0x65, 0x08, 0x65, 0x72, 0x08, 0x72, 0x61, 0x08, + 0x61, 0x74, 0x08, 0x74, 0x65, 0x08, 0x65, 0x2d, 0x08, 0x2d, 0x62, 0x08, + 0x62, 0x6c, 0x08, 0x6c, 0x75, 0x08, 0x75, 0x72, 0x08, 0x72, 0x2d, 0x08, + 0x2d, 0x72, 0x08, 0x72, 0x6f, 0x08, 0x6f, 0x6c, 0x08, 0x6c, 0x6c, 0x08, + 0x6c, 0x20, 0x5f, 0x08, 0x64, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x67, 0x5f, + 0x08, 0x72, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x73, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x57, 0x68, 0x65, 0x6e, 0x20, 0x6d, 0x6f, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x62, 0x6c, 0x75, 0x72, 0x20, 0x69, 0x73, 0x20, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x2c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, + 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x74, 0x74, 0x69, 0x74, 0x75, 0x64, + 0x65, 0x20, 0x20, 0x70, 0x65, 0x72, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x6e, 0x69, + 0x74, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x0a, 0x0a, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x67, + 0x08, 0x67, 0x65, 0x08, 0x65, 0x6e, 0x08, 0x6e, 0x65, 0x08, 0x65, 0x72, + 0x08, 0x72, 0x61, 0x08, 0x61, 0x74, 0x08, 0x74, 0x65, 0x08, 0x65, 0x2d, + 0x08, 0x2d, 0x72, 0x08, 0x72, 0x65, 0x08, 0x65, 0x61, 0x08, 0x61, 0x64, + 0x08, 0x64, 0x6f, 0x08, 0x6f, 0x75, 0x08, 0x75, 0x74, 0x08, 0x74, 0x2d, + 0x08, 0x2d, 0x74, 0x08, 0x74, 0x69, 0x08, 0x69, 0x6d, 0x08, 0x6d, 0x65, + 0x08, 0x65, 0x20, 0x5f, 0x08, 0x72, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x61, + 0x5f, 0x08, 0x64, 0x5f, 0x08, 0x6f, 0x5f, 0x08, 0x75, 0x5f, 0x08, 0x74, + 0x5f, 0x08, 0x2d, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x69, 0x5f, 0x08, 0x6d, + 0x5f, 0x08, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, + 0x67, 0x20, 0x20, 0x73, 0x68, 0x75, 0x74, 0x74, 0x65, 0x72, 0x20, 0x20, + 0x72, 0x65, 0x61, 0x64, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x69, 0x6d, 0x65, + 0x20, 0x66, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x20, 0x54, + 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x69, 0x74, 0x20, 0x74, 0x61, 0x6b, + 0x65, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x61, 0x70, 0x74, + 0x75, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, + 0x74, 0x20, 0x72, 0x6f, 0x77, 0x20, 0x75, 0x6e, 0x74, 0x69, 0x6c, 0x20, + 0x20, 0x66, 0x69, 0x6e, 0x2d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x73, 0x68, 0x69, + 0x6e, 0x67, 0x20, 0x20, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x69, 0x6e, + 0x67, 0x20, 0x20, 0x74, 0x68, 0x65, 0x20, 0x20, 0x6c, 0x61, 0x73, 0x74, + 0x20, 0x72, 0x6f, 0x77, 0x2e, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x30, 0x20, 0x28, 0x72, 0x6f, 0x6c, + 0x6c, 0x69, 0x6e, 0x67, 0x20, 0x73, 0x68, 0x75, 0x74, 0x74, 0x65, 0x72, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x29, 0x2e, + 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, + 0x2d, 0x2d, 0x08, 0x2d, 0x67, 0x08, 0x67, 0x65, 0x08, 0x65, 0x6e, 0x08, + 0x6e, 0x65, 0x08, 0x65, 0x72, 0x08, 0x72, 0x61, 0x08, 0x61, 0x74, 0x08, + 0x74, 0x65, 0x08, 0x65, 0x2d, 0x08, 0x2d, 0x66, 0x08, 0x66, 0x61, 0x08, + 0x61, 0x6c, 0x08, 0x6c, 0x73, 0x08, 0x73, 0x65, 0x08, 0x65, 0x2d, 0x08, + 0x2d, 0x73, 0x08, 0x73, 0x74, 0x08, 0x74, 0x61, 0x08, 0x61, 0x72, 0x08, + 0x72, 0x73, 0x08, 0x73, 0x20, 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x75, 0x5f, + 0x08, 0x6d, 0x5f, 0x08, 0x2d, 0x5f, 0x08, 0x66, 0x5f, 0x08, 0x61, 0x5f, + 0x08, 0x6c, 0x5f, 0x08, 0x73, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x2d, 0x5f, + 0x08, 0x73, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x72, 0x5f, + 0x08, 0x73, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, + 0x20, 0x73, 0x74, 0x61, 0x72, 0x73, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x64, 0x2e, 0x20, 0x41, 0x6c, 0x6c, 0x20, 0x20, 0x61, + 0x72, 0x65, 0x20, 0x20, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x64, 0x20, 0x20, + 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x6c, 0x79, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x6c, 0x79, 0x20, 0x20, 0x61, 0x72, + 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x20, 0x74, 0x68, 0x65, 0x20, 0x20, 0x63, + 0x65, 0x6c, 0x65, 0x73, 0x74, 0x69, 0x61, 0x6c, 0x20, 0x73, 0x70, 0x68, + 0x65, 0x72, 0x65, 0x2e, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x73, 0x20, 0x74, 0x6f, 0x20, 0x30, 0x20, 0x28, 0x6e, 0x6f, 0x20, 0x66, + 0x61, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x74, 0x61, 0x72, 0x73, + 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x29, 0x0a, + 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, + 0x2d, 0x08, 0x2d, 0x67, 0x08, 0x67, 0x65, 0x08, 0x65, 0x6e, 0x08, 0x6e, + 0x65, 0x08, 0x65, 0x72, 0x08, 0x72, 0x61, 0x08, 0x61, 0x74, 0x08, 0x74, + 0x65, 0x08, 0x65, 0x2d, 0x08, 0x2d, 0x66, 0x08, 0x66, 0x61, 0x08, 0x61, + 0x6c, 0x08, 0x6c, 0x73, 0x08, 0x73, 0x65, 0x08, 0x65, 0x2d, 0x08, 0x2d, + 0x6d, 0x08, 0x6d, 0x69, 0x08, 0x69, 0x6e, 0x08, 0x6e, 0x2d, 0x08, 0x2d, + 0x6d, 0x08, 0x6d, 0x61, 0x08, 0x61, 0x67, 0x08, 0x67, 0x20, 0x5f, 0x08, + 0x6d, 0x5f, 0x08, 0x69, 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x69, 0x5f, 0x08, + 0x6d, 0x5f, 0x08, 0x75, 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x2d, 0x5f, 0x08, + 0x6d, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x67, 0x5f, 0x08, 0x6e, 0x5f, 0x08, + 0x69, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x75, 0x5f, 0x08, 0x64, 0x5f, 0x08, + 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6d, 0x69, 0x6e, 0x69, + 0x6d, 0x75, 0x6d, 0x20, 0x20, 0x28, 0x77, 0x65, 0x61, 0x6b, 0x65, 0x73, + 0x74, 0x29, 0x20, 0x20, 0x6d, 0x61, 0x67, 0x6e, 0x69, 0x74, 0x75, 0x64, + 0x65, 0x20, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x20, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x20, 0x66, 0x61, 0x6c, 0x73, + 0x65, 0x20, 0x20, 0x73, 0x74, 0x61, 0x72, 0x73, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, + 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x68, 0x61, 0x76, 0x65, 0x2e, 0x20, + 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, + 0x38, 0x2e, 0x30, 0x2e, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x67, 0x08, 0x67, 0x65, + 0x08, 0x65, 0x6e, 0x08, 0x6e, 0x65, 0x08, 0x65, 0x72, 0x08, 0x72, 0x61, + 0x08, 0x61, 0x74, 0x08, 0x74, 0x65, 0x08, 0x65, 0x2d, 0x08, 0x2d, 0x66, + 0x08, 0x66, 0x61, 0x08, 0x61, 0x6c, 0x08, 0x6c, 0x73, 0x08, 0x73, 0x65, + 0x08, 0x65, 0x2d, 0x08, 0x2d, 0x6d, 0x08, 0x6d, 0x61, 0x08, 0x61, 0x78, + 0x08, 0x78, 0x2d, 0x08, 0x2d, 0x6d, 0x08, 0x6d, 0x61, 0x08, 0x61, 0x67, + 0x08, 0x67, 0x20, 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x78, + 0x5f, 0x08, 0x69, 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x75, 0x5f, 0x08, 0x6d, + 0x5f, 0x08, 0x2d, 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x67, + 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x69, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x75, + 0x5f, 0x08, 0x64, 0x5f, 0x08, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x68, 0x65, + 0x20, 0x20, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x20, 0x20, 0x28, + 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x29, 0x20, 0x20, + 0x6d, 0x61, 0x67, 0x6e, 0x69, 0x74, 0x75, 0x64, 0x65, 0x20, 0x20, 0x74, + 0x68, 0x61, 0x74, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x64, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x20, 0x73, 0x74, 0x61, 0x72, + 0x73, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x68, + 0x61, 0x76, 0x65, 0x2e, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x73, 0x20, 0x74, 0x6f, 0x20, 0x31, 0x2e, 0x30, 0x2e, 0x0a, 0x0a, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, + 0x2d, 0x67, 0x08, 0x67, 0x65, 0x08, 0x65, 0x6e, 0x08, 0x6e, 0x65, 0x08, + 0x65, 0x72, 0x08, 0x72, 0x61, 0x08, 0x61, 0x74, 0x08, 0x74, 0x65, 0x08, + 0x65, 0x2d, 0x08, 0x2d, 0x6f, 0x08, 0x6f, 0x76, 0x08, 0x76, 0x65, 0x08, + 0x65, 0x72, 0x08, 0x72, 0x73, 0x08, 0x73, 0x61, 0x08, 0x61, 0x6d, 0x08, + 0x6d, 0x70, 0x08, 0x70, 0x6c, 0x08, 0x6c, 0x69, 0x08, 0x69, 0x6e, 0x08, + 0x6e, 0x67, 0x08, 0x67, 0x20, 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x75, 0x5f, + 0x08, 0x6d, 0x5f, 0x08, 0x2d, 0x5f, 0x08, 0x73, 0x5f, 0x08, 0x61, 0x5f, + 0x08, 0x6d, 0x5f, 0x08, 0x70, 0x5f, 0x08, 0x6c, 0x5f, 0x08, 0x65, 0x5f, + 0x08, 0x73, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x65, 0x66, 0x6f, 0x72, 0x6d, 0x20, + 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x75, 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x2d, + 0x5f, 0x08, 0x73, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x6d, 0x5f, 0x08, 0x70, + 0x5f, 0x08, 0x6c, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x73, 0x20, 0x6d, 0x61, + 0x6e, 0x79, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x20, 0x70, + 0x65, 0x72, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x20, 0x77, 0x68, + 0x65, 0x6e, 0x20, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6e, 0x67, 0x20, 0x20, 0x69, 0x6d, 0x2d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x67, + 0x65, 0x73, 0x2e, 0x20, 0x20, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x6c, 0x79, 0x20, 0x20, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, + 0x6d, 0x73, 0x20, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x61, 0x73, + 0x69, 0x6e, 0x67, 0x2e, 0x20, 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x75, 0x5f, + 0x08, 0x6d, 0x5f, 0x08, 0x2d, 0x5f, 0x08, 0x73, 0x5f, 0x08, 0x61, 0x5f, + 0x08, 0x6d, 0x5f, 0x08, 0x70, 0x5f, 0x08, 0x6c, 0x5f, 0x08, 0x65, 0x5f, + 0x08, 0x73, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x70, 0x65, 0x72, 0x66, 0x65, 0x63, 0x74, 0x20, 0x73, + 0x71, 0x75, 0x61, 0x72, 0x65, 0x2e, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x20, 0x34, 0x2e, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x67, 0x08, 0x67, + 0x65, 0x08, 0x65, 0x6e, 0x08, 0x6e, 0x65, 0x08, 0x65, 0x72, 0x08, 0x72, + 0x61, 0x08, 0x61, 0x74, 0x08, 0x74, 0x65, 0x08, 0x65, 0x2d, 0x08, 0x2d, + 0x73, 0x08, 0x73, 0x65, 0x08, 0x65, 0x65, 0x08, 0x65, 0x64, 0x08, 0x64, + 0x20, 0x5f, 0x08, 0x73, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x65, 0x5f, 0x08, + 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x41, 0x6e, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x67, + 0x65, 0x72, 0x20, 0x73, 0x65, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x70, + 0x61, 0x73, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, + 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x75, + 0x73, 0x65, 0x64, 0x20, 0x64, 0x75, 0x72, 0x2d, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, + 0x6e, 0x67, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, + 0x70, 0x08, 0x70, 0x6c, 0x08, 0x6c, 0x6f, 0x08, 0x6f, 0x74, 0x08, 0x74, + 0x2d, 0x08, 0x2d, 0x72, 0x08, 0x72, 0x61, 0x08, 0x61, 0x77, 0x08, 0x77, + 0x2d, 0x08, 0x2d, 0x69, 0x08, 0x69, 0x6e, 0x08, 0x6e, 0x70, 0x08, 0x70, + 0x75, 0x08, 0x75, 0x74, 0x08, 0x74, 0x3d, 0x5b, 0x5f, 0x08, 0x70, 0x5f, + 0x08, 0x61, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x68, 0x5d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x69, 0x73, 0x20, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x20, 0x50, 0x6c, + 0x6f, 0x74, 0x73, 0x20, 0x72, 0x61, 0x77, 0x20, 0x42, 0x57, 0x20, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x74, + 0x6f, 0x20, 0x50, 0x4e, 0x47, 0x2e, 0x20, 0x50, 0x72, 0x69, 0x6e, 0x74, + 0x73, 0x20, 0x74, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x08, 0x70, 0x5f, 0x08, + 0x61, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x68, 0x2e, 0x20, 0x44, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x73, 0x74, 0x64, + 0x6f, 0x75, 0x74, 0x20, 0x69, 0x66, 0x20, 0x69, 0x66, 0x20, 0x5f, 0x08, + 0x70, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x68, 0x20, 0x69, + 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x2e, + 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, + 0x2d, 0x2d, 0x08, 0x2d, 0x70, 0x08, 0x70, 0x6c, 0x08, 0x6c, 0x6f, 0x08, + 0x6f, 0x74, 0x08, 0x74, 0x2d, 0x08, 0x2d, 0x69, 0x08, 0x69, 0x6e, 0x08, + 0x6e, 0x70, 0x08, 0x70, 0x75, 0x08, 0x75, 0x74, 0x08, 0x74, 0x3d, 0x5b, + 0x5f, 0x08, 0x70, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x68, + 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, + 0x20, 0x69, 0x73, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x2e, 0x20, 0x50, 0x6c, 0x6f, 0x74, 0x73, 0x20, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x50, 0x4e, 0x47, + 0x2e, 0x20, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x73, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, + 0x6f, 0x20, 0x5f, 0x08, 0x70, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x74, 0x5f, + 0x08, 0x68, 0x2e, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, + 0x20, 0x74, 0x6f, 0x20, 0x73, 0x74, 0x64, 0x6f, 0x75, 0x74, 0x20, 0x69, + 0x66, 0x20, 0x5f, 0x08, 0x70, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x74, 0x5f, + 0x08, 0x68, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x67, 0x69, + 0x76, 0x65, 0x6e, 0x2e, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x70, 0x08, 0x70, 0x6c, + 0x08, 0x6c, 0x6f, 0x08, 0x6f, 0x74, 0x08, 0x74, 0x2d, 0x08, 0x2d, 0x6f, + 0x08, 0x6f, 0x75, 0x08, 0x75, 0x74, 0x08, 0x74, 0x70, 0x08, 0x70, 0x75, + 0x08, 0x75, 0x74, 0x08, 0x74, 0x3d, 0x5b, 0x5f, 0x08, 0x70, 0x5f, 0x08, + 0x61, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x68, 0x5d, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, + 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x20, 0x69, 0x73, 0x20, + 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x20, 0x20, + 0x50, 0x6c, 0x6f, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, + 0x74, 0x6f, 0x20, 0x50, 0x4e, 0x47, 0x2e, 0x20, 0x50, 0x72, 0x69, 0x6e, + 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x5f, 0x08, 0x70, 0x5f, 0x08, 0x61, + 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x68, 0x2e, 0x20, 0x44, 0x65, 0x2d, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, + 0x73, 0x74, 0x64, 0x6f, 0x75, 0x74, 0x20, 0x69, 0x66, 0x20, 0x5f, 0x08, + 0x70, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x68, 0x20, 0x69, + 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x2e, + 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, + 0x2d, 0x2d, 0x08, 0x2d, 0x70, 0x08, 0x70, 0x72, 0x08, 0x72, 0x69, 0x08, + 0x69, 0x6e, 0x08, 0x6e, 0x74, 0x08, 0x74, 0x2d, 0x08, 0x2d, 0x63, 0x08, + 0x63, 0x65, 0x08, 0x65, 0x6e, 0x08, 0x6e, 0x74, 0x08, 0x74, 0x72, 0x08, + 0x72, 0x6f, 0x08, 0x6f, 0x69, 0x08, 0x69, 0x64, 0x08, 0x64, 0x73, 0x08, + 0x73, 0x3d, 0x5b, 0x5f, 0x08, 0x70, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x74, + 0x5f, 0x08, 0x68, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x72, 0x67, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x2e, 0x20, 0x50, 0x6c, 0x6f, 0x74, 0x20, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x50, 0x4e, 0x47, 0x2e, + 0x20, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x73, 0x20, 0x20, 0x74, 0x6f, 0x20, + 0x20, 0x5f, 0x08, 0x70, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x74, 0x5f, 0x08, + 0x68, 0x2e, 0x20, 0x20, 0x44, 0x65, 0x2d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x73, 0x74, 0x64, 0x6f, + 0x75, 0x74, 0x20, 0x69, 0x66, 0x20, 0x5f, 0x08, 0x70, 0x5f, 0x08, 0x61, + 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x68, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, + 0x74, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x2e, 0x0a, 0x0a, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, + 0x63, 0x08, 0x63, 0x6f, 0x08, 0x6f, 0x6d, 0x08, 0x6d, 0x70, 0x08, 0x70, + 0x61, 0x08, 0x61, 0x72, 0x08, 0x72, 0x65, 0x08, 0x65, 0x2d, 0x08, 0x2d, + 0x63, 0x08, 0x63, 0x65, 0x08, 0x65, 0x6e, 0x08, 0x6e, 0x74, 0x08, 0x74, + 0x72, 0x08, 0x72, 0x6f, 0x08, 0x6f, 0x69, 0x08, 0x69, 0x64, 0x08, 0x64, + 0x73, 0x08, 0x73, 0x3d, 0x5b, 0x5f, 0x08, 0x70, 0x5f, 0x08, 0x61, 0x5f, + 0x08, 0x74, 0x5f, 0x08, 0x68, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x72, 0x67, + 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x20, 0x69, 0x73, 0x20, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x20, 0x50, 0x72, 0x69, 0x6e, + 0x74, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x63, 0x65, + 0x6e, 0x74, 0x72, 0x6f, 0x69, 0x64, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x5f, + 0x08, 0x70, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x68, 0x2e, + 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x74, 0x6f, 0x20, 0x73, 0x74, 0x64, 0x6f, 0x75, 0x74, 0x20, 0x69, 0x66, + 0x20, 0x5f, 0x08, 0x70, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x74, 0x5f, 0x08, + 0x68, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x67, 0x69, 0x76, + 0x65, 0x6e, 0x2e, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x63, 0x08, 0x63, 0x6f, 0x08, + 0x6f, 0x6d, 0x08, 0x6d, 0x70, 0x08, 0x70, 0x61, 0x08, 0x61, 0x72, 0x08, + 0x72, 0x65, 0x08, 0x65, 0x2d, 0x08, 0x2d, 0x73, 0x08, 0x73, 0x74, 0x08, + 0x74, 0x61, 0x08, 0x61, 0x72, 0x08, 0x72, 0x73, 0x08, 0x73, 0x3d, 0x5b, + 0x5f, 0x08, 0x70, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x68, + 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, + 0x20, 0x69, 0x73, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x2e, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x20, 0x6c, 0x69, + 0x73, 0x74, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x73, 0x74, 0x61, 0x72, 0x73, 0x2e, + 0x20, 0x20, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x73, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, + 0x6f, 0x20, 0x5f, 0x08, 0x70, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x74, 0x5f, + 0x08, 0x68, 0x2e, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, + 0x20, 0x74, 0x6f, 0x20, 0x73, 0x74, 0x64, 0x6f, 0x75, 0x74, 0x20, 0x69, + 0x66, 0x20, 0x5f, 0x08, 0x70, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x74, 0x5f, + 0x08, 0x68, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x67, 0x69, + 0x76, 0x65, 0x6e, 0x2e, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x70, 0x08, 0x70, 0x72, + 0x08, 0x72, 0x69, 0x08, 0x69, 0x6e, 0x08, 0x6e, 0x74, 0x08, 0x74, 0x2d, + 0x08, 0x2d, 0x61, 0x08, 0x61, 0x74, 0x08, 0x74, 0x74, 0x08, 0x74, 0x69, + 0x08, 0x69, 0x74, 0x08, 0x74, 0x75, 0x08, 0x75, 0x64, 0x08, 0x64, 0x65, + 0x08, 0x65, 0x3d, 0x5b, 0x5f, 0x08, 0x70, 0x5f, 0x08, 0x61, 0x5f, 0x08, + 0x74, 0x5f, 0x08, 0x68, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x72, 0x67, 0x75, + 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x20, 0x69, 0x73, 0x20, 0x20, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x20, 0x50, 0x72, 0x69, 0x6e, + 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, + 0x69, 0x6e, 0x65, 0x64, 0x20, 0x72, 0x61, 0x2c, 0x20, 0x64, 0x65, 0x2c, + 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x6f, 0x6c, 0x6c, 0x20, 0x74, 0x6f, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x5f, 0x08, 0x70, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x74, + 0x5f, 0x08, 0x68, 0x2e, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x73, 0x20, 0x74, 0x6f, 0x20, 0x73, 0x74, 0x64, 0x6f, 0x75, 0x74, 0x20, + 0x69, 0x66, 0x20, 0x5f, 0x08, 0x70, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x74, + 0x5f, 0x08, 0x68, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x67, + 0x69, 0x76, 0x65, 0x6e, 0x2e, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, 0x08, 0x2d, 0x63, 0x08, 0x63, + 0x6f, 0x08, 0x6f, 0x6d, 0x08, 0x6d, 0x70, 0x08, 0x70, 0x61, 0x08, 0x61, + 0x72, 0x08, 0x72, 0x65, 0x08, 0x65, 0x2d, 0x08, 0x2d, 0x61, 0x08, 0x61, + 0x74, 0x08, 0x74, 0x74, 0x08, 0x74, 0x69, 0x08, 0x69, 0x74, 0x08, 0x74, + 0x75, 0x08, 0x75, 0x64, 0x08, 0x64, 0x65, 0x08, 0x65, 0x3d, 0x5b, 0x5f, + 0x08, 0x70, 0x5f, 0x08, 0x61, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x68, 0x5d, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x20, + 0x69, 0x73, 0x20, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x2e, 0x20, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x20, 0x20, + 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x20, 0x74, 0x6f, + 0x20, 0x20, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x20, 0x20, 0x61, 0x74, + 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x2e, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x72, + 0x69, 0x6e, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x5f, 0x08, 0x70, 0x5f, + 0x08, 0x61, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x68, 0x2e, 0x20, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x73, 0x74, + 0x64, 0x6f, 0x75, 0x74, 0x20, 0x69, 0x66, 0x20, 0x5f, 0x08, 0x70, 0x5f, + 0x08, 0x61, 0x5f, 0x08, 0x74, 0x5f, 0x08, 0x68, 0x20, 0x69, 0x73, 0x20, + 0x6e, 0x6f, 0x74, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x2e, 0x0a, 0x0a, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, + 0x08, 0x2d, 0x63, 0x08, 0x63, 0x65, 0x08, 0x65, 0x6e, 0x08, 0x6e, 0x74, + 0x08, 0x74, 0x72, 0x08, 0x72, 0x6f, 0x08, 0x6f, 0x69, 0x08, 0x69, 0x64, + 0x08, 0x64, 0x2d, 0x08, 0x2d, 0x63, 0x08, 0x63, 0x6f, 0x08, 0x6f, 0x6d, + 0x08, 0x6d, 0x70, 0x08, 0x70, 0x61, 0x08, 0x61, 0x72, 0x08, 0x72, 0x65, + 0x08, 0x65, 0x2d, 0x08, 0x2d, 0x74, 0x08, 0x74, 0x68, 0x08, 0x68, 0x72, + 0x08, 0x72, 0x65, 0x08, 0x65, 0x73, 0x08, 0x73, 0x68, 0x08, 0x68, 0x6f, + 0x08, 0x6f, 0x6c, 0x08, 0x6c, 0x64, 0x08, 0x64, 0x20, 0x5f, 0x08, 0x74, + 0x5f, 0x08, 0x68, 0x5f, 0x08, 0x72, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x73, + 0x5f, 0x08, 0x68, 0x5f, 0x08, 0x6f, 0x5f, 0x08, 0x6c, 0x5f, 0x08, 0x64, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x53, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x6f, + 0x69, 0x64, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x6e, 0x67, + 0x20, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x73, 0x0a, + 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, + 0x2d, 0x08, 0x2d, 0x61, 0x08, 0x61, 0x74, 0x08, 0x74, 0x74, 0x08, 0x74, + 0x69, 0x08, 0x69, 0x74, 0x08, 0x74, 0x75, 0x08, 0x75, 0x64, 0x08, 0x64, + 0x65, 0x08, 0x65, 0x2d, 0x08, 0x2d, 0x63, 0x08, 0x63, 0x6f, 0x08, 0x6f, + 0x6d, 0x08, 0x6d, 0x70, 0x08, 0x70, 0x61, 0x08, 0x61, 0x72, 0x08, 0x72, + 0x65, 0x08, 0x65, 0x2d, 0x08, 0x2d, 0x74, 0x08, 0x74, 0x68, 0x08, 0x68, + 0x72, 0x08, 0x72, 0x65, 0x08, 0x65, 0x73, 0x08, 0x73, 0x68, 0x08, 0x68, + 0x6f, 0x08, 0x6f, 0x6c, 0x08, 0x6c, 0x64, 0x08, 0x64, 0x20, 0x5f, 0x08, + 0x74, 0x5f, 0x08, 0x68, 0x5f, 0x08, 0x72, 0x5f, 0x08, 0x65, 0x5f, 0x08, + 0x73, 0x5f, 0x08, 0x68, 0x5f, 0x08, 0x6f, 0x5f, 0x08, 0x6c, 0x5f, 0x08, + 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x53, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x74, 0x74, 0x69, 0x74, + 0x75, 0x64, 0x65, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x6e, + 0x67, 0x20, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x73, + 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, + 0x2d, 0x2d, 0x08, 0x2d, 0x64, 0x08, 0x64, 0x61, 0x08, 0x61, 0x74, 0x08, + 0x74, 0x61, 0x08, 0x61, 0x62, 0x08, 0x62, 0x61, 0x08, 0x61, 0x73, 0x08, + 0x73, 0x65, 0x08, 0x65, 0x20, 0x5f, 0x08, 0x66, 0x5f, 0x08, 0x69, 0x5f, + 0x08, 0x6c, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x61, 0x5f, + 0x08, 0x6d, 0x5f, 0x08, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x6f, 0x6f, + 0x73, 0x65, 0x73, 0x20, 0x5f, 0x08, 0x66, 0x5f, 0x08, 0x69, 0x5f, 0x08, + 0x6c, 0x5f, 0x08, 0x65, 0x5f, 0x08, 0x6e, 0x5f, 0x08, 0x61, 0x5f, 0x08, + 0x6d, 0x5f, 0x08, 0x65, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x20, 0x74, 0x6f, 0x20, + 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x20, 0x73, 0x74, 0x61, 0x72, + 0x73, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x73, 0x74, 0x2e, 0x0a, 0x0a, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x08, 0x2d, 0x2d, + 0x08, 0x2d, 0x68, 0x08, 0x68, 0x65, 0x08, 0x65, 0x6c, 0x08, 0x6c, 0x70, + 0x08, 0x70, 0x20, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x73, 0x20, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, + 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x61, 0x6e, 0x75, + 0x61, 0x6c, 0x20, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x20, 0x66, 0x6f, 0x72, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, + 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x65, + 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x2e, 0x0a, 0x0a, 0x0a, 0x53, 0x08, + 0x53, 0x45, 0x08, 0x45, 0x45, 0x08, 0x45, 0x20, 0x41, 0x08, 0x41, 0x4c, + 0x08, 0x4c, 0x53, 0x08, 0x53, 0x4f, 0x08, 0x4f, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x28, 0x33, 0x29, 0x0a, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x30, 0x36, 0x20, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x20, 0x32, 0x30, 0x32, 0x31, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x50, 0x49, 0x50, 0x45, 0x4c, 0x49, 0x4e, 0x45, 0x28, 0x33, + 0x29, 0x0a +}; +unsigned int documentation_pipeline_txt_len = 15710; diff --git a/src/centroiders.cpp b/src/centroiders.cpp index aec56f50..38c6f716 100644 --- a/src/centroiders.cpp +++ b/src/centroiders.cpp @@ -11,11 +11,11 @@ #include #include +#include namespace lost { -// DUMMY - +// DUMMYS std::vector DummyCentroidAlgorithm::Go(unsigned char *image, int imageWidth, int imageHeight) const { std::vector result; @@ -26,7 +26,7 @@ std::vector DummyCentroidAlgorithm::Go(unsigned char *image, int imageWidt return result; } -// a poorly designed thresholding algorithm +// UNUSED: a poorly designed thresholding algorithm int BadThreshold(unsigned char *image, int imageWidth, int imageHeight) { //loop through entire array, find sum of magnitudes long totalMag = 0; @@ -36,7 +36,7 @@ int BadThreshold(unsigned char *image, int imageWidth, int imageHeight) { return (((totalMag/(imageHeight * imageWidth)) + 1) * 15) / 10; } -// a more sophisticated thresholding algorithm, not tailored to star images +// UNUSED: a more sophisticated thresholding algorithm, not tailored to star images int OtsusThreshold(unsigned char *image, int imageWidth, int imageHeight) { // code here, duh long total = imageWidth * imageHeight; @@ -76,7 +76,7 @@ int OtsusThreshold(unsigned char *image, int imageWidth, int imageHeight) { return level; } -// a simple, but well tested thresholding algorithm that works well with star images +// UNUSED: a simple, but well tested thresholding algorithm that works well with star images. int BasicThreshold(unsigned char *image, int imageWidth, int imageHeight) { unsigned long totalMag = 0; float std = 0; @@ -92,7 +92,9 @@ int BasicThreshold(unsigned char *image, int imageWidth, int imageHeight) { return mean + (std * 5); } -// basic thresholding, but do it faster (trade off of some accuracy?) +// UNUSED: Accepts an array of brightnesses and image dimensions, and returns the +// threshold brightness for the entire image, which is defined as 5 standard deviations +// above the mean. int BasicThresholdOnePass(unsigned char *image, int imageWidth, int imageHeight) { unsigned long totalMag = 0; float std = 0; @@ -105,9 +107,98 @@ int BasicThresholdOnePass(unsigned char *image, int imageWidth, int imageHeight) float mean = totalMag / totalPixels; float variance = (sq_totalMag / totalPixels) - (mean * mean); std = std::sqrt(variance); - return mean + (std * 5); + return std::round(mean + (std * 5)); +} + +// *****START OF COG ALGORITHM***** + +// This algorithm takes an image and finds all "centroids" or potential stars in it. It divides +// the image into a square grid, calculates the threshold brightness of each subsection, or "box", +// and uses that information to find the centroids. A threshold is defined as 5 standard deviations +// above the mean brightness of pixels. + +// Commonly used terms: + // box: A subsection in the subdivision scheme + // subdivision scheme: The square grid that contains the boxes the image is divided into. Each + // box can be assigned an index in this scheme, which follows row-major order. + // subdivisions: The number of slices the image is sliced into on each side. The square of + // this quantity indicates the number of boxes. + // leftover: When doing this division, we often cannot give each box the same number of + // rows/columns to each box. This quantity tell us how many rows/columns in the subdivision + // scheme will have 1 extra row/column, and these always start with the first rows/columns. + // div: The minimum rows/columns each box will have. + // For leftover and div, "horizontal" refers to rows and "vertical" refers to columns + +// By default, this algorithm ensures that regardless of the subdivisions entered, the number of +// pixels in each subdivision is imageWidth*imageHeight <= size <= 100 to ensure that enough +// pixles will be sampled in each subdivision + +// Accepts an index in the subdivision scheme, and a horizontal/vertical leftover and div +// This method uses these quantities to find the first row/column index in the actual image +// that "i" references. +int StartOfSubdivision(int i, int leftover, int div) { + if(i < leftover) { + return i * (div + 1); + } else { + return leftover * (div + 1) + (i - leftover) * div; + } +} + +// Refer to definition for details +long FindSubdivision(long i, int imageWidth, int imageHeight, int subdivisions); + + +// Accepts a subdivsion, or "box" number, the image's brightness array and associated dimensions, +// and the subdivisions. +// Returns the threshold for the corresponding box. +int LocalBasicThreshold(int box, unsigned char *image, int imageWidth, int imageHeight, + int subdivisions) { + + int horizontalDiv = imageHeight / subdivisions; + int verticalDiv = imageWidth / subdivisions; + int horizontalLeftover = imageHeight % subdivisions; + int verticalLeftover = imageWidth % subdivisions; + int row = box / subdivisions; // Finds the current row in the subdivision scheme + int col = box % subdivisions; // Finds the current column in the subdivision scheme + double average = 0; + double squareSum = 0; + long count = 0; + + // Runs through "box" in row-major order + for(long i = StartOfSubdivision(row, horizontalLeftover, horizontalDiv); + i < StartOfSubdivision(row + 1, horizontalLeftover, horizontalDiv); i++) { + for(long j = StartOfSubdivision(col, verticalLeftover, verticalDiv); + j < StartOfSubdivision(col + 1, verticalLeftover, verticalDiv); j++) { + average += image[i * imageWidth + j]; + squareSum += image[i * imageWidth + j] * image[i * imageWidth + j]; + count++; + + // Checks for Error + assert(FindSubdivision(i*imageWidth+j, imageWidth, imageHeight, subdivisions) == box); + } + } + + average /= count; + return average + (5 * std::sqrt((squareSum - count * average * average) / (count - 1))); } +// Accepts the image's brightness array and dimensions, and the subdivisions, and returns +// a vector with the threshold for each "box" in row-major order +std::vector LocalThresholding(unsigned char *image, int imageWidth, int imageHeight, + int subdivisions) { + + std::vector thresholds; + for(int i = 0; i < subdivisions * subdivisions; i++) { + thresholds.push_back(LocalBasicThreshold(i, image, imageWidth, imageHeight, + subdivisions)); + } + + return thresholds; +} + +// Used in function CenterOfGravityAlgorithm:Go, and is useful for keeping track of +// star dimensions and characteristics, as well as the database of thresholds among +// other quantities relating to the image struct CentroidParams { float yCoordMagSum; float xCoordMagSum; @@ -116,84 +207,177 @@ struct CentroidParams { int xMax; int yMin; int yMax; - int cutoff; + int magnitude; bool isValid; - std::unordered_set checkedIndices; }; -//recursive helper here -void CogHelper(CentroidParams &p, long i, unsigned char *image, int imageWidth, int imageHeight) { - - if (i >= 0 && i < imageWidth * imageHeight && image[i] >= p.cutoff && p.checkedIndices.count(i) == 0) { - //check if pixel is on the edge of the image, if it is, we dont want to centroid this star - if (i % imageWidth == 0 || i % imageWidth == imageWidth - 1 || i / imageWidth == 0 || i / imageWidth == imageHeight - 1) { - p.isValid = false; - } - p.checkedIndices.insert(i); - if (i % imageWidth > p.xMax) { - p.xMax = i % imageWidth; - } else if (i % imageWidth < p.xMin) { - p.xMin = i % imageWidth; - } - if (i / imageWidth > p.yMax) { - p.yMax = i / imageWidth; - } else if (i / imageWidth < p.yMin) { - p.yMin = i / imageWidth; - } - p.magSum += image[i]; - p.xCoordMagSum += ((i % imageWidth)) * image[i]; - p.yCoordMagSum += ((i / imageWidth)) * image[i]; - if(i % imageWidth != imageWidth - 1) { - CogHelper(p, i + 1, image, imageWidth, imageHeight); - } - if (i % imageWidth != 0) { - CogHelper(p, i - 1, image, imageWidth, imageHeight); - } - CogHelper(p, i + imageWidth, image, imageWidth, imageHeight); - CogHelper(p, i - imageWidth, image, imageWidth, imageHeight); +// Accepts the row/column of an index on the image, the imageWidth/imageHeight, the subdivisions +// and the horizontal/vertical div and leftover +// Returns the index of the row/column in the subdivision scheme for the corresponding "i". +// NOTE: This function is the inverse of the StartOfSubdivision function in a way that +// RowOrColumn(StartOfSubdivision(x)) = x for any given row/column index "x" in the subdivision +// scheme, but StartOfSubdivision(RowOrColumn(x)) only equals x if x = StartOfSubdivision(y), +// for any given row/column index "y" in the subdivision scheme +long RowOrColumn(long i, int leftover, int div) { + if(i < (div + 1) * leftover) { + return i / (div + 1); + } else { + return leftover + (i - (div + 1) * leftover) / (div); } } -std::vector CenterOfGravityAlgorithm::Go(unsigned char *image, int imageWidth, int imageHeight) const { - CentroidParams p; - - std::vector result; +// Accepts an index in the image, its dimensions and the subdivisions, and returns the +// corresponding "box" number that the index "i" is in +long FindSubdivision(long i, int imageWidth, int imageHeight, int subdivisions) { + long row = RowOrColumn(i / imageWidth, imageHeight % subdivisions, imageHeight / subdivisions); + long col = RowOrColumn(i % imageWidth, imageWidth % subdivisions, imageWidth / subdivisions); + return row * subdivisions + col; +} - p.cutoff = BasicThreshold(image, imageWidth, imageHeight); - for (long i = 0; i < imageHeight * imageWidth; i++) { - if (image[i] >= p.cutoff && p.checkedIndices.count(i) == 0) { - //iterate over pixels that are part of the star - int xDiameter = 0; //radius of current star - int yDiameter = 0; - p.yCoordMagSum = 0; //y coordinate of current star - p.xCoordMagSum = 0; //x coordinate of current star - p.magSum = 0; //sum of magnitudes of current star +// Accepts an array of the image's brightnesses, and the image's dimensions, and finds all +// stars in the image and returns the stars as an array +std::vector CenterOfGravityAlgorithm::Go(unsigned char *image, int imageWidth, int imageHeight) const { + + // Program will use divisions to represent the subdivisions + int divisions = subdivisions; + int min = 0; + if(divisions < 1) { + divisions = 1; + } + if(imageWidth > imageHeight) { + min = imageWidth; + } else { + min = imageHeight; + } + if(min / subdivisions < 10) { + divisions = min / 10; + } + // Make an array-map of thresholds + std::vector localCutoff = LocalThresholding(image, imageWidth, imageHeight, divisions); - p.xMax = i % imageWidth; - p.xMin = i % imageWidth; - p.yMax = i / imageWidth; - p.yMin = i / imageWidth; - p.isValid = true; + // Tells us if certian numbers in the below array are part of the same component + std::unordered_map equivalencies; + + // make an array with the same dimensions of the image, but it shows connected components using numbers + unsigned char *stars = (unsigned char *) std::malloc(imageWidth * imageHeight * sizeof(unsigned char)); + stars[0] = (image[0] >= localCutoff.at(0)) ? 1 : 0; + int L = stars[0]; + + // Initial labeling of centroids + for(long i = 1; i < imageHeight * imageWidth; i++) { + // This is specific to the centroiding algo, which tests if this is even part of a centroid + if(image[i] >= localCutoff.at(FindSubdivision(i, imageWidth, imageHeight, divisions))) { + + // The indicies of the entries to the left and above i + int up = i - imageWidth; + int left = i - 1; + + // Tests to see if the upper or left entry is a valid component (part of a star aka it was initialized + // with a L value at some point) + bool leftEq = stars[left] != 0; + bool upEq = stars[up] != 0; + + if(i / imageWidth == 0) { // If i is part of a top pixel, test only the left pixel + if(leftEq) { // If the left pixel is part of a centroid, it must be part of the same star as i, if not, mark with new L value + stars[i] = stars[left]; + } else { + stars[i] = ++L; + } + } else if(i % imageWidth == 0) { // If i is part of a left pixel, test only the upper pixel + if(upEq) { // If the upper pixel is part of a centroid, it must be part of the same star as i, if not, mark with new L value + stars[i] = stars[up]; + } else { + stars[i] = ++L; + } + } else { // Tests for general case + if(leftEq && upEq && stars[left] == stars[up]) { // If the top and left pixels are part of centroid with the same L value, i is connected to them with the same L value + stars[i] = stars[left]; + } else if(leftEq && upEq && stars[left] != stars[up]) { // The above, but if the left and top pixels have different L values, those different values are also part of the same centroid + stars[i] = std::min(stars[left], stars[up]); + equivalencies.insert(std::pair(int(std::max(stars[left], stars[up])), int(stars[i]))); + assert(equivalencies.find(stars[i]) == equivalencies.end()); + } else if(leftEq) { // From here, we get a copy of the first two if/else if statements + stars[i] = stars[left]; + } else if(upEq) { + stars[i] = stars[up]; + } else { + stars[i] = ++L; + } + } + } + } - int sizeBefore = p.checkedIndices.size(); + // Get statistics of each star. This is when we process the above info + // into groups based on the pixels having the same number (or equivalent numebers via the map) + // params is a mapping of these centroid numbers (L values) to each "group" of pixels with statistics + // shown in Centroid params. + std::unordered_map params; // Star # to param + for(int i = 0; i < imageWidth * imageHeight; i++) { + if(stars[i] != 0) { + int starNumber = equivalencies.find(stars[i]) == equivalencies.end() ? + stars[i] : equivalencies.find(stars[i]) -> second; + if(params.find(starNumber) == params.end()) { // If the entry with the L value given at stars[i] is not yet in params, then initialze one + CentroidParams p; + p.magnitude = 0; + p.magSum = 0; + p.xCoordMagSum = 0; + p.yCoordMagSum = 0; + p.xMax = 0; + p.xMin = imageWidth; + p.yMax = 0; + p.yMin = imageHeight; + p.isValid = true; + params.insert(std::pair(starNumber, p)); + } + // Obtain and update the statistics for the centroid corresponding to the L value at stars[i] or the equivalent L value + CentroidParams *centroid_ptr = ¶ms.at(starNumber); + int row = i / imageWidth; + int col = i % imageWidth; + centroid_ptr -> xCoordMagSum += col * image[i]; + centroid_ptr -> yCoordMagSum += row * image[i]; + centroid_ptr -> magnitude++; + centroid_ptr -> magSum += image[i]; + if(col > centroid_ptr -> xMax) { + centroid_ptr -> xMax = col; + } + if(col < centroid_ptr -> xMin) { + centroid_ptr -> xMin = col; + } + if(row > centroid_ptr -> yMax) { + centroid_ptr -> yMax = row; + } + if(row < centroid_ptr -> yMin) { + centroid_ptr -> yMin = row; + } + if (i % imageWidth == 0 || i % imageWidth == imageWidth - 1 || i / imageWidth == 0 || + i / imageWidth == imageHeight - 1) { + centroid_ptr -> isValid = false; + } - CogHelper(p, i, image, imageWidth, imageHeight); - xDiameter = (p.xMax - p.xMin) + 1; - yDiameter = (p.yMax - p.yMin) + 1; + } + } - //use the sums to finish CoG equation and add stars to the result - float xCoord = (p.xCoordMagSum / (p.magSum * 1.0)); + // Now we actually make stars. This is the last step, and is when we validate each CentroidParam, + // make sure it is a valid centroid and that the param entry is a valid one (Not 0). Then we use + // our CentroidParams to initialize an actual centroid (Star) + std::vector result; + for(auto itr = params.begin(); itr != params.end(); itr++) { + if(itr -> second.isValid && itr -> first != 0) { + CentroidParams p = itr -> second; + float xRadius = p.xMax - p.xMin + 1; + float yRadius = p.yMax - p.yMin + 1; + float xCoord = (p.xCoordMagSum / (p.magSum * 1.0)); float yCoord = (p.yCoordMagSum / (p.magSum * 1.0)); - - if (p.isValid) { - result.push_back(Star(xCoord + 0.5f, yCoord + 0.5f, ((float)(xDiameter))/2.0f, ((float)(yDiameter))/2.0f, p.checkedIndices.size() - sizeBefore)); - } + result.push_back(Star(xCoord + 0.5f, yCoord + 0.5f, xRadius / 2.0f, yRadius / 2.0f, p.magnitude)); } } + return result; } +// *****END OF COG ALGORITHM***** + //Determines how accurate and how much iteration is done by the IWCoG algorithm, //smaller means more accurate and more iterations. float iWCoGMinChange = 0.0002; @@ -213,7 +397,8 @@ struct IWCoGParams { void IWCoGHelper(IWCoGParams &p, long i, unsigned char *image, int imageWidth, int imageHeight, std::vector &starIndices) { if (i >= 0 && i < imageWidth * imageHeight && image[i] >= p.cutoff && p.checkedIndices.count(i) == 0) { //check if pixel is on the edge of the image, if it is, we dont want to centroid this star - if (i % imageWidth == 0 || i % imageWidth == imageWidth - 1 || i / imageWidth == 0 || i / imageWidth == imageHeight - 1) { + if (i % imageWidth == 0 || i % imageWidth == imageWidth - 1 || i / imageWidth == 0 + || i / imageWidth == imageHeight - 1) { p.isValid = false; } p.checkedIndices.insert(i); diff --git a/src/centroiders.hpp b/src/centroiders.hpp index 5b6c2477..98e0b8aa 100644 --- a/src/centroiders.hpp +++ b/src/centroiders.hpp @@ -24,8 +24,10 @@ class DummyCentroidAlgorithm: public CentroidAlgorithm { class CenterOfGravityAlgorithm : public CentroidAlgorithm { public: - CenterOfGravityAlgorithm() { }; + CenterOfGravityAlgorithm(int subdivisions) : subdivisions(subdivisions) { }; Stars Go(unsigned char *image, int imageWidth, int imageHeight) const override; + private: + int subdivisions; }; class IterativeWeightedCenterOfGravityAlgorithm : public CentroidAlgorithm { diff --git a/src/io.cpp b/src/io.cpp index 7920514d..6f59489c 100644 --- a/src/io.cpp +++ b/src/io.cpp @@ -268,7 +268,8 @@ CentroidAlgorithm *DummyCentroidAlgorithmPrompt() { } CentroidAlgorithm *CoGCentroidAlgorithmPrompt() { - return new CenterOfGravityAlgorithm(); + int subdivisions = Prompt("How many subdivisions to use"); + return new CenterOfGravityAlgorithm(subdivisions); } CentroidAlgorithm *IWCoGCentroidAlgorithmPrompt() { diff --git a/test/centroid.cpp b/test/centroid.cpp new file mode 100644 index 00000000..277a0b7c --- /dev/null +++ b/test/centroid.cpp @@ -0,0 +1,56 @@ +#include + +#include +#include + +namespace lost { + int RowOrColumn(long i, int leftover, int div); + int FindSubdivision(long i, int imageWidth, int imageHeight, int subdivisions); + int StartOfSubdivision(int i, int leftover, int div); +} + + +TEST_CASE("Testing Start and End Rows") { + int row = 0; + int horizontalLeftover = 5; + int horizontalDiv = 10; + CHECK(lost::StartOfSubdivision(row, horizontalLeftover, horizontalDiv) == 0); + CHECK(lost::StartOfSubdivision(row + 1, horizontalLeftover, horizontalDiv) == 11); +} + +TEST_CASE("Testing Start and End Columns") { + int col = 0; + int verticalLeftover = 5; + int verticalDiv = 10; + CHECK(lost::StartOfSubdivision(col, verticalLeftover, verticalDiv) == 0); + CHECK(lost::StartOfSubdivision(col + 1, verticalLeftover, verticalDiv) == 11); +} + +TEST_CASE("Correct Row: 4th Row") { + CHECK(lost::RowOrColumn(33795 / 1024, 1024 % 100, 1024 / 100) == 3); +} + +TEST_CASE("Correct Row: 27th Row") { + CHECK(lost::RowOrColumn((24 * 1024 * 11 + 10 * 2 * 1024 + 20) / 1024, 1024 % 100, 1024 / 100) == 26); +} + +TEST_CASE("Correct Row: Last Row 1") { + CHECK(lost::RowOrColumn((1024 * 1024 - 1) / 1024, 1024 % 100, 1024 / 100) == 99); +} + +TEST_CASE("Correct Box: Last Subdivision") { + CHECK(lost::FindSubdivision(1024 * 1024 - 1, 1024, 1024, 1024) == 1024 * 1024 - 1); +} + +TEST_CASE("Testing Inverse Conjecture") { + int size = 1024; + int subdivisions = 10; + int leftover = size % subdivisions; + int div = size / subdivisions; + for(int i = 0; i < subdivisions; i++) { + int x = lost::StartOfSubdivision(i, leftover, div); + CHECK(lost::RowOrColumn(x, leftover, div) == i); + CHECK(lost::StartOfSubdivision(lost::RowOrColumn(x, leftover, div), leftover, div) == x); + } +} +