Commit: 868e680986e37bf538d3ec0142a79e68986293b9
Parent: 4cd6c4efe3c2bd8397dbae1de68e5627deecbfd2
Author: Randy Palamar
Date: Fri, 24 Oct 2025 07:13:53 -0600
build: support shader baking
this is useful for prebuilt binaries - the exe will be able to run
from anywhere.
Diffstat:
| M | beamformer.c | | | 47 | ++++++++++++++++++++++++++++++++--------------- |
| M | beamformer.h | | | 1 | + |
| M | build.c | | | 105 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------- |
| A | generated/beamformer_shaders.c | | | 1311 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| M | static.c | | | 42 | +++++++++++++++++++++++++----------------- |
5 files changed, 1456 insertions(+), 50 deletions(-)
diff --git a/beamformer.c b/beamformer.c
@@ -722,8 +722,10 @@ load_compute_shader(BeamformerCtx *ctx, BeamformerComputePlan *cp, u32 shader_sl
i32 reloadable_index = beamformer_shader_reloadable_index_by_shader[shader];
if (reloadable_index != -1) {
BeamformerShaderKind base_shader = beamformer_reloadable_shader_kinds[reloadable_index];
- s8 path = push_s8_from_parts(&arena, ctx->os.path_separator, s8("shaders"),
- beamformer_reloadable_shader_files[reloadable_index]);
+ s8 path;
+ if (!BakeShaders)
+ path = push_s8_from_parts(&arena, ctx->os.path_separator, s8("shaders"),
+ beamformer_reloadable_shader_files[reloadable_index]);
Stream shader_stream = arena_stream(arena);
stream_push_shader_header(&shader_stream, base_shader, compute_headers[base_shader]);
@@ -762,11 +764,17 @@ load_compute_shader(BeamformerCtx *ctx, BeamformerComputePlan *cp, u32 shader_sl
stream_append_s8(&shader_stream, s8("\n#line 1\n"));
- s8 shader_text = arena_stream_commit(&arena, &shader_stream);
- s8 file_text = os_read_whole_file(&arena, (c8 *)path.data);
+ s8 shader_text;
+ if (BakeShaders) {
+ stream_append_s8(&shader_stream, beamformer_shader_data[reloadable_index]);
+ shader_text = arena_stream_commit(&arena, &shader_stream);
+ } else {
+ shader_text = arena_stream_commit(&arena, &shader_stream);
+ s8 file_text = os_read_whole_file(&arena, (c8 *)path.data);
- assert(shader_text.data + shader_text.len == file_text.data);
- shader_text.len += file_text.len;
+ assert(shader_text.data + shader_text.len == file_text.data);
+ shader_text.len += file_text.len;
+ }
/* TODO(rnp): instance name */
s8 shader_name = beamformer_shader_names[shader];
@@ -1041,17 +1049,27 @@ do_compute_shader(BeamformerCtx *ctx, BeamformerComputePlan *cp, BeamformerFrame
}
function s8
-shader_text_with_header(s8 header, s8 filepath, BeamformerShaderKind shader_kind, Arena *arena)
+shader_text_with_header(s8 header, s8 filepath, b32 has_file, BeamformerShaderKind shader_kind, Arena *arena)
{
Stream sb = arena_stream(*arena);
stream_push_shader_header(&sb, shader_kind, header);
stream_append_s8(&sb, s8("\n#line 1\n"));
- s8 result = arena_stream_commit(arena, &sb);
- if (filepath.len > 0) {
- s8 file = os_read_whole_file(arena, (c8 *)filepath.data);
- assert(file.data == result.data + result.len);
- result.len += file.len;
+ s8 result;
+ if (BakeShaders) {
+ /* TODO(rnp): better handling of shaders with no backing file */
+ if (has_file) {
+ i32 reloadable_index = beamformer_shader_reloadable_index_by_shader[shader_kind];
+ stream_append_s8(&sb, beamformer_shader_data[reloadable_index]);
+ }
+ result = arena_stream_commit(arena, &sb);
+ } else {
+ result = arena_stream_commit(arena, &sb);
+ if (has_file) {
+ s8 file = os_read_whole_file(arena, (c8 *)filepath.data);
+ assert(file.data == result.data + result.len);
+ result.len += file.len;
+ }
}
return result;
@@ -1074,9 +1092,8 @@ DEBUG_EXPORT BEAMFORMER_RELOAD_SHADER_FN(beamformer_reload_shader)
i32 index = 0;
do {
- s8 filepath = {0};
- if (link->reloadable_info_index >= 0) filepath = path;
- shader_texts[index] = shader_text_with_header(link->header, filepath, kind, &arena);
+ b32 has_file = link->reloadable_info_index >= 0;
+ shader_texts[index] = shader_text_with_header(link->header, path, has_file, kind, &arena);
shader_types[index] = link->gl_type;
index++;
link = link->link;
diff --git a/beamformer.h b/beamformer.h
@@ -9,6 +9,7 @@
#include "opengl.h"
#include "generated/beamformer.meta.c"
+#include "generated/beamformer_shaders.c"
///////////////////
// REQUIRED OS API
diff --git a/build.c b/build.c
@@ -4,15 +4,6 @@
/* TODO(rnp):
* [ ]: refactor: merge pack_table and bake_parameters
* [ ]: refactor: allow @Expand to come before the table definition
- * [x]: refactor: helper for appending expanded shader flags
- * [x]: refactor: "base" shaders should only be reloadable shaders
- * - internally when a shader with no file is encountered it should
- * not get pushed as a "base" shader.
- * [x]: bug: column indicator for compile error is off
- * [ ]: bake shaders and font data into binary
- * - for shaders there is a way of making a separate data section and referring
- * to it with extern from the C source (bake both data and size)
- * - use objcopy, maybe need linker script maybe command line flags for ld will work
* [ ]: cross compile/override baked compiler
* [ ]: msvc build doesn't detect out of date files correctly
* [ ]: seperate dwarf debug info
@@ -121,6 +112,7 @@ global char *g_argv0;
DA_STRUCT(char *, Command);
typedef struct {
+ b32 bake_shaders;
b32 debug;
b32 generic;
b32 sanitize;
@@ -488,7 +480,7 @@ s8_equal(s8 a, s8 b)
function void
usage(char *argv0)
{
- printf("%s [--debug] [--sanitize] [--time]\n"
+ printf("%s [--bake-shaders] [--debug] [--sanitize] [--time]\n"
" --debug: dynamically link and build with debug symbols\n"
" --generic: compile for a generic target (x86-64-v3 or armv8 with NEON)\n"
" --sanitize: build with ASAN and UBSAN\n"
@@ -507,7 +499,9 @@ parse_options(i32 argc, char *argv[])
while (argc > 0) {
char *arg = shift(argv, argc);
s8 str = c_str_to_s8(arg);
- if (s8_equal(str, s8("--debug"))) {
+ if (s8_equal(str, s8("--bake-shaders"))) {
+ result.bake_shaders = 1;
+ } else if (s8_equal(str, s8("--debug"))) {
result.debug = 1;
} else if (s8_equal(str, s8("--generic"))) {
result.generic = 1;
@@ -2065,23 +2059,97 @@ meta_push_shader_reload_info(MetaprogramContext *m, MetaContext *ctx)
meta_end_scope(m, s8("};\n"));
}
+function void
+meta_push_shader_bake(MetaprogramContext *m, MetaContext *ctx)
+{
+ for (iz shader = 0; shader < ctx->base_shaders.count; shader++) {
+ MetaShader *s = ctx->base_shaders.data[shader].shader;
+ s8 shader_name = ctx->shader_names.data[s->name_id];
+ meta_begin_line(m, s8("read_only global u8 beamformer_shader_"));
+ for (iz i = 0; i < shader_name.len; i++)
+ stream_append_byte(&m->stream, TOLOWER(shader_name.data[i]));
+ meta_begin_scope(m, s8("_bytes[] = {")); {
+ Arena scratch = m->scratch;
+ s8 filename = push_s8_from_parts(&scratch, s8(OS_PATH_SEPARATOR), s8("shaders"),
+ ctx->base_shaders.data[shader].file);
+ s8 file = os_read_whole_file(&scratch, (c8 *)filename.data);
+
+ for (iz i = 0; i < file.len; i++) {
+ b32 end_line = (i != 0) && (i % 16) == 0;
+ if (i != 0) meta_push(m, end_line ? s8(",") : s8(", "));
+ if (end_line) meta_end_line(m);
+ if ((i % 16) == 0) meta_indent(m);
+ meta_push(m, s8("0x"));
+ meta_push_u64_hex(m, file.data[i]);
+ }
+ meta_end_line(m);
+ } meta_end_scope(m, s8("};\n"));
+ }
+
+ meta_begin_scope(m, s8("read_only global s8 beamformer_shader_data[] = {")); {
+ Arena scratch = m->scratch;
+ s8 *columns[2];
+ columns[0] = push_array(&m->scratch, s8, ctx->base_shaders.count);
+ columns[1] = push_array(&m->scratch, s8, ctx->base_shaders.count);
+ for (iz shader = 0; shader < ctx->base_shaders.count; shader++) {
+ MetaShader *s = ctx->base_shaders.data[shader].shader;
+ s8 shader_name = ctx->shader_names.data[s->name_id];
+
+ Stream sb = arena_stream(m->scratch);
+ for (iz i = 0; i < shader_name.len; i++)
+ stream_append_byte(&sb, TOLOWER(shader_name.data[i]));
+ stream_append_s8(&sb, s8("_bytes,"));
+ columns[0][shader] = arena_stream_commit_and_reset(&m->scratch, &sb);
+
+ stream_append_s8(&sb, s8(".len = countof(beamformer_shader_"));
+ for (iz i = 0; i < shader_name.len; i++)
+ stream_append_byte(&sb, TOLOWER(shader_name.data[i]));
+ columns[1][shader] = arena_stream_commit(&m->scratch, &sb);
+ }
+ metagen_push_table(m, m->scratch, s8("{.data = beamformer_shader_"), s8("_bytes)},"), columns,
+ (uz)ctx->base_shaders.count, 2);
+ m->scratch = scratch;
+ } meta_end_scope(m, s8("};\n"));
+}
+
function b32
metagen_emit_c_code(MetaContext *ctx, Arena arena)
{
b32 result = 1;
os_make_directory("generated");
- char *out = "generated/beamformer.meta.c";
- if (!needs_rebuild(out, "beamformer.meta"))
- return result;
+ char *out_meta = "generated" OS_PATH_SEPARATOR "beamformer.meta.c";
+ char *out_shaders = "generated" OS_PATH_SEPARATOR "beamformer_shaders.c";
- build_log_generate("Core C Code");
+ s8 header = s8("/* See LICENSE for license details. */\n\n"
+ "// GENERATED CODE\n\n");
MetaprogramContext meta_program = {.stream = arena_stream(arena), .scratch = ctx->scratch};
MetaprogramContext *m = &meta_program;
- meta_push_line(m, s8("/* See LICENSE for license details. */\n"));
- meta_push_line(m, s8("// GENERATED CODE\n"));
+ ////////////////////////////
+ // NOTE(rnp): shader baking
+ {
+ char **deps = push_array(&m->scratch, char *, ctx->base_shaders.count);
+ for (iz i = 0; i < ctx->base_shaders.count; i++) {
+ MetaBaseShader *b = ctx->base_shaders.data + i;
+ deps[i] = (c8 *)push_s8_from_parts(&m->scratch, s8(OS_PATH_SEPARATOR), s8("shaders"), b->file).data;
+ }
+ if (needs_rebuild_(out_shaders, deps, ctx->base_shaders.count)) {
+ build_log_generate("Bake Shaders");
+ meta_push(m, header);
+ meta_push_shader_bake(m, ctx);
+ result &= meta_write_and_reset(m, out_shaders);
+ }
+ m->scratch = ctx->scratch;
+ }
+
+ if (!needs_rebuild(out_meta, "beamformer.meta"))
+ return result;
+
+ build_log_generate("Core C Code");
+
+ meta_push(m, header);
/////////////////////////
// NOTE(rnp): enumarents
@@ -2291,7 +2359,7 @@ metagen_emit_c_code(MetaContext *ctx, Arena arena)
//fprintf(stderr, "%.*s\n", (i32)m.stream.widx, m.stream.data);
- result = meta_write_and_reset(m, out);
+ result = meta_write_and_reset(m, out_meta);
return result;
}
@@ -2601,6 +2669,7 @@ main(i32 argc, char *argv[])
//////////////////
// static portion
+ cmd_append(&arena, &c, options.bake_shaders? "-DBakeShaders=1" : "-DBakeShaders=0");
iz c_count = c.count;
cmd_append(&arena, &c, OS_MAIN, OUTPUT_EXE("ogl"));
cmd_pdb(&arena, &c, "ogl");
diff --git a/generated/beamformer_shaders.c b/generated/beamformer_shaders.c
@@ -0,0 +1,1311 @@
+/* See LICENSE for license details. */
+
+// GENERATED CODE
+
+read_only global u8 beamformer_shader_decode_bytes[] = {
+ 0x2f, 0x2a, 0x20, 0x53, 0x65, 0x65, 0x20, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x20, 0x66,
+ 0x6f, 0x72, 0x20, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69,
+ 0x6c, 0x73, 0x2e, 0x20, 0x2a, 0x2f, 0x0a, 0x0a, 0x2f, 0x2a, 0x20, 0x4e, 0x4f, 0x54, 0x45, 0x28,
+ 0x72, 0x6e, 0x70, 0x29, 0x3a, 0x20, 0x69, 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x20, 0x77, 0x69,
+ 0x74, 0x68, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x20, 0x78, 0x20, 0x63, 0x68, 0x61,
+ 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x20, 0x78, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74,
+ 0x73, 0x0a, 0x20, 0x2a, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e,
+ 0x63, 0x65, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x73, 0x20, 0x61, 0x20, 0x73, 0x69,
+ 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65,
+ 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x63,
+ 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74,
+ 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x73, 0x0a, 0x20, 0x2a, 0x20, 0x61, 0x6e, 0x64, 0x20,
+ 0x64, 0x6f, 0x65, 0x73, 0x20, 0x61, 0x20, 0x64, 0x6f, 0x74, 0x20, 0x70, 0x72, 0x6f, 0x64, 0x75,
+ 0x63, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x70, 0x70, 0x72,
+ 0x6f, 0x70, 0x72, 0x69, 0x61, 0x74, 0x65, 0x20, 0x72, 0x6f, 0x77, 0x20, 0x6f, 0x66, 0x20, 0x74,
+ 0x68, 0x65, 0x20, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x68, 0x61, 0x64, 0x61, 0x6d, 0x61, 0x72,
+ 0x64, 0x20, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x0a, 0x20, 0x2a, 0x20, 0x28, 0x75, 0x6e, 0x6c,
+ 0x65, 0x73, 0x73, 0x20, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x20,
+ 0x3d, 0x3d, 0x20, 0x44, 0x45, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4e,
+ 0x4f, 0x4e, 0x45, 0x29, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
+ 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x64, 0x6f, 0x74, 0x20, 0x70, 0x72, 0x6f,
+ 0x64, 0x75, 0x63, 0x74, 0x20, 0x69, 0x73, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x69,
+ 0x6e, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x20, 0x2a, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e,
+ 0x20, 0x49, 0x6e, 0x20, 0x62, 0x75, 0x6c, 0x6b, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x68, 0x61,
+ 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x20, 0x6f, 0x66, 0x20,
+ 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x6d, 0x61, 0x74, 0x72,
+ 0x69, 0x78, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x74,
+ 0x68, 0x65, 0x0a, 0x20, 0x2a, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2d, 0x74, 0x72, 0x61,
+ 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x20, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68,
+ 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x68, 0x61, 0x64, 0x61, 0x6d,
+ 0x61, 0x72, 0x64, 0x20, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x2e, 0x0a, 0x20, 0x2a, 0x2f, 0x0a,
+ 0x0a, 0x23, 0x69, 0x66, 0x20, 0x20, 0x20, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x20,
+ 0x3d, 0x3d, 0x20, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x5f, 0x46, 0x6c, 0x6f, 0x61,
+ 0x74, 0x33, 0x32, 0x0a, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x49, 0x4e, 0x50,
+ 0x55, 0x54, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x0a, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65,
+ 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50,
+ 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x0a, 0x09, 0x23, 0x64, 0x65,
+ 0x66, 0x69, 0x6e, 0x65, 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45,
+ 0x5f, 0x43, 0x41, 0x53, 0x54, 0x28, 0x78, 0x29, 0x20, 0x20, 0x28, 0x78, 0x29, 0x0a, 0x23, 0x65,
+ 0x6c, 0x69, 0x66, 0x20, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x20, 0x3d, 0x3d, 0x20,
+ 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x5f, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x32,
+ 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x0a, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65,
+ 0x20, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x0a, 0x09, 0x23, 0x64, 0x65, 0x66,
+ 0x69, 0x6e, 0x65, 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f,
+ 0x54, 0x59, 0x50, 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x0a, 0x09, 0x23,
+ 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59,
+ 0x50, 0x45, 0x5f, 0x43, 0x41, 0x53, 0x54, 0x28, 0x78, 0x29, 0x20, 0x20, 0x28, 0x78, 0x29, 0x0a,
+ 0x23, 0x65, 0x6c, 0x69, 0x66, 0x20, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x20, 0x3d,
+ 0x3d, 0x20, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x5f, 0x49, 0x6e, 0x74, 0x31, 0x36,
+ 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x0a, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65,
+ 0x20, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x0a, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69,
+ 0x6e, 0x65, 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54,
+ 0x59, 0x50, 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x0a, 0x09, 0x23, 0x64,
+ 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50,
+ 0x45, 0x5f, 0x43, 0x41, 0x53, 0x54, 0x28, 0x78, 0x29, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28,
+ 0x28, 0x28, 0x78, 0x29, 0x20, 0x3c, 0x3c, 0x20, 0x31, 0x36, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x31,
+ 0x36, 0x2c, 0x20, 0x28, 0x78, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x31, 0x36, 0x29, 0x0a, 0x23, 0x65,
+ 0x6c, 0x69, 0x66, 0x20, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x20, 0x3d, 0x3d, 0x20,
+ 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x5f, 0x49, 0x6e, 0x74, 0x31, 0x36, 0x0a, 0x09,
+ 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x5f, 0x44, 0x41,
+ 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74,
+ 0x0a, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x52, 0x46, 0x5f, 0x53, 0x41, 0x4d,
+ 0x50, 0x4c, 0x45, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x20, 0x32,
+ 0x0a, 0x09, 0x23, 0x69, 0x66, 0x20, 0x44, 0x69, 0x6c, 0x61, 0x74, 0x65, 0x4f, 0x75, 0x74, 0x70,
+ 0x75, 0x74, 0x0a, 0x09, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x53, 0x41, 0x4d,
+ 0x50, 0x4c, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x20, 0x20,
+ 0x20, 0x76, 0x65, 0x63, 0x34, 0x0a, 0x09, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20,
+ 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x53, 0x54,
+ 0x28, 0x78, 0x29, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x28, 0x28, 0x78, 0x29, 0x20, 0x3c, 0x3c,
+ 0x20, 0x31, 0x36, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x31, 0x36, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x28,
+ 0x78, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x31, 0x36, 0x2c, 0x20, 0x30, 0x29, 0x0a, 0x09, 0x23, 0x65,
+ 0x6c, 0x73, 0x65, 0x0a, 0x09, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x53, 0x41,
+ 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x20,
+ 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x0a, 0x09, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65,
+ 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x53,
+ 0x54, 0x28, 0x78, 0x29, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x28, 0x28, 0x78, 0x29, 0x20, 0x3c,
+ 0x3c, 0x20, 0x31, 0x36, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x31, 0x36, 0x2c, 0x20, 0x28, 0x78, 0x29,
+ 0x20, 0x3e, 0x3e, 0x20, 0x31, 0x36, 0x29, 0x0a, 0x09, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e,
+ 0x65, 0x20, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53,
+ 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x20, 0x32, 0x0a, 0x09, 0x23, 0x65,
+ 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x23, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x09, 0x23, 0x65, 0x72, 0x72,
+ 0x6f, 0x72, 0x20, 0x75, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x20, 0x64,
+ 0x61, 0x74, 0x61, 0x20, 0x6b, 0x69, 0x6e, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x44, 0x65, 0x63,
+ 0x6f, 0x64, 0x65, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x0a, 0x23, 0x69, 0x66, 0x6e,
+ 0x64, 0x65, 0x66, 0x20, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c,
+ 0x45, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x0a, 0x09, 0x23, 0x64,
+ 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x53, 0x41, 0x4d,
+ 0x50, 0x4c, 0x45, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x20, 0x31,
+ 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x0a, 0x23, 0x69, 0x66, 0x6e, 0x64, 0x65, 0x66,
+ 0x20, 0x52, 0x46, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f,
+ 0x49, 0x4e, 0x44, 0x45, 0x58, 0x0a, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x52,
+ 0x46, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x49, 0x4e,
+ 0x44, 0x45, 0x58, 0x20, 0x31, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x0a, 0x6c, 0x61,
+ 0x79, 0x6f, 0x75, 0x74, 0x28, 0x73, 0x74, 0x64, 0x34, 0x33, 0x30, 0x2c, 0x20, 0x62, 0x69, 0x6e,
+ 0x64, 0x69, 0x6e, 0x67, 0x20, 0x3d, 0x20, 0x31, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e,
+ 0x6c, 0x79, 0x20, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x20, 0x62, 0x75, 0x66, 0x66,
+ 0x65, 0x72, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x31, 0x20, 0x7b, 0x0a, 0x09, 0x49,
+ 0x4e, 0x50, 0x55, 0x54, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x72,
+ 0x66, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x6c, 0x61,
+ 0x79, 0x6f, 0x75, 0x74, 0x28, 0x73, 0x74, 0x64, 0x34, 0x33, 0x30, 0x2c, 0x20, 0x62, 0x69, 0x6e,
+ 0x64, 0x69, 0x6e, 0x67, 0x20, 0x3d, 0x20, 0x32, 0x29, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x6f,
+ 0x6e, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x20, 0x62, 0x75, 0x66,
+ 0x66, 0x65, 0x72, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x32, 0x20, 0x7b, 0x0a, 0x09,
+ 0x49, 0x4e, 0x50, 0x55, 0x54, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20,
+ 0x6f, 0x75, 0x74, 0x5f, 0x72, 0x66, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5d, 0x3b, 0x0a, 0x7d,
+ 0x3b, 0x0a, 0x0a, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x73, 0x74, 0x64, 0x34, 0x33, 0x30,
+ 0x2c, 0x20, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x3d, 0x20, 0x33, 0x29, 0x20, 0x77,
+ 0x72, 0x69, 0x74, 0x65, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63,
+ 0x74, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f,
+ 0x33, 0x20, 0x7b, 0x0a, 0x09, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41,
+ 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5d,
+ 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x72, 0x33, 0x32,
+ 0x66, 0x2c, 0x20, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x3d, 0x20, 0x30, 0x29, 0x20,
+ 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63,
+ 0x74, 0x20, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x32,
+ 0x44, 0x20, 0x20, 0x68, 0x61, 0x64, 0x61, 0x6d, 0x61, 0x72, 0x64, 0x3b, 0x0a, 0x6c, 0x61, 0x79,
+ 0x6f, 0x75, 0x74, 0x28, 0x72, 0x31, 0x36, 0x69, 0x2c, 0x20, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e,
+ 0x67, 0x20, 0x3d, 0x20, 0x31, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x20,
+ 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x20, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d,
+ 0x20, 0x69, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x31, 0x44, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
+ 0x6c, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x3b, 0x0a, 0x0a, 0x53, 0x41, 0x4d, 0x50,
+ 0x4c, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x73, 0x61, 0x6d,
+ 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x66, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x28, 0x75, 0x69, 0x6e, 0x74,
+ 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x53, 0x41, 0x4d, 0x50, 0x4c,
+ 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x72, 0x65, 0x73, 0x75,
+ 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45,
+ 0x5f, 0x43, 0x41, 0x53, 0x54, 0x28, 0x72, 0x66, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x69, 0x6e,
+ 0x64, 0x65, 0x78, 0x5d, 0x29, 0x3b, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72,
+ 0x65, 0x73, 0x75, 0x6c, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d,
+ 0x61, 0x69, 0x6e, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x74, 0x69,
+ 0x6d, 0x65, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x67, 0x6c, 0x5f, 0x47,
+ 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49,
+ 0x44, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x52, 0x46, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53,
+ 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x3b, 0x0a, 0x09, 0x75, 0x69, 0x6e,
+ 0x74, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20,
+ 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x2e, 0x79, 0x3b, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x74,
+ 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x67, 0x6c, 0x5f,
+ 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x49, 0x44, 0x2e, 0x7a, 0x3b, 0x0a, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x66, 0x5f,
+ 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x28, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43,
+ 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x2a, 0x20, 0x63,
+ 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x2b, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69,
+ 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x2a, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x61,
+ 0x6d, 0x70, 0x6c, 0x65, 0x29, 0x20, 0x2f, 0x20, 0x52, 0x46, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c,
+ 0x45, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x3b, 0x0a, 0x09, 0x69,
+ 0x66, 0x20, 0x28, 0x75, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x29,
+ 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x61,
+ 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x3c, 0x20, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x72, 0x61, 0x6e,
+ 0x73, 0x6d, 0x69, 0x74, 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x09,
+ 0x09, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x5f, 0x6f, 0x66, 0x66, 0x20, 0x3d, 0x20, 0x49,
+ 0x6e, 0x70, 0x75, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x64,
+ 0x65, 0x20, 0x20, 0x2a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x28, 0x63,
+ 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2c, 0x20,
+ 0x69, 0x6e, 0x74, 0x28, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x29, 0x29, 0x2e, 0x78, 0x20,
+ 0x2b, 0x0a, 0x09, 0x09, 0x09, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74,
+ 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x2a, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69,
+ 0x74, 0x20, 0x2b, 0x0a, 0x09, 0x09, 0x09, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65,
+ 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x20, 0x20, 0x2a, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x5f,
+ 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x6f, 0x75, 0x74, 0x5f, 0x72,
+ 0x66, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x72, 0x66, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74,
+ 0x20, 0x2b, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5d, 0x20, 0x3d, 0x20, 0x72,
+ 0x66, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x69, 0x6e, 0x5f, 0x6f, 0x66, 0x66, 0x20, 0x2f, 0x20,
+ 0x52, 0x46, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x49,
+ 0x4e, 0x44, 0x45, 0x58, 0x5d, 0x3b, 0x0a, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x7d, 0x20, 0x65, 0x6c,
+ 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x74, 0x69, 0x6d, 0x65, 0x5f,
+ 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x3c, 0x20, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54,
+ 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x29, 0x20, 0x7b,
+ 0x0a, 0x09, 0x09, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x6f, 0x66, 0x66,
+ 0x20, 0x3d, 0x20, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
+ 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x20, 0x2a, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
+ 0x6c, 0x20, 0x2b, 0x0a, 0x09, 0x09, 0x09, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x72, 0x61, 0x6e,
+ 0x73, 0x6d, 0x69, 0x74, 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x2a, 0x20, 0x74, 0x72, 0x61,
+ 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x20, 0x2b, 0x0a, 0x09, 0x09, 0x09, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74,
+ 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x20, 0x20, 0x2a,
+ 0x20, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x3b, 0x0a, 0x0a, 0x09,
+ 0x09, 0x09, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59,
+ 0x50, 0x45, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x53, 0x41, 0x4d, 0x50,
+ 0x4c, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x28, 0x30, 0x29, 0x3b,
+ 0x0a, 0x09, 0x09, 0x09, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x20, 0x28, 0x44, 0x65, 0x63, 0x6f,
+ 0x64, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73,
+ 0x65, 0x20, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x5f, 0x4e, 0x6f, 0x6e,
+ 0x65, 0x3a, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d,
+ 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x66, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x28,
+ 0x72, 0x66, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x2b, 0x20, 0x74, 0x72, 0x61, 0x6e,
+ 0x73, 0x6d, 0x69, 0x74, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x7d, 0x62, 0x72, 0x65, 0x61, 0x6b,
+ 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65,
+ 0x4d, 0x6f, 0x64, 0x65, 0x5f, 0x48, 0x61, 0x64, 0x61, 0x6d, 0x61, 0x72, 0x64, 0x3a, 0x7b, 0x0a,
+ 0x09, 0x09, 0x09, 0x09, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f,
+ 0x54, 0x59, 0x50, 0x45, 0x20, 0x73, 0x75, 0x6d, 0x20, 0x3d, 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c,
+ 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x28, 0x30, 0x29, 0x3b, 0x0a,
+ 0x09, 0x09, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d,
+ 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74,
+ 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x20, 0x69, 0x2b, 0x2b, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x09,
+ 0x09, 0x73, 0x75, 0x6d, 0x20, 0x2b, 0x3d, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x61,
+ 0x64, 0x28, 0x68, 0x61, 0x64, 0x61, 0x6d, 0x61, 0x72, 0x64, 0x2c, 0x20, 0x69, 0x76, 0x65, 0x63,
+ 0x32, 0x28, 0x69, 0x2c, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x29, 0x29, 0x2e,
+ 0x78, 0x20, 0x2a, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x66, 0x5f, 0x64, 0x61,
+ 0x74, 0x61, 0x28, 0x72, 0x66, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2b, 0x2b, 0x29, 0x3b,
+ 0x0a, 0x09, 0x09, 0x09, 0x09, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x73, 0x75,
+ 0x6d, 0x20, 0x2f, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d,
+ 0x69, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x7d, 0x62, 0x72,
+ 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x09, 0x09, 0x6f, 0x75, 0x74,
+ 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x20, 0x2f, 0x20,
+ 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53, 0x5f, 0x50,
+ 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x5d, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x73, 0x75,
+ 0x6c, 0x74, 0x3b, 0x0a, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x7d, 0x0a, 0x7d, 0x0a
+};
+
+read_only global u8 beamformer_shader_filter_bytes[] = {
+ 0x2f, 0x2a, 0x20, 0x53, 0x65, 0x65, 0x20, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x20, 0x66,
+ 0x6f, 0x72, 0x20, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69,
+ 0x6c, 0x73, 0x2e, 0x20, 0x2a, 0x2f, 0x0a, 0x23, 0x69, 0x66, 0x20, 0x44, 0x61, 0x74, 0x61, 0x4b,
+ 0x69, 0x6e, 0x64, 0x20, 0x3d, 0x3d, 0x20, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x5f,
+ 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x32, 0x0a, 0x20, 0x20, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e,
+ 0x65, 0x20, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x0a, 0x20, 0x20, 0x23, 0x64, 0x65,
+ 0x66, 0x69, 0x6e, 0x65, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45,
+ 0x5f, 0x43, 0x41, 0x53, 0x54, 0x28, 0x76, 0x29, 0x20, 0x28, 0x76, 0x29, 0x0a, 0x20, 0x20, 0x23,
+ 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59,
+ 0x50, 0x45, 0x5f, 0x43, 0x41, 0x53, 0x54, 0x28, 0x76, 0x29, 0x20, 0x28, 0x76, 0x29, 0x0a, 0x23,
+ 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x44,
+ 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x0a, 0x20, 0x20, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e,
+ 0x65, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41,
+ 0x53, 0x54, 0x28, 0x76, 0x29, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x53, 0x6e, 0x6f, 0x72, 0x6d, 0x32,
+ 0x78, 0x31, 0x36, 0x28, 0x76, 0x29, 0x0a, 0x20, 0x20, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65,
+ 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x53,
+ 0x54, 0x28, 0x76, 0x29, 0x20, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x53, 0x6e, 0x6f, 0x72, 0x6d,
+ 0x32, 0x78, 0x31, 0x36, 0x28, 0x76, 0x29, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x0a,
+ 0x23, 0x69, 0x66, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65,
+ 0x72, 0x0a, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x46, 0x49, 0x4c, 0x54, 0x45,
+ 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76,
+ 0x65, 0x63, 0x32, 0x0a, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x61, 0x70, 0x70,
+ 0x6c, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x28, 0x69, 0x71, 0x2c, 0x20, 0x68, 0x29,
+ 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x6d, 0x75, 0x6c, 0x28, 0x28, 0x69, 0x71,
+ 0x29, 0x2c, 0x20, 0x28, 0x68, 0x29, 0x29, 0x0a, 0x23, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x09, 0x23,
+ 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59,
+ 0x50, 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
+ 0x0a, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f,
+ 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x28, 0x69, 0x71, 0x2c, 0x20, 0x68, 0x29, 0x20, 0x28, 0x28,
+ 0x69, 0x71, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x68, 0x29, 0x29, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69,
+ 0x66, 0x0a, 0x0a, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x73, 0x74, 0x64, 0x34, 0x33, 0x30,
+ 0x2c, 0x20, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x3d, 0x20, 0x31, 0x29, 0x20, 0x72,
+ 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74,
+ 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x31,
+ 0x20, 0x7b, 0x0a, 0x09, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x69, 0x6e,
+ 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x6c, 0x61, 0x79,
+ 0x6f, 0x75, 0x74, 0x28, 0x73, 0x74, 0x64, 0x34, 0x33, 0x30, 0x2c, 0x20, 0x62, 0x69, 0x6e, 0x64,
+ 0x69, 0x6e, 0x67, 0x20, 0x3d, 0x20, 0x32, 0x29, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x6f, 0x6e,
+ 0x6c, 0x79, 0x20, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x20, 0x62, 0x75, 0x66, 0x66,
+ 0x65, 0x72, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x32, 0x20, 0x7b, 0x0a, 0x09, 0x44,
+ 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74,
+ 0x61, 0x5b, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28,
+ 0x73, 0x74, 0x64, 0x34, 0x33, 0x30, 0x2c, 0x20, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20,
+ 0x3d, 0x20, 0x33, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x72, 0x65,
+ 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x62, 0x75,
+ 0x66, 0x66, 0x65, 0x72, 0x5f, 0x33, 0x20, 0x7b, 0x0a, 0x09, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52,
+ 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x65,
+ 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a,
+ 0x0a, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x72, 0x31, 0x36, 0x69, 0x2c, 0x20, 0x62, 0x69,
+ 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x3d, 0x20, 0x31, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f,
+ 0x6e, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x20, 0x75, 0x6e, 0x69,
+ 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x69, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x31, 0x44, 0x20, 0x63, 0x68,
+ 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x3b, 0x0a, 0x0a,
+ 0x76, 0x65, 0x63, 0x32, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x6d, 0x75, 0x6c,
+ 0x28, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x62, 0x29,
+ 0x0a, 0x7b, 0x0a, 0x09, 0x6d, 0x61, 0x74, 0x32, 0x20, 0x6d, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74,
+ 0x32, 0x28, 0x62, 0x2e, 0x78, 0x2c, 0x20, 0x62, 0x2e, 0x79, 0x2c, 0x20, 0x2d, 0x62, 0x2e, 0x79,
+ 0x2c, 0x20, 0x62, 0x2e, 0x78, 0x29, 0x3b, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x65,
+ 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x6d, 0x20, 0x2a, 0x20, 0x61, 0x3b, 0x0a, 0x09, 0x72,
+ 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x3b, 0x0a, 0x7d, 0x0a,
+ 0x0a, 0x23, 0x69, 0x66, 0x20, 0x44, 0x65, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x0a,
+ 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x71, 0x28, 0x76,
+ 0x65, 0x63, 0x32, 0x20, 0x69, 0x71, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65,
+ 0x78, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c,
+ 0x74, 0x3b, 0x0a, 0x09, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x20, 0x28, 0x53, 0x61, 0x6d, 0x70,
+ 0x6c, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x63, 0x61, 0x73,
+ 0x65, 0x20, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x5f, 0x34,
+ 0x58, 0x3a, 0x7b, 0x0a, 0x09, 0x09, 0x2f, 0x2f, 0x20, 0x66, 0x73, 0x20, 0x3d, 0x20, 0x32, 0x20,
+ 0x2a, 0x20, 0x66, 0x64, 0x0a, 0x09, 0x09, 0x2f, 0x2f, 0x20, 0x61, 0x72, 0x67, 0x20, 0x3d, 0x20,
+ 0x50, 0x49, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x0a, 0x09, 0x09, 0x2f, 0x2f, 0x20,
+ 0x63, 0x6f, 0x73, 0x20, 0x2d, 0x3e, 0x20, 0x31, 0x20, 0x2d, 0x31, 0x20, 0x20, 0x31, 0x20, 0x2d,
+ 0x31, 0x0a, 0x09, 0x09, 0x2f, 0x2f, 0x20, 0x73, 0x69, 0x6e, 0x20, 0x2d, 0x3e, 0x20, 0x30, 0x20,
+ 0x20, 0x30, 0x20, 0x20, 0x30, 0x20, 0x20, 0x30, 0x0a, 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74,
+ 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x73, 0x5b, 0x32, 0x5d,
+ 0x20, 0x3d, 0x20, 0x7b, 0x31, 0x2c, 0x20, 0x2d, 0x31, 0x7d, 0x3b, 0x0a, 0x09, 0x09, 0x72, 0x65,
+ 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x73, 0x5b, 0x69, 0x6e,
+ 0x64, 0x65, 0x78, 0x20, 0x26, 0x20, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x69, 0x71, 0x3b, 0x0a, 0x09,
+ 0x7d, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x53, 0x61,
+ 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x5f, 0x32, 0x58, 0x3a, 0x7b, 0x0a,
+ 0x09, 0x09, 0x2f, 0x2f, 0x20, 0x66, 0x73, 0x20, 0x20, 0x3d, 0x20, 0x66, 0x64, 0x0a, 0x09, 0x09,
+ 0x2f, 0x2f, 0x20, 0x61, 0x72, 0x67, 0x20, 0x3d, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x50, 0x49, 0x20,
+ 0x2a, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x0a, 0x09, 0x09, 0x2f, 0x2f, 0x20, 0x63, 0x6f, 0x73,
+ 0x20, 0x2d, 0x3e, 0x20, 0x31, 0x20, 0x31, 0x20, 0x31, 0x20, 0x31, 0x0a, 0x09, 0x09, 0x2f, 0x2f,
+ 0x20, 0x73, 0x69, 0x6e, 0x20, 0x2d, 0x3e, 0x20, 0x30, 0x20, 0x30, 0x20, 0x30, 0x20, 0x30, 0x0a,
+ 0x09, 0x09, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x69, 0x71, 0x3b, 0x0a, 0x09,
+ 0x7d, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x09, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
+ 0x3a, 0x7b, 0x0a, 0x09, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x72, 0x67, 0x20, 0x20,
+ 0x20, 0x20, 0x3d, 0x20, 0x72, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x73, 0x28, 0x33, 0x36, 0x30, 0x29,
+ 0x20, 0x2a, 0x20, 0x44, 0x65, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46,
+ 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78,
+ 0x20, 0x2f, 0x20, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x46, 0x72, 0x65, 0x71, 0x75,
+ 0x65, 0x6e, 0x63, 0x79, 0x3b, 0x0a, 0x09, 0x09, 0x6d, 0x61, 0x74, 0x32, 0x20, 0x20, 0x70, 0x68,
+ 0x61, 0x73, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74, 0x32, 0x28, 0x63, 0x6f, 0x73, 0x28,
+ 0x61, 0x72, 0x67, 0x29, 0x2c, 0x20, 0x2d, 0x73, 0x69, 0x6e, 0x28, 0x61, 0x72, 0x67, 0x29, 0x2c,
+ 0x0a, 0x09, 0x09, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x69, 0x6e, 0x28, 0x61, 0x72, 0x67, 0x29, 0x2c,
+ 0x20, 0x20, 0x63, 0x6f, 0x73, 0x28, 0x61, 0x72, 0x67, 0x29, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x72,
+ 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x70, 0x68, 0x61, 0x73, 0x6f, 0x72, 0x20, 0x2a,
+ 0x20, 0x69, 0x71, 0x3b, 0x0a, 0x09, 0x7d, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x09, 0x7d,
+ 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x3b,
+ 0x0a, 0x7d, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x0a, 0x76, 0x65, 0x63, 0x32, 0x20,
+ 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x66, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x69,
+ 0x6e, 0x64, 0x65, 0x78, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x65,
+ 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59,
+ 0x50, 0x45, 0x5f, 0x43, 0x41, 0x53, 0x54, 0x28, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b,
+ 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x29, 0x3b, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e,
+ 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x76, 0x6f, 0x69, 0x64,
+ 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x20,
+ 0x69, 0x6e, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x20, 0x3d, 0x20, 0x67, 0x6c, 0x5f,
+ 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x49, 0x44, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x52, 0x61, 0x74, 0x65, 0x3b, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x75, 0x74,
+ 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f,
+ 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x2e,
+ 0x78, 0x3b, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
+ 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49,
+ 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x2e, 0x79, 0x3b, 0x0a, 0x09,
+ 0x75, 0x69, 0x6e, 0x74, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x20, 0x20, 0x20,
+ 0x3d, 0x20, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x2e, 0x7a, 0x3b, 0x0a, 0x0a, 0x09, 0x75, 0x69, 0x6e,
+ 0x74, 0x20, 0x69, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x62,
+ 0x6f, 0x6f, 0x6c, 0x28, 0x4d, 0x61, 0x70, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x29,
+ 0x20, 0x3f, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x28, 0x63, 0x68, 0x61,
+ 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2c, 0x20, 0x69, 0x6e,
+ 0x74, 0x28, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x29, 0x29, 0x2e, 0x78, 0x20, 0x3a, 0x20,
+ 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x3b, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x69,
+ 0x6e, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x20, 0x3d, 0x20, 0x49, 0x6e, 0x70, 0x75,
+ 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x2a,
+ 0x20, 0x69, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x2b, 0x20, 0x49, 0x6e,
+ 0x70, 0x75, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x53, 0x74, 0x72, 0x69, 0x64,
+ 0x65, 0x20, 0x2a, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x3b, 0x0a, 0x09, 0x75,
+ 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x3d,
+ 0x20, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x74,
+ 0x72, 0x69, 0x64, 0x65, 0x20, 0x20, 0x2a, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20,
+ 0x2b, 0x0a, 0x09, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73,
+ 0x6d, 0x69, 0x74, 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x2a, 0x20, 0x74, 0x72, 0x61, 0x6e,
+ 0x73, 0x6d, 0x69, 0x74, 0x20, 0x2b, 0x0a, 0x09, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74,
+ 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x20, 0x20, 0x2a,
+ 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x3b, 0x0a, 0x0a, 0x09, 0x69,
+ 0x6e, 0x74, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x3b, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x28,
+ 0x62, 0x6f, 0x6f, 0x6c, 0x28, 0x4d, 0x61, 0x70, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73,
+ 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20, 0x3d, 0x20,
+ 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x74, 0x72,
+ 0x69, 0x64, 0x65, 0x20, 0x2f, 0x20, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x53, 0x61, 0x6d, 0x70,
+ 0x6c, 0x65, 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x3b, 0x0a, 0x09, 0x7d, 0x20, 0x65, 0x6c, 0x73,
+ 0x65, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x4f,
+ 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x53, 0x74, 0x72,
+ 0x69, 0x64, 0x65, 0x3b, 0x0a, 0x09, 0x7d, 0x0a, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x28, 0x6f, 0x75,
+ 0x74, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x3c, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65,
+ 0x74, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20, 0x2a, 0x3d,
+ 0x20, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x3b,
+ 0x0a, 0x0a, 0x09, 0x09, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20,
+ 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x69, 0x6e,
+ 0x74, 0x20, 0x61, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x3d, 0x20, 0x74, 0x61, 0x72,
+ 0x67, 0x65, 0x74, 0x3b, 0x0a, 0x09, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78,
+ 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x69, 0x6e, 0x5f, 0x73, 0x61, 0x6d,
+ 0x70, 0x6c, 0x65, 0x29, 0x3b, 0x0a, 0x0a, 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x66,
+ 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x62, 0x6f, 0x6f,
+ 0x6c, 0x28, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x29,
+ 0x20, 0x3f, 0x20, 0x31, 0x20, 0x3a, 0x20, 0x73, 0x71, 0x72, 0x74, 0x28, 0x32, 0x29, 0x3b, 0x0a,
+ 0x0a, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x6a, 0x20, 0x3d, 0x20,
+ 0x6d, 0x61, 0x78, 0x28, 0x30, 0x2c, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2d, 0x20, 0x46,
+ 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x29, 0x3b, 0x20, 0x6a, 0x20,
+ 0x3c, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2c, 0x20, 0x61, 0x5f, 0x6c,
+ 0x65, 0x6e, 0x67, 0x74, 0x68, 0x29, 0x3b, 0x20, 0x6a, 0x2b, 0x2b, 0x29, 0x20, 0x7b, 0x0a, 0x09,
+ 0x09, 0x09, 0x76, 0x65, 0x63, 0x32, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x71,
+ 0x20, 0x3d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x66, 0x28, 0x69, 0x6e, 0x5f,
+ 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x2b, 0x20, 0x6a, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09,
+ 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x68, 0x20, 0x20, 0x3d,
+ 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x65, 0x66, 0x66, 0x69, 0x63, 0x69,
+ 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2d, 0x20, 0x6a, 0x5d, 0x3b,
+ 0x0a, 0x09, 0x09, 0x23, 0x69, 0x66, 0x20, 0x44, 0x65, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74,
+ 0x65, 0x0a, 0x09, 0x09, 0x09, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x20, 0x2b, 0x3d, 0x20,
+ 0x73, 0x63, 0x61, 0x6c, 0x65, 0x20, 0x2a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x66, 0x69,
+ 0x6c, 0x74, 0x65, 0x72, 0x28, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x71, 0x28, 0x69,
+ 0x71, 0x20, 0x2a, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x31, 0x2c, 0x20, 0x2d, 0x31, 0x29, 0x2c,
+ 0x20, 0x2d, 0x6a, 0x29, 0x2c, 0x20, 0x68, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x23, 0x65, 0x6c, 0x73,
+ 0x65, 0x0a, 0x09, 0x09, 0x09, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x20, 0x2b, 0x3d, 0x20,
+ 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x28, 0x69, 0x71, 0x2c,
+ 0x20, 0x68, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x09, 0x09,
+ 0x7d, 0x0a, 0x0a, 0x09, 0x09, 0x6f, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75,
+ 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5d, 0x20, 0x3d, 0x20, 0x52, 0x45, 0x53, 0x55,
+ 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x53, 0x54, 0x28, 0x72, 0x65, 0x73,
+ 0x75, 0x6c, 0x74, 0x29, 0x3b, 0x0a, 0x09, 0x7d, 0x0a, 0x7d, 0x0a
+};
+
+read_only global u8 beamformer_shader_das_bytes[] = {
+ 0x2f, 0x2a, 0x20, 0x53, 0x65, 0x65, 0x20, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x20, 0x66,
+ 0x6f, 0x72, 0x20, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69,
+ 0x6c, 0x73, 0x2e, 0x20, 0x2a, 0x2f, 0x0a, 0x23, 0x69, 0x66, 0x20, 0x20, 0x20, 0x44, 0x61, 0x74,
+ 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x20, 0x3d, 0x3d, 0x20, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69, 0x6e,
+ 0x64, 0x5f, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x32, 0x0a, 0x20, 0x20, 0x23, 0x64, 0x65, 0x66,
+ 0x69, 0x6e, 0x65, 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x0a,
+ 0x20, 0x20, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x54, 0x45, 0x58, 0x54, 0x55, 0x52,
+ 0x45, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x72, 0x33, 0x32, 0x66, 0x0a, 0x20, 0x20, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x52,
+ 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x53, 0x54, 0x28,
+ 0x61, 0x29, 0x20, 0x20, 0x20, 0x28, 0x61, 0x29, 0x2e, 0x78, 0x0a, 0x20, 0x20, 0x23, 0x64, 0x65,
+ 0x66, 0x69, 0x6e, 0x65, 0x20, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45,
+ 0x5f, 0x43, 0x41, 0x53, 0x54, 0x28, 0x61, 0x29, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28,
+ 0x28, 0x61, 0x29, 0x2e, 0x78, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x29, 0x0a,
+ 0x20, 0x20, 0x23, 0x69, 0x66, 0x20, 0x21, 0x46, 0x61, 0x73, 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20,
+ 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54,
+ 0x59, 0x50, 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32,
+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x52, 0x45, 0x53,
+ 0x55, 0x4c, 0x54, 0x5f, 0x4c, 0x41, 0x53, 0x54, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x20, 0x20,
+ 0x20, 0x31, 0x0a, 0x20, 0x20, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x23, 0x65, 0x6c, 0x69,
+ 0x66, 0x20, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x20, 0x3d, 0x3d, 0x20, 0x44, 0x61,
+ 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x5f, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x32, 0x43, 0x6f,
+ 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x0a, 0x20, 0x20, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20,
+ 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x0a, 0x20, 0x20, 0x23, 0x64, 0x65,
+ 0x66, 0x69, 0x6e, 0x65, 0x20, 0x54, 0x45, 0x58, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x4b, 0x49, 0x4e,
+ 0x44, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x67, 0x33, 0x32, 0x66,
+ 0x0a, 0x20, 0x20, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c,
+ 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x53, 0x54, 0x28, 0x61, 0x29, 0x20, 0x20,
+ 0x20, 0x28, 0x61, 0x29, 0x2e, 0x78, 0x79, 0x0a, 0x20, 0x20, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e,
+ 0x65, 0x20, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41,
+ 0x53, 0x54, 0x28, 0x61, 0x29, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x28, 0x61, 0x29,
+ 0x2e, 0x78, 0x79, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x29, 0x0a, 0x20, 0x20, 0x23, 0x69, 0x66,
+ 0x20, 0x21, 0x46, 0x61, 0x73, 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x23, 0x64, 0x65, 0x66, 0x69,
+ 0x6e, 0x65, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x0a, 0x20, 0x20, 0x20, 0x20,
+ 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x4c,
+ 0x41, 0x53, 0x54, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x20, 0x20, 0x20, 0x32, 0x0a, 0x20, 0x20,
+ 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x23, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x23,
+ 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x20, 0x75,
+ 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x44,
+ 0x41, 0x53, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x0a, 0x6c, 0x61, 0x79, 0x6f, 0x75,
+ 0x74, 0x28, 0x73, 0x74, 0x64, 0x34, 0x33, 0x30, 0x2c, 0x20, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e,
+ 0x67, 0x20, 0x3d, 0x20, 0x31, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x20,
+ 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20,
+ 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x31, 0x20, 0x7b, 0x0a, 0x09, 0x53, 0x41, 0x4d, 0x50,
+ 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x72, 0x66, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b,
+ 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x23, 0x69, 0x66, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x52,
+ 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x0a, 0x20, 0x20, 0x23, 0x64, 0x65,
+ 0x66, 0x69, 0x6e, 0x65, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45,
+ 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x0a, 0x23, 0x65, 0x6e,
+ 0x64, 0x69, 0x66, 0x0a, 0x0a, 0x23, 0x69, 0x66, 0x20, 0x46, 0x61, 0x73, 0x74, 0x0a, 0x20, 0x20,
+ 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x53,
+ 0x54, 0x4f, 0x52, 0x45, 0x28, 0x61, 0x2c, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x5f, 0x61,
+ 0x29, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x28, 0x61, 0x29,
+ 0x0a, 0x09, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x54, 0x45, 0x58, 0x54, 0x55, 0x52, 0x45,
+ 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x2c, 0x20, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x3d,
+ 0x20, 0x30, 0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65,
+ 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x20, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x69,
+ 0x6d, 0x61, 0x67, 0x65, 0x33, 0x44, 0x20, 0x20, 0x75, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x64, 0x61,
+ 0x74, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x3b, 0x0a, 0x23, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20,
+ 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x53,
+ 0x54, 0x4f, 0x52, 0x45, 0x28, 0x61, 0x2c, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x5f, 0x61,
+ 0x29, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x28, 0x61, 0x2c,
+ 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x5f, 0x61, 0x29, 0x0a, 0x09, 0x6c, 0x61, 0x79, 0x6f,
+ 0x75, 0x74, 0x28, 0x54, 0x45, 0x58, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x2c,
+ 0x20, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x77, 0x72,
+ 0x69, 0x74, 0x65, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74,
+ 0x20, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x33, 0x44,
+ 0x20, 0x20, 0x75, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x65, 0x78,
+ 0x3b, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x0a, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74,
+ 0x28, 0x72, 0x31, 0x36, 0x69, 0x2c, 0x20, 0x20, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20,
+ 0x3d, 0x20, 0x31, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x20, 0x72,
+ 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x20, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20,
+ 0x69, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x31, 0x44, 0x20, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f,
+ 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x3b, 0x0a, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74,
+ 0x28, 0x72, 0x67, 0x33, 0x32, 0x66, 0x2c, 0x20, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20,
+ 0x3d, 0x20, 0x32, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x20, 0x72,
+ 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x20, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20,
+ 0x69, 0x6d, 0x61, 0x67, 0x65, 0x31, 0x44, 0x20, 0x20, 0x66, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x76,
+ 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x3b, 0x0a, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x72,
+ 0x38, 0x69, 0x2c, 0x20, 0x20, 0x20, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x3d, 0x20,
+ 0x33, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x20, 0x72, 0x65, 0x73,
+ 0x74, 0x72, 0x69, 0x63, 0x74, 0x20, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x69, 0x69,
+ 0x6d, 0x61, 0x67, 0x65, 0x31, 0x44, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f,
+ 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x0a, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x52,
+ 0x58, 0x5f, 0x4f, 0x52, 0x49, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x28, 0x74, 0x78,
+ 0x5f, 0x72, 0x78, 0x29, 0x20, 0x28, 0x28, 0x28, 0x74, 0x78, 0x5f, 0x72, 0x78, 0x29, 0x20, 0x3e,
+ 0x3e, 0x20, 0x30, 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x30, 0x46, 0x29, 0x0a, 0x23, 0x64, 0x65,
+ 0x66, 0x69, 0x6e, 0x65, 0x20, 0x54, 0x58, 0x5f, 0x4f, 0x52, 0x49, 0x45, 0x4e, 0x54, 0x41, 0x54,
+ 0x49, 0x4f, 0x4e, 0x28, 0x74, 0x78, 0x5f, 0x72, 0x78, 0x29, 0x20, 0x28, 0x28, 0x28, 0x74, 0x78,
+ 0x5f, 0x72, 0x78, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x34, 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x30,
+ 0x46, 0x29, 0x0a, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x43, 0x5f, 0x53, 0x50,
+ 0x4c, 0x49, 0x4e, 0x45, 0x20, 0x30, 0x2e, 0x35, 0x0a, 0x0a, 0x23, 0x69, 0x66, 0x20, 0x44, 0x61,
+ 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x20, 0x3d, 0x3d, 0x20, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69,
+ 0x6e, 0x64, 0x5f, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x32, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65,
+ 0x78, 0x0a, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x71,
+ 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x69, 0x71, 0x2c, 0x20,
+ 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x69, 0x6d, 0x65,
+ 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x72, 0x67, 0x20, 0x20,
+ 0x20, 0x20, 0x3d, 0x20, 0x72, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x73, 0x28, 0x33, 0x36, 0x30, 0x29,
+ 0x20, 0x2a, 0x20, 0x44, 0x65, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46,
+ 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x20, 0x2a, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x3b,
+ 0x0a, 0x09, 0x6d, 0x61, 0x74, 0x32, 0x20, 0x20, 0x70, 0x68, 0x61, 0x73, 0x6f, 0x72, 0x20, 0x3d,
+ 0x20, 0x6d, 0x61, 0x74, 0x32, 0x28, 0x20, 0x63, 0x6f, 0x73, 0x28, 0x61, 0x72, 0x67, 0x29, 0x2c,
+ 0x20, 0x73, 0x69, 0x6e, 0x28, 0x61, 0x72, 0x67, 0x29, 0x2c, 0x0a, 0x09, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x2d, 0x73, 0x69, 0x6e, 0x28, 0x61, 0x72, 0x67, 0x29, 0x2c, 0x20, 0x63, 0x6f, 0x73, 0x28, 0x61,
+ 0x72, 0x67, 0x29, 0x29, 0x3b, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x65, 0x73, 0x75,
+ 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x70, 0x68, 0x61, 0x73, 0x6f, 0x72, 0x20, 0x2a, 0x20, 0x69, 0x71,
+ 0x3b, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
+ 0x3b, 0x0a, 0x7d, 0x0a, 0x23, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x23, 0x64, 0x65, 0x66,
+ 0x69, 0x6e, 0x65, 0x20, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x71, 0x28, 0x61, 0x2c,
+ 0x20, 0x62, 0x29, 0x20, 0x28, 0x61, 0x29, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x0a,
+ 0x2f, 0x2a, 0x20, 0x4e, 0x4f, 0x54, 0x45, 0x3a, 0x20, 0x53, 0x65, 0x65, 0x3a, 0x20, 0x68, 0x74,
+ 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x63, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x6f, 0x72, 0x67, 0x2f,
+ 0x64, 0x6f, 0x63, 0x73, 0x2f, 0x68, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x68, 0x74, 0x6d,
+ 0x20, 0x2a, 0x2f, 0x0a, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20,
+ 0x63, 0x75, 0x62, 0x69, 0x63, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20,
+ 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73,
+ 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x0a, 0x7b,
+ 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x68, 0x20, 0x3d,
+ 0x20, 0x6d, 0x61, 0x74, 0x34, 0x28, 0x0a, 0x09, 0x09, 0x20, 0x32, 0x2c, 0x20, 0x2d, 0x33, 0x2c,
+ 0x20, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x2c, 0x0a, 0x09, 0x09, 0x2d, 0x32, 0x2c, 0x20, 0x20, 0x33,
+ 0x2c, 0x20, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x0a, 0x09, 0x09, 0x20, 0x31, 0x2c, 0x20, 0x2d,
+ 0x32, 0x2c, 0x20, 0x20, 0x31, 0x2c, 0x20, 0x30, 0x2c, 0x0a, 0x09, 0x09, 0x20, 0x31, 0x2c, 0x20,
+ 0x2d, 0x31, 0x2c, 0x20, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x0a, 0x09, 0x29, 0x3b, 0x0a, 0x0a, 0x09,
+ 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6b, 0x2c, 0x20, 0x74, 0x20, 0x3d, 0x20, 0x6d, 0x6f,
+ 0x64, 0x66, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2c, 0x20, 0x74, 0x6b, 0x29, 0x3b, 0x0a, 0x09,
+ 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x73, 0x61, 0x6d, 0x70,
+ 0x6c, 0x65, 0x73, 0x5b, 0x34, 0x5d, 0x20, 0x3d, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x72, 0x66, 0x5f,
+ 0x64, 0x61, 0x74, 0x61, 0x5b, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20,
+ 0x2b, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x74, 0x6b, 0x29, 0x20, 0x2d, 0x20, 0x31, 0x5d, 0x2c, 0x0a,
+ 0x09, 0x09, 0x72, 0x66, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69,
+ 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2b, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x74, 0x6b, 0x29, 0x20, 0x2b,
+ 0x20, 0x30, 0x5d, 0x2c, 0x0a, 0x09, 0x09, 0x72, 0x66, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x62,
+ 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2b, 0x20, 0x69, 0x6e, 0x74, 0x28,
+ 0x74, 0x6b, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x5d, 0x2c, 0x0a, 0x09, 0x09, 0x72, 0x66, 0x5f, 0x64,
+ 0x61, 0x74, 0x61, 0x5b, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2b,
+ 0x20, 0x69, 0x6e, 0x74, 0x28, 0x74, 0x6b, 0x29, 0x20, 0x2b, 0x20, 0x32, 0x5d, 0x2c, 0x0a, 0x09,
+ 0x7d, 0x3b, 0x0a, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x34, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x53, 0x20, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x74, 0x20, 0x2a, 0x20, 0x74,
+ 0x20, 0x2a, 0x20, 0x74, 0x2c, 0x20, 0x74, 0x20, 0x2a, 0x20, 0x74, 0x2c, 0x20, 0x74, 0x2c, 0x20,
+ 0x31, 0x29, 0x3b, 0x0a, 0x09, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45,
+ 0x20, 0x50, 0x31, 0x20, 0x3d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x5b, 0x31, 0x5d,
+ 0x3b, 0x0a, 0x09, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x50,
+ 0x32, 0x20, 0x3d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x5b, 0x32, 0x5d, 0x3b, 0x0a,
+ 0x09, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x54, 0x31, 0x20,
+ 0x3d, 0x20, 0x43, 0x5f, 0x53, 0x50, 0x4c, 0x49, 0x4e, 0x45, 0x20, 0x2a, 0x20, 0x28, 0x50, 0x32,
+ 0x20, 0x2d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x5b, 0x30, 0x5d, 0x29, 0x3b, 0x0a,
+ 0x09, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x54, 0x32, 0x20,
+ 0x3d, 0x20, 0x43, 0x5f, 0x53, 0x50, 0x4c, 0x49, 0x4e, 0x45, 0x20, 0x2a, 0x20, 0x28, 0x73, 0x61,
+ 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x5b, 0x33, 0x5d, 0x20, 0x2d, 0x20, 0x50, 0x31, 0x29, 0x3b, 0x0a,
+ 0x0a, 0x23, 0x69, 0x66, 0x20, 0x20, 0x20, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x20,
+ 0x3d, 0x3d, 0x20, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x5f, 0x46, 0x6c, 0x6f, 0x61,
+ 0x74, 0x33, 0x32, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x34, 0x20, 0x43, 0x20, 0x3d, 0x20, 0x76, 0x65,
+ 0x63, 0x34, 0x28, 0x50, 0x31, 0x2e, 0x78, 0x2c, 0x20, 0x50, 0x32, 0x2e, 0x78, 0x2c, 0x20, 0x54,
+ 0x31, 0x2e, 0x78, 0x2c, 0x20, 0x54, 0x32, 0x2e, 0x78, 0x29, 0x3b, 0x0a, 0x09, 0x66, 0x6c, 0x6f,
+ 0x61, 0x74, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x74, 0x28,
+ 0x53, 0x2c, 0x20, 0x68, 0x20, 0x2a, 0x20, 0x43, 0x29, 0x3b, 0x0a, 0x23, 0x65, 0x6c, 0x69, 0x66,
+ 0x20, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x20, 0x3d, 0x3d, 0x20, 0x44, 0x61, 0x74,
+ 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x5f, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x32, 0x43, 0x6f, 0x6d,
+ 0x70, 0x6c, 0x65, 0x78, 0x0a, 0x09, 0x6d, 0x61, 0x74, 0x32, 0x78, 0x34, 0x20, 0x43, 0x20, 0x3d,
+ 0x20, 0x6d, 0x61, 0x74, 0x32, 0x78, 0x34, 0x28, 0x76, 0x65, 0x63, 0x34, 0x28, 0x50, 0x31, 0x2e,
+ 0x78, 0x2c, 0x20, 0x50, 0x32, 0x2e, 0x78, 0x2c, 0x20, 0x54, 0x31, 0x2e, 0x78, 0x2c, 0x20, 0x54,
+ 0x32, 0x2e, 0x78, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x50, 0x31, 0x2e, 0x79, 0x2c,
+ 0x20, 0x50, 0x32, 0x2e, 0x79, 0x2c, 0x20, 0x54, 0x31, 0x2e, 0x79, 0x2c, 0x20, 0x54, 0x32, 0x2e,
+ 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c,
+ 0x74, 0x20, 0x3d, 0x20, 0x53, 0x20, 0x2a, 0x20, 0x68, 0x20, 0x2a, 0x20, 0x43, 0x3b, 0x0a, 0x23,
+ 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65,
+ 0x73, 0x75, 0x6c, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f,
+ 0x54, 0x59, 0x50, 0x45, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x66, 0x28, 0x63,
+ 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
+ 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x74, 0x72, 0x61, 0x6e,
+ 0x73, 0x6d, 0x69, 0x74, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61,
+ 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x53, 0x41, 0x4d, 0x50,
+ 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d,
+ 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x28, 0x30, 0x29, 0x3b,
+ 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78,
+ 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x2a,
+ 0x20, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x2a, 0x20, 0x41,
+ 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x20,
+ 0x2b, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x20, 0x2a, 0x20, 0x53, 0x61, 0x6d,
+ 0x70, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x29, 0x3b, 0x0a, 0x09, 0x73, 0x77, 0x69, 0x74,
+ 0x63, 0x68, 0x20, 0x28, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x49,
+ 0x6e, 0x74, 0x65, 0x72, 0x70, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65,
+ 0x5f, 0x4e, 0x65, 0x61, 0x72, 0x65, 0x73, 0x74, 0x3a, 0x7b, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20,
+ 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3e, 0x3d, 0x20, 0x30, 0x20, 0x26, 0x26, 0x20, 0x69,
+ 0x6e, 0x74, 0x28, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x29,
+ 0x20, 0x3c, 0x20, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x29, 0x0a,
+ 0x09, 0x09, 0x09, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x72, 0x6f, 0x74, 0x61,
+ 0x74, 0x65, 0x5f, 0x69, 0x71, 0x28, 0x72, 0x66, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x62, 0x61,
+ 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2b, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x72,
+ 0x6f, 0x75, 0x6e, 0x64, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x29, 0x5d, 0x2c, 0x20, 0x69,
+ 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x46,
+ 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x29, 0x3b, 0x0a, 0x09, 0x7d, 0x62, 0x72, 0x65,
+ 0x61, 0x6b, 0x3b, 0x0a, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x70,
+ 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x5f, 0x4c, 0x69, 0x6e, 0x65,
+ 0x61, 0x72, 0x3a, 0x7b, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78,
+ 0x20, 0x3e, 0x3d, 0x20, 0x30, 0x20, 0x26, 0x26, 0x20, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x28, 0x69,
+ 0x6e, 0x64, 0x65, 0x78, 0x29, 0x20, 0x3c, 0x20, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x43, 0x6f,
+ 0x75, 0x6e, 0x74, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20,
+ 0x74, 0x6b, 0x2c, 0x20, 0x74, 0x20, 0x3d, 0x20, 0x6d, 0x6f, 0x64, 0x66, 0x28, 0x69, 0x6e, 0x64,
+ 0x65, 0x78, 0x2c, 0x20, 0x74, 0x6b, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x6e, 0x74, 0x20,
+ 0x6e, 0x20, 0x3d, 0x20, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2b,
+ 0x20, 0x69, 0x6e, 0x74, 0x28, 0x74, 0x6b, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x72, 0x65, 0x73,
+ 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x20, 0x2d, 0x20, 0x74, 0x29, 0x20, 0x2a, 0x20,
+ 0x72, 0x66, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6e, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x20, 0x2a,
+ 0x20, 0x72, 0x66, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6e, 0x20, 0x2b, 0x20, 0x31, 0x5d, 0x3b,
+ 0x0a, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20,
+ 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x71, 0x28, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
+ 0x2c, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69,
+ 0x6e, 0x67, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x29, 0x3b, 0x0a, 0x09, 0x7d,
+ 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x49, 0x6e, 0x74,
+ 0x65, 0x72, 0x70, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x5f, 0x43,
+ 0x75, 0x62, 0x69, 0x63, 0x3a, 0x7b, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x69, 0x6e, 0x64,
+ 0x65, 0x78, 0x20, 0x3e, 0x3d, 0x20, 0x30, 0x20, 0x26, 0x26, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x28,
+ 0x69, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3c, 0x20, 0x53, 0x61,
+ 0x6d, 0x70, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x72, 0x65,
+ 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x71,
+ 0x28, 0x63, 0x75, 0x62, 0x69, 0x63, 0x28, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65,
+ 0x78, 0x2c, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x2c, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78,
+ 0x20, 0x2f, 0x20, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x46, 0x72, 0x65, 0x71, 0x75,
+ 0x65, 0x6e, 0x63, 0x79, 0x29, 0x3b, 0x0a, 0x09, 0x7d, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a,
+ 0x09, 0x7d, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c,
+ 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x61, 0x6d, 0x70,
+ 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x66,
+ 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x29, 0x0a, 0x7b,
+ 0x0a, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x3d, 0x20,
+ 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x2f, 0x20, 0x53, 0x70, 0x65, 0x65, 0x64,
+ 0x4f, 0x66, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x2b, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x66,
+ 0x66, 0x73, 0x65, 0x74, 0x3b, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x69,
+ 0x6d, 0x65, 0x20, 0x2a, 0x20, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x46, 0x72, 0x65,
+ 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74,
+ 0x20, 0x61, 0x70, 0x6f, 0x64, 0x69, 0x7a, 0x65, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x66,
+ 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x72, 0x67, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x2f, 0x2a, 0x20,
+ 0x49, 0x4d, 0x50, 0x4f, 0x52, 0x54, 0x41, 0x4e, 0x54, 0x3a, 0x20, 0x64, 0x6f, 0x20, 0x6e, 0x6f,
+ 0x74, 0x20, 0x6d, 0x6f, 0x76, 0x65, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x72, 0x67, 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x20, 0x74,
+ 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x20, 0x49, 0x74,
+ 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x61,
+ 0x0a, 0x09, 0x20, 0x2a, 0x20, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+ 0x20, 0x6d, 0x6f, 0x76, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x69, 0x6e, 0x67, 0x20,
+ 0x69, 0x6e, 0x20, 0x63, 0x6f, 0x73, 0x20, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x20, 0x62, 0x65,
+ 0x69, 0x6e, 0x67, 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x64, 0x20, 0x63, 0x61,
+ 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x73, 0x6c, 0x6f, 0x77, 0x64, 0x6f, 0x77, 0x6e,
+ 0x20, 0x2a, 0x2f, 0x0a, 0x0a, 0x09, 0x2f, 0x2a, 0x20, 0x4e, 0x4f, 0x54, 0x45, 0x3a, 0x20, 0x63,
+ 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x46, 0x23, 0x20, 0x64, 0x79, 0x6e, 0x61, 0x6d,
+ 0x69, 0x63, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x20, 0x61, 0x70, 0x6f, 0x64, 0x69,
+ 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20,
+ 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x3a, 0x0a,
+ 0x09, 0x20, 0x2a, 0x0a, 0x09, 0x20, 0x2a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x7c, 0x78, 0x5f, 0x65, 0x20, 0x2d, 0x20, 0x78, 0x5f, 0x69, 0x7c, 0x5c, 0x0a, 0x09,
+ 0x20, 0x2a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x28, 0x78, 0x2c, 0x20, 0x7a, 0x29, 0x20, 0x3d, 0x20,
+ 0x63, 0x6f, 0x73, 0x28, 0x46, 0x23, 0x20, 0x2a, 0x20, 0xcf, 0x80, 0x20, 0x2a, 0x20, 0x2d, 0x2d,
+ 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x20, 0x29, 0x20, 0x5e, 0x20, 0x32, 0x0a,
+ 0x09, 0x20, 0x2a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7c, 0x7a,
+ 0x5f, 0x65, 0x20, 0x2d, 0x20, 0x7a, 0x5f, 0x69, 0x7c, 0x2f, 0x0a, 0x09, 0x20, 0x2a, 0x0a, 0x09,
+ 0x20, 0x2a, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x78, 0x2c, 0x7a, 0x5f, 0x65, 0x20, 0x61,
+ 0x72, 0x65, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x64, 0x75, 0x63, 0x65, 0x72, 0x20, 0x65, 0x6c,
+ 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20,
+ 0x61, 0x6e, 0x64, 0x20, 0x78, 0x2c, 0x7a, 0x5f, 0x69, 0x20, 0x61, 0x72, 0x65, 0x20, 0x69, 0x6d,
+ 0x61, 0x67, 0x65, 0x20, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x20, 0x2a,
+ 0x2f, 0x0a, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x73,
+ 0x28, 0x72, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x73, 0x28, 0x31, 0x38, 0x30, 0x29, 0x20, 0x2a, 0x20,
+ 0x61, 0x72, 0x67, 0x29, 0x3b, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, 0x20,
+ 0x2a, 0x20, 0x61, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x63, 0x61,
+ 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, 0x6f, 0x69,
+ 0x6e, 0x74, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x72,
+ 0x6f, 0x77, 0x73, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x65, 0x73,
+ 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x70, 0x6f, 0x69, 0x6e, 0x74,
+ 0x5b, 0x69, 0x6e, 0x74, 0x28, 0x72, 0x6f, 0x77, 0x73, 0x29, 0x5d, 0x2c, 0x20, 0x70, 0x6f, 0x69,
+ 0x6e, 0x74, 0x5b, 0x32, 0x5d, 0x29, 0x3b, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20,
+ 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74,
+ 0x20, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x77, 0x61, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e,
+ 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x28, 0x63, 0x6f,
+ 0x6e, 0x73, 0x74, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x20,
+ 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x72, 0x61, 0x6e,
+ 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x61, 0x6e, 0x67, 0x6c, 0x65, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73,
+ 0x74, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x74, 0x78, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x29, 0x0a,
+ 0x7b, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x64, 0x6f, 0x74, 0x28, 0x72, 0x63,
+ 0x61, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69,
+ 0x6f, 0x6e, 0x28, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x20, 0x74, 0x78, 0x5f, 0x72, 0x6f, 0x77,
+ 0x73, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x73, 0x69, 0x6e, 0x28, 0x74, 0x72, 0x61,
+ 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x61, 0x6e, 0x67, 0x6c, 0x65, 0x29, 0x2c, 0x20, 0x63, 0x6f,
+ 0x73, 0x28, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x61, 0x6e, 0x67, 0x6c, 0x65,
+ 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, 0x79,
+ 0x6c, 0x69, 0x6e, 0x64, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x77, 0x61, 0x76, 0x65, 0x5f, 0x74,
+ 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
+ 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, 0x6f, 0x69, 0x6e,
+ 0x74, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66,
+ 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x70, 0x74, 0x68, 0x2c, 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,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
+ 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x61, 0x6e, 0x67, 0x6c, 0x65, 0x2c,
+ 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x74, 0x78, 0x5f, 0x72,
+ 0x6f, 0x77, 0x73, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x32, 0x20, 0x66, 0x20, 0x3d,
+ 0x20, 0x66, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x70, 0x74, 0x68, 0x20, 0x2a, 0x20, 0x76,
+ 0x65, 0x63, 0x32, 0x28, 0x73, 0x69, 0x6e, 0x28, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74,
+ 0x5f, 0x61, 0x6e, 0x67, 0x6c, 0x65, 0x29, 0x2c, 0x20, 0x63, 0x6f, 0x73, 0x28, 0x74, 0x72, 0x61,
+ 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x61, 0x6e, 0x67, 0x6c, 0x65, 0x29, 0x29, 0x3b, 0x0a, 0x09,
+ 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x28,
+ 0x72, 0x63, 0x61, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x20, 0x74, 0x78, 0x5f, 0x72,
+ 0x6f, 0x77, 0x73, 0x29, 0x2c, 0x20, 0x66, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x74,
+ 0x20, 0x74, 0x78, 0x5f, 0x72, 0x78, 0x5f, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x61, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69,
+ 0x6f, 0x6e, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x61, 0x63, 0x71,
+ 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x69, 0x6e, 0x74,
+ 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x28, 0x53,
+ 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x29, 0x20, 0x3f, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x63, 0x65,
+ 0x69, 0x76, 0x65, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3a,
+ 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x28, 0x74, 0x72, 0x61, 0x6e, 0x73,
+ 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x72, 0x69, 0x65,
+ 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2c, 0x20, 0x61, 0x63, 0x71, 0x75, 0x69, 0x73,
+ 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x2e, 0x78, 0x3b, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72,
+ 0x6e, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x76, 0x65, 0x63,
+ 0x32, 0x20, 0x66, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x66,
+ 0x6f, 0x72, 0x5f, 0x61, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x63,
+ 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x61, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69,
+ 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x65,
+ 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x28, 0x53, 0x69, 0x6e, 0x67,
+ 0x6c, 0x65, 0x46, 0x6f, 0x63, 0x75, 0x73, 0x29, 0x20, 0x3f, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28,
+ 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x41, 0x6e, 0x67, 0x6c, 0x65, 0x2c, 0x20, 0x46,
+ 0x6f, 0x63, 0x75, 0x73, 0x44, 0x65, 0x70, 0x74, 0x68, 0x29, 0x20, 0x3a, 0x20, 0x69, 0x6d, 0x61,
+ 0x67, 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x28, 0x66, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x76, 0x65, 0x63,
+ 0x74, 0x6f, 0x72, 0x73, 0x2c, 0x20, 0x61, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f,
+ 0x6e, 0x29, 0x2e, 0x78, 0x79, 0x3b, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72,
+ 0x65, 0x73, 0x75, 0x6c, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20,
+ 0x72, 0x63, 0x61, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x64, 0x69, 0x73,
+ 0x74, 0x61, 0x6e, 0x63, 0x65, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x76, 0x65, 0x63, 0x33,
+ 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x20, 0x63, 0x6f,
+ 0x6e, 0x73, 0x74, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x66, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x76,
+ 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74,
+ 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76,
+ 0x65, 0x5f, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x0a, 0x7b,
+ 0x0a, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d,
+ 0x20, 0x30, 0x3b, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x28, 0x54, 0x58, 0x5f, 0x4f, 0x52, 0x49, 0x45,
+ 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x28, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74,
+ 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x20, 0x21, 0x3d, 0x20, 0x52, 0x43, 0x41, 0x4f, 0x72, 0x69, 0x65,
+ 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x4e, 0x6f, 0x6e, 0x65, 0x29, 0x20, 0x7b, 0x0a,
+ 0x09, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x20, 0x74, 0x78, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x54, 0x58, 0x5f, 0x4f, 0x52, 0x49, 0x45,
+ 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x28, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74,
+ 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x52, 0x43, 0x41, 0x4f, 0x72, 0x69, 0x65,
+ 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x52, 0x6f, 0x77, 0x73, 0x3b, 0x0a, 0x09, 0x09,
+ 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x61,
+ 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x72, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x73, 0x28, 0x66,
+ 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x78, 0x29, 0x3b, 0x0a,
+ 0x09, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x64, 0x65,
+ 0x70, 0x74, 0x68, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x66, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x76,
+ 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x79, 0x3b, 0x0a, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28,
+ 0x69, 0x73, 0x69, 0x6e, 0x66, 0x28, 0x66, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x70, 0x74,
+ 0x68, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20,
+ 0x3d, 0x20, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x77, 0x61, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61,
+ 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x28, 0x77,
+ 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x20, 0x74, 0x72, 0x61, 0x6e,
+ 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x61, 0x6e, 0x67, 0x6c, 0x65, 0x2c, 0x20, 0x74, 0x78, 0x5f, 0x72,
+ 0x6f, 0x77, 0x73, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b,
+ 0x0a, 0x09, 0x09, 0x09, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x63, 0x79, 0x6c,
+ 0x69, 0x6e, 0x64, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x77, 0x61, 0x76, 0x65, 0x5f, 0x74, 0x72,
+ 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x28,
+ 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x20, 0x66, 0x6f, 0x63,
+ 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x70, 0x74, 0x68, 0x2c, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d,
+ 0x69, 0x74, 0x5f, 0x61, 0x6e, 0x67, 0x6c, 0x65, 0x2c, 0x20, 0x74, 0x78, 0x5f, 0x72, 0x6f, 0x77,
+ 0x73, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x7d, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75,
+ 0x72, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x52, 0x45,
+ 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x52, 0x43, 0x41, 0x28, 0x63, 0x6f,
+ 0x6e, 0x73, 0x74, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70,
+ 0x6f, 0x69, 0x6e, 0x74, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69,
+ 0x6e, 0x74, 0x20, 0x61, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73,
+ 0x74, 0x61, 0x72, 0x74, 0x20, 0x3d, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x28, 0x46, 0x61, 0x73, 0x74,
+ 0x29, 0x3f, 0x20, 0x75, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x3a, 0x20, 0x30, 0x3b, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74,
+ 0x20, 0x61, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x64,
+ 0x20, 0x20, 0x20, 0x3d, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x28, 0x46, 0x61, 0x73, 0x74, 0x29, 0x3f,
+ 0x20, 0x75, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x3a,
+ 0x20, 0x41, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e,
+ 0x74, 0x3b, 0x0a, 0x09, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20,
+ 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f,
+ 0x54, 0x59, 0x50, 0x45, 0x28, 0x30, 0x29, 0x3b, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69,
+ 0x6e, 0x74, 0x20, 0x61, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d,
+ 0x20, 0x61, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61,
+ 0x72, 0x74, 0x3b, 0x20, 0x61, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20,
+ 0x3c, 0x20, 0x61, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e,
+ 0x64, 0x3b, 0x20, 0x61, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2b, 0x2b,
+ 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20,
+ 0x20, 0x74, 0x78, 0x5f, 0x72, 0x78, 0x5f, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x74, 0x78, 0x5f, 0x72, 0x78, 0x5f, 0x6f, 0x72, 0x69, 0x65, 0x6e,
+ 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x61, 0x63, 0x71, 0x75, 0x69,
+ 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x61, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69,
+ 0x6f, 0x6e, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x62, 0x6f, 0x6f,
+ 0x6c, 0x20, 0x72, 0x78, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x52, 0x58, 0x5f, 0x4f, 0x52, 0x49, 0x45, 0x4e, 0x54, 0x41,
+ 0x54, 0x49, 0x4f, 0x4e, 0x28, 0x74, 0x78, 0x5f, 0x72, 0x78, 0x5f, 0x6f, 0x72, 0x69, 0x65, 0x6e,
+ 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x52, 0x43, 0x41, 0x4f, 0x72,
+ 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x52, 0x6f, 0x77, 0x73, 0x3b, 0x0a,
+ 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x66, 0x6f, 0x63,
+ 0x61, 0x6c, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d,
+ 0x20, 0x66, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x66, 0x6f,
+ 0x72, 0x5f, 0x61, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x61, 0x63,
+ 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x76, 0x65,
+ 0x63, 0x32, 0x20, 0x20, 0x78, 0x64, 0x63, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f,
+ 0x69, 0x6e, 0x74, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x72, 0x63, 0x61, 0x5f, 0x70, 0x6c, 0x61, 0x6e,
+ 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x28, 0x78, 0x64,
+ 0x63, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x2a, 0x20, 0x76, 0x65,
+ 0x63, 0x34, 0x28, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x20,
+ 0x31, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x72, 0x78, 0x5f, 0x72, 0x6f, 0x77, 0x73,
+ 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73,
+ 0x6d, 0x69, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x3d, 0x20, 0x72,
+ 0x63, 0x61, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x74,
+ 0x61, 0x6e, 0x63, 0x65, 0x28, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74,
+ 0x2c, 0x20, 0x66, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2c, 0x20,
+ 0x74, 0x78, 0x5f, 0x72, 0x78, 0x5f, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x29, 0x3b, 0x0a, 0x0a, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20,
+ 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20,
+ 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x3c, 0x20, 0x43, 0x68, 0x61,
+ 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x20, 0x72, 0x78, 0x5f, 0x63, 0x68,
+ 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2b, 0x2b, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x76, 0x65,
+ 0x63, 0x33, 0x20, 0x20, 0x72, 0x78, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61,
+ 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x2a, 0x20, 0x78, 0x64, 0x63, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x65,
+ 0x6e, 0x74, 0x5f, 0x70, 0x69, 0x74, 0x63, 0x68, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x0a, 0x09, 0x09,
+ 0x09, 0x76, 0x65, 0x63, 0x32, 0x20, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x76,
+ 0x65, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x78, 0x64, 0x63, 0x5f, 0x77, 0x6f, 0x72, 0x6c,
+ 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x20, 0x2d, 0x20, 0x72, 0x63, 0x61, 0x5f, 0x70, 0x6c,
+ 0x61, 0x6e, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x72,
+ 0x78, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x2c, 0x20, 0x72, 0x78, 0x5f, 0x72, 0x6f, 0x77,
+ 0x73, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x5f, 0x61,
+ 0x72, 0x67, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x61, 0x62,
+ 0x73, 0x28, 0x46, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x2a, 0x20, 0x72, 0x65, 0x63, 0x65,
+ 0x69, 0x76, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x78, 0x20, 0x2f, 0x20, 0x61,
+ 0x62, 0x73, 0x28, 0x78, 0x64, 0x63, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69,
+ 0x6e, 0x74, 0x2e, 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28,
+ 0x61, 0x5f, 0x61, 0x72, 0x67, 0x20, 0x3c, 0x20, 0x30, 0x2e, 0x35, 0x66, 0x29, 0x20, 0x7b, 0x0a,
+ 0x09, 0x09, 0x09, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x73, 0x69, 0x64, 0x78, 0x20, 0x20, 0x3d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x69,
+ 0x6e, 0x64, 0x65, 0x78, 0x28, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x64, 0x69,
+ 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28,
+ 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x29, 0x29,
+ 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50,
+ 0x45, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x3d, 0x20, 0x61, 0x70, 0x6f, 0x64, 0x69, 0x7a,
+ 0x65, 0x28, 0x61, 0x5f, 0x61, 0x72, 0x67, 0x29, 0x20, 0x2a, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c,
+ 0x65, 0x5f, 0x72, 0x66, 0x28, 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2c,
+ 0x20, 0x61, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x73, 0x69,
+ 0x64, 0x78, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20,
+ 0x2b, 0x3d, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x28,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2c, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x29, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x09, 0x7d, 0x0a,
+ 0x09, 0x7d, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c,
+ 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50,
+ 0x45, 0x20, 0x48, 0x45, 0x52, 0x43, 0x55, 0x4c, 0x45, 0x53, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74,
+ 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e,
+ 0x74, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20,
+ 0x20, 0x20, 0x74, 0x78, 0x5f, 0x72, 0x78, 0x5f, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x74, 0x78, 0x5f, 0x72, 0x78, 0x5f, 0x6f, 0x72, 0x69, 0x65,
+ 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x61, 0x63, 0x71, 0x75,
+ 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x30, 0x29, 0x3b, 0x0a, 0x09, 0x63, 0x6f, 0x6e,
+ 0x73, 0x74, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x20, 0x72, 0x78, 0x5f, 0x63, 0x6f, 0x6c, 0x73,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x52, 0x58, 0x5f,
+ 0x4f, 0x52, 0x49, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x28, 0x74, 0x78, 0x5f, 0x72,
+ 0x78, 0x5f, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x20, 0x3d,
+ 0x3d, 0x20, 0x52, 0x43, 0x41, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x5f, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x3b, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74,
+ 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x20, 0x66, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x76, 0x65, 0x63,
+ 0x74, 0x6f, 0x72, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x66, 0x6f, 0x63, 0x61, 0x6c,
+ 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x61, 0x63, 0x71, 0x75,
+ 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x30, 0x29, 0x3b, 0x0a, 0x09, 0x63, 0x6f, 0x6e,
+ 0x73, 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69,
+ 0x74, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x3d, 0x20, 0x72, 0x63, 0x61,
+ 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e,
+ 0x63, 0x65, 0x28, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x20,
+ 0x66, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2c, 0x20, 0x74, 0x78,
+ 0x5f, 0x72, 0x78, 0x5f, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x29,
+ 0x3b, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x20, 0x78,
+ 0x64, 0x63, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x20, 0x20,
+ 0x20, 0x3d, 0x20, 0x28, 0x78, 0x64, 0x63, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72,
+ 0x6d, 0x20, 0x2a, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70,
+ 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x20, 0x31, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x0a,
+ 0x09, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x72, 0x65, 0x73,
+ 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50,
+ 0x45, 0x28, 0x30, 0x29, 0x3b, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20,
+ 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x20, 0x3d, 0x20, 0x53, 0x70, 0x61, 0x72, 0x73,
+ 0x65, 0x3b, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x20, 0x3c, 0x20, 0x41, 0x63,
+ 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x20,
+ 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x2b, 0x2b, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x09,
+ 0x69, 0x6e, 0x74, 0x20, 0x74, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x3d,
+ 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x28, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x29, 0x20, 0x3f, 0x20,
+ 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x28, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65,
+ 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2c, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73,
+ 0x6d, 0x69, 0x74, 0x20, 0x2d, 0x20, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x29, 0x2e, 0x78, 0x20,
+ 0x3a, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x3b, 0x0a, 0x09, 0x09, 0x23, 0x69,
+ 0x66, 0x20, 0x46, 0x61, 0x73, 0x74, 0x0a, 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69,
+ 0x6e, 0x74, 0x20, 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x3d, 0x20,
+ 0x75, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x3b, 0x0a, 0x09, 0x09, 0x23, 0x65, 0x6c,
+ 0x73, 0x65, 0x0a, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x78,
+ 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x72, 0x78,
+ 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x3c, 0x20, 0x43, 0x68, 0x61, 0x6e, 0x6e,
+ 0x65, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x20, 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e,
+ 0x6e, 0x65, 0x6c, 0x2b, 0x2b, 0x29, 0x0a, 0x09, 0x09, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a,
+ 0x09, 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x76, 0x65, 0x63, 0x33, 0x20, 0x65, 0x6c, 0x65, 0x6d,
+ 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x09, 0x09,
+ 0x09, 0x69, 0x66, 0x20, 0x28, 0x72, 0x78, 0x5f, 0x63, 0x6f, 0x6c, 0x73, 0x29, 0x20, 0x65, 0x6c,
+ 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d,
+ 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
+ 0x2c, 0x20, 0x74, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2c, 0x20, 0x30, 0x29,
+ 0x20, 0x2a, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x78, 0x64, 0x63, 0x5f, 0x65, 0x6c, 0x65, 0x6d,
+ 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x69, 0x74, 0x63, 0x68, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x0a, 0x09,
+ 0x09, 0x09, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65,
+ 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20,
+ 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x74, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
+ 0x6c, 0x2c, 0x20, 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2c, 0x20, 0x30,
+ 0x29, 0x20, 0x2a, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x78, 0x64, 0x63, 0x5f, 0x65, 0x6c, 0x65,
+ 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x69, 0x74, 0x63, 0x68, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x0a,
+ 0x0a, 0x09, 0x09, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x5f, 0x61, 0x72, 0x67, 0x20,
+ 0x3d, 0x20, 0x61, 0x62, 0x73, 0x28, 0x46, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x2a, 0x20,
+ 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x28, 0x78, 0x64, 0x63, 0x5f, 0x77, 0x6f, 0x72,
+ 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x78, 0x79, 0x2c, 0x20, 0x65, 0x6c, 0x65,
+ 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79,
+ 0x29, 0x20, 0x2f, 0x0a, 0x09, 0x09, 0x09, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x62, 0x73, 0x28, 0x78, 0x64, 0x63,
+ 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x7a, 0x29, 0x29,
+ 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x61, 0x5f, 0x61, 0x72, 0x67, 0x20, 0x3c,
+ 0x20, 0x30, 0x2e, 0x35, 0x66, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x66, 0x6c, 0x6f,
+ 0x61, 0x74, 0x20, 0x61, 0x70, 0x6f, 0x64, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d,
+ 0x20, 0x61, 0x70, 0x6f, 0x64, 0x69, 0x7a, 0x65, 0x28, 0x61, 0x5f, 0x61, 0x72, 0x67, 0x29, 0x3b,
+ 0x0a, 0x09, 0x09, 0x09, 0x09, 0x2f, 0x2a, 0x20, 0x4e, 0x4f, 0x54, 0x45, 0x3a, 0x20, 0x74, 0x72,
+ 0x69, 0x62, 0x61, 0x6c, 0x20, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x20, 0x2a,
+ 0x2f, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d,
+ 0x69, 0x74, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x61, 0x70, 0x6f, 0x64, 0x69, 0x7a, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x2a, 0x3d, 0x20, 0x69, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x65, 0x73,
+ 0x71, 0x72, 0x74, 0x28, 0x41, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43,
+ 0x6f, 0x75, 0x6e, 0x74, 0x29, 0x3b, 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x66, 0x6c, 0x6f, 0x61,
+ 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x69, 0x64, 0x78, 0x20, 0x20, 0x3d, 0x20,
+ 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x28, 0x74, 0x72, 0x61,
+ 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x2b,
+ 0x20, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x28, 0x78, 0x64, 0x63, 0x5f, 0x77, 0x6f,
+ 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65,
+ 0x6e, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x29, 0x3b, 0x0a, 0x09,
+ 0x09, 0x09, 0x09, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x20, 0x3d, 0x20, 0x61, 0x70, 0x6f, 0x64, 0x69, 0x7a, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x20, 0x2a, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x66, 0x28, 0x72,
+ 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2c, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73,
+ 0x6d, 0x69, 0x74, 0x2c, 0x20, 0x73, 0x69, 0x64, 0x78, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09,
+ 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x2b, 0x3d, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54,
+ 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x28, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2c, 0x20, 0x6c, 0x65,
+ 0x6e, 0x67, 0x74, 0x68, 0x28, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x29, 0x29, 0x3b, 0x0a, 0x09, 0x09,
+ 0x09, 0x7d, 0x0a, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x7d, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72,
+ 0x6e, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x52, 0x45, 0x53,
+ 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x53, 0x28,
+ 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64,
+ 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74,
+ 0x20, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f,
+ 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x3d, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x28, 0x46, 0x61, 0x73,
+ 0x74, 0x29, 0x3f, 0x20, 0x75, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x3a, 0x20, 0x30, 0x3b, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e,
+ 0x74, 0x20, 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x65, 0x6e, 0x64,
+ 0x20, 0x20, 0x20, 0x3d, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x28, 0x46, 0x61, 0x73, 0x74, 0x29, 0x3f,
+ 0x20, 0x75, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x3a,
+ 0x20, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x0a, 0x0a,
+ 0x09, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x72, 0x65, 0x73,
+ 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50,
+ 0x45, 0x28, 0x30, 0x29, 0x3b, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x33, 0x20, 0x78, 0x64, 0x63, 0x5f,
+ 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x28, 0x78,
+ 0x64, 0x63, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x2a, 0x20, 0x76,
+ 0x65, 0x63, 0x34, 0x28, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c,
+ 0x20, 0x31, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28,
+ 0x69, 0x6e, 0x74, 0x20, 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x3d,
+ 0x20, 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x72,
+ 0x74, 0x3b, 0x20, 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x3c, 0x20,
+ 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x65, 0x6e, 0x64, 0x3b, 0x20,
+ 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2b, 0x2b, 0x29, 0x20, 0x7b, 0x0a,
+ 0x09, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f,
+ 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x3d, 0x20, 0x64, 0x69, 0x73, 0x74, 0x61,
+ 0x6e, 0x63, 0x65, 0x28, 0x78, 0x64, 0x63, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f,
+ 0x69, 0x6e, 0x74, 0x2e, 0x78, 0x7a, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x72, 0x78, 0x5f,
+ 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x2a, 0x20, 0x78, 0x64, 0x63, 0x5f, 0x65, 0x6c,
+ 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x69, 0x74, 0x63, 0x68, 0x2e, 0x78, 0x2c, 0x20, 0x30,
+ 0x29, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x5f, 0x61, 0x72,
+ 0x67, 0x20, 0x3d, 0x20, 0x61, 0x62, 0x73, 0x28, 0x46, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20,
+ 0x2a, 0x20, 0x28, 0x78, 0x64, 0x63, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69,
+ 0x6e, 0x74, 0x2e, 0x78, 0x20, 0x2d, 0x20, 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
+ 0x6c, 0x20, 0x2a, 0x20, 0x78, 0x64, 0x63, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f,
+ 0x70, 0x69, 0x74, 0x63, 0x68, 0x2e, 0x78, 0x29, 0x20, 0x2f, 0x0a, 0x09, 0x09, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61,
+ 0x62, 0x73, 0x28, 0x78, 0x64, 0x63, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69,
+ 0x6e, 0x74, 0x2e, 0x7a, 0x29, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x61, 0x5f,
+ 0x61, 0x72, 0x67, 0x20, 0x3c, 0x20, 0x30, 0x2e, 0x35, 0x66, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x09,
+ 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x70, 0x6f, 0x64, 0x69, 0x7a, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x61, 0x70, 0x6f, 0x64, 0x69, 0x7a, 0x65, 0x28, 0x61, 0x5f, 0x61,
+ 0x72, 0x67, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74,
+ 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x20, 0x3d, 0x20, 0x53, 0x70, 0x61, 0x72,
+ 0x73, 0x65, 0x3b, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x20, 0x3c, 0x20, 0x41,
+ 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b,
+ 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x2b, 0x2b, 0x29, 0x20, 0x7b, 0x0a, 0x09,
+ 0x09, 0x09, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x20, 0x20, 0x74, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e,
+ 0x6e, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x28,
+ 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x29, 0x20, 0x3f, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c,
+ 0x6f, 0x61, 0x64, 0x28, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x65,
+ 0x6e, 0x74, 0x73, 0x2c, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x20, 0x2d, 0x20,
+ 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x29, 0x2e, 0x78, 0x20, 0x3a, 0x20, 0x74, 0x72, 0x61, 0x6e,
+ 0x73, 0x6d, 0x69, 0x74, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x76, 0x65, 0x63, 0x33, 0x20, 0x20,
+ 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x20,
+ 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x78, 0x64, 0x63, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x65,
+ 0x6e, 0x74, 0x5f, 0x70, 0x69, 0x74, 0x63, 0x68, 0x20, 0x2a, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28,
+ 0x74, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x6f,
+ 0x72, 0x28, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x2f,
+ 0x20, 0x32, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x66,
+ 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x69, 0x64, 0x78, 0x20,
+ 0x20, 0x3d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x28,
+ 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x28, 0x78, 0x64, 0x63, 0x5f, 0x77, 0x6f, 0x72,
+ 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d,
+ 0x69, 0x74, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x29, 0x20, 0x2b, 0x20, 0x72, 0x65, 0x63,
+ 0x65, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x29, 0x3b, 0x0a,
+ 0x09, 0x09, 0x09, 0x09, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x3d, 0x20, 0x61, 0x70, 0x6f, 0x64, 0x69, 0x7a, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x20, 0x2a, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x66, 0x28,
+ 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2c, 0x20, 0x74, 0x72, 0x61, 0x6e,
+ 0x73, 0x6d, 0x69, 0x74, 0x2c, 0x20, 0x73, 0x69, 0x64, 0x78, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09,
+ 0x09, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x2b, 0x3d, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c,
+ 0x54, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x28, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2c, 0x20, 0x6c,
+ 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x29, 0x29, 0x3b, 0x0a, 0x09,
+ 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x7d, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75,
+ 0x72, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x76, 0x6f,
+ 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x69, 0x76, 0x65,
+ 0x63, 0x33, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x76, 0x6f, 0x78, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x69,
+ 0x76, 0x65, 0x63, 0x33, 0x28, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e,
+ 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x29, 0x3b, 0x0a, 0x09, 0x69, 0x66,
+ 0x20, 0x28, 0x21, 0x61, 0x6c, 0x6c, 0x28, 0x6c, 0x65, 0x73, 0x73, 0x54, 0x68, 0x61, 0x6e, 0x28,
+ 0x6f, 0x75, 0x74, 0x5f, 0x76, 0x6f, 0x78, 0x65, 0x6c, 0x2c, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65,
+ 0x53, 0x69, 0x7a, 0x65, 0x28, 0x75, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f,
+ 0x74, 0x65, 0x78, 0x29, 0x29, 0x29, 0x29, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e,
+ 0x3b, 0x0a, 0x0a, 0x23, 0x69, 0x66, 0x20, 0x46, 0x61, 0x73, 0x74, 0x0a, 0x09, 0x52, 0x45, 0x53,
+ 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x73, 0x75, 0x6d, 0x20, 0x3d, 0x20, 0x52,
+ 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x53, 0x54, 0x28,
+ 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x28, 0x75, 0x5f, 0x6f, 0x75, 0x74, 0x5f,
+ 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x2c, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x76, 0x6f,
+ 0x78, 0x65, 0x6c, 0x29, 0x29, 0x3b, 0x0a, 0x23, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x09, 0x52, 0x45,
+ 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x73, 0x75, 0x6d, 0x20, 0x3d, 0x20,
+ 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x28, 0x30, 0x29, 0x3b, 0x0a,
+ 0x09, 0x6f, 0x75, 0x74, 0x5f, 0x76, 0x6f, 0x78, 0x65, 0x6c, 0x20, 0x2b, 0x3d, 0x20, 0x75, 0x5f,
+ 0x76, 0x6f, 0x78, 0x65, 0x6c, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3b, 0x0a, 0x23, 0x65,
+ 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x33, 0x20, 0x77, 0x6f, 0x72, 0x6c,
+ 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x28, 0x76, 0x6f, 0x78, 0x65, 0x6c,
+ 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x2a, 0x20, 0x76, 0x65, 0x63,
+ 0x34, 0x28, 0x6f, 0x75, 0x74, 0x5f, 0x76, 0x6f, 0x78, 0x65, 0x6c, 0x2c, 0x20, 0x31, 0x29, 0x29,
+ 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x0a, 0x09, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x20, 0x28,
+ 0x41, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x29,
+ 0x20, 0x7b, 0x0a, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x41, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69,
+ 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x5f, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x53, 0x3a,
+ 0x0a, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x41, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69,
+ 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x5f, 0x55, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x53, 0x3a, 0x0a,
+ 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x73, 0x75, 0x6d, 0x20, 0x2b, 0x3d, 0x20, 0x46, 0x4f, 0x52, 0x43,
+ 0x45, 0x53, 0x28, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x29, 0x3b,
+ 0x0a, 0x09, 0x7d, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20,
+ 0x41, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x5f,
+ 0x48, 0x45, 0x52, 0x43, 0x55, 0x4c, 0x45, 0x53, 0x3a, 0x0a, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20,
+ 0x41, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x5f,
+ 0x55, 0x48, 0x45, 0x52, 0x43, 0x55, 0x4c, 0x45, 0x53, 0x3a, 0x0a, 0x09, 0x63, 0x61, 0x73, 0x65,
+ 0x20, 0x41, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64,
+ 0x5f, 0x48, 0x45, 0x52, 0x4f, 0x5f, 0x50, 0x41, 0x3a, 0x0a, 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x73,
+ 0x75, 0x6d, 0x20, 0x2b, 0x3d, 0x20, 0x48, 0x45, 0x52, 0x43, 0x55, 0x4c, 0x45, 0x53, 0x28, 0x77,
+ 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x29, 0x3b, 0x0a, 0x09, 0x7d, 0x62,
+ 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x41, 0x63, 0x71, 0x75,
+ 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x5f, 0x46, 0x6c, 0x61, 0x73,
+ 0x68, 0x3a, 0x0a, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x41, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69,
+ 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x5f, 0x52, 0x43, 0x41, 0x5f, 0x54, 0x50, 0x57,
+ 0x3a, 0x0a, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x41, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74,
+ 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x5f, 0x52, 0x43, 0x41, 0x5f, 0x56, 0x4c, 0x53, 0x3a,
+ 0x0a, 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x73, 0x75, 0x6d, 0x20, 0x2b, 0x3d, 0x20, 0x52, 0x43, 0x41,
+ 0x28, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x29, 0x3b, 0x0a, 0x09,
+ 0x7d, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x09, 0x7d, 0x0a, 0x0a, 0x09, 0x23, 0x69, 0x66,
+ 0x20, 0x43, 0x6f, 0x68, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74,
+ 0x69, 0x6e, 0x67, 0x0a, 0x09, 0x09, 0x2f, 0x2a, 0x20, 0x54, 0x4f, 0x44, 0x4f, 0x28, 0x72, 0x6e,
+ 0x70, 0x29, 0x3a, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x74,
+ 0x68, 0x61, 0x74, 0x20, 0x62, 0x72, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x20, 0x72,
+ 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x20, 0x7e, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74,
+ 0x20, 0x2a, 0x2f, 0x0a, 0x09, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, 0x65, 0x6e, 0x6f,
+ 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x73, 0x75, 0x6d, 0x5b, 0x52, 0x45,
+ 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x4c, 0x41, 0x53, 0x54, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x5d,
+ 0x20, 0x2b, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x73, 0x75, 0x6d, 0x5b, 0x52, 0x45, 0x53,
+ 0x55, 0x4c, 0x54, 0x5f, 0x4c, 0x41, 0x53, 0x54, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x5d, 0x20,
+ 0x3d, 0x3d, 0x20, 0x30, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f,
+ 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x53, 0x54, 0x28, 0x73, 0x75, 0x6d, 0x29, 0x20, 0x2a,
+ 0x3d, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41,
+ 0x53, 0x54, 0x28, 0x73, 0x75, 0x6d, 0x29, 0x20, 0x2f, 0x20, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x69,
+ 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x3b, 0x0a, 0x09, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x0a,
+ 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x28, 0x75, 0x5f, 0x6f, 0x75,
+ 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x2c, 0x20, 0x6f, 0x75, 0x74, 0x5f,
+ 0x76, 0x6f, 0x78, 0x65, 0x6c, 0x2c, 0x20, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x54, 0x59,
+ 0x50, 0x45, 0x5f, 0x43, 0x41, 0x53, 0x54, 0x28, 0x73, 0x75, 0x6d, 0x29, 0x29, 0x3b, 0x0a, 0x7d,
+ 0x0a
+};
+
+read_only global u8 beamformer_shader_minmax_bytes[] = {
+ 0x2f, 0x2a, 0x20, 0x53, 0x65, 0x65, 0x20, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x20, 0x66,
+ 0x6f, 0x72, 0x20, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69,
+ 0x6c, 0x73, 0x2e, 0x20, 0x2a, 0x2f, 0x0a, 0x0a, 0x2f, 0x2a, 0x20, 0x4e, 0x4f, 0x54, 0x45, 0x3a,
+ 0x20, 0x44, 0x6f, 0x65, 0x73, 0x20, 0x61, 0x20, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x20, 0x73,
+ 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x69, 0x6e, 0x20, 0x33, 0x44, 0x20, 0x66, 0x6f, 0x72, 0x20,
+ 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x65, 0x73, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6c, 0x61, 0x72,
+ 0x67, 0x65, 0x73, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x73, 0x20, 0x2a, 0x2f, 0x0a, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63,
+ 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x78, 0x20, 0x3d, 0x20, 0x33, 0x32, 0x2c, 0x20,
+ 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x79, 0x20, 0x3d, 0x20, 0x31,
+ 0x2c, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x7a, 0x20, 0x3d,
+ 0x20, 0x33, 0x32, 0x29, 0x20, 0x69, 0x6e, 0x3b, 0x0a, 0x0a, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74,
+ 0x28, 0x72, 0x67, 0x33, 0x32, 0x66, 0x2c, 0x20, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20,
+ 0x3d, 0x20, 0x30, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x20, 0x75,
+ 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x33, 0x44, 0x20, 0x75,
+ 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x3b, 0x0a, 0x6c,
+ 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x72, 0x67, 0x33, 0x32, 0x66, 0x2c, 0x20, 0x62, 0x69, 0x6e,
+ 0x64, 0x69, 0x6e, 0x67, 0x20, 0x3d, 0x20, 0x31, 0x29, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x6f,
+ 0x6e, 0x6c, 0x79, 0x20, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x69, 0x6d, 0x61, 0x67,
+ 0x65, 0x33, 0x44, 0x20, 0x75, 0x5f, 0x6d, 0x69, 0x70, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x74,
+ 0x65, 0x78, 0x3b, 0x0a, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x28, 0x29,
+ 0x0a, 0x7b, 0x0a, 0x09, 0x69, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x63, 0x6f,
+ 0x6f, 0x72, 0x64, 0x20, 0x3d, 0x20, 0x69, 0x76, 0x65, 0x63, 0x33, 0x28, 0x67, 0x6c, 0x5f, 0x47,
+ 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49,
+ 0x44, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x0a, 0x09, 0x69, 0x76, 0x65, 0x63, 0x33, 0x20,
+ 0x69, 0x64, 0x78, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x20,
+ 0x2a, 0x20, 0x32, 0x3b, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6d, 0x69, 0x6e, 0x5f, 0x6d,
+ 0x61, 0x78, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28,
+ 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x32,
+ 0x3b, 0x20, 0x69, 0x2b, 0x2b, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28,
+ 0x69, 0x6e, 0x74, 0x20, 0x6a, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x6a, 0x20, 0x3c, 0x20, 0x32,
+ 0x3b, 0x20, 0x6a, 0x2b, 0x2b, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x76, 0x65, 0x63, 0x32,
+ 0x20, 0x61, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x61,
+ 0x64, 0x28, 0x75, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x65, 0x78,
+ 0x2c, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x20, 0x69, 0x76, 0x65, 0x63, 0x33, 0x28, 0x69, 0x2c,
+ 0x20, 0x6a, 0x2c, 0x20, 0x30, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x76,
+ 0x65, 0x63, 0x32, 0x20, 0x62, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65,
+ 0x4c, 0x6f, 0x61, 0x64, 0x28, 0x75, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f,
+ 0x74, 0x65, 0x78, 0x2c, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x20, 0x69, 0x76, 0x65, 0x63, 0x33,
+ 0x28, 0x69, 0x2c, 0x20, 0x6a, 0x2c, 0x20, 0x31, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x3b, 0x0a, 0x09,
+ 0x09, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x6d, 0x69,
+ 0x6e, 0x28, 0x6d, 0x69, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x2e, 0x78, 0x2c, 0x20, 0x6d, 0x69, 0x6e,
+ 0x28, 0x61, 0x2e, 0x78, 0x2c, 0x20, 0x62, 0x2e, 0x78, 0x29, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09,
+ 0x6d, 0x69, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x28,
+ 0x6d, 0x69, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x2e, 0x79, 0x2c, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x61,
+ 0x2e, 0x79, 0x2c, 0x20, 0x62, 0x2e, 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x7d, 0x0a, 0x09,
+ 0x7d, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x28, 0x75, 0x5f,
+ 0x6d, 0x69, 0x70, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x74, 0x65, 0x78, 0x2c, 0x20, 0x6f, 0x75,
+ 0x74, 0x5f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x6d, 0x69,
+ 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x29, 0x29, 0x3b, 0x0a, 0x7d,
+ 0x0a
+};
+
+read_only global u8 beamformer_shader_sum_bytes[] = {
+ 0x2f, 0x2a, 0x20, 0x53, 0x65, 0x65, 0x20, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x20, 0x66,
+ 0x6f, 0x72, 0x20, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69,
+ 0x6c, 0x73, 0x2e, 0x20, 0x2a, 0x2f, 0x0a, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f,
+ 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x78, 0x20, 0x3d, 0x20, 0x33, 0x32, 0x2c,
+ 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x79, 0x20, 0x3d, 0x20,
+ 0x31, 0x2c, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x7a, 0x20,
+ 0x3d, 0x20, 0x33, 0x32, 0x29, 0x20, 0x69, 0x6e, 0x3b, 0x0a, 0x0a, 0x6c, 0x61, 0x79, 0x6f, 0x75,
+ 0x74, 0x28, 0x72, 0x67, 0x33, 0x32, 0x66, 0x2c, 0x20, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67,
+ 0x20, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x33, 0x44, 0x20,
+ 0x75, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x69, 0x6d, 0x67, 0x3b, 0x0a, 0x6c, 0x61, 0x79, 0x6f, 0x75,
+ 0x74, 0x28, 0x72, 0x67, 0x33, 0x32, 0x66, 0x2c, 0x20, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67,
+ 0x20, 0x3d, 0x20, 0x31, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x20,
+ 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x33, 0x44, 0x20,
+ 0x75, 0x5f, 0x69, 0x6e, 0x5f, 0x69, 0x6d, 0x67, 0x3b, 0x0a, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20,
+ 0x6d, 0x61, 0x69, 0x6e, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x69, 0x76, 0x65, 0x63, 0x33, 0x20,
+ 0x76, 0x6f, 0x78, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x69, 0x76, 0x65, 0x63, 0x33, 0x28, 0x67, 0x6c,
+ 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x49, 0x44, 0x29, 0x3b, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x34, 0x20, 0x20, 0x73, 0x75, 0x6d,
+ 0x20, 0x20, 0x20, 0x3d, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x28, 0x75,
+ 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x69, 0x6d, 0x67, 0x2c, 0x20, 0x76, 0x6f, 0x78, 0x65, 0x6c, 0x29,
+ 0x20, 0x2b, 0x20, 0x75, 0x5f, 0x73, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x63, 0x61, 0x6c,
+ 0x65, 0x20, 0x2a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x28, 0x75, 0x5f,
+ 0x69, 0x6e, 0x5f, 0x69, 0x6d, 0x67, 0x2c, 0x20, 0x76, 0x6f, 0x78, 0x65, 0x6c, 0x29, 0x3b, 0x0a,
+ 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x28, 0x75, 0x5f, 0x6f, 0x75,
+ 0x74, 0x5f, 0x69, 0x6d, 0x67, 0x2c, 0x20, 0x76, 0x6f, 0x78, 0x65, 0x6c, 0x2c, 0x20, 0x73, 0x75,
+ 0x6d, 0x29, 0x3b, 0x0a, 0x7d, 0x0a
+};
+
+read_only global u8 beamformer_shader_render3d_bytes[] = {
+ 0x2f, 0x2a, 0x20, 0x53, 0x65, 0x65, 0x20, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x20, 0x66,
+ 0x6f, 0x72, 0x20, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69,
+ 0x6c, 0x73, 0x2e, 0x20, 0x2a, 0x2f, 0x0a, 0x0a, 0x2f, 0x2a, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74,
+ 0x3a, 0x20, 0x20, 0x68, 0x20, 0x5b, 0x30, 0x2c, 0x33, 0x36, 0x30, 0x5d, 0x20, 0x7c, 0x20, 0x73,
+ 0x2c, 0x76, 0x20, 0x5b, 0x30, 0x2c, 0x20, 0x31, 0x5d, 0x20, 0x2a, 0x0a, 0x20, 0x2a, 0x20, 0x6f,
+ 0x75, 0x74, 0x70, 0x75, 0x74, 0x3a, 0x20, 0x72, 0x67, 0x62, 0x20, 0x5b, 0x30, 0x2c, 0x31, 0x5d,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x2f,
+ 0x0a, 0x76, 0x65, 0x63, 0x33, 0x20, 0x68, 0x73, 0x76, 0x32, 0x72, 0x67, 0x62, 0x28, 0x76, 0x65,
+ 0x63, 0x33, 0x20, 0x68, 0x73, 0x76, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x33, 0x20,
+ 0x6b, 0x20, 0x3d, 0x20, 0x6d, 0x6f, 0x64, 0x28, 0x76, 0x65, 0x63, 0x33, 0x28, 0x35, 0x2c, 0x20,
+ 0x33, 0x2c, 0x20, 0x31, 0x29, 0x20, 0x2b, 0x20, 0x68, 0x73, 0x76, 0x2e, 0x78, 0x20, 0x2f, 0x20,
+ 0x36, 0x30, 0x2c, 0x20, 0x36, 0x29, 0x3b, 0x0a, 0x09, 0x6b, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78,
+ 0x28, 0x6d, 0x69, 0x6e, 0x28, 0x6d, 0x69, 0x6e, 0x28, 0x6b, 0x2c, 0x20, 0x34, 0x20, 0x2d, 0x20,
+ 0x6b, 0x29, 0x2c, 0x20, 0x31, 0x29, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x0a, 0x09, 0x72, 0x65, 0x74,
+ 0x75, 0x72, 0x6e, 0x20, 0x68, 0x73, 0x76, 0x2e, 0x7a, 0x20, 0x2d, 0x20, 0x68, 0x73, 0x76, 0x2e,
+ 0x7a, 0x20, 0x2a, 0x20, 0x68, 0x73, 0x76, 0x2e, 0x79, 0x20, 0x2a, 0x20, 0x6b, 0x3b, 0x0a, 0x7d,
+ 0x0a, 0x0a, 0x2f, 0x2a, 0x20, 0x4e, 0x4f, 0x54, 0x45, 0x28, 0x72, 0x6e, 0x70, 0x29, 0x3a, 0x20,
+ 0x61, 0x64, 0x61, 0x70, 0x74, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x3a, 0x20, 0x68, 0x74,
+ 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x69, 0x71, 0x75, 0x69, 0x6c, 0x65, 0x7a, 0x6c, 0x65, 0x73,
+ 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x73, 0x2f, 0x64, 0x69,
+ 0x73, 0x74, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x2a, 0x2f, 0x0a, 0x66,
+ 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x64, 0x66, 0x5f, 0x77, 0x69, 0x72, 0x65, 0x5f, 0x62, 0x6f,
+ 0x78, 0x5f, 0x6f, 0x75, 0x74, 0x73, 0x69, 0x64, 0x65, 0x28, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70,
+ 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x62, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20,
+ 0x65, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x70, 0x20, 0x3d, 0x20, 0x61, 0x62, 0x73, 0x28, 0x70, 0x29,
+ 0x20, 0x2d, 0x20, 0x62, 0x3b, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x33, 0x20, 0x71, 0x20, 0x3d, 0x20,
+ 0x61, 0x62, 0x73, 0x28, 0x70, 0x20, 0x2b, 0x20, 0x65, 0x29, 0x20, 0x2d, 0x20, 0x65, 0x3b, 0x0a,
+ 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20,
+ 0x6d, 0x69, 0x6e, 0x28, 0x6d, 0x69, 0x6e, 0x28, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x6d,
+ 0x61, 0x78, 0x28, 0x76, 0x65, 0x63, 0x33, 0x28, 0x70, 0x2e, 0x78, 0x2c, 0x20, 0x71, 0x2e, 0x79,
+ 0x2c, 0x20, 0x71, 0x2e, 0x7a, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x2c, 0x0a, 0x09,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x6d, 0x61,
+ 0x78, 0x28, 0x76, 0x65, 0x63, 0x33, 0x28, 0x71, 0x2e, 0x78, 0x2c, 0x20, 0x70, 0x2e, 0x79, 0x2c,
+ 0x20, 0x71, 0x2e, 0x7a, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x2c, 0x0a, 0x09,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x6d, 0x61,
+ 0x78, 0x28, 0x76, 0x65, 0x63, 0x33, 0x28, 0x71, 0x2e, 0x78, 0x2c, 0x20, 0x71, 0x2e, 0x79, 0x2c,
+ 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x09,
+ 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x3b, 0x0a, 0x7d,
+ 0x0a, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x28, 0x29, 0x0a, 0x7b, 0x0a,
+ 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x6d, 0x70, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x6e,
+ 0x67, 0x74, 0x68, 0x28, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x75, 0x5f, 0x74, 0x65,
+ 0x78, 0x74, 0x75, 0x72, 0x65, 0x2c, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x63,
+ 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x29, 0x2e, 0x78, 0x79, 0x29, 0x3b, 0x0a,
+ 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64,
+ 0x5f, 0x76, 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x28, 0x31, 0x30, 0x2e, 0x30, 0x66,
+ 0x2c, 0x20, 0x75, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x20, 0x2f, 0x20,
+ 0x32, 0x30, 0x2e, 0x30, 0x66, 0x29, 0x3b, 0x0a, 0x09, 0x73, 0x6d, 0x70, 0x20, 0x3d, 0x20, 0x63,
+ 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x73, 0x6d, 0x70, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x66, 0x2c, 0x20,
+ 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x29, 0x3b, 0x0a,
+ 0x09, 0x73, 0x6d, 0x70, 0x20, 0x3d, 0x20, 0x73, 0x6d, 0x70, 0x20, 0x2f, 0x20, 0x74, 0x68, 0x72,
+ 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x3b, 0x0a, 0x09, 0x73, 0x6d, 0x70,
+ 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x28, 0x73, 0x6d, 0x70, 0x2c, 0x20, 0x75, 0x5f, 0x67, 0x61,
+ 0x6d, 0x6d, 0x61, 0x29, 0x3b, 0x0a, 0x0a, 0x09, 0x2f, 0x2f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20,
+ 0x74, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65,
+ 0x5f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x2e, 0x79, 0x3b, 0x0a, 0x09,
+ 0x2f, 0x2f, 0x73, 0x6d, 0x70, 0x20, 0x3d, 0x20, 0x73, 0x6d, 0x70, 0x20, 0x2a, 0x20, 0x73, 0x6d,
+ 0x6f, 0x6f, 0x74, 0x68, 0x73, 0x74, 0x65, 0x70, 0x28, 0x2d, 0x30, 0x2e, 0x34, 0x2c, 0x20, 0x31,
+ 0x2e, 0x31, 0x2c, 0x20, 0x74, 0x29, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x67, 0x61, 0x69, 0x6e, 0x3b,
+ 0x0a, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x28, 0x75, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x73, 0x63, 0x61,
+ 0x6c, 0x65, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x73, 0x6d, 0x70, 0x20, 0x3d, 0x20, 0x32, 0x30,
+ 0x20, 0x2a, 0x20, 0x6c, 0x6f, 0x67, 0x28, 0x73, 0x6d, 0x70, 0x29, 0x20, 0x2f, 0x20, 0x6c, 0x6f,
+ 0x67, 0x28, 0x31, 0x30, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x73, 0x6d, 0x70, 0x20, 0x3d, 0x20, 0x63,
+ 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x73, 0x6d, 0x70, 0x2c, 0x20, 0x2d, 0x75, 0x5f, 0x64, 0x62, 0x5f,
+ 0x63, 0x75, 0x74, 0x6f, 0x66, 0x66, 0x2c, 0x20, 0x30, 0x29, 0x20, 0x2f, 0x20, 0x2d, 0x75, 0x5f,
+ 0x64, 0x62, 0x5f, 0x63, 0x75, 0x74, 0x6f, 0x66, 0x66, 0x3b, 0x0a, 0x09, 0x09, 0x73, 0x6d, 0x70,
+ 0x20, 0x3d, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x73, 0x6d, 0x70, 0x3b, 0x0a, 0x09, 0x7d, 0x0a, 0x0a,
+ 0x09, 0x76, 0x65, 0x63, 0x33, 0x20, 0x20, 0x70, 0x20, 0x3d, 0x20, 0x32, 0x2e, 0x30, 0x66, 0x20,
+ 0x2a, 0x20, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x63,
+ 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x20, 0x2d, 0x20, 0x31, 0x2e, 0x30, 0x66,
+ 0x3b, 0x0a, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61,
+ 0x6d, 0x70, 0x28, 0x73, 0x64, 0x66, 0x5f, 0x77, 0x69, 0x72, 0x65, 0x5f, 0x62, 0x6f, 0x78, 0x5f,
+ 0x6f, 0x75, 0x74, 0x73, 0x69, 0x64, 0x65, 0x28, 0x70, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28,
+ 0x31, 0x2e, 0x30, 0x66, 0x29, 0x2c, 0x20, 0x75, 0x5f, 0x62, 0x62, 0x5f, 0x66, 0x72, 0x61, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x20, 0x2f, 0x20, 0x75, 0x5f, 0x62, 0x62, 0x5f, 0x66, 0x72, 0x61,
+ 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x29, 0x3b, 0x0a, 0x0a, 0x09,
+ 0x6f, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x75, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63,
+ 0x34, 0x28, 0x74, 0x20, 0x2a, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x73, 0x6d, 0x70, 0x29, 0x20,
+ 0x2b, 0x20, 0x28, 0x31, 0x20, 0x2d, 0x20, 0x74, 0x29, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x62, 0x62,
+ 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x75, 0x72, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x31, 0x29, 0x3b,
+ 0x0a, 0x09, 0x69, 0x66, 0x20, 0x28, 0x75, 0x5f, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x5f, 0x62, 0x62,
+ 0x29, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x75, 0x72, 0x20, 0x3d, 0x20, 0x75,
+ 0x5f, 0x62, 0x62, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x75, 0x72, 0x3b, 0x0a, 0x0a, 0x09, 0x2f, 0x2f,
+ 0x6f, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x75, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63,
+ 0x34, 0x28, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x6f,
+ 0x64, 0x28, 0x75, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x2c, 0x20, 0x74, 0x65, 0x78,
+ 0x74, 0x75, 0x72, 0x65, 0x5f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x29,
+ 0x2e, 0x79, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x29, 0x3b, 0x0a, 0x09, 0x2f,
+ 0x2f, 0x6f, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x75, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x65,
+ 0x63, 0x34, 0x28, 0x61, 0x62, 0x73, 0x28, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x29, 0x2c, 0x20,
+ 0x31, 0x29, 0x3b, 0x0a, 0x09, 0x2f, 0x2f, 0x6f, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x75,
+ 0x72, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x31, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x31,
+ 0x2c, 0x20, 0x73, 0x6d, 0x70, 0x29, 0x3b, 0x0a, 0x09, 0x2f, 0x2f, 0x6f, 0x75, 0x74, 0x5f, 0x63,
+ 0x6f, 0x6c, 0x6f, 0x75, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x73, 0x6d, 0x70,
+ 0x20, 0x2a, 0x20, 0x61, 0x62, 0x73, 0x28, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x29, 0x2c, 0x20,
+ 0x31, 0x29, 0x3b, 0x0a, 0x7d, 0x0a
+};
+
+read_only global s8 beamformer_shader_data[] = {
+ {.data = beamformer_shader_decode_bytes, .len = countof(beamformer_shader_decode_bytes)},
+ {.data = beamformer_shader_filter_bytes, .len = countof(beamformer_shader_filter_bytes)},
+ {.data = beamformer_shader_das_bytes, .len = countof(beamformer_shader_das_bytes)},
+ {.data = beamformer_shader_minmax_bytes, .len = countof(beamformer_shader_minmax_bytes)},
+ {.data = beamformer_shader_sum_bytes, .len = countof(beamformer_shader_sum_bytes)},
+ {.data = beamformer_shader_render3d_bytes, .len = countof(beamformer_shader_render3d_bytes)},
+};
+
diff --git a/static.c b/static.c
@@ -421,19 +421,22 @@ setup_beamformer(Arena *memory, BeamformerCtx **o_ctx, BeamformerInput **o_input
glEnable(GL_DEBUG_OUTPUT);
#endif
- for EachElement(beamformer_reloadable_compute_shader_info_indices, it) {
- i32 index = beamformer_reloadable_compute_shader_info_indices[it];
- Arena temp = scratch;
- s8 file = push_s8_from_parts(&temp, s8(OS_PATH_SEPARATOR), s8("shaders"),
- beamformer_reloadable_shader_files[index]);
-
- BeamformerShaderReloadIndirectContext *rsi = push_struct(memory, typeof(*rsi));
- rsi->beamformer = ctx;
- rsi->shader = beamformer_reloadable_shader_kinds[index];
- os_add_file_watch(&ctx->os, memory, file, reload_shader_indirect, (iptr)rsi);
- reload_shader_indirect(&ctx->os, file, (iptr)rsi, *memory);
+ if (!BakeShaders)
+ {
+ for EachElement(beamformer_reloadable_compute_shader_info_indices, it) {
+ i32 index = beamformer_reloadable_compute_shader_info_indices[it];
+ Arena temp = scratch;
+ s8 file = push_s8_from_parts(&temp, s8(OS_PATH_SEPARATOR), s8("shaders"),
+ beamformer_reloadable_shader_files[index]);
+
+ BeamformerShaderReloadIndirectContext *rsi = push_struct(memory, typeof(*rsi));
+ rsi->beamformer = ctx;
+ rsi->shader = beamformer_reloadable_shader_kinds[index];
+ os_add_file_watch(&ctx->os, memory, file, reload_shader_indirect, (iptr)rsi);
+ reload_shader_indirect(&ctx->os, file, (iptr)rsi, *memory);
+ }
+ os_wake_waiters(&worker->sync_variable);
}
- os_wake_waiters(&worker->sync_variable);
FrameViewRenderContext *fvr = &ctx->frame_view_render_context;
glCreateFramebuffers(countof(fvr->framebuffers), fvr->framebuffers);
@@ -451,9 +454,8 @@ setup_beamformer(Arena *memory, BeamformerCtx **o_ctx, BeamformerInput **o_input
"only a single render shader is currently handled");
i32 render_rsi_index = beamformer_reloadable_render_shader_info_indices[0];
- s8 render_file = push_s8_from_parts(&scratch, s8(OS_PATH_SEPARATOR), s8("shaders"),
- beamformer_reloadable_shader_files[render_rsi_index]);
- ShaderReloadContext *render_3d = push_struct(memory, typeof(*render_3d));
+ Arena *arena = BakeShaders? &scratch : memory;
+ ShaderReloadContext *render_3d = push_struct(arena, typeof(*render_3d));
render_3d->beamformer_context = ctx;
render_3d->reloadable_info_index = render_rsi_index;
render_3d->gl_type = GL_FRAGMENT_SHADER;
@@ -472,7 +474,7 @@ setup_beamformer(Arena *memory, BeamformerCtx **o_ctx, BeamformerInput **o_input
"\n"
"layout(binding = 0) uniform sampler3D u_texture;\n");
- render_3d->link = push_struct(memory, typeof(*render_3d));
+ render_3d->link = push_struct(arena, typeof(*render_3d));
render_3d->link->reloadable_info_index = -1;
render_3d->link->gl_type = GL_VERTEX_SHADER;
render_3d->link->link = render_3d;
@@ -501,8 +503,14 @@ setup_beamformer(Arena *memory, BeamformerCtx **o_ctx, BeamformerInput **o_input
"\tf_normal = v_normal;\n"
"\tgl_Position = u_projection * u_view * u_model * vec4(pos, 1);\n"
"}\n");
+
+ s8 render_file = {0};
+ if (!BakeShaders) {
+ render_file = push_s8_from_parts(&scratch, s8(OS_PATH_SEPARATOR), s8("shaders"),
+ beamformer_reloadable_shader_files[render_rsi_index]);
+ os_add_file_watch(&ctx->os, memory, render_file, reload_shader, (iptr)render_3d);
+ }
reload_shader(&ctx->os, render_file, (iptr)render_3d, *memory);
- os_add_file_watch(&ctx->os, memory, render_file, reload_shader, (iptr)render_3d);
f32 unit_cube_vertices[] = {
0.5f, 0.5f, -0.5f,