From 878647e21dec1a101a5d7ced6134e70a8e2ffca8 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Mon, 4 Nov 2024 23:49:27 +0100 Subject: [PATCH 1/5] Add resizable ArrayBuffers This commit implements resizable ArrayBuffers - RABs for short - and extends typed arrays (TAs) to support fixed-length and length-tracking modes. SharedArrayBuffers (SABs) also support the maxByteLength option now but I cheated and allocate all memory upfront because atomically resizing memory allocations is hard and this commit is already big and complex. The lion's share is updating all the TA prototype methods to deal with RABs resizing underneath them. Method arguments can be arbitrary objects with arbitrary .valueOf methods and arbitrary side effects, like... resizing the RAB we're currently operating on. --- gen/function_source.c | 24 +- gen/hello.c | 10 +- gen/hello_module.c | 38 +- gen/repl.c | 2464 ++++++++++++++++++++--------------------- gen/test_fib.c | 30 +- quickjs-atom.h | 1 + quickjs.c | 924 +++++++++++----- test262.conf | 2 +- test262_errors.txt | 3 + tests/test_bjson.js | 36 + 10 files changed, 1999 insertions(+), 1533 deletions(-) diff --git a/gen/function_source.c b/gen/function_source.c index d4394f64..f66527b1 100644 --- a/gen/function_source.c +++ b/gen/function_source.c @@ -5,7 +5,7 @@ const uint32_t qjsc_function_source_size = 338; const uint8_t qjsc_function_source[338] = { - 0x10, 0x05, 0x01, 0x30, 0x74, 0x65, 0x73, 0x74, + 0x11, 0x05, 0x01, 0x30, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x6a, 0x73, 0x01, 0x0c, 0x61, 0x63, @@ -14,35 +14,35 @@ const uint8_t qjsc_function_source[338] = { 0x34, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x28, 0x29, 0x20, 0x7b, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x34, - 0x32, 0x20, 0x7d, 0x0d, 0xba, 0x03, 0x00, 0x00, + 0x32, 0x20, 0x7d, 0x0d, 0xbc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x20, 0xfa, 0x01, 0xa2, 0x01, 0x00, 0x05, 0x00, 0x03, 0x02, 0x01, 0x74, - 0x05, 0xbc, 0x03, 0x02, 0x00, 0x30, 0xbe, 0x03, - 0x04, 0x00, 0x70, 0xbc, 0x03, 0x04, 0x02, 0x70, + 0x05, 0xbe, 0x03, 0x02, 0x00, 0x30, 0xc0, 0x03, + 0x04, 0x00, 0x70, 0xbe, 0x03, 0x04, 0x02, 0x70, 0x10, 0x00, 0x01, 0x00, 0xe4, 0x01, 0x00, 0x01, - 0x00, 0xc0, 0x03, 0x00, 0x0d, 0xbe, 0x03, 0x01, - 0x01, 0x0c, 0x43, 0xfa, 0x01, 0xbe, 0x03, 0x00, + 0x00, 0xc2, 0x03, 0x00, 0x0d, 0xc0, 0x03, 0x01, + 0x01, 0x0c, 0x43, 0xfa, 0x01, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0xbc, - 0x2a, 0x28, 0xba, 0x03, 0x03, 0x01, 0x04, 0x02, + 0x2a, 0x28, 0xbc, 0x03, 0x03, 0x01, 0x04, 0x02, 0x1e, 0x0c, 0x0e, 0x1a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x28, 0x29, 0x20, 0x7b, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x34, 0x32, 0x20, 0x7d, 0x0c, 0x03, 0xc2, 0x04, 0x08, 0xcc, 0x08, 0xea, 0x05, 0xbf, - 0x00, 0xe2, 0x29, 0x04, 0xe1, 0x00, 0x00, 0x00, + 0x00, 0xe2, 0x29, 0x04, 0xe2, 0x00, 0x00, 0x00, 0xe1, 0x61, 0x00, 0x00, 0xde, 0x42, 0x38, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0xc9, 0x62, 0x00, 0x00, 0x65, 0x00, 0x00, 0xaf, 0xea, 0x0b, 0x38, - 0x94, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0xef, + 0x95, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0xef, 0x2f, 0x61, 0x02, 0x00, 0x61, 0x01, 0x00, 0x38, 0x3b, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x04, - 0xdf, 0x00, 0x00, 0x00, 0x9d, 0x31, 0x01, 0x00, + 0xe0, 0x00, 0x00, 0x00, 0x9d, 0x31, 0x01, 0x00, 0x03, 0x00, 0xca, 0x62, 0x01, 0x00, 0x42, 0x38, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0xcb, 0x62, 0x02, 0x00, 0x65, 0x00, 0x00, 0xaf, 0xea, 0x0b, - 0x38, 0x94, 0x00, 0x00, 0x00, 0x62, 0x02, 0x00, + 0x38, 0x95, 0x00, 0x00, 0x00, 0x62, 0x02, 0x00, 0xef, 0x2f, 0x68, 0x02, 0x00, 0x68, 0x01, 0x00, - 0x06, 0x2e, 0xba, 0x03, 0x01, 0x01, 0x22, 0x1f, + 0x06, 0x2e, 0xbc, 0x03, 0x01, 0x01, 0x22, 0x1f, 0x01, 0x27, 0x1c, 0x1b, 0x04, 0x0a, 0x1d, 0x12, 0x26, 0x35, 0x17, 0x11, 0x18, 0x20, 0x1c, 0x37, 0x41, 0x21, 0x1c, 0x2a, 0x18, 0x1b, 0x04, 0x26, diff --git a/gen/hello.c b/gen/hello.c index 821267ca..2cff0d76 100644 --- a/gen/hello.c +++ b/gen/hello.c @@ -5,18 +5,18 @@ const uint32_t qjsc_hello_size = 105; const uint8_t qjsc_hello[105] = { - 0x10, 0x04, 0x01, 0x22, 0x65, 0x78, 0x61, 0x6d, + 0x11, 0x04, 0x01, 0x22, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x2e, 0x6a, 0x73, 0x01, 0x0e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x01, 0x06, 0x6c, 0x6f, 0x67, 0x01, 0x16, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x57, 0x6f, 0x72, 0x6c, 0x64, - 0x0d, 0xba, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0xbc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x20, 0xfa, 0x01, 0xa2, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x19, 0x00, 0x08, 0xea, - 0x02, 0x29, 0x38, 0xde, 0x00, 0x00, 0x00, 0x42, - 0xdf, 0x00, 0x00, 0x00, 0x04, 0xe0, 0x00, 0x00, - 0x00, 0x24, 0x01, 0x00, 0x0e, 0x06, 0x2e, 0xba, + 0x02, 0x29, 0x38, 0xdf, 0x00, 0x00, 0x00, 0x42, + 0xe0, 0x00, 0x00, 0x00, 0x04, 0xe1, 0x00, 0x00, + 0x00, 0x24, 0x01, 0x00, 0x0e, 0x06, 0x2e, 0xbc, 0x03, 0x01, 0x01, 0x04, 0x01, 0x01, 0x17, 0x02, 0x00, }; diff --git a/gen/hello_module.c b/gen/hello_module.c index c94fe079..b33c4d2b 100644 --- a/gen/hello_module.c +++ b/gen/hello_module.c @@ -5,21 +5,21 @@ const uint32_t qjsc_fib_module_size = 314; const uint8_t qjsc_fib_module[314] = { - 0x10, 0x03, 0x01, 0x2c, 0x65, 0x78, 0x61, 0x6d, + 0x11, 0x03, 0x01, 0x2c, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x69, 0x62, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x6a, 0x73, 0x01, 0x06, 0x66, 0x69, 0x62, 0x01, - 0x02, 0x6e, 0x0d, 0xba, 0x03, 0x00, 0x01, 0x00, - 0x00, 0xbc, 0x03, 0x00, 0x00, 0x00, 0x0c, 0x20, + 0x02, 0x6e, 0x0d, 0xbc, 0x03, 0x00, 0x01, 0x00, + 0x00, 0xbe, 0x03, 0x00, 0x00, 0x00, 0x0c, 0x20, 0xfa, 0x01, 0xa2, 0x01, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x09, 0x00, 0xbc, 0x03, 0x00, 0x01, - 0x0c, 0x43, 0xfa, 0x01, 0xbc, 0x03, 0x01, 0x00, - 0x01, 0x04, 0x01, 0x00, 0x1a, 0x01, 0xbe, 0x03, - 0x00, 0x01, 0x00, 0xbc, 0x03, 0x00, 0x00, 0xd1, + 0x01, 0x01, 0x09, 0x00, 0xbe, 0x03, 0x00, 0x01, + 0x0c, 0x43, 0xfa, 0x01, 0xbe, 0x03, 0x01, 0x00, + 0x01, 0x04, 0x01, 0x00, 0x1a, 0x01, 0xc0, 0x03, + 0x00, 0x01, 0x00, 0xbe, 0x03, 0x00, 0x00, 0xd1, 0xb4, 0xa7, 0xea, 0x03, 0xb4, 0x28, 0xd1, 0xb5, 0xac, 0xea, 0x03, 0xb5, 0x28, 0xdd, 0xd1, 0xb5, 0x9e, 0xef, 0xdd, 0xd1, 0xb6, 0x9e, 0xef, 0x9d, - 0x28, 0xba, 0x03, 0x02, 0x08, 0x20, 0x04, 0x00, + 0x28, 0xbc, 0x03, 0x02, 0x08, 0x20, 0x04, 0x00, 0x07, 0x06, 0x07, 0x06, 0x12, 0x09, 0x08, 0x07, 0x07, 0x10, 0x07, 0x06, 0x07, 0x06, 0x12, 0x13, 0x08, 0x07, 0x08, 0x16, 0x0c, 0x0c, 0x07, 0x04, @@ -42,7 +42,7 @@ const uint8_t qjsc_fib_module[314] = { 0x20, 0x2d, 0x20, 0x31, 0x29, 0x20, 0x2b, 0x20, 0x66, 0x69, 0x62, 0x28, 0x6e, 0x20, 0x2d, 0x20, 0x32, 0x29, 0x3b, 0x0a, 0x7d, 0x08, 0xea, 0x05, - 0xbf, 0x00, 0xe1, 0x29, 0x06, 0x2e, 0xba, 0x03, + 0xbf, 0x00, 0xe1, 0x29, 0x06, 0x2e, 0xbc, 0x03, 0x01, 0x01, 0x06, 0x01, 0x01, 0x00, 0x07, 0x14, 0x02, 0x00, }; @@ -50,7 +50,7 @@ const uint8_t qjsc_fib_module[314] = { const uint32_t qjsc_hello_module_size = 185; const uint8_t qjsc_hello_module[185] = { - 0x10, 0x07, 0x01, 0x30, 0x65, 0x78, 0x61, 0x6d, + 0x11, 0x07, 0x01, 0x30, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x6a, 0x73, 0x01, 0x1e, 0x2e, 0x2f, @@ -61,17 +61,17 @@ const uint8_t qjsc_hello_module[185] = { 0x01, 0x16, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x01, 0x10, 0x66, 0x69, 0x62, 0x28, 0x31, 0x30, 0x29, 0x3d, 0x0d, - 0xba, 0x03, 0x01, 0xbc, 0x03, 0x00, 0x00, 0x01, - 0x00, 0xbe, 0x03, 0x00, 0x00, 0x0c, 0x20, 0xfa, + 0xbc, 0x03, 0x01, 0xbe, 0x03, 0x00, 0x00, 0x01, + 0x00, 0xc0, 0x03, 0x00, 0x00, 0x0c, 0x20, 0xfa, 0x01, 0xa2, 0x01, 0x00, 0x00, 0x00, 0x05, 0x01, - 0x00, 0x32, 0x00, 0xbe, 0x03, 0x00, 0x0c, 0x08, - 0xea, 0x02, 0x29, 0x38, 0xe0, 0x00, 0x00, 0x00, - 0x42, 0xe1, 0x00, 0x00, 0x00, 0x04, 0xe2, 0x00, - 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, 0x38, 0xe0, - 0x00, 0x00, 0x00, 0x42, 0xe1, 0x00, 0x00, 0x00, - 0x04, 0xe3, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, + 0x00, 0x32, 0x00, 0xc0, 0x03, 0x00, 0x0c, 0x08, + 0xea, 0x02, 0x29, 0x38, 0xe1, 0x00, 0x00, 0x00, + 0x42, 0xe2, 0x00, 0x00, 0x00, 0x04, 0xe3, 0x00, + 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, 0x38, 0xe1, + 0x00, 0x00, 0x00, 0x42, 0xe2, 0x00, 0x00, 0x00, + 0x04, 0xe4, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0xbc, 0x0a, 0xef, 0x24, 0x02, 0x00, 0x0e, 0x06, - 0x2e, 0xba, 0x03, 0x01, 0x01, 0x0a, 0x01, 0x01, + 0x2e, 0xbc, 0x03, 0x01, 0x01, 0x0a, 0x01, 0x01, 0x00, 0x04, 0x0a, 0x02, 0x62, 0x00, 0x4d, 0x30, 0x00, }; diff --git a/gen/repl.c b/gen/repl.c index f92b09d0..7c051216 100644 --- a/gen/repl.c +++ b/gen/repl.c @@ -5,7 +5,7 @@ const uint32_t qjsc_repl_size = 23373; const uint8_t qjsc_repl[23373] = { - 0x10, 0x96, 0x04, 0x01, 0x0e, 0x72, 0x65, 0x70, + 0x11, 0x96, 0x04, 0x01, 0x0e, 0x72, 0x65, 0x70, 0x6c, 0x2e, 0x6a, 0x73, 0x01, 0x0e, 0x71, 0x6a, 0x73, 0x3a, 0x73, 0x74, 0x64, 0x01, 0x0c, 0x71, 0x6a, 0x73, 0x3a, 0x6f, 0x73, 0x01, 0x12, 0x71, @@ -671,145 +671,145 @@ const uint8_t qjsc_repl[23373] = { 0x69, 0x6d, 0x65, 0x01, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x01, 0x0c, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x01, 0x08, 0x71, 0x75, 0x69, - 0x74, 0x0d, 0xba, 0x03, 0x03, 0xbc, 0x03, 0xbe, - 0x03, 0xc0, 0x03, 0x00, 0x00, 0x03, 0x00, 0xfc, + 0x74, 0x0d, 0xbc, 0x03, 0x03, 0xbe, 0x03, 0xc0, + 0x03, 0xc2, 0x03, 0x00, 0x00, 0x03, 0x00, 0xfc, 0x01, 0x00, 0x01, 0xfc, 0x01, 0x01, 0x02, 0xfc, 0x01, 0x02, 0x00, 0x0c, 0x20, 0x02, 0x01, 0xa2, 0x01, 0x00, 0x00, 0x00, 0x02, 0x03, 0x01, 0x0f, - 0x00, 0xc2, 0x03, 0x00, 0x0d, 0xc4, 0x03, 0x01, - 0x0d, 0xc6, 0x03, 0x02, 0x0d, 0x0c, 0x43, 0x02, + 0x00, 0xc4, 0x03, 0x00, 0x0d, 0xc6, 0x03, 0x01, + 0x0d, 0xc8, 0x03, 0x02, 0x0d, 0x0c, 0x43, 0x02, 0x01, 0x00, 0x01, 0x8a, 0x01, 0x01, 0x04, 0x03, - 0x5c, 0x83, 0x0d, 0x8b, 0x01, 0xc8, 0x03, 0x00, - 0x01, 0x40, 0xa4, 0x02, 0x00, 0x00, 0x40, 0xac, - 0x02, 0x00, 0x01, 0x40, 0xaa, 0x02, 0x00, 0x02, - 0x40, 0xae, 0x02, 0x00, 0x03, 0x40, 0xe0, 0x02, - 0x00, 0x04, 0x40, 0xca, 0x02, 0x00, 0x05, 0x40, - 0xa6, 0x02, 0x00, 0x06, 0x40, 0xb8, 0x02, 0x00, - 0x07, 0x40, 0xc0, 0x02, 0x00, 0x08, 0x40, 0xa8, - 0x02, 0x00, 0x09, 0x40, 0xb0, 0x02, 0x00, 0x0a, - 0x00, 0xb4, 0x02, 0x00, 0x0b, 0x40, 0xb6, 0x02, - 0x00, 0x0c, 0x40, 0xca, 0x03, 0x00, 0x0d, 0x40, - 0xcc, 0x03, 0x00, 0x0e, 0x40, 0xce, 0x03, 0x00, - 0x0f, 0x40, 0xd0, 0x03, 0x00, 0x10, 0x00, 0xd2, - 0x03, 0x00, 0x11, 0x40, 0xd4, 0x03, 0x00, 0x12, - 0x40, 0xd6, 0x03, 0x00, 0x13, 0x40, 0xd8, 0x03, - 0x00, 0x14, 0x40, 0xda, 0x03, 0x00, 0x15, 0x40, - 0xdc, 0x03, 0x00, 0x16, 0x40, 0xde, 0x03, 0x00, - 0x17, 0x40, 0xe0, 0x03, 0x00, 0x18, 0x40, 0xe2, - 0x03, 0x00, 0x19, 0x40, 0xe4, 0x03, 0x00, 0x1a, - 0x40, 0xe6, 0x03, 0x00, 0x1b, 0x40, 0xe8, 0x03, - 0x00, 0x1c, 0x40, 0xea, 0x03, 0x00, 0x1d, 0x40, - 0xec, 0x03, 0x00, 0x1e, 0x40, 0xee, 0x03, 0x00, - 0x1f, 0x40, 0xf0, 0x03, 0x00, 0x20, 0x40, 0xf2, - 0x03, 0x00, 0x21, 0x40, 0xf4, 0x03, 0x00, 0x22, - 0x40, 0xf6, 0x03, 0x00, 0x23, 0x40, 0xf8, 0x03, - 0x00, 0x24, 0x40, 0xfa, 0x03, 0x00, 0x25, 0x40, - 0xfc, 0x03, 0x00, 0x26, 0x40, 0xfe, 0x03, 0x00, - 0x27, 0x40, 0x80, 0x04, 0x00, 0x28, 0x40, 0x82, - 0x04, 0x00, 0x29, 0x40, 0x84, 0x04, 0x00, 0x2a, - 0x40, 0x86, 0x04, 0x00, 0x2b, 0x40, 0x88, 0x04, - 0x00, 0x2c, 0x40, 0x8a, 0x04, 0x00, 0x2d, 0x40, - 0x8c, 0x04, 0x00, 0x2e, 0x40, 0x8e, 0x04, 0x00, - 0x2f, 0x40, 0x90, 0x04, 0x00, 0x30, 0x40, 0x92, - 0x04, 0x00, 0x31, 0x40, 0x94, 0x04, 0x00, 0x32, - 0x40, 0x96, 0x04, 0x00, 0x33, 0x40, 0x98, 0x04, - 0x00, 0x34, 0x00, 0x9a, 0x04, 0x00, 0x35, 0x40, - 0x9c, 0x04, 0x00, 0x36, 0x40, 0x9e, 0x04, 0x00, - 0x37, 0x40, 0xa0, 0x04, 0x00, 0x38, 0x40, 0xa2, - 0x04, 0x00, 0x39, 0x40, 0xa4, 0x04, 0x00, 0x3a, - 0x40, 0xa6, 0x04, 0x00, 0x3b, 0x40, 0xa8, 0x04, - 0x00, 0x3c, 0x40, 0xaa, 0x04, 0x00, 0x3d, 0x40, - 0xac, 0x04, 0x00, 0x3e, 0x40, 0xae, 0x04, 0x00, - 0x3f, 0x40, 0xb0, 0x04, 0x00, 0x40, 0x40, 0xb2, - 0x04, 0x00, 0x41, 0x40, 0xb4, 0x04, 0x00, 0x42, - 0x40, 0xb6, 0x04, 0x00, 0x43, 0x00, 0xb8, 0x04, - 0x00, 0x44, 0x00, 0xba, 0x04, 0x00, 0x45, 0x40, - 0xbc, 0x04, 0x00, 0x46, 0x00, 0xbe, 0x04, 0x00, - 0x47, 0x00, 0xc0, 0x04, 0x00, 0x48, 0x00, 0xc2, - 0x04, 0x00, 0x49, 0x00, 0xc4, 0x04, 0x00, 0x4a, - 0x40, 0xc6, 0x04, 0x00, 0x4b, 0x40, 0xc8, 0x04, - 0x00, 0x4c, 0x00, 0xca, 0x04, 0x00, 0x4d, 0x00, - 0xcc, 0x04, 0x00, 0x4e, 0x00, 0xce, 0x04, 0x00, - 0x4f, 0x00, 0xd0, 0x04, 0x00, 0x50, 0x40, 0xd2, - 0x04, 0x00, 0x51, 0x00, 0xd4, 0x04, 0x00, 0x52, - 0x00, 0xd6, 0x04, 0x00, 0x53, 0x40, 0xd8, 0x04, - 0x00, 0x54, 0x00, 0xda, 0x04, 0x00, 0x55, 0x00, - 0xdc, 0x04, 0x00, 0x56, 0x40, 0xde, 0x04, 0x00, - 0x57, 0x00, 0xe0, 0x04, 0x00, 0x58, 0x00, 0xe2, - 0x04, 0x00, 0x59, 0x00, 0xe4, 0x04, 0x00, 0x5a, - 0x00, 0xe6, 0x04, 0x00, 0x5b, 0x00, 0xe8, 0x04, - 0x00, 0x5c, 0x00, 0xea, 0x04, 0x00, 0x5d, 0x00, - 0xec, 0x04, 0x00, 0x5e, 0x40, 0xee, 0x04, 0x00, - 0x5f, 0x00, 0xf0, 0x04, 0x00, 0x60, 0x00, 0xf2, - 0x04, 0x00, 0x61, 0x00, 0xf4, 0x04, 0x00, 0x62, - 0x00, 0xf6, 0x04, 0x00, 0x63, 0x00, 0xf8, 0x04, - 0x00, 0x64, 0x40, 0xfa, 0x04, 0x00, 0x65, 0x00, - 0xfc, 0x04, 0x00, 0x66, 0x40, 0xfe, 0x04, 0x00, - 0x67, 0x40, 0x80, 0x05, 0x00, 0x68, 0x40, 0x82, - 0x05, 0x00, 0x69, 0x40, 0x84, 0x05, 0x00, 0x6a, - 0x40, 0x86, 0x05, 0x00, 0x6b, 0x40, 0x88, 0x05, - 0x00, 0x6c, 0x40, 0x8a, 0x05, 0x00, 0x6d, 0x40, - 0x8c, 0x05, 0x00, 0x6e, 0x40, 0x8e, 0x05, 0x00, - 0x6f, 0x40, 0x90, 0x05, 0x00, 0x70, 0x40, 0x92, - 0x05, 0x00, 0x71, 0x40, 0x94, 0x05, 0x00, 0x72, - 0x40, 0x96, 0x05, 0x00, 0x73, 0x40, 0x98, 0x05, - 0x00, 0x74, 0x40, 0x9a, 0x05, 0x00, 0x75, 0x40, - 0x9c, 0x05, 0x00, 0x76, 0x40, 0x9e, 0x05, 0x00, - 0x77, 0x40, 0xa0, 0x05, 0x00, 0x78, 0x40, 0xa2, - 0x05, 0x00, 0x79, 0x00, 0xa4, 0x05, 0x00, 0x7a, - 0x40, 0xa6, 0x05, 0x00, 0x7b, 0x40, 0xa8, 0x05, - 0x00, 0x7c, 0x40, 0xaa, 0x05, 0x00, 0x7d, 0x00, - 0xac, 0x05, 0x00, 0x7e, 0x40, 0xae, 0x05, 0x00, - 0x7f, 0x40, 0xb0, 0x05, 0x00, 0x80, 0x01, 0x40, - 0xb2, 0x05, 0x00, 0x81, 0x01, 0x40, 0xb4, 0x05, - 0x00, 0x82, 0x01, 0x40, 0xb6, 0x05, 0x00, 0x83, - 0x01, 0x40, 0xb8, 0x05, 0x00, 0x84, 0x01, 0x40, - 0xba, 0x05, 0x00, 0x85, 0x01, 0x40, 0xbc, 0x05, - 0x00, 0x86, 0x01, 0x40, 0xbe, 0x05, 0x00, 0x87, - 0x01, 0x40, 0xc0, 0x05, 0x00, 0x88, 0x01, 0x00, - 0xc2, 0x05, 0x00, 0x89, 0x01, 0x00, 0xc2, 0x03, - 0x00, 0x0c, 0xc4, 0x03, 0x01, 0x0c, 0xc6, 0x03, - 0x02, 0x0c, 0x0c, 0x43, 0x02, 0x01, 0x98, 0x04, + 0x5c, 0x83, 0x0d, 0x8b, 0x01, 0xca, 0x03, 0x00, + 0x01, 0x40, 0xa6, 0x02, 0x00, 0x00, 0x40, 0xae, + 0x02, 0x00, 0x01, 0x40, 0xac, 0x02, 0x00, 0x02, + 0x40, 0xb0, 0x02, 0x00, 0x03, 0x40, 0xe2, 0x02, + 0x00, 0x04, 0x40, 0xcc, 0x02, 0x00, 0x05, 0x40, + 0xa8, 0x02, 0x00, 0x06, 0x40, 0xba, 0x02, 0x00, + 0x07, 0x40, 0xc2, 0x02, 0x00, 0x08, 0x40, 0xaa, + 0x02, 0x00, 0x09, 0x40, 0xb2, 0x02, 0x00, 0x0a, + 0x00, 0xb6, 0x02, 0x00, 0x0b, 0x40, 0xb8, 0x02, + 0x00, 0x0c, 0x40, 0xcc, 0x03, 0x00, 0x0d, 0x40, + 0xce, 0x03, 0x00, 0x0e, 0x40, 0xd0, 0x03, 0x00, + 0x0f, 0x40, 0xd2, 0x03, 0x00, 0x10, 0x00, 0xd4, + 0x03, 0x00, 0x11, 0x40, 0xd6, 0x03, 0x00, 0x12, + 0x40, 0xd8, 0x03, 0x00, 0x13, 0x40, 0xda, 0x03, + 0x00, 0x14, 0x40, 0xdc, 0x03, 0x00, 0x15, 0x40, + 0xde, 0x03, 0x00, 0x16, 0x40, 0xe0, 0x03, 0x00, + 0x17, 0x40, 0xe2, 0x03, 0x00, 0x18, 0x40, 0xe4, + 0x03, 0x00, 0x19, 0x40, 0xe6, 0x03, 0x00, 0x1a, + 0x40, 0xe8, 0x03, 0x00, 0x1b, 0x40, 0xea, 0x03, + 0x00, 0x1c, 0x40, 0xec, 0x03, 0x00, 0x1d, 0x40, + 0xee, 0x03, 0x00, 0x1e, 0x40, 0xf0, 0x03, 0x00, + 0x1f, 0x40, 0xf2, 0x03, 0x00, 0x20, 0x40, 0xf4, + 0x03, 0x00, 0x21, 0x40, 0xf6, 0x03, 0x00, 0x22, + 0x40, 0xf8, 0x03, 0x00, 0x23, 0x40, 0xfa, 0x03, + 0x00, 0x24, 0x40, 0xfc, 0x03, 0x00, 0x25, 0x40, + 0xfe, 0x03, 0x00, 0x26, 0x40, 0x80, 0x04, 0x00, + 0x27, 0x40, 0x82, 0x04, 0x00, 0x28, 0x40, 0x84, + 0x04, 0x00, 0x29, 0x40, 0x86, 0x04, 0x00, 0x2a, + 0x40, 0x88, 0x04, 0x00, 0x2b, 0x40, 0x8a, 0x04, + 0x00, 0x2c, 0x40, 0x8c, 0x04, 0x00, 0x2d, 0x40, + 0x8e, 0x04, 0x00, 0x2e, 0x40, 0x90, 0x04, 0x00, + 0x2f, 0x40, 0x92, 0x04, 0x00, 0x30, 0x40, 0x94, + 0x04, 0x00, 0x31, 0x40, 0x96, 0x04, 0x00, 0x32, + 0x40, 0x98, 0x04, 0x00, 0x33, 0x40, 0x9a, 0x04, + 0x00, 0x34, 0x00, 0x9c, 0x04, 0x00, 0x35, 0x40, + 0x9e, 0x04, 0x00, 0x36, 0x40, 0xa0, 0x04, 0x00, + 0x37, 0x40, 0xa2, 0x04, 0x00, 0x38, 0x40, 0xa4, + 0x04, 0x00, 0x39, 0x40, 0xa6, 0x04, 0x00, 0x3a, + 0x40, 0xa8, 0x04, 0x00, 0x3b, 0x40, 0xaa, 0x04, + 0x00, 0x3c, 0x40, 0xac, 0x04, 0x00, 0x3d, 0x40, + 0xae, 0x04, 0x00, 0x3e, 0x40, 0xb0, 0x04, 0x00, + 0x3f, 0x40, 0xb2, 0x04, 0x00, 0x40, 0x40, 0xb4, + 0x04, 0x00, 0x41, 0x40, 0xb6, 0x04, 0x00, 0x42, + 0x40, 0xb8, 0x04, 0x00, 0x43, 0x00, 0xba, 0x04, + 0x00, 0x44, 0x00, 0xbc, 0x04, 0x00, 0x45, 0x40, + 0xbe, 0x04, 0x00, 0x46, 0x00, 0xc0, 0x04, 0x00, + 0x47, 0x00, 0xc2, 0x04, 0x00, 0x48, 0x00, 0xc4, + 0x04, 0x00, 0x49, 0x00, 0xc6, 0x04, 0x00, 0x4a, + 0x40, 0xc8, 0x04, 0x00, 0x4b, 0x40, 0xca, 0x04, + 0x00, 0x4c, 0x00, 0xcc, 0x04, 0x00, 0x4d, 0x00, + 0xce, 0x04, 0x00, 0x4e, 0x00, 0xd0, 0x04, 0x00, + 0x4f, 0x00, 0xd2, 0x04, 0x00, 0x50, 0x40, 0xd4, + 0x04, 0x00, 0x51, 0x00, 0xd6, 0x04, 0x00, 0x52, + 0x00, 0xd8, 0x04, 0x00, 0x53, 0x40, 0xda, 0x04, + 0x00, 0x54, 0x00, 0xdc, 0x04, 0x00, 0x55, 0x00, + 0xde, 0x04, 0x00, 0x56, 0x40, 0xe0, 0x04, 0x00, + 0x57, 0x00, 0xe2, 0x04, 0x00, 0x58, 0x00, 0xe4, + 0x04, 0x00, 0x59, 0x00, 0xe6, 0x04, 0x00, 0x5a, + 0x00, 0xe8, 0x04, 0x00, 0x5b, 0x00, 0xea, 0x04, + 0x00, 0x5c, 0x00, 0xec, 0x04, 0x00, 0x5d, 0x00, + 0xee, 0x04, 0x00, 0x5e, 0x40, 0xf0, 0x04, 0x00, + 0x5f, 0x00, 0xf2, 0x04, 0x00, 0x60, 0x00, 0xf4, + 0x04, 0x00, 0x61, 0x00, 0xf6, 0x04, 0x00, 0x62, + 0x00, 0xf8, 0x04, 0x00, 0x63, 0x00, 0xfa, 0x04, + 0x00, 0x64, 0x40, 0xfc, 0x04, 0x00, 0x65, 0x00, + 0xfe, 0x04, 0x00, 0x66, 0x40, 0x80, 0x05, 0x00, + 0x67, 0x40, 0x82, 0x05, 0x00, 0x68, 0x40, 0x84, + 0x05, 0x00, 0x69, 0x40, 0x86, 0x05, 0x00, 0x6a, + 0x40, 0x88, 0x05, 0x00, 0x6b, 0x40, 0x8a, 0x05, + 0x00, 0x6c, 0x40, 0x8c, 0x05, 0x00, 0x6d, 0x40, + 0x8e, 0x05, 0x00, 0x6e, 0x40, 0x90, 0x05, 0x00, + 0x6f, 0x40, 0x92, 0x05, 0x00, 0x70, 0x40, 0x94, + 0x05, 0x00, 0x71, 0x40, 0x96, 0x05, 0x00, 0x72, + 0x40, 0x98, 0x05, 0x00, 0x73, 0x40, 0x9a, 0x05, + 0x00, 0x74, 0x40, 0x9c, 0x05, 0x00, 0x75, 0x40, + 0x9e, 0x05, 0x00, 0x76, 0x40, 0xa0, 0x05, 0x00, + 0x77, 0x40, 0xa2, 0x05, 0x00, 0x78, 0x40, 0xa4, + 0x05, 0x00, 0x79, 0x00, 0xa6, 0x05, 0x00, 0x7a, + 0x40, 0xa8, 0x05, 0x00, 0x7b, 0x40, 0xaa, 0x05, + 0x00, 0x7c, 0x40, 0xac, 0x05, 0x00, 0x7d, 0x00, + 0xae, 0x05, 0x00, 0x7e, 0x40, 0xb0, 0x05, 0x00, + 0x7f, 0x40, 0xb2, 0x05, 0x00, 0x80, 0x01, 0x40, + 0xb4, 0x05, 0x00, 0x81, 0x01, 0x40, 0xb6, 0x05, + 0x00, 0x82, 0x01, 0x40, 0xb8, 0x05, 0x00, 0x83, + 0x01, 0x40, 0xba, 0x05, 0x00, 0x84, 0x01, 0x40, + 0xbc, 0x05, 0x00, 0x85, 0x01, 0x40, 0xbe, 0x05, + 0x00, 0x86, 0x01, 0x40, 0xc0, 0x05, 0x00, 0x87, + 0x01, 0x40, 0xc2, 0x05, 0x00, 0x88, 0x01, 0x00, + 0xc4, 0x05, 0x00, 0x89, 0x01, 0x00, 0xc4, 0x03, + 0x00, 0x0c, 0xc6, 0x03, 0x01, 0x0c, 0xc8, 0x03, + 0x02, 0x0c, 0x0c, 0x43, 0x02, 0x01, 0x9a, 0x04, 0x00, 0x01, 0x00, 0x04, 0x08, 0x00, 0x89, 0x01, - 0x01, 0xc4, 0x05, 0x00, 0x00, 0x00, 0x90, 0x04, - 0x30, 0x01, 0xc2, 0x03, 0x00, 0x0c, 0x94, 0x04, - 0x32, 0x01, 0xc4, 0x03, 0x01, 0x0c, 0x9a, 0x04, - 0x35, 0x01, 0x92, 0x04, 0x31, 0x01, 0xca, 0x02, - 0x05, 0x01, 0x9c, 0x04, 0x36, 0x01, 0x65, 0x01, - 0x00, 0x41, 0x0d, 0x00, 0x00, 0x00, 0x42, 0x63, + 0x01, 0xc6, 0x05, 0x00, 0x00, 0x00, 0x92, 0x04, + 0x30, 0x01, 0xc4, 0x03, 0x00, 0x0c, 0x96, 0x04, + 0x32, 0x01, 0xc6, 0x03, 0x01, 0x0c, 0x9c, 0x04, + 0x35, 0x01, 0x94, 0x04, 0x31, 0x01, 0xcc, 0x02, + 0x05, 0x01, 0x9e, 0x04, 0x36, 0x01, 0x65, 0x01, + 0x00, 0x41, 0x0d, 0x00, 0x00, 0x00, 0x42, 0x64, 0x01, 0x00, 0x00, 0x24, 0x00, 0x00, 0xe1, 0xbc, - 0x50, 0xe3, 0x65, 0x03, 0x00, 0x42, 0x64, 0x01, + 0x50, 0xe3, 0x65, 0x03, 0x00, 0x42, 0x65, 0x01, 0x00, 0x00, 0xdd, 0x24, 0x01, 0x00, 0xea, 0x35, - 0x65, 0x03, 0x00, 0x41, 0x65, 0x01, 0x00, 0x00, - 0xea, 0x14, 0x65, 0x03, 0x00, 0x42, 0x65, 0x01, + 0x65, 0x03, 0x00, 0x41, 0x66, 0x01, 0x00, 0x00, + 0xea, 0x14, 0x65, 0x03, 0x00, 0x42, 0x66, 0x01, 0x00, 0x00, 0xdd, 0x24, 0x01, 0x00, 0xcd, 0xea, 0x05, 0xc5, 0xb4, 0x47, 0xe3, 0x65, 0x03, 0x00, - 0x41, 0x66, 0x01, 0x00, 0x00, 0xea, 0x0e, 0x65, - 0x03, 0x00, 0x42, 0x66, 0x01, 0x00, 0x00, 0xdd, + 0x41, 0x67, 0x01, 0x00, 0x00, 0xea, 0x0e, 0x65, + 0x03, 0x00, 0x42, 0x67, 0x01, 0x00, 0x00, 0xdd, 0x24, 0x01, 0x00, 0x0e, 0x65, 0x03, 0x00, 0x42, - 0x67, 0x01, 0x00, 0x00, 0x65, 0x03, 0x00, 0x41, - 0x68, 0x01, 0x00, 0x00, 0x5e, 0x04, 0x00, 0x24, + 0x68, 0x01, 0x00, 0x00, 0x65, 0x03, 0x00, 0x41, + 0x69, 0x01, 0x00, 0x00, 0x5e, 0x04, 0x00, 0x24, 0x02, 0x00, 0x0e, 0x5e, 0x06, 0x00, 0x11, 0xbc, 0x40, 0x21, 0x01, 0x00, 0x5f, 0x05, 0x00, 0x65, - 0x03, 0x00, 0x42, 0x69, 0x01, 0x00, 0x00, 0xdd, + 0x03, 0x00, 0x42, 0x6a, 0x01, 0x00, 0x00, 0xdd, 0x5e, 0x07, 0x00, 0x24, 0x02, 0x00, 0x29, 0x0c, - 0x43, 0x02, 0x01, 0x9a, 0x04, 0x00, 0x00, 0x00, - 0x02, 0x01, 0x00, 0x04, 0x00, 0x9e, 0x04, 0x37, + 0x43, 0x02, 0x01, 0x9c, 0x04, 0x00, 0x00, 0x00, + 0x02, 0x01, 0x00, 0x04, 0x00, 0xa0, 0x04, 0x37, 0x01, 0xdd, 0xb7, 0xef, 0x29, 0x0c, 0x43, 0x02, - 0x01, 0x9c, 0x04, 0x00, 0x02, 0x00, 0x06, 0x04, - 0x00, 0x28, 0x02, 0xd4, 0x05, 0x00, 0x00, 0x00, - 0xd6, 0x05, 0x00, 0x01, 0x00, 0xc4, 0x03, 0x01, - 0x0c, 0x90, 0x04, 0x30, 0x01, 0x92, 0x04, 0x31, - 0x01, 0x9e, 0x04, 0x37, 0x01, 0x65, 0x00, 0x00, - 0x42, 0x6c, 0x01, 0x00, 0x00, 0xde, 0xdf, 0x41, - 0x6d, 0x01, 0x00, 0x00, 0xb4, 0xdf, 0xe9, 0x24, + 0x01, 0x9e, 0x04, 0x00, 0x02, 0x00, 0x06, 0x04, + 0x00, 0x28, 0x02, 0xd6, 0x05, 0x00, 0x00, 0x00, + 0xd8, 0x05, 0x00, 0x01, 0x00, 0xc6, 0x03, 0x01, + 0x0c, 0x92, 0x04, 0x30, 0x01, 0x94, 0x04, 0x31, + 0x01, 0xa0, 0x04, 0x37, 0x01, 0x65, 0x00, 0x00, + 0x42, 0x6d, 0x01, 0x00, 0x00, 0xde, 0xdf, 0x41, + 0x6e, 0x01, 0x00, 0x00, 0xb4, 0xdf, 0xe9, 0x24, 0x04, 0x00, 0xc9, 0xb4, 0xca, 0xc6, 0xc5, 0xa6, 0xea, 0x0b, 0xe0, 0xdf, 0xc6, 0x47, 0xef, 0x0e, 0x93, 0x01, 0xec, 0xf2, 0x29, 0x0c, 0x43, 0x02, - 0x01, 0x9e, 0x04, 0x01, 0x00, 0x01, 0x04, 0x04, - 0x00, 0x5f, 0x01, 0xdc, 0x05, 0x00, 0x01, 0x00, - 0xd8, 0x03, 0x14, 0x01, 0x92, 0x05, 0x71, 0x01, - 0x8c, 0x04, 0x2e, 0x01, 0x8e, 0x04, 0x2f, 0x01, + 0x01, 0xa0, 0x04, 0x01, 0x00, 0x01, 0x04, 0x04, + 0x00, 0x5f, 0x01, 0xde, 0x05, 0x00, 0x01, 0x00, + 0xda, 0x03, 0x14, 0x01, 0x94, 0x05, 0x71, 0x01, + 0x8e, 0x04, 0x2e, 0x01, 0x90, 0x04, 0x2f, 0x01, 0xdd, 0x96, 0xea, 0x06, 0xde, 0xd1, 0xef, 0x0e, 0x29, 0xdf, 0xb4, 0xaf, 0xea, 0x24, 0xd1, 0xbd, 0x80, 0x00, 0xa9, 0xea, 0x1d, 0xd1, 0xbd, 0xc0, @@ -822,423 +822,423 @@ const uint8_t qjsc_repl[23373] = { 0xf0, 0x00, 0xa9, 0x9d, 0xe3, 0xd1, 0xb5, 0xba, 0xdf, 0x9e, 0x9f, 0xb5, 0x9e, 0xa2, 0xe4, 0x29, 0xb4, 0xe3, 0xde, 0xd1, 0xef, 0x0e, 0x29, 0x0c, - 0x43, 0x02, 0x01, 0xa0, 0x04, 0x01, 0x00, 0x01, - 0x02, 0x00, 0x00, 0x35, 0x01, 0xdc, 0x05, 0x00, + 0x43, 0x02, 0x01, 0xa2, 0x04, 0x01, 0x00, 0x01, + 0x02, 0x00, 0x00, 0x35, 0x01, 0xde, 0x05, 0x00, 0x01, 0x00, 0xd1, 0x97, 0x04, 0x49, 0x00, 0x00, 0x00, 0xae, 0x11, 0xea, 0x2a, 0x0e, 0xd1, 0x04, - 0x6f, 0x01, 0x00, 0x00, 0xa9, 0x11, 0xea, 0x09, - 0x0e, 0xd1, 0x04, 0x70, 0x01, 0x00, 0x00, 0xa7, - 0x11, 0xeb, 0x14, 0x0e, 0xd1, 0x04, 0x71, 0x01, + 0x70, 0x01, 0x00, 0x00, 0xa9, 0x11, 0xea, 0x09, + 0x0e, 0xd1, 0x04, 0x71, 0x01, 0x00, 0x00, 0xa7, + 0x11, 0xeb, 0x14, 0x0e, 0xd1, 0x04, 0x72, 0x01, 0x00, 0x00, 0xa9, 0x11, 0xea, 0x09, 0x0e, 0xd1, - 0x04, 0x72, 0x01, 0x00, 0x00, 0xa7, 0x28, 0x0c, - 0x43, 0x02, 0x01, 0xa2, 0x04, 0x01, 0x00, 0x01, - 0x02, 0x00, 0x02, 0x19, 0x01, 0xdc, 0x05, 0x00, + 0x04, 0x73, 0x01, 0x00, 0x00, 0xa7, 0x28, 0x0c, + 0x43, 0x02, 0x01, 0xa4, 0x04, 0x01, 0x00, 0x01, + 0x02, 0x00, 0x02, 0x19, 0x01, 0xde, 0x05, 0x00, 0x01, 0x00, 0x07, 0x02, 0x30, 0x07, 0x02, 0x39, 0xd1, 0x97, 0x04, 0x49, 0x00, 0x00, 0x00, 0xae, 0x11, 0xea, 0x0e, 0x0e, 0xd1, 0xbe, 0x00, 0xa9, 0x11, 0xea, 0x06, 0x0e, 0xd1, 0xbe, 0x01, 0xa7, - 0x28, 0x0c, 0x43, 0x02, 0x01, 0xa4, 0x04, 0x01, - 0x00, 0x01, 0x02, 0x02, 0x00, 0x2d, 0x01, 0xdc, - 0x05, 0x00, 0x01, 0x00, 0xa0, 0x04, 0x38, 0x01, - 0xa2, 0x04, 0x39, 0x01, 0xd1, 0x97, 0x04, 0x49, + 0x28, 0x0c, 0x43, 0x02, 0x01, 0xa6, 0x04, 0x01, + 0x00, 0x01, 0x02, 0x02, 0x00, 0x2d, 0x01, 0xde, + 0x05, 0x00, 0x01, 0x00, 0xa2, 0x04, 0x38, 0x01, + 0xa4, 0x04, 0x39, 0x01, 0xd1, 0x97, 0x04, 0x49, 0x00, 0x00, 0x00, 0xae, 0x11, 0xea, 0x22, 0x0e, 0xdd, 0xd1, 0xef, 0x11, 0xeb, 0x1b, 0x0e, 0xde, 0xd1, 0xef, 0x11, 0xeb, 0x14, 0x0e, 0xd1, 0x04, - 0x73, 0x01, 0x00, 0x00, 0xac, 0x11, 0xeb, 0x09, - 0x0e, 0xd1, 0x04, 0x74, 0x01, 0x00, 0x00, 0xac, - 0x28, 0x0c, 0x43, 0x02, 0x01, 0xa6, 0x04, 0x01, - 0x04, 0x01, 0x03, 0x00, 0x00, 0x32, 0x05, 0xea, - 0x05, 0x00, 0x01, 0x00, 0xec, 0x05, 0x00, 0x00, - 0x00, 0xdc, 0x05, 0x00, 0x01, 0x00, 0xd6, 0x05, - 0x00, 0x02, 0x00, 0xee, 0x05, 0x00, 0x03, 0x00, + 0x74, 0x01, 0x00, 0x00, 0xac, 0x11, 0xeb, 0x09, + 0x0e, 0xd1, 0x04, 0x75, 0x01, 0x00, 0x00, 0xac, + 0x28, 0x0c, 0x43, 0x02, 0x01, 0xa8, 0x04, 0x01, + 0x04, 0x01, 0x03, 0x00, 0x00, 0x32, 0x05, 0xec, + 0x05, 0x00, 0x01, 0x00, 0xee, 0x05, 0x00, 0x00, + 0x00, 0xde, 0x05, 0x00, 0x01, 0x00, 0xd8, 0x05, + 0x00, 0x02, 0x00, 0xf0, 0x05, 0x00, 0x03, 0x00, 0xd1, 0xe9, 0xcc, 0xb4, 0xc9, 0xb4, 0xcb, 0xc7, - 0xc8, 0xa6, 0xea, 0x25, 0xd1, 0x42, 0x78, 0x01, + 0xc8, 0xa6, 0xea, 0x25, 0xd1, 0x42, 0x79, 0x01, 0x00, 0x00, 0xc7, 0x24, 0x01, 0x00, 0xce, 0x01, 0x00, 0xdc, 0x00, 0x00, 0xa6, 0x11, 0xeb, 0x09, 0x0e, 0xc6, 0x01, 0x00, 0xe0, 0x00, 0x00, 0xa9, 0xea, 0x03, 0x93, 0x00, 0x93, 0x02, 0xec, 0xd8, - 0xc5, 0x28, 0x0c, 0x43, 0x02, 0x01, 0xa8, 0x04, + 0xc5, 0x28, 0x0c, 0x43, 0x02, 0x01, 0xaa, 0x04, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, 0x29, 0x02, - 0xdc, 0x05, 0x00, 0x01, 0x00, 0xf2, 0x05, 0x00, + 0xde, 0x05, 0x00, 0x01, 0x00, 0xf4, 0x05, 0x00, 0x00, 0x00, 0xd1, 0x97, 0x04, 0x49, 0x00, 0x00, 0x00, 0xaf, 0xea, 0x03, 0x09, 0x28, 0xd1, 0x42, - 0x7a, 0x01, 0x00, 0x00, 0xb4, 0x24, 0x01, 0x00, + 0x7b, 0x01, 0x00, 0x00, 0xb4, 0x24, 0x01, 0x00, 0xcd, 0x01, 0x00, 0xdc, 0x00, 0x00, 0xa9, 0x11, 0xea, 0x09, 0x0e, 0xc5, 0x01, 0x00, 0xe0, 0x00, - 0x00, 0xa6, 0x28, 0x0c, 0x43, 0x02, 0x01, 0xaa, + 0x00, 0xa6, 0x28, 0x0c, 0x43, 0x02, 0x01, 0xac, 0x04, 0x02, 0x00, 0x02, 0x03, 0x00, 0x00, 0x23, - 0x02, 0xe2, 0x05, 0x00, 0x01, 0x00, 0xf6, 0x05, + 0x02, 0xe4, 0x05, 0x00, 0x01, 0x00, 0xf8, 0x05, 0x00, 0x01, 0x00, 0xd1, 0xd2, 0x9d, 0x11, 0x04, - 0x7c, 0x01, 0x00, 0x00, 0xae, 0xeb, 0x13, 0x11, - 0x04, 0x7d, 0x01, 0x00, 0x00, 0xae, 0xeb, 0x0a, - 0x11, 0x04, 0x7e, 0x01, 0x00, 0x00, 0xae, 0xea, + 0x7d, 0x01, 0x00, 0x00, 0xae, 0xeb, 0x13, 0x11, + 0x04, 0x7e, 0x01, 0x00, 0x00, 0xae, 0xeb, 0x0a, + 0x11, 0x04, 0x7f, 0x01, 0x00, 0x00, 0xae, 0xea, 0x03, 0x0a, 0x28, 0x0e, 0x09, 0x28, 0x0c, 0x43, - 0x02, 0x01, 0xac, 0x04, 0x03, 0x03, 0x03, 0x06, - 0x03, 0x00, 0x62, 0x06, 0xea, 0x05, 0x00, 0x01, - 0x00, 0xfe, 0x05, 0x00, 0x01, 0x00, 0x80, 0x06, - 0x00, 0x01, 0x00, 0xd6, 0x05, 0x00, 0x00, 0x00, - 0x82, 0x06, 0x00, 0x01, 0x00, 0x84, 0x06, 0x00, - 0x02, 0x00, 0xc2, 0x03, 0x00, 0x0c, 0xd2, 0x03, - 0x11, 0x01, 0xd6, 0x03, 0x13, 0x01, 0xd2, 0xca, + 0x02, 0x01, 0xae, 0x04, 0x03, 0x03, 0x03, 0x06, + 0x03, 0x00, 0x62, 0x06, 0xec, 0x05, 0x00, 0x01, + 0x00, 0x80, 0x06, 0x00, 0x01, 0x00, 0x82, 0x06, + 0x00, 0x01, 0x00, 0xd8, 0x05, 0x00, 0x00, 0x00, + 0x84, 0x06, 0x00, 0x01, 0x00, 0x86, 0x06, 0x00, + 0x02, 0x00, 0xc4, 0x03, 0x00, 0x0c, 0xd4, 0x03, + 0x11, 0x01, 0xd8, 0x03, 0x13, 0x01, 0xd2, 0xca, 0xc6, 0xd1, 0xe9, 0xa6, 0xea, 0x5a, 0xd3, 0xc6, 0xcd, 0x47, 0xcb, 0xc6, 0x8f, 0xce, 0xd1, 0xe9, 0xa6, 0xea, 0x08, 0xd3, 0xc6, 0x47, 0xc7, 0xac, - 0xeb, 0xf2, 0x65, 0x00, 0x00, 0x42, 0x83, 0x01, + 0xeb, 0xf2, 0x65, 0x00, 0x00, 0x42, 0x84, 0x01, 0x00, 0x00, 0xde, 0xdf, 0xc7, 0x47, 0x11, 0xeb, - 0x07, 0x0e, 0x04, 0x84, 0x01, 0x00, 0x00, 0x47, + 0x07, 0x0e, 0x04, 0x85, 0x01, 0x00, 0x00, 0x47, 0x24, 0x01, 0x00, 0x0e, 0x65, 0x00, 0x00, 0x42, - 0x83, 0x01, 0x00, 0x00, 0xd1, 0x42, 0x85, 0x01, + 0x84, 0x01, 0x00, 0x00, 0xd1, 0x42, 0x86, 0x01, 0x00, 0x00, 0xc4, 0x24, 0x02, 0x00, 0x24, 0x01, - 0x00, 0x0e, 0x65, 0x00, 0x00, 0x42, 0x83, 0x01, - 0x00, 0x00, 0xde, 0x04, 0x84, 0x01, 0x00, 0x00, + 0x00, 0x0e, 0x65, 0x00, 0x00, 0x42, 0x84, 0x01, + 0x00, 0x00, 0xde, 0x04, 0x85, 0x01, 0x00, 0x00, 0x47, 0x24, 0x01, 0x00, 0x0e, 0xec, 0xa2, 0x29, - 0x0c, 0x43, 0x02, 0x01, 0xae, 0x04, 0x02, 0x00, - 0x02, 0x05, 0x01, 0x00, 0x1d, 0x02, 0x8c, 0x06, - 0x00, 0x01, 0x00, 0x8e, 0x06, 0x00, 0x01, 0x00, - 0xc2, 0x03, 0x00, 0x0c, 0x65, 0x00, 0x00, 0x42, - 0x83, 0x01, 0x00, 0x00, 0x04, 0x88, 0x01, 0x00, + 0x0c, 0x43, 0x02, 0x01, 0xb0, 0x04, 0x02, 0x00, + 0x02, 0x05, 0x01, 0x00, 0x1d, 0x02, 0x8e, 0x06, + 0x00, 0x01, 0x00, 0x90, 0x06, 0x00, 0x01, 0x00, + 0xc4, 0x03, 0x00, 0x0c, 0x65, 0x00, 0x00, 0x42, + 0x84, 0x01, 0x00, 0x00, 0x04, 0x89, 0x01, 0x00, 0x00, 0xd1, 0xb5, 0xad, 0xea, 0x04, 0xd1, 0xec, 0x02, 0xc0, 0x9d, 0xd2, 0x9d, 0x24, 0x01, 0x00, - 0x29, 0x0c, 0x43, 0x02, 0x01, 0xb0, 0x04, 0x01, + 0x29, 0x0c, 0x43, 0x02, 0x01, 0xb2, 0x04, 0x01, 0x02, 0x01, 0x04, 0x05, 0x00, 0xa1, 0x01, 0x03, - 0x92, 0x06, 0x00, 0x01, 0x00, 0xd6, 0x05, 0x00, - 0x00, 0x00, 0xd4, 0x05, 0x00, 0x01, 0x00, 0x96, - 0x04, 0x33, 0x01, 0x94, 0x04, 0x32, 0x01, 0xc2, - 0x03, 0x00, 0x0c, 0xb4, 0x02, 0x0b, 0x01, 0xae, + 0x94, 0x06, 0x00, 0x01, 0x00, 0xd8, 0x05, 0x00, + 0x00, 0x00, 0xd6, 0x05, 0x00, 0x01, 0x00, 0x98, + 0x04, 0x33, 0x01, 0x96, 0x04, 0x32, 0x01, 0xc4, + 0x03, 0x00, 0x0c, 0xb6, 0x02, 0x0b, 0x01, 0xb0, 0x04, 0x3f, 0x01, 0xd1, 0xb4, 0xa8, 0xea, 0x4d, 0xd1, 0xb4, 0xad, 0x69, 0x97, 0x00, 0x00, 0x00, 0xdd, 0xde, 0xb5, 0x9e, 0xac, 0xea, 0x19, 0x65, - 0x02, 0x00, 0x42, 0x83, 0x01, 0x00, 0x00, 0x04, - 0x8a, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, + 0x02, 0x00, 0x42, 0x84, 0x01, 0x00, 0x00, 0x04, + 0x8b, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, 0xb4, 0xe1, 0xd1, 0x8e, 0xd5, 0xec, 0xda, 0xe0, - 0x42, 0x8b, 0x01, 0x00, 0x00, 0xde, 0xb5, 0x9e, + 0x42, 0x8c, 0x01, 0x00, 0x00, 0xde, 0xb5, 0x9e, 0xdd, 0x9e, 0xd1, 0x24, 0x02, 0x00, 0xca, 0x5e, - 0x04, 0x00, 0xc6, 0x04, 0x8c, 0x01, 0x00, 0x00, + 0x04, 0x00, 0xc6, 0x04, 0x8d, 0x01, 0x00, 0x00, 0xf0, 0x0e, 0xd1, 0xc6, 0x9e, 0xd5, 0xdd, 0xc6, 0x9d, 0xe1, 0xec, 0xb5, 0xd1, 0x8c, 0xd5, 0xd1, 0xb4, 0xad, 0xea, 0x48, 0xdd, 0xb4, 0xac, 0xea, - 0x22, 0x5e, 0x04, 0x00, 0xb5, 0x04, 0x6f, 0x01, + 0x22, 0x5e, 0x04, 0x00, 0xb5, 0x04, 0x70, 0x01, 0x00, 0x00, 0xf0, 0x0e, 0x5e, 0x04, 0x00, 0xde, - 0xb5, 0x9e, 0x04, 0x8c, 0x01, 0x00, 0x00, 0xf0, + 0xb5, 0x9e, 0x04, 0x8d, 0x01, 0x00, 0x00, 0xf0, 0x0e, 0xd1, 0x8e, 0xd5, 0xde, 0xb5, 0x9e, 0xe1, - 0xec, 0xd6, 0xe0, 0x42, 0x8b, 0x01, 0x00, 0x00, + 0xec, 0xd6, 0xe0, 0x42, 0x8c, 0x01, 0x00, 0x00, 0xd1, 0xdd, 0x24, 0x02, 0x00, 0xca, 0x5e, 0x04, - 0x00, 0xc6, 0x04, 0x8d, 0x01, 0x00, 0x00, 0xf0, + 0x00, 0xc6, 0x04, 0x8e, 0x01, 0x00, 0x00, 0xf0, 0x0e, 0xd1, 0xc6, 0x9e, 0xd5, 0xdd, 0xc6, 0x9e, 0xe1, 0xec, 0xb5, 0x29, 0x0c, 0x43, 0x02, 0x01, - 0xb2, 0x04, 0x00, 0x05, 0x00, 0x06, 0x0d, 0x00, - 0x9c, 0x02, 0x05, 0xd6, 0x05, 0x00, 0x00, 0x00, - 0x9c, 0x06, 0x00, 0x01, 0x00, 0xea, 0x05, 0x00, - 0x02, 0x00, 0xfe, 0x05, 0x00, 0x03, 0x00, 0x9e, - 0x06, 0x00, 0x04, 0x00, 0xfe, 0x03, 0x27, 0x01, - 0x82, 0x04, 0x29, 0x01, 0xdc, 0x03, 0x16, 0x01, - 0x84, 0x04, 0x2a, 0x01, 0xc2, 0x03, 0x00, 0x0c, - 0xb0, 0x04, 0x40, 0x01, 0xa6, 0x04, 0x3b, 0x01, - 0xfa, 0x03, 0x25, 0x01, 0xba, 0x05, 0x85, 0x01, - 0x01, 0xac, 0x04, 0x3e, 0x01, 0x96, 0x04, 0x33, - 0x01, 0x94, 0x04, 0x32, 0x01, 0x80, 0x04, 0x28, + 0xb4, 0x04, 0x00, 0x05, 0x00, 0x06, 0x0d, 0x00, + 0x9c, 0x02, 0x05, 0xd8, 0x05, 0x00, 0x00, 0x00, + 0x9e, 0x06, 0x00, 0x01, 0x00, 0xec, 0x05, 0x00, + 0x02, 0x00, 0x80, 0x06, 0x00, 0x03, 0x00, 0xa0, + 0x06, 0x00, 0x04, 0x00, 0x80, 0x04, 0x27, 0x01, + 0x84, 0x04, 0x29, 0x01, 0xde, 0x03, 0x16, 0x01, + 0x86, 0x04, 0x2a, 0x01, 0xc4, 0x03, 0x00, 0x0c, + 0xb2, 0x04, 0x40, 0x01, 0xa8, 0x04, 0x3b, 0x01, + 0xfc, 0x03, 0x25, 0x01, 0xbc, 0x05, 0x85, 0x01, + 0x01, 0xae, 0x04, 0x3e, 0x01, 0x98, 0x04, 0x33, + 0x01, 0x96, 0x04, 0x32, 0x01, 0x82, 0x04, 0x28, 0x01, 0xdd, 0xde, 0xad, 0x69, 0xc6, 0x00, 0x00, - 0x00, 0xdf, 0x96, 0xea, 0x32, 0xde, 0x42, 0x85, + 0x00, 0xdf, 0x96, 0xea, 0x32, 0xde, 0x42, 0x86, 0x01, 0x00, 0x00, 0xb4, 0xe0, 0x24, 0x02, 0x00, - 0xdd, 0x42, 0x85, 0x01, 0x00, 0x00, 0xb4, 0xe0, + 0xdd, 0x42, 0x86, 0x01, 0x00, 0x00, 0xb4, 0xe0, 0x24, 0x02, 0x00, 0xac, 0xea, 0x19, 0x65, 0x04, - 0x00, 0x42, 0x83, 0x01, 0x00, 0x00, 0xdd, 0x42, - 0x85, 0x01, 0x00, 0x00, 0xe0, 0x24, 0x01, 0x00, + 0x00, 0x42, 0x84, 0x01, 0x00, 0x00, 0xdd, 0x42, + 0x86, 0x01, 0x00, 0x00, 0xe0, 0x24, 0x01, 0x00, 0x24, 0x01, 0x00, 0x0e, 0xec, 0x53, 0x5e, 0x05, - 0x00, 0x5e, 0x06, 0x00, 0xde, 0x42, 0x85, 0x01, + 0x00, 0x5e, 0x06, 0x00, 0xde, 0x42, 0x86, 0x01, 0x00, 0x00, 0xb4, 0xe0, 0x24, 0x02, 0x00, 0xef, 0x8c, 0xef, 0x0e, 0xdf, 0xea, 0x2e, 0x5e, 0x07, - 0x00, 0xea, 0x0e, 0x5e, 0x07, 0x00, 0x04, 0x8a, + 0x00, 0xea, 0x0e, 0x5e, 0x07, 0x00, 0x04, 0x8b, 0x01, 0x00, 0x00, 0x9d, 0xdd, 0x9d, 0xec, 0x02, 0xdd, 0xcf, 0xe9, 0xdd, 0xe9, 0x9e, 0xcc, 0x5e, 0x08, 0x00, 0xc7, 0xef, 0xc2, 0x04, 0x5e, 0x09, 0x00, 0xc7, 0xc8, 0xc1, 0x04, 0xb6, 0x47, 0xf1, - 0x0e, 0xec, 0x0e, 0x65, 0x04, 0x00, 0x42, 0x83, + 0x0e, 0xec, 0x0e, 0x65, 0x04, 0x00, 0x42, 0x84, 0x01, 0x00, 0x00, 0xdd, 0x24, 0x01, 0x00, 0x0e, 0x5e, 0x0a, 0x00, 0x5e, 0x06, 0x00, 0xdd, 0xef, 0x9d, 0x5e, 0x0b, 0x00, 0x9c, 0x60, 0x0a, 0x00, 0xb4, 0xac, 0xea, 0x12, 0x65, 0x04, 0x00, 0x42, - 0x83, 0x01, 0x00, 0x00, 0x04, 0x90, 0x01, 0x00, + 0x84, 0x01, 0x00, 0x00, 0x04, 0x91, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, 0x65, 0x04, 0x00, - 0x42, 0x83, 0x01, 0x00, 0x00, 0x04, 0x91, 0x01, + 0x42, 0x84, 0x01, 0x00, 0x00, 0x04, 0x92, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, 0xdd, 0xe2, 0xdd, 0xe9, 0xe4, 0x5e, 0x0c, 0x00, 0xe0, 0xa8, 0xea, 0x19, 0x5e, 0x05, 0x00, 0x5e, 0x06, 0x00, - 0xdd, 0x42, 0x85, 0x01, 0x00, 0x00, 0xe0, 0x5e, + 0xdd, 0x42, 0x86, 0x01, 0x00, 0x00, 0xe0, 0x5e, 0x0c, 0x00, 0x24, 0x02, 0x00, 0xef, 0xef, 0x0e, 0xec, 0x1f, 0x5e, 0x0c, 0x00, 0xe0, 0xa6, 0xea, 0x18, 0x5e, 0x05, 0x00, 0x5e, 0x06, 0x00, 0xdd, - 0x42, 0x85, 0x01, 0x00, 0x00, 0x5e, 0x0c, 0x00, + 0x42, 0x86, 0x01, 0x00, 0x00, 0x5e, 0x0c, 0x00, 0xe0, 0x24, 0x02, 0x00, 0xef, 0x8c, 0xef, 0x0e, 0x5e, 0x0c, 0x00, 0xe4, 0x65, 0x04, 0x00, 0x41, - 0x92, 0x01, 0x00, 0x00, 0x42, 0x93, 0x01, 0x00, + 0x93, 0x01, 0x00, 0x00, 0x42, 0x94, 0x01, 0x00, 0x00, 0x24, 0x00, 0x00, 0x29, 0x0c, 0x43, 0x02, - 0x01, 0xb4, 0x04, 0x01, 0x00, 0x01, 0x04, 0x02, - 0x00, 0x22, 0x01, 0xea, 0x05, 0x00, 0x01, 0x00, - 0xfe, 0x03, 0x27, 0x01, 0x80, 0x04, 0x28, 0x01, - 0xd1, 0xea, 0x1f, 0xdd, 0x42, 0x85, 0x01, 0x00, + 0x01, 0xb6, 0x04, 0x01, 0x00, 0x01, 0x04, 0x02, + 0x00, 0x22, 0x01, 0xec, 0x05, 0x00, 0x01, 0x00, + 0x80, 0x04, 0x27, 0x01, 0x82, 0x04, 0x28, 0x01, + 0xd1, 0xea, 0x1f, 0xdd, 0x42, 0x86, 0x01, 0x00, 0x00, 0xb4, 0xde, 0x24, 0x02, 0x00, 0xd1, 0x9d, - 0xdd, 0x42, 0x85, 0x01, 0x00, 0x00, 0xde, 0x24, + 0xdd, 0x42, 0x86, 0x01, 0x00, 0x00, 0xde, 0x24, 0x01, 0x00, 0x9d, 0xe1, 0xde, 0xd1, 0xe9, 0x9d, - 0xe2, 0x29, 0x0c, 0x43, 0x02, 0x01, 0xb6, 0x04, + 0xe2, 0x29, 0x0c, 0x43, 0x02, 0x01, 0xb8, 0x04, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x03, 0x00, - 0x8a, 0x04, 0x2d, 0x01, 0x0a, 0xe1, 0x29, 0x0c, - 0x43, 0x02, 0x01, 0xb8, 0x04, 0x00, 0x00, 0x00, - 0x01, 0x02, 0x00, 0x07, 0x00, 0xfe, 0x03, 0x27, - 0x01, 0x80, 0x04, 0x28, 0x01, 0xc0, 0xe1, 0xb4, + 0x8c, 0x04, 0x2d, 0x01, 0x0a, 0xe1, 0x29, 0x0c, + 0x43, 0x02, 0x01, 0xba, 0x04, 0x00, 0x00, 0x00, + 0x01, 0x02, 0x00, 0x07, 0x00, 0x80, 0x04, 0x27, + 0x01, 0x82, 0x04, 0x28, 0x01, 0xc0, 0xe1, 0xb4, 0xe2, 0xbc, 0xfe, 0x28, 0x0c, 0x43, 0x02, 0x01, - 0xba, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x29, 0x0c, 0x43, 0x02, 0x01, 0xbc, + 0xbc, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x29, 0x0c, 0x43, 0x02, 0x01, 0xbe, 0x04, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x03, - 0x00, 0x80, 0x04, 0x28, 0x01, 0xb4, 0xe1, 0x29, - 0x0c, 0x43, 0x02, 0x01, 0xbe, 0x04, 0x00, 0x00, - 0x00, 0x01, 0x02, 0x00, 0x04, 0x00, 0x80, 0x04, - 0x28, 0x01, 0xfe, 0x03, 0x27, 0x01, 0xde, 0xe9, - 0xe1, 0x29, 0x0c, 0x43, 0x02, 0x01, 0xc0, 0x04, + 0x00, 0x82, 0x04, 0x28, 0x01, 0xb4, 0xe1, 0x29, + 0x0c, 0x43, 0x02, 0x01, 0xc0, 0x04, 0x00, 0x00, + 0x00, 0x01, 0x02, 0x00, 0x04, 0x00, 0x82, 0x04, + 0x28, 0x01, 0x80, 0x04, 0x27, 0x01, 0xde, 0xe9, + 0xe1, 0x29, 0x0c, 0x43, 0x02, 0x01, 0xc2, 0x04, 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x1d, 0x00, - 0x80, 0x04, 0x28, 0x01, 0xfe, 0x03, 0x27, 0x01, - 0xa8, 0x04, 0x3c, 0x01, 0xdd, 0xde, 0xe9, 0xa6, + 0x82, 0x04, 0x28, 0x01, 0x80, 0x04, 0x27, 0x01, + 0xaa, 0x04, 0x3c, 0x01, 0xdd, 0xde, 0xe9, 0xa6, 0xea, 0x17, 0xdd, 0x8f, 0xe1, 0xdf, 0xde, 0x42, - 0x94, 0x01, 0x00, 0x00, 0xdd, 0x24, 0x01, 0x00, + 0x95, 0x01, 0x00, 0x00, 0xdd, 0x24, 0x01, 0x00, 0xef, 0xea, 0x06, 0xdd, 0x8f, 0xe1, 0xec, 0xee, - 0x29, 0x0c, 0x43, 0x02, 0x01, 0xc2, 0x04, 0x00, - 0x00, 0x00, 0x04, 0x03, 0x00, 0x1c, 0x00, 0x80, - 0x04, 0x28, 0x01, 0xa8, 0x04, 0x3c, 0x01, 0xfe, - 0x03, 0x27, 0x01, 0xdd, 0xb4, 0xa8, 0xea, 0x17, - 0xdd, 0x8e, 0xe1, 0xde, 0xdf, 0x42, 0x94, 0x01, + 0x29, 0x0c, 0x43, 0x02, 0x01, 0xc4, 0x04, 0x00, + 0x00, 0x00, 0x04, 0x03, 0x00, 0x1c, 0x00, 0x82, + 0x04, 0x28, 0x01, 0xaa, 0x04, 0x3c, 0x01, 0x80, + 0x04, 0x27, 0x01, 0xdd, 0xb4, 0xa8, 0xea, 0x17, + 0xdd, 0x8e, 0xe1, 0xde, 0xdf, 0x42, 0x95, 0x01, 0x00, 0x00, 0xdd, 0x24, 0x01, 0x00, 0xef, 0xea, 0x06, 0xdd, 0x8e, 0xe1, 0xec, 0xee, 0x29, 0x0c, - 0x43, 0x02, 0x01, 0xc4, 0x04, 0x01, 0x00, 0x01, - 0x04, 0x02, 0x00, 0x35, 0x01, 0xaa, 0x06, 0x00, - 0x01, 0x00, 0xfe, 0x03, 0x27, 0x01, 0xa4, 0x04, + 0x43, 0x02, 0x01, 0xc6, 0x04, 0x01, 0x00, 0x01, + 0x04, 0x02, 0x00, 0x35, 0x01, 0xac, 0x06, 0x00, + 0x01, 0x00, 0x80, 0x04, 0x27, 0x01, 0xa6, 0x04, 0x3a, 0x01, 0xd1, 0xdd, 0xe9, 0xa6, 0xea, 0x15, - 0xde, 0xdd, 0x42, 0x94, 0x01, 0x00, 0x00, 0xd1, + 0xde, 0xdd, 0x42, 0x95, 0x01, 0x00, 0x00, 0xd1, 0x24, 0x01, 0x00, 0xef, 0x96, 0xea, 0x06, 0xd1, 0x8f, 0xd5, 0xec, 0xe7, 0xd1, 0xdd, 0xe9, 0xa6, - 0xea, 0x14, 0xde, 0xdd, 0x42, 0x94, 0x01, 0x00, + 0xea, 0x14, 0xde, 0xdd, 0x42, 0x95, 0x01, 0x00, 0x00, 0xd1, 0x24, 0x01, 0x00, 0xef, 0xea, 0x06, 0xd1, 0x8f, 0xd5, 0xec, 0xe8, 0xd1, 0x28, 0x0c, - 0x43, 0x02, 0x01, 0xc6, 0x04, 0x01, 0x00, 0x01, - 0x05, 0x02, 0x00, 0x37, 0x01, 0xaa, 0x06, 0x00, - 0x01, 0x00, 0xa4, 0x04, 0x3a, 0x01, 0xfe, 0x03, + 0x43, 0x02, 0x01, 0xc8, 0x04, 0x01, 0x00, 0x01, + 0x05, 0x02, 0x00, 0x37, 0x01, 0xac, 0x06, 0x00, + 0x01, 0x00, 0xa6, 0x04, 0x3a, 0x01, 0x80, 0x04, 0x27, 0x01, 0xd1, 0xb4, 0xa8, 0xea, 0x17, 0xdd, - 0xde, 0x42, 0x94, 0x01, 0x00, 0x00, 0xd1, 0xb5, + 0xde, 0x42, 0x95, 0x01, 0x00, 0x00, 0xd1, 0xb5, 0x9e, 0x24, 0x01, 0x00, 0xef, 0x96, 0xea, 0x06, 0xd1, 0x8e, 0xd5, 0xec, 0xe6, 0xd1, 0xb4, 0xa8, - 0xea, 0x16, 0xdd, 0xde, 0x42, 0x94, 0x01, 0x00, + 0xea, 0x16, 0xdd, 0xde, 0x42, 0x95, 0x01, 0x00, 0x00, 0xd1, 0xb5, 0x9e, 0x24, 0x01, 0x00, 0xef, 0xea, 0x06, 0xd1, 0x8e, 0xd5, 0xec, 0xe7, 0xd1, - 0x28, 0x0c, 0x43, 0x02, 0x01, 0xc8, 0x04, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x00, 0x05, 0x00, 0x80, - 0x04, 0x28, 0x01, 0xc4, 0x04, 0x4a, 0x01, 0xde, + 0x28, 0x0c, 0x43, 0x02, 0x01, 0xca, 0x04, 0x00, + 0x00, 0x00, 0x02, 0x02, 0x00, 0x05, 0x00, 0x82, + 0x04, 0x28, 0x01, 0xc6, 0x04, 0x4a, 0x01, 0xde, 0xdd, 0xef, 0xe1, 0x29, 0x0c, 0x43, 0x02, 0x01, - 0xca, 0x04, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, - 0x05, 0x00, 0x80, 0x04, 0x28, 0x01, 0xc6, 0x04, + 0xcc, 0x04, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, + 0x05, 0x00, 0x82, 0x04, 0x28, 0x01, 0xc8, 0x04, 0x4b, 0x01, 0xde, 0xdd, 0xef, 0xe1, 0x29, 0x0c, - 0x43, 0x02, 0x01, 0xcc, 0x04, 0x00, 0x00, 0x00, - 0x02, 0x01, 0x00, 0x0e, 0x00, 0xa8, 0x05, 0x7c, - 0x01, 0xdd, 0x04, 0x96, 0x01, 0x00, 0x00, 0x48, - 0x24, 0x00, 0x00, 0x0e, 0xbc, 0xfe, 0x28, 0x0c, 0x43, 0x02, 0x01, 0xce, 0x04, 0x00, 0x00, 0x00, - 0x03, 0x03, 0x00, 0x17, 0x00, 0xc2, 0x03, 0x00, - 0x0c, 0xd0, 0x04, 0x50, 0x01, 0xfe, 0x03, 0x27, - 0x01, 0x65, 0x00, 0x00, 0x42, 0x83, 0x01, 0x00, - 0x00, 0x04, 0x8a, 0x01, 0x00, 0x00, 0x24, 0x01, + 0x02, 0x01, 0x00, 0x0e, 0x00, 0xaa, 0x05, 0x7c, + 0x01, 0xdd, 0x04, 0x97, 0x01, 0x00, 0x00, 0x48, + 0x24, 0x00, 0x00, 0x0e, 0xbc, 0xfe, 0x28, 0x0c, + 0x43, 0x02, 0x01, 0xd0, 0x04, 0x00, 0x00, 0x00, + 0x03, 0x03, 0x00, 0x17, 0x00, 0xc4, 0x03, 0x00, + 0x0c, 0xd2, 0x04, 0x50, 0x01, 0x80, 0x04, 0x27, + 0x01, 0x65, 0x00, 0x00, 0x42, 0x84, 0x01, 0x00, + 0x00, 0x04, 0x8b, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, 0xde, 0xdf, 0xef, 0x0e, 0xb3, 0x28, - 0x0c, 0x43, 0x02, 0x01, 0xd0, 0x04, 0x01, 0x00, - 0x01, 0x03, 0x02, 0x00, 0x36, 0x01, 0xea, 0x05, - 0x00, 0x01, 0x00, 0xe6, 0x03, 0x1b, 0x01, 0xe8, - 0x03, 0x1c, 0x01, 0xd1, 0x42, 0x97, 0x01, 0x00, + 0x0c, 0x43, 0x02, 0x01, 0xd2, 0x04, 0x01, 0x00, + 0x01, 0x03, 0x02, 0x00, 0x36, 0x01, 0xec, 0x05, + 0x00, 0x01, 0x00, 0xe8, 0x03, 0x1b, 0x01, 0xea, + 0x03, 0x1c, 0x01, 0xd1, 0x42, 0x98, 0x01, 0x00, 0x00, 0x24, 0x00, 0x00, 0xd9, 0xea, 0x27, 0xdd, 0xe9, 0xea, 0x18, 0xdd, 0xdd, 0xe9, 0xb5, 0x9e, 0x47, 0x96, 0xea, 0x0f, 0xdd, 0x42, 0x32, 0x00, 0x00, 0x00, 0x8e, 0x43, 0x32, 0x00, 0x00, 0x00, - 0xec, 0xe6, 0xdd, 0x42, 0x98, 0x01, 0x00, 0x00, + 0xec, 0xe6, 0xdd, 0x42, 0x99, 0x01, 0x00, 0x00, 0xd1, 0x24, 0x01, 0x00, 0x0e, 0xdd, 0xe9, 0xe2, - 0x29, 0x0c, 0x43, 0x02, 0x01, 0xd2, 0x04, 0x00, - 0x00, 0x00, 0x03, 0x04, 0x00, 0x20, 0x00, 0xe8, - 0x03, 0x1c, 0x01, 0xe6, 0x03, 0x1b, 0x01, 0xfe, - 0x03, 0x27, 0x01, 0x80, 0x04, 0x28, 0x01, 0xdd, + 0x29, 0x0c, 0x43, 0x02, 0x01, 0xd4, 0x04, 0x00, + 0x00, 0x00, 0x03, 0x04, 0x00, 0x20, 0x00, 0xea, + 0x03, 0x1c, 0x01, 0xe8, 0x03, 0x1b, 0x01, 0x80, + 0x04, 0x27, 0x01, 0x82, 0x04, 0x28, 0x01, 0xdd, 0xb4, 0xa8, 0xea, 0x1b, 0xdd, 0xde, 0xe9, 0xac, - 0xea, 0x0c, 0xde, 0x42, 0x98, 0x01, 0x00, 0x00, + 0xea, 0x0c, 0xde, 0x42, 0x99, 0x01, 0x00, 0x00, 0xdf, 0x24, 0x01, 0x00, 0x0e, 0xdd, 0x8e, 0xe1, 0xde, 0xdd, 0x47, 0xe7, 0xe9, 0xe4, 0x29, 0x0c, - 0x43, 0x02, 0x01, 0xd4, 0x04, 0x00, 0x00, 0x00, - 0x03, 0x04, 0x00, 0x12, 0x00, 0xe8, 0x03, 0x1c, - 0x01, 0xe6, 0x03, 0x1b, 0x01, 0xfe, 0x03, 0x27, - 0x01, 0x80, 0x04, 0x28, 0x01, 0xdd, 0xde, 0xe9, + 0x43, 0x02, 0x01, 0xd6, 0x04, 0x00, 0x00, 0x00, + 0x03, 0x04, 0x00, 0x12, 0x00, 0xea, 0x03, 0x1c, + 0x01, 0xe8, 0x03, 0x1b, 0x01, 0x80, 0x04, 0x27, + 0x01, 0x82, 0x04, 0x28, 0x01, 0xdd, 0xde, 0xe9, 0xb5, 0x9e, 0xa6, 0xea, 0x0a, 0xdd, 0x8f, 0xe1, 0xde, 0xdd, 0x47, 0xe7, 0xe9, 0xe4, 0x29, 0x0c, - 0x43, 0x02, 0x01, 0xd6, 0x04, 0x01, 0x03, 0x01, - 0x05, 0x04, 0x00, 0x3d, 0x04, 0xb2, 0x06, 0x00, - 0x01, 0x00, 0xaa, 0x06, 0x00, 0x00, 0x00, 0xd6, + 0x43, 0x02, 0x01, 0xd8, 0x04, 0x01, 0x03, 0x01, + 0x05, 0x04, 0x00, 0x3d, 0x04, 0xb4, 0x06, 0x00, + 0x01, 0x00, 0xac, 0x06, 0x00, 0x00, 0x00, 0xd8, 0x05, 0x00, 0x01, 0x00, 0xb0, 0x01, 0x00, 0x02, - 0x00, 0x80, 0x04, 0x28, 0x01, 0xe6, 0x03, 0x1b, - 0x01, 0xe8, 0x03, 0x1c, 0x01, 0xfe, 0x03, 0x27, + 0x00, 0x82, 0x04, 0x28, 0x01, 0xe8, 0x03, 0x1b, + 0x01, 0xea, 0x03, 0x1c, 0x01, 0x80, 0x04, 0x27, 0x01, 0xdd, 0xc9, 0xb5, 0xca, 0xc6, 0xde, 0xe9, 0xa7, 0xea, 0x33, 0xde, 0xe9, 0xc6, 0xd1, 0x9a, 0x9d, 0xdf, 0x9d, 0xde, 0xe9, 0x9c, 0xcb, 0xde, - 0xc7, 0x47, 0x42, 0x85, 0x01, 0x00, 0x00, 0xb4, - 0xc5, 0x24, 0x02, 0x00, 0xe0, 0x42, 0x85, 0x01, + 0xc7, 0x47, 0x42, 0x86, 0x01, 0x00, 0x00, 0xb4, + 0xc5, 0x24, 0x02, 0x00, 0xe0, 0x42, 0x86, 0x01, 0x00, 0x00, 0xb4, 0xc5, 0x24, 0x02, 0x00, 0xac, 0xea, 0x08, 0xc7, 0xe3, 0xde, 0xc7, 0x47, 0xe4, 0x29, 0x93, 0x01, 0xec, 0xc9, 0x29, 0x0c, 0x43, - 0x02, 0x01, 0xd8, 0x04, 0x00, 0x00, 0x00, 0x02, - 0x01, 0x00, 0x05, 0x00, 0xd6, 0x04, 0x53, 0x01, + 0x02, 0x01, 0xda, 0x04, 0x00, 0x00, 0x00, 0x02, + 0x01, 0x00, 0x05, 0x00, 0xd8, 0x04, 0x53, 0x01, 0xdd, 0xb3, 0x23, 0x01, 0x00, 0x0c, 0x43, 0x02, - 0x01, 0xda, 0x04, 0x00, 0x00, 0x00, 0x02, 0x01, - 0x00, 0x05, 0x00, 0xd6, 0x04, 0x53, 0x01, 0xdd, + 0x01, 0xdc, 0x04, 0x00, 0x00, 0x00, 0x02, 0x01, + 0x00, 0x05, 0x00, 0xd8, 0x04, 0x53, 0x01, 0xdd, 0xb5, 0x23, 0x01, 0x00, 0x0c, 0x43, 0x02, 0x01, - 0xdc, 0x04, 0x01, 0x02, 0x01, 0x04, 0x05, 0x00, - 0x65, 0x03, 0xb2, 0x06, 0x00, 0x01, 0x00, 0xfe, - 0x05, 0x00, 0x00, 0x00, 0xb4, 0x06, 0x00, 0x01, - 0x00, 0x80, 0x04, 0x28, 0x01, 0xa8, 0x04, 0x3c, - 0x01, 0xfe, 0x03, 0x27, 0x01, 0x88, 0x04, 0x2c, - 0x01, 0xec, 0x04, 0x5e, 0x01, 0xdd, 0xc9, 0xd1, + 0xde, 0x04, 0x01, 0x02, 0x01, 0x04, 0x05, 0x00, + 0x65, 0x03, 0xb4, 0x06, 0x00, 0x01, 0x00, 0x80, + 0x06, 0x00, 0x00, 0x00, 0xb6, 0x06, 0x00, 0x01, + 0x00, 0x82, 0x04, 0x28, 0x01, 0xaa, 0x04, 0x3c, + 0x01, 0x80, 0x04, 0x27, 0x01, 0x8a, 0x04, 0x2c, + 0x01, 0xee, 0x04, 0x5e, 0x01, 0xdd, 0xc9, 0xd1, 0xb4, 0xa6, 0xea, 0x15, 0x92, 0x00, 0xde, 0xdf, - 0x42, 0x94, 0x01, 0x00, 0x00, 0xc5, 0x24, 0x01, + 0x42, 0x95, 0x01, 0x00, 0x00, 0xc5, 0x24, 0x01, 0x00, 0xef, 0xea, 0x05, 0x92, 0x00, 0xec, 0xef, - 0xc5, 0xb5, 0x9d, 0xca, 0xde, 0xdf, 0x42, 0x94, + 0xc5, 0xb5, 0x9d, 0xca, 0xde, 0xdf, 0x42, 0x95, 0x01, 0x00, 0x00, 0xc6, 0x24, 0x01, 0x00, 0xef, 0xea, 0x05, 0x93, 0x01, 0xec, 0xef, 0xc5, 0xb4, 0xa9, 0xea, 0x2f, 0xc5, 0xdf, 0xe9, 0xa6, 0xea, 0x29, 0xe0, 0x5e, 0x04, 0x00, 0xae, 0xea, 0x09, 0x5e, 0x04, 0x00, 0xc4, 0xd1, 0xf1, 0x0e, 0x29, - 0xdf, 0x42, 0x85, 0x01, 0x00, 0x00, 0xb4, 0xc5, - 0x24, 0x02, 0x00, 0xdf, 0x42, 0x85, 0x01, 0x00, + 0xdf, 0x42, 0x86, 0x01, 0x00, 0x00, 0xb4, 0xc5, + 0x24, 0x02, 0x00, 0xdf, 0x42, 0x86, 0x01, 0x00, 0x00, 0xc6, 0x24, 0x01, 0x00, 0x9d, 0xe3, 0xc5, - 0xe1, 0x29, 0x0c, 0x43, 0x02, 0x01, 0xde, 0x04, + 0xe1, 0x29, 0x0c, 0x43, 0x02, 0x01, 0xe0, 0x04, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x04, 0x00, - 0xdc, 0x04, 0x56, 0x01, 0xdd, 0xb5, 0xef, 0x29, - 0x0c, 0x43, 0x02, 0x01, 0xe0, 0x04, 0x00, 0x00, - 0x00, 0x03, 0x03, 0x00, 0x1f, 0x00, 0xfe, 0x03, - 0x27, 0x01, 0xc2, 0x03, 0x00, 0x0c, 0xdc, 0x04, + 0xde, 0x04, 0x56, 0x01, 0xdd, 0xb5, 0xef, 0x29, + 0x0c, 0x43, 0x02, 0x01, 0xe2, 0x04, 0x00, 0x00, + 0x00, 0x03, 0x03, 0x00, 0x1f, 0x00, 0x80, 0x04, + 0x27, 0x01, 0xc4, 0x03, 0x00, 0x0c, 0xde, 0x04, 0x56, 0x01, 0xdd, 0xe9, 0xb4, 0xac, 0xea, 0x15, - 0x65, 0x01, 0x00, 0x42, 0x83, 0x01, 0x00, 0x00, - 0x04, 0x8a, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, + 0x65, 0x01, 0x00, 0x42, 0x84, 0x01, 0x00, 0x00, + 0x04, 0x8b, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, 0xbc, 0xfd, 0x28, 0xdf, 0xb5, 0xef, 0x0e, - 0x29, 0x0c, 0x43, 0x02, 0x01, 0xe2, 0x04, 0x00, - 0x00, 0x00, 0x02, 0x01, 0x00, 0x04, 0x00, 0xdc, + 0x29, 0x0c, 0x43, 0x02, 0x01, 0xe4, 0x04, 0x00, + 0x00, 0x00, 0x02, 0x01, 0x00, 0x04, 0x00, 0xde, 0x04, 0x56, 0x01, 0xdd, 0xb3, 0xef, 0x29, 0x0c, - 0x43, 0x02, 0x01, 0xe4, 0x04, 0x00, 0x01, 0x00, - 0x06, 0x02, 0x00, 0x51, 0x01, 0xaa, 0x06, 0x00, - 0x00, 0x00, 0x80, 0x04, 0x28, 0x01, 0xfe, 0x03, + 0x43, 0x02, 0x01, 0xe6, 0x04, 0x00, 0x01, 0x00, + 0x06, 0x02, 0x00, 0x51, 0x01, 0xac, 0x06, 0x00, + 0x00, 0x00, 0x82, 0x04, 0x28, 0x01, 0x80, 0x04, 0x27, 0x01, 0xdd, 0xc9, 0xde, 0xe9, 0xb5, 0xa8, 0xea, 0x49, 0xc5, 0xb4, 0xa8, 0xea, 0x44, 0xc5, 0xde, 0xe9, 0xac, 0xea, 0x03, 0x92, 0x00, 0xde, - 0x42, 0x85, 0x01, 0x00, 0x00, 0xb4, 0xc5, 0xb5, - 0x9e, 0x24, 0x02, 0x00, 0xde, 0x42, 0x85, 0x01, + 0x42, 0x86, 0x01, 0x00, 0x00, 0xb4, 0xc5, 0xb5, + 0x9e, 0x24, 0x02, 0x00, 0xde, 0x42, 0x86, 0x01, 0x00, 0x00, 0xc5, 0xc5, 0xb5, 0x9d, 0x24, 0x02, - 0x00, 0x9d, 0xde, 0x42, 0x85, 0x01, 0x00, 0x00, + 0x00, 0x9d, 0xde, 0x42, 0x86, 0x01, 0x00, 0x00, 0xc5, 0xb5, 0x9e, 0xc5, 0x24, 0x02, 0x00, 0x9d, - 0xde, 0x42, 0x85, 0x01, 0x00, 0x00, 0xc5, 0xb5, + 0xde, 0x42, 0x86, 0x01, 0x00, 0x00, 0xc5, 0xb5, 0x9d, 0x24, 0x01, 0x00, 0x9d, 0xe2, 0xc5, 0xb5, - 0x9d, 0xe1, 0x29, 0x0c, 0x43, 0x02, 0x01, 0xe6, + 0x9d, 0xe1, 0x29, 0x0c, 0x43, 0x02, 0x01, 0xe8, 0x04, 0x00, 0x04, 0x00, 0x05, 0x04, 0x00, 0x55, - 0x04, 0xb6, 0x06, 0x00, 0x00, 0x00, 0xb8, 0x06, - 0x00, 0x01, 0x00, 0xba, 0x06, 0x00, 0x02, 0x00, - 0xbc, 0x06, 0x00, 0x03, 0x00, 0xc6, 0x04, 0x4b, - 0x01, 0x80, 0x04, 0x28, 0x01, 0xc4, 0x04, 0x4a, - 0x01, 0xfe, 0x03, 0x27, 0x01, 0xdd, 0xde, 0xef, + 0x04, 0xb8, 0x06, 0x00, 0x00, 0x00, 0xba, 0x06, + 0x00, 0x01, 0x00, 0xbc, 0x06, 0x00, 0x02, 0x00, + 0xbe, 0x06, 0x00, 0x03, 0x00, 0xc8, 0x04, 0x4b, + 0x01, 0x82, 0x04, 0x28, 0x01, 0xc6, 0x04, 0x4a, + 0x01, 0x80, 0x04, 0x27, 0x01, 0xdd, 0xde, 0xef, 0xc9, 0xdf, 0xc5, 0xef, 0xca, 0xdf, 0xde, 0xef, 0xcb, 0xdd, 0xc7, 0xef, 0xcc, 0xc4, 0xa6, 0xea, 0x41, 0xc6, 0xde, 0xa7, 0xea, 0x3c, 0xde, 0xc8, 0xa7, 0xea, 0x37, 0xc8, 0xc7, 0xa6, 0xea, 0x32, - 0xe0, 0x42, 0x85, 0x01, 0x00, 0x00, 0xb4, 0xc5, - 0x24, 0x02, 0x00, 0xe0, 0x42, 0x85, 0x01, 0x00, + 0xe0, 0x42, 0x86, 0x01, 0x00, 0x00, 0xb4, 0xc5, + 0x24, 0x02, 0x00, 0xe0, 0x42, 0x86, 0x01, 0x00, 0x00, 0xc8, 0xc7, 0x24, 0x02, 0x00, 0x9d, 0xe0, - 0x42, 0x85, 0x01, 0x00, 0x00, 0xc6, 0xc8, 0x24, - 0x02, 0x00, 0x9d, 0xe0, 0x42, 0x85, 0x01, 0x00, + 0x42, 0x86, 0x01, 0x00, 0x00, 0xc6, 0xc8, 0x24, + 0x02, 0x00, 0x9d, 0xe0, 0x42, 0x86, 0x01, 0x00, 0x00, 0xc4, 0x24, 0x02, 0x00, 0x9d, 0xe4, 0xc7, - 0xe2, 0x29, 0x0c, 0x43, 0x02, 0x01, 0xe8, 0x04, + 0xe2, 0x29, 0x0c, 0x43, 0x02, 0x01, 0xea, 0x04, 0x00, 0x01, 0x00, 0x05, 0x03, 0x00, 0x30, 0x01, - 0xb4, 0x06, 0x00, 0x00, 0x00, 0xc4, 0x04, 0x4a, - 0x01, 0x80, 0x04, 0x28, 0x01, 0xfe, 0x03, 0x27, - 0x01, 0xdd, 0xde, 0xef, 0xc9, 0xdf, 0x42, 0x85, + 0xb6, 0x06, 0x00, 0x00, 0x00, 0xc6, 0x04, 0x4a, + 0x01, 0x82, 0x04, 0x28, 0x01, 0x80, 0x04, 0x27, + 0x01, 0xdd, 0xde, 0xef, 0xc9, 0xdf, 0x42, 0x86, 0x01, 0x00, 0x00, 0xb4, 0xde, 0x24, 0x02, 0x00, - 0xdf, 0x42, 0x85, 0x01, 0x00, 0x00, 0xde, 0xc5, - 0x24, 0x02, 0x00, 0x42, 0x9f, 0x01, 0x00, 0x00, - 0x24, 0x00, 0x00, 0x9d, 0xdf, 0x42, 0x85, 0x01, + 0xdf, 0x42, 0x86, 0x01, 0x00, 0x00, 0xde, 0xc5, + 0x24, 0x02, 0x00, 0x42, 0xa0, 0x01, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x9d, 0xdf, 0x42, 0x86, 0x01, 0x00, 0x00, 0xc5, 0x24, 0x01, 0x00, 0x9d, 0xe3, - 0x29, 0x0c, 0x43, 0x02, 0x01, 0xea, 0x04, 0x00, - 0x01, 0x00, 0x05, 0x03, 0x00, 0x30, 0x01, 0xb4, - 0x06, 0x00, 0x00, 0x00, 0xc4, 0x04, 0x4a, 0x01, - 0x80, 0x04, 0x28, 0x01, 0xfe, 0x03, 0x27, 0x01, - 0xdd, 0xde, 0xef, 0xc9, 0xdf, 0x42, 0x85, 0x01, + 0x29, 0x0c, 0x43, 0x02, 0x01, 0xec, 0x04, 0x00, + 0x01, 0x00, 0x05, 0x03, 0x00, 0x30, 0x01, 0xb6, + 0x06, 0x00, 0x00, 0x00, 0xc6, 0x04, 0x4a, 0x01, + 0x82, 0x04, 0x28, 0x01, 0x80, 0x04, 0x27, 0x01, + 0xdd, 0xde, 0xef, 0xc9, 0xdf, 0x42, 0x86, 0x01, 0x00, 0x00, 0xb4, 0xde, 0x24, 0x02, 0x00, 0xdf, - 0x42, 0x85, 0x01, 0x00, 0x00, 0xde, 0xc5, 0x24, - 0x02, 0x00, 0x42, 0xa0, 0x01, 0x00, 0x00, 0x24, - 0x00, 0x00, 0x9d, 0xdf, 0x42, 0x85, 0x01, 0x00, + 0x42, 0x86, 0x01, 0x00, 0x00, 0xde, 0xc5, 0x24, + 0x02, 0x00, 0x42, 0xa1, 0x01, 0x00, 0x00, 0x24, + 0x00, 0x00, 0x9d, 0xdf, 0x42, 0x86, 0x01, 0x00, 0x00, 0xc5, 0x24, 0x01, 0x00, 0x9d, 0xe3, 0x29, - 0x0c, 0x43, 0x02, 0x01, 0xec, 0x04, 0x03, 0x01, - 0x03, 0x04, 0x06, 0x00, 0x5e, 0x04, 0xfe, 0x05, - 0x00, 0x01, 0x00, 0xb4, 0x06, 0x00, 0x01, 0x00, - 0xb2, 0x06, 0x00, 0x01, 0x00, 0xc2, 0x06, 0x00, - 0x00, 0x00, 0xfe, 0x03, 0x27, 0x01, 0x88, 0x04, - 0x2c, 0x01, 0xec, 0x04, 0x5e, 0x01, 0xea, 0x03, - 0x1d, 0x01, 0x80, 0x04, 0x28, 0x01, 0x86, 0x04, - 0x2b, 0x01, 0xdd, 0x42, 0x85, 0x01, 0x00, 0x00, + 0x0c, 0x43, 0x02, 0x01, 0xee, 0x04, 0x03, 0x01, + 0x03, 0x04, 0x06, 0x00, 0x5e, 0x04, 0x80, 0x06, + 0x00, 0x01, 0x00, 0xb6, 0x06, 0x00, 0x01, 0x00, + 0xb4, 0x06, 0x00, 0x01, 0x00, 0xc4, 0x06, 0x00, + 0x00, 0x00, 0x80, 0x04, 0x27, 0x01, 0x8a, 0x04, + 0x2c, 0x01, 0xee, 0x04, 0x5e, 0x01, 0xec, 0x03, + 0x1d, 0x01, 0x82, 0x04, 0x28, 0x01, 0x88, 0x04, + 0x2b, 0x01, 0xdd, 0x42, 0x86, 0x01, 0x00, 0x00, 0xd1, 0xd2, 0x24, 0x02, 0x00, 0xc9, 0xde, 0xdf, 0xaf, 0xea, 0x05, 0xc5, 0xe4, 0xec, 0x10, 0xd3, 0xb4, 0xa6, 0xea, 0x07, 0xc5, 0xe0, 0x9d, 0xe4, 0xec, 0x05, 0xe0, 0xc5, 0x9d, 0xe4, 0xdd, 0x42, - 0x85, 0x01, 0x00, 0x00, 0xb4, 0xd1, 0x24, 0x02, - 0x00, 0xdd, 0x42, 0x85, 0x01, 0x00, 0x00, 0xd2, + 0x86, 0x01, 0x00, 0x00, 0xb4, 0xd1, 0x24, 0x02, + 0x00, 0xdd, 0x42, 0x86, 0x01, 0x00, 0x00, 0xd2, 0x24, 0x01, 0x00, 0x9d, 0xe1, 0x5e, 0x04, 0x00, 0xd2, 0xa8, 0xea, 0x0d, 0x5e, 0x04, 0x00, 0xd2, 0xd1, 0x9e, 0x9e, 0x5f, 0x04, 0x00, 0xec, 0x0c, 0x5e, 0x04, 0x00, 0xd1, 0xa8, 0xea, 0x05, 0xd1, 0x5f, 0x04, 0x00, 0xdf, 0x5f, 0x05, 0x00, 0x29, - 0x0c, 0x43, 0x02, 0x01, 0xee, 0x04, 0x00, 0x00, - 0x00, 0x04, 0x03, 0x00, 0x07, 0x00, 0xec, 0x04, - 0x5e, 0x01, 0x80, 0x04, 0x28, 0x01, 0xfe, 0x03, + 0x0c, 0x43, 0x02, 0x01, 0xf0, 0x04, 0x00, 0x00, + 0x00, 0x04, 0x03, 0x00, 0x07, 0x00, 0xee, 0x04, + 0x5e, 0x01, 0x82, 0x04, 0x28, 0x01, 0x80, 0x04, 0x27, 0x01, 0xdd, 0xde, 0xdf, 0xe9, 0xb5, 0xf1, - 0x29, 0x0c, 0x43, 0x02, 0x01, 0xf0, 0x04, 0x00, - 0x00, 0x00, 0x04, 0x02, 0x00, 0x06, 0x00, 0xec, - 0x04, 0x5e, 0x01, 0x80, 0x04, 0x28, 0x01, 0xdd, + 0x29, 0x0c, 0x43, 0x02, 0x01, 0xf2, 0x04, 0x00, + 0x00, 0x00, 0x04, 0x02, 0x00, 0x06, 0x00, 0xee, + 0x04, 0x5e, 0x01, 0x82, 0x04, 0x28, 0x01, 0xdd, 0xb4, 0xde, 0xb3, 0xf1, 0x29, 0x0c, 0x43, 0x02, - 0x01, 0xf2, 0x04, 0x00, 0x00, 0x00, 0x04, 0x03, - 0x00, 0x08, 0x00, 0xec, 0x04, 0x5e, 0x01, 0x80, - 0x04, 0x28, 0x01, 0xc4, 0x04, 0x4a, 0x01, 0xdd, + 0x01, 0xf4, 0x04, 0x00, 0x00, 0x00, 0x04, 0x03, + 0x00, 0x08, 0x00, 0xee, 0x04, 0x5e, 0x01, 0x82, + 0x04, 0x28, 0x01, 0xc6, 0x04, 0x4a, 0x01, 0xdd, 0xde, 0xdf, 0xde, 0xef, 0xb5, 0xf1, 0x29, 0x0c, - 0x43, 0x02, 0x01, 0xf4, 0x04, 0x00, 0x00, 0x00, - 0x04, 0x03, 0x00, 0x08, 0x00, 0xec, 0x04, 0x5e, - 0x01, 0xc6, 0x04, 0x4b, 0x01, 0x80, 0x04, 0x28, + 0x43, 0x02, 0x01, 0xf6, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x03, 0x00, 0x08, 0x00, 0xee, 0x04, 0x5e, + 0x01, 0xc8, 0x04, 0x4b, 0x01, 0x82, 0x04, 0x28, 0x01, 0xdd, 0xde, 0xdf, 0xef, 0xdf, 0xb3, 0xf1, - 0x29, 0x0c, 0x43, 0x02, 0x01, 0xf6, 0x04, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0xb4, - 0x04, 0x42, 0x01, 0xea, 0x03, 0x1d, 0x01, 0xdd, - 0xde, 0xef, 0x29, 0x0c, 0x43, 0x02, 0x01, 0xf8, + 0x29, 0x0c, 0x43, 0x02, 0x01, 0xf8, 0x04, 0x00, + 0x00, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0xb6, + 0x04, 0x42, 0x01, 0xec, 0x03, 0x1d, 0x01, 0xdd, + 0xde, 0xef, 0x29, 0x0c, 0x43, 0x02, 0x01, 0xfa, 0x04, 0x00, 0x00, 0x00, 0x03, 0x05, 0x00, 0x32, - 0x00, 0x88, 0x04, 0x2c, 0x01, 0xf8, 0x04, 0x64, - 0x01, 0xc2, 0x03, 0x00, 0x0c, 0xa4, 0x05, 0x7a, - 0x01, 0x8e, 0x05, 0x6f, 0x01, 0xdd, 0xde, 0xae, - 0xea, 0x17, 0x65, 0x02, 0x00, 0x42, 0x83, 0x01, - 0x00, 0x00, 0x04, 0x8a, 0x01, 0x00, 0x00, 0x24, + 0x00, 0x8a, 0x04, 0x2c, 0x01, 0xfa, 0x04, 0x64, + 0x01, 0xc4, 0x03, 0x00, 0x0c, 0xa6, 0x05, 0x7a, + 0x01, 0x90, 0x05, 0x6f, 0x01, 0xdd, 0xde, 0xae, + 0xea, 0x17, 0x65, 0x02, 0x00, 0x42, 0x84, 0x01, + 0x00, 0x00, 0x04, 0x8b, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, 0xe0, 0xb4, 0xef, 0x0e, 0x29, - 0x65, 0x02, 0x00, 0x42, 0x83, 0x01, 0x00, 0x00, - 0x04, 0xa2, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, + 0x65, 0x02, 0x00, 0x42, 0x84, 0x01, 0x00, 0x00, + 0x04, 0xa3, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, 0x5e, 0x04, 0x00, 0xee, 0x0e, 0x29, 0x0c, - 0x43, 0x02, 0x01, 0xfa, 0x04, 0x00, 0x00, 0x00, - 0x01, 0x02, 0x00, 0x05, 0x00, 0xfe, 0x03, 0x27, - 0x01, 0x80, 0x04, 0x28, 0x01, 0xc0, 0xe1, 0xb4, - 0xe2, 0x29, 0x0c, 0x43, 0x02, 0x01, 0xfc, 0x04, + 0x43, 0x02, 0x01, 0xfc, 0x04, 0x00, 0x00, 0x00, + 0x01, 0x02, 0x00, 0x05, 0x00, 0x80, 0x04, 0x27, + 0x01, 0x82, 0x04, 0x28, 0x01, 0xc0, 0xe1, 0xb4, + 0xe2, 0x29, 0x0c, 0x43, 0x02, 0x01, 0xfe, 0x04, 0x02, 0x01, 0x02, 0x04, 0x01, 0x00, 0x1f, 0x03, - 0xc6, 0x06, 0x00, 0x01, 0x00, 0xb4, 0x06, 0x00, - 0x01, 0x00, 0xaa, 0x06, 0x00, 0x00, 0x00, 0xa4, + 0xc8, 0x06, 0x00, 0x01, 0x00, 0xb6, 0x06, 0x00, + 0x01, 0x00, 0xac, 0x06, 0x00, 0x00, 0x00, 0xa6, 0x04, 0x3a, 0x01, 0xd2, 0xc9, 0xc5, 0xb4, 0xa8, 0xea, 0x0e, 0xdd, 0xd1, 0xc5, 0xb5, 0x9e, 0x47, 0xef, 0xea, 0x05, 0x92, 0x00, 0xec, 0xef, 0xd1, - 0x42, 0xa4, 0x01, 0x00, 0x00, 0xc5, 0xd2, 0x25, - 0x02, 0x00, 0x0c, 0x43, 0x02, 0x01, 0xfe, 0x04, + 0x42, 0xa5, 0x01, 0x00, 0x00, 0xc5, 0xd2, 0x25, + 0x02, 0x00, 0x0c, 0x43, 0x02, 0x01, 0x80, 0x05, 0x02, 0x04, 0x02, 0x05, 0x07, 0x04, 0x9f, 0x02, - 0x06, 0xc6, 0x06, 0x00, 0x01, 0x00, 0xaa, 0x06, - 0x00, 0x01, 0x00, 0xdc, 0x05, 0x00, 0x00, 0x00, - 0xca, 0x06, 0x00, 0x01, 0x00, 0xcc, 0x06, 0x00, - 0x02, 0x00, 0xce, 0x06, 0x00, 0x03, 0x00, 0xc8, - 0x03, 0x00, 0x03, 0xa8, 0x05, 0x7c, 0x01, 0xa4, - 0x04, 0x3a, 0x01, 0xfc, 0x04, 0x66, 0x01, 0xcc, - 0x03, 0x0e, 0x01, 0xfe, 0x04, 0x67, 0x01, 0xc0, + 0x06, 0xc8, 0x06, 0x00, 0x01, 0x00, 0xac, 0x06, + 0x00, 0x01, 0x00, 0xde, 0x05, 0x00, 0x00, 0x00, + 0xcc, 0x06, 0x00, 0x01, 0x00, 0xce, 0x06, 0x00, + 0x02, 0x00, 0xd0, 0x06, 0x00, 0x03, 0x00, 0xca, + 0x03, 0x00, 0x03, 0xaa, 0x05, 0x7c, 0x01, 0xa6, + 0x04, 0x3a, 0x01, 0xfe, 0x04, 0x66, 0x01, 0xce, + 0x03, 0x0e, 0x01, 0x80, 0x05, 0x67, 0x01, 0xc2, 0x02, 0x08, 0x01, 0x07, 0x02, 0x20, 0x07, 0x34, 0x00, 0x00, 0x01, 0x00, 0x12, 0x00, 0x00, 0x00, 0x09, 0x06, 0x00, 0x00, 0x00, 0x05, 0x08, 0xf5, @@ -1257,20 +1257,20 @@ const uint8_t qjsc_repl[23373] = { 0x79, 0x00, 0x0b, 0x07, 0x0d, 0x00, 0x0b, 0xd2, 0xb4, 0xa7, 0xea, 0x03, 0xdd, 0x28, 0xd1, 0xd2, 0xb5, 0x9e, 0x47, 0xc9, 0xd2, 0xb5, 0xae, 0xea, - 0x17, 0xc5, 0x04, 0xa8, 0x01, 0x00, 0x00, 0xae, - 0x11, 0xeb, 0x09, 0x0e, 0xc5, 0x04, 0xa9, 0x01, + 0x17, 0xc5, 0x04, 0xa9, 0x01, 0x00, 0x00, 0xae, + 0x11, 0xeb, 0x09, 0x0e, 0xc5, 0x04, 0xaa, 0x01, 0x00, 0x00, 0xae, 0xea, 0x03, 0xde, 0x28, 0x04, - 0xaa, 0x01, 0x00, 0x00, 0x42, 0xab, 0x01, 0x00, + 0xab, 0x01, 0x00, 0x00, 0x42, 0xac, 0x01, 0x00, 0x00, 0xc5, 0x24, 0x01, 0x00, 0xb4, 0xa9, 0xea, - 0x02, 0x29, 0xc5, 0x04, 0xa9, 0x01, 0x00, 0x00, + 0x02, 0x29, 0xc5, 0x04, 0xaa, 0x01, 0x00, 0x00, 0xae, 0x69, 0xda, 0x00, 0x00, 0x00, 0xd2, 0x8e, 0xd6, 0xd1, 0xd2, 0xb5, 0x9e, 0x47, 0xcd, 0x11, - 0x04, 0xac, 0x01, 0x00, 0x00, 0xae, 0xeb, 0x13, - 0x11, 0x04, 0xad, 0x01, 0x00, 0x00, 0xae, 0xeb, - 0x0a, 0x11, 0x04, 0xae, 0x01, 0x00, 0x00, 0xae, - 0xea, 0x07, 0x04, 0x71, 0x01, 0x00, 0x00, 0x28, - 0x11, 0x04, 0xaf, 0x01, 0x00, 0x00, 0xae, 0xea, - 0x05, 0x26, 0x00, 0x00, 0x28, 0x11, 0x04, 0xb0, + 0x04, 0xad, 0x01, 0x00, 0x00, 0xae, 0xeb, 0x13, + 0x11, 0x04, 0xae, 0x01, 0x00, 0x00, 0xae, 0xeb, + 0x0a, 0x11, 0x04, 0xaf, 0x01, 0x00, 0x00, 0xae, + 0xea, 0x07, 0x04, 0x72, 0x01, 0x00, 0x00, 0x28, + 0x11, 0x04, 0xb0, 0x01, 0x00, 0x00, 0xae, 0xea, + 0x05, 0x26, 0x00, 0x00, 0x28, 0x11, 0x04, 0xb1, 0x01, 0x00, 0x00, 0xae, 0xea, 0x07, 0xbe, 0x00, 0xbe, 0x01, 0x33, 0x28, 0xdf, 0xc5, 0xef, 0x69, 0x89, 0x00, 0x00, 0x00, 0xe0, 0xd1, 0xd2, 0xf0, @@ -1286,28 +1286,28 @@ const uint8_t qjsc_repl[23373] = { 0x0e, 0xc8, 0xf2, 0xea, 0x03, 0xc8, 0x28, 0xc8, 0xc6, 0x47, 0xf4, 0xeb, 0x05, 0xc8, 0xc6, 0x47, 0x28, 0xc7, 0xb7, 0xa9, 0xea, 0x24, 0xd1, 0xc7, - 0xb5, 0x9e, 0x47, 0x04, 0xb0, 0x01, 0x00, 0x00, - 0xae, 0xea, 0x17, 0xc6, 0x42, 0xb1, 0x01, 0x00, + 0xb5, 0x9e, 0x47, 0x04, 0xb1, 0x01, 0x00, 0x00, + 0xae, 0xea, 0x17, 0xc6, 0x42, 0xb2, 0x01, 0x00, 0x00, 0xbe, 0x02, 0xbe, 0x03, 0x33, 0x24, 0x01, 0x00, 0xea, 0x07, 0x5e, 0x06, 0x00, 0x23, 0x00, 0x00, 0x0e, 0x0b, 0x28, 0xdd, 0x28, 0x0c, 0x43, - 0x02, 0x01, 0x80, 0x05, 0x02, 0x0a, 0x02, 0x04, - 0x03, 0x01, 0xee, 0x01, 0x0c, 0xc6, 0x06, 0x00, - 0x01, 0x00, 0xaa, 0x06, 0x00, 0x01, 0x00, 0xc2, - 0x06, 0x00, 0x00, 0x00, 0xce, 0x06, 0x00, 0x01, - 0x00, 0xe4, 0x06, 0x00, 0x02, 0x00, 0xe6, 0x06, - 0x00, 0x03, 0x00, 0xd6, 0x05, 0x00, 0x04, 0x00, - 0x82, 0x06, 0x00, 0x05, 0x00, 0xe8, 0x06, 0x00, - 0x06, 0x00, 0xea, 0x06, 0x00, 0x07, 0x00, 0xec, - 0x06, 0x00, 0x08, 0x00, 0xee, 0x06, 0x08, 0x00, - 0x21, 0xfc, 0x04, 0x66, 0x01, 0xfe, 0x04, 0x67, - 0x01, 0xa4, 0x02, 0x00, 0x01, 0x0c, 0x43, 0x02, - 0x01, 0xee, 0x06, 0x02, 0x00, 0x02, 0x03, 0x00, - 0x00, 0x34, 0x02, 0xe2, 0x05, 0x00, 0x01, 0x00, - 0xf6, 0x05, 0x00, 0x01, 0x00, 0xd1, 0xb4, 0x47, + 0x02, 0x01, 0x82, 0x05, 0x02, 0x0a, 0x02, 0x04, + 0x03, 0x01, 0xee, 0x01, 0x0c, 0xc8, 0x06, 0x00, + 0x01, 0x00, 0xac, 0x06, 0x00, 0x01, 0x00, 0xc4, + 0x06, 0x00, 0x00, 0x00, 0xd0, 0x06, 0x00, 0x01, + 0x00, 0xe6, 0x06, 0x00, 0x02, 0x00, 0xe8, 0x06, + 0x00, 0x03, 0x00, 0xd8, 0x05, 0x00, 0x04, 0x00, + 0x84, 0x06, 0x00, 0x05, 0x00, 0xea, 0x06, 0x00, + 0x06, 0x00, 0xec, 0x06, 0x00, 0x07, 0x00, 0xee, + 0x06, 0x00, 0x08, 0x00, 0xf0, 0x06, 0x08, 0x00, + 0x21, 0xfe, 0x04, 0x66, 0x01, 0x80, 0x05, 0x67, + 0x01, 0xa6, 0x02, 0x00, 0x01, 0x0c, 0x43, 0x02, + 0x01, 0xf0, 0x06, 0x02, 0x00, 0x02, 0x03, 0x00, + 0x00, 0x34, 0x02, 0xe4, 0x05, 0x00, 0x01, 0x00, + 0xf8, 0x05, 0x00, 0x01, 0x00, 0xd1, 0xb4, 0x47, 0xd2, 0xb4, 0x47, 0xad, 0xea, 0x1b, 0xd1, 0xb4, - 0x47, 0x04, 0x73, 0x01, 0x00, 0x00, 0xac, 0xea, - 0x03, 0xb5, 0x28, 0xd2, 0xb4, 0x47, 0x04, 0x73, + 0x47, 0x04, 0x74, 0x01, 0x00, 0x00, 0xac, 0xea, + 0x03, 0xb5, 0x28, 0xd2, 0xb4, 0x47, 0x04, 0x74, 0x01, 0x00, 0x00, 0xac, 0xea, 0x03, 0xb3, 0x28, 0xd1, 0xd2, 0xa6, 0xea, 0x03, 0xb3, 0x28, 0xd1, 0xd2, 0xa8, 0xea, 0x04, 0xb5, 0x8d, 0x28, 0xb4, @@ -1316,20 +1316,20 @@ const uint8_t qjsc_repl[23373] = { 0x00, 0xcc, 0xb4, 0xc2, 0x04, 0xc7, 0xca, 0xc1, 0x04, 0xbc, 0x0a, 0xa6, 0xea, 0x67, 0xc6, 0xf3, 0xeb, 0x63, 0xc6, 0x06, 0xaf, 0xea, 0x5e, 0xdf, - 0x42, 0xb8, 0x01, 0x00, 0x00, 0xc6, 0x24, 0x01, + 0x42, 0xb9, 0x01, 0x00, 0x00, 0xc6, 0x24, 0x01, 0x00, 0xc2, 0x07, 0xb4, 0xc2, 0x05, 0xc1, 0x05, 0xc1, 0x07, 0xe9, 0xa6, 0xea, 0x38, 0xc1, 0x07, 0xc1, 0x05, 0x47, 0xc3, 0x08, 0x97, 0x04, 0x49, 0x00, 0x00, 0x00, 0xac, 0xea, 0x24, 0xc0, 0xc1, 0x08, 0x8d, 0x9d, 0xc1, 0x08, 0xad, 0xea, 0x1a, - 0xc1, 0x08, 0x42, 0xb9, 0x01, 0x00, 0x00, 0xc5, - 0x24, 0x01, 0x00, 0xea, 0x0d, 0xc8, 0x42, 0x98, + 0xc1, 0x08, 0x42, 0xba, 0x01, 0x00, 0x00, 0xc5, + 0x24, 0x01, 0x00, 0xea, 0x0d, 0xc8, 0x42, 0x99, 0x01, 0x00, 0x00, 0xc1, 0x08, 0x24, 0x01, 0x00, 0x0e, 0x93, 0x05, 0xec, 0xc2, 0xdf, 0x42, 0x60, 0x00, 0x00, 0x00, 0xc6, 0x24, 0x01, 0x00, 0xca, 0x93, 0x04, 0xec, 0x94, 0xc8, 0xe9, 0xb5, 0xa8, 0xea, 0x51, 0xbf, 0x00, 0xc2, 0x09, 0xbf, 0x00, - 0x0e, 0xc8, 0x42, 0xba, 0x01, 0x00, 0x00, 0x62, + 0x0e, 0xc8, 0x42, 0xbb, 0x01, 0x00, 0x00, 0x62, 0x09, 0x00, 0x24, 0x01, 0x00, 0x0e, 0xb5, 0xc3, 0x05, 0xc2, 0x04, 0xc1, 0x04, 0xc8, 0xe9, 0xa6, 0xea, 0x29, 0xc8, 0xc1, 0x04, 0x47, 0xc8, 0xc1, @@ -1338,25 +1338,25 @@ const uint8_t qjsc_repl[23373] = { 0xeb, 0x04, 0x1b, 0x71, 0x1b, 0x1b, 0xc8, 0xc1, 0x04, 0x47, 0x1b, 0x71, 0x1b, 0x49, 0x93, 0x04, 0xec, 0xd2, 0xc8, 0xc1, 0x05, 0x43, 0x32, 0x00, - 0x00, 0x00, 0x0b, 0xc8, 0x4c, 0x62, 0x01, 0x00, - 0x00, 0xc5, 0xe9, 0x4c, 0x95, 0x01, 0x00, 0x00, - 0xc7, 0x4c, 0xbb, 0x01, 0x00, 0x00, 0x28, 0x0c, - 0x43, 0x02, 0x01, 0x82, 0x05, 0x00, 0x0d, 0x00, - 0x07, 0x0a, 0x00, 0x8f, 0x03, 0x0d, 0xc4, 0x05, - 0x00, 0x00, 0x00, 0xf8, 0x06, 0x00, 0x01, 0x00, - 0xc2, 0x06, 0x00, 0x02, 0x00, 0xd6, 0x05, 0x00, - 0x03, 0x00, 0x82, 0x06, 0x00, 0x04, 0x00, 0xec, - 0x05, 0x00, 0x05, 0x00, 0xfa, 0x06, 0x00, 0x06, - 0x00, 0xfc, 0x06, 0x00, 0x07, 0x00, 0xfe, 0x06, - 0x00, 0x08, 0x00, 0x80, 0x07, 0x00, 0x09, 0x00, - 0x82, 0x07, 0x00, 0x0a, 0x00, 0x84, 0x07, 0x00, - 0x0b, 0x00, 0x86, 0x07, 0x00, 0x0c, 0x00, 0x80, - 0x05, 0x68, 0x01, 0xfe, 0x03, 0x27, 0x01, 0x80, - 0x04, 0x28, 0x01, 0xb4, 0x04, 0x42, 0x01, 0x88, - 0x04, 0x2c, 0x01, 0x82, 0x05, 0x69, 0x01, 0xb4, - 0x02, 0x0b, 0x01, 0x94, 0x04, 0x32, 0x01, 0xc2, - 0x03, 0x00, 0x0c, 0x8e, 0x05, 0x6f, 0x01, 0xdd, - 0xde, 0xdf, 0xf0, 0xce, 0x41, 0x62, 0x01, 0x00, + 0x00, 0x00, 0x0b, 0xc8, 0x4c, 0x63, 0x01, 0x00, + 0x00, 0xc5, 0xe9, 0x4c, 0x96, 0x01, 0x00, 0x00, + 0xc7, 0x4c, 0xbc, 0x01, 0x00, 0x00, 0x28, 0x0c, + 0x43, 0x02, 0x01, 0x84, 0x05, 0x00, 0x0d, 0x00, + 0x07, 0x0a, 0x00, 0x8f, 0x03, 0x0d, 0xc6, 0x05, + 0x00, 0x00, 0x00, 0xfa, 0x06, 0x00, 0x01, 0x00, + 0xc4, 0x06, 0x00, 0x02, 0x00, 0xd8, 0x05, 0x00, + 0x03, 0x00, 0x84, 0x06, 0x00, 0x04, 0x00, 0xee, + 0x05, 0x00, 0x05, 0x00, 0xfc, 0x06, 0x00, 0x06, + 0x00, 0xfe, 0x06, 0x00, 0x07, 0x00, 0x80, 0x07, + 0x00, 0x08, 0x00, 0x82, 0x07, 0x00, 0x09, 0x00, + 0x84, 0x07, 0x00, 0x0a, 0x00, 0x86, 0x07, 0x00, + 0x0b, 0x00, 0x88, 0x07, 0x00, 0x0c, 0x00, 0x82, + 0x05, 0x68, 0x01, 0x80, 0x04, 0x27, 0x01, 0x82, + 0x04, 0x28, 0x01, 0xb6, 0x04, 0x42, 0x01, 0x8a, + 0x04, 0x2c, 0x01, 0x84, 0x05, 0x69, 0x01, 0xb6, + 0x02, 0x0b, 0x01, 0x96, 0x04, 0x32, 0x01, 0xc4, + 0x03, 0x00, 0x0c, 0x90, 0x05, 0x6f, 0x01, 0xdd, + 0xde, 0xdf, 0xf0, 0xce, 0x41, 0x63, 0x01, 0x00, 0x00, 0xcd, 0xe9, 0xb4, 0xae, 0xea, 0x02, 0x29, 0xc5, 0xb4, 0x47, 0xcf, 0xe9, 0xc2, 0x05, 0xb5, 0xcc, 0xc8, 0xc5, 0xe9, 0xa6, 0xea, 0x2a, 0xc5, @@ -1365,33 +1365,33 @@ const uint8_t qjsc_repl[23373] = { 0xc1, 0x04, 0x47, 0xc7, 0xc1, 0x04, 0x47, 0xaf, 0xea, 0x07, 0xc1, 0x04, 0xc2, 0x05, 0xec, 0x05, 0x93, 0x04, 0xec, 0xe4, 0x93, 0x03, 0xec, 0xd2, - 0xc6, 0x41, 0x95, 0x01, 0x00, 0x00, 0xcc, 0xc8, + 0xc6, 0x41, 0x96, 0x01, 0x00, 0x00, 0xcc, 0xc8, 0xc1, 0x05, 0xa6, 0xea, 0x0b, 0xe0, 0xc7, 0xc8, 0x47, 0xef, 0x0e, 0x93, 0x03, 0xec, 0xf1, 0x5e, 0x04, 0x00, 0x5e, 0x05, 0x00, 0xae, 0xea, 0x42, 0xc5, 0xe9, 0xb5, 0xac, 0xea, 0x3c, 0xc6, 0x41, - 0xbb, 0x01, 0x00, 0x00, 0xc5, 0xb4, 0x47, 0x47, - 0xc3, 0x0c, 0xf5, 0xea, 0x1a, 0xe0, 0x04, 0xc4, + 0xbc, 0x01, 0x00, 0x00, 0xc5, 0xb4, 0x47, 0x47, + 0xc3, 0x0c, 0xf5, 0xea, 0x1a, 0xe0, 0x04, 0xc5, 0x01, 0x00, 0x00, 0xef, 0x0e, 0xc1, 0x0c, 0xe9, - 0xb4, 0xac, 0xea, 0x1e, 0xe0, 0x04, 0xc5, 0x01, + 0xb4, 0xac, 0xea, 0x1e, 0xe0, 0x04, 0xc6, 0x01, 0x00, 0x00, 0xef, 0x0e, 0xec, 0x14, 0xc1, 0x0c, 0x97, 0x04, 0x4a, 0x00, 0x00, 0x00, 0xac, 0xea, - 0x09, 0xe0, 0x04, 0xa9, 0x01, 0x00, 0x00, 0xef, + 0x09, 0xe0, 0x04, 0xaa, 0x01, 0x00, 0x00, 0xef, 0x0e, 0x5e, 0x04, 0x00, 0x5e, 0x05, 0x00, 0xae, 0x69, 0xdc, 0x00, 0x00, 0x00, 0xc5, 0xe9, 0xb6, 0xa9, 0x69, 0xd3, 0x00, 0x00, 0x00, 0xb4, 0xc2, 0x07, 0xb4, 0xcc, 0xc8, 0xc5, 0xe9, 0xa6, 0xea, - 0x18, 0x5e, 0x06, 0x00, 0x42, 0xc6, 0x01, 0x00, + 0x18, 0x5e, 0x06, 0x00, 0x42, 0xc7, 0x01, 0x00, 0x00, 0xc1, 0x07, 0xc5, 0xc8, 0x47, 0xe9, 0x24, 0x02, 0x00, 0xc2, 0x07, 0x93, 0x03, 0xec, 0xe4, - 0xb6, 0x94, 0x07, 0x5e, 0x06, 0x00, 0x42, 0xc6, + 0xb6, 0x94, 0x07, 0x5e, 0x06, 0x00, 0x42, 0xc7, 0x01, 0x00, 0x00, 0xb5, 0x5e, 0x06, 0x00, 0x42, - 0xc7, 0x01, 0x00, 0x00, 0x5e, 0x07, 0x00, 0xb5, + 0xc8, 0x01, 0x00, 0x00, 0x5e, 0x07, 0x00, 0xb5, 0x9d, 0xc1, 0x07, 0x9b, 0x24, 0x01, 0x00, 0x24, 0x02, 0x00, 0xc2, 0x09, 0x5e, 0x06, 0x00, 0x42, - 0xc8, 0x01, 0x00, 0x00, 0xc5, 0xe9, 0xc1, 0x09, + 0xc9, 0x01, 0x00, 0x00, 0xc5, 0xe9, 0xc1, 0x09, 0x9b, 0x24, 0x01, 0x00, 0xc2, 0x0b, 0x65, 0x08, - 0x00, 0x42, 0x83, 0x01, 0x00, 0x00, 0x04, 0x8a, + 0x00, 0x42, 0x84, 0x01, 0x00, 0x00, 0x04, 0x8b, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, 0xb4, 0xc2, 0x0a, 0xc1, 0x0a, 0xc1, 0x0b, 0xa6, 0xea, 0x58, 0xb4, 0xc2, 0x08, 0xc1, 0x08, 0xc1, 0x09, @@ -1399,89 +1399,89 @@ const uint8_t qjsc_repl[23373] = { 0xc1, 0x0a, 0x9d, 0xd0, 0xc5, 0xe9, 0xa9, 0xeb, 0x2b, 0xc5, 0xc8, 0x47, 0xcb, 0xc1, 0x08, 0xc1, 0x09, 0xb5, 0x9e, 0xad, 0xea, 0x0d, 0xc7, 0x42, - 0xc9, 0x01, 0x00, 0x00, 0xc1, 0x07, 0x24, 0x01, - 0x00, 0xcb, 0x65, 0x08, 0x00, 0x42, 0x83, 0x01, + 0xca, 0x01, 0x00, 0x00, 0xc1, 0x07, 0x24, 0x01, + 0x00, 0xcb, 0x65, 0x08, 0x00, 0x42, 0x84, 0x01, 0x00, 0x00, 0xc7, 0x24, 0x01, 0x00, 0x0e, 0x93, - 0x08, 0xec, 0xc2, 0x65, 0x08, 0x00, 0x42, 0x83, - 0x01, 0x00, 0x00, 0x04, 0x8a, 0x01, 0x00, 0x00, + 0x08, 0xec, 0xc2, 0x65, 0x08, 0x00, 0x42, 0x84, + 0x01, 0x00, 0x00, 0x04, 0x8b, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, 0x93, 0x0a, 0xec, 0xa3, 0x5e, 0x09, 0x00, 0xee, 0x0e, 0x29, 0x0c, 0x43, - 0x02, 0x01, 0x86, 0x05, 0x02, 0x01, 0x02, 0x02, - 0x00, 0x00, 0x10, 0x03, 0xea, 0x05, 0x00, 0x01, - 0x00, 0x94, 0x07, 0x00, 0x01, 0x00, 0xf8, 0x06, + 0x02, 0x01, 0x88, 0x05, 0x02, 0x01, 0x02, 0x02, + 0x00, 0x00, 0x10, 0x03, 0xec, 0x05, 0x00, 0x01, + 0x00, 0x96, 0x07, 0x00, 0x01, 0x00, 0xfa, 0x06, 0x00, 0x00, 0x00, 0xc0, 0xc9, 0xd2, 0x90, 0xd6, 0xb4, 0xa8, 0xea, 0x06, 0xd1, 0x94, 0x00, 0xec, - 0xf5, 0xc5, 0x28, 0x0c, 0x43, 0x02, 0x01, 0x8e, + 0xf5, 0xc5, 0x28, 0x0c, 0x43, 0x02, 0x01, 0x90, 0x05, 0x00, 0x00, 0x00, 0x03, 0x07, 0x00, 0x1e, - 0x00, 0xc2, 0x03, 0x00, 0x0c, 0xee, 0x03, 0x1f, - 0x01, 0x96, 0x04, 0x33, 0x01, 0xa6, 0x04, 0x3b, - 0x01, 0x94, 0x04, 0x32, 0x01, 0x82, 0x04, 0x29, - 0x01, 0x84, 0x04, 0x2a, 0x01, 0x65, 0x00, 0x00, - 0x42, 0x83, 0x01, 0x00, 0x00, 0xde, 0x24, 0x01, + 0x00, 0xc4, 0x03, 0x00, 0x0c, 0xf0, 0x03, 0x1f, + 0x01, 0x98, 0x04, 0x33, 0x01, 0xa8, 0x04, 0x3b, + 0x01, 0x96, 0x04, 0x32, 0x01, 0x84, 0x04, 0x29, + 0x01, 0x86, 0x04, 0x2a, 0x01, 0x65, 0x00, 0x00, + 0x42, 0x84, 0x01, 0x00, 0x00, 0xde, 0x24, 0x01, 0x00, 0x0e, 0xe0, 0xde, 0xef, 0x5e, 0x04, 0x00, 0x9c, 0xe3, 0xc0, 0x5f, 0x05, 0x00, 0xb4, 0x5f, - 0x06, 0x00, 0x29, 0x0c, 0x43, 0x02, 0x01, 0x90, + 0x06, 0x00, 0x29, 0x0c, 0x43, 0x02, 0x01, 0x92, 0x05, 0x02, 0x01, 0x02, 0x05, 0x11, 0x00, 0x80, - 0x01, 0x03, 0x96, 0x07, 0x00, 0x01, 0x00, 0x98, - 0x07, 0x00, 0x01, 0x00, 0xfa, 0x06, 0x00, 0x00, - 0x00, 0xfe, 0x03, 0x27, 0x01, 0x80, 0x04, 0x28, - 0x01, 0xe8, 0x03, 0x1c, 0x01, 0xe6, 0x03, 0x1b, - 0x01, 0x8c, 0x05, 0x6e, 0x01, 0xee, 0x03, 0x1f, - 0x01, 0xec, 0x03, 0x1e, 0x01, 0xfa, 0x03, 0x25, - 0x01, 0x86, 0x05, 0x6b, 0x01, 0xf0, 0x03, 0x20, - 0x01, 0xf4, 0x03, 0x22, 0x01, 0xda, 0x03, 0x15, - 0x01, 0xf8, 0x03, 0x24, 0x01, 0xf2, 0x03, 0x21, - 0x01, 0x8e, 0x05, 0x6f, 0x01, 0xb2, 0x04, 0x41, - 0x01, 0x8a, 0x05, 0x6d, 0x01, 0xd1, 0x11, 0xeb, + 0x01, 0x03, 0x98, 0x07, 0x00, 0x01, 0x00, 0x9a, + 0x07, 0x00, 0x01, 0x00, 0xfc, 0x06, 0x00, 0x00, + 0x00, 0x80, 0x04, 0x27, 0x01, 0x82, 0x04, 0x28, + 0x01, 0xea, 0x03, 0x1c, 0x01, 0xe8, 0x03, 0x1b, + 0x01, 0x8e, 0x05, 0x6e, 0x01, 0xf0, 0x03, 0x1f, + 0x01, 0xee, 0x03, 0x1e, 0x01, 0xfc, 0x03, 0x25, + 0x01, 0x88, 0x05, 0x6b, 0x01, 0xf2, 0x03, 0x20, + 0x01, 0xf6, 0x03, 0x22, 0x01, 0xdc, 0x03, 0x15, + 0x01, 0xfa, 0x03, 0x24, 0x01, 0xf4, 0x03, 0x21, + 0x01, 0x90, 0x05, 0x6f, 0x01, 0xb4, 0x04, 0x41, + 0x01, 0x8c, 0x05, 0x6d, 0x01, 0xd1, 0x11, 0xeb, 0x03, 0x0e, 0xc0, 0xe5, 0xe9, 0xe2, 0xe0, 0xe9, 0xe3, 0xd2, 0x5f, 0x04, 0x00, 0x5e, 0x06, 0x00, 0x5f, 0x05, 0x00, 0x5e, 0x07, 0x00, 0xea, 0x22, - 0x5e, 0x05, 0x00, 0x5e, 0x08, 0x00, 0x04, 0xcd, + 0x5e, 0x05, 0x00, 0x5e, 0x08, 0x00, 0x04, 0xce, 0x01, 0x00, 0x00, 0x5e, 0x09, 0x00, 0x5e, 0x05, 0x00, 0xe9, 0x9e, 0xf0, 0x9d, 0x60, 0x05, 0x00, 0x5e, 0x0a, 0x00, 0x9d, 0x5f, 0x05, 0x00, 0xec, 0x36, 0x5e, 0x0b, 0x00, 0xea, 0x20, 0x5e, 0x0c, 0x00, 0xbd, 0xe8, 0x03, 0x9b, 0xc9, 0x5e, 0x05, - 0x00, 0xc5, 0x42, 0xce, 0x01, 0x00, 0x00, 0xba, - 0x24, 0x01, 0x00, 0x04, 0xcd, 0x01, 0x00, 0x00, + 0x00, 0xc5, 0x42, 0xcf, 0x01, 0x00, 0x00, 0xba, + 0x24, 0x01, 0x00, 0x04, 0xce, 0x01, 0x00, 0x00, 0x9d, 0x9d, 0x5f, 0x05, 0x00, 0x5e, 0x05, 0x00, 0xe9, 0x5f, 0x09, 0x00, 0x5e, 0x05, 0x00, 0x5e, 0x0d, 0x00, 0x9d, 0x5f, 0x05, 0x00, 0x5e, 0x0e, 0x00, 0xee, 0x0e, 0x5e, 0x0f, 0x00, 0xee, 0x0e, 0xb4, 0x5f, 0x10, 0x00, 0x29, 0x0c, 0x43, 0x02, - 0x01, 0x92, 0x05, 0x01, 0x01, 0x01, 0x03, 0x04, - 0x02, 0x8c, 0x01, 0x02, 0x9e, 0x07, 0x00, 0x01, - 0x00, 0xdc, 0x05, 0x00, 0x00, 0x00, 0xac, 0x02, - 0x01, 0x01, 0x8a, 0x05, 0x6d, 0x01, 0x88, 0x05, - 0x6c, 0x01, 0x94, 0x05, 0x72, 0x01, 0x07, 0x02, - 0x30, 0x07, 0x02, 0x39, 0xdd, 0x42, 0xd0, 0x01, + 0x01, 0x94, 0x05, 0x01, 0x01, 0x01, 0x03, 0x04, + 0x02, 0x8c, 0x01, 0x02, 0xa0, 0x07, 0x00, 0x01, + 0x00, 0xde, 0x05, 0x00, 0x00, 0x00, 0xae, 0x02, + 0x01, 0x01, 0x8c, 0x05, 0x6d, 0x01, 0x8a, 0x05, + 0x6c, 0x01, 0x96, 0x05, 0x72, 0x01, 0x07, 0x02, + 0x30, 0x07, 0x02, 0x39, 0xdd, 0x42, 0xd1, 0x01, 0x00, 0x00, 0xd1, 0x24, 0x01, 0x00, 0xc9, 0xde, - 0x11, 0xb4, 0xae, 0xea, 0x16, 0xc5, 0x04, 0xd1, + 0x11, 0xb4, 0xae, 0xea, 0x16, 0xc5, 0x04, 0xd2, 0x01, 0x00, 0x00, 0xac, 0xea, 0x07, 0xc5, 0xe3, 0xb5, 0xe2, 0xec, 0x6c, 0xe0, 0xc5, 0xef, 0x0e, 0xec, 0x66, 0x11, 0xb5, 0xae, 0xea, 0x27, 0xdf, - 0xc5, 0x9d, 0xe3, 0xc5, 0x04, 0xd2, 0x01, 0x00, + 0xc5, 0x9d, 0xe3, 0xc5, 0x04, 0xd3, 0x01, 0x00, 0x00, 0xac, 0xea, 0x05, 0xb6, 0xe2, 0xec, 0x50, - 0xc5, 0x04, 0xd3, 0x01, 0x00, 0x00, 0xac, 0xea, + 0xc5, 0x04, 0xd4, 0x01, 0x00, 0x00, 0xac, 0xea, 0x05, 0xb7, 0xe2, 0xec, 0x43, 0xe0, 0xdf, 0xef, 0x0e, 0xb4, 0xe2, 0xec, 0x3b, 0x11, 0xb6, 0xae, 0xea, 0x27, 0xdf, 0xc5, 0x9d, 0xe3, 0xc5, 0x04, - 0xd4, 0x01, 0x00, 0x00, 0xac, 0x11, 0xeb, 0x0e, + 0xd5, 0x01, 0x00, 0x00, 0xac, 0x11, 0xeb, 0x0e, 0x0e, 0xc5, 0xbe, 0x00, 0xa9, 0x11, 0xea, 0x06, 0x0e, 0xc5, 0xbe, 0x01, 0xa7, 0x96, 0xea, 0x18, 0xe0, 0xdf, 0xef, 0x0e, 0xb4, 0xe2, 0xec, 0x10, 0x11, 0xb7, 0xae, 0xea, 0x0b, 0xdf, 0xc5, 0x9d, 0xe3, 0xe0, 0xdf, 0xef, 0x0e, 0xb4, 0xe2, 0x29, - 0x0c, 0x43, 0x02, 0x01, 0x94, 0x05, 0x01, 0x01, + 0x0c, 0x43, 0x02, 0x01, 0x96, 0x05, 0x01, 0x01, 0x01, 0x05, 0x0e, 0x00, 0xb6, 0x01, 0x02, 0x60, - 0x00, 0x01, 0x00, 0xaa, 0x07, 0x00, 0x00, 0x00, - 0x8a, 0x04, 0x2d, 0x01, 0xa6, 0x04, 0x3b, 0x01, - 0xb4, 0x04, 0x42, 0x01, 0x84, 0x05, 0x6a, 0x01, - 0x86, 0x04, 0x2b, 0x01, 0x8c, 0x05, 0x6e, 0x01, - 0xfe, 0x03, 0x27, 0x01, 0xc4, 0x03, 0x01, 0x0c, - 0x90, 0x04, 0x30, 0x01, 0xbe, 0x05, 0x87, 0x01, - 0x01, 0x88, 0x04, 0x2c, 0x01, 0xba, 0x04, 0x45, - 0x01, 0x80, 0x04, 0x28, 0x01, 0xb2, 0x04, 0x41, + 0x00, 0x01, 0x00, 0xac, 0x07, 0x00, 0x00, 0x00, + 0x8c, 0x04, 0x2d, 0x01, 0xa8, 0x04, 0x3b, 0x01, + 0xb6, 0x04, 0x42, 0x01, 0x86, 0x05, 0x6a, 0x01, + 0x88, 0x04, 0x2b, 0x01, 0x8e, 0x05, 0x6e, 0x01, + 0x80, 0x04, 0x27, 0x01, 0xc6, 0x03, 0x01, 0x0c, + 0x92, 0x04, 0x30, 0x01, 0xc0, 0x05, 0x87, 0x01, + 0x01, 0x8a, 0x04, 0x2c, 0x01, 0xbc, 0x04, 0x45, + 0x01, 0x82, 0x04, 0x28, 0x01, 0xb4, 0x04, 0x41, 0x01, 0xdd, 0xea, 0x11, 0xde, 0xd1, 0xef, 0xb5, 0xae, 0xea, 0x05, 0xdf, 0xd1, 0xef, 0x0e, 0x09, 0xe1, 0xed, 0x80, 0x00, 0xe0, 0xd1, 0x47, 0xcd, @@ -1490,14 +1490,14 @@ const uint8_t qjsc_repl[23373] = { 0x00, 0x5e, 0x06, 0x00, 0xef, 0x29, 0x11, 0xbc, 0xfe, 0xae, 0xea, 0x07, 0x5e, 0x05, 0x00, 0x07, 0xef, 0x29, 0x11, 0xbc, 0xfd, 0xae, 0xea, 0x2b, - 0x65, 0x07, 0x00, 0x42, 0x67, 0x01, 0x00, 0x00, - 0x65, 0x07, 0x00, 0x41, 0x68, 0x01, 0x00, 0x00, + 0x65, 0x07, 0x00, 0x42, 0x68, 0x01, 0x00, 0x00, + 0x65, 0x07, 0x00, 0x41, 0x69, 0x01, 0x00, 0x00, 0x07, 0x24, 0x02, 0x00, 0x0e, 0x65, 0x07, 0x00, - 0x42, 0x69, 0x01, 0x00, 0x00, 0x5e, 0x08, 0x00, + 0x42, 0x6a, 0x01, 0x00, 0x00, 0x5e, 0x08, 0x00, 0x07, 0x24, 0x02, 0x00, 0x0e, 0x5e, 0x09, 0x00, 0xee, 0x29, 0x0e, 0x5e, 0x04, 0x00, 0x5f, 0x0a, 0x00, 0xec, 0x20, 0xde, 0xd1, 0xef, 0xb5, 0xae, - 0xea, 0x14, 0xd1, 0x04, 0xcd, 0x01, 0x00, 0x00, + 0xea, 0x14, 0xd1, 0x04, 0xce, 0x01, 0x00, 0x00, 0xa9, 0xea, 0x0b, 0xdf, 0xd1, 0xef, 0x0e, 0xdf, 0x5f, 0x0a, 0x00, 0xec, 0x06, 0x5e, 0x0b, 0x00, 0xee, 0x0e, 0x5e, 0x0c, 0x00, 0xb4, 0xa6, 0xea, @@ -1505,127 +1505,127 @@ const uint8_t qjsc_repl[23373] = { 0x06, 0x00, 0xe9, 0xa8, 0xea, 0x07, 0x5e, 0x06, 0x00, 0xe9, 0xec, 0x04, 0x5e, 0x0c, 0x00, 0x5f, 0x0c, 0x00, 0x5e, 0x0d, 0x00, 0xee, 0x29, 0x0c, - 0x43, 0x02, 0x01, 0x96, 0x05, 0x02, 0x01, 0x02, - 0x05, 0x02, 0x01, 0x70, 0x03, 0xe2, 0x05, 0x00, - 0x01, 0x00, 0xac, 0x07, 0x00, 0x01, 0x00, 0xc2, - 0x06, 0x00, 0x00, 0x00, 0xca, 0x03, 0x0d, 0x01, - 0xb4, 0x02, 0x0b, 0x01, 0x07, 0x02, 0x30, 0xdd, + 0x43, 0x02, 0x01, 0x98, 0x05, 0x02, 0x01, 0x02, + 0x05, 0x02, 0x01, 0x70, 0x03, 0xe4, 0x05, 0x00, + 0x01, 0x00, 0xae, 0x07, 0x00, 0x01, 0x00, 0xc4, + 0x06, 0x00, 0x00, 0x00, 0xcc, 0x03, 0x0d, 0x01, + 0xb6, 0x02, 0x0b, 0x01, 0x07, 0x02, 0x30, 0xdd, 0xd1, 0xef, 0x96, 0xea, 0x0a, 0xd1, 0x42, 0x38, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0xd1, 0xb4, 0xac, 0xea, 0x15, 0xb5, 0xd1, 0x9b, 0xb4, 0xa6, - 0xea, 0x09, 0x04, 0xd7, 0x01, 0x00, 0x00, 0xc9, + 0xea, 0x09, 0x04, 0xd8, 0x01, 0x00, 0x00, 0xc9, 0xec, 0x4c, 0xbe, 0x00, 0xc9, 0xec, 0x47, 0xd2, 0xbc, 0x10, 0xac, 0xea, 0x37, 0xd1, 0xde, 0x42, - 0xc7, 0x01, 0x00, 0x00, 0xd1, 0x24, 0x01, 0x00, + 0xc8, 0x01, 0x00, 0x00, 0xd1, 0x24, 0x01, 0x00, 0xae, 0xea, 0x29, 0xd1, 0xb4, 0xa6, 0xea, 0x0c, - 0xd1, 0x8c, 0xd5, 0x04, 0xd8, 0x01, 0x00, 0x00, - 0xc9, 0xec, 0x03, 0xc0, 0xc9, 0xc5, 0x04, 0xd9, + 0xd1, 0x8c, 0xd5, 0x04, 0xd9, 0x01, 0x00, 0x00, + 0xc9, 0xec, 0x03, 0xc0, 0xc9, 0xc5, 0x04, 0xda, 0x01, 0x00, 0x00, 0xd1, 0x42, 0x38, 0x00, 0x00, 0x00, 0xbc, 0x10, 0x24, 0x01, 0x00, 0x9d, 0x9d, 0xc9, 0xec, 0x0b, 0xd1, 0x42, 0x38, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0xc9, 0xc5, 0x28, 0x0c, - 0x43, 0x02, 0x01, 0x98, 0x05, 0x02, 0x01, 0x02, - 0x05, 0x00, 0x00, 0x40, 0x03, 0xe2, 0x05, 0x00, - 0x01, 0x00, 0xac, 0x07, 0x00, 0x01, 0x00, 0xc2, + 0x43, 0x02, 0x01, 0x9a, 0x05, 0x02, 0x01, 0x02, + 0x05, 0x00, 0x00, 0x40, 0x03, 0xe4, 0x05, 0x00, + 0x01, 0x00, 0xae, 0x07, 0x00, 0x01, 0x00, 0xc4, 0x06, 0x00, 0x00, 0x00, 0xd2, 0xbc, 0x10, 0xac, 0xea, 0x29, 0xd1, 0xb4, 0xa6, 0xea, 0x0c, 0xd1, - 0x8c, 0xd5, 0x04, 0xd8, 0x01, 0x00, 0x00, 0xc9, - 0xec, 0x03, 0xc0, 0xc9, 0xc5, 0x04, 0xd9, 0x01, + 0x8c, 0xd5, 0x04, 0xd9, 0x01, 0x00, 0x00, 0xc9, + 0xec, 0x03, 0xc0, 0xc9, 0xc5, 0x04, 0xda, 0x01, 0x00, 0x00, 0xd1, 0x42, 0x38, 0x00, 0x00, 0x00, 0xbc, 0x10, 0x24, 0x01, 0x00, 0x9d, 0x9d, 0xc9, 0xec, 0x0b, 0xd1, 0x42, 0x38, 0x00, 0x00, 0x00, - 0x24, 0x00, 0x00, 0xc9, 0xc5, 0x04, 0x86, 0x01, + 0x24, 0x00, 0x00, 0xc9, 0xc5, 0x04, 0x87, 0x01, 0x00, 0x00, 0x9d, 0x28, 0x0c, 0x43, 0x02, 0x01, 0x00, 0x04, 0x18, 0x04, 0x06, 0x12, 0x0e, 0xea, - 0x01, 0x1c, 0xb4, 0x07, 0x00, 0x01, 0x00, 0xde, - 0x03, 0x00, 0x01, 0x40, 0xb6, 0x07, 0x00, 0x01, - 0x40, 0xb8, 0x07, 0x00, 0x01, 0x40, 0xba, 0x07, + 0x01, 0x1c, 0xb6, 0x07, 0x00, 0x01, 0x00, 0xe0, + 0x03, 0x00, 0x01, 0x40, 0xb8, 0x07, 0x00, 0x01, + 0x40, 0xba, 0x07, 0x00, 0x01, 0x40, 0xbc, 0x07, 0x00, 0x00, 0x00, 0x86, 0x01, 0x00, 0x01, 0x00, - 0xbc, 0x07, 0x00, 0x02, 0x40, 0xbe, 0x07, 0x00, - 0x03, 0x40, 0xc0, 0x07, 0x00, 0x04, 0x40, 0xc2, - 0x07, 0x00, 0x05, 0x40, 0xc4, 0x07, 0x00, 0x06, - 0x40, 0x6c, 0x00, 0x07, 0x40, 0xc6, 0x07, 0x00, - 0x08, 0x40, 0xc8, 0x07, 0x00, 0x09, 0x40, 0xca, - 0x07, 0x00, 0x0a, 0x40, 0xcc, 0x07, 0x00, 0x0b, - 0x40, 0xce, 0x07, 0x00, 0x0c, 0x40, 0xd0, 0x07, - 0x00, 0x0d, 0x40, 0xd2, 0x07, 0x00, 0x0e, 0x40, - 0xd4, 0x07, 0x00, 0x0f, 0x40, 0xd6, 0x07, 0x00, - 0x10, 0x40, 0xd8, 0x07, 0x00, 0x11, 0x40, 0xda, - 0x07, 0x00, 0x12, 0x40, 0xdc, 0x07, 0x00, 0x13, - 0x40, 0xde, 0x07, 0x00, 0x14, 0x40, 0xe0, 0x07, - 0x00, 0x15, 0x40, 0xe2, 0x07, 0x00, 0x16, 0x40, - 0xe4, 0x07, 0x00, 0x17, 0x40, 0xce, 0x03, 0x0f, - 0x01, 0xb6, 0x02, 0x0c, 0x01, 0xa4, 0x02, 0x00, - 0x01, 0x96, 0x05, 0x73, 0x01, 0xe2, 0x03, 0x19, - 0x01, 0x98, 0x05, 0x74, 0x01, 0xac, 0x02, 0x01, - 0x01, 0xb8, 0x02, 0x07, 0x01, 0xc0, 0x02, 0x08, - 0x01, 0xae, 0x02, 0x03, 0x01, 0xaa, 0x02, 0x02, - 0x01, 0xe0, 0x02, 0x04, 0x01, 0xa6, 0x02, 0x06, - 0x01, 0xca, 0x02, 0x05, 0x01, 0xd2, 0x03, 0x11, - 0x01, 0xd6, 0x03, 0x13, 0x01, 0xb4, 0x02, 0x0b, - 0x01, 0x94, 0x04, 0x32, 0x01, 0x0c, 0x43, 0x02, + 0xbe, 0x07, 0x00, 0x02, 0x40, 0xc0, 0x07, 0x00, + 0x03, 0x40, 0xc2, 0x07, 0x00, 0x04, 0x40, 0xc4, + 0x07, 0x00, 0x05, 0x40, 0xc6, 0x07, 0x00, 0x06, + 0x40, 0x6c, 0x00, 0x07, 0x40, 0xc8, 0x07, 0x00, + 0x08, 0x40, 0xca, 0x07, 0x00, 0x09, 0x40, 0xcc, + 0x07, 0x00, 0x0a, 0x40, 0xce, 0x07, 0x00, 0x0b, + 0x40, 0xd0, 0x07, 0x00, 0x0c, 0x40, 0xd2, 0x07, + 0x00, 0x0d, 0x40, 0xd4, 0x07, 0x00, 0x0e, 0x40, + 0xd6, 0x07, 0x00, 0x0f, 0x40, 0xd8, 0x07, 0x00, + 0x10, 0x40, 0xda, 0x07, 0x00, 0x11, 0x40, 0xdc, + 0x07, 0x00, 0x12, 0x40, 0xde, 0x07, 0x00, 0x13, + 0x40, 0xe0, 0x07, 0x00, 0x14, 0x40, 0xe2, 0x07, + 0x00, 0x15, 0x40, 0xe4, 0x07, 0x00, 0x16, 0x40, + 0xe6, 0x07, 0x00, 0x17, 0x40, 0xd0, 0x03, 0x0f, + 0x01, 0xb8, 0x02, 0x0c, 0x01, 0xa6, 0x02, 0x00, + 0x01, 0x98, 0x05, 0x73, 0x01, 0xe4, 0x03, 0x19, + 0x01, 0x9a, 0x05, 0x74, 0x01, 0xae, 0x02, 0x01, + 0x01, 0xba, 0x02, 0x07, 0x01, 0xc2, 0x02, 0x08, + 0x01, 0xb0, 0x02, 0x03, 0x01, 0xac, 0x02, 0x02, + 0x01, 0xe2, 0x02, 0x04, 0x01, 0xa8, 0x02, 0x06, + 0x01, 0xcc, 0x02, 0x05, 0x01, 0xd4, 0x03, 0x11, + 0x01, 0xd8, 0x03, 0x13, 0x01, 0xb6, 0x02, 0x0b, + 0x01, 0x96, 0x04, 0x32, 0x01, 0x0c, 0x43, 0x02, 0x01, 0x86, 0x01, 0x02, 0x00, 0x02, 0x01, 0x01, - 0x00, 0x0e, 0x02, 0xe6, 0x07, 0x00, 0x01, 0x00, - 0xe8, 0x07, 0x00, 0x01, 0x00, 0xce, 0x03, 0x00, + 0x00, 0x0e, 0x02, 0xe8, 0x07, 0x00, 0x01, 0x00, + 0xea, 0x07, 0x00, 0x01, 0x00, 0xd0, 0x03, 0x00, 0x00, 0xd1, 0xf4, 0xea, 0x03, 0xd2, 0x28, 0xd1, 0xf3, 0xea, 0x03, 0xdd, 0x28, 0xd1, 0x28, 0x0c, - 0x43, 0x02, 0x01, 0xcc, 0x07, 0x01, 0x00, 0x01, - 0x04, 0x01, 0x00, 0x54, 0x01, 0xc2, 0x06, 0x00, - 0x01, 0x00, 0xb6, 0x02, 0x01, 0x00, 0xd1, 0x42, - 0xf5, 0x01, 0x00, 0x00, 0x04, 0xac, 0x01, 0x00, + 0x43, 0x02, 0x01, 0xce, 0x07, 0x01, 0x00, 0x01, + 0x04, 0x01, 0x00, 0x54, 0x01, 0xc4, 0x06, 0x00, + 0x01, 0x00, 0xb8, 0x02, 0x01, 0x00, 0xd1, 0x42, + 0xf6, 0x01, 0x00, 0x00, 0x04, 0xad, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0xea, 0x0b, 0xdd, 0x42, - 0xf6, 0x01, 0x00, 0x00, 0xd1, 0x25, 0x01, 0x00, - 0xdd, 0x42, 0xf6, 0x01, 0x00, 0x00, 0xd1, 0x24, - 0x01, 0x00, 0x42, 0xa4, 0x01, 0x00, 0x00, 0xb5, - 0xb3, 0x24, 0x02, 0x00, 0x42, 0xf7, 0x01, 0x00, - 0x00, 0x04, 0xf8, 0x01, 0x00, 0x00, 0x04, 0xad, + 0xf7, 0x01, 0x00, 0x00, 0xd1, 0x25, 0x01, 0x00, + 0xdd, 0x42, 0xf7, 0x01, 0x00, 0x00, 0xd1, 0x24, + 0x01, 0x00, 0x42, 0xa5, 0x01, 0x00, 0x00, 0xb5, + 0xb3, 0x24, 0x02, 0x00, 0x42, 0xf8, 0x01, 0x00, + 0x00, 0x04, 0xf9, 0x01, 0x00, 0x00, 0x04, 0xae, 0x01, 0x00, 0x00, 0x24, 0x02, 0x00, 0xd5, 0x04, - 0xac, 0x01, 0x00, 0x00, 0x42, 0x5d, 0x00, 0x00, - 0x00, 0xd1, 0x04, 0xac, 0x01, 0x00, 0x00, 0x25, - 0x02, 0x00, 0x0c, 0x43, 0x02, 0x01, 0xce, 0x07, + 0xad, 0x01, 0x00, 0x00, 0x42, 0x5d, 0x00, 0x00, + 0x00, 0xd1, 0x04, 0xad, 0x01, 0x00, 0x00, 0x25, + 0x02, 0x00, 0x0c, 0x43, 0x02, 0x01, 0xd0, 0x07, 0x01, 0x00, 0x01, 0x04, 0x01, 0x00, 0x0d, 0x01, - 0xc2, 0x06, 0x00, 0x01, 0x00, 0xc6, 0x07, 0x08, - 0x01, 0xdd, 0x42, 0x98, 0x01, 0x00, 0x00, 0xc0, + 0xc4, 0x06, 0x00, 0x01, 0x00, 0xc8, 0x07, 0x08, + 0x01, 0xdd, 0x42, 0x99, 0x01, 0x00, 0x00, 0xc0, 0xd1, 0x9d, 0x24, 0x01, 0x00, 0x29, 0x0c, 0x43, - 0x02, 0x01, 0xd0, 0x07, 0x01, 0x00, 0x01, 0x04, - 0x01, 0x00, 0x0c, 0x01, 0xc2, 0x06, 0x00, 0x01, - 0x00, 0xc6, 0x07, 0x08, 0x01, 0xdd, 0xdd, 0xe9, + 0x02, 0x01, 0xd2, 0x07, 0x01, 0x00, 0x01, 0x04, + 0x01, 0x00, 0x0c, 0x01, 0xc4, 0x06, 0x00, 0x01, + 0x00, 0xc8, 0x07, 0x08, 0x01, 0xdd, 0xdd, 0xe9, 0xb5, 0x9e, 0x72, 0x13, 0x47, 0xd1, 0x9d, 0x49, - 0x29, 0x0c, 0x43, 0x02, 0x01, 0xd2, 0x07, 0x01, - 0x00, 0x01, 0x04, 0x01, 0x00, 0x1f, 0x01, 0xf2, - 0x07, 0x00, 0x01, 0x00, 0xa4, 0x02, 0x02, 0x00, + 0x29, 0x0c, 0x43, 0x02, 0x01, 0xd4, 0x07, 0x01, + 0x00, 0x01, 0x04, 0x01, 0x00, 0x1f, 0x01, 0xf4, + 0x07, 0x00, 0x01, 0x00, 0xa6, 0x02, 0x02, 0x00, 0xdd, 0x41, 0x3c, 0x00, 0x00, 0x00, 0x41, 0x38, - 0x00, 0x00, 0x00, 0x42, 0xfa, 0x01, 0x00, 0x00, - 0xd1, 0x24, 0x01, 0x00, 0x42, 0xa4, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x42, 0xfb, 0x01, 0x00, 0x00, + 0xd1, 0x24, 0x01, 0x00, 0x42, 0xa5, 0x01, 0x00, 0x00, 0xbc, 0x08, 0xb3, 0x25, 0x02, 0x00, 0x0c, - 0x43, 0x02, 0x01, 0xd4, 0x07, 0x02, 0x13, 0x02, - 0x09, 0x1a, 0x02, 0xed, 0x0b, 0x15, 0xe2, 0x05, - 0x00, 0x01, 0x00, 0xfc, 0x03, 0x00, 0x01, 0x00, - 0x8c, 0x06, 0x00, 0x00, 0x00, 0xf6, 0x07, 0x00, - 0x01, 0x00, 0xd6, 0x05, 0x00, 0x02, 0x00, 0xf8, + 0x43, 0x02, 0x01, 0xd6, 0x07, 0x02, 0x13, 0x02, + 0x09, 0x1a, 0x02, 0xed, 0x0b, 0x15, 0xe4, 0x05, + 0x00, 0x01, 0x00, 0xfe, 0x03, 0x00, 0x01, 0x00, + 0x8e, 0x06, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x00, + 0x01, 0x00, 0xd8, 0x05, 0x00, 0x02, 0x00, 0xfa, 0x07, 0x00, 0x03, 0x00, 0x60, 0x00, 0x04, 0x00, - 0xfa, 0x07, 0x00, 0x05, 0x00, 0xfc, 0x07, 0x00, - 0x06, 0x00, 0xfe, 0x07, 0x00, 0x07, 0x00, 0x80, - 0x08, 0x00, 0x08, 0x00, 0x82, 0x08, 0x00, 0x09, - 0x00, 0x84, 0x08, 0x00, 0x0a, 0x00, 0x86, 0x08, - 0x00, 0x0b, 0x00, 0x88, 0x08, 0x00, 0x0c, 0x00, - 0x8a, 0x08, 0x00, 0x0d, 0x00, 0x8c, 0x08, 0x00, - 0x0e, 0x00, 0xec, 0x05, 0x00, 0x0f, 0x00, 0xfe, - 0x05, 0x00, 0x10, 0x00, 0x8e, 0x08, 0x00, 0x11, - 0x00, 0x90, 0x08, 0x00, 0x12, 0x00, 0xce, 0x07, - 0x0c, 0x01, 0x96, 0x05, 0x03, 0x00, 0xe2, 0x03, - 0x04, 0x00, 0x98, 0x05, 0x05, 0x00, 0xc2, 0x07, - 0x05, 0x01, 0xcc, 0x07, 0x0b, 0x01, 0xac, 0x02, - 0x06, 0x00, 0xc4, 0x07, 0x06, 0x01, 0x6c, 0x07, - 0x01, 0xc6, 0x07, 0x08, 0x01, 0xd2, 0x07, 0x0e, - 0x01, 0xb8, 0x02, 0x07, 0x00, 0xb6, 0x02, 0x01, - 0x00, 0xc0, 0x02, 0x08, 0x00, 0xae, 0x02, 0x09, - 0x00, 0xaa, 0x02, 0x0a, 0x00, 0xe0, 0x02, 0x0b, - 0x00, 0xa6, 0x02, 0x0c, 0x00, 0xca, 0x02, 0x0d, - 0x00, 0xb6, 0x07, 0x02, 0x03, 0xd4, 0x07, 0x0f, - 0x01, 0xbe, 0x07, 0x03, 0x01, 0xde, 0x03, 0x01, - 0x03, 0xa4, 0x02, 0x02, 0x00, 0xd0, 0x07, 0x0d, - 0x01, 0xc0, 0x07, 0x04, 0x01, 0x07, 0x32, 0x5e, + 0xfc, 0x07, 0x00, 0x05, 0x00, 0xfe, 0x07, 0x00, + 0x06, 0x00, 0x80, 0x08, 0x00, 0x07, 0x00, 0x82, + 0x08, 0x00, 0x08, 0x00, 0x84, 0x08, 0x00, 0x09, + 0x00, 0x86, 0x08, 0x00, 0x0a, 0x00, 0x88, 0x08, + 0x00, 0x0b, 0x00, 0x8a, 0x08, 0x00, 0x0c, 0x00, + 0x8c, 0x08, 0x00, 0x0d, 0x00, 0x8e, 0x08, 0x00, + 0x0e, 0x00, 0xee, 0x05, 0x00, 0x0f, 0x00, 0x80, + 0x06, 0x00, 0x10, 0x00, 0x90, 0x08, 0x00, 0x11, + 0x00, 0x92, 0x08, 0x00, 0x12, 0x00, 0xd0, 0x07, + 0x0c, 0x01, 0x98, 0x05, 0x03, 0x00, 0xe4, 0x03, + 0x04, 0x00, 0x9a, 0x05, 0x05, 0x00, 0xc4, 0x07, + 0x05, 0x01, 0xce, 0x07, 0x0b, 0x01, 0xae, 0x02, + 0x06, 0x00, 0xc6, 0x07, 0x06, 0x01, 0x6c, 0x07, + 0x01, 0xc8, 0x07, 0x08, 0x01, 0xd4, 0x07, 0x0e, + 0x01, 0xba, 0x02, 0x07, 0x00, 0xb8, 0x02, 0x01, + 0x00, 0xc2, 0x02, 0x08, 0x00, 0xb0, 0x02, 0x09, + 0x00, 0xac, 0x02, 0x0a, 0x00, 0xe2, 0x02, 0x0b, + 0x00, 0xa8, 0x02, 0x0c, 0x00, 0xcc, 0x02, 0x0d, + 0x00, 0xb8, 0x07, 0x02, 0x03, 0xd6, 0x07, 0x0f, + 0x01, 0xc0, 0x07, 0x03, 0x01, 0xe0, 0x03, 0x01, + 0x03, 0xa6, 0x02, 0x02, 0x00, 0xd2, 0x07, 0x0d, + 0x01, 0xc2, 0x07, 0x04, 0x01, 0x07, 0x32, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x5f, 0x24, 0x5d, 0x5b, 0x30, 0x2d, 0x39, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x5f, 0x24, 0x5d, 0x2a, @@ -1652,9 +1652,9 @@ const uint8_t qjsc_repl[23373] = { 0x10, 0xec, 0x03, 0xbc, 0x0a, 0xf0, 0xef, 0x0e, 0xed, 0x9b, 0x05, 0x11, 0x04, 0x49, 0x00, 0x00, 0x00, 0xae, 0xea, 0x28, 0xd1, 0xe9, 0x5e, 0x04, - 0x00, 0xa8, 0xea, 0x15, 0xd1, 0x42, 0x85, 0x01, + 0x00, 0xa8, 0xea, 0x15, 0xd1, 0x42, 0x86, 0x01, 0x00, 0x00, 0xb4, 0x5e, 0x04, 0x00, 0x24, 0x02, - 0x00, 0x04, 0x09, 0x02, 0x00, 0x00, 0x9d, 0xd5, + 0x00, 0x04, 0x0a, 0x02, 0x00, 0x00, 0x9d, 0xd5, 0xdd, 0x5e, 0x05, 0x00, 0xd1, 0xef, 0xef, 0x0e, 0xed, 0x6b, 0x05, 0x11, 0x04, 0x4b, 0x00, 0x00, 0x00, 0xae, 0xea, 0x0c, 0xdd, 0x5e, 0x06, 0x00, @@ -1663,26 +1663,26 @@ const uint8_t qjsc_repl[23373] = { 0x11, 0x04, 0x1b, 0x00, 0x00, 0x00, 0xae, 0x69, 0x3c, 0x05, 0x00, 0x00, 0xd1, 0xf3, 0xea, 0x08, 0xdd, 0xd1, 0xef, 0x0e, 0xed, 0x37, 0x05, 0x5e, - 0x07, 0x00, 0x42, 0xab, 0x01, 0x00, 0x00, 0xd1, + 0x07, 0x00, 0x42, 0xac, 0x01, 0x00, 0x00, 0xd1, 0x24, 0x01, 0x00, 0xcd, 0xb4, 0xa9, 0xea, 0x1a, - 0xdd, 0x04, 0x0a, 0x02, 0x00, 0x00, 0x42, 0x5d, - 0x00, 0x00, 0x00, 0xc5, 0x04, 0xaf, 0x01, 0x00, + 0xdd, 0x04, 0x0b, 0x02, 0x00, 0x00, 0x42, 0x5d, + 0x00, 0x00, 0x00, 0xc5, 0x04, 0xb0, 0x01, 0x00, 0x00, 0x24, 0x02, 0x00, 0xef, 0x0e, 0xed, 0x0d, - 0x05, 0x5e, 0x08, 0x00, 0x42, 0xab, 0x01, 0x00, + 0x05, 0x5e, 0x08, 0x00, 0x42, 0xac, 0x01, 0x00, 0x00, 0xd1, 0x24, 0x01, 0x00, 0xcd, 0xb4, 0xa9, - 0xea, 0x2e, 0xdd, 0x04, 0x0a, 0x02, 0x00, 0x00, + 0xea, 0x2e, 0xdd, 0x04, 0x0b, 0x02, 0x00, 0x00, 0x42, 0x5d, 0x00, 0x00, 0x00, 0x5e, 0x07, 0x00, - 0xe9, 0x04, 0xaf, 0x01, 0x00, 0x00, 0x24, 0x02, - 0x00, 0xef, 0x0e, 0x5e, 0x07, 0x00, 0x42, 0x98, + 0xe9, 0x04, 0xb0, 0x01, 0x00, 0x00, 0x24, 0x02, + 0x00, 0xef, 0x0e, 0x5e, 0x07, 0x00, 0x42, 0x99, 0x01, 0x00, 0x00, 0x5e, 0x08, 0x00, 0xc5, 0x47, 0x24, 0x01, 0x00, 0x0e, 0xed, 0xcf, 0x04, 0x5e, 0x09, 0x00, 0xe9, 0xc2, 0x0c, 0x5e, 0x0a, 0x00, 0xd1, 0xef, 0xc2, 0x0d, 0x5e, 0x08, 0x00, 0x42, - 0x98, 0x01, 0x00, 0x00, 0xd1, 0x24, 0x01, 0x00, + 0x99, 0x01, 0x00, 0x00, 0xd1, 0x24, 0x01, 0x00, 0x0e, 0xd1, 0x5e, 0x0b, 0x00, 0xaa, 0xea, 0x28, - 0xdd, 0x04, 0x0b, 0x02, 0x00, 0x00, 0x42, 0x5d, - 0x00, 0x00, 0x00, 0x5e, 0x0c, 0x00, 0x42, 0xf6, - 0x01, 0x00, 0x00, 0xd1, 0x42, 0x0c, 0x02, 0x00, + 0xdd, 0x04, 0x0c, 0x02, 0x00, 0x00, 0x42, 0x5d, + 0x00, 0x00, 0x00, 0x5e, 0x0c, 0x00, 0x42, 0xf7, + 0x01, 0x00, 0x00, 0xd1, 0x42, 0x0d, 0x02, 0x00, 0x00, 0x24, 0x00, 0x00, 0x24, 0x01, 0x00, 0x24, 0x01, 0x00, 0xef, 0x0e, 0xed, 0xad, 0x01, 0xd1, 0x5e, 0x0d, 0x00, 0xaa, 0xea, 0x10, 0xdd, 0xd1, @@ -1691,59 +1691,59 @@ const uint8_t qjsc_repl[23373] = { 0x00, 0xaa, 0x11, 0xeb, 0x10, 0x0e, 0xd1, 0x5e, 0x0f, 0x00, 0xaa, 0x11, 0xeb, 0x07, 0x0e, 0xd1, 0x5e, 0x10, 0x00, 0xaa, 0xea, 0x21, 0xdd, 0x04, - 0xd2, 0x01, 0x00, 0x00, 0x42, 0x5d, 0x00, 0x00, - 0x00, 0xc1, 0x0d, 0x04, 0x0d, 0x02, 0x00, 0x00, - 0xd1, 0x04, 0xaf, 0x01, 0x00, 0x00, 0x24, 0x04, + 0xd3, 0x01, 0x00, 0x00, 0x42, 0x5d, 0x00, 0x00, + 0x00, 0xc1, 0x0d, 0x04, 0x0e, 0x02, 0x00, 0x00, + 0xd1, 0x04, 0xb0, 0x01, 0x00, 0x00, 0x24, 0x04, 0x00, 0xef, 0x0e, 0xed, 0x5e, 0x01, 0xd1, 0x5e, - 0x06, 0x00, 0xaa, 0xea, 0x2c, 0xdd, 0x04, 0xd2, + 0x06, 0x00, 0xaa, 0xea, 0x2c, 0xdd, 0x04, 0xd3, 0x01, 0x00, 0x00, 0x42, 0x5d, 0x00, 0x00, 0x00, - 0xc1, 0x0d, 0x04, 0x0d, 0x02, 0x00, 0x00, 0x5e, - 0x05, 0x00, 0xd1, 0xef, 0x04, 0xaf, 0x01, 0x00, + 0xc1, 0x0d, 0x04, 0x0e, 0x02, 0x00, 0x00, 0x5e, + 0x05, 0x00, 0xd1, 0xef, 0x04, 0xb0, 0x01, 0x00, 0x00, 0x24, 0x04, 0x00, 0xef, 0x0e, 0xd1, 0xe9, 0xc2, 0x0f, 0xb5, 0xc2, 0x08, 0xed, 0x2c, 0x01, - 0x5e, 0x11, 0x00, 0x42, 0x0e, 0x02, 0x00, 0x00, + 0x5e, 0x11, 0x00, 0x42, 0x0f, 0x02, 0x00, 0x00, 0xd1, 0x24, 0x01, 0x00, 0xea, 0x0f, 0xdd, 0x04, - 0xd2, 0x01, 0x00, 0x00, 0xef, 0x0e, 0xb5, 0xc2, - 0x07, 0xed, 0x10, 0x01, 0xc1, 0x0d, 0x42, 0xf5, - 0x01, 0x00, 0x00, 0x04, 0x93, 0x00, 0x00, 0x00, + 0xd3, 0x01, 0x00, 0x00, 0xef, 0x0e, 0xb5, 0xc2, + 0x07, 0xed, 0x10, 0x01, 0xc1, 0x0d, 0x42, 0xf6, + 0x01, 0x00, 0x00, 0x04, 0x94, 0x00, 0x00, 0x00, 0x24, 0x01, 0x00, 0xea, 0x2d, 0xd1, 0x5e, 0x12, 0x00, 0x41, 0x45, 0x00, 0x00, 0x00, 0xaa, 0xea, 0x21, 0xdd, 0xc0, 0x42, 0x5d, 0x00, 0x00, 0x00, - 0xc1, 0x0d, 0x04, 0xc4, 0x01, 0x00, 0x00, 0xd1, - 0xe9, 0x04, 0x0f, 0x02, 0x00, 0x00, 0x24, 0x04, + 0xc1, 0x0d, 0x04, 0xc5, 0x01, 0x00, 0x00, 0xd1, + 0xe9, 0x04, 0x10, 0x02, 0x00, 0x00, 0x24, 0x04, 0x00, 0xef, 0x0e, 0xb5, 0xc2, 0x07, 0xed, 0xd3, 0x00, 0xc1, 0x06, 0x04, 0x1b, 0x00, 0x00, 0x00, 0xae, 0xea, 0x32, 0xd1, 0x41, 0x37, 0x00, 0x00, - 0x00, 0xea, 0x1f, 0xdd, 0x04, 0x10, 0x02, 0x00, + 0x00, 0xea, 0x1f, 0xdd, 0x04, 0x11, 0x02, 0x00, 0x00, 0x42, 0x5d, 0x00, 0x00, 0x00, 0xd1, 0x41, - 0x37, 0x00, 0x00, 0x00, 0x04, 0xaf, 0x01, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x04, 0xb0, 0x01, 0x00, 0x00, 0x24, 0x02, 0x00, 0xef, 0x0e, 0xed, 0xa3, - 0x00, 0xdd, 0x04, 0x11, 0x02, 0x00, 0x00, 0xef, + 0x00, 0xdd, 0x04, 0x12, 0x02, 0x00, 0x00, 0xef, 0x0e, 0xed, 0x98, 0x00, 0xd1, 0x41, 0x3d, 0x00, 0x00, 0x00, 0x11, 0xea, 0x0d, 0x0e, 0xd1, 0x41, 0x3d, 0x00, 0x00, 0x00, 0x41, 0x37, 0x00, 0x00, - 0x00, 0x11, 0xeb, 0x07, 0x0e, 0x04, 0x92, 0x00, - 0x00, 0x00, 0xc2, 0x0e, 0xc1, 0x0d, 0x04, 0x92, + 0x00, 0x11, 0xeb, 0x07, 0x0e, 0x04, 0x93, 0x00, + 0x00, 0x00, 0xc2, 0x0e, 0xc1, 0x0d, 0x04, 0x93, 0x00, 0x00, 0x00, 0xaf, 0xea, 0x1d, 0xdd, 0xc0, 0x42, 0x5d, 0x00, 0x00, 0x00, 0xc1, 0x0e, 0x04, - 0x12, 0x02, 0x00, 0x00, 0xc1, 0x0d, 0x04, 0x13, + 0x13, 0x02, 0x00, 0x00, 0xc1, 0x0d, 0x04, 0x14, 0x02, 0x00, 0x00, 0x24, 0x04, 0x00, 0xef, 0x0e, 0xec, 0x4a, 0xd1, 0x41, 0x45, 0x00, 0x00, 0x00, - 0xf3, 0xea, 0x1a, 0xdd, 0x04, 0xd2, 0x01, 0x00, + 0xf3, 0xea, 0x1a, 0xdd, 0x04, 0xd3, 0x01, 0x00, 0x00, 0x42, 0x5d, 0x00, 0x00, 0x00, 0xc1, 0x0e, - 0x04, 0x14, 0x02, 0x00, 0x00, 0x24, 0x02, 0x00, - 0xef, 0x0e, 0xec, 0x28, 0xc1, 0x0e, 0x04, 0x92, + 0x04, 0x15, 0x02, 0x00, 0x00, 0x24, 0x02, 0x00, + 0xef, 0x0e, 0xec, 0x28, 0xc1, 0x0e, 0x04, 0x93, 0x00, 0x00, 0x00, 0xaf, 0xea, 0x16, 0xdd, 0xc0, 0x42, 0x5d, 0x00, 0x00, 0x00, 0xc1, 0x0e, 0x04, - 0x15, 0x02, 0x00, 0x00, 0x24, 0x02, 0x00, 0xef, - 0x0e, 0xec, 0x09, 0xdd, 0x04, 0x16, 0x02, 0x00, - 0x00, 0xef, 0x0e, 0x04, 0x17, 0x02, 0x00, 0x00, + 0x16, 0x02, 0x00, 0x00, 0x24, 0x02, 0x00, 0xef, + 0x0e, 0xec, 0x09, 0xdd, 0x04, 0x17, 0x02, 0x00, + 0x00, 0xef, 0x0e, 0x04, 0x18, 0x02, 0x00, 0x00, 0xc2, 0x0a, 0x07, 0xc2, 0x04, 0xb4, 0xc9, 0xb4, 0xca, 0xb4, 0xcc, 0xc1, 0x07, 0x69, 0xcb, 0x00, - 0x00, 0x00, 0x04, 0xaf, 0x01, 0x00, 0x00, 0xc2, + 0x00, 0x00, 0x04, 0xb0, 0x01, 0x00, 0x00, 0xc2, 0x0a, 0xd1, 0xe9, 0xc2, 0x0f, 0xd2, 0x5e, 0x13, 0x00, 0xa8, 0xea, 0x12, 0xc1, 0x0f, 0xea, 0x0e, - 0xdd, 0x04, 0x09, 0x02, 0x00, 0x00, 0xef, 0x0e, + 0xdd, 0x04, 0x0a, 0x02, 0x00, 0x00, 0xef, 0x0e, 0xdd, 0xc1, 0x0a, 0xef, 0x29, 0xb4, 0xcb, 0xc7, 0xc1, 0x0f, 0xa6, 0x69, 0x89, 0x00, 0x00, 0x00, 0x93, 0x03, 0xc7, 0xd1, 0xab, 0xea, 0x0e, 0x5e, @@ -1752,21 +1752,21 @@ const uint8_t qjsc_repl[23373] = { 0xb5, 0x9d, 0xc1, 0x0f, 0xa6, 0xea, 0x0d, 0xc7, 0xb5, 0x9d, 0xd1, 0xab, 0x96, 0xea, 0x05, 0x93, 0x02, 0xec, 0xed, 0xc7, 0xc1, 0x10, 0xa8, 0xea, - 0x1e, 0xdd, 0x04, 0x18, 0x02, 0x00, 0x00, 0x42, + 0x1e, 0xdd, 0x04, 0x19, 0x02, 0x00, 0x00, 0x42, 0x5d, 0x00, 0x00, 0x00, 0xc7, 0xc1, 0x10, 0x9e, - 0xb5, 0x9d, 0x04, 0x19, 0x02, 0x00, 0x00, 0x24, + 0xb5, 0x9d, 0x04, 0x1a, 0x02, 0x00, 0x00, 0x24, 0x02, 0x00, 0xef, 0x0e, 0xec, 0x09, 0xdd, 0x04, - 0x1a, 0x02, 0x00, 0x00, 0xef, 0x0e, 0xc8, 0x5e, + 0x1b, 0x02, 0x00, 0x00, 0xef, 0x0e, 0xc8, 0x5e, 0x15, 0x00, 0xa9, 0xea, 0x24, 0xc1, 0x0f, 0xc8, - 0x9e, 0xb9, 0xa8, 0xea, 0x1c, 0xdd, 0x04, 0x1b, + 0x9e, 0xb9, 0xa8, 0xea, 0x1c, 0xdd, 0x04, 0x1c, 0x02, 0x00, 0x00, 0x42, 0x5d, 0x00, 0x00, 0x00, - 0xc1, 0x0f, 0xc8, 0x9e, 0x04, 0x1c, 0x02, 0x00, + 0xc1, 0x0f, 0xc8, 0x9e, 0x04, 0x1d, 0x02, 0x00, 0x00, 0x24, 0x02, 0x00, 0xef, 0x0e, 0xec, 0x06, 0x93, 0x02, 0xed, 0x74, 0xff, 0xb5, 0xc2, 0x08, 0xc7, 0xc1, 0x0f, 0xaf, 0xea, 0x0c, 0xc1, 0x0f, 0xbd, 0xe8, 0x03, 0xa8, 0xea, 0x04, 0xb5, 0xc2, 0x09, 0xc1, 0x09, 0x96, 0xea, 0x24, 0x5e, 0x16, - 0x00, 0xea, 0x0f, 0x5e, 0x17, 0x00, 0x42, 0xb8, + 0x00, 0xea, 0x0f, 0x5e, 0x17, 0x00, 0x42, 0xb9, 0x01, 0x00, 0x00, 0xd1, 0x24, 0x01, 0x00, 0xec, 0x0d, 0x5e, 0x17, 0x00, 0x42, 0x30, 0x00, 0x00, 0x00, 0xd1, 0x24, 0x01, 0x00, 0xc3, 0x04, 0xe9, @@ -1776,10 +1776,10 @@ const uint8_t qjsc_repl[23373] = { 0xc7, 0xc1, 0x0f, 0xa9, 0xeb, 0x05, 0x93, 0x01, 0xec, 0xe4, 0xc6, 0xc5, 0xa6, 0x69, 0x5a, 0x01, 0x00, 0x00, 0xc1, 0x0a, 0x96, 0xea, 0x12, 0x5e, - 0x18, 0x00, 0x04, 0x15, 0x02, 0x00, 0x00, 0xef, - 0x0e, 0x04, 0x17, 0x02, 0x00, 0x00, 0xc2, 0x0a, + 0x18, 0x00, 0x04, 0x16, 0x02, 0x00, 0x00, 0xef, + 0x0e, 0x04, 0x18, 0x02, 0x00, 0x00, 0xc2, 0x0a, 0xd2, 0x5e, 0x13, 0x00, 0xa8, 0xea, 0x13, 0xc6, - 0xc5, 0xa6, 0xea, 0x0e, 0xdd, 0x04, 0x09, 0x02, + 0xc5, 0xa6, 0xea, 0x0e, 0xdd, 0x04, 0x0a, 0x02, 0x00, 0x00, 0xef, 0x0e, 0xdd, 0xc1, 0x0a, 0xef, 0x29, 0xc6, 0xcb, 0xc7, 0xc5, 0xa6, 0x69, 0x21, 0x01, 0x00, 0x00, 0xc1, 0x04, 0xc7, 0x47, 0xc2, @@ -1787,78 +1787,78 @@ const uint8_t qjsc_repl[23373] = { 0x00, 0xd1, 0xc1, 0x05, 0x24, 0x02, 0x00, 0xc3, 0x11, 0x96, 0x6a, 0x00, 0x01, 0x00, 0x00, 0xc1, 0x11, 0x41, 0x40, 0x00, 0x00, 0x00, 0x96, 0xea, - 0x1e, 0xdd, 0x04, 0xd2, 0x01, 0x00, 0x00, 0x42, + 0x1e, 0xdd, 0x04, 0xd3, 0x01, 0x00, 0x00, 0x42, 0x5d, 0x00, 0x00, 0x00, 0x5e, 0x06, 0x00, 0xc1, - 0x05, 0xef, 0x04, 0xaf, 0x01, 0x00, 0x00, 0x24, + 0x05, 0xef, 0x04, 0xb0, 0x01, 0x00, 0x00, 0x24, 0x02, 0x00, 0xef, 0x0e, 0xec, 0x2e, 0xc1, 0x05, 0x8d, 0xc1, 0x05, 0xb4, 0xa1, 0xae, 0x11, 0xeb, - 0x11, 0x0e, 0xc1, 0x05, 0x42, 0xb1, 0x01, 0x00, + 0x11, 0x0e, 0xc1, 0x05, 0x42, 0xb2, 0x01, 0x00, 0x00, 0xbe, 0x00, 0xbe, 0x01, 0x33, 0x24, 0x01, 0x00, 0xea, 0x08, 0xdd, 0xc1, 0x05, 0xef, 0x0e, 0xec, 0x0a, 0xdd, 0x5e, 0x05, 0x00, 0xc1, 0x05, - 0xef, 0xef, 0x0e, 0xdd, 0x04, 0x1d, 0x02, 0x00, + 0xef, 0xef, 0x0e, 0xdd, 0x04, 0x1e, 0x02, 0x00, 0x00, 0xef, 0x0e, 0x04, 0x41, 0x00, 0x00, 0x00, 0xc1, 0x11, 0xab, 0xea, 0x12, 0x5e, 0x14, 0x00, 0xc1, 0x11, 0x41, 0x41, 0x00, 0x00, 0x00, 0xd2, 0xb5, 0x9d, 0xf0, 0x0e, 0xec, 0x5c, 0x26, 0x00, 0x00, 0xc2, 0x12, 0xc1, 0x11, 0x41, 0x42, 0x00, - 0x00, 0x00, 0xea, 0x11, 0xc1, 0x12, 0x42, 0x98, - 0x01, 0x00, 0x00, 0x04, 0x1e, 0x02, 0x00, 0x00, + 0x00, 0x00, 0xea, 0x11, 0xc1, 0x12, 0x42, 0x99, + 0x01, 0x00, 0x00, 0x04, 0x1f, 0x02, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, 0xc1, 0x11, 0x41, 0x43, 0x00, 0x00, 0x00, 0xea, 0x11, 0xc1, 0x12, 0x42, - 0x98, 0x01, 0x00, 0x00, 0x04, 0x1f, 0x02, 0x00, - 0x00, 0x24, 0x01, 0x00, 0x0e, 0xdd, 0x04, 0xd2, + 0x99, 0x01, 0x00, 0x00, 0x04, 0x20, 0x02, 0x00, + 0x00, 0x24, 0x01, 0x00, 0x0e, 0xdd, 0x04, 0xd3, 0x01, 0x00, 0x00, 0x42, 0x5d, 0x00, 0x00, 0x00, 0xc1, 0x12, 0x42, 0x5c, 0x00, 0x00, 0x00, 0x04, - 0xb0, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x04, - 0xaf, 0x01, 0x00, 0x00, 0x24, 0x02, 0x00, 0xef, + 0xb1, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x04, + 0xb0, 0x01, 0x00, 0x00, 0x24, 0x02, 0x00, 0xef, 0x0e, 0x93, 0x03, 0xc8, 0x5e, 0x19, 0x00, 0xa8, 0xea, 0x22, 0xc5, 0xc8, 0x9e, 0xb9, 0xa8, 0xea, - 0x1b, 0xdd, 0x04, 0x1b, 0x02, 0x00, 0x00, 0x42, + 0x1b, 0xdd, 0x04, 0x1c, 0x02, 0x00, 0x00, 0x42, 0x5d, 0x00, 0x00, 0x00, 0xc5, 0xc8, 0x9e, 0x04, - 0x20, 0x02, 0x00, 0x00, 0x24, 0x02, 0x00, 0xef, + 0x21, 0x02, 0x00, 0x00, 0x24, 0x02, 0x00, 0xef, 0x0e, 0xec, 0x06, 0x93, 0x02, 0xed, 0xdd, 0xfe, 0xc1, 0x0a, 0xea, 0x06, 0xdd, 0xc1, 0x0a, 0xef, - 0x0e, 0x5e, 0x08, 0x00, 0x42, 0x21, 0x02, 0x00, + 0x0e, 0x5e, 0x08, 0x00, 0x42, 0x22, 0x02, 0x00, 0x00, 0xd1, 0x24, 0x01, 0x00, 0x0e, 0x5e, 0x07, - 0x00, 0x42, 0xab, 0x01, 0x00, 0x00, 0xd1, 0x24, + 0x00, 0x42, 0xac, 0x01, 0x00, 0x00, 0xd1, 0x24, 0x01, 0x00, 0xcf, 0xb4, 0xa8, 0xea, 0x36, 0x5e, 0x09, 0x00, 0xc1, 0x0c, 0x1b, 0x11, 0xb0, 0xeb, - 0x04, 0x1b, 0x71, 0x1b, 0x1b, 0x04, 0x22, 0x02, + 0x04, 0x1b, 0x71, 0x1b, 0x1b, 0x04, 0x23, 0x02, 0x00, 0x00, 0x42, 0x5d, 0x00, 0x00, 0x00, 0xc7, - 0x04, 0x23, 0x02, 0x00, 0x00, 0x5e, 0x09, 0x00, + 0x04, 0x24, 0x02, 0x00, 0x00, 0x5e, 0x09, 0x00, 0xc1, 0x0c, 0x47, 0x24, 0x03, 0x00, 0x1b, 0x71, 0x1b, 0x49, 0xec, 0x09, 0xdd, 0x5e, 0x06, 0x00, 0xd1, 0xef, 0xef, 0x0e, 0x29, 0x0c, 0x43, 0x02, - 0x01, 0xd6, 0x07, 0x02, 0x01, 0x02, 0x03, 0x05, - 0x00, 0x3d, 0x03, 0xc2, 0x06, 0x00, 0x01, 0x00, - 0x84, 0x06, 0x00, 0x01, 0x00, 0xc8, 0x08, 0x00, - 0x00, 0x00, 0xb8, 0x07, 0x03, 0x03, 0xca, 0x07, - 0x0a, 0x01, 0xc8, 0x07, 0x09, 0x01, 0xd2, 0x03, - 0x0e, 0x00, 0xd6, 0x03, 0x0f, 0x00, 0xdd, 0xea, + 0x01, 0xd8, 0x07, 0x02, 0x01, 0x02, 0x03, 0x05, + 0x00, 0x3d, 0x03, 0xc4, 0x06, 0x00, 0x01, 0x00, + 0x86, 0x06, 0x00, 0x01, 0x00, 0xca, 0x08, 0x00, + 0x00, 0x00, 0xba, 0x07, 0x03, 0x03, 0xcc, 0x07, + 0x0a, 0x01, 0xca, 0x07, 0x09, 0x01, 0xd4, 0x03, + 0x0e, 0x00, 0xd8, 0x03, 0x0f, 0x00, 0xdd, 0xea, 0x30, 0xde, 0xd2, 0xaf, 0xea, 0x13, 0xdf, 0x42, - 0x98, 0x01, 0x00, 0x00, 0xe0, 0x41, 0x84, 0x01, + 0x99, 0x01, 0x00, 0x00, 0xe0, 0x41, 0x85, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, 0xd2, 0xe2, 0xd2, 0xea, 0x16, 0xe0, 0x5e, 0x04, 0x00, 0xd2, - 0x47, 0x47, 0xcd, 0xea, 0x0c, 0xdf, 0x42, 0x98, + 0x47, 0x47, 0xcd, 0xea, 0x0c, 0xdf, 0x42, 0x99, 0x01, 0x00, 0x00, 0xc5, 0x24, 0x01, 0x00, 0x0e, - 0xdf, 0x42, 0x98, 0x01, 0x00, 0x00, 0xd1, 0x24, - 0x01, 0x00, 0x29, 0x0c, 0x43, 0x02, 0x01, 0xd8, + 0xdf, 0x42, 0x99, 0x01, 0x00, 0x00, 0xd1, 0x24, + 0x01, 0x00, 0x29, 0x0c, 0x43, 0x02, 0x01, 0xda, 0x07, 0x01, 0x00, 0x01, 0x03, 0x01, 0x02, 0x2c, - 0x01, 0xc2, 0x06, 0x00, 0x01, 0x00, 0xd6, 0x07, + 0x01, 0xc4, 0x06, 0x00, 0x01, 0x00, 0xd8, 0x07, 0x10, 0x01, 0x07, 0x02, 0x30, 0x07, 0x02, 0x39, 0xd1, 0xb4, 0x47, 0xbe, 0x00, 0xa9, 0xea, 0x14, 0xd1, 0xb4, 0x47, 0xbe, 0x01, 0xa7, 0xea, 0x0c, 0xdd, 0xd1, 0x04, 0x47, 0x00, 0x00, 0x00, 0xf0, - 0x0e, 0xec, 0x0a, 0xdd, 0xd1, 0x04, 0x25, 0x02, - 0x00, 0x00, 0xf0, 0x0e, 0xdd, 0x04, 0x0d, 0x02, + 0x0e, 0xec, 0x0a, 0xdd, 0xd1, 0x04, 0x26, 0x02, + 0x00, 0x00, 0xf0, 0x0e, 0xdd, 0x04, 0x0e, 0x02, 0x00, 0x00, 0xef, 0x29, 0x0c, 0x43, 0x02, 0x01, - 0xda, 0x07, 0x01, 0x04, 0x01, 0x05, 0x03, 0x14, - 0xa1, 0x04, 0x05, 0xc2, 0x06, 0x00, 0x01, 0x00, - 0x84, 0x06, 0x00, 0x00, 0x00, 0xcc, 0x08, 0x00, - 0x01, 0x00, 0xec, 0x05, 0x00, 0x02, 0x00, 0x86, - 0x07, 0x00, 0x03, 0x00, 0xb8, 0x07, 0x03, 0x03, - 0xd6, 0x07, 0x10, 0x01, 0xdc, 0x07, 0x13, 0x01, + 0xdc, 0x07, 0x01, 0x04, 0x01, 0x05, 0x03, 0x14, + 0xa1, 0x04, 0x05, 0xc4, 0x06, 0x00, 0x01, 0x00, + 0x86, 0x06, 0x00, 0x00, 0x00, 0xce, 0x08, 0x00, + 0x01, 0x00, 0xee, 0x05, 0x00, 0x02, 0x00, 0x88, + 0x07, 0x00, 0x03, 0x00, 0xba, 0x07, 0x03, 0x03, + 0xd8, 0x07, 0x10, 0x01, 0xde, 0x07, 0x13, 0x01, 0x07, 0x20, 0x5e, 0x22, 0x28, 0x5b, 0x5e, 0x5c, 0x5c, 0x22, 0x5d, 0x7c, 0x5c, 0x5c, 0x2e, 0x29, 0x2a, 0x22, 0x07, 0x98, 0x01, 0x00, 0x00, 0x02, @@ -1939,35 +1939,35 @@ const uint8_t qjsc_repl[23373] = { 0x00, 0x30, 0x00, 0x39, 0x00, 0x0b, 0x0d, 0x00, 0x0b, 0xdd, 0x96, 0xea, 0x05, 0xde, 0xd1, 0xef, 0x29, 0xd1, 0xe9, 0xb4, 0xa8, 0x69, 0x13, 0x02, - 0x00, 0x00, 0x04, 0x84, 0x01, 0x00, 0x00, 0xc9, + 0x00, 0x00, 0x04, 0x85, 0x01, 0x00, 0x00, 0xc9, 0xd1, 0xca, 0xb4, 0xcb, 0x07, 0xcc, 0xd1, 0xb4, - 0x47, 0x11, 0x04, 0xad, 0x01, 0x00, 0x00, 0xae, + 0x47, 0x11, 0x04, 0xae, 0x01, 0x00, 0x00, 0xae, 0xea, 0x19, 0x04, 0x49, 0x00, 0x00, 0x00, 0xc9, - 0xd1, 0x42, 0xb1, 0x01, 0x00, 0x00, 0xbe, 0x00, + 0xd1, 0x42, 0xb2, 0x01, 0x00, 0x00, 0xbe, 0x00, 0xbe, 0x01, 0x33, 0x24, 0x01, 0x00, 0xcc, 0xed, - 0xb3, 0x01, 0x11, 0x04, 0xac, 0x01, 0x00, 0x00, + 0xb3, 0x01, 0x11, 0x04, 0xad, 0x01, 0x00, 0x00, 0xae, 0xea, 0x19, 0x04, 0x49, 0x00, 0x00, 0x00, - 0xc9, 0xd1, 0x42, 0xb1, 0x01, 0x00, 0x00, 0xbe, + 0xc9, 0xd1, 0x42, 0xb2, 0x01, 0x00, 0x00, 0xbe, 0x02, 0xbe, 0x03, 0x33, 0x24, 0x01, 0x00, 0xcc, - 0xed, 0x92, 0x01, 0x11, 0x04, 0xb0, 0x01, 0x00, - 0x00, 0xae, 0xea, 0x0a, 0x04, 0x27, 0x02, 0x00, - 0x00, 0xc9, 0xed, 0x80, 0x01, 0x11, 0x04, 0x18, + 0xed, 0x92, 0x01, 0x11, 0x04, 0xb1, 0x01, 0x00, + 0x00, 0xae, 0xea, 0x0a, 0x04, 0x28, 0x02, 0x00, + 0x00, 0xc9, 0xed, 0x80, 0x01, 0x11, 0x04, 0x19, 0x02, 0x00, 0x00, 0xae, 0xea, 0x1e, 0xd1, 0x42, - 0xb1, 0x01, 0x00, 0x00, 0xbe, 0x04, 0xbe, 0x05, + 0xb2, 0x01, 0x00, 0x00, 0xbe, 0x04, 0xbe, 0x05, 0x33, 0x24, 0x01, 0x00, 0xd0, 0x69, 0x65, 0x01, - 0x00, 0x00, 0x04, 0x28, 0x02, 0x00, 0x00, 0xc9, - 0xed, 0x5a, 0x01, 0x11, 0x04, 0xd2, 0x01, 0x00, - 0x00, 0xae, 0xea, 0x1b, 0xd1, 0x42, 0xb1, 0x01, + 0x00, 0x00, 0x04, 0x29, 0x02, 0x00, 0x00, 0xc9, + 0xed, 0x5a, 0x01, 0x11, 0x04, 0xd3, 0x01, 0x00, + 0x00, 0xae, 0xea, 0x1b, 0xd1, 0x42, 0xb2, 0x01, 0x00, 0x00, 0xbe, 0x06, 0xbe, 0x07, 0x33, 0x24, - 0x01, 0x00, 0xd0, 0xea, 0x2e, 0x04, 0x28, 0x02, + 0x01, 0x00, 0xd0, 0xea, 0x2e, 0x04, 0x29, 0x02, 0x00, 0x00, 0xc9, 0xed, 0x37, 0x01, 0x11, 0x04, - 0xaf, 0x01, 0x00, 0x00, 0xae, 0xeb, 0x1c, 0x11, - 0x04, 0x17, 0x02, 0x00, 0x00, 0xae, 0xeb, 0x13, - 0x11, 0x04, 0x29, 0x02, 0x00, 0x00, 0xae, 0xeb, - 0x0a, 0x11, 0x04, 0xcd, 0x01, 0x00, 0x00, 0xae, - 0xea, 0x0c, 0x04, 0x2a, 0x02, 0x00, 0x00, 0xc9, - 0xb5, 0xcb, 0xed, 0x08, 0x01, 0x11, 0x04, 0xa9, - 0x01, 0x00, 0x00, 0xae, 0xea, 0x0a, 0x04, 0x28, + 0xb0, 0x01, 0x00, 0x00, 0xae, 0xeb, 0x1c, 0x11, + 0x04, 0x18, 0x02, 0x00, 0x00, 0xae, 0xeb, 0x13, + 0x11, 0x04, 0x2a, 0x02, 0x00, 0x00, 0xae, 0xeb, + 0x0a, 0x11, 0x04, 0xce, 0x01, 0x00, 0x00, 0xae, + 0xea, 0x0c, 0x04, 0x2b, 0x02, 0x00, 0x00, 0xc9, + 0xb5, 0xcb, 0xed, 0x08, 0x01, 0x11, 0x04, 0xaa, + 0x01, 0x00, 0x00, 0xae, 0xea, 0x0a, 0x04, 0x29, 0x02, 0x00, 0x00, 0xc9, 0xed, 0xf6, 0x00, 0x11, 0xbe, 0x08, 0xae, 0xeb, 0x37, 0x11, 0xbe, 0x09, 0xae, 0xeb, 0x31, 0x11, 0xbe, 0x0a, 0xae, 0xeb, @@ -1977,21 +1977,21 @@ const uint8_t qjsc_repl[23373] = { 0x13, 0x11, 0xbe, 0x0f, 0xae, 0xeb, 0x0d, 0x11, 0xbe, 0x10, 0xae, 0xeb, 0x07, 0x11, 0xbe, 0x11, 0xae, 0xea, 0x19, 0x04, 0x47, 0x00, 0x00, 0x00, - 0xc9, 0xd1, 0x42, 0xb1, 0x01, 0x00, 0x00, 0xbe, + 0xc9, 0xd1, 0x42, 0xb2, 0x01, 0x00, 0x00, 0xbe, 0x12, 0xbe, 0x13, 0x33, 0x24, 0x01, 0x00, 0xcc, - 0xed, 0xa2, 0x00, 0x11, 0x04, 0xd8, 0x01, 0x00, + 0xed, 0xa2, 0x00, 0x11, 0x04, 0xd9, 0x01, 0x00, 0x00, 0xae, 0xea, 0x06, 0xb5, 0xcb, 0xed, 0x94, 0x00, 0xdf, 0xd1, 0xef, 0xea, 0x06, 0xd1, 0xe9, - 0xb5, 0x9e, 0xcb, 0xd1, 0x42, 0xb9, 0x01, 0x00, - 0x00, 0x04, 0x9c, 0x00, 0x00, 0x00, 0x24, 0x01, - 0x00, 0xea, 0x09, 0x04, 0x2b, 0x02, 0x00, 0x00, - 0xc9, 0xec, 0x71, 0xd1, 0x42, 0xb9, 0x01, 0x00, - 0x00, 0x04, 0x98, 0x00, 0x00, 0x00, 0x24, 0x01, + 0xb5, 0x9e, 0xcb, 0xd1, 0x42, 0xba, 0x01, 0x00, + 0x00, 0x04, 0x9d, 0x00, 0x00, 0x00, 0x24, 0x01, + 0x00, 0xea, 0x09, 0x04, 0x2c, 0x02, 0x00, 0x00, + 0xc9, 0xec, 0x71, 0xd1, 0x42, 0xba, 0x01, 0x00, + 0x00, 0x04, 0x99, 0x00, 0x00, 0x00, 0x24, 0x01, 0x00, 0xea, 0x09, 0x04, 0x4b, 0x00, 0x00, 0x00, - 0xc9, 0xec, 0x59, 0xd1, 0x04, 0xe7, 0x00, 0x00, + 0xc9, 0xec, 0x59, 0xd1, 0x04, 0xe8, 0x00, 0x00, 0x00, 0xae, 0x11, 0xeb, 0x09, 0x0e, 0xd1, 0x04, - 0x2c, 0x02, 0x00, 0x00, 0xae, 0xea, 0x09, 0x04, - 0x2d, 0x02, 0x00, 0x00, 0xc9, 0xec, 0x3d, 0xd1, + 0x2d, 0x02, 0x00, 0x00, 0xae, 0xea, 0x09, 0x04, + 0x2e, 0x02, 0x00, 0x00, 0xc9, 0xec, 0x3d, 0xd1, 0x04, 0x03, 0x00, 0x00, 0x00, 0xae, 0x11, 0xeb, 0x09, 0x0e, 0xd1, 0x04, 0x02, 0x00, 0x00, 0x00, 0xae, 0xea, 0x09, 0x04, 0x48, 0x00, 0x00, 0x00, @@ -2001,119 +2001,119 @@ const uint8_t qjsc_repl[23373] = { 0x00, 0x00, 0xae, 0xea, 0x07, 0x04, 0x46, 0x00, 0x00, 0x00, 0xc9, 0x0e, 0xc8, 0xea, 0x06, 0xc8, 0xb4, 0x47, 0xe9, 0xcb, 0xc7, 0xb4, 0xa8, 0xea, - 0x0d, 0xd1, 0x42, 0xa4, 0x01, 0x00, 0x00, 0xb4, + 0x0d, 0xd1, 0x42, 0xa5, 0x01, 0x00, 0x00, 0xb4, 0xc7, 0x24, 0x02, 0x00, 0xca, 0xde, 0xc6, 0xc5, - 0xf0, 0x0e, 0xd1, 0x42, 0xa4, 0x01, 0x00, 0x00, + 0xf0, 0x0e, 0xd1, 0x42, 0xa5, 0x01, 0x00, 0x00, 0xc6, 0xe9, 0x24, 0x01, 0x00, 0xd5, 0xed, 0xea, - 0xfd, 0x29, 0x0c, 0x43, 0x02, 0x01, 0xdc, 0x07, + 0xfd, 0x29, 0x0c, 0x43, 0x02, 0x01, 0xde, 0x07, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, 0x19, 0x02, - 0xc2, 0x06, 0x00, 0x01, 0x00, 0xdc, 0x05, 0x00, + 0xc4, 0x06, 0x00, 0x01, 0x00, 0xde, 0x05, 0x00, 0x00, 0x00, 0xd1, 0xd1, 0xe9, 0xb5, 0x9e, 0x47, - 0xcd, 0x04, 0xd2, 0x01, 0x00, 0x00, 0xae, 0x11, - 0xeb, 0x09, 0x0e, 0xc5, 0x04, 0x16, 0x02, 0x00, - 0x00, 0xae, 0x28, 0x0c, 0x43, 0x02, 0x01, 0xde, + 0xcd, 0x04, 0xd3, 0x01, 0x00, 0x00, 0xae, 0x11, + 0xeb, 0x09, 0x0e, 0xc5, 0x04, 0x17, 0x02, 0x00, + 0x00, 0xae, 0x28, 0x0c, 0x43, 0x02, 0x01, 0xe0, 0x07, 0x01, 0x04, 0x01, 0x08, 0x03, 0x00, 0x7c, - 0x05, 0xd6, 0x05, 0x00, 0x01, 0x00, 0xdc, 0x08, - 0x00, 0x00, 0x00, 0xde, 0x08, 0x00, 0x01, 0x00, - 0xe0, 0x08, 0x00, 0x02, 0x00, 0xc2, 0x06, 0x00, - 0x03, 0x00, 0xc6, 0x07, 0x08, 0x01, 0xdc, 0x07, - 0x13, 0x01, 0xde, 0x07, 0x14, 0x01, 0xdd, 0xd1, + 0x05, 0xd8, 0x05, 0x00, 0x01, 0x00, 0xde, 0x08, + 0x00, 0x00, 0x00, 0xe0, 0x08, 0x00, 0x01, 0x00, + 0xe2, 0x08, 0x00, 0x02, 0x00, 0xc4, 0x06, 0x00, + 0x03, 0x00, 0xc8, 0x07, 0x08, 0x01, 0xde, 0x07, + 0x13, 0x01, 0xe0, 0x07, 0x14, 0x01, 0xdd, 0xd1, 0x47, 0xe9, 0xc9, 0xdd, 0xd1, 0xb5, 0x9d, 0x47, - 0x04, 0x1d, 0x02, 0x00, 0x00, 0xae, 0xea, 0x0e, + 0x04, 0x1e, 0x02, 0x00, 0x00, 0xae, 0xea, 0x0e, 0xd1, 0xb6, 0x9d, 0xd5, 0xc5, 0xb6, 0xdd, 0xd1, 0x47, 0xe9, 0x9d, 0x9d, 0xc9, 0xc5, 0xca, 0xde, 0xdd, 0xd1, 0x47, 0xef, 0xea, 0x4f, 0xb5, 0xcb, 0xd1, 0x8f, 0xd9, 0xdd, 0xe9, 0xa6, 0xea, 0x45, 0xc7, 0x94, 0x01, 0xdd, 0xd1, 0x47, 0xd0, 0x04, - 0xaf, 0x01, 0x00, 0x00, 0xae, 0x11, 0xeb, 0x09, - 0x0e, 0xc8, 0x04, 0x17, 0x02, 0x00, 0x00, 0xae, - 0xeb, 0x2b, 0xec, 0x1c, 0x11, 0x7e, 0x7a, 0x6b, + 0xb0, 0x01, 0x00, 0x00, 0xae, 0x11, 0xeb, 0x09, + 0x0e, 0xc8, 0x04, 0x18, 0x02, 0x00, 0x00, 0xae, + 0xeb, 0x2b, 0xec, 0x1c, 0x11, 0x7e, 0x7a, 0x6c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x81, 0x02, 0x0e, - 0x3d, 0x79, 0x2e, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x3d, 0x79, 0x2f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x81, 0x02, 0x0e, 0x3d, 0x84, 0xec, 0x06, 0xdf, 0xd1, 0xef, 0xec, 0xe1, 0x0e, 0xc5, 0x94, 0x01, 0xb6, 0xcb, 0xec, 0xb5, 0xd1, 0xc6, 0x26, 0x02, - 0x00, 0x28, 0x0c, 0x43, 0x02, 0x01, 0xe0, 0x07, + 0x00, 0x28, 0x0c, 0x43, 0x02, 0x01, 0xe2, 0x07, 0x02, 0x02, 0x02, 0x03, 0x05, 0x00, 0x67, 0x04, - 0xd6, 0x05, 0x00, 0x01, 0x00, 0xe2, 0x08, 0x00, - 0x01, 0x00, 0x86, 0x08, 0x00, 0x00, 0x00, 0xc2, - 0x06, 0x00, 0x01, 0x00, 0xc6, 0x07, 0x08, 0x01, - 0xd6, 0x07, 0x10, 0x01, 0xd8, 0x07, 0x11, 0x01, - 0xda, 0x07, 0x12, 0x01, 0xdc, 0x07, 0x13, 0x01, + 0xd8, 0x05, 0x00, 0x01, 0x00, 0xe4, 0x08, 0x00, + 0x01, 0x00, 0x88, 0x08, 0x00, 0x00, 0x00, 0xc4, + 0x06, 0x00, 0x01, 0x00, 0xc8, 0x07, 0x08, 0x01, + 0xd8, 0x07, 0x10, 0x01, 0xda, 0x07, 0x11, 0x01, + 0xdc, 0x07, 0x12, 0x01, 0xde, 0x07, 0x13, 0x01, 0xc0, 0xc9, 0xd1, 0xd2, 0xa7, 0xea, 0x60, 0xdd, - 0xd1, 0x91, 0xd5, 0x47, 0xce, 0x04, 0xaf, 0x01, + 0xd1, 0x91, 0xd5, 0x47, 0xce, 0x04, 0xb0, 0x01, 0x00, 0x00, 0xae, 0x11, 0xeb, 0x09, 0x0e, 0xc6, - 0x04, 0x17, 0x02, 0x00, 0x00, 0xae, 0xea, 0x11, + 0x04, 0x18, 0x02, 0x00, 0x00, 0xae, 0xea, 0x11, 0xc5, 0xe9, 0xb5, 0xa8, 0xea, 0x27, 0xde, 0x04, - 0xcd, 0x01, 0x00, 0x00, 0xef, 0x0e, 0xec, 0x1d, + 0xce, 0x01, 0x00, 0x00, 0xef, 0x0e, 0xec, 0x1d, 0xde, 0xc5, 0xef, 0x0e, 0xdd, 0xd1, 0x47, 0x04, - 0x1d, 0x02, 0x00, 0x00, 0xae, 0xea, 0x0e, 0xdf, + 0x1e, 0x02, 0x00, 0x00, 0xae, 0xea, 0x0e, 0xdf, 0xc6, 0xef, 0x0e, 0xd1, 0x8f, 0xd5, 0xdd, 0xd1, 0x91, 0xd5, 0x47, 0xca, 0xe0, 0xc6, 0xef, 0x0e, 0x5e, 0x04, 0x00, 0xc6, 0xef, 0xea, 0x08, 0x04, - 0xcd, 0x01, 0x00, 0x00, 0xec, 0x06, 0x04, 0x32, + 0xce, 0x01, 0x00, 0x00, 0xec, 0x06, 0x04, 0x33, 0x02, 0x00, 0x00, 0xc9, 0xec, 0x9d, 0x29, 0x0c, - 0x43, 0x02, 0x01, 0xe2, 0x07, 0x02, 0x00, 0x02, - 0x04, 0x01, 0x00, 0x1a, 0x02, 0xc2, 0x06, 0x00, - 0x01, 0x00, 0x94, 0x07, 0x00, 0x01, 0x00, 0xd6, + 0x43, 0x02, 0x01, 0xe4, 0x07, 0x02, 0x00, 0x02, + 0x04, 0x01, 0x00, 0x1a, 0x02, 0xc4, 0x06, 0x00, + 0x01, 0x00, 0x96, 0x07, 0x00, 0x01, 0x00, 0xd8, 0x07, 0x10, 0x01, 0xd2, 0xb4, 0xa8, 0xea, 0x12, - 0xd1, 0x04, 0xcd, 0x01, 0x00, 0x00, 0x42, 0x33, + 0xd1, 0x04, 0xce, 0x01, 0x00, 0x00, 0x42, 0x34, 0x02, 0x00, 0x00, 0xd2, 0x24, 0x01, 0x00, 0x9d, 0xd5, 0xdd, 0xd1, 0xef, 0x29, 0x0c, 0x43, 0x02, - 0x01, 0xe4, 0x07, 0x02, 0x0c, 0x02, 0x08, 0x0b, - 0x00, 0x8f, 0x05, 0x0e, 0xe8, 0x08, 0x00, 0x01, - 0x00, 0xf6, 0x01, 0x00, 0x01, 0x00, 0xea, 0x08, - 0x00, 0x00, 0x00, 0xe2, 0x08, 0x00, 0x01, 0x00, - 0xde, 0x08, 0x00, 0x02, 0x00, 0x86, 0x08, 0x00, - 0x03, 0x00, 0xec, 0x08, 0x00, 0x04, 0x00, 0xd6, - 0x05, 0x00, 0x05, 0x00, 0xdc, 0x08, 0x00, 0x06, - 0x00, 0xf8, 0x07, 0x00, 0x07, 0x00, 0xfe, 0x06, - 0x00, 0x08, 0x00, 0xee, 0x08, 0x00, 0x09, 0x00, - 0xc4, 0x05, 0x00, 0x0a, 0x00, 0xf0, 0x08, 0x00, - 0x0b, 0x00, 0xbc, 0x07, 0x02, 0x01, 0xde, 0x07, - 0x14, 0x01, 0xe0, 0x07, 0x15, 0x01, 0xc6, 0x07, - 0x08, 0x01, 0xd8, 0x07, 0x11, 0x01, 0xda, 0x07, - 0x12, 0x01, 0xdc, 0x07, 0x13, 0x01, 0xb4, 0x02, - 0x10, 0x00, 0xd6, 0x07, 0x10, 0x01, 0xe2, 0x07, - 0x16, 0x01, 0xe4, 0x07, 0x17, 0x01, 0xdd, 0xd1, + 0x01, 0xe6, 0x07, 0x02, 0x0c, 0x02, 0x08, 0x0b, + 0x00, 0x8f, 0x05, 0x0e, 0xea, 0x08, 0x00, 0x01, + 0x00, 0xf6, 0x01, 0x00, 0x01, 0x00, 0xec, 0x08, + 0x00, 0x00, 0x00, 0xe4, 0x08, 0x00, 0x01, 0x00, + 0xe0, 0x08, 0x00, 0x02, 0x00, 0x88, 0x08, 0x00, + 0x03, 0x00, 0xee, 0x08, 0x00, 0x04, 0x00, 0xd8, + 0x05, 0x00, 0x05, 0x00, 0xde, 0x08, 0x00, 0x06, + 0x00, 0xfa, 0x07, 0x00, 0x07, 0x00, 0x80, 0x07, + 0x00, 0x08, 0x00, 0xf0, 0x08, 0x00, 0x09, 0x00, + 0xc6, 0x05, 0x00, 0x0a, 0x00, 0xf2, 0x08, 0x00, + 0x0b, 0x00, 0xbe, 0x07, 0x02, 0x01, 0xe0, 0x07, + 0x14, 0x01, 0xe2, 0x07, 0x15, 0x01, 0xc8, 0x07, + 0x08, 0x01, 0xda, 0x07, 0x11, 0x01, 0xdc, 0x07, + 0x12, 0x01, 0xde, 0x07, 0x13, 0x01, 0xb6, 0x02, + 0x10, 0x00, 0xd8, 0x07, 0x10, 0x01, 0xe4, 0x07, + 0x16, 0x01, 0xe6, 0x07, 0x17, 0x01, 0xdd, 0xd1, 0x9e, 0xb6, 0x9e, 0xc9, 0x06, 0x11, 0xf2, 0xeb, 0x0d, 0x7e, 0x81, 0x00, 0x0e, 0xca, 0x81, 0x00, 0x0e, 0xcb, 0x84, 0xec, 0x07, 0x0e, 0xde, 0xd2, 0xef, 0xec, 0xef, 0xc7, 0xc5, 0xa7, 0xea, 0x0c, 0xdf, 0xd2, 0xc6, 0xf0, 0x0e, 0xc6, 0xc7, 0x26, 0x02, 0x00, 0x28, 0xe0, 0xd2, 0xb5, 0x9d, 0x47, - 0x04, 0x1d, 0x02, 0x00, 0x00, 0xae, 0xea, 0x0d, + 0x04, 0x1e, 0x02, 0x00, 0x00, 0xae, 0xea, 0x0d, 0x5e, 0x04, 0x00, 0xe0, 0xd2, 0x47, 0xef, 0x0e, 0xd2, 0xb6, 0x9d, 0xd6, 0x5e, 0x05, 0x00, 0xe0, 0xd2, 0x47, 0xef, 0x0e, 0x5e, 0x06, 0x00, 0xe0, 0xd2, 0x47, 0xef, 0x96, 0xea, 0x07, 0xd2, 0xc7, 0x26, 0x02, 0x00, 0x28, 0xd1, 0xb6, 0x9d, 0xd5, 0xc5, 0xb6, 0x9e, 0xc9, 0xc0, 0xcc, 0xd2, 0xb5, - 0x9d, 0xc2, 0x04, 0xe0, 0xd2, 0x47, 0x42, 0x39, - 0x02, 0x00, 0x00, 0x04, 0xd2, 0x01, 0x00, 0x00, + 0x9d, 0xc2, 0x04, 0xe0, 0xd2, 0x47, 0x42, 0x3a, + 0x02, 0x00, 0x00, 0x04, 0xd3, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x69, 0xa9, 0x01, 0x00, 0x00, 0xb4, 0xc2, 0x07, 0x26, 0x00, 0x00, 0xc2, 0x0a, 0xc1, 0x04, 0xc2, 0x05, 0xc1, 0x05, 0xc6, 0xa6, 0xea, 0x5d, 0xe0, 0xc1, 0x05, 0x47, 0xb4, 0x47, - 0x04, 0xa9, 0x01, 0x00, 0x00, 0xae, 0x11, 0xeb, + 0x04, 0xaa, 0x01, 0x00, 0x00, 0xae, 0x11, 0xeb, 0x0e, 0x0e, 0xe0, 0xc1, 0x05, 0xb5, 0x9d, 0x47, - 0x04, 0x1d, 0x02, 0x00, 0x00, 0xae, 0xeb, 0x3f, - 0xec, 0x1c, 0x11, 0x7e, 0x79, 0x6b, 0x01, 0x00, + 0x04, 0x1e, 0x02, 0x00, 0x00, 0xae, 0xeb, 0x3f, + 0xec, 0x1c, 0x11, 0x7e, 0x79, 0x6c, 0x01, 0x00, 0x00, 0x05, 0x00, 0x81, 0x02, 0x0e, 0x3d, 0x79, - 0x2e, 0x02, 0x00, 0x00, 0x06, 0x00, 0x81, 0x02, + 0x2f, 0x02, 0x00, 0x00, 0x06, 0x00, 0x81, 0x02, 0x0e, 0x3d, 0x84, 0xec, 0x07, 0xde, 0xc1, 0x05, 0xef, 0xec, 0xe0, 0x0e, 0xc1, 0x0a, 0xc1, 0x07, 0x91, 0xc2, 0x07, 0x1b, 0x11, 0xb0, 0xeb, 0x04, 0x1b, 0x71, 0x1b, 0x1b, 0xc1, 0x06, 0x1b, 0x71, 0x1b, 0x49, 0x93, 0x05, 0xec, 0x9f, 0x5e, 0x07, - 0x00, 0x42, 0x8b, 0x01, 0x00, 0x00, 0xc5, 0xb7, + 0x00, 0x42, 0x8c, 0x01, 0x00, 0x00, 0xc5, 0xb7, 0x9b, 0xc1, 0x0a, 0xe9, 0xbc, 0x10, 0x24, 0x03, 0x00, 0xc2, 0x09, 0xc1, 0x09, 0xb5, 0xa8, 0xea, 0x73, 0x26, 0x00, 0x00, 0xc2, 0x0b, 0xb4, 0xc2, 0x08, 0xb4, 0xc2, 0x07, 0xc1, 0x07, 0xc1, 0x0a, 0xe9, 0xa6, 0xea, 0x3b, 0xc1, 0x0b, 0xc1, 0x08, 0x1b, 0x11, 0xb0, 0xeb, 0x04, 0x1b, 0x71, 0x1b, - 0x1b, 0x5e, 0x07, 0x00, 0x42, 0xc6, 0x01, 0x00, + 0x1b, 0x5e, 0x07, 0x00, 0x42, 0xc7, 0x01, 0x00, 0x00, 0xc1, 0x0b, 0xc1, 0x08, 0x47, 0x11, 0xeb, 0x03, 0x0e, 0xb4, 0xc1, 0x0a, 0xc1, 0x07, 0x47, 0xb6, 0x9d, 0x24, 0x02, 0x00, 0x1b, 0x71, 0x1b, @@ -2128,33 +2128,33 @@ const uint8_t qjsc_repl[23373] = { 0x09, 0xb5, 0x9e, 0xc2, 0x08, 0xc1, 0x04, 0xc2, 0x05, 0xc1, 0x05, 0xc6, 0xa6, 0x69, 0x8b, 0x00, 0x00, 0x00, 0xe0, 0xc1, 0x05, 0x47, 0xb4, 0x47, - 0x04, 0xa9, 0x01, 0x00, 0x00, 0xae, 0x11, 0xeb, + 0x04, 0xaa, 0x01, 0x00, 0x00, 0xae, 0x11, 0xeb, 0x0e, 0x0e, 0xe0, 0xc1, 0x05, 0xb5, 0x9d, 0x47, - 0x04, 0x1d, 0x02, 0x00, 0x00, 0xae, 0xeb, 0x6a, + 0x04, 0x1e, 0x02, 0x00, 0x00, 0xae, 0xeb, 0x6a, 0xc1, 0x06, 0xc8, 0xe9, 0x9d, 0xc2, 0x06, 0x5e, - 0x08, 0x00, 0xc8, 0xef, 0x0e, 0x04, 0x29, 0x02, + 0x08, 0x00, 0xc8, 0xef, 0x0e, 0x04, 0x2a, 0x02, 0x00, 0x00, 0xcc, 0xc1, 0x08, 0xc1, 0x09, 0xb5, 0x9e, 0xae, 0xea, 0x11, 0x5e, 0x09, 0x00, 0x04, - 0x8a, 0x01, 0x00, 0x00, 0xd1, 0xf0, 0x0e, 0xb4, + 0x8b, 0x01, 0x00, 0x00, 0xd1, 0xf0, 0x0e, 0xb4, 0xc2, 0x08, 0xec, 0x2f, 0x5e, 0x09, 0x00, 0xc0, 0xc1, 0x0b, 0xc1, 0x08, 0x91, 0xc2, 0x08, 0x47, 0xc1, 0x06, 0x9e, 0xf0, 0x0e, 0xec, 0x1c, 0x11, - 0x7e, 0x79, 0x6b, 0x01, 0x00, 0x00, 0x05, 0x00, - 0x81, 0x02, 0x0e, 0x3d, 0x79, 0x2e, 0x02, 0x00, + 0x7e, 0x79, 0x6c, 0x01, 0x00, 0x00, 0x05, 0x00, + 0x81, 0x02, 0x0e, 0x3d, 0x79, 0x2f, 0x02, 0x00, 0x00, 0x06, 0x00, 0x81, 0x02, 0x0e, 0x3d, 0x84, 0xec, 0x0a, 0x5e, 0x0a, 0x00, 0xd1, 0xc1, 0x05, 0xf0, 0xec, 0xdd, 0x0e, 0x93, 0x05, 0xed, 0x72, 0xff, 0xc1, 0x05, 0xc2, 0x04, 0xc1, 0x04, 0xc2, 0x05, 0xc1, 0x05, 0xc6, 0xa6, 0xea, 0x43, 0x5e, - 0x08, 0x00, 0xc8, 0xef, 0x0e, 0x04, 0x29, 0x02, - 0x00, 0x00, 0xcc, 0x5e, 0x09, 0x00, 0x04, 0x8a, + 0x08, 0x00, 0xc8, 0xef, 0x0e, 0x04, 0x2a, 0x02, + 0x00, 0x00, 0xcc, 0x5e, 0x09, 0x00, 0x04, 0x8b, 0x01, 0x00, 0x00, 0xd1, 0xf0, 0x0e, 0xec, 0x1c, - 0x11, 0x7e, 0x79, 0x6b, 0x01, 0x00, 0x00, 0x05, - 0x00, 0x81, 0x02, 0x0e, 0x3d, 0x79, 0x2e, 0x02, + 0x11, 0x7e, 0x79, 0x6c, 0x01, 0x00, 0x00, 0x05, + 0x00, 0x81, 0x02, 0x0e, 0x3d, 0x79, 0x2f, 0x02, 0x00, 0x00, 0x06, 0x00, 0x81, 0x02, 0x0e, 0x3d, 0x84, 0xec, 0x0a, 0x5e, 0x0a, 0x00, 0xd1, 0xc1, 0x05, 0xf0, 0xec, 0xdd, 0x0e, 0x93, 0x05, 0xec, - 0xb9, 0x5e, 0x09, 0x00, 0x04, 0x8a, 0x01, 0x00, + 0xb9, 0x5e, 0x09, 0x00, 0x04, 0x8b, 0x01, 0x00, 0x00, 0xd1, 0xb6, 0x9e, 0xd9, 0xf0, 0x0e, 0x5e, 0x05, 0x00, 0xe0, 0xc6, 0x47, 0xef, 0x0e, 0xc6, 0xdd, 0x26, 0x02, 0x00, 0x28, 0xbf, 0x00, 0xca, @@ -2167,390 +2167,390 @@ const uint8_t qjsc_repl[23373] = { 0xbf, 0x0d, 0xc2, 0x17, 0x0b, 0xc9, 0xd2, 0x97, 0x04, 0x4a, 0x00, 0x00, 0x00, 0xae, 0xea, 0x1c, 0xd2, 0x07, 0xaf, 0xea, 0x17, 0xd2, 0xcd, 0x41, - 0x3a, 0x02, 0x00, 0x00, 0xd6, 0xc5, 0x41, 0x3b, - 0x02, 0x00, 0x00, 0xd7, 0xc5, 0x41, 0xe9, 0x00, + 0x3b, 0x02, 0x00, 0x00, 0xd6, 0xc5, 0x41, 0x3c, + 0x02, 0x00, 0x00, 0xd7, 0xc5, 0x41, 0xea, 0x00, 0x00, 0x00, 0xd8, 0xd2, 0x97, 0x04, 0x48, 0x00, 0x00, 0x00, 0xaf, 0xea, 0x03, 0x09, 0xd6, 0xc6, 0xd3, 0xb6, 0xf0, 0xd7, 0xc6, 0xd4, 0x0a, 0xf0, - 0xd8, 0xc6, 0xc5, 0x41, 0xde, 0x01, 0x00, 0x00, - 0x5e, 0x10, 0x00, 0x42, 0x8b, 0x01, 0x00, 0x00, + 0xd8, 0xc6, 0xc5, 0x41, 0xdf, 0x01, 0x00, 0x00, + 0x5e, 0x10, 0x00, 0x42, 0x8c, 0x01, 0x00, 0x00, 0x5e, 0x11, 0x00, 0xbc, 0x50, 0x24, 0x02, 0x00, - 0xf0, 0xcb, 0xc6, 0xc5, 0x41, 0xdf, 0x01, 0x00, + 0xf0, 0xcb, 0xc6, 0xc5, 0x41, 0xe0, 0x01, 0x00, 0x00, 0xbc, 0x64, 0xf0, 0xcc, 0xc6, 0xc5, 0x41, - 0xe0, 0x01, 0x00, 0x00, 0xc8, 0xbc, 0x0a, 0x9d, - 0xf0, 0xc2, 0x04, 0xc6, 0xc5, 0x41, 0xe1, 0x01, + 0xe1, 0x01, 0x00, 0x00, 0xc8, 0xbc, 0x0a, 0x9d, + 0xf0, 0xc2, 0x04, 0xc6, 0xc5, 0x41, 0xe2, 0x01, 0x00, 0x00, 0xbc, 0x4e, 0xf0, 0xc2, 0x05, 0x0b, 0x26, 0x01, 0x00, 0xc2, 0x06, 0x26, 0x00, 0x00, 0xc2, 0x07, 0x26, 0x00, 0x00, 0xc2, 0x08, 0x26, - 0x00, 0x00, 0xc2, 0x09, 0x04, 0x84, 0x01, 0x00, + 0x00, 0x00, 0xc2, 0x09, 0x04, 0x85, 0x01, 0x00, 0x00, 0xc2, 0x0a, 0xc1, 0x0f, 0xd1, 0xb4, 0xf0, 0x0e, 0xc1, 0x17, 0xb4, 0xb4, 0xf0, 0x0e, 0xc1, 0x10, 0xc0, 0xef, 0x0e, 0xc1, 0x09, 0x42, 0x5c, 0x00, 0x00, 0x00, 0xc0, 0x25, 0x01, 0x00, 0x0c, - 0x43, 0x02, 0x01, 0x9c, 0x05, 0x01, 0x00, 0x01, - 0x07, 0x05, 0x00, 0x3c, 0x01, 0xb4, 0x07, 0x00, - 0x01, 0x00, 0xc2, 0x03, 0x00, 0x0c, 0x9a, 0x05, - 0x75, 0x01, 0xe0, 0x03, 0x18, 0x01, 0xdc, 0x03, - 0x16, 0x01, 0xde, 0x03, 0x17, 0x01, 0x65, 0x00, - 0x00, 0x42, 0x83, 0x01, 0x00, 0x00, 0xde, 0x42, - 0x3c, 0x02, 0x00, 0x00, 0xd1, 0x0b, 0xdf, 0x4c, - 0x3b, 0x02, 0x00, 0x00, 0xe0, 0x4c, 0xe9, 0x00, - 0x00, 0x00, 0x5e, 0x04, 0x00, 0x4c, 0x3a, 0x02, + 0x43, 0x02, 0x01, 0x9e, 0x05, 0x01, 0x00, 0x01, + 0x07, 0x05, 0x00, 0x3c, 0x01, 0xb6, 0x07, 0x00, + 0x01, 0x00, 0xc4, 0x03, 0x00, 0x0c, 0x9c, 0x05, + 0x75, 0x01, 0xe2, 0x03, 0x18, 0x01, 0xde, 0x03, + 0x16, 0x01, 0xe0, 0x03, 0x17, 0x01, 0x65, 0x00, + 0x00, 0x42, 0x84, 0x01, 0x00, 0x00, 0xde, 0x42, + 0x3d, 0x02, 0x00, 0x00, 0xd1, 0x0b, 0xdf, 0x4c, + 0x3c, 0x02, 0x00, 0x00, 0xe0, 0x4c, 0xea, 0x00, + 0x00, 0x00, 0x5e, 0x04, 0x00, 0x4c, 0x3b, 0x02, 0x00, 0x00, 0x24, 0x02, 0x00, 0x24, 0x01, 0x00, - 0x0e, 0x65, 0x00, 0x00, 0x42, 0x83, 0x01, 0x00, - 0x00, 0x04, 0x8a, 0x01, 0x00, 0x00, 0x24, 0x01, - 0x00, 0x29, 0x0c, 0x43, 0x02, 0x01, 0x9e, 0x05, + 0x0e, 0x65, 0x00, 0x00, 0x42, 0x84, 0x01, 0x00, + 0x00, 0x04, 0x8b, 0x01, 0x00, 0x00, 0x24, 0x01, + 0x00, 0x29, 0x0c, 0x43, 0x02, 0x01, 0xa0, 0x05, 0x01, 0x05, 0x01, 0x06, 0x03, 0x00, 0xb4, 0x01, - 0x06, 0xe2, 0x05, 0x00, 0x01, 0x00, 0xaa, 0x06, - 0x00, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x01, 0x00, - 0xfa, 0x08, 0x00, 0x02, 0x00, 0xaa, 0x07, 0x00, - 0x03, 0x00, 0xfc, 0x08, 0x00, 0x04, 0x00, 0xa0, - 0x05, 0x78, 0x01, 0xa8, 0x05, 0x7c, 0x01, 0xc2, - 0x03, 0x00, 0x0c, 0xd1, 0x04, 0x3f, 0x02, 0x00, + 0x06, 0xe4, 0x05, 0x00, 0x01, 0x00, 0xac, 0x06, + 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x01, 0x00, + 0xfc, 0x08, 0x00, 0x02, 0x00, 0xac, 0x07, 0x00, + 0x03, 0x00, 0xfe, 0x08, 0x00, 0x04, 0x00, 0xa2, + 0x05, 0x78, 0x01, 0xaa, 0x05, 0x7c, 0x01, 0xc4, + 0x03, 0x00, 0x0c, 0xd1, 0x04, 0x40, 0x02, 0x00, 0x00, 0xae, 0xea, 0x06, 0xdd, 0xee, 0x0e, 0x0a, - 0x28, 0xd1, 0xb4, 0x47, 0x04, 0xa8, 0x01, 0x00, + 0x28, 0xd1, 0xb4, 0x47, 0x04, 0xa9, 0x01, 0x00, 0x00, 0xaf, 0xea, 0x0e, 0xd1, 0xb4, 0x47, 0x04, - 0xa9, 0x01, 0x00, 0x00, 0xaf, 0xea, 0x03, 0x09, + 0xaa, 0x01, 0x00, 0x00, 0xaf, 0xea, 0x03, 0x09, 0x28, 0xb5, 0xc9, 0xc5, 0xd1, 0xe9, 0xa6, 0xea, - 0x10, 0xd1, 0xc5, 0x47, 0x04, 0xcd, 0x01, 0x00, + 0x10, 0xd1, 0xc5, 0x47, 0x04, 0xce, 0x01, 0x00, 0x00, 0xaf, 0xea, 0x05, 0x93, 0x00, 0xec, 0xec, - 0xd1, 0x42, 0x85, 0x01, 0x00, 0x00, 0xb5, 0xc5, + 0xd1, 0x42, 0x86, 0x01, 0x00, 0x00, 0xb5, 0xc5, 0x24, 0x02, 0x00, 0xca, 0xb4, 0xcb, 0xde, 0x7d, - 0xec, 0x21, 0xc2, 0x04, 0xc1, 0x04, 0x42, 0xb9, + 0xec, 0x21, 0xc2, 0x04, 0xc1, 0x04, 0x42, 0xba, 0x01, 0x00, 0x00, 0xc6, 0x24, 0x01, 0x00, 0xea, 0x12, 0xde, 0xc1, 0x04, 0x47, 0xcc, 0x93, 0x02, 0xc1, 0x04, 0xc6, 0xae, 0xea, 0x05, 0xb4, 0xcb, 0xec, 0x05, 0x80, 0xea, 0xde, 0x0e, 0x0e, 0xc8, 0xea, 0x1d, 0xc7, 0xb6, 0xa6, 0xea, 0x18, 0xc8, - 0xd1, 0x42, 0x85, 0x01, 0x00, 0x00, 0xc5, 0x24, - 0x01, 0x00, 0x42, 0x40, 0x02, 0x00, 0x00, 0x24, + 0xd1, 0x42, 0x86, 0x01, 0x00, 0x00, 0xc5, 0x24, + 0x01, 0x00, 0x42, 0x41, 0x02, 0x00, 0x00, 0x24, 0x00, 0x00, 0xef, 0x0e, 0xec, 0x20, 0x65, 0x02, - 0x00, 0x42, 0x83, 0x01, 0x00, 0x00, 0x04, 0x41, + 0x00, 0x42, 0x84, 0x01, 0x00, 0x00, 0x04, 0x42, 0x02, 0x00, 0x00, 0x42, 0x5d, 0x00, 0x00, 0x00, - 0xc6, 0x04, 0x8a, 0x01, 0x00, 0x00, 0x24, 0x02, + 0xc6, 0x04, 0x8b, 0x01, 0x00, 0x00, 0x24, 0x02, 0x00, 0x24, 0x01, 0x00, 0x0e, 0x0a, 0x28, 0x0c, - 0x43, 0x02, 0x01, 0xa0, 0x05, 0x00, 0x01, 0x00, - 0x07, 0x09, 0x01, 0xdc, 0x01, 0x01, 0x84, 0x09, - 0x00, 0x00, 0x00, 0xc2, 0x03, 0x00, 0x0c, 0xe2, - 0x03, 0x19, 0x01, 0xda, 0x03, 0x15, 0x01, 0xe4, - 0x03, 0x1a, 0x01, 0xe0, 0x03, 0x18, 0x01, 0xde, - 0x03, 0x17, 0x01, 0xdc, 0x03, 0x16, 0x01, 0xd6, - 0x03, 0x13, 0x01, 0xd4, 0x03, 0x12, 0x01, 0x0c, + 0x43, 0x02, 0x01, 0xa2, 0x05, 0x00, 0x01, 0x00, + 0x07, 0x09, 0x01, 0xdc, 0x01, 0x01, 0x86, 0x09, + 0x00, 0x00, 0x00, 0xc4, 0x03, 0x00, 0x0c, 0xe4, + 0x03, 0x19, 0x01, 0xdc, 0x03, 0x15, 0x01, 0xe6, + 0x03, 0x1a, 0x01, 0xe2, 0x03, 0x18, 0x01, 0xe0, + 0x03, 0x17, 0x01, 0xde, 0x03, 0x16, 0x01, 0xd8, + 0x03, 0x13, 0x01, 0xd6, 0x03, 0x12, 0x01, 0x0c, 0x42, 0x02, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x0f, 0x01, 0x8c, 0x06, 0x00, 0x01, + 0x00, 0x00, 0x0f, 0x01, 0x8e, 0x06, 0x00, 0x01, 0x00, 0xd1, 0xea, 0x07, 0x04, 0x7e, 0x00, 0x00, - 0x00, 0x28, 0x04, 0xcd, 0x01, 0x00, 0x00, 0x28, - 0xbf, 0x00, 0x4d, 0x42, 0x02, 0x00, 0x00, 0xc9, - 0x65, 0x00, 0x00, 0x42, 0x83, 0x01, 0x00, 0x00, - 0x04, 0x43, 0x02, 0x00, 0x00, 0x04, 0x44, 0x02, + 0x00, 0x28, 0x04, 0xce, 0x01, 0x00, 0x00, 0x28, + 0xbf, 0x00, 0x4d, 0x43, 0x02, 0x00, 0x00, 0xc9, + 0x65, 0x00, 0x00, 0x42, 0x84, 0x01, 0x00, 0x00, + 0x04, 0x44, 0x02, 0x00, 0x00, 0x04, 0x45, 0x02, 0x00, 0x00, 0x9d, 0xc5, 0xde, 0xef, 0x9d, 0x04, - 0x45, 0x02, 0x00, 0x00, 0x9d, 0x04, 0x46, 0x02, + 0x46, 0x02, 0x00, 0x00, 0x9d, 0x04, 0x47, 0x02, 0x00, 0x00, 0x9d, 0xc5, 0xde, 0x96, 0xef, 0x9d, - 0x04, 0x47, 0x02, 0x00, 0x00, 0x9d, 0x04, 0x48, + 0x04, 0x48, 0x02, 0x00, 0x00, 0x9d, 0x04, 0x49, 0x02, 0x00, 0x00, 0x9d, 0xc5, 0xdf, 0xef, 0x9d, - 0x04, 0x49, 0x02, 0x00, 0x00, 0x9d, 0x04, 0x4a, + 0x04, 0x4a, 0x02, 0x00, 0x00, 0x9d, 0x04, 0x4b, 0x02, 0x00, 0x00, 0x9d, 0xc5, 0xe0, 0xef, 0x9d, - 0x04, 0x4b, 0x02, 0x00, 0x00, 0x9d, 0x04, 0x4c, + 0x04, 0x4c, 0x02, 0x00, 0x00, 0x9d, 0x04, 0x4d, 0x02, 0x00, 0x00, 0x42, 0x5d, 0x00, 0x00, 0x00, - 0x5e, 0x04, 0x00, 0x04, 0x4d, 0x02, 0x00, 0x00, - 0x24, 0x02, 0x00, 0x9d, 0x04, 0x4e, 0x02, 0x00, + 0x5e, 0x04, 0x00, 0x04, 0x4e, 0x02, 0x00, 0x00, + 0x24, 0x02, 0x00, 0x9d, 0x04, 0x4f, 0x02, 0x00, 0x00, 0x9d, 0xc5, 0x5e, 0x05, 0x00, 0xef, 0x9d, - 0x04, 0x4f, 0x02, 0x00, 0x00, 0x9d, 0x04, 0x50, + 0x04, 0x50, 0x02, 0x00, 0x00, 0x9d, 0x04, 0x51, 0x02, 0x00, 0x00, 0x9d, 0xc5, 0x5e, 0x06, 0x00, - 0xef, 0x9d, 0x04, 0x51, 0x02, 0x00, 0x00, 0x9d, - 0x04, 0x52, 0x02, 0x00, 0x00, 0x9d, 0xc5, 0x5e, - 0x07, 0x00, 0x5e, 0x08, 0x00, 0x41, 0x53, 0x02, - 0x00, 0x00, 0xac, 0xef, 0x9d, 0x04, 0x54, 0x02, - 0x00, 0x00, 0x9d, 0x04, 0x55, 0x02, 0x00, 0x00, + 0xef, 0x9d, 0x04, 0x52, 0x02, 0x00, 0x00, 0x9d, + 0x04, 0x53, 0x02, 0x00, 0x00, 0x9d, 0xc5, 0x5e, + 0x07, 0x00, 0x5e, 0x08, 0x00, 0x41, 0x54, 0x02, + 0x00, 0x00, 0xac, 0xef, 0x9d, 0x04, 0x55, 0x02, + 0x00, 0x00, 0x9d, 0x04, 0x56, 0x02, 0x00, 0x00, 0x9d, 0xc5, 0x5e, 0x07, 0x00, 0x5e, 0x08, 0x00, - 0x41, 0x56, 0x02, 0x00, 0x00, 0xac, 0xef, 0x9d, - 0x04, 0x57, 0x02, 0x00, 0x00, 0x9d, 0x04, 0x58, - 0x02, 0x00, 0x00, 0x9d, 0x04, 0x59, 0x02, 0x00, - 0x00, 0x9d, 0x04, 0x5a, 0x02, 0x00, 0x00, 0x9d, + 0x41, 0x57, 0x02, 0x00, 0x00, 0xac, 0xef, 0x9d, + 0x04, 0x58, 0x02, 0x00, 0x00, 0x9d, 0x04, 0x59, + 0x02, 0x00, 0x00, 0x9d, 0x04, 0x5a, 0x02, 0x00, + 0x00, 0x9d, 0x04, 0x5b, 0x02, 0x00, 0x00, 0x9d, 0x24, 0x01, 0x00, 0x29, 0x0c, 0x43, 0x02, 0x01, - 0xa2, 0x05, 0x01, 0x01, 0x01, 0x07, 0x01, 0x00, - 0x5f, 0x02, 0xc2, 0x06, 0x00, 0x01, 0x00, 0xb6, - 0x09, 0x04, 0x00, 0x03, 0xc2, 0x03, 0x00, 0x0c, - 0xd1, 0x42, 0x5c, 0x02, 0x00, 0x00, 0x04, 0xa9, + 0xa4, 0x05, 0x01, 0x01, 0x01, 0x07, 0x01, 0x00, + 0x5f, 0x02, 0xc4, 0x06, 0x00, 0x01, 0x00, 0xb8, + 0x09, 0x04, 0x00, 0x03, 0xc4, 0x03, 0x00, 0x0c, + 0xd1, 0x42, 0x5d, 0x02, 0x00, 0x00, 0x04, 0xaa, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0xd1, 0x42, - 0x5c, 0x02, 0x00, 0x00, 0x04, 0xb0, 0x01, 0x00, + 0x5d, 0x02, 0x00, 0x00, 0x04, 0xb1, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0xa7, 0xea, 0x09, 0xd1, - 0x04, 0x5d, 0x02, 0x00, 0x00, 0x9d, 0xd5, 0x6c, + 0x04, 0x5e, 0x02, 0x00, 0x00, 0x9d, 0xd5, 0x6c, 0x13, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x42, - 0x5e, 0x02, 0x00, 0x00, 0xd1, 0x24, 0x01, 0x00, + 0x5f, 0x02, 0x00, 0x00, 0xd1, 0x24, 0x01, 0x00, 0x0e, 0x0e, 0x29, 0xc9, 0x6c, 0x21, 0x00, 0x00, - 0x00, 0x65, 0x00, 0x00, 0x42, 0x83, 0x01, 0x00, + 0x00, 0x65, 0x00, 0x00, 0x42, 0x84, 0x01, 0x00, 0x00, 0xc0, 0x42, 0x5d, 0x00, 0x00, 0x00, 0xc5, - 0x04, 0x8a, 0x01, 0x00, 0x00, 0x24, 0x02, 0x00, + 0x04, 0x8b, 0x01, 0x00, 0x00, 0x24, 0x02, 0x00, 0x24, 0x01, 0x00, 0x0e, 0x0e, 0x29, 0x2f, 0x0c, - 0x43, 0x02, 0x01, 0xa4, 0x05, 0x01, 0x00, 0x01, - 0x03, 0x02, 0x00, 0x10, 0x01, 0xb6, 0x09, 0x00, - 0x01, 0x00, 0xbe, 0x05, 0x87, 0x01, 0x01, 0xc2, + 0x43, 0x02, 0x01, 0xa6, 0x05, 0x01, 0x00, 0x01, + 0x03, 0x02, 0x00, 0x10, 0x01, 0xb8, 0x09, 0x00, + 0x01, 0x00, 0xc0, 0x05, 0x87, 0x01, 0x01, 0xc4, 0x03, 0x00, 0x0c, 0xdd, 0xee, 0x0e, 0x65, 0x01, - 0x00, 0x42, 0x52, 0x01, 0x00, 0x00, 0xd1, 0x24, - 0x01, 0x00, 0x29, 0x0c, 0x43, 0x02, 0x01, 0xa6, + 0x00, 0x42, 0x53, 0x01, 0x00, 0x00, 0xd1, 0x24, + 0x01, 0x00, 0x29, 0x0c, 0x43, 0x02, 0x01, 0xa8, 0x05, 0x02, 0x00, 0x02, 0x03, 0x00, 0x00, 0x14, - 0x02, 0xc2, 0x06, 0x00, 0x01, 0x00, 0xe8, 0x07, - 0x00, 0x01, 0x00, 0xd1, 0xea, 0x10, 0x04, 0x5f, - 0x02, 0x00, 0x00, 0x42, 0xf5, 0x01, 0x00, 0x00, + 0x02, 0xc4, 0x06, 0x00, 0x01, 0x00, 0xea, 0x07, + 0x00, 0x01, 0x00, 0xd1, 0xea, 0x10, 0x04, 0x60, + 0x02, 0x00, 0x00, 0x42, 0xf6, 0x01, 0x00, 0x00, 0xd1, 0x24, 0x01, 0x00, 0x28, 0xd2, 0x28, 0x0c, 0x42, 0x02, 0x01, 0x00, 0x01, 0x00, 0x01, 0x03, - 0x02, 0x00, 0x06, 0x01, 0xc2, 0x06, 0x00, 0x01, - 0x00, 0xe2, 0x03, 0x19, 0x01, 0xa6, 0x05, 0x7b, + 0x02, 0x00, 0x06, 0x01, 0xc4, 0x06, 0x00, 0x01, + 0x00, 0xe4, 0x03, 0x19, 0x01, 0xa8, 0x05, 0x7b, 0x01, 0xde, 0xd1, 0x0a, 0xf0, 0xe1, 0x29, 0x0c, 0x42, 0x02, 0x01, 0x00, 0x01, 0x00, 0x01, 0x03, - 0x02, 0x00, 0x07, 0x01, 0xc2, 0x06, 0x00, 0x01, - 0x00, 0xe2, 0x03, 0x19, 0x01, 0xa6, 0x05, 0x7b, + 0x02, 0x00, 0x07, 0x01, 0xc4, 0x06, 0x00, 0x01, + 0x00, 0xe4, 0x03, 0x19, 0x01, 0xa8, 0x05, 0x7b, 0x01, 0xde, 0xd1, 0x0a, 0xf0, 0x96, 0xe1, 0x29, 0x0c, 0x42, 0x02, 0x01, 0x00, 0x01, 0x00, 0x01, - 0x03, 0x02, 0x00, 0x07, 0x01, 0xc2, 0x06, 0x00, - 0x01, 0x00, 0xda, 0x03, 0x15, 0x01, 0xa6, 0x05, + 0x03, 0x02, 0x00, 0x07, 0x01, 0xc4, 0x06, 0x00, + 0x01, 0x00, 0xdc, 0x03, 0x15, 0x01, 0xa8, 0x05, 0x7b, 0x01, 0xde, 0xd1, 0xdd, 0x96, 0xf0, 0xe1, 0x29, 0x0c, 0x42, 0x02, 0x01, 0x00, 0x01, 0x00, - 0x01, 0x03, 0x02, 0x00, 0x07, 0x01, 0xc2, 0x06, - 0x00, 0x01, 0x00, 0xe4, 0x03, 0x1a, 0x01, 0xa6, + 0x01, 0x03, 0x02, 0x00, 0x07, 0x01, 0xc4, 0x06, + 0x00, 0x01, 0x00, 0xe6, 0x03, 0x1a, 0x01, 0xa8, 0x05, 0x7b, 0x01, 0xde, 0xd1, 0xdd, 0x96, 0xf0, 0xe1, 0x29, 0x0c, 0x42, 0x02, 0x01, 0x00, 0x01, - 0x00, 0x01, 0x02, 0x01, 0x00, 0x09, 0x01, 0xc2, - 0x06, 0x00, 0x01, 0x00, 0xe0, 0x03, 0x18, 0x01, + 0x00, 0x01, 0x02, 0x01, 0x00, 0x09, 0x01, 0xc4, + 0x06, 0x00, 0x01, 0x00, 0xe2, 0x03, 0x18, 0x01, 0xd1, 0x8d, 0x11, 0xeb, 0x03, 0x0e, 0xb6, 0xe1, 0x29, 0x0c, 0x42, 0x02, 0x01, 0x00, 0x01, 0x00, - 0x01, 0x03, 0x02, 0x00, 0x07, 0x01, 0xc2, 0x06, - 0x00, 0x01, 0x00, 0xde, 0x03, 0x17, 0x01, 0xa6, + 0x01, 0x03, 0x02, 0x00, 0x07, 0x01, 0xc4, 0x06, + 0x00, 0x01, 0x00, 0xe0, 0x03, 0x17, 0x01, 0xa8, 0x05, 0x7b, 0x01, 0xde, 0xd1, 0xdd, 0x96, 0xf0, 0xe1, 0x29, 0x0c, 0x42, 0x02, 0x01, 0x00, 0x01, - 0x00, 0x01, 0x03, 0x02, 0x00, 0x07, 0x01, 0xc2, - 0x06, 0x00, 0x01, 0x00, 0xdc, 0x03, 0x16, 0x01, - 0xa6, 0x05, 0x7b, 0x01, 0xde, 0xd1, 0xdd, 0x96, + 0x00, 0x01, 0x03, 0x02, 0x00, 0x07, 0x01, 0xc4, + 0x06, 0x00, 0x01, 0x00, 0xde, 0x03, 0x16, 0x01, + 0xa8, 0x05, 0x7b, 0x01, 0xde, 0xd1, 0xdd, 0x96, 0xf0, 0xe1, 0x29, 0x0c, 0x42, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x08, 0x00, - 0xd6, 0x03, 0x13, 0x01, 0xd4, 0x03, 0x12, 0x01, - 0xde, 0x41, 0x53, 0x02, 0x00, 0x00, 0xe1, 0x29, + 0xd8, 0x03, 0x13, 0x01, 0xd6, 0x03, 0x12, 0x01, + 0xde, 0x41, 0x54, 0x02, 0x00, 0x00, 0xe1, 0x29, 0x0c, 0x42, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x02, 0x00, 0x08, 0x00, 0xd6, 0x03, 0x13, - 0x01, 0xd4, 0x03, 0x12, 0x01, 0xde, 0x41, 0x56, + 0x01, 0x02, 0x00, 0x08, 0x00, 0xd8, 0x03, 0x13, + 0x01, 0xd6, 0x03, 0x12, 0x01, 0xde, 0x41, 0x57, 0x02, 0x00, 0x00, 0xe1, 0x29, 0x0c, 0x42, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, - 0x11, 0x00, 0xc2, 0x03, 0x00, 0x0c, 0x65, 0x00, - 0x00, 0x42, 0x83, 0x01, 0x00, 0x00, 0x04, 0x60, + 0x11, 0x00, 0xc4, 0x03, 0x00, 0x0c, 0x65, 0x00, + 0x00, 0x42, 0x84, 0x01, 0x00, 0x00, 0x04, 0x61, 0x02, 0x00, 0x00, 0x24, 0x01, 0x00, 0x29, 0x0c, 0x42, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x01, 0x00, 0x04, 0x00, 0xa4, 0x05, 0x7a, 0x01, + 0x01, 0x00, 0x04, 0x00, 0xa6, 0x05, 0x7a, 0x01, 0xdd, 0xb4, 0xef, 0x29, 0x0c, 0x43, 0x02, 0x01, - 0xaa, 0x05, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, - 0x14, 0x00, 0xc2, 0x03, 0x00, 0x0c, 0xac, 0x05, - 0x7e, 0x01, 0x65, 0x00, 0x00, 0x42, 0x83, 0x01, - 0x00, 0x00, 0x04, 0x61, 0x02, 0x00, 0x00, 0x24, + 0xac, 0x05, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, + 0x14, 0x00, 0xc4, 0x03, 0x00, 0x0c, 0xae, 0x05, + 0x7e, 0x01, 0x65, 0x00, 0x00, 0x42, 0x84, 0x01, + 0x00, 0x00, 0x04, 0x62, 0x02, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, 0xde, 0xee, 0x29, 0x0c, 0x43, - 0x02, 0x01, 0xac, 0x05, 0x00, 0x00, 0x00, 0x04, - 0x04, 0x00, 0x0c, 0x00, 0x90, 0x05, 0x70, 0x01, - 0x86, 0x05, 0x6b, 0x01, 0xfc, 0x03, 0x26, 0x01, - 0xae, 0x05, 0x7f, 0x01, 0xdd, 0xde, 0x04, 0x62, + 0x02, 0x01, 0xae, 0x05, 0x00, 0x00, 0x00, 0x04, + 0x04, 0x00, 0x0c, 0x00, 0x92, 0x05, 0x70, 0x01, + 0x88, 0x05, 0x6b, 0x01, 0xfe, 0x03, 0x26, 0x01, + 0xb0, 0x05, 0x7f, 0x01, 0xdd, 0xde, 0x04, 0x63, 0x02, 0x00, 0x00, 0xdf, 0xf0, 0xe0, 0xf0, 0x29, - 0x0c, 0x43, 0x02, 0x01, 0xae, 0x05, 0x01, 0x00, - 0x01, 0x02, 0x02, 0x00, 0x0a, 0x01, 0xc6, 0x09, - 0x00, 0x01, 0x00, 0xb0, 0x05, 0x80, 0x01, 0x01, - 0xac, 0x05, 0x7e, 0x01, 0xdd, 0xd1, 0xef, 0x96, + 0x0c, 0x43, 0x02, 0x01, 0xb0, 0x05, 0x01, 0x00, + 0x01, 0x02, 0x02, 0x00, 0x0a, 0x01, 0xc8, 0x09, + 0x00, 0x01, 0x00, 0xb2, 0x05, 0x80, 0x01, 0x01, + 0xae, 0x05, 0x7e, 0x01, 0xdd, 0xd1, 0xef, 0x96, 0xea, 0x04, 0xde, 0xee, 0x0e, 0x29, 0x0c, 0x43, - 0x02, 0x01, 0xb0, 0x05, 0x01, 0x01, 0x01, 0x02, - 0x06, 0x00, 0x3a, 0x02, 0xc6, 0x09, 0x00, 0x01, - 0x00, 0x9e, 0x06, 0x00, 0x00, 0x00, 0xfa, 0x03, - 0x25, 0x01, 0x9e, 0x05, 0x77, 0x01, 0xba, 0x05, - 0x85, 0x01, 0x01, 0xec, 0x03, 0x1e, 0x01, 0xfc, - 0x03, 0x26, 0x01, 0xb2, 0x05, 0x81, 0x01, 0x01, + 0x02, 0x01, 0xb2, 0x05, 0x01, 0x01, 0x01, 0x02, + 0x06, 0x00, 0x3a, 0x02, 0xc8, 0x09, 0x00, 0x01, + 0x00, 0xa0, 0x06, 0x00, 0x00, 0x00, 0xfc, 0x03, + 0x25, 0x01, 0xa0, 0x05, 0x77, 0x01, 0xbc, 0x05, + 0x85, 0x01, 0x01, 0xee, 0x03, 0x1e, 0x01, 0xfe, + 0x03, 0x26, 0x01, 0xb4, 0x05, 0x81, 0x01, 0x01, 0xd1, 0x96, 0xea, 0x03, 0x09, 0x28, 0xdd, 0xea, - 0x0d, 0xdd, 0x04, 0x8a, 0x01, 0x00, 0x00, 0x9d, + 0x0d, 0xdd, 0x04, 0x8b, 0x01, 0x00, 0x00, 0x9d, 0xd1, 0x9d, 0xd5, 0xec, 0x08, 0xde, 0xd1, 0xef, 0xea, 0x03, 0x09, 0x28, 0xdf, 0xd1, 0xef, 0xcd, 0xb4, 0x47, 0xe4, 0xc5, 0xb5, 0x47, 0x5f, 0x04, 0x00, 0xe0, 0xea, 0x05, 0xd1, 0xe1, 0x09, 0x28, 0xc0, 0xe1, 0x5e, 0x05, 0x00, 0xd1, 0xef, 0x0e, - 0x0a, 0x28, 0x0c, 0x43, 0x02, 0x01, 0xb2, 0x05, + 0x0a, 0x28, 0x0c, 0x43, 0x02, 0x01, 0xb4, 0x05, 0x01, 0x01, 0x01, 0x05, 0x06, 0x00, 0x40, 0x02, - 0xc6, 0x09, 0x00, 0x01, 0x00, 0xc8, 0x09, 0x00, - 0x00, 0x00, 0xe4, 0x03, 0x1a, 0x01, 0xf6, 0x03, - 0x23, 0x01, 0xc4, 0x03, 0x01, 0x0c, 0xc2, 0x03, - 0x00, 0x0c, 0xb4, 0x05, 0x82, 0x01, 0x01, 0xb6, + 0xc8, 0x09, 0x00, 0x01, 0x00, 0xca, 0x09, 0x00, + 0x00, 0x00, 0xe6, 0x03, 0x1a, 0x01, 0xf8, 0x03, + 0x23, 0x01, 0xc6, 0x03, 0x01, 0x0c, 0xc4, 0x03, + 0x00, 0x0c, 0xb6, 0x05, 0x82, 0x01, 0x01, 0xb8, 0x05, 0x83, 0x01, 0x01, 0xdd, 0xea, 0x09, 0x04, - 0x65, 0x02, 0x00, 0x00, 0xd1, 0x9d, 0xd5, 0x65, - 0x02, 0x00, 0x42, 0x66, 0x02, 0x00, 0x00, 0x24, - 0x00, 0x00, 0xe2, 0x65, 0x03, 0x00, 0x42, 0x67, - 0x02, 0x00, 0x00, 0xd1, 0x0b, 0x0a, 0x4c, 0x68, + 0x66, 0x02, 0x00, 0x00, 0xd1, 0x9d, 0xd5, 0x65, + 0x02, 0x00, 0x42, 0x67, 0x02, 0x00, 0x00, 0x24, + 0x00, 0x00, 0xe2, 0x65, 0x03, 0x00, 0x42, 0x68, + 0x02, 0x00, 0x00, 0xd1, 0x0b, 0x0a, 0x4c, 0x69, 0x02, 0x00, 0x00, 0x0a, 0x4c, 0x86, 0x00, 0x00, 0x00, 0x24, 0x02, 0x00, 0xcd, 0x42, 0x80, 0x00, 0x00, 0x00, 0x5e, 0x04, 0x00, 0x5e, 0x05, 0x00, 0x24, 0x02, 0x00, 0x29, 0x0c, 0x43, 0x02, 0x01, - 0xb4, 0x05, 0x01, 0x00, 0x01, 0x02, 0x06, 0x00, - 0x27, 0x01, 0xc8, 0x09, 0x00, 0x01, 0x00, 0xf8, - 0x03, 0x24, 0x01, 0xc4, 0x03, 0x01, 0x0c, 0xf6, - 0x03, 0x23, 0x01, 0x9c, 0x05, 0x76, 0x01, 0xc8, - 0x03, 0x00, 0x03, 0xb8, 0x05, 0x84, 0x01, 0x01, + 0xb6, 0x05, 0x01, 0x00, 0x01, 0x02, 0x06, 0x00, + 0x27, 0x01, 0xca, 0x09, 0x00, 0x01, 0x00, 0xfa, + 0x03, 0x24, 0x01, 0xc6, 0x03, 0x01, 0x0c, 0xf8, + 0x03, 0x23, 0x01, 0x9e, 0x05, 0x76, 0x01, 0xca, + 0x03, 0x00, 0x03, 0xba, 0x05, 0x84, 0x01, 0x01, 0xd1, 0x41, 0x41, 0x00, 0x00, 0x00, 0xd5, 0x65, - 0x01, 0x00, 0x42, 0x66, 0x02, 0x00, 0x00, 0x24, + 0x01, 0x00, 0x42, 0x67, 0x02, 0x00, 0x00, 0x24, 0x00, 0x00, 0xdf, 0x9e, 0xe1, 0xe0, 0xd1, 0xef, - 0x0e, 0x5e, 0x04, 0x00, 0xd1, 0x43, 0x73, 0x01, + 0x0e, 0x5e, 0x04, 0x00, 0xd1, 0x43, 0x74, 0x01, 0x00, 0x00, 0x5e, 0x05, 0x00, 0xee, 0x29, 0x0c, - 0x43, 0x02, 0x01, 0xb6, 0x05, 0x01, 0x00, 0x01, - 0x04, 0x06, 0x00, 0xa1, 0x01, 0x01, 0xd2, 0x09, - 0x00, 0x01, 0x00, 0xdc, 0x03, 0x16, 0x01, 0xc2, - 0x03, 0x00, 0x0c, 0xd2, 0x03, 0x11, 0x01, 0xd6, - 0x03, 0x13, 0x01, 0xa8, 0x02, 0x09, 0x01, 0xb8, + 0x43, 0x02, 0x01, 0xb8, 0x05, 0x01, 0x00, 0x01, + 0x04, 0x06, 0x00, 0xa1, 0x01, 0x01, 0xd4, 0x09, + 0x00, 0x01, 0x00, 0xde, 0x03, 0x16, 0x01, 0xc4, + 0x03, 0x00, 0x0c, 0xd4, 0x03, 0x11, 0x01, 0xd8, + 0x03, 0x13, 0x01, 0xaa, 0x02, 0x09, 0x01, 0xba, 0x05, 0x84, 0x01, 0x01, 0xdd, 0xea, 0x15, 0x65, - 0x01, 0x00, 0x42, 0x83, 0x01, 0x00, 0x00, 0xdf, - 0xe0, 0x41, 0x69, 0x02, 0x00, 0x00, 0x47, 0x24, + 0x01, 0x00, 0x42, 0x84, 0x01, 0x00, 0x00, 0xdf, + 0xe0, 0x41, 0x6a, 0x02, 0x00, 0x00, 0x47, 0x24, 0x01, 0x00, 0x0e, 0xd1, 0x5e, 0x04, 0x00, 0xaa, - 0xea, 0x3b, 0x65, 0x01, 0x00, 0x42, 0x83, 0x01, + 0xea, 0x3b, 0x65, 0x01, 0x00, 0x42, 0x84, 0x01, 0x00, 0x00, 0xd1, 0x24, 0x01, 0x00, 0x0e, 0x65, - 0x01, 0x00, 0x42, 0x83, 0x01, 0x00, 0x00, 0x04, - 0x8a, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, + 0x01, 0x00, 0x42, 0x84, 0x01, 0x00, 0x00, 0x04, + 0x8b, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, 0xd1, 0x41, 0x36, 0x00, 0x00, 0x00, 0xea, 0x44, - 0x65, 0x01, 0x00, 0x42, 0x83, 0x01, 0x00, 0x00, + 0x65, 0x01, 0x00, 0x42, 0x84, 0x01, 0x00, 0x00, 0xd1, 0x41, 0x36, 0x00, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, 0xec, 0x30, 0x65, 0x01, 0x00, 0x42, - 0x83, 0x01, 0x00, 0x00, 0x04, 0x6a, 0x02, 0x00, + 0x84, 0x01, 0x00, 0x00, 0x04, 0x6b, 0x02, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, 0x65, 0x01, 0x00, - 0x42, 0x83, 0x01, 0x00, 0x00, 0xd1, 0x24, 0x01, - 0x00, 0x0e, 0x65, 0x01, 0x00, 0x42, 0x83, 0x01, - 0x00, 0x00, 0x04, 0x8a, 0x01, 0x00, 0x00, 0x24, + 0x42, 0x84, 0x01, 0x00, 0x00, 0xd1, 0x24, 0x01, + 0x00, 0x0e, 0x65, 0x01, 0x00, 0x42, 0x84, 0x01, + 0x00, 0x00, 0x04, 0x8b, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, 0xdd, 0xea, 0x13, 0x65, 0x01, - 0x00, 0x42, 0x83, 0x01, 0x00, 0x00, 0xdf, 0x41, - 0x84, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, + 0x00, 0x42, 0x84, 0x01, 0x00, 0x00, 0xdf, 0x41, + 0x85, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, 0x5e, 0x05, 0x00, 0xee, 0x29, 0x0c, 0x43, 0x02, - 0x01, 0xb8, 0x05, 0x00, 0x00, 0x00, 0x02, 0x03, - 0x00, 0x11, 0x00, 0xfc, 0x03, 0x26, 0x01, 0xc2, - 0x03, 0x00, 0x0c, 0xac, 0x05, 0x7e, 0x01, 0xb4, - 0xe1, 0x65, 0x01, 0x00, 0x42, 0x6b, 0x02, 0x00, + 0x01, 0xba, 0x05, 0x00, 0x00, 0x00, 0x02, 0x03, + 0x00, 0x11, 0x00, 0xfe, 0x03, 0x26, 0x01, 0xc4, + 0x03, 0x00, 0x0c, 0xae, 0x05, 0x7e, 0x01, 0xb4, + 0xe1, 0x65, 0x01, 0x00, 0x42, 0x6c, 0x02, 0x00, 0x00, 0x24, 0x00, 0x00, 0x0e, 0xdf, 0xee, 0x29, - 0x0c, 0x43, 0x02, 0x01, 0xba, 0x05, 0x01, 0x17, - 0x01, 0x04, 0x03, 0x0a, 0x84, 0x04, 0x18, 0xea, - 0x05, 0x00, 0x01, 0x40, 0xd6, 0x05, 0x00, 0x00, - 0x40, 0xdc, 0x05, 0x00, 0x01, 0x40, 0xfe, 0x05, - 0x00, 0x02, 0x40, 0x8c, 0x06, 0x00, 0x03, 0x40, - 0x84, 0x06, 0x00, 0x04, 0x40, 0xd8, 0x09, 0x00, - 0x05, 0x40, 0xfc, 0x03, 0x00, 0x06, 0x00, 0xda, - 0x09, 0x00, 0x07, 0x00, 0xdc, 0x09, 0x00, 0x08, - 0x40, 0xe6, 0x06, 0x00, 0x09, 0x40, 0xde, 0x09, - 0x00, 0x0a, 0x40, 0xe0, 0x09, 0x00, 0x0b, 0x40, - 0xe2, 0x09, 0x00, 0x0c, 0x40, 0xe4, 0x09, 0x00, - 0x0d, 0x00, 0xe6, 0x09, 0x00, 0x0e, 0x00, 0xe8, - 0x09, 0x00, 0x0f, 0x00, 0xea, 0x09, 0x00, 0x10, - 0x00, 0xec, 0x09, 0x00, 0x11, 0x00, 0xee, 0x09, - 0x00, 0x12, 0x40, 0xf0, 0x09, 0x00, 0x13, 0x40, - 0xf2, 0x09, 0x00, 0x14, 0x40, 0xf4, 0x09, 0x00, - 0x15, 0x00, 0xf6, 0x09, 0x00, 0x16, 0x00, 0xa4, - 0x04, 0x3a, 0x01, 0xaa, 0x04, 0x3d, 0x01, 0xa2, - 0x04, 0x39, 0x01, 0x0c, 0x43, 0x02, 0x01, 0xde, + 0x0c, 0x43, 0x02, 0x01, 0xbc, 0x05, 0x01, 0x17, + 0x01, 0x04, 0x03, 0x0a, 0x84, 0x04, 0x18, 0xec, + 0x05, 0x00, 0x01, 0x40, 0xd8, 0x05, 0x00, 0x00, + 0x40, 0xde, 0x05, 0x00, 0x01, 0x40, 0x80, 0x06, + 0x00, 0x02, 0x40, 0x8e, 0x06, 0x00, 0x03, 0x40, + 0x86, 0x06, 0x00, 0x04, 0x40, 0xda, 0x09, 0x00, + 0x05, 0x40, 0xfe, 0x03, 0x00, 0x06, 0x00, 0xdc, + 0x09, 0x00, 0x07, 0x00, 0xde, 0x09, 0x00, 0x08, + 0x40, 0xe8, 0x06, 0x00, 0x09, 0x40, 0xe0, 0x09, + 0x00, 0x0a, 0x40, 0xe2, 0x09, 0x00, 0x0b, 0x40, + 0xe4, 0x09, 0x00, 0x0c, 0x40, 0xe6, 0x09, 0x00, + 0x0d, 0x00, 0xe8, 0x09, 0x00, 0x0e, 0x00, 0xea, + 0x09, 0x00, 0x0f, 0x00, 0xec, 0x09, 0x00, 0x10, + 0x00, 0xee, 0x09, 0x00, 0x11, 0x00, 0xf0, 0x09, + 0x00, 0x12, 0x40, 0xf2, 0x09, 0x00, 0x13, 0x40, + 0xf4, 0x09, 0x00, 0x14, 0x40, 0xf6, 0x09, 0x00, + 0x15, 0x00, 0xf8, 0x09, 0x00, 0x16, 0x00, 0xa6, + 0x04, 0x3a, 0x01, 0xac, 0x04, 0x3d, 0x01, 0xa4, + 0x04, 0x39, 0x01, 0x0c, 0x43, 0x02, 0x01, 0xe0, 0x09, 0x01, 0x00, 0x01, 0x02, 0x01, 0x00, 0x05, - 0x01, 0xdc, 0x05, 0x00, 0x01, 0x00, 0xd8, 0x09, + 0x01, 0xde, 0x05, 0x00, 0x01, 0x00, 0xda, 0x09, 0x05, 0x01, 0xdd, 0xd1, 0x9d, 0xe1, 0x29, 0x0c, - 0x43, 0x02, 0x01, 0xe0, 0x09, 0x01, 0x00, 0x01, - 0x04, 0x01, 0x00, 0x0d, 0x01, 0xdc, 0x05, 0x00, - 0x01, 0x00, 0xd8, 0x09, 0x05, 0x01, 0xdd, 0x42, - 0x85, 0x01, 0x00, 0x00, 0xdd, 0xe9, 0xb5, 0x9e, - 0x25, 0x01, 0x00, 0x0c, 0x43, 0x02, 0x01, 0xe2, + 0x43, 0x02, 0x01, 0xe2, 0x09, 0x01, 0x00, 0x01, + 0x04, 0x01, 0x00, 0x0d, 0x01, 0xde, 0x05, 0x00, + 0x01, 0x00, 0xda, 0x09, 0x05, 0x01, 0xdd, 0x42, + 0x86, 0x01, 0x00, 0x00, 0xdd, 0xe9, 0xb5, 0x9e, + 0x25, 0x01, 0x00, 0x0c, 0x43, 0x02, 0x01, 0xe4, 0x09, 0x01, 0x00, 0x01, 0x05, 0x02, 0x00, 0x14, - 0x01, 0xdc, 0x05, 0x00, 0x01, 0x00, 0xe0, 0x09, - 0x0b, 0x01, 0xd8, 0x09, 0x05, 0x01, 0xdd, 0xee, - 0xd5, 0xde, 0x42, 0x85, 0x01, 0x00, 0x00, 0xb4, + 0x01, 0xde, 0x05, 0x00, 0x01, 0x00, 0xe2, 0x09, + 0x0b, 0x01, 0xda, 0x09, 0x05, 0x01, 0xdd, 0xee, + 0xd5, 0xde, 0x42, 0x86, 0x01, 0x00, 0x00, 0xb4, 0xde, 0xe9, 0xb5, 0x9e, 0x24, 0x02, 0x00, 0xe2, - 0xd1, 0x28, 0x0c, 0x43, 0x02, 0x01, 0xe4, 0x09, + 0xd1, 0x28, 0x0c, 0x43, 0x02, 0x01, 0xe6, 0x09, 0x00, 0x00, 0x00, 0x03, 0x06, 0x00, 0x49, 0x00, - 0x84, 0x06, 0x04, 0x01, 0xde, 0x09, 0x0a, 0x01, - 0xd6, 0x05, 0x00, 0x01, 0x8c, 0x06, 0x03, 0x01, - 0xea, 0x05, 0x00, 0x03, 0xe2, 0x09, 0x0c, 0x01, - 0x04, 0x7c, 0x02, 0x00, 0x00, 0xe1, 0xde, 0x04, - 0xb0, 0x01, 0x00, 0x00, 0xef, 0x0e, 0xdf, 0x8f, + 0x86, 0x06, 0x04, 0x01, 0xe0, 0x09, 0x0a, 0x01, + 0xd8, 0x05, 0x00, 0x01, 0x8e, 0x06, 0x03, 0x01, + 0xec, 0x05, 0x00, 0x03, 0xe4, 0x09, 0x0c, 0x01, + 0x04, 0x7d, 0x02, 0x00, 0x00, 0xe1, 0xde, 0x04, + 0xb1, 0x01, 0x00, 0x00, 0xef, 0x0e, 0xdf, 0x8f, 0xe3, 0xdf, 0xe0, 0xb5, 0x9e, 0xa6, 0xea, 0x31, 0x5e, 0x04, 0x00, 0xdf, 0x47, 0x04, 0x7e, 0x00, 0x00, 0x00, 0xac, 0xea, 0x1f, 0x5e, 0x04, 0x00, - 0xdf, 0xb5, 0x9d, 0x47, 0x04, 0xb0, 0x01, 0x00, + 0xdf, 0xb5, 0x9d, 0x47, 0x04, 0xb1, 0x01, 0x00, 0x00, 0xac, 0xea, 0x10, 0xdf, 0xb6, 0x9d, 0xe3, - 0x5e, 0x05, 0x00, 0x04, 0xb0, 0x01, 0x00, 0x00, + 0x5e, 0x05, 0x00, 0x04, 0xb1, 0x01, 0x00, 0x00, 0xef, 0x0e, 0x29, 0xdf, 0x8f, 0xe3, 0xec, 0xca, - 0x29, 0x0c, 0x43, 0x02, 0x01, 0xe6, 0x09, 0x00, - 0x00, 0x00, 0x02, 0x04, 0x00, 0x1f, 0x00, 0x84, - 0x06, 0x04, 0x01, 0xd6, 0x05, 0x00, 0x01, 0x8c, - 0x06, 0x03, 0x01, 0xea, 0x05, 0x00, 0x03, 0x04, - 0x7c, 0x02, 0x00, 0x00, 0xe1, 0xde, 0x8f, 0xe2, + 0x29, 0x0c, 0x43, 0x02, 0x01, 0xe8, 0x09, 0x00, + 0x00, 0x00, 0x02, 0x04, 0x00, 0x1f, 0x00, 0x86, + 0x06, 0x04, 0x01, 0xd8, 0x05, 0x00, 0x01, 0x8e, + 0x06, 0x03, 0x01, 0xec, 0x05, 0x00, 0x03, 0x04, + 0x7d, 0x02, 0x00, 0x00, 0xe1, 0xde, 0x8f, 0xe2, 0xde, 0xdf, 0xa6, 0xea, 0x11, 0xe0, 0xde, 0x47, - 0x04, 0x8a, 0x01, 0x00, 0x00, 0xac, 0xeb, 0x06, + 0x04, 0x8b, 0x01, 0x00, 0x00, 0xac, 0xeb, 0x06, 0xde, 0x8f, 0xe2, 0xec, 0xec, 0x29, 0x0c, 0x43, - 0x02, 0x01, 0xe8, 0x09, 0x01, 0x00, 0x01, 0x03, - 0x07, 0x00, 0x4c, 0x01, 0xfa, 0x09, 0x00, 0x01, - 0x00, 0x84, 0x06, 0x04, 0x01, 0xde, 0x09, 0x0a, - 0x01, 0xd6, 0x05, 0x00, 0x01, 0x8c, 0x06, 0x03, - 0x01, 0xdc, 0x05, 0x01, 0x01, 0xea, 0x05, 0x00, - 0x03, 0xe2, 0x09, 0x0c, 0x01, 0x04, 0x49, 0x00, + 0x02, 0x01, 0xea, 0x09, 0x01, 0x00, 0x01, 0x03, + 0x07, 0x00, 0x4c, 0x01, 0xfc, 0x09, 0x00, 0x01, + 0x00, 0x86, 0x06, 0x04, 0x01, 0xe0, 0x09, 0x0a, + 0x01, 0xd8, 0x05, 0x00, 0x01, 0x8e, 0x06, 0x03, + 0x01, 0xde, 0x05, 0x01, 0x01, 0xec, 0x05, 0x00, + 0x03, 0xe4, 0x09, 0x0c, 0x01, 0x04, 0x49, 0x00, 0x00, 0x00, 0xe1, 0xde, 0xd1, 0xef, 0x0e, 0xdf, 0xe0, 0xa6, 0xea, 0x3d, 0x5e, 0x05, 0x00, 0xdf, - 0x91, 0xe3, 0x47, 0x60, 0x04, 0x00, 0x04, 0x8a, - 0x01, 0x00, 0x00, 0xac, 0xea, 0x09, 0x04, 0x69, + 0x91, 0xe3, 0x47, 0x60, 0x04, 0x00, 0x04, 0x8b, + 0x01, 0x00, 0x00, 0xac, 0xea, 0x09, 0x04, 0x6a, 0x02, 0x00, 0x00, 0xe1, 0xec, 0xe2, 0x5e, 0x04, - 0x00, 0x04, 0xa8, 0x01, 0x00, 0x00, 0xac, 0xea, + 0x00, 0x04, 0xa9, 0x01, 0x00, 0x00, 0xac, 0xea, 0x0b, 0xdf, 0xe0, 0xa9, 0xeb, 0x13, 0xdf, 0x8f, 0xe3, 0xec, 0xcd, 0x5e, 0x04, 0x00, 0xd1, 0xac, 0xea, 0xc6, 0x5e, 0x06, 0x00, 0xee, 0x0e, 0x29, - 0x29, 0x0c, 0x43, 0x02, 0x01, 0xea, 0x09, 0x00, + 0x29, 0x0c, 0x43, 0x02, 0x01, 0xec, 0x09, 0x00, 0x00, 0x00, 0x03, 0x09, 0x00, 0xc4, 0x01, 0x00, - 0x84, 0x06, 0x04, 0x01, 0xde, 0x09, 0x0a, 0x01, - 0xd6, 0x05, 0x00, 0x01, 0x8c, 0x06, 0x03, 0x01, - 0xdc, 0x05, 0x01, 0x01, 0xea, 0x05, 0x00, 0x03, - 0xe0, 0x09, 0x0b, 0x01, 0xe2, 0x09, 0x0c, 0x01, - 0xa4, 0x04, 0x00, 0x00, 0x04, 0x27, 0x02, 0x00, - 0x00, 0xe1, 0xde, 0x04, 0xb0, 0x01, 0x00, 0x00, + 0x86, 0x06, 0x04, 0x01, 0xe0, 0x09, 0x0a, 0x01, + 0xd8, 0x05, 0x00, 0x01, 0x8e, 0x06, 0x03, 0x01, + 0xde, 0x05, 0x01, 0x01, 0xec, 0x05, 0x00, 0x03, + 0xe2, 0x09, 0x0b, 0x01, 0xe4, 0x09, 0x0c, 0x01, + 0xa6, 0x04, 0x00, 0x00, 0x04, 0x28, 0x02, 0x00, + 0x00, 0xe1, 0xde, 0x04, 0xb1, 0x01, 0x00, 0x00, 0xef, 0x0e, 0xdf, 0xe0, 0xa6, 0x69, 0xb1, 0x00, 0x00, 0x00, 0x5e, 0x05, 0x00, 0xdf, 0x91, 0xe3, - 0x47, 0x60, 0x04, 0x00, 0x04, 0x8a, 0x01, 0x00, - 0x00, 0xac, 0xea, 0x09, 0x04, 0x69, 0x02, 0x00, + 0x47, 0x60, 0x04, 0x00, 0x04, 0x8b, 0x01, 0x00, + 0x00, 0xac, 0xea, 0x09, 0x04, 0x6a, 0x02, 0x00, 0x00, 0xe1, 0xec, 0xdf, 0x5e, 0x04, 0x00, 0x04, - 0xa8, 0x01, 0x00, 0x00, 0xac, 0xea, 0x0b, 0xdf, + 0xa9, 0x01, 0x00, 0x00, 0xac, 0xea, 0x0b, 0xdf, 0xe0, 0xa6, 0xea, 0xcf, 0xdf, 0x8f, 0xe3, 0xec, - 0xca, 0x5e, 0x06, 0x00, 0xee, 0x04, 0xd2, 0x01, + 0xca, 0x5e, 0x06, 0x00, 0xee, 0x04, 0xd3, 0x01, 0x00, 0x00, 0xac, 0xea, 0x13, 0x5e, 0x04, 0x00, - 0x04, 0xaf, 0x01, 0x00, 0x00, 0xac, 0xea, 0xb3, + 0x04, 0xb0, 0x01, 0x00, 0x00, 0xac, 0xea, 0xb3, 0x5e, 0x07, 0x00, 0xee, 0x0e, 0xec, 0xac, 0x5e, - 0x04, 0x00, 0x04, 0xd2, 0x01, 0x00, 0x00, 0xac, - 0xea, 0x2e, 0xde, 0x04, 0xd2, 0x01, 0x00, 0x00, + 0x04, 0x00, 0x04, 0xd3, 0x01, 0x00, 0x00, 0xac, + 0xea, 0x2e, 0xde, 0x04, 0xd3, 0x01, 0x00, 0x00, 0xef, 0x0e, 0x5e, 0x05, 0x00, 0xdf, 0x47, 0x04, - 0xd2, 0x01, 0x00, 0x00, 0xac, 0x11, 0xeb, 0x0d, - 0x0e, 0x5e, 0x05, 0x00, 0xdf, 0x47, 0x04, 0xaf, + 0xd3, 0x01, 0x00, 0x00, 0xac, 0x11, 0xeb, 0x0d, + 0x0e, 0x5e, 0x05, 0x00, 0xdf, 0x47, 0x04, 0xb0, 0x01, 0x00, 0x00, 0xac, 0x69, 0x7d, 0xff, 0xff, 0xff, 0xdf, 0x8f, 0xe3, 0xed, 0x75, 0xff, 0x5e, - 0x04, 0x00, 0x04, 0xb0, 0x01, 0x00, 0x00, 0xac, + 0x04, 0x00, 0x04, 0xb1, 0x01, 0x00, 0x00, 0xac, 0x69, 0x69, 0xff, 0xff, 0xff, 0x5e, 0x07, 0x00, 0xee, 0x0e, 0xdf, 0xe0, 0xa6, 0xea, 0x11, 0x5e, 0x08, 0x00, 0x5e, 0x05, 0x00, 0xdf, 0x47, 0xef, 0xea, 0x06, 0xdf, 0x8f, 0xe3, 0xec, 0xec, 0x29, - 0x0c, 0x43, 0x02, 0x01, 0xec, 0x09, 0x00, 0x00, - 0x00, 0x03, 0x05, 0x00, 0x41, 0x00, 0x84, 0x06, - 0x04, 0x01, 0xd6, 0x05, 0x00, 0x01, 0x8c, 0x06, - 0x03, 0x01, 0xa4, 0x04, 0x00, 0x00, 0xea, 0x05, + 0x0c, 0x43, 0x02, 0x01, 0xee, 0x09, 0x00, 0x00, + 0x00, 0x03, 0x05, 0x00, 0x41, 0x00, 0x86, 0x06, + 0x04, 0x01, 0xd8, 0x05, 0x00, 0x01, 0x8e, 0x06, + 0x03, 0x01, 0xa6, 0x04, 0x00, 0x00, 0xec, 0x05, 0x00, 0x03, 0x04, 0x47, 0x00, 0x00, 0x00, 0xe1, 0xde, 0xdf, 0xa6, 0xea, 0x36, 0xe0, 0x5e, 0x04, 0x00, 0xde, 0x47, 0xef, 0x11, 0xeb, 0x25, 0x0e, - 0x5e, 0x04, 0x00, 0xde, 0x47, 0x04, 0xa9, 0x01, + 0x5e, 0x04, 0x00, 0xde, 0x47, 0x04, 0xaa, 0x01, 0x00, 0x00, 0xac, 0xea, 0x1e, 0xde, 0xdf, 0xb5, 0x9e, 0xac, 0x11, 0xeb, 0x0f, 0x0e, 0x5e, 0x04, - 0x00, 0xde, 0xb5, 0x9d, 0x47, 0x04, 0xa9, 0x01, + 0x00, 0xde, 0xb5, 0x9d, 0x47, 0x04, 0xaa, 0x01, 0x00, 0x00, 0xad, 0xea, 0x06, 0xde, 0x8f, 0xe2, - 0xec, 0xc7, 0x29, 0x0c, 0x43, 0x02, 0x01, 0xf4, + 0xec, 0xc7, 0x29, 0x0c, 0x43, 0x02, 0x01, 0xf6, 0x09, 0x00, 0x03, 0x00, 0x04, 0x0a, 0x00, 0x95, - 0x02, 0x03, 0xc2, 0x06, 0x00, 0x00, 0x00, 0xdc, - 0x08, 0x00, 0x01, 0x00, 0xfc, 0x09, 0x00, 0x02, - 0x00, 0xdc, 0x09, 0x08, 0x01, 0xd6, 0x05, 0x00, - 0x01, 0x8c, 0x06, 0x03, 0x01, 0xa4, 0x04, 0x00, - 0x00, 0xea, 0x05, 0x00, 0x03, 0xfe, 0x05, 0x02, - 0x01, 0xee, 0x09, 0x12, 0x01, 0x84, 0x06, 0x04, - 0x01, 0xf0, 0x09, 0x13, 0x01, 0xf2, 0x09, 0x14, + 0x02, 0x03, 0xc4, 0x06, 0x00, 0x00, 0x00, 0xde, + 0x08, 0x00, 0x01, 0x00, 0xfe, 0x09, 0x00, 0x02, + 0x00, 0xde, 0x09, 0x08, 0x01, 0xd8, 0x05, 0x00, + 0x01, 0x8e, 0x06, 0x03, 0x01, 0xa6, 0x04, 0x00, + 0x00, 0xec, 0x05, 0x00, 0x03, 0x80, 0x06, 0x02, + 0x01, 0xf0, 0x09, 0x12, 0x01, 0x86, 0x06, 0x04, + 0x01, 0xf2, 0x09, 0x13, 0x01, 0xf4, 0x09, 0x14, 0x01, 0xb5, 0xe1, 0xde, 0xdf, 0xa6, 0xea, 0x0f, 0xe0, 0x5e, 0x04, 0x00, 0xde, 0x47, 0xef, 0xea, 0x06, 0xde, 0x8f, 0xe2, 0xec, 0xee, 0x5e, 0x04, - 0x00, 0x42, 0x85, 0x01, 0x00, 0x00, 0x5e, 0x05, - 0x00, 0xde, 0x24, 0x02, 0x00, 0xc9, 0x04, 0x7f, - 0x02, 0x00, 0x00, 0xc5, 0x9d, 0x04, 0x7f, 0x02, + 0x00, 0x42, 0x86, 0x01, 0x00, 0x00, 0x5e, 0x05, + 0x00, 0xde, 0x24, 0x02, 0x00, 0xc9, 0x04, 0x80, + 0x02, 0x00, 0x00, 0xc5, 0x9d, 0x04, 0x80, 0x02, 0x00, 0x00, 0x9d, 0xca, 0x5e, 0x06, 0x00, 0x42, - 0xab, 0x01, 0x00, 0x00, 0xc6, 0x24, 0x01, 0x00, - 0xb4, 0xa9, 0xea, 0x7c, 0x04, 0x2d, 0x02, 0x00, + 0xac, 0x01, 0x00, 0x00, 0xc6, 0x24, 0x01, 0x00, + 0xb4, 0xa9, 0xea, 0x7c, 0x04, 0x2e, 0x02, 0x00, 0x00, 0x5f, 0x07, 0x00, 0xc5, 0x04, 0x03, 0x00, 0x00, 0x00, 0xae, 0x11, 0xeb, 0x09, 0x0e, 0xc5, 0x04, 0x02, 0x00, 0x00, 0x00, 0xae, 0xea, 0x0b, @@ -2564,27 +2564,27 @@ const uint8_t qjsc_repl[23373] = { 0x00, 0xec, 0x12, 0xc5, 0x04, 0x46, 0x00, 0x00, 0x00, 0xae, 0xea, 0x09, 0x04, 0x46, 0x00, 0x00, 0x00, 0x5f, 0x07, 0x00, 0x5e, 0x08, 0x00, 0x42, - 0xab, 0x01, 0x00, 0x00, 0xc6, 0x24, 0x01, 0x00, + 0xac, 0x01, 0x00, 0x00, 0xc6, 0x24, 0x01, 0x00, 0xb4, 0xa9, 0xea, 0x03, 0xb4, 0xe1, 0x29, 0xde, 0xcb, 0xc7, 0xdf, 0xa6, 0xea, 0x12, 0x5e, 0x04, - 0x00, 0xc7, 0x47, 0x04, 0xcd, 0x01, 0x00, 0x00, + 0x00, 0xc7, 0x47, 0x04, 0xce, 0x01, 0x00, 0x00, 0xac, 0xea, 0x05, 0x93, 0x02, 0xec, 0xeb, 0xc7, 0xdf, 0xa6, 0xea, 0x17, 0x5e, 0x04, 0x00, 0xc7, - 0x47, 0x04, 0xc4, 0x01, 0x00, 0x00, 0xac, 0xea, + 0x47, 0x04, 0xc5, 0x01, 0x00, 0x00, 0xac, 0xea, 0x0a, 0x04, 0x1b, 0x00, 0x00, 0x00, 0x5f, 0x07, - 0x00, 0x29, 0x5e, 0x09, 0x00, 0x42, 0xab, 0x01, + 0x00, 0x29, 0x5e, 0x09, 0x00, 0x42, 0xac, 0x01, 0x00, 0x00, 0xc6, 0x24, 0x01, 0x00, 0xb4, 0xa9, - 0xea, 0x0a, 0x04, 0xfe, 0x01, 0x00, 0x00, 0x5f, - 0x07, 0x00, 0x29, 0x04, 0x80, 0x02, 0x00, 0x00, + 0xea, 0x0a, 0x04, 0xff, 0x01, 0x00, 0x00, 0x5f, + 0x07, 0x00, 0x29, 0x04, 0x81, 0x02, 0x00, 0x00, 0x5f, 0x07, 0x00, 0xb4, 0xe1, 0x29, 0x0c, 0x43, - 0x02, 0x01, 0xf6, 0x09, 0x02, 0x00, 0x02, 0x03, + 0x02, 0x01, 0xf8, 0x09, 0x02, 0x00, 0x02, 0x03, 0x02, 0x00, 0x2b, 0x02, 0xf6, 0x01, 0x00, 0x01, - 0x00, 0x82, 0x0a, 0x00, 0x01, 0x00, 0xe6, 0x06, - 0x09, 0x01, 0x84, 0x06, 0x04, 0x01, 0xdd, 0xe9, - 0xd1, 0xa6, 0xea, 0x12, 0xdd, 0x42, 0x98, 0x01, + 0x00, 0x84, 0x0a, 0x00, 0x01, 0x00, 0xe8, 0x06, + 0x09, 0x01, 0x86, 0x06, 0x04, 0x01, 0xdd, 0xe9, + 0xd1, 0xa6, 0xea, 0x12, 0xdd, 0x42, 0x99, 0x01, 0x00, 0x00, 0x04, 0x16, 0x00, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, 0xec, 0xea, 0xdd, 0xe9, 0xd2, - 0xa6, 0xea, 0x0e, 0xdd, 0x42, 0x98, 0x01, 0x00, + 0xa6, 0xea, 0x0e, 0xdd, 0x42, 0x99, 0x01, 0x00, 0x00, 0xde, 0x24, 0x01, 0x00, 0x0e, 0xec, 0xee, 0x29, 0xbf, 0x00, 0xc2, 0x0a, 0xbf, 0x01, 0xc2, 0x0b, 0xbf, 0x02, 0xc2, 0x0c, 0xbf, 0x03, 0xc2, @@ -2593,55 +2593,55 @@ const uint8_t qjsc_repl[23373] = { 0x11, 0xbf, 0x08, 0xc2, 0x15, 0xbf, 0x09, 0xc2, 0x16, 0xd1, 0xe9, 0xcc, 0xc0, 0xc2, 0x05, 0xb4, 0xc2, 0x06, 0xb5, 0xc2, 0x08, 0x26, 0x00, 0x00, - 0xc2, 0x09, 0x04, 0x7f, 0x02, 0x00, 0x00, 0x04, - 0x82, 0x02, 0x00, 0x00, 0x9d, 0x04, 0x83, 0x02, - 0x00, 0x00, 0x9d, 0x04, 0x84, 0x02, 0x00, 0x00, - 0x9d, 0x04, 0x85, 0x02, 0x00, 0x00, 0x9d, 0x04, - 0x86, 0x02, 0x00, 0x00, 0x9d, 0x04, 0x87, 0x02, - 0x00, 0x00, 0x9d, 0x04, 0x88, 0x02, 0x00, 0x00, - 0x9d, 0x04, 0x89, 0x02, 0x00, 0x00, 0x9d, 0x04, - 0x8a, 0x02, 0x00, 0x00, 0x9d, 0xc2, 0x12, 0x04, - 0x8b, 0x02, 0x00, 0x00, 0xc2, 0x13, 0x04, 0x8c, + 0xc2, 0x09, 0x04, 0x80, 0x02, 0x00, 0x00, 0x04, + 0x83, 0x02, 0x00, 0x00, 0x9d, 0x04, 0x84, 0x02, + 0x00, 0x00, 0x9d, 0x04, 0x85, 0x02, 0x00, 0x00, + 0x9d, 0x04, 0x86, 0x02, 0x00, 0x00, 0x9d, 0x04, + 0x87, 0x02, 0x00, 0x00, 0x9d, 0x04, 0x88, 0x02, + 0x00, 0x00, 0x9d, 0x04, 0x89, 0x02, 0x00, 0x00, + 0x9d, 0x04, 0x8a, 0x02, 0x00, 0x00, 0x9d, 0x04, + 0x8b, 0x02, 0x00, 0x00, 0x9d, 0xc2, 0x12, 0x04, + 0x8c, 0x02, 0x00, 0x00, 0xc2, 0x13, 0x04, 0x8d, 0x02, 0x00, 0x00, 0xc2, 0x14, 0xb4, 0xc9, 0xc5, 0xc8, 0xa6, 0x69, 0x6a, 0x01, 0x00, 0x00, 0x07, 0xc2, 0x04, 0xc5, 0xcb, 0xd1, 0xc5, 0x91, 0xc9, - 0x47, 0xce, 0x11, 0x04, 0xcd, 0x01, 0x00, 0x00, - 0xae, 0xeb, 0x1c, 0x11, 0x04, 0x8d, 0x02, 0x00, - 0x00, 0xae, 0xeb, 0x13, 0x11, 0x04, 0x8e, 0x02, - 0x00, 0x00, 0xae, 0xeb, 0x0a, 0x11, 0x04, 0x8a, + 0x47, 0xce, 0x11, 0x04, 0xce, 0x01, 0x00, 0x00, + 0xae, 0xeb, 0x1c, 0x11, 0x04, 0x8e, 0x02, 0x00, + 0x00, 0xae, 0xeb, 0x13, 0x11, 0x04, 0x8f, 0x02, + 0x00, 0x00, 0xae, 0xeb, 0x0a, 0x11, 0x04, 0x8b, 0x01, 0x00, 0x00, 0xae, 0xea, 0x04, 0x0e, 0xec, - 0xc7, 0x11, 0x04, 0x8f, 0x02, 0x00, 0x00, 0xae, - 0xeb, 0x0a, 0x11, 0x04, 0xd8, 0x01, 0x00, 0x00, + 0xc7, 0x11, 0x04, 0x90, 0x02, 0x00, 0x00, 0xae, + 0xeb, 0x0a, 0x11, 0x04, 0xd9, 0x01, 0x00, 0x00, 0xae, 0xea, 0x18, 0xc5, 0xc8, 0xa6, 0xea, 0x0d, 0xd1, 0xc5, 0x47, 0xc6, 0xac, 0xea, 0x06, 0x93, 0x00, 0x0e, 0xec, 0xa4, 0xb5, 0xc2, 0x08, 0x0e, - 0xec, 0x9e, 0x11, 0x04, 0xb0, 0x01, 0x00, 0x00, + 0xec, 0x9e, 0x11, 0x04, 0xb1, 0x01, 0x00, 0x00, 0xae, 0xea, 0x44, 0xc5, 0xc8, 0xa6, 0xea, 0x13, 0xd1, 0xc5, 0x47, 0x04, 0x7e, 0x00, 0x00, 0x00, 0xac, 0xea, 0x08, 0xc1, 0x0d, 0xee, 0x0e, 0xed, 0xdc, 0x00, 0xc5, 0xc8, 0xa6, 0xea, 0x13, 0xd1, - 0xc5, 0x47, 0x04, 0xb0, 0x01, 0x00, 0x00, 0xac, + 0xc5, 0x47, 0x04, 0xb1, 0x01, 0x00, 0x00, 0xac, 0xea, 0x08, 0xc1, 0x0e, 0xee, 0x0e, 0xed, 0xc5, 0x00, 0xc1, 0x08, 0xea, 0x0b, 0xc1, 0x10, 0xee, 0x0e, 0xb4, 0xc2, 0x08, 0xed, 0xb7, 0x00, 0xb5, 0xc2, 0x08, 0x0e, 0xed, 0x53, 0xff, 0x11, 0x04, - 0xac, 0x01, 0x00, 0x00, 0xae, 0xeb, 0x13, 0x11, - 0x04, 0xad, 0x01, 0x00, 0x00, 0xae, 0xeb, 0x0a, - 0x11, 0x04, 0xae, 0x01, 0x00, 0x00, 0xae, 0xea, + 0xad, 0x01, 0x00, 0x00, 0xae, 0xeb, 0x13, 0x11, + 0x04, 0xae, 0x01, 0x00, 0x00, 0xae, 0xeb, 0x0a, + 0x11, 0x04, 0xaf, 0x01, 0x00, 0x00, 0xae, 0xea, 0x0c, 0xc1, 0x0f, 0xc6, 0xef, 0x0e, 0xb4, 0xc2, - 0x08, 0xed, 0x8a, 0x00, 0x11, 0x04, 0xc4, 0x01, - 0x00, 0x00, 0xae, 0xeb, 0x13, 0x11, 0x04, 0xd2, + 0x08, 0xed, 0x8a, 0x00, 0x11, 0x04, 0xc5, 0x01, + 0x00, 0x00, 0xae, 0xeb, 0x13, 0x11, 0x04, 0xd3, 0x01, 0x00, 0x00, 0xae, 0xeb, 0x0a, 0x11, 0x04, - 0x16, 0x02, 0x00, 0x00, 0xae, 0xea, 0x0f, 0xb5, + 0x17, 0x02, 0x00, 0x00, 0xae, 0xea, 0x0f, 0xb5, 0xc2, 0x08, 0x93, 0x06, 0xc1, 0x0a, 0xc6, 0xef, - 0x0e, 0x0e, 0xed, 0x04, 0xff, 0x11, 0x04, 0xc5, + 0x0e, 0x0e, 0xed, 0x04, 0xff, 0x11, 0x04, 0xc6, 0x01, 0x00, 0x00, 0xae, 0xeb, 0x13, 0x11, 0x04, - 0xaf, 0x01, 0x00, 0x00, 0xae, 0xeb, 0x0a, 0x11, - 0x04, 0x17, 0x02, 0x00, 0x00, 0xae, 0xea, 0x25, + 0xb0, 0x01, 0x00, 0x00, 0xae, 0xeb, 0x0a, 0x11, + 0x04, 0x18, 0x02, 0x00, 0x00, 0xae, 0xea, 0x25, 0xb4, 0xc2, 0x08, 0xc1, 0x06, 0xb4, 0xa8, 0xea, 0x13, 0xde, 0xc1, 0x0b, 0xee, 0xc6, 0xf0, 0xea, 0x0b, 0x92, 0x06, 0xc1, 0x0c, 0xee, 0x0e, 0x0e, - 0xed, 0xce, 0xfe, 0x04, 0x69, 0x02, 0x00, 0x00, + 0xed, 0xce, 0xfe, 0x04, 0x6a, 0x02, 0x00, 0x00, 0xc2, 0x04, 0xec, 0x21, 0xdf, 0xc6, 0xef, 0xea, 0x0a, 0xc1, 0x11, 0xee, 0x0e, 0xb4, 0xc2, 0x08, 0xec, 0x13, 0xdd, 0xc6, 0xef, 0xea, 0x07, 0xc1, @@ -2651,49 +2651,49 @@ const uint8_t qjsc_repl[23373] = { 0xf0, 0x0e, 0xed, 0x94, 0xfe, 0xc1, 0x16, 0xc8, 0xc8, 0xf0, 0x0e, 0xc1, 0x05, 0xc1, 0x06, 0xc1, 0x09, 0x26, 0x03, 0x00, 0x28, 0x0c, 0x43, 0x02, - 0x01, 0xbc, 0x05, 0x01, 0x00, 0x01, 0x03, 0x01, - 0x00, 0x36, 0x01, 0xc2, 0x06, 0x00, 0x01, 0x00, - 0xc2, 0x03, 0x00, 0x0c, 0x65, 0x00, 0x00, 0x42, - 0x90, 0x02, 0x00, 0x00, 0x04, 0x91, 0x02, 0x00, + 0x01, 0xbe, 0x05, 0x01, 0x00, 0x01, 0x03, 0x01, + 0x00, 0x36, 0x01, 0xc4, 0x06, 0x00, 0x01, 0x00, + 0xc4, 0x03, 0x00, 0x0c, 0x65, 0x00, 0x00, 0x42, + 0x91, 0x02, 0x00, 0x00, 0x04, 0x92, 0x02, 0x00, 0x00, 0x24, 0x01, 0x00, 0x11, 0xeb, 0x1b, 0x0e, - 0x65, 0x00, 0x00, 0x42, 0x90, 0x02, 0x00, 0x00, - 0x04, 0x92, 0x02, 0x00, 0x00, 0x24, 0x01, 0x00, - 0x11, 0xeb, 0x07, 0x0e, 0x04, 0xa9, 0x01, 0x00, - 0x00, 0x04, 0xb0, 0x01, 0x00, 0x00, 0x9d, 0xd1, - 0x9d, 0x28, 0x0c, 0x43, 0x02, 0x01, 0xbe, 0x05, + 0x65, 0x00, 0x00, 0x42, 0x91, 0x02, 0x00, 0x00, + 0x04, 0x93, 0x02, 0x00, 0x00, 0x24, 0x01, 0x00, + 0x11, 0xeb, 0x07, 0x0e, 0x04, 0xaa, 0x01, 0x00, + 0x00, 0x04, 0xb1, 0x01, 0x00, 0x00, 0x9d, 0xd1, + 0x9d, 0x28, 0x0c, 0x43, 0x02, 0x01, 0xc0, 0x05, 0x00, 0x03, 0x00, 0x05, 0x03, 0x00, 0x67, 0x03, - 0xc2, 0x06, 0x00, 0x00, 0x00, 0xa6, 0x0a, 0x00, - 0x01, 0x00, 0xb6, 0x09, 0x05, 0x00, 0x03, 0xe6, - 0x03, 0x1b, 0x01, 0xc2, 0x03, 0x00, 0x0c, 0xbc, - 0x05, 0x86, 0x01, 0x01, 0xdd, 0x42, 0xa4, 0x01, + 0xc4, 0x06, 0x00, 0x00, 0x00, 0xa8, 0x0a, 0x00, + 0x01, 0x00, 0xb8, 0x09, 0x05, 0x00, 0x03, 0xe8, + 0x03, 0x1b, 0x01, 0xc4, 0x03, 0x00, 0x0c, 0xbe, + 0x05, 0x86, 0x01, 0x01, 0xdd, 0x42, 0xa5, 0x01, 0x00, 0x00, 0xbd, 0x18, 0xfc, 0x24, 0x01, 0x00, - 0x42, 0x5c, 0x00, 0x00, 0x00, 0x04, 0x8a, 0x01, - 0x00, 0x00, 0x24, 0x01, 0x00, 0x42, 0x40, 0x02, + 0x42, 0x5c, 0x00, 0x00, 0x00, 0x04, 0x8b, 0x01, + 0x00, 0x00, 0x24, 0x01, 0x00, 0x42, 0x41, 0x02, 0x00, 0x00, 0x24, 0x00, 0x00, 0xcd, 0xea, 0x43, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x65, 0x01, 0x00, - 0x42, 0x94, 0x02, 0x00, 0x00, 0xdf, 0x04, 0x95, - 0x02, 0x00, 0x00, 0xef, 0x04, 0x2e, 0x02, 0x00, - 0x00, 0x24, 0x02, 0x00, 0xce, 0x42, 0x83, 0x01, - 0x00, 0x00, 0xc5, 0x04, 0x8a, 0x01, 0x00, 0x00, - 0x9d, 0x24, 0x01, 0x00, 0x0e, 0xc6, 0x42, 0x96, + 0x42, 0x95, 0x02, 0x00, 0x00, 0xdf, 0x04, 0x96, + 0x02, 0x00, 0x00, 0xef, 0x04, 0x2f, 0x02, 0x00, + 0x00, 0x24, 0x02, 0x00, 0xce, 0x42, 0x84, 0x01, + 0x00, 0x00, 0xc5, 0x04, 0x8b, 0x01, 0x00, 0x00, + 0x9d, 0x24, 0x01, 0x00, 0x0e, 0xc6, 0x42, 0x97, 0x02, 0x00, 0x00, 0x24, 0x00, 0x00, 0x0e, 0x0e, 0x29, 0xcb, 0x6c, 0x06, 0x00, 0x00, 0x00, 0x0e, - 0x29, 0x2f, 0x29, 0x0c, 0x43, 0x02, 0x01, 0xc0, + 0x29, 0x2f, 0x29, 0x0c, 0x43, 0x02, 0x01, 0xc2, 0x05, 0x00, 0x01, 0x00, 0x04, 0x04, 0x00, 0x2f, - 0x01, 0xe2, 0x05, 0x00, 0x00, 0x00, 0xc2, 0x03, - 0x00, 0x0c, 0xbc, 0x05, 0x86, 0x01, 0x01, 0xe6, - 0x03, 0x1b, 0x01, 0xe8, 0x03, 0x1c, 0x01, 0x65, - 0x00, 0x00, 0x42, 0x97, 0x02, 0x00, 0x00, 0xde, - 0x04, 0x95, 0x02, 0x00, 0x00, 0xef, 0x24, 0x01, - 0x00, 0xcd, 0xea, 0x1a, 0xc5, 0x42, 0x40, 0x02, + 0x01, 0xe4, 0x05, 0x00, 0x00, 0x00, 0xc4, 0x03, + 0x00, 0x0c, 0xbe, 0x05, 0x86, 0x01, 0x01, 0xe8, + 0x03, 0x1b, 0x01, 0xea, 0x03, 0x1c, 0x01, 0x65, + 0x00, 0x00, 0x42, 0x98, 0x02, 0x00, 0x00, 0xde, + 0x04, 0x96, 0x02, 0x00, 0x00, 0xef, 0x24, 0x01, + 0x00, 0xcd, 0xea, 0x1a, 0xc5, 0x42, 0x41, 0x02, 0x00, 0x00, 0x24, 0x00, 0x00, 0x42, 0x5e, 0x00, - 0x00, 0x00, 0x04, 0x8a, 0x01, 0x00, 0x00, 0x24, + 0x00, 0x00, 0x04, 0x8b, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0xe7, 0xe9, 0xe4, 0x29, 0x0c, 0x43, - 0x02, 0x01, 0xc2, 0x05, 0x00, 0x02, 0x00, 0x04, - 0x04, 0x02, 0x51, 0x02, 0x86, 0x07, 0x00, 0x00, - 0x00, 0xc2, 0x06, 0x00, 0x01, 0x00, 0xc2, 0x03, - 0x00, 0x0c, 0xd6, 0x03, 0x13, 0x01, 0xd4, 0x03, - 0x12, 0x01, 0xdc, 0x03, 0x16, 0x01, 0x07, 0x16, + 0x02, 0x01, 0xc4, 0x05, 0x00, 0x02, 0x00, 0x04, + 0x04, 0x02, 0x51, 0x02, 0x88, 0x07, 0x00, 0x00, + 0x00, 0xc4, 0x06, 0x00, 0x01, 0x00, 0xc4, 0x03, + 0x00, 0x0c, 0xd8, 0x03, 0x13, 0x01, 0xd6, 0x03, + 0x12, 0x01, 0xde, 0x03, 0x16, 0x01, 0x07, 0x16, 0x28, 0x5c, 0x64, 0x2b, 0x29, 0x3b, 0x28, 0x5c, 0x64, 0x2b, 0x29, 0x07, 0xa8, 0x01, 0x00, 0x00, 0x03, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x09, 0x06, @@ -2706,14 +2706,14 @@ const uint8_t qjsc_repl[23373] = { 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f, 0x01, 0x00, 0x00, 0x00, 0x16, 0x01, 0x00, 0x30, 0x00, 0x39, 0x00, 0x0b, 0x0d, 0x02, 0x0d, - 0x00, 0x0b, 0x65, 0x00, 0x00, 0x42, 0x90, 0x02, - 0x00, 0x00, 0x04, 0x98, 0x02, 0x00, 0x00, 0x24, - 0x01, 0x00, 0xce, 0xea, 0x21, 0xc6, 0x42, 0xb1, + 0x00, 0x0b, 0x65, 0x00, 0x00, 0x42, 0x91, 0x02, + 0x00, 0x00, 0x04, 0x99, 0x02, 0x00, 0x00, 0x24, + 0x01, 0x00, 0xce, 0xea, 0x21, 0xc6, 0x42, 0xb2, 0x01, 0x00, 0x00, 0xbe, 0x00, 0xbe, 0x01, 0x33, 0x24, 0x01, 0x00, 0xcd, 0xea, 0x10, 0xc5, 0xb6, 0x47, 0x8d, 0xb4, 0xaf, 0xea, 0x08, 0xdf, 0x41, - 0x56, 0x02, 0x00, 0x00, 0xe2, 0x65, 0x00, 0x00, - 0x42, 0x90, 0x02, 0x00, 0x00, 0x04, 0x99, 0x02, + 0x57, 0x02, 0x00, 0x00, 0xe2, 0x65, 0x00, 0x00, + 0x42, 0x91, 0x02, 0x00, 0x00, 0x04, 0x9a, 0x02, 0x00, 0x00, 0x24, 0x01, 0x00, 0xce, 0xea, 0x0b, 0xc6, 0xb4, 0x47, 0x8d, 0xb4, 0xaf, 0xea, 0x03, 0x09, 0xe4, 0x29, 0xbf, 0x00, 0xc2, 0x34, 0xbf, @@ -2757,171 +2757,171 @@ const uint8_t qjsc_repl[23373] = { 0x57, 0xc2, 0x85, 0xbf, 0x58, 0xc2, 0x86, 0xbf, 0x59, 0xc2, 0x87, 0xbf, 0x5a, 0xc2, 0x88, 0xbf, 0x5b, 0xc2, 0x89, 0xd1, 0x65, 0x02, 0x00, 0x43, - 0xe3, 0x00, 0x00, 0x00, 0xd1, 0x65, 0x01, 0x00, - 0x43, 0xe2, 0x00, 0x00, 0x00, 0xd1, 0x65, 0x00, - 0x00, 0x43, 0xe1, 0x00, 0x00, 0x00, 0xd1, 0x41, - 0x92, 0x00, 0x00, 0x00, 0xc9, 0xd1, 0x41, 0x96, - 0x00, 0x00, 0x00, 0xca, 0xd1, 0x41, 0x95, 0x00, - 0x00, 0x00, 0xcb, 0xd1, 0x41, 0x97, 0x00, 0x00, - 0x00, 0xcc, 0xd1, 0x41, 0xb0, 0x00, 0x00, 0x00, - 0xc2, 0x04, 0xd1, 0x41, 0xa5, 0x00, 0x00, 0x00, - 0xc2, 0x05, 0xd1, 0x41, 0x93, 0x00, 0x00, 0x00, - 0xc2, 0x06, 0xd1, 0x41, 0x9c, 0x00, 0x00, 0x00, - 0xc2, 0x07, 0xd1, 0x41, 0xa0, 0x00, 0x00, 0x00, - 0xc2, 0x08, 0xd1, 0x41, 0x94, 0x00, 0x00, 0x00, - 0xc2, 0x09, 0xd1, 0x41, 0x98, 0x00, 0x00, 0x00, - 0xc2, 0x0a, 0xd1, 0x41, 0x9a, 0x00, 0x00, 0x00, - 0xc2, 0x0b, 0xd1, 0x41, 0x9b, 0x00, 0x00, 0x00, - 0xc2, 0x0c, 0xd1, 0x41, 0xe5, 0x00, 0x00, 0x00, - 0xc2, 0x0d, 0xd1, 0x41, 0xe6, 0x00, 0x00, 0x00, - 0xc2, 0x0e, 0xd1, 0x41, 0xe7, 0x00, 0x00, 0x00, - 0xc2, 0x0f, 0xd1, 0x41, 0xe8, 0x00, 0x00, 0x00, - 0xc2, 0x10, 0x0b, 0x04, 0x9a, 0x02, 0x00, 0x00, - 0x4c, 0x84, 0x01, 0x00, 0x00, 0x04, 0x9b, 0x02, - 0x00, 0x00, 0x4c, 0x9c, 0x02, 0x00, 0x00, 0x04, - 0x9d, 0x02, 0x00, 0x00, 0x4c, 0x9e, 0x02, 0x00, - 0x00, 0x04, 0x9f, 0x02, 0x00, 0x00, 0x4c, 0xa0, - 0x02, 0x00, 0x00, 0x04, 0xa1, 0x02, 0x00, 0x00, - 0x4c, 0xa2, 0x02, 0x00, 0x00, 0x04, 0xa3, 0x02, - 0x00, 0x00, 0x4c, 0xa4, 0x02, 0x00, 0x00, 0x04, - 0xa5, 0x02, 0x00, 0x00, 0x4c, 0xa6, 0x02, 0x00, - 0x00, 0x04, 0xa7, 0x02, 0x00, 0x00, 0x4c, 0xa8, - 0x02, 0x00, 0x00, 0x04, 0xa9, 0x02, 0x00, 0x00, - 0x4c, 0xaa, 0x02, 0x00, 0x00, 0x04, 0xab, 0x02, - 0x00, 0x00, 0x4c, 0xac, 0x02, 0x00, 0x00, 0x04, - 0xab, 0x02, 0x00, 0x00, 0x4c, 0xad, 0x02, 0x00, - 0x00, 0x04, 0xae, 0x02, 0x00, 0x00, 0x4c, 0xaf, - 0x02, 0x00, 0x00, 0x04, 0xb0, 0x02, 0x00, 0x00, - 0x4c, 0xb1, 0x02, 0x00, 0x00, 0x04, 0xb2, 0x02, - 0x00, 0x00, 0x4c, 0xb3, 0x02, 0x00, 0x00, 0x04, - 0xb4, 0x02, 0x00, 0x00, 0x4c, 0xb5, 0x02, 0x00, - 0x00, 0x04, 0xb6, 0x02, 0x00, 0x00, 0x4c, 0xb7, - 0x02, 0x00, 0x00, 0x04, 0xb8, 0x02, 0x00, 0x00, - 0x4c, 0xb9, 0x02, 0x00, 0x00, 0x04, 0xba, 0x02, - 0x00, 0x00, 0x4c, 0xbb, 0x02, 0x00, 0x00, 0xc2, - 0x11, 0x0b, 0x0b, 0x04, 0xa8, 0x02, 0x00, 0x00, - 0x4c, 0x28, 0x02, 0x00, 0x00, 0x04, 0xbb, 0x02, - 0x00, 0x00, 0x4c, 0x48, 0x00, 0x00, 0x00, 0x04, - 0xaa, 0x02, 0x00, 0x00, 0x4c, 0x7c, 0x02, 0x00, - 0x00, 0x04, 0xa6, 0x02, 0x00, 0x00, 0x4c, 0x2b, + 0xe4, 0x00, 0x00, 0x00, 0xd1, 0x65, 0x01, 0x00, + 0x43, 0xe3, 0x00, 0x00, 0x00, 0xd1, 0x65, 0x00, + 0x00, 0x43, 0xe2, 0x00, 0x00, 0x00, 0xd1, 0x41, + 0x93, 0x00, 0x00, 0x00, 0xc9, 0xd1, 0x41, 0x97, + 0x00, 0x00, 0x00, 0xca, 0xd1, 0x41, 0x96, 0x00, + 0x00, 0x00, 0xcb, 0xd1, 0x41, 0x98, 0x00, 0x00, + 0x00, 0xcc, 0xd1, 0x41, 0xb1, 0x00, 0x00, 0x00, + 0xc2, 0x04, 0xd1, 0x41, 0xa6, 0x00, 0x00, 0x00, + 0xc2, 0x05, 0xd1, 0x41, 0x94, 0x00, 0x00, 0x00, + 0xc2, 0x06, 0xd1, 0x41, 0x9d, 0x00, 0x00, 0x00, + 0xc2, 0x07, 0xd1, 0x41, 0xa1, 0x00, 0x00, 0x00, + 0xc2, 0x08, 0xd1, 0x41, 0x95, 0x00, 0x00, 0x00, + 0xc2, 0x09, 0xd1, 0x41, 0x99, 0x00, 0x00, 0x00, + 0xc2, 0x0a, 0xd1, 0x41, 0x9b, 0x00, 0x00, 0x00, + 0xc2, 0x0b, 0xd1, 0x41, 0x9c, 0x00, 0x00, 0x00, + 0xc2, 0x0c, 0xd1, 0x41, 0xe6, 0x00, 0x00, 0x00, + 0xc2, 0x0d, 0xd1, 0x41, 0xe7, 0x00, 0x00, 0x00, + 0xc2, 0x0e, 0xd1, 0x41, 0xe8, 0x00, 0x00, 0x00, + 0xc2, 0x0f, 0xd1, 0x41, 0xe9, 0x00, 0x00, 0x00, + 0xc2, 0x10, 0x0b, 0x04, 0x9b, 0x02, 0x00, 0x00, + 0x4c, 0x85, 0x01, 0x00, 0x00, 0x04, 0x9c, 0x02, + 0x00, 0x00, 0x4c, 0x9d, 0x02, 0x00, 0x00, 0x04, + 0x9e, 0x02, 0x00, 0x00, 0x4c, 0x9f, 0x02, 0x00, + 0x00, 0x04, 0xa0, 0x02, 0x00, 0x00, 0x4c, 0xa1, + 0x02, 0x00, 0x00, 0x04, 0xa2, 0x02, 0x00, 0x00, + 0x4c, 0xa3, 0x02, 0x00, 0x00, 0x04, 0xa4, 0x02, + 0x00, 0x00, 0x4c, 0xa5, 0x02, 0x00, 0x00, 0x04, + 0xa6, 0x02, 0x00, 0x00, 0x4c, 0xa7, 0x02, 0x00, + 0x00, 0x04, 0xa8, 0x02, 0x00, 0x00, 0x4c, 0xa9, + 0x02, 0x00, 0x00, 0x04, 0xaa, 0x02, 0x00, 0x00, + 0x4c, 0xab, 0x02, 0x00, 0x00, 0x04, 0xac, 0x02, + 0x00, 0x00, 0x4c, 0xad, 0x02, 0x00, 0x00, 0x04, + 0xac, 0x02, 0x00, 0x00, 0x4c, 0xae, 0x02, 0x00, + 0x00, 0x04, 0xaf, 0x02, 0x00, 0x00, 0x4c, 0xb0, 0x02, 0x00, 0x00, 0x04, 0xb1, 0x02, 0x00, 0x00, - 0x4c, 0x16, 0x00, 0x00, 0x00, 0x04, 0xaf, 0x02, - 0x00, 0x00, 0x4c, 0x69, 0x02, 0x00, 0x00, 0x04, - 0xb3, 0x02, 0x00, 0x00, 0x4c, 0x1b, 0x00, 0x00, - 0x00, 0x04, 0xb1, 0x02, 0x00, 0x00, 0x4c, 0x80, - 0x02, 0x00, 0x00, 0x04, 0xbb, 0x02, 0x00, 0x00, - 0x4c, 0x2d, 0x02, 0x00, 0x00, 0x04, 0xbb, 0x02, + 0x4c, 0xb2, 0x02, 0x00, 0x00, 0x04, 0xb3, 0x02, + 0x00, 0x00, 0x4c, 0xb4, 0x02, 0x00, 0x00, 0x04, + 0xb5, 0x02, 0x00, 0x00, 0x4c, 0xb6, 0x02, 0x00, + 0x00, 0x04, 0xb7, 0x02, 0x00, 0x00, 0x4c, 0xb8, + 0x02, 0x00, 0x00, 0x04, 0xb9, 0x02, 0x00, 0x00, + 0x4c, 0xba, 0x02, 0x00, 0x00, 0x04, 0xbb, 0x02, + 0x00, 0x00, 0x4c, 0xbc, 0x02, 0x00, 0x00, 0xc2, + 0x11, 0x0b, 0x0b, 0x04, 0xa9, 0x02, 0x00, 0x00, + 0x4c, 0x29, 0x02, 0x00, 0x00, 0x04, 0xbc, 0x02, + 0x00, 0x00, 0x4c, 0x48, 0x00, 0x00, 0x00, 0x04, + 0xab, 0x02, 0x00, 0x00, 0x4c, 0x7d, 0x02, 0x00, + 0x00, 0x04, 0xa7, 0x02, 0x00, 0x00, 0x4c, 0x2c, + 0x02, 0x00, 0x00, 0x04, 0xb2, 0x02, 0x00, 0x00, + 0x4c, 0x16, 0x00, 0x00, 0x00, 0x04, 0xb0, 0x02, + 0x00, 0x00, 0x4c, 0x6a, 0x02, 0x00, 0x00, 0x04, + 0xb4, 0x02, 0x00, 0x00, 0x4c, 0x1b, 0x00, 0x00, + 0x00, 0x04, 0xb2, 0x02, 0x00, 0x00, 0x4c, 0x81, + 0x02, 0x00, 0x00, 0x04, 0xbc, 0x02, 0x00, 0x00, + 0x4c, 0x2e, 0x02, 0x00, 0x00, 0x04, 0xbc, 0x02, 0x00, 0x00, 0x4c, 0x01, 0x00, 0x00, 0x00, 0x04, - 0xa0, 0x02, 0x00, 0x00, 0x4c, 0x47, 0x00, 0x00, - 0x00, 0x04, 0xaa, 0x02, 0x00, 0x00, 0x4c, 0x2a, - 0x02, 0x00, 0x00, 0x04, 0xaa, 0x02, 0x00, 0x00, - 0x4c, 0x25, 0x02, 0x00, 0x00, 0x04, 0xa8, 0x02, - 0x00, 0x00, 0x4c, 0x27, 0x02, 0x00, 0x00, 0x04, - 0xb9, 0x02, 0x00, 0x00, 0x4c, 0x49, 0x00, 0x00, - 0x00, 0x04, 0xbb, 0x02, 0x00, 0x00, 0x4c, 0x4b, - 0x00, 0x00, 0x00, 0x04, 0xb7, 0x02, 0x00, 0x00, - 0x4c, 0xfe, 0x01, 0x00, 0x00, 0x04, 0xbb, 0x02, - 0x00, 0x00, 0x4c, 0x46, 0x00, 0x00, 0x00, 0x4c, - 0x53, 0x02, 0x00, 0x00, 0x0b, 0x04, 0xa8, 0x02, + 0xa1, 0x02, 0x00, 0x00, 0x4c, 0x47, 0x00, 0x00, + 0x00, 0x04, 0xab, 0x02, 0x00, 0x00, 0x4c, 0x2b, + 0x02, 0x00, 0x00, 0x04, 0xab, 0x02, 0x00, 0x00, + 0x4c, 0x26, 0x02, 0x00, 0x00, 0x04, 0xa9, 0x02, 0x00, 0x00, 0x4c, 0x28, 0x02, 0x00, 0x00, 0x04, - 0xb7, 0x02, 0x00, 0x00, 0x4c, 0x48, 0x00, 0x00, - 0x00, 0x04, 0xad, 0x02, 0x00, 0x00, 0x4c, 0x7c, - 0x02, 0x00, 0x00, 0x04, 0xa6, 0x02, 0x00, 0x00, - 0x4c, 0x2b, 0x02, 0x00, 0x00, 0x04, 0x9c, 0x02, + 0xba, 0x02, 0x00, 0x00, 0x4c, 0x49, 0x00, 0x00, + 0x00, 0x04, 0xbc, 0x02, 0x00, 0x00, 0x4c, 0x4b, + 0x00, 0x00, 0x00, 0x04, 0xb8, 0x02, 0x00, 0x00, + 0x4c, 0xff, 0x01, 0x00, 0x00, 0x04, 0xbc, 0x02, + 0x00, 0x00, 0x4c, 0x46, 0x00, 0x00, 0x00, 0x4c, + 0x54, 0x02, 0x00, 0x00, 0x0b, 0x04, 0xa9, 0x02, + 0x00, 0x00, 0x4c, 0x29, 0x02, 0x00, 0x00, 0x04, + 0xb8, 0x02, 0x00, 0x00, 0x4c, 0x48, 0x00, 0x00, + 0x00, 0x04, 0xae, 0x02, 0x00, 0x00, 0x4c, 0x7d, + 0x02, 0x00, 0x00, 0x04, 0xa7, 0x02, 0x00, 0x00, + 0x4c, 0x2c, 0x02, 0x00, 0x00, 0x04, 0x9d, 0x02, 0x00, 0x00, 0x4c, 0x16, 0x00, 0x00, 0x00, 0x04, - 0x9e, 0x02, 0x00, 0x00, 0x4c, 0x69, 0x02, 0x00, - 0x00, 0x04, 0xb3, 0x02, 0x00, 0x00, 0x4c, 0x1b, - 0x00, 0x00, 0x00, 0x04, 0x9c, 0x02, 0x00, 0x00, - 0x4c, 0x80, 0x02, 0x00, 0x00, 0x04, 0xb7, 0x02, - 0x00, 0x00, 0x4c, 0x2d, 0x02, 0x00, 0x00, 0x04, - 0xb7, 0x02, 0x00, 0x00, 0x4c, 0x01, 0x00, 0x00, - 0x00, 0x04, 0xa0, 0x02, 0x00, 0x00, 0x4c, 0x47, - 0x00, 0x00, 0x00, 0x04, 0x9c, 0x02, 0x00, 0x00, - 0x4c, 0x2a, 0x02, 0x00, 0x00, 0x04, 0x9c, 0x02, - 0x00, 0x00, 0x4c, 0x25, 0x02, 0x00, 0x00, 0x04, - 0xa8, 0x02, 0x00, 0x00, 0x4c, 0x27, 0x02, 0x00, - 0x00, 0x04, 0xb9, 0x02, 0x00, 0x00, 0x4c, 0x49, - 0x00, 0x00, 0x00, 0x04, 0xad, 0x02, 0x00, 0x00, - 0x4c, 0x4b, 0x00, 0x00, 0x00, 0x04, 0xb7, 0x02, - 0x00, 0x00, 0x4c, 0xfe, 0x01, 0x00, 0x00, 0x04, - 0xb7, 0x02, 0x00, 0x00, 0x4c, 0x46, 0x00, 0x00, - 0x00, 0x4c, 0x56, 0x02, 0x00, 0x00, 0xc3, 0x12, - 0x41, 0x53, 0x02, 0x00, 0x00, 0xc2, 0x13, 0x0a, + 0x9f, 0x02, 0x00, 0x00, 0x4c, 0x6a, 0x02, 0x00, + 0x00, 0x04, 0xb4, 0x02, 0x00, 0x00, 0x4c, 0x1b, + 0x00, 0x00, 0x00, 0x04, 0x9d, 0x02, 0x00, 0x00, + 0x4c, 0x81, 0x02, 0x00, 0x00, 0x04, 0xb8, 0x02, + 0x00, 0x00, 0x4c, 0x2e, 0x02, 0x00, 0x00, 0x04, + 0xb8, 0x02, 0x00, 0x00, 0x4c, 0x01, 0x00, 0x00, + 0x00, 0x04, 0xa1, 0x02, 0x00, 0x00, 0x4c, 0x47, + 0x00, 0x00, 0x00, 0x04, 0x9d, 0x02, 0x00, 0x00, + 0x4c, 0x2b, 0x02, 0x00, 0x00, 0x04, 0x9d, 0x02, + 0x00, 0x00, 0x4c, 0x26, 0x02, 0x00, 0x00, 0x04, + 0xa9, 0x02, 0x00, 0x00, 0x4c, 0x28, 0x02, 0x00, + 0x00, 0x04, 0xba, 0x02, 0x00, 0x00, 0x4c, 0x49, + 0x00, 0x00, 0x00, 0x04, 0xae, 0x02, 0x00, 0x00, + 0x4c, 0x4b, 0x00, 0x00, 0x00, 0x04, 0xb8, 0x02, + 0x00, 0x00, 0x4c, 0xff, 0x01, 0x00, 0x00, 0x04, + 0xb8, 0x02, 0x00, 0x00, 0x4c, 0x46, 0x00, 0x00, + 0x00, 0x4c, 0x57, 0x02, 0x00, 0x00, 0xc3, 0x12, + 0x41, 0x54, 0x02, 0x00, 0x00, 0xc2, 0x13, 0x0a, 0xc2, 0x14, 0x09, 0xc2, 0x15, 0x0a, 0xc2, 0x16, 0x09, 0xc2, 0x17, 0xb6, 0xc2, 0x18, 0x09, 0xc2, 0x19, 0x09, 0xc2, 0x1a, 0x26, 0x00, 0x00, 0xc2, 0x1b, 0xc0, 0xc2, 0x1d, 0xc0, 0xc2, 0x1e, 0xc0, - 0xc2, 0x1f, 0xb4, 0xc2, 0x20, 0x04, 0xbc, 0x02, - 0x00, 0x00, 0xc2, 0x21, 0x04, 0xbd, 0x02, 0x00, + 0xc2, 0x1f, 0xb4, 0xc2, 0x20, 0x04, 0xbd, 0x02, + 0x00, 0x00, 0xc2, 0x21, 0x04, 0xbe, 0x02, 0x00, 0x00, 0xc2, 0x22, 0xb4, 0xc2, 0x24, 0xc0, 0xc2, 0x25, 0xb4, 0xc2, 0x26, 0xc0, 0xc2, 0x27, 0xb4, 0xc2, 0x28, 0xc0, 0xc2, 0x29, 0xb4, 0xc2, 0x2a, 0x09, 0xc2, 0x2d, 0xb4, 0xc2, 0x2e, 0xb4, 0xc2, 0x2f, 0xb4, 0xc2, 0x33, 0x0b, 0xc1, 0x46, 0x4c, - 0xbe, 0x02, 0x00, 0x00, 0xc1, 0x49, 0x4c, 0xbf, - 0x02, 0x00, 0x00, 0xc1, 0x64, 0x4c, 0xc0, 0x02, - 0x00, 0x00, 0xc1, 0x58, 0x4c, 0xc1, 0x02, 0x00, - 0x00, 0xc1, 0x47, 0x4c, 0xc2, 0x02, 0x00, 0x00, - 0xc1, 0x48, 0x4c, 0xc3, 0x02, 0x00, 0x00, 0xc1, - 0x44, 0x4c, 0xc4, 0x02, 0x00, 0x00, 0xc1, 0x59, - 0x4c, 0xc5, 0x02, 0x00, 0x00, 0xc1, 0x69, 0x4c, - 0x8d, 0x02, 0x00, 0x00, 0xc1, 0x4f, 0x4c, 0x8a, - 0x01, 0x00, 0x00, 0xc1, 0x5f, 0x4c, 0xc6, 0x02, - 0x00, 0x00, 0xc1, 0x4e, 0x4c, 0xc7, 0x02, 0x00, - 0x00, 0xc1, 0x4f, 0x4c, 0x8e, 0x02, 0x00, 0x00, - 0xc1, 0x52, 0x4c, 0xc8, 0x02, 0x00, 0x00, 0xc1, - 0x51, 0x4c, 0xc9, 0x02, 0x00, 0x00, 0xc1, 0x43, - 0x4c, 0xca, 0x02, 0x00, 0x00, 0xc1, 0x45, 0x4c, - 0xcb, 0x02, 0x00, 0x00, 0xc1, 0x45, 0x4c, 0xcc, - 0x02, 0x00, 0x00, 0xc1, 0x5a, 0x4c, 0xcd, 0x02, - 0x00, 0x00, 0xc1, 0x62, 0x4c, 0xce, 0x02, 0x00, - 0x00, 0xc1, 0x65, 0x4c, 0xcf, 0x02, 0x00, 0x00, - 0xc1, 0x63, 0x4c, 0xd0, 0x02, 0x00, 0x00, 0xc1, - 0x51, 0x4c, 0xd1, 0x02, 0x00, 0x00, 0xc1, 0x52, - 0x4c, 0xd2, 0x02, 0x00, 0x00, 0xc1, 0x48, 0x4c, - 0xd3, 0x02, 0x00, 0x00, 0xc1, 0x49, 0x4c, 0xd4, - 0x02, 0x00, 0x00, 0xc1, 0x4c, 0x4c, 0xd5, 0x02, - 0x00, 0x00, 0xc1, 0x4d, 0x4c, 0xd6, 0x02, 0x00, - 0x00, 0xc1, 0x4c, 0x4c, 0xd7, 0x02, 0x00, 0x00, - 0xc1, 0x4d, 0x4c, 0xd8, 0x02, 0x00, 0x00, 0xc1, - 0x46, 0x4c, 0xd9, 0x02, 0x00, 0x00, 0xc1, 0x57, - 0x4c, 0xda, 0x02, 0x00, 0x00, 0xc1, 0x47, 0x4c, - 0xdb, 0x02, 0x00, 0x00, 0xc1, 0x54, 0x4c, 0xdc, - 0x02, 0x00, 0x00, 0xc1, 0x55, 0x4c, 0xdd, 0x02, - 0x00, 0x00, 0xc1, 0x51, 0x4c, 0xde, 0x02, 0x00, - 0x00, 0xc1, 0x52, 0x4c, 0xdf, 0x02, 0x00, 0x00, - 0xc1, 0x48, 0x4c, 0xe0, 0x02, 0x00, 0x00, 0xc1, - 0x49, 0x4c, 0xe1, 0x02, 0x00, 0x00, 0xc1, 0x47, - 0x4c, 0xe2, 0x02, 0x00, 0x00, 0xc1, 0x46, 0x4c, - 0xe3, 0x02, 0x00, 0x00, 0xc1, 0x62, 0x4c, 0xe4, - 0x02, 0x00, 0x00, 0xc1, 0x4d, 0x4c, 0xe5, 0x02, - 0x00, 0x00, 0xc1, 0x61, 0x4c, 0xe6, 0x02, 0x00, - 0x00, 0xc1, 0x4c, 0x4c, 0xe7, 0x02, 0x00, 0x00, - 0xc1, 0x60, 0x4c, 0xe8, 0x02, 0x00, 0x00, 0xc1, - 0x5d, 0x4c, 0xe9, 0x02, 0x00, 0x00, 0xc1, 0x5b, - 0x4c, 0xea, 0x02, 0x00, 0x00, 0xc1, 0x5c, 0x4c, - 0xeb, 0x02, 0x00, 0x00, 0xc1, 0x59, 0x4c, 0xec, + 0xbf, 0x02, 0x00, 0x00, 0xc1, 0x49, 0x4c, 0xc0, + 0x02, 0x00, 0x00, 0xc1, 0x64, 0x4c, 0xc1, 0x02, + 0x00, 0x00, 0xc1, 0x58, 0x4c, 0xc2, 0x02, 0x00, + 0x00, 0xc1, 0x47, 0x4c, 0xc3, 0x02, 0x00, 0x00, + 0xc1, 0x48, 0x4c, 0xc4, 0x02, 0x00, 0x00, 0xc1, + 0x44, 0x4c, 0xc5, 0x02, 0x00, 0x00, 0xc1, 0x59, + 0x4c, 0xc6, 0x02, 0x00, 0x00, 0xc1, 0x69, 0x4c, + 0x8e, 0x02, 0x00, 0x00, 0xc1, 0x4f, 0x4c, 0x8b, + 0x01, 0x00, 0x00, 0xc1, 0x5f, 0x4c, 0xc7, 0x02, + 0x00, 0x00, 0xc1, 0x4e, 0x4c, 0xc8, 0x02, 0x00, + 0x00, 0xc1, 0x4f, 0x4c, 0x8f, 0x02, 0x00, 0x00, + 0xc1, 0x52, 0x4c, 0xc9, 0x02, 0x00, 0x00, 0xc1, + 0x51, 0x4c, 0xca, 0x02, 0x00, 0x00, 0xc1, 0x43, + 0x4c, 0xcb, 0x02, 0x00, 0x00, 0xc1, 0x45, 0x4c, + 0xcc, 0x02, 0x00, 0x00, 0xc1, 0x45, 0x4c, 0xcd, + 0x02, 0x00, 0x00, 0xc1, 0x5a, 0x4c, 0xce, 0x02, + 0x00, 0x00, 0xc1, 0x62, 0x4c, 0xcf, 0x02, 0x00, + 0x00, 0xc1, 0x65, 0x4c, 0xd0, 0x02, 0x00, 0x00, + 0xc1, 0x63, 0x4c, 0xd1, 0x02, 0x00, 0x00, 0xc1, + 0x51, 0x4c, 0xd2, 0x02, 0x00, 0x00, 0xc1, 0x52, + 0x4c, 0xd3, 0x02, 0x00, 0x00, 0xc1, 0x48, 0x4c, + 0xd4, 0x02, 0x00, 0x00, 0xc1, 0x49, 0x4c, 0xd5, + 0x02, 0x00, 0x00, 0xc1, 0x4c, 0x4c, 0xd6, 0x02, + 0x00, 0x00, 0xc1, 0x4d, 0x4c, 0xd7, 0x02, 0x00, + 0x00, 0xc1, 0x4c, 0x4c, 0xd8, 0x02, 0x00, 0x00, + 0xc1, 0x4d, 0x4c, 0xd9, 0x02, 0x00, 0x00, 0xc1, + 0x46, 0x4c, 0xda, 0x02, 0x00, 0x00, 0xc1, 0x57, + 0x4c, 0xdb, 0x02, 0x00, 0x00, 0xc1, 0x47, 0x4c, + 0xdc, 0x02, 0x00, 0x00, 0xc1, 0x54, 0x4c, 0xdd, + 0x02, 0x00, 0x00, 0xc1, 0x55, 0x4c, 0xde, 0x02, + 0x00, 0x00, 0xc1, 0x51, 0x4c, 0xdf, 0x02, 0x00, + 0x00, 0xc1, 0x52, 0x4c, 0xe0, 0x02, 0x00, 0x00, + 0xc1, 0x48, 0x4c, 0xe1, 0x02, 0x00, 0x00, 0xc1, + 0x49, 0x4c, 0xe2, 0x02, 0x00, 0x00, 0xc1, 0x47, + 0x4c, 0xe3, 0x02, 0x00, 0x00, 0xc1, 0x46, 0x4c, + 0xe4, 0x02, 0x00, 0x00, 0xc1, 0x62, 0x4c, 0xe5, + 0x02, 0x00, 0x00, 0xc1, 0x4d, 0x4c, 0xe6, 0x02, + 0x00, 0x00, 0xc1, 0x61, 0x4c, 0xe7, 0x02, 0x00, + 0x00, 0xc1, 0x4c, 0x4c, 0xe8, 0x02, 0x00, 0x00, + 0xc1, 0x60, 0x4c, 0xe9, 0x02, 0x00, 0x00, 0xc1, + 0x5d, 0x4c, 0xea, 0x02, 0x00, 0x00, 0xc1, 0x5b, + 0x4c, 0xeb, 0x02, 0x00, 0x00, 0xc1, 0x5c, 0x4c, + 0xec, 0x02, 0x00, 0x00, 0xc1, 0x59, 0x4c, 0xed, 0x02, 0x00, 0x00, 0xc2, 0x6a, 0x0b, 0xc3, 0x75, - 0xbf, 0x3d, 0x43, 0x3c, 0x02, 0x00, 0x00, 0xc5, + 0xbf, 0x3d, 0x43, 0x3d, 0x02, 0x00, 0x00, 0xc5, 0x42, 0x61, 0x00, 0x00, 0x00, 0x0b, 0xc1, 0x78, - 0x4c, 0x50, 0x01, 0x00, 0x00, 0xc1, 0x79, 0x4c, - 0x51, 0x01, 0x00, 0x00, 0xbf, 0x44, 0x4d, 0xed, - 0x02, 0x00, 0x00, 0x4c, 0xed, 0x02, 0x00, 0x00, - 0xbf, 0x45, 0x4d, 0xee, 0x02, 0x00, 0x00, 0x4c, - 0xee, 0x02, 0x00, 0x00, 0xbf, 0x46, 0x4d, 0xef, - 0x02, 0x00, 0x00, 0x4c, 0xef, 0x02, 0x00, 0x00, - 0xbf, 0x47, 0x4d, 0xf0, 0x02, 0x00, 0x00, 0x4c, - 0xf0, 0x02, 0x00, 0x00, 0xbf, 0x48, 0x4d, 0x3b, - 0x02, 0x00, 0x00, 0x4c, 0x3b, 0x02, 0x00, 0x00, - 0xbf, 0x49, 0x4d, 0xf1, 0x02, 0x00, 0x00, 0x4c, - 0xf1, 0x02, 0x00, 0x00, 0xbf, 0x4a, 0x4d, 0x24, - 0x02, 0x00, 0x00, 0x4c, 0x24, 0x02, 0x00, 0x00, - 0xbf, 0x4b, 0x4d, 0x53, 0x02, 0x00, 0x00, 0x4c, - 0x53, 0x02, 0x00, 0x00, 0xbf, 0x4c, 0x4d, 0x56, - 0x02, 0x00, 0x00, 0x4c, 0x56, 0x02, 0x00, 0x00, - 0xbf, 0x4d, 0x4d, 0x96, 0x01, 0x00, 0x00, 0x4c, - 0x96, 0x01, 0x00, 0x00, 0xbf, 0x4e, 0x4d, 0xf2, - 0x02, 0x00, 0x00, 0x4c, 0xf2, 0x02, 0x00, 0x00, + 0x4c, 0x51, 0x01, 0x00, 0x00, 0xc1, 0x79, 0x4c, + 0x52, 0x01, 0x00, 0x00, 0xbf, 0x44, 0x4d, 0xee, + 0x02, 0x00, 0x00, 0x4c, 0xee, 0x02, 0x00, 0x00, + 0xbf, 0x45, 0x4d, 0xef, 0x02, 0x00, 0x00, 0x4c, + 0xef, 0x02, 0x00, 0x00, 0xbf, 0x46, 0x4d, 0xf0, + 0x02, 0x00, 0x00, 0x4c, 0xf0, 0x02, 0x00, 0x00, + 0xbf, 0x47, 0x4d, 0xf1, 0x02, 0x00, 0x00, 0x4c, + 0xf1, 0x02, 0x00, 0x00, 0xbf, 0x48, 0x4d, 0x3c, + 0x02, 0x00, 0x00, 0x4c, 0x3c, 0x02, 0x00, 0x00, + 0xbf, 0x49, 0x4d, 0xf2, 0x02, 0x00, 0x00, 0x4c, + 0xf2, 0x02, 0x00, 0x00, 0xbf, 0x4a, 0x4d, 0x25, + 0x02, 0x00, 0x00, 0x4c, 0x25, 0x02, 0x00, 0x00, + 0xbf, 0x4b, 0x4d, 0x54, 0x02, 0x00, 0x00, 0x4c, + 0x54, 0x02, 0x00, 0x00, 0xbf, 0x4c, 0x4d, 0x57, + 0x02, 0x00, 0x00, 0x4c, 0x57, 0x02, 0x00, 0x00, + 0xbf, 0x4d, 0x4d, 0x97, 0x01, 0x00, 0x00, 0x4c, + 0x97, 0x01, 0x00, 0x00, 0xbf, 0x4e, 0x4d, 0xf3, + 0x02, 0x00, 0x00, 0x4c, 0xf3, 0x02, 0x00, 0x00, 0x07, 0x24, 0x02, 0x00, 0xc2, 0x7c, 0xc1, 0x89, 0xee, 0x0e, 0xc1, 0x88, 0xee, 0x0e, 0xc1, 0x34, 0xee, 0x0e, 0xc1, 0x7d, 0xee, 0x29, 0x08, 0xea, diff --git a/gen/test_fib.c b/gen/test_fib.c index 579f9d00..d5d440ab 100644 --- a/gen/test_fib.c +++ b/gen/test_fib.c @@ -5,7 +5,7 @@ const uint32_t qjsc_test_fib_size = 314; const uint8_t qjsc_test_fib[314] = { - 0x10, 0x0e, 0x01, 0x28, 0x65, 0x78, 0x61, 0x6d, + 0x11, 0x0e, 0x01, 0x28, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x66, 0x69, 0x62, 0x2e, 0x6a, 0x73, 0x01, 0x0c, 0x71, 0x6a, 0x73, 0x3a, 0x6f, 0x73, @@ -20,26 +20,26 @@ const uint8_t qjsc_test_fib[314] = { 0x01, 0x16, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x01, 0x10, 0x66, 0x69, 0x62, 0x28, 0x31, 0x30, 0x29, 0x3d, 0x0d, - 0xba, 0x03, 0x01, 0xbc, 0x03, 0x00, 0x00, 0x01, + 0xbc, 0x03, 0x01, 0xbe, 0x03, 0x00, 0x00, 0x01, 0x00, 0xfc, 0x01, 0x00, 0x01, 0x0c, 0x20, 0xfa, 0x01, 0xa2, 0x01, 0x00, 0x00, 0x00, 0x05, 0x03, - 0x00, 0x73, 0x00, 0xbe, 0x03, 0x00, 0x0d, 0xc0, - 0x03, 0x00, 0x0d, 0xc2, 0x03, 0x01, 0x0d, 0x08, - 0xea, 0x02, 0x29, 0x65, 0x00, 0x00, 0x41, 0xe2, - 0x00, 0x00, 0x00, 0x04, 0xe3, 0x00, 0x00, 0x00, + 0x00, 0x73, 0x00, 0xc0, 0x03, 0x00, 0x0d, 0xc2, + 0x03, 0x00, 0x0d, 0xc4, 0x03, 0x01, 0x0d, 0x08, + 0xea, 0x02, 0x29, 0x65, 0x00, 0x00, 0x41, 0xe3, + 0x00, 0x00, 0x00, 0x04, 0xe4, 0x00, 0x00, 0x00, 0xae, 0xe2, 0x06, 0x11, 0xf2, 0xeb, 0x0b, 0x70, - 0x42, 0xe1, 0x00, 0x00, 0x00, 0xe3, 0x0e, 0xec, - 0x24, 0x0e, 0x04, 0xe4, 0x00, 0x00, 0x00, 0x42, + 0x42, 0xe2, 0x00, 0x00, 0x00, 0xe3, 0x0e, 0xec, + 0x24, 0x0e, 0x04, 0xe5, 0x00, 0x00, 0x00, 0x42, 0x5d, 0x00, 0x00, 0x00, 0x65, 0x01, 0x00, 0xea, - 0x08, 0x04, 0xe5, 0x00, 0x00, 0x00, 0xec, 0x06, - 0x04, 0xe6, 0x00, 0x00, 0x00, 0x24, 0x01, 0x00, - 0x35, 0x8b, 0xec, 0xd4, 0x38, 0xe7, 0x00, 0x00, - 0x00, 0x42, 0xe8, 0x00, 0x00, 0x00, 0x04, 0xe9, + 0x08, 0x04, 0xe6, 0x00, 0x00, 0x00, 0xec, 0x06, + 0x04, 0xe7, 0x00, 0x00, 0x00, 0x24, 0x01, 0x00, + 0x35, 0x8b, 0xec, 0xd4, 0x38, 0xe8, 0x00, 0x00, + 0x00, 0x42, 0xe9, 0x00, 0x00, 0x00, 0x04, 0xea, 0x00, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, 0x38, - 0xe7, 0x00, 0x00, 0x00, 0x42, 0xe8, 0x00, 0x00, - 0x00, 0x04, 0xea, 0x00, 0x00, 0x00, 0x65, 0x02, + 0xe8, 0x00, 0x00, 0x00, 0x42, 0xe9, 0x00, 0x00, + 0x00, 0x04, 0xeb, 0x00, 0x00, 0x00, 0x65, 0x02, 0x00, 0xbc, 0x0a, 0xef, 0x24, 0x02, 0x00, 0x0e, - 0x06, 0x2e, 0xba, 0x03, 0x01, 0x01, 0x22, 0x01, + 0x06, 0x2e, 0xbc, 0x03, 0x01, 0x01, 0x22, 0x01, 0x01, 0x00, 0x04, 0x08, 0x1e, 0x2a, 0x18, 0x1b, 0x08, 0x0d, 0x3b, 0x1b, 0x0c, 0x07, 0x04, 0x25, 0x08, 0x0c, 0x04, 0x07, 0x10, 0x43, 0x2c, 0x25, diff --git a/quickjs-atom.h b/quickjs-atom.h index 07c10d92..49c82a5e 100644 --- a/quickjs-atom.h +++ b/quickjs-atom.h @@ -176,6 +176,7 @@ DEF(not_equal, "not-equal") DEF(timed_out, "timed-out") DEF(ok, "ok") DEF(toJSON, "toJSON") +DEF(maxByteLength, "maxByteLength") /* class names */ DEF(Object, "Object") DEF(Array, "Array") diff --git a/quickjs.c b/quickjs.c index e597a067..83f8859b 100644 --- a/quickjs.c +++ b/quickjs.c @@ -725,6 +725,7 @@ typedef struct JSProxyData { typedef struct JSArrayBuffer { int byte_length; /* 0 if detached */ + int max_byte_length; /* -1 if not resizable; >= byte_length otherwise */ uint8_t detached; uint8_t shared; /* if shared, the array buffer cannot be detached */ uint8_t *data; /* NULL if detached */ @@ -737,8 +738,9 @@ typedef struct JSTypedArray { struct list_head link; /* link to arraybuffer */ JSObject *obj; /* back pointer to the TypedArray/DataView object */ JSObject *buffer; /* based array buffer */ - uint32_t offset; /* offset in the array buffer */ - uint32_t length; /* length in the array buffer */ + uint32_t offset; /* byte offset in the array buffer */ + uint32_t length; /* byte length in the array buffer */ + BOOL track_rab; /* auto-track length of backing array buffer */ } JSTypedArray; typedef struct JSAsyncFunctionState { @@ -1196,11 +1198,14 @@ static BOOL is_valid_weakref_target(JSValue val); static void insert_weakref_record(JSValue target, struct JSWeakRefRecord *wr); static JSValue js_array_buffer_constructor3(JSContext *ctx, JSValue new_target, - uint64_t len, JSClassID class_id, + uint64_t len, uint64_t *max_len, + JSClassID class_id, uint8_t *buf, JSFreeArrayBufferDataFunc *free_func, void *opaque, BOOL alloc_flag); +static void js_array_buffer_free(JSRuntime *rt, void *opaque, void *ptr); static JSArrayBuffer *js_get_array_buffer(JSContext *ctx, JSValue obj); +static BOOL array_buffer_is_resizable(const JSArrayBuffer *abuf); static JSValue js_typed_array_constructor(JSContext *ctx, JSValue this_val, int argc, JSValue *argv, @@ -1208,10 +1213,14 @@ static JSValue js_typed_array_constructor(JSContext *ctx, static JSValue js_typed_array_constructor_ta(JSContext *ctx, JSValue new_target, JSValue src_obj, - int classid); -static BOOL typed_array_is_detached(JSContext *ctx, JSObject *p); + int classid, uint32_t len); +static BOOL typed_array_is_oob(JSObject *p); +static BOOL typed_array_is_resizable(JSObject *p); static uint32_t typed_array_get_length(JSContext *ctx, JSObject *p); static JSValue JS_ThrowTypeErrorDetachedArrayBuffer(JSContext *ctx); +// if you think the current name is lousy, +// I considered naming it JS_ThrowTypeErrorRABOOB +static JSValue JS_ThrowTypeErrorArrayBufferOOB(JSContext *ctx); static JSVarRef *get_var_ref(JSContext *ctx, JSStackFrame *sf, int var_idx, BOOL is_arg); static JSValue js_generator_function_call(JSContext *ctx, JSValue func_obj, @@ -9022,9 +9031,14 @@ static int JS_SetPropertyValue(JSContext *ctx, JSValue this_obj, } if (unlikely(idx >= (uint32_t)p->u.array.count)) { ta_out_of_bound: - if (typed_array_is_detached(ctx, p)) + if (typed_array_is_oob(p)) if (!(flags & JS_PROP_DEFINE_PROPERTY)) return TRUE; // per spec: no OOB exception + // XXX(bnoordhuis) questionable but generic methods like + // Array.prototype.fill invoked on RABs can end up here + // and should, per spec, not error + if (typed_array_is_resizable(p)) + return TRUE; return JS_ThrowTypeErrorOrFalse(ctx, flags, "out-of-bound numeric index"); } p->u.array.u.double_ptr[idx] = d; @@ -33512,7 +33526,7 @@ typedef enum BCTagEnum { BC_TAG_SYMBOL, } BCTagEnum; -#define BC_VERSION 16 +#define BC_VERSION 17 typedef struct BCWriterState { JSContext *ctx; @@ -34116,6 +34130,7 @@ static int JS_WriteArrayBuffer(BCWriterState *s, JSValue obj) } bc_put_u8(s, BC_TAG_ARRAY_BUFFER); bc_put_leb128(s, abuf->byte_length); + bc_put_leb128(s, abuf->max_byte_length); dbuf_put(&s->dbuf, abuf->data, abuf->byte_length); return 0; } @@ -34127,6 +34142,7 @@ static int JS_WriteSharedArrayBuffer(BCWriterState *s, JSValue obj) assert(!abuf->detached); /* SharedArrayBuffer are never detached */ bc_put_u8(s, BC_TAG_SHARED_ARRAY_BUFFER); bc_put_leb128(s, abuf->byte_length); + bc_put_leb128(s, abuf->max_byte_length); bc_put_u64(s, (uintptr_t)abuf->data); if (js_resize_array(s->ctx, (void **)&s->sab_tab, sizeof(s->sab_tab[0]), &s->sab_tab_size, s->sab_tab_len + 1)) @@ -35302,16 +35318,31 @@ static JSValue JS_ReadTypedArray(BCReaderState *s) static JSValue JS_ReadArrayBuffer(BCReaderState *s) { JSContext *ctx = s->ctx; - uint32_t byte_length; + uint32_t byte_length, max_byte_length; + uint64_t max_byte_length_u64, *pmax_byte_length = NULL; JSValue obj; if (bc_get_leb128(s, &byte_length)) return JS_EXCEPTION; + if (bc_get_leb128(s, &max_byte_length)) + return JS_EXCEPTION; + if (max_byte_length < byte_length) + return JS_ThrowTypeError(ctx, "invalid array buffer"); + if (max_byte_length != UINT32_MAX) { + max_byte_length_u64 = max_byte_length; + pmax_byte_length = &max_byte_length_u64; + } if (unlikely(s->buf_end - s->ptr < byte_length)) { bc_read_error_end(s); return JS_EXCEPTION; } - obj = JS_NewArrayBufferCopy(ctx, s->ptr, byte_length); + // makes a copy of the input + obj = js_array_buffer_constructor3(ctx, JS_UNDEFINED, + byte_length, pmax_byte_length, + JS_CLASS_ARRAY_BUFFER, + (uint8_t*)s->ptr, + js_array_buffer_free, NULL, + /*alloc_flag*/TRUE); if (JS_IsException(obj)) goto fail; if (BC_add_object_ref(s, obj)) @@ -35342,7 +35373,7 @@ static JSValue JS_ReadSharedArrayBuffer(BCReaderState *s) /* keep the SAB pointer so that the user can clone it or free it */ s->sab_tab[s->sab_tab_len++] = data_ptr; /* the SharedArrayBuffer is cloned */ - obj = js_array_buffer_constructor3(ctx, JS_UNDEFINED, byte_length, + obj = js_array_buffer_constructor3(ctx, JS_UNDEFINED, byte_length, NULL, JS_CLASS_SHARED_ARRAY_BUFFER, data_ptr, NULL, NULL, FALSE); @@ -38335,7 +38366,41 @@ static JSValue js_array_concat(JSContext *ctx, JSValue this_val, #define special_filter 4 #define special_TA 8 -static int js_typed_array_get_length_internal(JSContext *ctx, JSValue obj); +static JSObject *get_typed_array(JSContext *ctx, JSValue this_val) +{ + JSObject *p; + if (JS_VALUE_GET_TAG(this_val) != JS_TAG_OBJECT) + goto fail; + p = JS_VALUE_GET_OBJ(this_val); + if (!(p->class_id >= JS_CLASS_UINT8C_ARRAY && + p->class_id <= JS_CLASS_FLOAT64_ARRAY)) { + fail: + JS_ThrowTypeError(ctx, "not a TypedArray"); + return NULL; + } + return p; +} + +// Be *very* careful if you touch the typed array's memory directly: +// the length is only valid until the next call into JS land because +// JS code may detach or resize the backing array buffer. Functions +// like JS_GetProperty and JS_ToIndex call JS code. +// +// Exclusively reading or writing elements with JS_GetProperty, +// JS_GetPropertyInt64, JS_SetProperty, &c is safe because they +// perform bounds checks, ditto js_get_fast_array_element. +static int js_typed_array_get_length_unsafe(JSContext *ctx, JSValue obj) +{ + JSObject *p; + p = get_typed_array(ctx, obj); + if (!p) + return -1; + if (typed_array_is_oob(p)) { + JS_ThrowTypeErrorArrayBufferOOB(ctx); + return -1; + } + return p->u.array.count; +} static JSValue js_typed_array___speciesCreate(JSContext *ctx, JSValue this_val, @@ -38354,7 +38419,7 @@ static JSValue js_array_every(JSContext *ctx, JSValue this_val, val = JS_UNDEFINED; if (special & special_TA) { obj = js_dup(this_val); - len = js_typed_array_get_length_internal(ctx, obj); + len = js_typed_array_get_length_unsafe(ctx, obj); if (len < 0) goto exception; } else { @@ -38509,7 +38574,7 @@ static JSValue js_array_reduce(JSContext *ctx, JSValue this_val, val = JS_UNDEFINED; if (special & special_TA) { obj = js_dup(this_val); - len = js_typed_array_get_length_internal(ctx, obj); + len = js_typed_array_get_length_unsafe(ctx, obj); if (len < 0) goto exception; } else { @@ -39817,8 +39882,8 @@ static JSValue js_array_iterator_next(JSContext *ctx, JSValue this_val, p = JS_VALUE_GET_OBJ(it->obj); if (p->class_id >= JS_CLASS_UINT8C_ARRAY && p->class_id <= JS_CLASS_FLOAT64_ARRAY) { - if (typed_array_is_detached(ctx, p)) { - JS_ThrowTypeErrorDetachedArrayBuffer(ctx); + if (typed_array_is_oob(p)) { + JS_ThrowTypeErrorArrayBufferOOB(ctx); goto fail1; } len = p->u.array.count; @@ -51065,7 +51130,8 @@ static uint8_t const typed_array_size_log2[JS_TYPED_ARRAY_COUNT] = { static JSValue js_array_buffer_constructor3(JSContext *ctx, JSValue new_target, - uint64_t len, JSClassID class_id, + uint64_t len, uint64_t *max_len, + JSClassID class_id, uint8_t *buf, JSFreeArrayBufferDataFunc *free_func, void *opaque, BOOL alloc_flag) @@ -51073,7 +51139,15 @@ static JSValue js_array_buffer_constructor3(JSContext *ctx, JSRuntime *rt = ctx->rt; JSValue obj; JSArrayBuffer *abuf = NULL; + uint64_t sab_alloc_len; + if (!alloc_flag && buf && max_len && free_func != js_array_buffer_free) { + // not observable from JS land, only through C API misuse; + // JS code cannot create externally managed buffers directly + return JS_ThrowInternalError(ctx, + "resizable ArrayBuffers not supported " + "for externally managed buffers"); + } obj = js_create_from_ctor(ctx, new_target, class_id); if (JS_IsException(obj)) return obj; @@ -51082,18 +51156,26 @@ static JSValue js_array_buffer_constructor3(JSContext *ctx, JS_ThrowRangeError(ctx, "invalid array buffer length"); goto fail; } + if (max_len && *max_len > INT32_MAX) { + JS_ThrowRangeError(ctx, "invalid max array buffer length"); + goto fail; + } abuf = js_malloc(ctx, sizeof(*abuf)); if (!abuf) goto fail; abuf->byte_length = len; + abuf->max_byte_length = max_len ? *max_len : -1; if (alloc_flag) { if (class_id == JS_CLASS_SHARED_ARRAY_BUFFER && rt->sab_funcs.sab_alloc) { + // TOOD(bnoordhuis) resizing backing memory for SABs atomically + // is hard so we cheat and allocate |maxByteLength| bytes upfront + sab_alloc_len = max_len ? *max_len : len; abuf->data = rt->sab_funcs.sab_alloc(rt->sab_funcs.sab_opaque, - max_int(len, 1)); + max_int(sab_alloc_len, 1)); if (!abuf->data) goto fail; - memset(abuf->data, 0, len); + memset(abuf->data, 0, sab_alloc_len); } else { /* the allocation must be done after the object creation */ abuf->data = js_mallocz(ctx, max_int(len, 1)); @@ -51129,18 +51211,19 @@ static void js_array_buffer_free(JSRuntime *rt, void *opaque, void *ptr) static JSValue js_array_buffer_constructor2(JSContext *ctx, JSValue new_target, - uint64_t len, JSClassID class_id) + uint64_t len, uint64_t *max_len, + JSClassID class_id) { - return js_array_buffer_constructor3(ctx, new_target, len, class_id, - NULL, js_array_buffer_free, NULL, - TRUE); + return js_array_buffer_constructor3(ctx, new_target, len, max_len, + class_id, NULL, js_array_buffer_free, + NULL, TRUE); } static JSValue js_array_buffer_constructor1(JSContext *ctx, JSValue new_target, - uint64_t len) + uint64_t len, uint64_t *max_len) { - return js_array_buffer_constructor2(ctx, new_target, len, + return js_array_buffer_constructor2(ctx, new_target, len, max_len, JS_CLASS_ARRAY_BUFFER); } @@ -51148,8 +51231,9 @@ JSValue JS_NewArrayBuffer(JSContext *ctx, uint8_t *buf, size_t len, JSFreeArrayBufferDataFunc *free_func, void *opaque, BOOL is_shared) { - return js_array_buffer_constructor3(ctx, JS_UNDEFINED, len, - is_shared ? JS_CLASS_SHARED_ARRAY_BUFFER : JS_CLASS_ARRAY_BUFFER, + JSClassID class_id = + is_shared ? JS_CLASS_SHARED_ARRAY_BUFFER : JS_CLASS_ARRAY_BUFFER; + return js_array_buffer_constructor3(ctx, JS_UNDEFINED, len, NULL, class_id, buf, free_func, opaque, FALSE); } @@ -51160,31 +51244,60 @@ JS_BOOL JS_IsArrayBuffer(JSValue obj) { /* create a new ArrayBuffer of length 'len' and copy 'buf' to it */ JSValue JS_NewArrayBufferCopy(JSContext *ctx, const uint8_t *buf, size_t len) { - return js_array_buffer_constructor3(ctx, JS_UNDEFINED, len, + return js_array_buffer_constructor3(ctx, JS_UNDEFINED, len, NULL, JS_CLASS_ARRAY_BUFFER, (uint8_t *)buf, js_array_buffer_free, NULL, TRUE); } -static JSValue js_array_buffer_constructor(JSContext *ctx, - JSValue new_target, - int argc, JSValue *argv) +static JSValue js_array_buffer_constructor0(JSContext *ctx, JSValue new_target, + int argc, JSValue *argv, + JSClassID class_id) { - uint64_t len; + uint64_t len, max_len, *pmax_len = NULL; + JSValue obj, val; + int64_t i; + if (JS_ToIndex(ctx, &len, argv[0])) return JS_EXCEPTION; - return js_array_buffer_constructor1(ctx, new_target, len); + if (argc < 2) + goto next; + if (!JS_IsObject(argv[1])) + goto next; + obj = JS_ToObject(ctx, argv[1]); + if (JS_IsException(obj)) + return JS_EXCEPTION; + val = JS_GetProperty(ctx, obj, JS_ATOM_maxByteLength); + JS_FreeValue(ctx, obj); + if (JS_IsException(val)) + return JS_EXCEPTION; + if (JS_IsUndefined(val)) + goto next; + if (JS_ToInt64Free(ctx, &i, val)) + return JS_EXCEPTION; + // don't have to check i < 0 because len >= 0 + if (len > i || i > MAX_SAFE_INTEGER) + return JS_ThrowRangeError(ctx, "invalid array buffer max length"); + max_len = i; + pmax_len = &max_len; +next: + return js_array_buffer_constructor2(ctx, new_target, len, pmax_len, + class_id); +} + +static JSValue js_array_buffer_constructor(JSContext *ctx, JSValue new_target, + int argc, JSValue *argv) +{ + return js_array_buffer_constructor0(ctx, new_target, argc, argv, + JS_CLASS_ARRAY_BUFFER); } static JSValue js_shared_array_buffer_constructor(JSContext *ctx, JSValue new_target, int argc, JSValue *argv) { - uint64_t len; - if (JS_ToIndex(ctx, &len, argv[0])) - return JS_EXCEPTION; - return js_array_buffer_constructor2(ctx, new_target, len, + return js_array_buffer_constructor0(ctx, new_target, argc, argv, JS_CLASS_SHARED_ARRAY_BUFFER); } @@ -51247,7 +51360,12 @@ static const JSCFunctionListEntry js_array_buffer_funcs[] = { static JSValue JS_ThrowTypeErrorDetachedArrayBuffer(JSContext *ctx) { - return JS_ThrowTypeError(ctx, "ArrayBuffer is detached"); + return JS_ThrowTypeError(ctx, "ArrayBuffer is detached or resized"); +} + +static JSValue JS_ThrowTypeErrorArrayBufferOOB(JSContext *ctx) +{ + return JS_ThrowTypeError(ctx, "ArrayBuffer is detached or resized"); } // #sec-get-arraybuffer.prototype.detached @@ -51273,6 +51391,27 @@ static JSValue js_array_buffer_get_byteLength(JSContext *ctx, return js_uint32(abuf->byte_length); } +static JSValue js_array_buffer_get_maxByteLength(JSContext *ctx, + JSValue this_val, + int class_id) +{ + JSArrayBuffer *abuf = JS_GetOpaque2(ctx, this_val, class_id); + if (!abuf) + return JS_EXCEPTION; + if (array_buffer_is_resizable(abuf)) + return js_uint32(abuf->max_byte_length); + return js_uint32(abuf->byte_length); +} + +static JSValue js_array_buffer_get_resizable(JSContext *ctx, JSValue this_val, + int class_id) +{ + JSArrayBuffer *abuf = JS_GetOpaque2(ctx, this_val, class_id); + if (!abuf) + return JS_EXCEPTION; + return js_bool(array_buffer_is_resizable(abuf)); +} + void JS_DetachArrayBuffer(JSContext *ctx, JSValue obj) { JSArrayBuffer *abuf = JS_GetOpaque(obj, JS_CLASS_ARRAY_BUFFER); @@ -51334,13 +51473,18 @@ uint8_t *JS_GetArrayBuffer(JSContext *ctx, size_t *psize, JSValue obj) return NULL; } +static BOOL array_buffer_is_resizable(const JSArrayBuffer *abuf) +{ + return abuf->max_byte_length >= 0; +} + // ES #sec-arraybuffer.prototype.transfer -static JSValue js_array_buffer_transfer(JSContext *ctx, - JSValue this_val, - int argc, JSValue *argv) +static JSValue js_array_buffer_transfer(JSContext *ctx, JSValue this_val, + int argc, JSValue *argv, int magic) { + BOOL transfer_to_fixed_length = magic & 1; JSArrayBuffer *abuf; - uint64_t new_len, old_len; + uint64_t new_len, old_len, max_len, *pmax_len; uint8_t *bs, *new_bs; abuf = JS_GetOpaque2(ctx, this_val, JS_CLASS_ARRAY_BUFFER); @@ -51354,10 +51498,22 @@ static JSValue js_array_buffer_transfer(JSContext *ctx, return JS_EXCEPTION; if (abuf->detached) return JS_ThrowTypeErrorDetachedArrayBuffer(ctx); + pmax_len = NULL; + if (!transfer_to_fixed_length) { + if (array_buffer_is_resizable(abuf)) { // carry over maxByteLength + max_len = abuf->max_byte_length; + if (new_len > max_len) + return JS_ThrowTypeError(ctx, "invalid array buffer length"); + // TODO(bnoordhuis) support externally managed RABs + if (abuf->free_func == js_array_buffer_free) + pmax_len = &max_len; + } + } /* create an empty AB */ if (new_len == 0) { JS_DetachArrayBuffer(ctx, this_val); - return js_array_buffer_constructor2(ctx, JS_UNDEFINED, 0, JS_CLASS_ARRAY_BUFFER); + return js_array_buffer_constructor2(ctx, JS_UNDEFINED, 0, pmax_len, + JS_CLASS_ARRAY_BUFFER); } bs = abuf->data; old_len = abuf->byte_length; @@ -51374,12 +51530,94 @@ static JSValue js_array_buffer_transfer(JSContext *ctx, abuf->data = NULL; abuf->byte_length = 0; abuf->detached = TRUE; - return js_array_buffer_constructor3(ctx, JS_UNDEFINED, new_len, + return js_array_buffer_constructor3(ctx, JS_UNDEFINED, new_len, pmax_len, JS_CLASS_ARRAY_BUFFER, bs, abuf->free_func, NULL, FALSE); } +static JSValue js_array_buffer_resize(JSContext *ctx, JSValue this_val, + int argc, JSValue *argv, int class_id) +{ + uint32_t size_log2, size_elem; + struct list_head *el; + JSArrayBuffer *abuf; + JSTypedArray *ta; + JSObject *p; + uint8_t *data; + int64_t len; + + abuf = JS_GetOpaque2(ctx, this_val, class_id); + if (!abuf) + return JS_EXCEPTION; + if (abuf->shared) { + if (class_id == JS_CLASS_ARRAY_BUFFER) + return JS_ThrowTypeError(ctx, "resize called on SharedArrayBuffer"); + } else { + if (class_id == JS_CLASS_SHARED_ARRAY_BUFFER) + return JS_ThrowTypeError(ctx, "grow called on ArrayBuffer"); + } + if (abuf->detached) + return JS_ThrowTypeErrorDetachedArrayBuffer(ctx); + if (!array_buffer_is_resizable(abuf)) + return JS_ThrowTypeError(ctx, "array buffer is not resizable"); + // TODO(bnoordhuis) support externally managed RABs + if (abuf->free_func != js_array_buffer_free) + return JS_ThrowTypeError(ctx, "external array buffer is not resizable"); + if (JS_ToInt64(ctx, &len, argv[0])) + return JS_EXCEPTION; + if (len < 0 || len > abuf->max_byte_length) { + bad_length: + return JS_ThrowRangeError(ctx, "invalid array buffer length"); + } + // SABs can only grow and we don't need to realloc because + // js_array_buffer_constructor3 commits all memory upfront; + // regular RABs are resizable both ways and realloc + if (abuf->shared) { + if (len < abuf->byte_length) + goto bad_length; + // Note this is off-spec; there's supposed to be a single atomic + // |byteLength| property that's shared across SABs but we store + // it per SAB instead. That means when thread A calls sab.grow(2) + // at time t0, and thread B calls sab.grow(1) at time t1, we don't + // throw a TypeError in thread B as the spec says we should, + // instead both threads get their own view of the backing memory, + // 2 bytes big in A, and 1 byte big in B + abuf->byte_length = len; + } else { + data = js_realloc(ctx, abuf->data, max_int(len, 1)); + if (!data) + return JS_EXCEPTION; + if (len > abuf->byte_length) + memset(&data[abuf->byte_length], 0, len - abuf->byte_length); + abuf->byte_length = len; + abuf->data = data; + } + // update lengths of all typed arrays backed by this array buffer + list_for_each(el, &abuf->array_list) { + ta = list_entry(el, JSTypedArray, link); + p = ta->obj; + if (p->class_id == JS_CLASS_DATAVIEW) + continue; + p->u.array.count = 0; + p->u.array.u.ptr = NULL; + size_log2 = typed_array_size_log2(p->class_id); + size_elem = 1 << size_log2; + if (ta->track_rab) { + if (len >= (int64_t)ta->offset + size_elem) { + p->u.array.count = (len - ta->offset) >> size_log2; + p->u.array.u.ptr = &data[ta->offset]; + } + } else { + if (len >= (int64_t)ta->offset + ta->length) { + p->u.array.count = ta->length >> size_log2; + p->u.array.u.ptr = &data[ta->offset]; + } + } + } + return JS_UNDEFINED; +} + static JSValue js_array_buffer_slice(JSContext *ctx, JSValue this_val, int argc, JSValue *argv, int class_id) @@ -51409,7 +51647,7 @@ static JSValue js_array_buffer_slice(JSContext *ctx, return ctor; if (JS_IsUndefined(ctor)) { new_obj = js_array_buffer_constructor2(ctx, JS_UNDEFINED, new_len, - class_id); + NULL, class_id); } else { JSValue args[1]; args[0] = JS_NewInt64(ctx, new_len); @@ -51448,10 +51686,13 @@ static JSValue js_array_buffer_slice(JSContext *ctx, static const JSCFunctionListEntry js_array_buffer_proto_funcs[] = { JS_CGETSET_MAGIC_DEF("byteLength", js_array_buffer_get_byteLength, NULL, JS_CLASS_ARRAY_BUFFER ), + JS_CGETSET_MAGIC_DEF("maxByteLength", js_array_buffer_get_maxByteLength, NULL, JS_CLASS_ARRAY_BUFFER ), + JS_CGETSET_MAGIC_DEF("resizable", js_array_buffer_get_resizable, NULL, JS_CLASS_ARRAY_BUFFER ), JS_CGETSET_DEF("detached", js_array_buffer_get_detached, NULL ), + JS_CFUNC_MAGIC_DEF("resize", 1, js_array_buffer_resize, JS_CLASS_ARRAY_BUFFER ), JS_CFUNC_MAGIC_DEF("slice", 2, js_array_buffer_slice, JS_CLASS_ARRAY_BUFFER ), - JS_CFUNC_DEF("transfer", 0, js_array_buffer_transfer ), - JS_CFUNC_DEF("transferToFixedLength", 0, js_array_buffer_transfer ), + JS_CFUNC_MAGIC_DEF("transfer", 0, js_array_buffer_transfer, 0 ), + JS_CFUNC_MAGIC_DEF("transferToFixedLength", 0, js_array_buffer_transfer, 1 ), JS_PROP_STRING_DEF("[Symbol.toStringTag]", "ArrayBuffer", JS_PROP_CONFIGURABLE ), }; @@ -51463,40 +51704,53 @@ static const JSCFunctionListEntry js_shared_array_buffer_funcs[] = { static const JSCFunctionListEntry js_shared_array_buffer_proto_funcs[] = { JS_CGETSET_MAGIC_DEF("byteLength", js_array_buffer_get_byteLength, NULL, JS_CLASS_SHARED_ARRAY_BUFFER ), + JS_CGETSET_MAGIC_DEF("maxByteLength", js_array_buffer_get_maxByteLength, NULL, JS_CLASS_SHARED_ARRAY_BUFFER ), + JS_CGETSET_MAGIC_DEF("growable", js_array_buffer_get_resizable, NULL, JS_CLASS_SHARED_ARRAY_BUFFER ), + JS_CFUNC_MAGIC_DEF("grow", 1, js_array_buffer_resize, JS_CLASS_SHARED_ARRAY_BUFFER ), JS_CFUNC_MAGIC_DEF("slice", 2, js_array_buffer_slice, JS_CLASS_SHARED_ARRAY_BUFFER ), JS_PROP_STRING_DEF("[Symbol.toStringTag]", "SharedArrayBuffer", JS_PROP_CONFIGURABLE ), }; -static JSObject *get_typed_array(JSContext *ctx, - JSValue this_val, - int is_dataview) +// is the typed array detached or out of bounds relative to its RAB? +// |p| must be a typed array, *not* a DataView +static BOOL typed_array_is_oob(JSObject *p) { - JSObject *p; - if (JS_VALUE_GET_TAG(this_val) != JS_TAG_OBJECT) - goto fail; - p = JS_VALUE_GET_OBJ(this_val); - if (is_dataview) { - if (p->class_id != JS_CLASS_DATAVIEW) - goto fail; - } else { - if (!(p->class_id >= JS_CLASS_UINT8C_ARRAY && - p->class_id <= JS_CLASS_FLOAT64_ARRAY)) { - fail: - JS_ThrowTypeError(ctx, "not a %s", is_dataview ? "DataView" : "TypedArray"); - return NULL; - } - } - return p; + JSArrayBuffer *abuf; + JSTypedArray *ta; + int len, size_elem; + int64_t end; + + assert(p->class_id >= JS_CLASS_UINT8C_ARRAY); + assert(p->class_id <= JS_CLASS_FLOAT64_ARRAY); + + ta = p->u.typed_array; + abuf = ta->buffer->u.array_buffer; + if (abuf->detached) + return TRUE; + len = abuf->byte_length; + if (ta->offset > len) + return TRUE; + if (ta->track_rab) + return FALSE; + if (len < (int64_t)ta->offset + ta->length) + return TRUE; + size_elem = 1 << typed_array_size_log2(p->class_id); + end = (int64_t)ta->offset + (int64_t)p->u.array.count * size_elem; + return end > len; } -/* WARNING: 'p' must be a typed array */ -static BOOL typed_array_is_detached(JSContext *ctx, JSObject *p) +// |p| must be a typed array, *not* a DataView +static BOOL typed_array_is_resizable(JSObject *p) { - JSTypedArray *ta = p->u.typed_array; - JSArrayBuffer *abuf = ta->buffer->u.array_buffer; - /* XXX: could simplify test by ensuring that - p->u.array.u.ptr is NULL iff it is detached */ - return abuf->detached; + JSArrayBuffer *abuf; + JSTypedArray *ta; + + assert(p->class_id >= JS_CLASS_UINT8C_ARRAY); + assert(p->class_id <= JS_CLASS_FLOAT64_ARRAY); + + ta = p->u.typed_array; + abuf = ta->buffer->u.array_buffer; + return array_buffer_is_resizable(abuf); } /* WARNING: 'p' must be a typed array. Works even if the array buffer @@ -51511,76 +51765,65 @@ static uint32_t typed_array_get_length(JSContext *ctx, JSObject *p) static int validate_typed_array(JSContext *ctx, JSValue this_val) { JSObject *p; - p = get_typed_array(ctx, this_val, 0); + p = get_typed_array(ctx, this_val); if (!p) return -1; - if (typed_array_is_detached(ctx, p)) { - JS_ThrowTypeErrorDetachedArrayBuffer(ctx); + if (typed_array_is_oob(p)) { + JS_ThrowTypeErrorArrayBufferOOB(ctx); return -1; } return 0; } -static JSValue js_typed_array_get_length(JSContext *ctx, - JSValue this_val) +static JSValue js_typed_array_get_length(JSContext *ctx, JSValue this_val) { JSObject *p; - p = get_typed_array(ctx, this_val, 0); + p = get_typed_array(ctx, this_val); if (!p) return JS_EXCEPTION; return js_int32(p->u.array.count); } -static JSValue js_typed_array_get_buffer(JSContext *ctx, - JSValue this_val, int is_dataview) +static JSValue js_typed_array_get_buffer(JSContext *ctx, JSValue this_val) { JSObject *p; JSTypedArray *ta; - p = get_typed_array(ctx, this_val, is_dataview); + p = get_typed_array(ctx, this_val); if (!p) return JS_EXCEPTION; ta = p->u.typed_array; return js_dup(JS_MKPTR(JS_TAG_OBJECT, ta->buffer)); } -static JSValue js_typed_array_get_byteLength(JSContext *ctx, - JSValue this_val, - int is_dataview) +static JSValue js_typed_array_get_byteLength(JSContext *ctx, JSValue this_val) { - JSObject *p; + uint32_t size_log2; JSTypedArray *ta; - p = get_typed_array(ctx, this_val, is_dataview); + JSObject *p; + + p = get_typed_array(ctx, this_val); if (!p) return JS_EXCEPTION; - if (typed_array_is_detached(ctx, p)) { - if (is_dataview) { - return JS_ThrowTypeErrorDetachedArrayBuffer(ctx); - } else { - return js_int32(0); - } - } + if (typed_array_is_oob(p)) + return js_int32(0); ta = p->u.typed_array; - return js_int32(ta->length); + if (!ta->track_rab) + return js_uint32(ta->length); + size_log2 = typed_array_size_log2(p->class_id); + return js_int64((int64_t)p->u.array.count << size_log2); } -static JSValue js_typed_array_get_byteOffset(JSContext *ctx, - JSValue this_val, - int is_dataview) +static JSValue js_typed_array_get_byteOffset(JSContext *ctx, JSValue this_val) { JSObject *p; JSTypedArray *ta; - p = get_typed_array(ctx, this_val, is_dataview); + p = get_typed_array(ctx, this_val); if (!p) return JS_EXCEPTION; - if (typed_array_is_detached(ctx, p)) { - if (is_dataview) { - return JS_ThrowTypeErrorDetachedArrayBuffer(ctx); - } else { - return js_int32(0); - } - } + if (typed_array_is_oob(p)) + return js_int32(0); ta = p->u.typed_array; - return js_int32(ta->offset); + return js_uint32(ta->offset); } /* Return the buffer associated to the typed array or an exception if @@ -51593,11 +51836,11 @@ JSValue JS_GetTypedArrayBuffer(JSContext *ctx, JSValue obj, { JSObject *p; JSTypedArray *ta; - p = get_typed_array(ctx, obj, FALSE); + p = get_typed_array(ctx, obj); if (!p) return JS_EXCEPTION; - if (typed_array_is_detached(ctx, p)) - return JS_ThrowTypeErrorDetachedArrayBuffer(ctx); + if (typed_array_is_oob(p)) + return JS_ThrowTypeErrorArrayBufferOOB(ctx); ta = p->u.typed_array; if (pbyte_offset) *pbyte_offset = ta->offset; @@ -51616,11 +51859,11 @@ uint8_t *JS_GetUint8Array(JSContext *ctx, size_t *psize, JSValue obj) JSObject *p; JSTypedArray *ta; JSArrayBuffer *abuf; - p = get_typed_array(ctx, obj, FALSE); + p = get_typed_array(ctx, obj); if (!p) goto fail; - if (typed_array_is_detached(ctx, p)) { - JS_ThrowTypeErrorDetachedArrayBuffer(ctx); + if (typed_array_is_oob(p)) { + JS_ThrowTypeErrorArrayBufferOOB(ctx); goto fail; } if (p->class_id != JS_CLASS_UINT8_ARRAY && p->class_id != JS_CLASS_UINT8C_ARRAY) { @@ -51658,21 +51901,22 @@ static JSValue js_typed_array_set_internal(JSContext *ctx, JSObject *p; JSObject *src_p; uint32_t i; - int64_t src_len, offset; + int64_t dst_len, src_len, offset; JSValue val, src_obj = JS_UNDEFINED; - p = get_typed_array(ctx, dst, 0); + p = get_typed_array(ctx, dst); if (!p) goto fail; if (JS_ToInt64Sat(ctx, &offset, off)) goto fail; if (offset < 0) goto range_error; - if (typed_array_is_detached(ctx, p)) { + if (typed_array_is_oob(p)) { detached: - JS_ThrowTypeErrorDetachedArrayBuffer(ctx); + JS_ThrowTypeErrorArrayBufferOOB(ctx); goto fail; } + dst_len = p->u.array.count; src_obj = JS_ToObject(ctx, src); if (JS_IsException(src_obj)) goto fail; @@ -51685,11 +51929,11 @@ static JSValue js_typed_array_set_internal(JSContext *ctx, JSArrayBuffer *src_abuf = src_ta->buffer->u.array_buffer; int shift = typed_array_size_log2(p->class_id); - if (src_abuf->detached) + if (typed_array_is_oob(src_p)) goto detached; src_len = src_p->u.array.count; - if (offset > (int64_t)(p->u.array.count - src_len)) + if (offset > dst_len - src_len) goto range_error; /* copying between typed objects */ @@ -51705,9 +51949,11 @@ static JSValue js_typed_array_set_internal(JSContext *ctx, } /* otherwise, default behavior is slow but correct */ } else { + // can change |dst| as a side effect; per spec, + // perform the range check against its old length if (js_get_length64(ctx, &src_len, src_obj)) goto fail; - if (offset > (int64_t)(p->u.array.count - src_len)) { + if (offset > dst_len - src_len) { range_error: JS_ThrowRangeError(ctx, "invalid array length"); goto fail; @@ -51720,7 +51966,7 @@ static JSValue js_typed_array_set_internal(JSContext *ctx, // Per spec: detaching the TA mid-iteration is allowed and should // not throw an exception. Because iteration over the source array is // observable, we cannot bail out early when the TA is first detached. - if (typed_array_is_detached(ctx, p)) { + if (typed_array_is_oob(p)) { JS_FreeValue(ctx, val); } else if (JS_SetPropertyUint32(ctx, dst, offset + i, val) < 0) { goto fail; @@ -51740,23 +51986,25 @@ static JSValue js_typed_array_at(JSContext *ctx, JSValue this_val, JSObject *p; int64_t idx, len; - p = get_typed_array(ctx, this_val, /*is_dataview*/0); + p = get_typed_array(ctx, this_val); if (!p) return JS_EXCEPTION; - if (typed_array_is_detached(ctx, p)) { - JS_ThrowTypeErrorDetachedArrayBuffer(ctx); + if (typed_array_is_oob(p)) { + JS_ThrowTypeErrorArrayBufferOOB(ctx); return JS_EXCEPTION; } + len = p->u.array.count; + + // note: can change p->u.array.count if (JS_ToInt64Sat(ctx, &idx, argv[0])) return JS_EXCEPTION; - len = p->u.array.count; if (idx < 0) idx = len + idx; - if (idx < 0 || idx >= len) + if (idx < 0 || idx >= p->u.array.count) return JS_UNDEFINED; switch (p->class_id) { @@ -51794,32 +52042,37 @@ static JSValue js_typed_array_with(JSContext *ctx, JSValue this_val, { JSValue arr, val; JSObject *p; - int64_t idx, len; + int64_t idx; + uint32_t len, oldlen, newlen; - p = get_typed_array(ctx, this_val, /*is_dataview*/0); + p = get_typed_array(ctx, this_val); if (!p) return JS_EXCEPTION; + oldlen = p->u.array.count; if (JS_ToInt64Sat(ctx, &idx, argv[0])) return JS_EXCEPTION; - len = p->u.array.count; - if (idx < 0) - idx = len + idx; - if (idx < 0 || idx >= len) - return JS_ThrowRangeError(ctx, "invalid array index"); - val = JS_ToPrimitive(ctx, argv[1], HINT_NUMBER); if (JS_IsException(val)) return JS_EXCEPTION; + newlen = p->u.array.count; + if (idx < 0) + idx = newlen + idx; + if (idx < 0 || idx >= newlen) { + JS_FreeValue(ctx, val); + return JS_ThrowRangeError(ctx, "invalid array index"); + } + + len = min_uint32(oldlen, newlen); arr = js_typed_array_constructor_ta(ctx, JS_UNDEFINED, this_val, - p->class_id); + p->class_id, len); if (JS_IsException(arr)) { JS_FreeValue(ctx, val); return JS_EXCEPTION; } - if (JS_SetPropertyInt64(ctx, arr, idx, val) < 0) { + if (idx < len && JS_SetPropertyInt64(ctx, arr, idx, val) < 0) { JS_FreeValue(ctx, arr); return JS_EXCEPTION; } @@ -51845,21 +52098,6 @@ static JSValue js_create_typed_array_iterator(JSContext *ctx, JSValue this_val, return js_create_array_iterator(ctx, this_val, argc, argv, magic); } -/* return < 0 if exception */ -static int js_typed_array_get_length_internal(JSContext *ctx, - JSValue obj) -{ - JSObject *p; - p = get_typed_array(ctx, obj, 0); - if (!p) - return -1; - if (typed_array_is_detached(ctx, p)) { - JS_ThrowTypeErrorDetachedArrayBuffer(ctx); - return -1; - } - return p->u.array.count; -} - static JSValue js_typed_array_create(JSContext *ctx, JSValue ctor, int argc, JSValue *argv) { @@ -51871,7 +52109,7 @@ static JSValue js_typed_array_create(JSContext *ctx, JSValue ctor, if (JS_IsException(ret)) return ret; /* validate the typed array */ - new_len = js_typed_array_get_length_internal(ctx, ret); + new_len = js_typed_array_get_length_unsafe(ctx, ret); if (new_len < 0) goto fail; if (argc == 1) { @@ -51898,7 +52136,7 @@ static JSValue js_typed_array___speciesCreate(JSContext *ctx, int argc1; obj = argv[0]; - p = get_typed_array(ctx, obj, 0); + p = get_typed_array(ctx, obj); if (!p) return JS_EXCEPTION; ctor = JS_SpeciesConstructor(ctx, obj, JS_UNDEFINED); @@ -52033,11 +52271,14 @@ static JSValue js_typed_array_copyWithin(JSContext *ctx, JSValue this_val, int argc, JSValue *argv) { JSObject *p; - int len, to, from, final, count, shift; + int len, to, from, final, count, shift, space; - len = js_typed_array_get_length_internal(ctx, this_val); - if (len < 0) + p = get_typed_array(ctx, this_val); + if (!p) return JS_EXCEPTION; + if (typed_array_is_oob(p)) + return JS_ThrowTypeErrorArrayBufferOOB(ctx); + len = p->u.array.count; if (JS_ToInt32Clamp(ctx, &to, argv[0], 0, len, len)) return JS_EXCEPTION; @@ -52051,11 +52292,14 @@ static JSValue js_typed_array_copyWithin(JSContext *ctx, JSValue this_val, return JS_EXCEPTION; } + if (typed_array_is_oob(p)) + return JS_ThrowTypeErrorArrayBufferOOB(ctx); + + // RAB may have been resized by evil .valueOf method + space = p->u.array.count - max_int(to, from); count = min_int(final - from, len - to); + count = min_int(count, space); if (count > 0) { - p = JS_VALUE_GET_OBJ(this_val); - if (typed_array_is_detached(ctx, p)) - return JS_ThrowTypeErrorDetachedArrayBuffer(ctx); shift = typed_array_size_log2(p->class_id); memmove(p->u.array.u.uint8_ptr + (to << shift), p->u.array.u.uint8_ptr + (from << shift), @@ -52071,10 +52315,12 @@ static JSValue js_typed_array_fill(JSContext *ctx, JSValue this_val, int len, k, final, shift; uint64_t v64; - len = js_typed_array_get_length_internal(ctx, this_val); - if (len < 0) + p = get_typed_array(ctx, this_val); + if (!p) return JS_EXCEPTION; - p = JS_VALUE_GET_OBJ(this_val); + if (typed_array_is_oob(p)) + return JS_ThrowTypeErrorArrayBufferOOB(ctx); + len = p->u.array.count; if (p->class_id == JS_CLASS_UINT8C_ARRAY) { int32_t v; @@ -52122,9 +52368,11 @@ static JSValue js_typed_array_fill(JSContext *ctx, JSValue this_val, return JS_EXCEPTION; } - if (typed_array_is_detached(ctx, p)) - return JS_ThrowTypeErrorDetachedArrayBuffer(ctx); + if (typed_array_is_oob(p)) + return JS_ThrowTypeErrorArrayBufferOOB(ctx); + // RAB may have been resized by evil .valueOf method + final = min_int(final, p->u.array.count); shift = typed_array_size_log2(p->class_id); switch(shift) { case 0: @@ -52163,7 +52411,7 @@ static JSValue js_typed_array_find(JSContext *ctx, JSValue this_val, int dir; val = JS_UNDEFINED; - len = js_typed_array_get_length_internal(ctx, this_val); + len = js_typed_array_get_length_unsafe(ctx, this_val); if (len < 0) goto exception; @@ -52228,13 +52476,19 @@ static JSValue js_typed_array_indexOf(JSContext *ctx, JSValue this_val, double d; float f; uint16_t hf; + BOOL oob; + + p = get_typed_array(ctx, this_val); + if (!p) + return JS_EXCEPTION; + if (typed_array_is_oob(p)) + return JS_ThrowTypeErrorArrayBufferOOB(ctx); + len = p->u.array.count; - len = js_typed_array_get_length_internal(ctx, this_val); - if (len < 0) - goto exception; if (len == 0) goto done; + oob = FALSE; if (special == special_lastIndexOf) { k = len - 1; if (argc > 1) { @@ -52260,23 +52514,37 @@ static JSValue js_typed_array_indexOf(JSContext *ctx, JSValue this_val, } else { k = 0; if (argc > 1) { - if (JS_ToInt32Clamp(ctx, &k, argv[1], 0, len, len)) + if (JS_ToInt32Sat(ctx, &k, argv[1])) goto exception; + if (k < 0) { + k += len; + if (k < 0) + k = 0; + } else if (k > len) { + k = len; + oob = TRUE; + } } stop = len; inc = 1; } - p = JS_VALUE_GET_OBJ(this_val); /* if the array was detached, no need to go further (but no exception is raised) */ - if (typed_array_is_detached(ctx, p)) { + if (typed_array_is_oob(p) || len > p->u.array.count) { /* "includes" scans all the properties, so "undefined" can match */ if (special == special_includes && JS_IsUndefined(argv[0]) && len > 0) - res = 0; + res = oob ? -1 : 0; goto done; } + // RAB may have been resized by evil .valueOf method + len = min_int(len, p->u.array.count); + if (len == 0) + goto done; + k = min_int(k, len); + stop = min_int(stop, len); + is_bigint = 0; is_int = 0; /* avoid warning */ v64 = 0; /* avoid warning */ @@ -52325,7 +52593,9 @@ static JSValue js_typed_array_indexOf(JSContext *ctx, JSValue this_val, pv = p->u.array.u.uint8_ptr; v = v64; if (inc > 0) { - pp = memchr(pv + k, v, len - k); + pp = NULL; + if (pv) + pp = memchr(pv + k, v, len - k); if (pp) res = pp - pv; } else { @@ -52494,35 +52764,42 @@ static JSValue js_typed_array_join(JSContext *ctx, JSValue this_val, { JSValue sep = JS_UNDEFINED, el; StringBuffer b_s, *b = &b_s; - JSString *p = NULL; - int i, n; + JSString *s = NULL; + JSObject *p; + int i, len, oldlen, newlen; int c; - n = js_typed_array_get_length_internal(ctx, this_val); - if (n < 0) - goto exception; + p = get_typed_array(ctx, this_val); + if (!p) + return JS_EXCEPTION; + if (typed_array_is_oob(p)) + return JS_ThrowTypeErrorArrayBufferOOB(ctx); + len = oldlen = newlen = p->u.array.count; c = ','; /* default separator */ if (!toLocaleString && argc > 0 && !JS_IsUndefined(argv[0])) { sep = JS_ToString(ctx, argv[0]); if (JS_IsException(sep)) goto exception; - p = JS_VALUE_GET_STRING(sep); - if (p->len == 1 && !p->is_wide_char) - c = p->u.str8[0]; + s = JS_VALUE_GET_STRING(sep); + if (s->len == 1 && !s->is_wide_char) + c = s->u.str8[0]; else c = -1; + // ToString(sep) can detach or resize the arraybuffer as a side effect + newlen = p->u.array.count; + len = min_int(len, newlen); } string_buffer_init(ctx, b, 0); /* XXX: optimize with direct access */ - for(i = 0; i < n; i++) { + for(i = 0; i < len; i++) { if (i > 0) { if (c >= 0) { if (string_buffer_putc8(b, c)) goto fail; } else { - if (string_buffer_concat(b, p, 0, p->len)) + if (string_buffer_concat(b, s, 0, s->len)) goto fail; } } @@ -52538,6 +52815,19 @@ static JSValue js_typed_array_join(JSContext *ctx, JSValue this_val, goto fail; } } + + // add extra separators in case RAB was resized by evil .valueOf method + i = max_int(1, newlen); + for(/*empty*/; i < oldlen; i++) { + if (c >= 0) { + if (string_buffer_putc8(b, c)) + goto fail; + } else { + if (string_buffer_concat(b, s, 0, s->len)) + goto fail; + } + } + JS_FreeValue(ctx, sep); return string_buffer_end(b); @@ -52554,7 +52844,7 @@ static JSValue js_typed_array_reverse(JSContext *ctx, JSValue this_val, JSObject *p; int len; - len = js_typed_array_get_length_internal(ctx, this_val); + len = js_typed_array_get_length_unsafe(ctx, this_val); if (len < 0) return JS_EXCEPTION; if (len > 0) { @@ -52617,11 +52907,11 @@ static JSValue js_typed_array_toReversed(JSContext *ctx, JSValue this_val, JSValue arr, ret; JSObject *p; - p = get_typed_array(ctx, this_val, /*is_dataview*/0); + p = get_typed_array(ctx, this_val); if (!p) return JS_EXCEPTION; arr = js_typed_array_constructor_ta(ctx, JS_UNDEFINED, this_val, - p->class_id); + p->class_id, p->u.array.count); if (JS_IsException(arr)) return JS_EXCEPTION; ret = js_typed_array_reverse(ctx, arr, argc, argv); @@ -52635,12 +52925,15 @@ static JSValue js_typed_array_slice(JSContext *ctx, JSValue this_val, JSValue args[2]; JSValue arr, val; JSObject *p, *p1; - int n, len, start, final, count, shift; + int n, len, start, final, count, shift, space; arr = JS_UNDEFINED; - len = js_typed_array_get_length_internal(ctx, this_val); - if (len < 0) - goto exception; + p = get_typed_array(ctx, this_val); + if (!p) + return JS_EXCEPTION; + if (typed_array_is_oob(p)) + return JS_ThrowTypeErrorArrayBufferOOB(ctx); + len = p->u.array.count; if (JS_ToInt32Clamp(ctx, &start, argv[0], 0, len, len)) goto exception; @@ -52651,11 +52944,6 @@ static JSValue js_typed_array_slice(JSContext *ctx, JSValue this_val, } count = max_int(final - start, 0); - p = get_typed_array(ctx, this_val, 0); - if (p == NULL) - goto exception; - shift = typed_array_size_log2(p->class_id); - args[0] = this_val; args[1] = js_int32(count); arr = js_typed_array___speciesCreate(ctx, JS_UNDEFINED, 2, args); @@ -52667,14 +52955,21 @@ static JSValue js_typed_array_slice(JSContext *ctx, JSValue this_val, || validate_typed_array(ctx, arr)) goto exception; - p1 = get_typed_array(ctx, arr, 0); + if (len != p->u.array.count) + goto slow_path; + + p1 = get_typed_array(ctx, arr); if (p1 != NULL && p->class_id == p1->class_id && typed_array_get_length(ctx, p1) >= count && typed_array_get_length(ctx, p) >= start + count) { + shift = typed_array_size_log2(p->class_id); memmove(p1->u.array.u.uint8_ptr, p->u.array.u.uint8_ptr + (start << shift), count << shift); } else { + slow_path: + space = max_int(0, p->u.array.count - start); + count = min_int(count, space); for (n = 0; n < count; n++) { val = JS_GetPropertyValue(ctx, this_val, js_int32(start + n)); if (JS_IsException(val)) @@ -52695,41 +52990,53 @@ static JSValue js_typed_array_slice(JSContext *ctx, JSValue this_val, static JSValue js_typed_array_subarray(JSContext *ctx, JSValue this_val, int argc, JSValue *argv) { + JSArrayBuffer *abuf; + JSTypedArray *ta; JSValue args[4]; JSValue arr, byteOffset, ta_buffer; JSObject *p; int len, start, final, count, shift, offset; - p = get_typed_array(ctx, this_val, 0); + p = get_typed_array(ctx, this_val); if (!p) goto exception; len = p->u.array.count; if (JS_ToInt32Clamp(ctx, &start, argv[0], 0, len, len)) goto exception; - final = len; if (!JS_IsUndefined(argv[1])) { if (JS_ToInt32Clamp(ctx, &final, argv[1], 0, len, len)) goto exception; } count = max_int(final - start, 0); - byteOffset = js_typed_array_get_byteOffset(ctx, this_val, 0); + byteOffset = js_typed_array_get_byteOffset(ctx, this_val); if (JS_IsException(byteOffset)) goto exception; + ta = p->u.typed_array; + abuf = ta->buffer->u.array_buffer; + if (ta->offset > abuf->byte_length) + goto range_error; + if (ta->offset == abuf->byte_length && count > 0) { + range_error: + JS_ThrowRangeError(ctx, "invalid offset"); + goto exception; + } shift = typed_array_size_log2(p->class_id); offset = JS_VALUE_GET_INT(byteOffset) + (start << shift); JS_FreeValue(ctx, byteOffset); - ta_buffer = js_typed_array_get_buffer(ctx, this_val, 0); + ta_buffer = js_typed_array_get_buffer(ctx, this_val); if (JS_IsException(ta_buffer)) goto exception; args[0] = this_val; args[1] = ta_buffer; args[2] = js_int32(offset); args[3] = js_int32(count); + // result is length-tracking if source TA is and no explicit count is given + if (ta->track_rab && JS_IsUndefined(argv[1])) + args[3] = JS_UNDEFINED; arr = js_typed_array___speciesCreate(ctx, JS_UNDEFINED, 4, args); JS_FreeValue(ctx, ta_buffer); return arr; - exception: return JS_EXCEPTION; } @@ -52850,7 +53157,6 @@ struct TA_sort_context { JSValue arr; JSValue cmp; JSValue (*getfun)(JSContext *ctx, const void *a); - uint8_t *array_ptr; /* cannot change unless the array is detached */ int elt_size; }; @@ -52864,16 +53170,18 @@ static int js_TA_cmp_generic(const void *a, const void *b, void *opaque) { int cmp; p = JS_VALUE_GET_OBJ(psc->arr); - if (typed_array_is_detached(ctx, p)) + if (typed_array_is_oob(p)) return 0; cmp = 0; if (!psc->exception) { a_idx = *(uint32_t *)a; b_idx = *(uint32_t *)b; - argv[0] = psc->getfun(ctx, psc->array_ptr + + if (a_idx >= p->u.array.count || b_idx >= p->u.array.count) + return 0; + argv[0] = psc->getfun(ctx, (char *)p->u.array.u.ptr + a_idx * (size_t)psc->elt_size); - argv[1] = psc->getfun(ctx, psc->array_ptr + + argv[1] = psc->getfun(ctx, (char *)p->u.array.u.ptr + b_idx * (size_t)(psc->elt_size)); res = JS_Call(ctx, psc->cmp, JS_UNDEFINED, 2, argv); if (JS_IsException(res)) { @@ -52910,22 +53218,26 @@ static JSValue js_typed_array_sort(JSContext *ctx, JSValue this_val, int len; size_t elt_size; struct TA_sort_context tsc; - void *array_ptr; int (*cmpfun)(const void *a, const void *b, void *opaque); + p = get_typed_array(ctx, this_val); + if (!p) + return JS_EXCEPTION; + if (typed_array_is_oob(p)) { + JS_ThrowTypeErrorArrayBufferOOB(ctx); + return JS_EXCEPTION; + } + tsc.ctx = ctx; tsc.exception = 0; tsc.arr = this_val; tsc.cmp = argv[0]; - len = js_typed_array_get_length_internal(ctx, this_val); - if (len < 0) - return JS_EXCEPTION; if (!JS_IsUndefined(tsc.cmp) && check_function(ctx, tsc.cmp)) return JS_EXCEPTION; + len = p->u.array.count; if (len > 1) { - p = JS_VALUE_GET_OBJ(this_val); switch (p->class_id) { case JS_CLASS_INT8_ARRAY: tsc.getfun = js_TA_get_int8; @@ -52975,7 +53287,6 @@ static JSValue js_typed_array_sort(JSContext *ctx, JSValue this_val, default: abort(); } - array_ptr = p->u.array.u.ptr; elt_size = 1 << typed_array_size_log2(p->class_id); if (!JS_IsUndefined(tsc.cmp)) { uint32_t *array_idx; @@ -52988,14 +53299,16 @@ static JSValue js_typed_array_sort(JSContext *ctx, JSValue this_val, return JS_EXCEPTION; for(i = 0; i < len; i++) array_idx[i] = i; - tsc.array_ptr = array_ptr; tsc.elt_size = elt_size; rqsort(array_idx, len, sizeof(array_idx[0]), js_TA_cmp_generic, &tsc); if (tsc.exception) goto fail; // per spec: typed array can be detached mid-iteration - if (typed_array_is_detached(ctx, p)) + if (typed_array_is_oob(p)) + goto done; + len = min_int(len, p->u.array.count); + if (len == 0) goto done; array_tmp = js_malloc(ctx, len * elt_size); if (!array_tmp) { @@ -53003,30 +53316,30 @@ static JSValue js_typed_array_sort(JSContext *ctx, JSValue this_val, js_free(ctx, array_idx); return JS_EXCEPTION; } - memcpy(array_tmp, array_ptr, len * elt_size); + memcpy(array_tmp, p->u.array.u.ptr, len * elt_size); switch(elt_size) { case 1: for(i = 0; i < len; i++) { j = array_idx[i]; - ((uint8_t *)array_ptr)[i] = ((uint8_t *)array_tmp)[j]; + p->u.array.u.uint8_ptr[i] = ((uint8_t *)array_tmp)[j]; } break; case 2: for(i = 0; i < len; i++) { j = array_idx[i]; - ((uint16_t *)array_ptr)[i] = ((uint16_t *)array_tmp)[j]; + p->u.array.u.uint16_ptr[i] = ((uint16_t *)array_tmp)[j]; } break; case 4: for(i = 0; i < len; i++) { j = array_idx[i]; - ((uint32_t *)array_ptr)[i] = ((uint32_t *)array_tmp)[j]; + p->u.array.u.uint32_ptr[i] = ((uint32_t *)array_tmp)[j]; } break; case 8: for(i = 0; i < len; i++) { j = array_idx[i]; - ((uint64_t *)array_ptr)[i] = ((uint64_t *)array_tmp)[j]; + p->u.array.u.uint64_ptr[i] = ((uint64_t *)array_tmp)[j]; } break; default: @@ -53036,7 +53349,7 @@ static JSValue js_typed_array_sort(JSContext *ctx, JSValue this_val, done: js_free(ctx, array_idx); } else { - rqsort(array_ptr, len, elt_size, cmpfun, &tsc); + rqsort(p->u.array.u.ptr, len, elt_size, cmpfun, &tsc); if (tsc.exception) return JS_EXCEPTION; } @@ -53050,11 +53363,11 @@ static JSValue js_typed_array_toSorted(JSContext *ctx, JSValue this_val, JSValue arr, ret; JSObject *p; - p = get_typed_array(ctx, this_val, /*is_dataview*/0); + p = get_typed_array(ctx, this_val); if (!p) return JS_EXCEPTION; arr = js_typed_array_constructor_ta(ctx, JS_UNDEFINED, this_val, - p->class_id); + p->class_id, p->u.array.count); if (JS_IsException(arr)) return JS_EXCEPTION; ret = js_typed_array_sort(ctx, arr, argc, argv); @@ -53072,9 +53385,9 @@ static const JSCFunctionListEntry js_typed_array_base_proto_funcs[] = { JS_CGETSET_DEF("length", js_typed_array_get_length, NULL ), JS_CFUNC_DEF("at", 1, js_typed_array_at ), JS_CFUNC_DEF("with", 2, js_typed_array_with ), - JS_CGETSET_MAGIC_DEF("buffer", js_typed_array_get_buffer, NULL, 0 ), - JS_CGETSET_MAGIC_DEF("byteLength", js_typed_array_get_byteLength, NULL, 0 ), - JS_CGETSET_MAGIC_DEF("byteOffset", js_typed_array_get_byteOffset, NULL, 0 ), + JS_CGETSET_DEF("buffer", js_typed_array_get_buffer, NULL ), + JS_CGETSET_DEF("byteLength", js_typed_array_get_byteLength, NULL ), + JS_CGETSET_DEF("byteOffset", js_typed_array_get_byteOffset, NULL ), JS_CFUNC_DEF("set", 1, js_typed_array_set ), JS_CFUNC_MAGIC_DEF("values", 0, js_create_typed_array_iterator, JS_ITERATOR_KIND_VALUE ), JS_ALIAS_DEF("[Symbol.iterator]", "values" ), @@ -53116,8 +53429,8 @@ static JSValue js_typed_array_base_constructor(JSContext *ctx, } /* 'obj' must be an allocated typed array object */ -static int typed_array_init(JSContext *ctx, JSValue obj, - JSValue buffer, uint64_t offset, uint64_t len) +static int typed_array_init(JSContext *ctx, JSValue obj, JSValue buffer, + uint64_t offset, uint64_t len, BOOL track_rab) { JSTypedArray *ta; JSObject *p, *pbuffer; @@ -53137,6 +53450,7 @@ static int typed_array_init(JSContext *ctx, JSValue obj, ta->buffer = pbuffer; ta->offset = offset; ta->length = len << size_log2; + ta->track_rab = track_rab; list_add_tail(&ta->link, &abuf->array_list); p->u.typed_array = ta; p->u.array.count = len; @@ -53218,10 +53532,11 @@ static JSValue js_typed_array_constructor_obj(JSContext *ctx, } buffer = js_array_buffer_constructor1(ctx, JS_UNDEFINED, - len << size_log2); + len << size_log2, + NULL); if (JS_IsException(buffer)) goto fail; - if (typed_array_init(ctx, ret, buffer, 0, len)) + if (typed_array_init(ctx, ret, buffer, 0, len, /*track_rab*/FALSE)) goto fail; for(i = 0; i < len; i++) { @@ -53242,12 +53557,12 @@ static JSValue js_typed_array_constructor_obj(JSContext *ctx, static JSValue js_typed_array_constructor_ta(JSContext *ctx, JSValue new_target, JSValue src_obj, - int classid) + int classid, uint32_t len) { JSObject *p, *src_buffer; JSTypedArray *ta; JSValue obj, buffer; - uint32_t len, i; + uint32_t i; int size_log2; JSArrayBuffer *src_abuf, *abuf; @@ -53255,27 +53570,27 @@ static JSValue js_typed_array_constructor_ta(JSContext *ctx, if (JS_IsException(obj)) return obj; p = JS_VALUE_GET_OBJ(src_obj); - if (typed_array_is_detached(ctx, p)) { - JS_ThrowTypeErrorDetachedArrayBuffer(ctx); + if (typed_array_is_oob(p)) { + JS_ThrowTypeErrorArrayBufferOOB(ctx); goto fail; } ta = p->u.typed_array; - len = p->u.array.count; src_buffer = ta->buffer; src_abuf = src_buffer->u.array_buffer; size_log2 = typed_array_size_log2(classid); buffer = js_array_buffer_constructor1(ctx, JS_UNDEFINED, - (uint64_t)len << size_log2); + (uint64_t)len << size_log2, + NULL); if (JS_IsException(buffer)) goto fail; /* necessary because it could have been detached */ - if (typed_array_is_detached(ctx, p)) { + if (typed_array_is_oob(p)) { JS_FreeValue(ctx, buffer); - JS_ThrowTypeErrorDetachedArrayBuffer(ctx); + JS_ThrowTypeErrorArrayBufferOOB(ctx); goto fail; } abuf = JS_GetOpaque(buffer, JS_CLASS_ARRAY_BUFFER); - if (typed_array_init(ctx, obj, buffer, 0, len)) + if (typed_array_init(ctx, obj, buffer, 0, len, /*track_rab*/FALSE)) goto fail; if (p->class_id == classid) { /* same type: copy the content */ @@ -53301,6 +53616,7 @@ static JSValue js_typed_array_constructor(JSContext *ctx, int argc, JSValue *argv, int classid) { + BOOL track_rab = FALSE; JSValue buffer, obj; JSArrayBuffer *abuf; int size_log2; @@ -53311,7 +53627,8 @@ static JSValue js_typed_array_constructor(JSContext *ctx, if (JS_ToIndex(ctx, &len, argv[0])) return JS_EXCEPTION; buffer = js_array_buffer_constructor1(ctx, JS_UNDEFINED, - len << size_log2); + len << size_log2, + NULL); if (JS_IsException(buffer)) return JS_EXCEPTION; offset = 0; @@ -53328,8 +53645,10 @@ static JSValue js_typed_array_constructor(JSContext *ctx, offset > abuf->byte_length) return JS_ThrowRangeError(ctx, "invalid offset"); if (JS_IsUndefined(argv[2])) { - if ((abuf->byte_length & ((1 << size_log2) - 1)) != 0) - goto invalid_length; + track_rab = array_buffer_is_resizable(abuf); + if (!track_rab) + if ((abuf->byte_length & ((1 << size_log2) - 1)) != 0) + goto invalid_length; len = (abuf->byte_length - offset) >> size_log2; } else { if (JS_ToIndex(ctx, &len, argv[2])) @@ -53345,7 +53664,8 @@ static JSValue js_typed_array_constructor(JSContext *ctx, } else { if (p->class_id >= JS_CLASS_UINT8C_ARRAY && p->class_id <= JS_CLASS_FLOAT64_ARRAY) { - return js_typed_array_constructor_ta(ctx, new_target, argv[0], classid); + return js_typed_array_constructor_ta(ctx, new_target, argv[0], + classid, p->u.array.count); } else { return js_typed_array_constructor_obj(ctx, new_target, argv[0], classid); } @@ -53357,7 +53677,7 @@ static JSValue js_typed_array_constructor(JSContext *ctx, JS_FreeValue(ctx, buffer); return JS_EXCEPTION; } - if (typed_array_init(ctx, obj, buffer, offset, len)) { + if (typed_array_init(ctx, obj, buffer, offset, len, track_rab)) { JS_FreeValue(ctx, obj); return JS_EXCEPTION; } @@ -53393,6 +53713,8 @@ static JSValue js_dataview_constructor(JSContext *ctx, JSValue new_target, int argc, JSValue *argv) { + BOOL recompute_len = FALSE; + BOOL track_rab = FALSE; JSArrayBuffer *abuf; uint64_t offset; uint32_t len; @@ -53422,6 +53744,9 @@ static JSValue js_dataview_constructor(JSContext *ctx, if (l > len) return JS_ThrowRangeError(ctx, "invalid byteLength"); len = l; + } else { + recompute_len = TRUE; + track_rab = array_buffer_is_resizable(abuf); } obj = js_create_from_ctor(ctx, new_target, JS_CLASS_DATAVIEW); @@ -53432,6 +53757,16 @@ static JSValue js_dataview_constructor(JSContext *ctx, JS_ThrowTypeErrorDetachedArrayBuffer(ctx); goto fail; } + // RAB could have been resized in js_create_from_ctor() + if (offset > abuf->byte_length) { + goto out_of_bound; + } else if (recompute_len) { + len = abuf->byte_length - offset; + } else if (offset + len > abuf->byte_length) { + out_of_bound: + JS_ThrowRangeError(ctx, "invalid byteOffset or byteLength"); + goto fail; + } ta = js_malloc(ctx, sizeof(*ta)); if (!ta) { fail: @@ -53443,11 +53778,88 @@ static JSValue js_dataview_constructor(JSContext *ctx, ta->buffer = JS_VALUE_GET_OBJ(js_dup(buffer)); ta->offset = offset; ta->length = len; + ta->track_rab = track_rab; list_add_tail(&ta->link, &abuf->array_list); p->u.typed_array = ta; return obj; } +// is the DataView out of bounds relative to its parent arraybuffer? +static BOOL dataview_is_oob(JSObject *p) +{ + JSArrayBuffer *abuf; + JSTypedArray *ta; + + assert(p->class_id == JS_CLASS_DATAVIEW); + ta = p->u.typed_array; + abuf = ta->buffer->u.array_buffer; + if (abuf->detached) + return TRUE; + if (ta->offset > abuf->byte_length) + return TRUE; + if (ta->track_rab) + return FALSE; + return (int64_t)ta->offset + ta->length > abuf->byte_length; +} + +static JSObject *get_dataview(JSContext *ctx, JSValue this_val) +{ + JSObject *p; + if (JS_VALUE_GET_TAG(this_val) != JS_TAG_OBJECT) + goto fail; + p = JS_VALUE_GET_OBJ(this_val); + if (p->class_id != JS_CLASS_DATAVIEW) { + fail: + JS_ThrowTypeError(ctx, "not a DataView"); + return NULL; + } + return p; +} + +static JSValue js_dataview_get_buffer(JSContext *ctx, JSValue this_val) +{ + JSObject *p; + JSTypedArray *ta; + p = get_dataview(ctx, this_val); + if (!p) + return JS_EXCEPTION; + ta = p->u.typed_array; + return js_dup(JS_MKPTR(JS_TAG_OBJECT, ta->buffer)); +} + +static JSValue js_dataview_get_byteLength(JSContext *ctx, JSValue this_val) +{ + JSArrayBuffer *abuf; + JSTypedArray *ta; + JSObject *p; + + p = get_dataview(ctx, this_val); + if (!p) + return JS_EXCEPTION; + if (dataview_is_oob(p)) + return JS_ThrowTypeErrorArrayBufferOOB(ctx); + ta = p->u.typed_array; + if (ta->track_rab) { + abuf = ta->buffer->u.array_buffer; + return js_uint32(abuf->byte_length - ta->offset); + } + return js_uint32(ta->length); +} + +static JSValue js_dataview_get_byteOffset(JSContext *ctx, JSValue this_val) +{ + JSTypedArray *ta; + JSObject *p; + + p = get_dataview(ctx, this_val); + if (!p) + return JS_EXCEPTION; + if (dataview_is_oob(p)) + return JS_ThrowTypeErrorArrayBufferOOB(ctx); + ta = p->u.typed_array; + return js_uint32(ta->offset); +} + static JSValue js_dataview_getValue(JSContext *ctx, JSValue this_obj, int argc, JSValue *argv, int class_id) @@ -53471,8 +53883,14 @@ static JSValue js_dataview_getValue(JSContext *ctx, abuf = ta->buffer->u.array_buffer; if (abuf->detached) return JS_ThrowTypeErrorDetachedArrayBuffer(ctx); + // order matters: this check should come before the next one if ((pos + size) > ta->length) return JS_ThrowRangeError(ctx, "out of bound"); + // test262 expects a TypeError for this and V8, in its infinite wisdom, + // throws a "detached array buffer" exception, but IMO that doesn't make + // sense because the buffer is not in fact detached, it's still there + if ((int64_t)ta->offset + ta->length > abuf->byte_length) + return JS_ThrowTypeError(ctx, "out of bound"); ptr = abuf->data + ta->offset + pos; switch(class_id) { @@ -53609,8 +54027,14 @@ static JSValue js_dataview_setValue(JSContext *ctx, abuf = ta->buffer->u.array_buffer; if (abuf->detached) return JS_ThrowTypeErrorDetachedArrayBuffer(ctx); + // order matters: this check should come before the next one if ((pos + size) > ta->length) return JS_ThrowRangeError(ctx, "out of bound"); + // test262 expects a TypeError for this and V8, in its infinite wisdom, + // throws a "detached array buffer" exception, but IMO that doesn't make + // sense because the buffer is not in fact detached, it's still there + if ((int64_t)ta->offset + ta->length > abuf->byte_length) + return JS_ThrowTypeError(ctx, "out of bound"); ptr = abuf->data + ta->offset + pos; switch(class_id) { @@ -53646,9 +54070,9 @@ static JSValue js_dataview_setValue(JSContext *ctx, } static const JSCFunctionListEntry js_dataview_proto_funcs[] = { - JS_CGETSET_MAGIC_DEF("buffer", js_typed_array_get_buffer, NULL, 1 ), - JS_CGETSET_MAGIC_DEF("byteLength", js_typed_array_get_byteLength, NULL, 1 ), - JS_CGETSET_MAGIC_DEF("byteOffset", js_typed_array_get_byteOffset, NULL, 1 ), + JS_CGETSET_DEF("buffer", js_dataview_get_buffer, NULL ), + JS_CGETSET_DEF("byteLength", js_dataview_get_byteLength, NULL ), + JS_CGETSET_DEF("byteOffset", js_dataview_get_byteOffset, NULL ), JS_CFUNC_MAGIC_DEF("getInt8", 1, js_dataview_getValue, JS_CLASS_INT8_ARRAY ), JS_CFUNC_MAGIC_DEF("getUint8", 1, js_dataview_getValue, JS_CLASS_UINT8_ARRAY ), JS_CFUNC_MAGIC_DEF("getInt16", 1, js_dataview_getValue, JS_CLASS_INT16_ARRAY ), @@ -53685,7 +54109,7 @@ static JSValue js_new_uint8array(JSContext *ctx, JSValue buffer) } JSArrayBuffer *abuf = js_get_array_buffer(ctx, buffer); assert(abuf != NULL); - if (typed_array_init(ctx, obj, buffer, 0, abuf->byte_length)) { + if (typed_array_init(ctx, obj, buffer, 0, abuf->byte_length, /*track_rab*/FALSE)) { // 'buffer' is freed on error above. JS_FreeValue(ctx, obj); return JS_EXCEPTION; @@ -53697,15 +54121,17 @@ JSValue JS_NewUint8Array(JSContext *ctx, uint8_t *buf, size_t len, JSFreeArrayBufferDataFunc *free_func, void *opaque, JS_BOOL is_shared) { - JSValue buffer = js_array_buffer_constructor3(ctx, JS_UNDEFINED, len, - is_shared ? JS_CLASS_SHARED_ARRAY_BUFFER : JS_CLASS_ARRAY_BUFFER, - buf, free_func, opaque, FALSE); + JSClassID class_id = + is_shared ? JS_CLASS_SHARED_ARRAY_BUFFER : JS_CLASS_ARRAY_BUFFER; + JSValue buffer = js_array_buffer_constructor3(ctx, JS_UNDEFINED, len, NULL, + class_id, buf, free_func, + opaque, FALSE); return js_new_uint8array(ctx, buffer); } JSValue JS_NewUint8ArrayCopy(JSContext *ctx, const uint8_t *buf, size_t len) { - JSValue buffer = js_array_buffer_constructor3(ctx, JS_UNDEFINED, len, + JSValue buffer = js_array_buffer_constructor3(ctx, JS_UNDEFINED, len, NULL, JS_CLASS_ARRAY_BUFFER, (uint8_t *)buf, js_array_buffer_free, NULL, diff --git a/test262.conf b/test262.conf index 5384a0bf..dfec6f70 100644 --- a/test262.conf +++ b/test262.conf @@ -173,7 +173,7 @@ regexp-named-groups regexp-unicode-property-escapes regexp-v-flag RegExp.escape=skip -resizable-arraybuffer=skip +resizable-arraybuffer rest-parameters Set set-methods diff --git a/test262_errors.txt b/test262_errors.txt index dc71ba7d..bfcf9185 100644 --- a/test262_errors.txt +++ b/test262_errors.txt @@ -389,4 +389,7 @@ test262/test/language/expressions/assignment/target-super-computed-reference.js: test262/test/language/expressions/in/private-field-invalid-assignment-target.js:23: unexpected error type: Test262: This statement should not be evaluated. test262/test/language/expressions/in/private-field-invalid-assignment-target.js:23: strict mode: unexpected error type: Test262: This statement should not be evaluated. test262/test/language/module-code/top-level-await/async-module-does-not-block-sibling-modules.js:13: SyntaxError: Could not find export 'check' in module 'test262/test/language/module-code/top-level-await/async-module-sync_FIXTURE.js' +test262/test/staging/ArrayBuffer/resizable/object-define-property-define-properties.js:55: strict mode: unexpected error: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all +test262/test/staging/ArrayBuffer/resizable/object-define-property-parameter-conversion-grows.js:67: strict mode: unexpected error: TypeError: out-of-bound index in typed array +test262/test/staging/ArrayBuffer/resizable/object-define-property-parameter-conversion-shrinks.js:59: strict mode: unexpected error: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all test262/test/staging/top-level-await/tla-hang-entry.js:10: TypeError: $DONE() not called diff --git a/tests/test_bjson.js b/tests/test_bjson.js index 49760155..db4a9623 100644 --- a/tests/test_bjson.js +++ b/tests/test_bjson.js @@ -139,6 +139,41 @@ function bjson_test(a) } } +function bjson_test_arraybuffer() +{ + var buf, array_buffer; + + array_buffer = new ArrayBuffer(4); + assert(array_buffer.byteLength, 4); + assert(array_buffer.maxByteLength, 4); + assert(array_buffer.resizable, false); + buf = bjson.write(array_buffer); + array_buffer = bjson.read(buf, 0, buf.byteLength); + assert(array_buffer.byteLength, 4); + assert(array_buffer.maxByteLength, 4); + assert(array_buffer.resizable, false); + + array_buffer = new ArrayBuffer(4, {maxByteLength: 4}); + assert(array_buffer.byteLength, 4); + assert(array_buffer.maxByteLength, 4); + assert(array_buffer.resizable, true); + buf = bjson.write(array_buffer); + array_buffer = bjson.read(buf, 0, buf.byteLength); + assert(array_buffer.byteLength, 4); + assert(array_buffer.maxByteLength, 4); + assert(array_buffer.resizable, true); + + array_buffer = new ArrayBuffer(4, {maxByteLength: 8}); + assert(array_buffer.byteLength, 4); + assert(array_buffer.maxByteLength, 8); + assert(array_buffer.resizable, true); + buf = bjson.write(array_buffer); + array_buffer = bjson.read(buf, 0, buf.byteLength); + assert(array_buffer.byteLength, 4); + assert(array_buffer.maxByteLength, 8); + assert(array_buffer.resizable, true); +} + /* test multiple references to an object including circular references */ function bjson_test_reference() @@ -292,6 +327,7 @@ function bjson_test_all() assert(e instanceof TypeError); } + bjson_test_arraybuffer(); bjson_test_reference(); bjson_test_regexp(); bjson_test_map(); From 8d3babe2c3a51332df20aa6594e6955e6b44c34b Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Mon, 4 Nov 2024 23:54:03 +0100 Subject: [PATCH 2/5] fixup! SAB ser(des) --- quickjs.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/quickjs.c b/quickjs.c index 83f8859b..d1fd4c26 100644 --- a/quickjs.c +++ b/quickjs.c @@ -35357,13 +35357,22 @@ static JSValue JS_ReadArrayBuffer(BCReaderState *s) static JSValue JS_ReadSharedArrayBuffer(BCReaderState *s) { JSContext *ctx = s->ctx; - uint32_t byte_length; + uint32_t byte_length, max_byte_length; + uint64_t max_byte_length_u64, *pmax_byte_length = NULL; uint8_t *data_ptr; JSValue obj; uint64_t u64; if (bc_get_leb128(s, &byte_length)) return JS_EXCEPTION; + if (bc_get_leb128(s, &max_byte_length)) + return JS_EXCEPTION; + if (max_byte_length < byte_length) + return JS_ThrowTypeError(ctx, "invalid array buffer"); + if (max_byte_length != UINT32_MAX) { + max_byte_length_u64 = max_byte_length; + pmax_byte_length = &max_byte_length_u64; + } if (bc_get_u64(s, &u64)) return JS_EXCEPTION; data_ptr = (uint8_t *)(uintptr_t)u64; @@ -35373,7 +35382,8 @@ static JSValue JS_ReadSharedArrayBuffer(BCReaderState *s) /* keep the SAB pointer so that the user can clone it or free it */ s->sab_tab[s->sab_tab_len++] = data_ptr; /* the SharedArrayBuffer is cloned */ - obj = js_array_buffer_constructor3(ctx, JS_UNDEFINED, byte_length, NULL, + obj = js_array_buffer_constructor3(ctx, JS_UNDEFINED, + byte_length, pmax_byte_length, JS_CLASS_SHARED_ARRAY_BUFFER, data_ptr, NULL, NULL, FALSE); From 611b1abdfc2a076b3ae459d36cc4669e172800ff Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Tue, 5 Nov 2024 00:09:53 +0100 Subject: [PATCH 3/5] fixup! initialize var --- quickjs.c | 1 + 1 file changed, 1 insertion(+) diff --git a/quickjs.c b/quickjs.c index d1fd4c26..0b58fcce 100644 --- a/quickjs.c +++ b/quickjs.c @@ -51603,6 +51603,7 @@ static JSValue js_array_buffer_resize(JSContext *ctx, JSValue this_val, abuf->byte_length = len; abuf->data = data; } + data = abuf->data; // update lengths of all typed arrays backed by this array buffer list_for_each(el, &abuf->array_list) { ta = list_entry(el, JSTypedArray, link); From ab40bdb0e9fe33e9f492b55010dc7a15e0112226 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Tue, 5 Nov 2024 21:33:41 +0100 Subject: [PATCH 4/5] squash! review feedback --- quickjs.c | 23 ++++------------------- 1 file changed, 4 insertions(+), 19 deletions(-) diff --git a/quickjs.c b/quickjs.c index 0b58fcce..1e03c5fb 100644 --- a/quickjs.c +++ b/quickjs.c @@ -1218,8 +1218,6 @@ static BOOL typed_array_is_oob(JSObject *p); static BOOL typed_array_is_resizable(JSObject *p); static uint32_t typed_array_get_length(JSContext *ctx, JSObject *p); static JSValue JS_ThrowTypeErrorDetachedArrayBuffer(JSContext *ctx); -// if you think the current name is lousy, -// I considered naming it JS_ThrowTypeErrorRABOOB static JSValue JS_ThrowTypeErrorArrayBufferOOB(JSContext *ctx); static JSVarRef *get_var_ref(JSContext *ctx, JSStackFrame *sf, int var_idx, BOOL is_arg); @@ -51560,13 +51558,6 @@ static JSValue js_array_buffer_resize(JSContext *ctx, JSValue this_val, abuf = JS_GetOpaque2(ctx, this_val, class_id); if (!abuf) return JS_EXCEPTION; - if (abuf->shared) { - if (class_id == JS_CLASS_ARRAY_BUFFER) - return JS_ThrowTypeError(ctx, "resize called on SharedArrayBuffer"); - } else { - if (class_id == JS_CLASS_SHARED_ARRAY_BUFFER) - return JS_ThrowTypeError(ctx, "grow called on ArrayBuffer"); - } if (abuf->detached) return JS_ThrowTypeErrorDetachedArrayBuffer(ctx); if (!array_buffer_is_resizable(abuf)) @@ -52000,12 +51991,8 @@ static JSValue js_typed_array_at(JSContext *ctx, JSValue this_val, p = get_typed_array(ctx, this_val); if (!p) return JS_EXCEPTION; - - if (typed_array_is_oob(p)) { - JS_ThrowTypeErrorArrayBufferOOB(ctx); - return JS_EXCEPTION; - } - + if (typed_array_is_oob(p)) + return JS_ThrowTypeErrorArrayBufferOOB(ctx); len = p->u.array.count; // note: can change p->u.array.count @@ -53234,10 +53221,8 @@ static JSValue js_typed_array_sort(JSContext *ctx, JSValue this_val, p = get_typed_array(ctx, this_val); if (!p) return JS_EXCEPTION; - if (typed_array_is_oob(p)) { - JS_ThrowTypeErrorArrayBufferOOB(ctx); - return JS_EXCEPTION; - } + if (typed_array_is_oob(p)) + return JS_ThrowTypeErrorArrayBufferOOB(ctx); tsc.ctx = ctx; tsc.exception = 0; From fda205a23d2d8d40e7f8ffa28b6d3308db09141b Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Tue, 5 Nov 2024 21:43:20 +0100 Subject: [PATCH 5/5] squash! fixups --- quickjs.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/quickjs.c b/quickjs.c index 1e03c5fb..17c35d0e 100644 --- a/quickjs.c +++ b/quickjs.c @@ -38391,12 +38391,12 @@ static JSObject *get_typed_array(JSContext *ctx, JSValue this_val) // Be *very* careful if you touch the typed array's memory directly: // the length is only valid until the next call into JS land because -// JS code may detach or resize the backing array buffer. Functions +// JS code can detach or resize the backing array buffer. Functions // like JS_GetProperty and JS_ToIndex call JS code. // // Exclusively reading or writing elements with JS_GetProperty, -// JS_GetPropertyInt64, JS_SetProperty, &c is safe because they -// perform bounds checks, ditto js_get_fast_array_element. +// JS_GetPropertyInt64, JS_SetProperty, etc. is safe because they +// perform bounds checks, as does js_get_fast_array_element. static int js_typed_array_get_length_unsafe(JSContext *ctx, JSValue obj) { JSObject *p; @@ -51368,7 +51368,7 @@ static const JSCFunctionListEntry js_array_buffer_funcs[] = { static JSValue JS_ThrowTypeErrorDetachedArrayBuffer(JSContext *ctx) { - return JS_ThrowTypeError(ctx, "ArrayBuffer is detached or resized"); + return JS_ThrowTypeError(ctx, "ArrayBuffer is detached"); } static JSValue JS_ThrowTypeErrorArrayBufferOOB(JSContext *ctx)