From 112ae64e865485b74b97ec4d6b5031b5fbe76ca9 Mon Sep 17 00:00:00 2001 From: flowerpewpew Date: Sat, 4 May 2024 20:55:07 +0100 Subject: [PATCH] Build tools to generate shaders --- ShapeUpWin.vcxproj | 6 +- src/shaders.h | 768 ----------------------------------------- tools/buildshaders.ps1 | 52 +++ 3 files changed, 57 insertions(+), 769 deletions(-) delete mode 100644 src/shaders.h create mode 100644 tools/buildshaders.ps1 diff --git a/ShapeUpWin.vcxproj b/ShapeUpWin.vcxproj index 7a8e431..10b6e1d 100644 --- a/ShapeUpWin.vcxproj +++ b/ShapeUpWin.vcxproj @@ -71,7 +71,8 @@ - $(VC_IncludePath);$(ProjectDir)\lib\raylib-4.5.0_win64_msvc16\include + $(VC_IncludePath);$(ProjectDir)\lib\raylib-4.5.0_win64_msvc16\include;$(ProjectDir)\build + $(VC_IncludePath);$(WindowsSDK_IncludePath);$(ProjectDir)\build @@ -114,6 +115,9 @@ $(ProjectDir)\lib\raylib-4.5.0_win64_msvc16\lib raylib.lib;winmm.lib;%(AdditionalDependencies) + + powershell -File tools\buildshaders.ps1 + diff --git a/src/shaders.h b/src/shaders.h deleted file mode 100644 index 686ce50..0000000 --- a/src/shaders.h +++ /dev/null @@ -1,768 +0,0 @@ -unsigned char shader_base_fs[] = { - 0x76, 0x65, 0x63, 0x34, 0x20, 0x63, 0x61, 0x73, 0x74, 0x52, 0x61, 0x79, - 0x28, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x72, 0x6f, - 0x2c, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x72, 0x64, - 0x20, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, - 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x69, 0x6e, 0x20, 0x3d, 0x20, - 0x30, 0x2e, 0x31, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, - 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x61, 0x78, 0x20, 0x3d, 0x20, 0x33, - 0x30, 0x30, 0x2e, 0x30, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x20, 0x3d, 0x20, 0x74, - 0x6d, 0x69, 0x6e, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, - 0x63, 0x33, 0x20, 0x6d, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, - 0x2d, 0x31, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, - 0x72, 0x28, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x3d, 0x30, 0x3b, 0x20, - 0x69, 0x3c, 0x36, 0x34, 0x3b, 0x20, 0x69, 0x2b, 0x2b, 0x20, 0x29, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x72, - 0x65, 0x63, 0x69, 0x73, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x30, - 0x31, 0x2a, 0x74, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x72, 0x65, 0x73, 0x20, 0x3d, - 0x20, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x28, 0x20, - 0x72, 0x6f, 0x2b, 0x72, 0x64, 0x2a, 0x74, 0x20, 0x29, 0x3b, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x28, 0x20, - 0x72, 0x65, 0x73, 0x2e, 0x78, 0x3c, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, - 0x20, 0x7c, 0x7c, 0x20, 0x74, 0x3e, 0x74, 0x6d, 0x61, 0x78, 0x20, 0x29, - 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x20, 0x2b, 0x3d, 0x20, 0x72, 0x65, - 0x73, 0x2e, 0x78, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x6d, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x73, 0x2e, 0x67, 0x62, - 0x61, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x28, 0x20, 0x74, 0x3e, 0x74, - 0x6d, 0x61, 0x78, 0x20, 0x29, 0x20, 0x6d, 0x3d, 0x76, 0x65, 0x63, 0x33, - 0x28, 0x2d, 0x31, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x20, - 0x74, 0x2c, 0x20, 0x6d, 0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, - 0x0d, 0x0a, 0x0d, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, 0x61, - 0x6c, 0x63, 0x53, 0x6f, 0x66, 0x74, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, - 0x28, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x72, 0x6f, - 0x2c, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x72, 0x64, - 0x2c, 0x20, 0x69, 0x6e, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, - 0x69, 0x6e, 0x74, 0x2c, 0x20, 0x69, 0x6e, 0x20, 0x66, 0x6c, 0x6f, 0x61, - 0x74, 0x20, 0x74, 0x6d, 0x61, 0x78, 0x20, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, - 0x65, 0x73, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0d, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x20, 0x3d, - 0x20, 0x6d, 0x69, 0x6e, 0x74, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x66, 0x6f, 0x72, 0x28, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x3d, 0x30, - 0x3b, 0x20, 0x69, 0x3c, 0x31, 0x36, 0x3b, 0x20, 0x69, 0x2b, 0x2b, 0x20, - 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, - 0x68, 0x20, 0x3d, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x64, - 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x28, 0x20, 0x72, 0x6f, 0x20, 0x2b, 0x20, 0x72, 0x64, 0x2a, 0x74, - 0x20, 0x29, 0x2e, 0x78, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, - 0x28, 0x20, 0x72, 0x65, 0x73, 0x2c, 0x20, 0x38, 0x2e, 0x30, 0x2a, 0x68, - 0x2f, 0x74, 0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x74, 0x20, 0x2b, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, - 0x70, 0x28, 0x20, 0x68, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x32, 0x2c, 0x20, - 0x30, 0x2e, 0x31, 0x30, 0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x28, 0x20, 0x68, 0x3c, 0x30, - 0x2e, 0x30, 0x30, 0x31, 0x20, 0x7c, 0x7c, 0x20, 0x74, 0x3e, 0x74, 0x6d, - 0x61, 0x78, 0x20, 0x29, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, - 0x28, 0x20, 0x72, 0x65, 0x73, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, - 0x31, 0x2e, 0x30, 0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, - 0x0a, 0x76, 0x65, 0x63, 0x33, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x4e, 0x6f, - 0x72, 0x6d, 0x61, 0x6c, 0x28, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, - 0x33, 0x20, 0x70, 0x6f, 0x73, 0x20, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x65, 0x20, 0x3d, - 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x31, 0x2e, 0x30, 0x2c, 0x2d, 0x31, - 0x2e, 0x30, 0x29, 0x2a, 0x30, 0x2e, 0x35, 0x37, 0x37, 0x33, 0x2a, 0x30, - 0x2e, 0x30, 0x30, 0x30, 0x35, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, - 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x20, 0x65, 0x2e, 0x78, 0x79, 0x79, 0x2a, - 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x28, 0x20, 0x70, - 0x6f, 0x73, 0x20, 0x2b, 0x20, 0x65, 0x2e, 0x78, 0x79, 0x79, 0x20, 0x29, - 0x2e, 0x78, 0x20, 0x2b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x65, 0x2e, 0x79, 0x79, 0x78, 0x2a, 0x73, 0x69, - 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x28, 0x20, 0x70, 0x6f, 0x73, - 0x20, 0x2b, 0x20, 0x65, 0x2e, 0x79, 0x79, 0x78, 0x20, 0x29, 0x2e, 0x78, - 0x20, 0x2b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x65, 0x2e, 0x79, 0x78, 0x79, 0x2a, 0x73, 0x69, 0x67, 0x6e, - 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x28, 0x20, 0x70, 0x6f, 0x73, 0x20, 0x2b, - 0x20, 0x65, 0x2e, 0x79, 0x78, 0x79, 0x20, 0x29, 0x2e, 0x78, 0x20, 0x2b, - 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x65, 0x2e, 0x78, 0x78, 0x78, 0x2a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, - 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x28, 0x20, 0x70, 0x6f, 0x73, 0x20, 0x2b, 0x20, 0x65, - 0x2e, 0x78, 0x78, 0x78, 0x20, 0x29, 0x2e, 0x78, 0x20, 0x29, 0x3b, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2a, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x65, 0x70, 0x73, 0x20, 0x3d, 0x20, - 0x76, 0x65, 0x63, 0x33, 0x28, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x30, 0x35, - 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x20, 0x29, - 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, - 0x6e, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x69, 0x67, - 0x6e, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x28, 0x70, 0x6f, 0x73, 0x2b, 0x65, - 0x70, 0x73, 0x2e, 0x78, 0x79, 0x79, 0x29, 0x2e, 0x78, 0x20, 0x2d, 0x20, - 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x28, 0x70, 0x6f, - 0x73, 0x2d, 0x65, 0x70, 0x73, 0x2e, 0x78, 0x79, 0x79, 0x29, 0x2e, 0x78, - 0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, - 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x28, 0x70, 0x6f, 0x73, - 0x2b, 0x65, 0x70, 0x73, 0x2e, 0x79, 0x78, 0x79, 0x29, 0x2e, 0x78, 0x20, - 0x2d, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x28, - 0x70, 0x6f, 0x73, 0x2d, 0x65, 0x70, 0x73, 0x2e, 0x79, 0x78, 0x79, 0x29, - 0x2e, 0x78, 0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x28, 0x70, - 0x6f, 0x73, 0x2b, 0x65, 0x70, 0x73, 0x2e, 0x79, 0x79, 0x78, 0x29, 0x2e, - 0x78, 0x20, 0x2d, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x64, - 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x28, 0x70, 0x6f, 0x73, 0x2d, 0x65, 0x70, 0x73, 0x2e, 0x79, 0x79, - 0x78, 0x29, 0x2e, 0x78, 0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6e, 0x6f, 0x72, 0x6d, - 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x6e, 0x6f, 0x72, 0x29, 0x3b, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x2f, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, - 0x0d, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6c, 0x63, - 0x41, 0x4f, 0x28, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, - 0x70, 0x6f, 0x73, 0x2c, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x33, - 0x20, 0x6e, 0x6f, 0x72, 0x20, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6f, 0x63, 0x63, - 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x63, 0x61, 0x20, 0x3d, - 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, - 0x6f, 0x72, 0x28, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x3d, 0x30, 0x3b, - 0x20, 0x69, 0x3c, 0x35, 0x3b, 0x20, 0x69, 0x2b, 0x2b, 0x20, 0x29, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x68, 0x72, - 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x31, 0x20, 0x2b, 0x20, 0x30, 0x2e, - 0x31, 0x32, 0x2a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x69, 0x29, 0x2f, - 0x34, 0x2e, 0x30, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x6f, 0x70, 0x6f, 0x73, - 0x20, 0x3d, 0x20, 0x20, 0x6e, 0x6f, 0x72, 0x20, 0x2a, 0x20, 0x68, 0x72, - 0x20, 0x2b, 0x20, 0x70, 0x6f, 0x73, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, - 0x64, 0x20, 0x3d, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x64, - 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x28, 0x20, 0x61, 0x6f, 0x70, 0x6f, 0x73, 0x20, 0x29, 0x2e, 0x78, - 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, - 0x63, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x2d, 0x28, 0x64, 0x64, 0x2d, 0x68, - 0x72, 0x29, 0x2a, 0x73, 0x63, 0x61, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x63, 0x61, 0x20, 0x2a, 0x3d, 0x20, - 0x30, 0x2e, 0x39, 0x35, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, - 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x20, 0x31, 0x2e, 0x30, 0x20, - 0x2d, 0x20, 0x33, 0x2e, 0x30, 0x2a, 0x6f, 0x63, 0x63, 0x2c, 0x20, 0x30, - 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x29, 0x3b, 0x0d, 0x0a, - 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x65, 0x63, 0x33, 0x20, 0x72, 0x65, - 0x6e, 0x64, 0x65, 0x72, 0x28, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, - 0x33, 0x20, 0x72, 0x6f, 0x2c, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, - 0x33, 0x20, 0x72, 0x64, 0x20, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x63, 0x6f, 0x6c, 0x6f, - 0x72, 0x20, 0x3d, 0x0d, 0x0a, 0x23, 0x69, 0x66, 0x64, 0x65, 0x66, 0x20, - 0x46, 0x41, 0x4c, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, - 0x4d, 0x4f, 0x44, 0x45, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, - 0x63, 0x33, 0x28, 0x30, 0x2e, 0x29, 0x3b, 0x0d, 0x0a, 0x23, 0x65, 0x6c, - 0x73, 0x65, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, - 0x28, 0x30, 0x2e, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x35, 0x2c, 0x20, 0x30, - 0x2e, 0x36, 0x29, 0x20, 0x2b, 0x72, 0x64, 0x2e, 0x79, 0x2a, 0x30, 0x2e, - 0x34, 0x3b, 0x0d, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x63, 0x61, 0x73, 0x74, 0x52, 0x61, - 0x79, 0x28, 0x72, 0x6f, 0x2c, 0x72, 0x64, 0x29, 0x3b, 0x0d, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x20, 0x3d, - 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x78, 0x3b, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6d, 0x20, 0x3d, - 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x79, 0x7a, 0x77, 0x3b, - 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x28, 0x20, 0x6d, 0x2e, - 0x72, 0x3e, 0x2d, 0x30, 0x2e, 0x35, 0x20, 0x29, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, 0x6f, 0x73, 0x20, 0x3d, 0x20, - 0x72, 0x6f, 0x20, 0x2b, 0x20, 0x74, 0x2a, 0x72, 0x64, 0x3b, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, - 0x20, 0x6e, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x4e, - 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x28, 0x20, 0x70, 0x6f, 0x73, 0x20, 0x29, - 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, - 0x2f, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x72, 0x65, 0x66, 0x20, 0x3d, - 0x20, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x28, 0x20, 0x72, 0x64, - 0x2c, 0x20, 0x6e, 0x6f, 0x72, 0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x6d, - 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, - 0x20, 0x6d, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x23, 0x69, 0x66, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x46, - 0x41, 0x4c, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x4d, - 0x4f, 0x44, 0x45, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x69, - 0x6e, 0x67, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x2f, 0x2f, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6f, 0x63, 0x63, - 0x20, 0x3d, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x41, 0x4f, 0x28, 0x20, 0x70, - 0x6f, 0x73, 0x2c, 0x20, 0x6e, 0x6f, 0x72, 0x20, 0x29, 0x3b, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, - 0x20, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x64, 0x69, 0x72, 0x20, - 0x3d, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, - 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x63, 0x6f, 0x73, 0x28, 0x2d, 0x30, - 0x2e, 0x34, 0x29, 0x2c, 0x20, 0x73, 0x69, 0x6e, 0x28, 0x30, 0x2e, 0x37, - 0x29, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x36, 0x29, 0x20, 0x29, 0x3b, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, - 0x33, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x6e, 0x6f, 0x72, - 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x20, 0x6c, 0x69, 0x67, 0x68, - 0x74, 0x5f, 0x64, 0x69, 0x72, 0x2d, 0x72, 0x64, 0x20, 0x29, 0x3b, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, - 0x61, 0x74, 0x20, 0x61, 0x6d, 0x62, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x3d, - 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x20, 0x30, 0x2e, 0x35, 0x2b, - 0x30, 0x2e, 0x35, 0x2a, 0x6e, 0x6f, 0x72, 0x2e, 0x79, 0x2c, 0x20, 0x30, - 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x29, 0x3b, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, - 0x74, 0x20, 0x64, 0x69, 0x66, 0x66, 0x75, 0x73, 0x65, 0x20, 0x3d, 0x20, - 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x20, 0x64, 0x6f, 0x74, 0x28, 0x20, - 0x6e, 0x6f, 0x72, 0x2c, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x64, - 0x69, 0x72, 0x20, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, - 0x2e, 0x30, 0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x61, 0x63, - 0x6b, 0x5f, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x20, 0x3d, 0x20, 0x63, 0x6c, - 0x61, 0x6d, 0x70, 0x28, 0x20, 0x64, 0x6f, 0x74, 0x28, 0x20, 0x6e, 0x6f, - 0x72, 0x2c, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, - 0x28, 0x76, 0x65, 0x63, 0x33, 0x28, 0x2d, 0x6c, 0x69, 0x67, 0x68, 0x74, - 0x5f, 0x64, 0x69, 0x72, 0x2e, 0x78, 0x2c, 0x30, 0x2e, 0x30, 0x2c, 0x2d, - 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x64, 0x69, 0x72, 0x2e, 0x7a, 0x29, - 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, - 0x20, 0x29, 0x2a, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x20, 0x31, 0x2e, - 0x30, 0x2d, 0x70, 0x6f, 0x73, 0x2e, 0x79, 0x2c, 0x30, 0x2e, 0x30, 0x2c, - 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x54, 0x4f, 0x44, 0x4f, - 0x3a, 0x20, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x20, - 0x6f, 0x6e, 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x69, 0x66, 0x66, - 0x75, 0x73, 0x65, 0x20, 0x2a, 0x3d, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x53, - 0x6f, 0x66, 0x74, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x28, 0x20, 0x70, - 0x6f, 0x73, 0x2c, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x64, 0x69, - 0x72, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x35, - 0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x70, 0x65, - 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x28, 0x20, 0x63, 0x6c, 0x61, 0x6d, - 0x70, 0x28, 0x20, 0x64, 0x6f, 0x74, 0x28, 0x20, 0x6e, 0x6f, 0x72, 0x2c, - 0x20, 0x68, 0x61, 0x6c, 0x20, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, - 0x20, 0x31, 0x2e, 0x30, 0x20, 0x29, 0x2c, 0x31, 0x36, 0x2e, 0x30, 0x29, - 0x2a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, - 0x69, 0x66, 0x66, 0x75, 0x73, 0x65, 0x20, 0x2a, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x30, 0x2e, 0x30, 0x34, 0x20, - 0x2b, 0x20, 0x30, 0x2e, 0x39, 0x36, 0x2a, 0x70, 0x6f, 0x77, 0x28, 0x20, - 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x31, 0x2e, 0x30, 0x2b, 0x64, 0x6f, - 0x74, 0x28, 0x68, 0x61, 0x6c, 0x2c, 0x72, 0x64, 0x29, 0x2c, 0x30, 0x2e, - 0x30, 0x2c, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x35, 0x2e, 0x30, 0x20, - 0x29, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6c, 0x69, 0x6e, 0x20, - 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x3b, - 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x69, - 0x6e, 0x20, 0x2b, 0x3d, 0x20, 0x31, 0x2e, 0x33, 0x30, 0x2a, 0x64, 0x69, - 0x66, 0x66, 0x75, 0x73, 0x65, 0x2a, 0x76, 0x65, 0x63, 0x33, 0x28, 0x31, - 0x2e, 0x30, 0x30, 0x2c, 0x30, 0x2e, 0x38, 0x30, 0x2c, 0x30, 0x2e, 0x35, - 0x35, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x6c, 0x69, 0x6e, 0x20, 0x2b, 0x3d, 0x20, 0x30, 0x2e, 0x34, 0x30, - 0x2a, 0x61, 0x6d, 0x62, 0x69, 0x65, 0x6e, 0x74, 0x2a, 0x76, 0x65, 0x63, - 0x33, 0x28, 0x30, 0x2e, 0x34, 0x30, 0x2c, 0x30, 0x2e, 0x36, 0x30, 0x2c, - 0x31, 0x2e, 0x30, 0x30, 0x29, 0x3b, 0x2f, 0x2f, 0x2a, 0x6f, 0x63, 0x63, - 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, - 0x69, 0x6e, 0x20, 0x2b, 0x3d, 0x20, 0x30, 0x2e, 0x35, 0x30, 0x2a, 0x62, - 0x61, 0x63, 0x6b, 0x5f, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x2a, 0x76, 0x65, - 0x63, 0x33, 0x28, 0x30, 0x2e, 0x32, 0x35, 0x2c, 0x30, 0x2e, 0x32, 0x35, - 0x2c, 0x30, 0x2e, 0x32, 0x35, 0x29, 0x3b, 0x2f, 0x2f, 0x2a, 0x6f, 0x63, - 0x63, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, - 0x72, 0x2a, 0x6c, 0x69, 0x6e, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x2b, 0x3d, - 0x20, 0x31, 0x30, 0x2e, 0x30, 0x30, 0x2a, 0x73, 0x70, 0x65, 0x2a, 0x76, - 0x65, 0x63, 0x33, 0x28, 0x31, 0x2e, 0x30, 0x30, 0x2c, 0x30, 0x2e, 0x39, - 0x30, 0x2c, 0x30, 0x2e, 0x37, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, - 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x76, 0x65, - 0x63, 0x33, 0x28, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x2c, 0x30, 0x2e, 0x30, 0x2c, 0x31, 0x2e, 0x30, 0x29, - 0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x6d, 0x61, - 0x74, 0x33, 0x20, 0x73, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x65, 0x72, 0x61, - 0x28, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x72, 0x6f, - 0x2c, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x61, - 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, 0x72, 0x20, 0x29, - 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, - 0x33, 0x20, 0x63, 0x77, 0x20, 0x3d, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, - 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x74, 0x61, 0x2d, 0x72, 0x6f, 0x29, 0x3b, - 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x63, - 0x70, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x73, 0x69, 0x6e, - 0x28, 0x63, 0x72, 0x29, 0x2c, 0x20, 0x63, 0x6f, 0x73, 0x28, 0x63, 0x72, - 0x29, 0x2c, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x63, 0x75, 0x20, 0x3d, 0x20, 0x6e, - 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x20, 0x63, 0x72, - 0x6f, 0x73, 0x73, 0x28, 0x63, 0x77, 0x2c, 0x63, 0x70, 0x29, 0x20, 0x29, - 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, - 0x63, 0x76, 0x20, 0x3d, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, - 0x7a, 0x65, 0x28, 0x20, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x28, 0x63, 0x75, - 0x2c, 0x63, 0x77, 0x29, 0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6d, 0x61, 0x74, 0x33, - 0x28, 0x20, 0x63, 0x75, 0x2c, 0x20, 0x63, 0x76, 0x2c, 0x20, 0x63, 0x77, - 0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x2f, 0x2f, - 0x20, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x6d, - 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, - 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x0d, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, - 0x20, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x73, - 0x65, 0x63, 0x74, 0x28, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x33, - 0x20, 0x72, 0x6f, 0x2c, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x33, - 0x20, 0x72, 0x64, 0x2c, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x34, - 0x20, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x20, 0x29, 0x20, 0x20, 0x7b, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, - 0x2d, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x72, 0x6f, 0x2c, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x2b, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x77, 0x29, 0x2f, 0x64, 0x6f, 0x74, 0x28, 0x72, 0x64, 0x2c, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0d, - 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, - 0x61, 0x69, 0x6e, 0x28, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6f, 0x74, 0x20, 0x3d, - 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0d, - 0x0a, 0x2f, 0x2f, 0x20, 0x54, 0x4f, 0x44, 0x4f, 0x3a, 0x20, 0x20, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x20, 0x6f, 0x6e, 0x20, - 0x41, 0x41, 0x0d, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, - 0x41, 0x41, 0x20, 0x31, 0x0d, 0x0a, 0x23, 0x69, 0x66, 0x20, 0x41, 0x41, - 0x3e, 0x31, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x28, - 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x3d, 0x30, 0x3b, 0x20, 0x6d, 0x3c, - 0x41, 0x41, 0x3b, 0x20, 0x6d, 0x2b, 0x2b, 0x20, 0x29, 0x0d, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x28, 0x20, 0x69, 0x6e, 0x74, 0x20, - 0x6e, 0x3d, 0x30, 0x3b, 0x20, 0x6e, 0x3c, 0x41, 0x41, 0x3b, 0x20, 0x6e, - 0x2b, 0x2b, 0x20, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, - 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, - 0x6e, 0x61, 0x74, 0x65, 0x73, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6f, 0x20, 0x3d, 0x20, - 0x76, 0x65, 0x63, 0x32, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x6d, - 0x29, 0x2c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x6e, 0x29, 0x29, 0x20, - 0x2f, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x41, 0x41, 0x29, 0x20, - 0x2d, 0x20, 0x30, 0x2e, 0x35, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x70, 0x20, 0x3d, - 0x20, 0x28, 0x2d, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x78, 0x79, 0x20, 0x2b, 0x20, 0x32, 0x2e, 0x30, 0x2a, 0x28, - 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, - 0x2e, 0x78, 0x79, 0x2b, 0x6f, 0x29, 0x29, 0x2f, 0x72, 0x65, 0x73, 0x6f, - 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x3b, 0x0d, 0x0a, 0x23, - 0x65, 0x6c, 0x73, 0x65, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x70, 0x20, 0x3d, 0x20, 0x28, - 0x2d, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x78, 0x79, 0x20, 0x2b, 0x20, 0x32, 0x2e, 0x30, 0x2a, 0x67, 0x6c, 0x5f, - 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x2e, 0x78, 0x79, - 0x29, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x79, 0x3b, 0x0d, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0d, - 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, - 0x65, 0x63, 0x33, 0x20, 0x72, 0x6f, 0x20, 0x3d, 0x20, 0x76, 0x69, 0x65, - 0x77, 0x45, 0x79, 0x65, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x61, 0x20, 0x3d, - 0x20, 0x76, 0x69, 0x65, 0x77, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3b, - 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x6d, 0x61, 0x74, 0x33, 0x20, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x5f, - 0x74, 0x6f, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x20, 0x3d, 0x20, 0x73, - 0x65, 0x74, 0x43, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x28, 0x20, 0x72, 0x6f, - 0x2c, 0x20, 0x74, 0x61, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x20, 0x29, 0x3b, - 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, - 0x63, 0x33, 0x20, 0x72, 0x61, 0x79, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x63, 0x61, 0x6d, 0x65, 0x72, - 0x61, 0x5f, 0x74, 0x6f, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x20, 0x2a, - 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x20, - 0x76, 0x65, 0x63, 0x33, 0x28, 0x70, 0x2e, 0x78, 0x79, 0x2c, 0x32, 0x2e, - 0x30, 0x29, 0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x63, 0x6f, - 0x6c, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x28, 0x20, - 0x72, 0x6f, 0x2c, 0x20, 0x72, 0x61, 0x79, 0x5f, 0x64, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x20, - 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x28, 0x20, 0x63, 0x6f, 0x6c, 0x2c, 0x20, - 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x29, - 0x20, 0x29, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x67, 0x61, 0x6d, 0x6d, 0x61, - 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, - 0x76, 0x69, 0x73, 0x75, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x20, 0x3e, - 0x20, 0x30, 0x2e, 0x29, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, - 0x74, 0x20, 0x64, 0x69, 0x73, 0x74, 0x20, 0x3d, 0x20, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x65, 0x63, 0x74, 0x28, - 0x72, 0x6f, 0x2c, 0x20, 0x72, 0x61, 0x79, 0x5f, 0x64, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, - 0x30, 0x2c, 0x30, 0x2c, 0x31, 0x2e, 0x2c, 0x30, 0x29, 0x29, 0x3b, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x69, 0x66, 0x20, 0x28, 0x64, 0x69, 0x73, 0x74, 0x20, 0x3e, 0x20, - 0x30, 0x2e, 0x29, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, - 0x65, 0x63, 0x33, 0x20, 0x74, 0x20, 0x3d, 0x20, 0x72, 0x6f, 0x20, 0x2b, - 0x20, 0x64, 0x69, 0x73, 0x74, 0x2a, 0x72, 0x61, 0x79, 0x5f, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x64, 0x66, 0x5f, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x3d, 0x20, 0x73, 0x69, 0x67, 0x6e, - 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x28, 0x74, 0x29, 0x2e, 0x78, 0x3b, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, - 0x28, 0x73, 0x64, 0x66, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x3c, - 0x20, 0x30, 0x2e, 0x20, 0x3f, 0x20, 0x0d, 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, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, - 0x28, 0x31, 0x2e, 0x2c, 0x30, 0x2e, 0x2c, 0x30, 0x2e, 0x2c, 0x20, 0x73, - 0x69, 0x6e, 0x28, 0x73, 0x64, 0x66, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x2a, 0x38, 0x2e, 0x2b, 0x72, 0x75, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x2a, - 0x32, 0x2e, 0x29, 0x2f, 0x34, 0x2e, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x32, - 0x35, 0x29, 0x3a, 0x20, 0x0d, 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, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x30, - 0x2e, 0x31, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x35, 0x2c, 0x30, 0x2e, - 0x38, 0x2c, 0x73, 0x69, 0x6e, 0x28, 0x73, 0x64, 0x66, 0x5f, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x2a, 0x38, 0x2e, 0x2d, 0x72, 0x75, 0x6e, 0x54, 0x69, - 0x6d, 0x65, 0x2a, 0x32, 0x2e, 0x29, 0x2f, 0x34, 0x2e, 0x20, 0x2b, 0x20, - 0x30, 0x2e, 0x32, 0x35, 0x20, 0x29, 0x29, 0x20, 0x3b, 0x0d, 0x0a, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x20, 0x3d, 0x20, 0x6d, - 0x69, 0x78, 0x28, 0x63, 0x6f, 0x6c, 0x2c, 0x20, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x72, 0x67, 0x62, 0x2c, - 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, - 0x2e, 0x61, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6f, 0x74, 0x20, 0x2b, 0x3d, - 0x20, 0x63, 0x6f, 0x6c, 0x3b, 0x0d, 0x0a, 0x23, 0x69, 0x66, 0x20, 0x41, - 0x41, 0x3e, 0x31, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x74, 0x6f, 0x74, 0x20, 0x2f, 0x3d, 0x20, 0x66, - 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x41, 0x41, 0x2a, 0x41, 0x41, 0x29, 0x3b, - 0x0d, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0d, 0x0a, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x43, 0x6f, 0x6c, - 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x20, 0x74, - 0x6f, 0x74, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x29, 0x3b, 0x0d, 0x0a, - 0x7d, 0x0d, 0x0a, 0x00 -}; -unsigned int shader_base_fs_len = 5308; -unsigned char shader_prefix_fs[] = { - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x64, 0x52, 0x6f, 0x75, 0x6e, - 0x64, 0x42, 0x6f, 0x78, 0x28, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, - 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x62, 0x2c, 0x20, 0x66, 0x6c, - 0x6f, 0x61, 0x74, 0x20, 0x72, 0x20, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, - 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x71, 0x20, 0x3d, 0x20, 0x61, - 0x62, 0x73, 0x28, 0x70, 0x29, 0x20, 0x2d, 0x20, 0x62, 0x3b, 0x0d, 0x0a, - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x28, 0x6d, 0x61, 0x78, 0x28, 0x71, 0x2c, 0x30, 0x2e, - 0x30, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x6d, 0x61, - 0x78, 0x28, 0x71, 0x2e, 0x78, 0x2c, 0x6d, 0x61, 0x78, 0x28, 0x71, 0x2e, - 0x79, 0x2c, 0x71, 0x2e, 0x7a, 0x29, 0x29, 0x2c, 0x30, 0x2e, 0x30, 0x29, - 0x20, 0x2d, 0x20, 0x72, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x42, - 0x6f, 0x78, 0x28, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, 0x2c, 0x20, - 0x76, 0x65, 0x63, 0x33, 0x20, 0x62, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, - 0x74, 0x20, 0x72, 0x20, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, - 0x76, 0x65, 0x63, 0x33, 0x20, 0x71, 0x20, 0x3d, 0x20, 0x61, 0x62, 0x73, - 0x28, 0x70, 0x29, 0x20, 0x2d, 0x20, 0x62, 0x3b, 0x0d, 0x0a, 0x20, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x28, 0x6d, 0x61, 0x78, 0x28, 0x71, 0x2c, 0x30, 0x2e, 0x30, 0x29, - 0x29, 0x20, 0x2b, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x6d, 0x61, 0x78, 0x28, - 0x71, 0x2e, 0x78, 0x2c, 0x6d, 0x61, 0x78, 0x28, 0x71, 0x2e, 0x79, 0x2c, - 0x71, 0x2e, 0x7a, 0x29, 0x29, 0x2c, 0x30, 0x2e, 0x30, 0x29, 0x20, 0x2d, - 0x20, 0x72, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x0d, 0x0a, - 0x76, 0x65, 0x63, 0x34, 0x20, 0x6f, 0x70, 0x53, 0x6d, 0x6f, 0x6f, 0x74, - 0x68, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x76, 0x65, 0x63, 0x34, - 0x20, 0x61, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x62, 0x2c, 0x20, - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x6c, 0x65, 0x6e, 0x64, 0x20, - 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, - 0x6f, 0x61, 0x74, 0x20, 0x68, 0x20, 0x3d, 0x20, 0x20, 0x6d, 0x61, 0x78, - 0x28, 0x20, 0x62, 0x6c, 0x65, 0x6e, 0x64, 0x2d, 0x61, 0x62, 0x73, 0x28, - 0x61, 0x2e, 0x78, 0x2d, 0x62, 0x2e, 0x78, 0x29, 0x2c, 0x20, 0x30, 0x2e, - 0x30, 0x20, 0x29, 0x2f, 0x62, 0x6c, 0x65, 0x6e, 0x64, 0x3b, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x20, - 0x3d, 0x20, 0x68, 0x2a, 0x68, 0x2a, 0x30, 0x2e, 0x35, 0x3b, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x20, - 0x3d, 0x20, 0x6d, 0x2a, 0x62, 0x6c, 0x65, 0x6e, 0x64, 0x2a, 0x28, 0x31, - 0x2e, 0x30, 0x2f, 0x32, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x61, 0x2e, - 0x78, 0x3c, 0x62, 0x2e, 0x78, 0x29, 0x20, 0x3f, 0x20, 0x76, 0x65, 0x63, - 0x34, 0x28, 0x61, 0x2e, 0x78, 0x2d, 0x73, 0x2c, 0x6d, 0x69, 0x78, 0x28, - 0x61, 0x2e, 0x67, 0x62, 0x61, 0x2c, 0x62, 0x2e, 0x67, 0x62, 0x61, 0x2c, - 0x6d, 0x29, 0x29, 0x20, 0x3a, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x62, - 0x2e, 0x78, 0x2d, 0x73, 0x2c, 0x6d, 0x69, 0x78, 0x28, 0x61, 0x2e, 0x67, - 0x62, 0x61, 0x2c, 0x62, 0x2e, 0x67, 0x62, 0x61, 0x2c, 0x31, 0x2e, 0x30, - 0x2d, 0x6d, 0x29, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, - 0x76, 0x65, 0x63, 0x34, 0x20, 0x42, 0x6c, 0x6f, 0x62, 0x62, 0x79, 0x4d, - 0x69, 0x6e, 0x28, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x2c, 0x20, - 0x76, 0x65, 0x63, 0x34, 0x20, 0x62, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, - 0x74, 0x20, 0x62, 0x6c, 0x65, 0x6e, 0x64, 0x20, 0x29, 0x0d, 0x0a, 0x7b, - 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, - 0x68, 0x20, 0x3d, 0x20, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x20, 0x62, 0x6c, - 0x65, 0x6e, 0x64, 0x2d, 0x61, 0x62, 0x73, 0x28, 0x61, 0x2e, 0x78, 0x2d, - 0x62, 0x2e, 0x78, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x20, 0x29, 0x2f, - 0x62, 0x6c, 0x65, 0x6e, 0x64, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x20, 0x3d, 0x20, 0x68, 0x2a, - 0x68, 0x2a, 0x30, 0x2e, 0x35, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x6d, 0x2a, - 0x62, 0x6c, 0x65, 0x6e, 0x64, 0x2a, 0x28, 0x31, 0x2e, 0x30, 0x2f, 0x32, - 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x61, 0x2e, 0x78, 0x3c, 0x62, 0x2e, - 0x78, 0x29, 0x20, 0x3f, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x61, 0x2e, - 0x78, 0x2d, 0x73, 0x2c, 0x6d, 0x69, 0x78, 0x28, 0x61, 0x2e, 0x67, 0x62, - 0x61, 0x2c, 0x62, 0x2e, 0x67, 0x62, 0x61, 0x2c, 0x6d, 0x29, 0x29, 0x20, - 0x3a, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x62, 0x2e, 0x78, 0x2d, 0x73, - 0x2c, 0x6d, 0x69, 0x78, 0x28, 0x61, 0x2e, 0x67, 0x62, 0x61, 0x2c, 0x62, - 0x2e, 0x67, 0x62, 0x61, 0x2c, 0x31, 0x2e, 0x30, 0x2d, 0x6d, 0x29, 0x29, - 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x65, 0x63, 0x34, - 0x20, 0x4d, 0x69, 0x6e, 0x28, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, - 0x2c, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x62, 0x20, 0x29, 0x0d, 0x0a, - 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x20, 0x28, 0x61, 0x2e, 0x78, 0x3c, 0x62, 0x2e, 0x78, 0x29, 0x20, - 0x3f, 0x20, 0x61, 0x20, 0x3a, 0x20, 0x62, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, - 0x0a, 0x0d, 0x0a, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6f, 0x70, 0x53, 0x6d, - 0x6f, 0x6f, 0x74, 0x68, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, - 0x70, 0x70, 0x65, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x20, 0x76, - 0x65, 0x63, 0x34, 0x20, 0x61, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, - 0x62, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x6c, 0x65, - 0x6e, 0x64, 0x20, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x68, 0x20, 0x3d, 0x20, 0x20, - 0x6d, 0x61, 0x78, 0x28, 0x20, 0x62, 0x6c, 0x65, 0x6e, 0x64, 0x2d, 0x61, - 0x62, 0x73, 0x28, 0x61, 0x2e, 0x78, 0x2d, 0x62, 0x2e, 0x78, 0x29, 0x2c, - 0x20, 0x30, 0x2e, 0x30, 0x20, 0x29, 0x2f, 0x62, 0x6c, 0x65, 0x6e, 0x64, - 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, - 0x20, 0x6d, 0x20, 0x3d, 0x20, 0x68, 0x2a, 0x68, 0x2a, 0x30, 0x2e, 0x35, - 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, - 0x20, 0x73, 0x20, 0x3d, 0x20, 0x6d, 0x2a, 0x62, 0x6c, 0x65, 0x6e, 0x64, - 0x2a, 0x28, 0x31, 0x2e, 0x30, 0x2f, 0x32, 0x2e, 0x30, 0x29, 0x3b, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, - 0x28, 0x61, 0x2e, 0x78, 0x3c, 0x62, 0x2e, 0x78, 0x29, 0x20, 0x3f, 0x20, - 0x76, 0x65, 0x63, 0x34, 0x28, 0x61, 0x2e, 0x78, 0x2d, 0x73, 0x2c, 0x61, - 0x2e, 0x67, 0x62, 0x61, 0x29, 0x20, 0x3a, 0x20, 0x76, 0x65, 0x63, 0x34, - 0x28, 0x62, 0x2e, 0x78, 0x2d, 0x73, 0x2c, 0x62, 0x2e, 0x67, 0x62, 0x61, - 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x65, 0x63, - 0x34, 0x20, 0x6f, 0x70, 0x53, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x53, 0x75, - 0x62, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x76, - 0x65, 0x63, 0x34, 0x20, 0x64, 0x31, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x34, - 0x20, 0x64, 0x32, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6b, - 0x20, 0x29, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, - 0x6f, 0x61, 0x74, 0x20, 0x64, 0x69, 0x73, 0x74, 0x20, 0x3d, 0x20, 0x6f, - 0x70, 0x53, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x55, 0x6e, 0x69, 0x6f, 0x6e, - 0x28, 0x64, 0x31, 0x2c, 0x76, 0x65, 0x63, 0x34, 0x28, 0x2d, 0x64, 0x32, - 0x2e, 0x78, 0x2c, 0x20, 0x64, 0x32, 0x2e, 0x67, 0x62, 0x61, 0x29, 0x2c, - 0x6b, 0x29, 0x2e, 0x78, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x2d, - 0x64, 0x69, 0x73, 0x74, 0x2c, 0x20, 0x64, 0x32, 0x2e, 0x67, 0x62, 0x61, - 0x29, 0x3b, 0x20, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x65, - 0x63, 0x34, 0x20, 0x6f, 0x70, 0x53, 0x28, 0x20, 0x76, 0x65, 0x63, 0x34, - 0x20, 0x64, 0x31, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x64, 0x32, - 0x20, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x6d, - 0x61, 0x78, 0x28, 0x2d, 0x64, 0x32, 0x2e, 0x78, 0x2c, 0x64, 0x31, 0x2e, - 0x78, 0x29, 0x2c, 0x20, 0x64, 0x31, 0x2e, 0x67, 0x62, 0x61, 0x29, 0x3b, - 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x65, 0x63, 0x34, 0x20, - 0x6f, 0x70, 0x55, 0x28, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x64, 0x31, - 0x2c, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x64, 0x32, 0x20, 0x29, 0x0d, - 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, - 0x72, 0x6e, 0x20, 0x28, 0x64, 0x31, 0x2e, 0x78, 0x3c, 0x64, 0x32, 0x2e, - 0x78, 0x29, 0x20, 0x3f, 0x20, 0x64, 0x31, 0x20, 0x3a, 0x20, 0x64, 0x32, - 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x65, 0x63, 0x33, - 0x20, 0x6f, 0x70, 0x53, 0x79, 0x6d, 0x58, 0x28, 0x20, 0x76, 0x65, 0x63, - 0x33, 0x20, 0x70, 0x20, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x70, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x61, 0x62, 0x73, 0x28, - 0x70, 0x2e, 0x78, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x70, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, - 0x0a, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6f, 0x70, 0x53, 0x79, 0x6d, 0x59, - 0x28, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, 0x20, 0x29, 0x0d, 0x0a, - 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x2e, 0x79, 0x20, 0x3d, - 0x20, 0x61, 0x62, 0x73, 0x28, 0x70, 0x2e, 0x79, 0x29, 0x3b, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x70, - 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6f, - 0x70, 0x53, 0x79, 0x6d, 0x5a, 0x28, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, - 0x70, 0x20, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x70, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x62, 0x73, 0x28, 0x70, 0x2e, - 0x7a, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x70, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x76, - 0x65, 0x63, 0x33, 0x20, 0x6f, 0x70, 0x53, 0x79, 0x6d, 0x58, 0x59, 0x28, - 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, 0x20, 0x29, 0x0d, 0x0a, 0x7b, - 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x2e, 0x78, 0x79, 0x20, 0x3d, - 0x20, 0x61, 0x62, 0x73, 0x28, 0x70, 0x2e, 0x78, 0x79, 0x29, 0x3b, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, - 0x70, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x76, 0x65, 0x63, 0x33, 0x20, - 0x6f, 0x70, 0x53, 0x79, 0x6d, 0x58, 0x5a, 0x28, 0x20, 0x76, 0x65, 0x63, - 0x33, 0x20, 0x70, 0x20, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x70, 0x2e, 0x78, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x62, 0x73, - 0x28, 0x70, 0x2e, 0x78, 0x7a, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x70, 0x3b, 0x0d, 0x0a, - 0x7d, 0x0d, 0x0a, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6f, 0x70, 0x53, 0x79, - 0x6d, 0x59, 0x5a, 0x28, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, 0x20, - 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x2e, - 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x62, 0x73, 0x28, 0x70, 0x2e, 0x79, - 0x7a, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x70, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x76, - 0x65, 0x63, 0x33, 0x20, 0x6f, 0x70, 0x53, 0x79, 0x6d, 0x58, 0x59, 0x5a, - 0x28, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, 0x20, 0x29, 0x0d, 0x0a, - 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x2e, 0x78, 0x79, 0x7a, - 0x20, 0x3d, 0x20, 0x61, 0x62, 0x73, 0x28, 0x70, 0x2e, 0x78, 0x79, 0x7a, - 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, - 0x72, 0x6e, 0x20, 0x70, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, - 0x76, 0x65, 0x63, 0x33, 0x20, 0x6f, 0x70, 0x52, 0x6f, 0x74, 0x61, 0x74, - 0x65, 0x58, 0x59, 0x5a, 0x28, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, - 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x68, 0x65, 0x74, 0x61, - 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, - 0x6f, 0x61, 0x74, 0x20, 0x63, 0x7a, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x73, - 0x28, 0x74, 0x68, 0x65, 0x74, 0x61, 0x2e, 0x7a, 0x29, 0x3b, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x7a, - 0x20, 0x3d, 0x20, 0x73, 0x69, 0x6e, 0x28, 0x74, 0x68, 0x65, 0x74, 0x61, - 0x2e, 0x7a, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, - 0x6f, 0x61, 0x74, 0x20, 0x63, 0x79, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x73, - 0x28, 0x74, 0x68, 0x65, 0x74, 0x61, 0x2e, 0x79, 0x29, 0x3b, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x79, - 0x20, 0x3d, 0x20, 0x73, 0x69, 0x6e, 0x28, 0x74, 0x68, 0x65, 0x74, 0x61, - 0x2e, 0x79, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, - 0x6f, 0x61, 0x74, 0x20, 0x63, 0x78, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x73, - 0x28, 0x74, 0x68, 0x65, 0x74, 0x61, 0x2e, 0x78, 0x29, 0x3b, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x78, - 0x20, 0x3d, 0x20, 0x73, 0x69, 0x6e, 0x28, 0x74, 0x68, 0x65, 0x74, 0x61, - 0x2e, 0x78, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x6d, 0x61, 0x74, 0x33, 0x20, 0x6d, 0x61, 0x74, 0x20, 0x3d, 0x20, 0x6d, - 0x61, 0x74, 0x33, 0x28, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x7a, - 0x2a, 0x63, 0x79, 0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x7a, - 0x2a, 0x73, 0x79, 0x2a, 0x73, 0x78, 0x20, 0x2d, 0x20, 0x63, 0x78, 0x2a, - 0x73, 0x7a, 0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x7a, 0x2a, - 0x73, 0x78, 0x20, 0x2b, 0x20, 0x63, 0x7a, 0x2a, 0x63, 0x78, 0x2a, 0x73, - 0x79, 0x2c, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x79, - 0x2a, 0x73, 0x7a, 0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x7a, - 0x2a, 0x63, 0x78, 0x20, 0x2b, 0x20, 0x73, 0x7a, 0x2a, 0x73, 0x79, 0x2a, - 0x73, 0x78, 0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x78, 0x2a, - 0x73, 0x7a, 0x2a, 0x73, 0x79, 0x20, 0x2d, 0x20, 0x63, 0x7a, 0x2a, 0x73, - 0x78, 0x2c, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x73, - 0x79, 0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x79, 0x2a, 0x73, - 0x78, 0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x79, 0x2a, 0x63, - 0x78, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6d, 0x61, 0x74, 0x2a, 0x70, 0x3b, - 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x0d, 0x0a, 0x00 -}; -unsigned int shader_prefix_fs_len = 2446; -unsigned char slicer_body_fs[] = { - 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x66, 0x72, 0x61, 0x67, - 0x54, 0x65, 0x78, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x3b, 0x0d, 0x0a, 0x6f, - 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x66, 0x69, 0x6e, 0x61, - 0x6c, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0d, 0x0a, 0x75, 0x6e, 0x69, - 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x7a, - 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, - 0x69, 0x6e, 0x28, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x64, 0x66, 0x5f, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x20, 0x3d, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x65, - 0x64, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x28, 0x76, 0x65, 0x63, 0x33, 0x28, 0x66, 0x72, - 0x61, 0x67, 0x54, 0x65, 0x78, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x2c, 0x20, - 0x7a, 0x29, 0x29, 0x2e, 0x78, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, - 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x76, 0x65, 0x63, 0x33, 0x28, - 0x73, 0x64, 0x66, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x29, 0x2c, 0x20, - 0x31, 0x2e, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x00 -}; -unsigned int slicer_body_fs_len = 202; -unsigned char selection_fs[] = { - 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x66, 0x69, 0x6e, - 0x61, 0x6c, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0d, 0x0a, 0x2f, 0x2f, - 0x20, 0x69, 0x6e, 0x74, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x74, 0x65, - 0x78, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x3b, 0x0d, 0x0a, 0x75, 0x6e, 0x69, - 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x69, - 0x65, 0x77, 0x45, 0x79, 0x65, 0x3b, 0x20, 0x0d, 0x0a, 0x75, 0x6e, 0x69, - 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x69, - 0x65, 0x77, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3b, 0x20, 0x0d, 0x0a, - 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, 0x32, - 0x20, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x3b, - 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x65, 0x63, 0x34, 0x20, 0x63, 0x61, 0x73, - 0x74, 0x52, 0x61, 0x79, 0x28, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, - 0x33, 0x20, 0x72, 0x6f, 0x2c, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, - 0x33, 0x20, 0x72, 0x64, 0x20, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x69, - 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x31, 0x3b, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x61, 0x78, - 0x20, 0x3d, 0x20, 0x33, 0x30, 0x30, 0x2e, 0x30, 0x3b, 0x0d, 0x0a, 0x0d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, - 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x69, 0x6e, 0x3b, 0x0d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6d, 0x20, 0x3d, 0x20, 0x76, - 0x65, 0x63, 0x33, 0x28, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x66, 0x6f, 0x72, 0x28, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x3d, - 0x30, 0x3b, 0x20, 0x69, 0x3c, 0x36, 0x34, 0x3b, 0x20, 0x69, 0x2b, 0x2b, - 0x20, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, - 0x20, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x20, 0x3d, 0x20, 0x30, 0x2e, - 0x30, 0x30, 0x30, 0x31, 0x2a, 0x74, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x72, 0x65, - 0x73, 0x20, 0x3d, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x64, - 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x28, 0x20, 0x72, 0x6f, 0x2b, 0x72, 0x64, 0x2a, 0x74, 0x20, 0x29, - 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, - 0x66, 0x28, 0x20, 0x72, 0x65, 0x73, 0x2e, 0x78, 0x3c, 0x70, 0x72, 0x65, - 0x63, 0x69, 0x73, 0x20, 0x7c, 0x7c, 0x20, 0x74, 0x3e, 0x74, 0x6d, 0x61, - 0x78, 0x20, 0x29, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x20, 0x2b, 0x3d, - 0x20, 0x72, 0x65, 0x73, 0x2e, 0x78, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x73, - 0x2e, 0x67, 0x62, 0x61, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, - 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x28, 0x20, - 0x74, 0x3e, 0x74, 0x6d, 0x61, 0x78, 0x20, 0x29, 0x20, 0x6d, 0x3d, 0x76, - 0x65, 0x63, 0x33, 0x28, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x34, - 0x28, 0x20, 0x74, 0x2c, 0x20, 0x6d, 0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, - 0x0d, 0x0a, 0x0d, 0x0a, 0x6d, 0x61, 0x74, 0x33, 0x20, 0x73, 0x65, 0x74, - 0x43, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x28, 0x20, 0x69, 0x6e, 0x20, 0x76, - 0x65, 0x63, 0x33, 0x20, 0x72, 0x6f, 0x2c, 0x20, 0x69, 0x6e, 0x20, 0x76, - 0x65, 0x63, 0x33, 0x20, 0x74, 0x61, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, - 0x74, 0x20, 0x63, 0x72, 0x20, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x63, 0x77, 0x20, 0x3d, - 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x74, - 0x61, 0x2d, 0x72, 0x6f, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x76, 0x65, 0x63, 0x33, 0x20, 0x63, 0x70, 0x20, 0x3d, 0x20, 0x76, 0x65, - 0x63, 0x33, 0x28, 0x73, 0x69, 0x6e, 0x28, 0x63, 0x72, 0x29, 0x2c, 0x20, - 0x63, 0x6f, 0x73, 0x28, 0x63, 0x72, 0x29, 0x2c, 0x30, 0x2e, 0x30, 0x29, - 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, - 0x63, 0x75, 0x20, 0x3d, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, - 0x7a, 0x65, 0x28, 0x20, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x28, 0x63, 0x77, - 0x2c, 0x63, 0x70, 0x29, 0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x63, 0x76, 0x20, 0x3d, 0x20, 0x6e, - 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x20, 0x63, 0x72, - 0x6f, 0x73, 0x73, 0x28, 0x63, 0x75, 0x2c, 0x63, 0x77, 0x29, 0x20, 0x29, - 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x20, 0x6d, 0x61, 0x74, 0x33, 0x28, 0x20, 0x63, 0x75, 0x2c, 0x20, - 0x63, 0x76, 0x2c, 0x20, 0x63, 0x77, 0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, - 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, - 0x6e, 0x28, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x76, 0x65, 0x63, 0x32, 0x20, 0x70, 0x20, 0x3d, 0x20, 0x28, 0x2d, 0x72, - 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, - 0x20, 0x2b, 0x20, 0x32, 0x2e, 0x30, 0x2a, 0x67, 0x6c, 0x5f, 0x46, 0x72, - 0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x2e, 0x78, 0x79, 0x29, 0x2f, - 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, - 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x61, 0x74, - 0x33, 0x20, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x5f, 0x74, 0x6f, 0x5f, - 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x20, 0x3d, 0x20, 0x73, 0x65, 0x74, 0x43, - 0x61, 0x6d, 0x65, 0x72, 0x61, 0x28, 0x20, 0x76, 0x69, 0x65, 0x77, 0x45, - 0x79, 0x65, 0x2c, 0x20, 0x76, 0x69, 0x65, 0x77, 0x43, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x20, 0x29, 0x3b, 0x0d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x72, 0x61, 0x79, - 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, - 0x20, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x5f, 0x74, 0x6f, 0x5f, 0x77, - 0x6f, 0x72, 0x6c, 0x64, 0x20, 0x2a, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, - 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x70, - 0x2e, 0x78, 0x79, 0x2c, 0x32, 0x2e, 0x30, 0x29, 0x20, 0x29, 0x3b, 0x0d, - 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x6e, 0x61, 0x6c, - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, - 0x28, 0x63, 0x61, 0x73, 0x74, 0x52, 0x61, 0x79, 0x28, 0x20, 0x76, 0x69, - 0x65, 0x77, 0x45, 0x79, 0x65, 0x2c, 0x20, 0x72, 0x61, 0x79, 0x5f, 0x64, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x29, 0x2e, 0x67, - 0x62, 0x61, 0x2c, 0x20, 0x31, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, - 0x20, 0x0d, 0x0a, 0x00 -}; -unsigned int selection_fs_len = 1096; diff --git a/tools/buildshaders.ps1 b/tools/buildshaders.ps1 new file mode 100644 index 0000000..1cbdcaa --- /dev/null +++ b/tools/buildshaders.ps1 @@ -0,0 +1,52 @@ +# Define the paths +$srcPath = "src" +$buildPath = "build" + +# Create the build directory if it doesn't exist +if (-Not (Test-Path $buildPath)) { + New-Item -ItemType Directory -Path $buildPath +} + +# Copy .fs files from src to build and list each file processed +Get-ChildItem -Path $srcPath -Filter *.fs | ForEach-Object { + Write-Output "Copying: $($_.FullName)" + Copy-Item -Path $_.FullName -Destination $buildPath +} + +# Define the output header file +$headerFile = "$buildPath\shaders.h" + +# Clear existing content in the header file or create it if it doesn't exist +if (Test-Path $headerFile) { + Clear-Content $headerFile +} else { + New-Item -ItemType File -Path $headerFile +} +# List of files in the specific order required +$fileList = @( + "shader_base.fs", + "shader_prefix.fs", + "slicer_body.fs", + "selection.fs" +) +# Process and append binary data to the header file +foreach ($fileName in $fileList) { + $filePath = Join-Path $buildPath $fileName + if (Test-Path $filePath) { + Write-Output "Processing: $filePath for header file" + $fileData = [System.IO.File]::ReadAllBytes($filePath) + $variableName = [System.IO.Path]::GetFileNameWithoutExtension($fileName) + $hexString = ($fileData | ForEach-Object { "0x{0:x2}" -f $_ }) -join ', ' + $arrayDefinition = "unsigned char ${variableName}_fs[] = {$hexString};`n" + $lengthDefinition = "unsigned int ${variableName}_len = $($fileData.Length);`n" + + # Append formatted string to header file + Add-Content -Path $headerFile -Value $arrayDefinition + Add-Content -Path $headerFile -Value $lengthDefinition + } else { + Write-Output "Warning: File $filePath does not exist." + } +} + +# Notify completion +Write-Output "All specified files have been processed and appended to $headerFile."