wuffsfmt: double-indents hanging lines
diff --git a/doc/changelog.md b/doc/changelog.md
index 1b51f93..2978619 100644
--- a/doc/changelog.md
+++ b/doc/changelog.md
@@ -1,6 +1,14 @@
# Changelog
+## Work In Progress
+
+The dot points below probably aren't of interest unless you're _writing_ Wuffs
+code (instead of writing C/C++ code that _uses_ Wuffs' standard library).
+
+- `wuffsfmt` double-indents hanging lines.
+
+
## 2023-04-08 version 0.3.3
The `wuffs_base__parse_number_f64` function has been further optimized.
diff --git a/hello-wuffs-c/parse.wuffs b/hello-wuffs-c/parse.wuffs
index 52f2817..c362555 100644
--- a/hello-wuffs-c/parse.wuffs
+++ b/hello-wuffs-c/parse.wuffs
@@ -16,7 +16,7 @@
pri status "#too large"
pub struct parser?(
- val : base.u32,
+ val : base.u32,
)
pub func parser.parse?(src: base.io_reader) {
diff --git a/lang/render/render.go b/lang/render/render.go
index 48be03e..972a8e2 100644
--- a/lang/render/render.go
+++ b/lang/render/render.go
@@ -65,7 +65,7 @@
// Print any previous comments.
commentIndent := indent
if prevLineHanging {
- commentIndent++
+ commentIndent += 2
}
for ; commentLine < line; commentLine++ {
buf = buf[:0]
@@ -115,7 +115,7 @@
} else if id.IsClose() {
indentAdjustment--
} else if hanging && ((id != t.IDOpenCurly) && (id != t.IDOpenDoubleCurly)) {
- indentAdjustment++
+ indentAdjustment += 2
}
buf = appendTabs(buf, indent+indentAdjustment)
diff --git a/std/adler32/common_adler32.wuffs b/std/adler32/common_adler32.wuffs
index 5413e85..fca9794 100644
--- a/std/adler32/common_adler32.wuffs
+++ b/std/adler32/common_adler32.wuffs
@@ -14,8 +14,8 @@
// TODO: drop the '?' but still generate wuffs_adler32__hasher__initialize?
pub struct hasher? implements base.hasher_u32(
- state : base.u32,
- started : base.bool,
+ state : base.u32,
+ started : base.bool,
)
pub func hasher.set_quirk_enabled!(quirk: base.u32, enabled: base.bool) {
@@ -30,15 +30,15 @@
// std/zlib and std/png micro-benchmarks worse. See commit baec831f
// "Add std/adler32 hasher.up_x86_avx2".
choose up = [
- up_arm_neon,
- up_x86_sse42]
+ up_arm_neon,
+ up_x86_sse42]
}
this.up!(x: args.x)
return this.state
}
pri func hasher.up!(x: slice base.u8),
- choosy,
+ choosy,
{
// The Adler-32 checksum's magic 65521 and 5552 numbers are discussed in
// this package's README.md.
diff --git a/std/adler32/common_up_arm_neon.wuffs b/std/adler32/common_up_arm_neon.wuffs
index 47d7eab..47927cb 100644
--- a/std/adler32/common_up_arm_neon.wuffs
+++ b/std/adler32/common_up_arm_neon.wuffs
@@ -13,7 +13,7 @@
// limitations under the License.
pri func hasher.up_arm_neon!(x: slice base.u8),
- choose cpu_arch >= arm_neon,
+ choose cpu_arch >= arm_neon,
{
// These variables are the same as the non-SIMD version.
var s1 : base.u32
@@ -141,29 +141,29 @@
// ...
// [u32×4: 0x04 * (Σ p28), 0x03 * (Σ p29), ..., 0x01 * (Σ p31)]
v2 = v2.vmlal_u16(
- b: col0.vget_low_u16(),
- c: util.make_u16x4_multiple(a00: 0x20, a01: 0x1F, a02: 0x1E, a03: 0x1D))
+ b: col0.vget_low_u16(),
+ c: util.make_u16x4_multiple(a00: 0x20, a01: 0x1F, a02: 0x1E, a03: 0x1D))
v2 = v2.vmlal_u16(
- b: col0.vget_high_u16(),
- c: util.make_u16x4_multiple(a00: 0x1C, a01: 0x1B, a02: 0x1A, a03: 0x19))
+ b: col0.vget_high_u16(),
+ c: util.make_u16x4_multiple(a00: 0x1C, a01: 0x1B, a02: 0x1A, a03: 0x19))
v2 = v2.vmlal_u16(
- b: col1.vget_low_u16(),
- c: util.make_u16x4_multiple(a00: 0x18, a01: 0x17, a02: 0x16, a03: 0x15))
+ b: col1.vget_low_u16(),
+ c: util.make_u16x4_multiple(a00: 0x18, a01: 0x17, a02: 0x16, a03: 0x15))
v2 = v2.vmlal_u16(
- b: col1.vget_high_u16(),
- c: util.make_u16x4_multiple(a00: 0x14, a01: 0x13, a02: 0x12, a03: 0x11))
+ b: col1.vget_high_u16(),
+ c: util.make_u16x4_multiple(a00: 0x14, a01: 0x13, a02: 0x12, a03: 0x11))
v2 = v2.vmlal_u16(
- b: col2.vget_low_u16(),
- c: util.make_u16x4_multiple(a00: 0x10, a01: 0x0F, a02: 0x0E, a03: 0x0D))
+ b: col2.vget_low_u16(),
+ c: util.make_u16x4_multiple(a00: 0x10, a01: 0x0F, a02: 0x0E, a03: 0x0D))
v2 = v2.vmlal_u16(
- b: col2.vget_high_u16(),
- c: util.make_u16x4_multiple(a00: 0x0C, a01: 0x0B, a02: 0x0A, a03: 0x09))
+ b: col2.vget_high_u16(),
+ c: util.make_u16x4_multiple(a00: 0x0C, a01: 0x0B, a02: 0x0A, a03: 0x09))
v2 = v2.vmlal_u16(
- b: col3.vget_low_u16(),
- c: util.make_u16x4_multiple(a00: 0x08, a01: 0x07, a02: 0x06, a03: 0x05))
+ b: col3.vget_low_u16(),
+ c: util.make_u16x4_multiple(a00: 0x08, a01: 0x07, a02: 0x06, a03: 0x05))
v2 = v2.vmlal_u16(
- b: col3.vget_high_u16(),
- c: util.make_u16x4_multiple(a00: 0x04, a01: 0x03, a02: 0x02, a03: 0x01))
+ b: col3.vget_high_u16(),
+ c: util.make_u16x4_multiple(a00: 0x04, a01: 0x03, a02: 0x02, a03: 0x01))
// Merge the four parallel u32 sums (v1) into the single u32 sum (s1)
// and ditto for v2. Starting with [u32×4: xx_0, xx_1, xx_2, xx_3]:
diff --git a/std/adler32/common_up_x86_sse42.wuffs b/std/adler32/common_up_x86_sse42.wuffs
index 9599f2f..0509410 100644
--- a/std/adler32/common_up_x86_sse42.wuffs
+++ b/std/adler32/common_up_x86_sse42.wuffs
@@ -13,7 +13,7 @@
// limitations under the License.
pri func hasher.up_x86_sse42!(x: slice base.u8),
- choose cpu_arch >= x86_sse42,
+ choose cpu_arch >= x86_sse42,
{
// These variables are the same as the non-SIMD version.
var s1 : base.u32
@@ -44,15 +44,15 @@
// weights__left and weights_right form the sequence 32, 31, 30, ..., 1.
weights__left = util.make_m128i_multiple_u8(
- a00: 0x20, a01: 0x1F, a02: 0x1E, a03: 0x1D,
- a04: 0x1C, a05: 0x1B, a06: 0x1A, a07: 0x19,
- a08: 0x18, a09: 0x17, a10: 0x16, a11: 0x15,
- a12: 0x14, a13: 0x13, a14: 0x12, a15: 0x11)
+ a00: 0x20, a01: 0x1F, a02: 0x1E, a03: 0x1D,
+ a04: 0x1C, a05: 0x1B, a06: 0x1A, a07: 0x19,
+ a08: 0x18, a09: 0x17, a10: 0x16, a11: 0x15,
+ a12: 0x14, a13: 0x13, a14: 0x12, a15: 0x11)
weights_right = util.make_m128i_multiple_u8(
- a00: 0x10, a01: 0x0F, a02: 0x0E, a03: 0x0D,
- a04: 0x0C, a05: 0x0B, a06: 0x0A, a07: 0x09,
- a08: 0x08, a09: 0x07, a10: 0x06, a11: 0x05,
- a12: 0x04, a13: 0x03, a14: 0x02, a15: 0x01)
+ a00: 0x10, a01: 0x0F, a02: 0x0E, a03: 0x0D,
+ a04: 0x0C, a05: 0x0B, a06: 0x0A, a07: 0x09,
+ a08: 0x08, a09: 0x07, a10: 0x06, a11: 0x05,
+ a12: 0x04, a13: 0x03, a14: 0x02, a15: 0x01)
// Decompose this.state.
s1 = this.state.low_bits(n: 16)
@@ -138,9 +138,9 @@
//
// Ditto again for q_right's elements.
v2k = v2k._mm_add_epi32(b: ones._mm_madd_epi16(b:
- q__left._mm_maddubs_epi16(b: weights__left)))
+ q__left._mm_maddubs_epi16(b: weights__left)))
v2k = v2k._mm_add_epi32(b: ones._mm_madd_epi16(b:
- q_right._mm_maddubs_epi16(b: weights_right)))
+ q_right._mm_maddubs_epi16(b: weights_right)))
}
// Merge the four parallel u32 sums (v1) into the single u32 sum (s1).
diff --git a/std/bmp/decode_bmp.wuffs b/std/bmp/decode_bmp.wuffs
index 4b6f838..ed9c9e6 100644
--- a/std/bmp/decode_bmp.wuffs
+++ b/std/bmp/decode_bmp.wuffs
@@ -31,55 +31,55 @@
pri const COMPRESSION_LOW_BIT_DEPTH : base.u32 = 0x100
pub struct decoder? implements base.image_decoder(
- width : base.u32[..= 0x7FFF_FFFF],
- height : base.u32[..= 0x7FFF_FFFF],
+ width : base.u32[..= 0x7FFF_FFFF],
+ height : base.u32[..= 0x7FFF_FFFF],
- // The call sequence state machine is discussed in
- // (/doc/std/image-decoders-call-sequence.md).
- call_sequence : base.u8,
+ // The call sequence state machine is discussed in
+ // (/doc/std/image-decoders-call-sequence.md).
+ call_sequence : base.u8,
- top_down : base.bool,
- pad_per_row : base.u32[..= 3],
- src_pixfmt : base.u32,
+ top_down : base.bool,
+ pad_per_row : base.u32[..= 3],
+ src_pixfmt : base.u32,
- io_redirect_fourcc : base.u32,
- io_redirect_pos : base.u64,
+ io_redirect_fourcc : base.u32,
+ io_redirect_pos : base.u64,
- frame_config_io_position : base.u64,
+ frame_config_io_position : base.u64,
- bitmap_info_len : base.u32,
- padding : base.u32,
+ bitmap_info_len : base.u32,
+ padding : base.u32,
- bits_per_pixel : base.u32[..= 0xFFFF],
- compression : base.u32,
+ bits_per_pixel : base.u32[..= 0xFFFF],
+ compression : base.u32,
- // channel_etc's indexes are: B, G, R, A. This is in Wuffs' default order,
- // which isn't the RGBA order they're listed in the wire format.
- channel_masks : array[4] base.u32,
- channel_shifts : array[4] base.u8[..= 31],
- channel_num_bits : array[4] base.u8[..= 32],
+ // channel_etc's indexes are: B, G, R, A. This is in Wuffs' default order,
+ // which isn't the RGBA order they're listed in the wire format.
+ channel_masks : array[4] base.u32,
+ channel_shifts : array[4] base.u8[..= 31],
+ channel_num_bits : array[4] base.u8[..= 32],
- dst_x : base.u32,
- dst_y : base.u32,
- dst_y_inc : base.u32,
+ dst_x : base.u32,
+ dst_y : base.u32,
+ dst_y_inc : base.u32,
- pending_pad : base.u32[..= 3],
+ pending_pad : base.u32[..= 3],
- rle_state : base.u32,
- rle_length : base.u32[..= 0xFF],
- rle_delta_x : base.u8,
- rle_padded : base.bool,
+ rle_state : base.u32,
+ rle_length : base.u32[..= 0xFF],
+ rle_delta_x : base.u8,
+ rle_padded : base.bool,
- swizzler : base.pixel_swizzler,
- util : base.utility,
+ swizzler : base.pixel_swizzler,
+ util : base.utility,
)(
- // scratch is one of:
- // - 2048 bytes = 256 * (8 bytes per BGRA_NONPREMUL_4X16LE).
- // - 1024 bytes = 1024 * (1 byte per INDEXED__BGRA_BINARY), plus
- // 1024 bytes = 256 * (4 bytes per dst_palette entry).
- scratch : array[2048] base.u8,
+ // scratch is one of:
+ // - 2048 bytes = 256 * (8 bytes per BGRA_NONPREMUL_4X16LE).
+ // - 1024 bytes = 1024 * (1 byte per INDEXED__BGRA_BINARY), plus
+ // 1024 bytes = 256 * (4 bytes per dst_palette entry).
+ scratch : array[2048] base.u8,
- src_palette : array[4 * 256] base.u8,
+ src_palette : array[4 * 256] base.u8,
)
pub func decoder.set_quirk_enabled!(quirk: base.u32, enabled: base.bool) {
@@ -218,10 +218,10 @@
}
}
} else if (this.bitmap_info_len <> 52) and
- (this.bitmap_info_len <> 56) and
- (this.bitmap_info_len <> 64) and
- (this.bitmap_info_len <> 108) and
- (this.bitmap_info_len <> 124) {
+ (this.bitmap_info_len <> 56) and
+ (this.bitmap_info_len <> 64) and
+ (this.bitmap_info_len <> 108) and
+ (this.bitmap_info_len <> 124) {
return "#unsupported BMP file"
}
@@ -245,13 +245,13 @@
// If the explicit channel_masks are what the implicit ones
// would be for no compression, treat it as no compression.
if (this.channel_masks[0] == 0x0000_00FF) and
- (this.channel_masks[1] == 0x0000_FF00) and
- (this.channel_masks[2] == 0x00FF_0000) {
+ (this.channel_masks[1] == 0x0000_FF00) and
+ (this.channel_masks[2] == 0x00FF_0000) {
if this.bits_per_pixel == 24 {
this.compression = COMPRESSION_NONE
} else if this.bits_per_pixel == 32 {
if (this.channel_masks[3] == 0) or
- (this.channel_masks[3] == 0xFF00_0000) {
+ (this.channel_masks[3] == 0xFF00_0000) {
this.compression = COMPRESSION_NONE
}
}
@@ -275,8 +275,8 @@
if this.compression == COMPRESSION_NONE {
if (this.bits_per_pixel == 1) or
- (this.bits_per_pixel == 2) or
- (this.bits_per_pixel == 4) {
+ (this.bits_per_pixel == 2) or
+ (this.bits_per_pixel == 4) {
this.src_pixfmt = base.PIXEL_FORMAT__INDEXED__BGRA_BINARY
this.compression = COMPRESSION_LOW_BIT_DEPTH
} else if this.bits_per_pixel == 8 {
@@ -329,10 +329,10 @@
// OS/2 BMP files have fewer valid bits_per_pixel values.
if ((this.bitmap_info_len < 40) or (this.bitmap_info_len == 64)) and
- (this.bits_per_pixel <> 1) and
- (this.bits_per_pixel <> 4) and
- (this.bits_per_pixel <> 8) and
- (this.bits_per_pixel <> 24) {
+ (this.bits_per_pixel <> 1) and
+ (this.bits_per_pixel <> 4) and
+ (this.bits_per_pixel <> 8) and
+ (this.bits_per_pixel <> 24) {
return "#bad header"
}
@@ -364,19 +364,19 @@
if args.dst <> nullptr {
dst_pixfmt = base.PIXEL_FORMAT__BGRA_NONPREMUL
if (this.channel_num_bits[0] > 8) or
- (this.channel_num_bits[1] > 8) or
- (this.channel_num_bits[2] > 8) or
- (this.channel_num_bits[3] > 8) {
+ (this.channel_num_bits[1] > 8) or
+ (this.channel_num_bits[2] > 8) or
+ (this.channel_num_bits[3] > 8) {
dst_pixfmt = base.PIXEL_FORMAT__BGRA_NONPREMUL_4X16LE
}
args.dst.set!(
- pixfmt: dst_pixfmt,
- pixsub: 0,
- width: this.width,
- height: this.height,
- first_frame_io_position: this.frame_config_io_position,
- first_frame_is_opaque: this.channel_masks[3] == 0)
+ pixfmt: dst_pixfmt,
+ pixsub: 0,
+ width: this.width,
+ height: this.height,
+ first_frame_io_position: this.frame_config_io_position,
+ first_frame_is_opaque: this.channel_masks[3] == 0)
}
this.call_sequence = 0x20
@@ -412,17 +412,17 @@
if args.dst <> nullptr {
args.dst.set!(bounds: this.util.make_rect_ie_u32(
- min_incl_x: 0,
- min_incl_y: 0,
- max_excl_x: this.width,
- max_excl_y: this.height),
- duration: 0,
- index: 0,
- io_position: this.frame_config_io_position,
- disposal: 0,
- opaque_within_bounds: true,
- overwrite_instead_of_blend: false,
- background_color: 0xFF00_0000)
+ min_incl_x: 0,
+ min_incl_y: 0,
+ max_excl_x: this.width,
+ max_excl_y: this.height),
+ duration: 0,
+ index: 0,
+ io_position: this.frame_config_io_position,
+ disposal: 0,
+ opaque_within_bounds: true,
+ overwrite_instead_of_blend: false,
+ background_color: 0xFF00_0000)
}
this.call_sequence = 0x40
@@ -464,11 +464,11 @@
}
status = this.swizzler.prepare!(
- dst_pixfmt: args.dst.pixel_format(),
- dst_palette: args.dst.palette_or_else(fallback: this.scratch[1024 ..]),
- src_pixfmt: this.util.make_pixel_format(repr: this.src_pixfmt),
- src_palette: this.src_palette[..],
- blend: args.blend)
+ dst_pixfmt: args.dst.pixel_format(),
+ dst_palette: args.dst.palette_or_else(fallback: this.scratch[1024 ..]),
+ src_pixfmt: this.util.make_pixel_format(repr: this.src_pixfmt),
+ src_palette: this.src_palette[..],
+ blend: args.blend)
if not status.is_ok() {
return status
}
@@ -567,24 +567,24 @@
while j >= 8 {
if args.src.length() >= ((src_bytes_per_pixel * 8) as base.u64) {
args.src.skip_u32_fast!(
- actual: src_bytes_per_pixel * 8,
- worst_case: src_bytes_per_pixel * 8)
+ actual: src_bytes_per_pixel * 8,
+ worst_case: src_bytes_per_pixel * 8)
}
j -= 8
} endwhile
while j > 0 {
if args.src.length() >= ((src_bytes_per_pixel * 1) as base.u64) {
args.src.skip_u32_fast!(
- actual: src_bytes_per_pixel * 1,
- worst_case: src_bytes_per_pixel * 1)
+ actual: src_bytes_per_pixel * 1,
+ worst_case: src_bytes_per_pixel * 1)
}
j -= 1
} endwhile
} else {
n = this.swizzler.swizzle_interleaved_from_reader!(
- dst: dst[i ..],
- dst_palette: dst_palette,
- src: args.src)
+ dst: dst[i ..],
+ dst_palette: dst_palette,
+ src: args.src)
}
if n == 0 {
return "@internal note: short read"
@@ -693,9 +693,9 @@
} endwhile
}
this.swizzler.swizzle_interleaved_from_slice!(
- dst: dst,
- dst_palette: dst_palette,
- src: this.scratch[.. this.rle_length])
+ dst: dst,
+ dst_palette: dst_palette,
+ src: this.scratch[.. this.rle_length])
this.dst_x ~sat+= this.rle_length
rle_state = RLE_STATE_NEUTRAL
continue.middle
@@ -711,9 +711,9 @@
return "#bad RLE compression"
}
this.swizzler.swizzle_interleaved_transparent_black!(
- dst: dst,
- dst_palette: dst_palette,
- num_pixels: 0xFFFF_FFFF_FFFF_FFFF)
+ dst: dst,
+ dst_palette: dst_palette,
+ num_pixels: 0xFFFF_FFFF_FFFF_FFFF)
this.dst_x = 0
this.dst_y ~mod+= this.dst_y_inc
if code > 0 {
@@ -733,10 +733,10 @@
} else if rle_state == RLE_STATE_LITERAL {
if this.bits_per_pixel == 8 {
n = this.swizzler.limited_swizzle_u32_interleaved_from_reader!(
- up_to_num_pixels: this.rle_length,
- dst: dst,
- dst_palette: dst_palette,
- src: args.src)
+ up_to_num_pixels: this.rle_length,
+ dst: dst,
+ dst_palette: dst_palette,
+ src: args.src)
this.dst_x ~sat+= (n & 0xFFFF_FFFF) as base.u32
this.rle_length ~sat-= (n & 0xFFFF_FFFF) as base.u32
} else {
@@ -757,9 +757,9 @@
} endwhile
p0 = p0.min(a: this.rle_length)
this.swizzler.swizzle_interleaved_from_slice!(
- dst: dst,
- dst_palette: dst_palette,
- src: this.scratch[.. p0])
+ dst: dst,
+ dst_palette: dst_palette,
+ src: this.scratch[.. p0])
this.dst_x ~sat+= p0
this.rle_length ~sat-= p0
}
@@ -794,9 +794,9 @@
args.src.skip_u32_fast!(actual: 1, worst_case: 1)
if this.rle_delta_x > 0 {
this.swizzler.swizzle_interleaved_transparent_black!(
- dst: dst,
- dst_palette: dst_palette,
- num_pixels: this.rle_delta_x as base.u64)
+ dst: dst,
+ dst_palette: dst_palette,
+ num_pixels: this.rle_delta_x as base.u64)
this.dst_x ~sat+= this.rle_delta_x as base.u32
this.rle_delta_x = 0
if this.dst_x > this.width {
@@ -819,15 +819,15 @@
}
if code <= 0 {
this.swizzler.swizzle_interleaved_transparent_black!(
- dst: row,
- dst_palette: dst_palette,
- num_pixels: this.dst_x as base.u64)
+ dst: row,
+ dst_palette: dst_palette,
+ num_pixels: this.dst_x as base.u64)
break
}
this.swizzler.swizzle_interleaved_transparent_black!(
- dst: row,
- dst_palette: dst_palette,
- num_pixels: 0xFFFF_FFFF_FFFF_FFFF)
+ dst: row,
+ dst_palette: dst_palette,
+ num_pixels: 0xFFFF_FFFF_FFFF_FFFF)
code -= 1
} endwhile
}
@@ -848,9 +848,9 @@
row = row[.. dst_bytes_per_row]
}
this.swizzler.swizzle_interleaved_transparent_black!(
- dst: row,
- dst_palette: dst_palette,
- num_pixels: 0xFFFF_FFFF_FFFF_FFFF)
+ dst: row,
+ dst_palette: dst_palette,
+ num_pixels: 0xFFFF_FFFF_FFFF_FFFF)
this.dst_y ~mod+= this.dst_y_inc
} endwhile
@@ -935,7 +935,7 @@
channel = 0
while channel < 4,
- inv p0 < 256,
+ inv p0 < 256,
{
if this.channel_num_bits[channel] == 0 {
this.scratch[(8 * p0) + (2 * channel) + 0] = 0xFF
@@ -944,9 +944,9 @@
c = (c32 & this.channel_masks[channel]) >> this.channel_shifts[channel]
num_bits = this.channel_num_bits[channel] as base.u32
while num_bits < 16,
- inv p0 < 256,
- inv channel < 4,
- post num_bits >= 16,
+ inv p0 < 256,
+ inv channel < 4,
+ post num_bits >= 16,
{
c |= c ~mod<< num_bits
num_bits *= 2
@@ -972,9 +972,9 @@
n = p0 as base.u64
} else {
n = this.swizzler.swizzle_interleaved_from_slice!(
- dst: dst[i ..],
- dst_palette: dst_palette,
- src: this.scratch[.. 8 * p0])
+ dst: dst[i ..],
+ dst_palette: dst_palette,
+ src: this.scratch[.. 8 * p0])
}
if n == 0 {
return "@internal note: short read"
@@ -1158,9 +1158,9 @@
p0 = p0.min(a: this.width ~sat- this.dst_x)
n = this.swizzler.swizzle_interleaved_from_slice!(
- dst: dst,
- dst_palette: dst_palette,
- src: this.scratch[.. p0])
+ dst: dst,
+ dst_palette: dst_palette,
+ src: this.scratch[.. p0])
if n == 0 {
return "@internal note: short read"
}
@@ -1172,10 +1172,10 @@
pub func decoder.frame_dirty_rect() base.rect_ie_u32 {
return this.util.make_rect_ie_u32(
- min_incl_x: 0,
- min_incl_y: 0,
- max_excl_x: this.width,
- max_excl_y: this.height)
+ min_incl_x: 0,
+ min_incl_y: 0,
+ max_excl_x: this.width,
+ max_excl_y: this.height)
}
pub func decoder.num_animation_loops() base.u32 {
@@ -1230,11 +1230,11 @@
}
if args.minfo <> nullptr {
args.minfo.set!(
- flavor: base.MORE_INFORMATION__FLAVOR__IO_REDIRECT,
- w: this.io_redirect_fourcc,
- x: 0,
- y: this.io_redirect_pos,
- z: 0xFFFF_FFFF_FFFF_FFFF)
+ flavor: base.MORE_INFORMATION__FLAVOR__IO_REDIRECT,
+ w: this.io_redirect_fourcc,
+ x: 0,
+ y: this.io_redirect_pos,
+ z: 0xFFFF_FFFF_FFFF_FFFF)
}
// Setting io_redirect_fourcc to a placeholder value of 1 will cause future
// calls to return an error.
@@ -1292,7 +1292,7 @@
if mask <> 0 {
n = 0
while (mask & 1) == 0,
- inv i < 4,
+ inv i < 4,
{
n ~mod+= 1
mask >>= 1
@@ -1301,7 +1301,7 @@
n = 0
while (mask & 1) == 1,
- inv i < 4,
+ inv i < 4,
{
n ~mod+= 1
mask >>= 1
diff --git a/std/bzip2/decode_bzip2.wuffs b/std/bzip2/decode_bzip2.wuffs
index 4bd3e92..c0acd7d 100644
--- a/std/bzip2/decode_bzip2.wuffs
+++ b/std/bzip2/decode_bzip2.wuffs
@@ -29,84 +29,84 @@
pri const CLAMP_TO_5 : array[8] base.u8[..= 5] = [0, 1, 2, 3, 4, 5, 5, 5]
pub struct decoder? implements base.io_transformer(
- bits : base.u32,
- n_bits : base.u32[..= 31],
+ bits : base.u32,
+ n_bits : base.u32[..= 31],
- // Block size is measured prior to the RLE1 step.
- max_incl_block_size : base.u32[..= 900000],
+ // Block size is measured prior to the RLE1 step.
+ max_incl_block_size : base.u32[..= 900000],
- block_size : base.u32[..= 900000],
- decode_huffman_finished : base.bool,
- decode_huffman_which : base.u8[..= 5],
- decode_huffman_ticks : base.u32[..= 50],
- decode_huffman_section : base.u32,
- decode_huffman_run_shift : base.u32[..= 23],
+ block_size : base.u32[..= 900000],
+ decode_huffman_finished : base.bool,
+ decode_huffman_which : base.u8[..= 5],
+ decode_huffman_ticks : base.u32[..= 50],
+ decode_huffman_section : base.u32,
+ decode_huffman_run_shift : base.u32[..= 23],
- flush_pointer : base.u32[..= 1_048575],
- flush_repeat_count : base.u32[..= 255],
- flush_prev : base.u8,
+ flush_pointer : base.u32[..= 1_048575],
+ flush_repeat_count : base.u32[..= 255],
+ flush_prev : base.u8,
- ignore_checksum : base.bool,
- final_checksum_have : base.u32,
- block_checksum_have : base.u32,
- block_checksum_want : base.u32,
- original_pointer : base.u32,
- num_symbols : base.u32[..= 258],
- num_huffman_codes : base.u32[..= 6],
- num_sections : base.u32[..= 18001],
- code_lengths_bitmask : base.u32,
+ ignore_checksum : base.bool,
+ final_checksum_have : base.u32,
+ block_checksum_have : base.u32,
+ block_checksum_want : base.u32,
+ original_pointer : base.u32,
+ num_symbols : base.u32[..= 258],
+ num_huffman_codes : base.u32[..= 6],
+ num_sections : base.u32[..= 18001],
+ code_lengths_bitmask : base.u32,
- util : base.utility,
+ util : base.utility,
)(
- scratch : base.u32,
+ scratch : base.u32,
- letter_counts : array[256] base.u32,
+ letter_counts : array[256] base.u32,
- // presence[i] being non-zero is whether the byte value i occurs in the
- // block's decompressed output.
- presence : array[256] base.u8,
+ // presence[i] being non-zero is whether the byte value i occurs in the
+ // block's decompressed output.
+ presence : array[256] base.u8,
- // mtft is the Move To Front Transform state.
- mtft : array[256] base.u8,
+ // mtft is the Move To Front Transform state.
+ mtft : array[256] base.u8,
- // huffman_selectors selects which of the huffman_trees to use for each
- // 50-symbol section.
- huffman_selectors : array[32768] base.u8,
+ // huffman_selectors selects which of the huffman_trees to use for each
+ // 50-symbol section.
+ huffman_selectors : array[32768] base.u8,
- // Each array[2] base.u16 is a branch node in the Huffman tree. The
- // build_huffman_tree method comment details what the base.u16 values mean.
- //
- // Each Huffman tree has num_symbols leaf nodes and hence (num_symbols - 1)
- // branch nodes, also called internal nodes, as per
- // https://stackoverflow.com/questions/69399994/maximum-number-of-nodes-in-a-huffman-tree/69401083#69401083
- //
- // This can be proven inductively. The base case Huffman code (two symbols)
- // has one branch node (the root node). The inductive case, adding one
- // symbol to a (complete but possibly non-canonical) Huffman code replaces
- // one leaf node with one branch node (and two leaf nodes). The net gain in
- // branch nodes is +1.
- //
- // Since num_symbols' inclusive maximum is 258 (for RUNA, RUNB, 255 × mXYZ,
- // EOB), there are at most 257 branch nodes.
- huffman_trees : array[6] array[257] array[2] base.u16,
+ // Each array[2] base.u16 is a branch node in the Huffman tree. The
+ // build_huffman_tree method comment details what the base.u16 values mean.
+ //
+ // Each Huffman tree has num_symbols leaf nodes and hence (num_symbols - 1)
+ // branch nodes, also called internal nodes, as per
+ // https://stackoverflow.com/questions/69399994/maximum-number-of-nodes-in-a-huffman-tree/69401083#69401083
+ //
+ // This can be proven inductively. The base case Huffman code (two symbols)
+ // has one branch node (the root node). The inductive case, adding one
+ // symbol to a (complete but possibly non-canonical) Huffman code replaces
+ // one leaf node with one branch node (and two leaf nodes). The net gain in
+ // branch nodes is +1.
+ //
+ // Since num_symbols' inclusive maximum is 258 (for RUNA, RUNB, 255 × mXYZ,
+ // EOB), there are at most 257 branch nodes.
+ huffman_trees : array[6] array[257] array[2] base.u16,
- // huffman_tables[which] caches the result of walking huffman_trees[which]
- // for each possible 8-bit input. The base.u16 value decomposes as:
- // - The low 10 bits are the final node, where finality comes either from
- // hitting a leaf node or from spending all 8 bits of the input. As per
- // the build_huffman_tree method, a value of 0x100 = 256 or less means
- // a branch node and 0x201 = 513 or more means a leaf node.
- // - The middle 2 bits are unused.
- // - The high 4 bits are the number of input bits spent.
- huffman_tables : array[6] array[256] base.u16,
+ // huffman_tables[which] caches the result of walking huffman_trees[which]
+ // for each possible 8-bit input. The base.u16 value decomposes as:
+ // - The low 10 bits are the final node, where finality comes either from
+ // hitting a leaf node or from spending all 8 bits of the input. As per
+ // the build_huffman_tree method, a value of 0x100 = 256 or less means
+ // a branch node and 0x201 = 513 or more means a leaf node.
+ // - The middle 2 bits are unused.
+ // - The high 4 bits are the number of input bits spent.
+ huffman_tables : array[6] array[256] base.u16,
- // bwt is the Burrows Wheeler Transform state. Per the README.md file, each
- // entry is a row with the low 8 bits holding the L column and the high 20
- // bits holding the U column. The middle 4 bits are unused.
- //
- // The read_code_lengths and build_huffman_tree methods also re-purpose
- // this buffer to temporarily hold up to 258 symbols' code lengths.
- bwt : array[1_048576] base.u32,
+ // bwt is the Burrows Wheeler Transform state. Per the README.md file, each
+ // entry is a row with the low 8 bits holding the L column and the high 20
+ // bits holding the U column. The middle 4 bits are unused.
+ //
+ // The read_code_lengths and build_huffman_tree methods also re-purpose
+ // this buffer to temporarily hold up to 258 symbols' code lengths.
+ bwt : array[1_048576] base.u32,
)
pub func decoder.set_quirk_enabled!(quirk: base.u32, enabled: base.bool) {
@@ -117,8 +117,8 @@
pub func decoder.workbuf_len() base.range_ii_u64 {
return this.util.make_range_ii_u64(
- min_incl: DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE,
- max_incl: DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE)
+ min_incl: DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE,
+ max_incl: DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE)
}
pub func decoder.transform_io?(dst: base.io_writer, src: base.io_reader, workbuf: slice base.u8) {
@@ -225,8 +225,8 @@
return "#bad checksum"
}
this.final_checksum_have = this.block_checksum_have ^ (
- (this.final_checksum_have >> 31) |
- (this.final_checksum_have ~mod<< 1))
+ (this.final_checksum_have >> 31) |
+ (this.final_checksum_have ~mod<< 1))
} endwhile
// Read the 32-bit final checksum.
@@ -418,7 +418,7 @@
// Read a unary encoded natural number.
while true,
- inv i < 18001,
+ inv i < 18001,
{
if this.n_bits <= 0 {
c = args.src.read_u8?()
@@ -446,7 +446,7 @@
sel_ff = selector & 0xFF
movee = this.mtft[sel_ff]
this.mtft[1 .. 1 + sel_ff].copy_from_slice!(
- s: this.mtft[.. sel_ff])
+ s: this.mtft[.. sel_ff])
this.mtft[0] = movee
this.huffman_selectors[i] = movee
}
@@ -514,7 +514,7 @@
while i < this.num_symbols {
assert i < 258 via "a < b: a < c; c <= b"(c: this.num_symbols)
while true,
- inv i < 258,
+ inv i < 258,
{
if (code_length < 1) or (20 < code_length) {
return "#bad block header"
@@ -625,7 +625,7 @@
}
symbol_index = 0
while symbol_index < this.num_symbols,
- inv code_length <= 20,
+ inv code_length <= 20,
{
assert symbol_index < 258 via "a < b: a < c; c <= b"(c: this.num_symbols)
if this.bwt[symbol_index] <> code_length {
@@ -634,9 +634,9 @@
}
while true,
- inv code_length <= 20,
- inv symbol_index < 258,
- post stack_height > 0,
+ inv code_length <= 20,
+ inv symbol_index < 258,
+ post stack_height > 0,
{
if stack_height <= 0 {
return "#bad Huffman code (over-subscribed)"
@@ -676,8 +676,8 @@
this.huffman_trees[args.which][node_index][1] = leaf_value
stack_height -= 1
while stack_height > 0,
- inv code_length <= 20,
- inv symbol_index < 258,
+ inv code_length <= 20,
+ inv symbol_index < 258,
{
node_index = stack_values[stack_height - 1]
if this.huffman_trees[args.which][node_index][1] == 0 {
@@ -709,7 +709,7 @@
n_bits = 0
child = 0
while (child < 257) and (n_bits < 8),
- inv i < 256,
+ inv i < 256,
{
child = this.huffman_trees[args.which][child][bits >> 31]
bits ~mod<<= 1
@@ -756,36 +756,36 @@
// -reverse flag set.
pri const REV_CRC32_TABLE : array[256] base.u32 = [
- 0x0000_0000, 0x04C1_1DB7, 0x0982_3B6E, 0x0D43_26D9, 0x1304_76DC, 0x17C5_6B6B, 0x1A86_4DB2, 0x1E47_5005,
- 0x2608_EDB8, 0x22C9_F00F, 0x2F8A_D6D6, 0x2B4B_CB61, 0x350C_9B64, 0x31CD_86D3, 0x3C8E_A00A, 0x384F_BDBD,
- 0x4C11_DB70, 0x48D0_C6C7, 0x4593_E01E, 0x4152_FDA9, 0x5F15_ADAC, 0x5BD4_B01B, 0x5697_96C2, 0x5256_8B75,
- 0x6A19_36C8, 0x6ED8_2B7F, 0x639B_0DA6, 0x675A_1011, 0x791D_4014, 0x7DDC_5DA3, 0x709F_7B7A, 0x745E_66CD,
- 0x9823_B6E0, 0x9CE2_AB57, 0x91A1_8D8E, 0x9560_9039, 0x8B27_C03C, 0x8FE6_DD8B, 0x82A5_FB52, 0x8664_E6E5,
- 0xBE2B_5B58, 0xBAEA_46EF, 0xB7A9_6036, 0xB368_7D81, 0xAD2F_2D84, 0xA9EE_3033, 0xA4AD_16EA, 0xA06C_0B5D,
- 0xD432_6D90, 0xD0F3_7027, 0xDDB0_56FE, 0xD971_4B49, 0xC736_1B4C, 0xC3F7_06FB, 0xCEB4_2022, 0xCA75_3D95,
- 0xF23A_8028, 0xF6FB_9D9F, 0xFBB8_BB46, 0xFF79_A6F1, 0xE13E_F6F4, 0xE5FF_EB43, 0xE8BC_CD9A, 0xEC7D_D02D,
- 0x3486_7077, 0x3047_6DC0, 0x3D04_4B19, 0x39C5_56AE, 0x2782_06AB, 0x2343_1B1C, 0x2E00_3DC5, 0x2AC1_2072,
- 0x128E_9DCF, 0x164F_8078, 0x1B0C_A6A1, 0x1FCD_BB16, 0x018A_EB13, 0x054B_F6A4, 0x0808_D07D, 0x0CC9_CDCA,
- 0x7897_AB07, 0x7C56_B6B0, 0x7115_9069, 0x75D4_8DDE, 0x6B93_DDDB, 0x6F52_C06C, 0x6211_E6B5, 0x66D0_FB02,
- 0x5E9F_46BF, 0x5A5E_5B08, 0x571D_7DD1, 0x53DC_6066, 0x4D9B_3063, 0x495A_2DD4, 0x4419_0B0D, 0x40D8_16BA,
- 0xACA5_C697, 0xA864_DB20, 0xA527_FDF9, 0xA1E6_E04E, 0xBFA1_B04B, 0xBB60_ADFC, 0xB623_8B25, 0xB2E2_9692,
- 0x8AAD_2B2F, 0x8E6C_3698, 0x832F_1041, 0x87EE_0DF6, 0x99A9_5DF3, 0x9D68_4044, 0x902B_669D, 0x94EA_7B2A,
- 0xE0B4_1DE7, 0xE475_0050, 0xE936_2689, 0xEDF7_3B3E, 0xF3B0_6B3B, 0xF771_768C, 0xFA32_5055, 0xFEF3_4DE2,
- 0xC6BC_F05F, 0xC27D_EDE8, 0xCF3E_CB31, 0xCBFF_D686, 0xD5B8_8683, 0xD179_9B34, 0xDC3A_BDED, 0xD8FB_A05A,
- 0x690C_E0EE, 0x6DCD_FD59, 0x608E_DB80, 0x644F_C637, 0x7A08_9632, 0x7EC9_8B85, 0x738A_AD5C, 0x774B_B0EB,
- 0x4F04_0D56, 0x4BC5_10E1, 0x4686_3638, 0x4247_2B8F, 0x5C00_7B8A, 0x58C1_663D, 0x5582_40E4, 0x5143_5D53,
- 0x251D_3B9E, 0x21DC_2629, 0x2C9F_00F0, 0x285E_1D47, 0x3619_4D42, 0x32D8_50F5, 0x3F9B_762C, 0x3B5A_6B9B,
- 0x0315_D626, 0x07D4_CB91, 0x0A97_ED48, 0x0E56_F0FF, 0x1011_A0FA, 0x14D0_BD4D, 0x1993_9B94, 0x1D52_8623,
- 0xF12F_560E, 0xF5EE_4BB9, 0xF8AD_6D60, 0xFC6C_70D7, 0xE22B_20D2, 0xE6EA_3D65, 0xEBA9_1BBC, 0xEF68_060B,
- 0xD727_BBB6, 0xD3E6_A601, 0xDEA5_80D8, 0xDA64_9D6F, 0xC423_CD6A, 0xC0E2_D0DD, 0xCDA1_F604, 0xC960_EBB3,
- 0xBD3E_8D7E, 0xB9FF_90C9, 0xB4BC_B610, 0xB07D_ABA7, 0xAE3A_FBA2, 0xAAFB_E615, 0xA7B8_C0CC, 0xA379_DD7B,
- 0x9B36_60C6, 0x9FF7_7D71, 0x92B4_5BA8, 0x9675_461F, 0x8832_161A, 0x8CF3_0BAD, 0x81B0_2D74, 0x8571_30C3,
- 0x5D8A_9099, 0x594B_8D2E, 0x5408_ABF7, 0x50C9_B640, 0x4E8E_E645, 0x4A4F_FBF2, 0x470C_DD2B, 0x43CD_C09C,
- 0x7B82_7D21, 0x7F43_6096, 0x7200_464F, 0x76C1_5BF8, 0x6886_0BFD, 0x6C47_164A, 0x6104_3093, 0x65C5_2D24,
- 0x119B_4BE9, 0x155A_565E, 0x1819_7087, 0x1CD8_6D30, 0x029F_3D35, 0x065E_2082, 0x0B1D_065B, 0x0FDC_1BEC,
- 0x3793_A651, 0x3352_BBE6, 0x3E11_9D3F, 0x3AD0_8088, 0x2497_D08D, 0x2056_CD3A, 0x2D15_EBE3, 0x29D4_F654,
- 0xC5A9_2679, 0xC168_3BCE, 0xCC2B_1D17, 0xC8EA_00A0, 0xD6AD_50A5, 0xD26C_4D12, 0xDF2F_6BCB, 0xDBEE_767C,
- 0xE3A1_CBC1, 0xE760_D676, 0xEA23_F0AF, 0xEEE2_ED18, 0xF0A5_BD1D, 0xF464_A0AA, 0xF927_8673, 0xFDE6_9BC4,
- 0x89B8_FD09, 0x8D79_E0BE, 0x803A_C667, 0x84FB_DBD0, 0x9ABC_8BD5, 0x9E7D_9662, 0x933E_B0BB, 0x97FF_AD0C,
- 0xAFB0_10B1, 0xAB71_0D06, 0xA632_2BDF, 0xA2F3_3668, 0xBCB4_666D, 0xB875_7BDA, 0xB536_5D03, 0xB1F7_40B4,
+ 0x0000_0000, 0x04C1_1DB7, 0x0982_3B6E, 0x0D43_26D9, 0x1304_76DC, 0x17C5_6B6B, 0x1A86_4DB2, 0x1E47_5005,
+ 0x2608_EDB8, 0x22C9_F00F, 0x2F8A_D6D6, 0x2B4B_CB61, 0x350C_9B64, 0x31CD_86D3, 0x3C8E_A00A, 0x384F_BDBD,
+ 0x4C11_DB70, 0x48D0_C6C7, 0x4593_E01E, 0x4152_FDA9, 0x5F15_ADAC, 0x5BD4_B01B, 0x5697_96C2, 0x5256_8B75,
+ 0x6A19_36C8, 0x6ED8_2B7F, 0x639B_0DA6, 0x675A_1011, 0x791D_4014, 0x7DDC_5DA3, 0x709F_7B7A, 0x745E_66CD,
+ 0x9823_B6E0, 0x9CE2_AB57, 0x91A1_8D8E, 0x9560_9039, 0x8B27_C03C, 0x8FE6_DD8B, 0x82A5_FB52, 0x8664_E6E5,
+ 0xBE2B_5B58, 0xBAEA_46EF, 0xB7A9_6036, 0xB368_7D81, 0xAD2F_2D84, 0xA9EE_3033, 0xA4AD_16EA, 0xA06C_0B5D,
+ 0xD432_6D90, 0xD0F3_7027, 0xDDB0_56FE, 0xD971_4B49, 0xC736_1B4C, 0xC3F7_06FB, 0xCEB4_2022, 0xCA75_3D95,
+ 0xF23A_8028, 0xF6FB_9D9F, 0xFBB8_BB46, 0xFF79_A6F1, 0xE13E_F6F4, 0xE5FF_EB43, 0xE8BC_CD9A, 0xEC7D_D02D,
+ 0x3486_7077, 0x3047_6DC0, 0x3D04_4B19, 0x39C5_56AE, 0x2782_06AB, 0x2343_1B1C, 0x2E00_3DC5, 0x2AC1_2072,
+ 0x128E_9DCF, 0x164F_8078, 0x1B0C_A6A1, 0x1FCD_BB16, 0x018A_EB13, 0x054B_F6A4, 0x0808_D07D, 0x0CC9_CDCA,
+ 0x7897_AB07, 0x7C56_B6B0, 0x7115_9069, 0x75D4_8DDE, 0x6B93_DDDB, 0x6F52_C06C, 0x6211_E6B5, 0x66D0_FB02,
+ 0x5E9F_46BF, 0x5A5E_5B08, 0x571D_7DD1, 0x53DC_6066, 0x4D9B_3063, 0x495A_2DD4, 0x4419_0B0D, 0x40D8_16BA,
+ 0xACA5_C697, 0xA864_DB20, 0xA527_FDF9, 0xA1E6_E04E, 0xBFA1_B04B, 0xBB60_ADFC, 0xB623_8B25, 0xB2E2_9692,
+ 0x8AAD_2B2F, 0x8E6C_3698, 0x832F_1041, 0x87EE_0DF6, 0x99A9_5DF3, 0x9D68_4044, 0x902B_669D, 0x94EA_7B2A,
+ 0xE0B4_1DE7, 0xE475_0050, 0xE936_2689, 0xEDF7_3B3E, 0xF3B0_6B3B, 0xF771_768C, 0xFA32_5055, 0xFEF3_4DE2,
+ 0xC6BC_F05F, 0xC27D_EDE8, 0xCF3E_CB31, 0xCBFF_D686, 0xD5B8_8683, 0xD179_9B34, 0xDC3A_BDED, 0xD8FB_A05A,
+ 0x690C_E0EE, 0x6DCD_FD59, 0x608E_DB80, 0x644F_C637, 0x7A08_9632, 0x7EC9_8B85, 0x738A_AD5C, 0x774B_B0EB,
+ 0x4F04_0D56, 0x4BC5_10E1, 0x4686_3638, 0x4247_2B8F, 0x5C00_7B8A, 0x58C1_663D, 0x5582_40E4, 0x5143_5D53,
+ 0x251D_3B9E, 0x21DC_2629, 0x2C9F_00F0, 0x285E_1D47, 0x3619_4D42, 0x32D8_50F5, 0x3F9B_762C, 0x3B5A_6B9B,
+ 0x0315_D626, 0x07D4_CB91, 0x0A97_ED48, 0x0E56_F0FF, 0x1011_A0FA, 0x14D0_BD4D, 0x1993_9B94, 0x1D52_8623,
+ 0xF12F_560E, 0xF5EE_4BB9, 0xF8AD_6D60, 0xFC6C_70D7, 0xE22B_20D2, 0xE6EA_3D65, 0xEBA9_1BBC, 0xEF68_060B,
+ 0xD727_BBB6, 0xD3E6_A601, 0xDEA5_80D8, 0xDA64_9D6F, 0xC423_CD6A, 0xC0E2_D0DD, 0xCDA1_F604, 0xC960_EBB3,
+ 0xBD3E_8D7E, 0xB9FF_90C9, 0xB4BC_B610, 0xB07D_ABA7, 0xAE3A_FBA2, 0xAAFB_E615, 0xA7B8_C0CC, 0xA379_DD7B,
+ 0x9B36_60C6, 0x9FF7_7D71, 0x92B4_5BA8, 0x9675_461F, 0x8832_161A, 0x8CF3_0BAD, 0x81B0_2D74, 0x8571_30C3,
+ 0x5D8A_9099, 0x594B_8D2E, 0x5408_ABF7, 0x50C9_B640, 0x4E8E_E645, 0x4A4F_FBF2, 0x470C_DD2B, 0x43CD_C09C,
+ 0x7B82_7D21, 0x7F43_6096, 0x7200_464F, 0x76C1_5BF8, 0x6886_0BFD, 0x6C47_164A, 0x6104_3093, 0x65C5_2D24,
+ 0x119B_4BE9, 0x155A_565E, 0x1819_7087, 0x1CD8_6D30, 0x029F_3D35, 0x065E_2082, 0x0B1D_065B, 0x0FDC_1BEC,
+ 0x3793_A651, 0x3352_BBE6, 0x3E11_9D3F, 0x3AD0_8088, 0x2497_D08D, 0x2056_CD3A, 0x2D15_EBE3, 0x29D4_F654,
+ 0xC5A9_2679, 0xC168_3BCE, 0xCC2B_1D17, 0xC8EA_00A0, 0xD6AD_50A5, 0xD26C_4D12, 0xDF2F_6BCB, 0xDBEE_767C,
+ 0xE3A1_CBC1, 0xE760_D676, 0xEA23_F0AF, 0xEEE2_ED18, 0xF0A5_BD1D, 0xF464_A0AA, 0xF927_8673, 0xFDE6_9BC4,
+ 0x89B8_FD09, 0x8D79_E0BE, 0x803A_C667, 0x84FB_DBD0, 0x9ABC_8BD5, 0x9E7D_9662, 0x933E_B0BB, 0x97FF_AD0C,
+ 0xAFB0_10B1, 0xAB71_0D06, 0xA632_2BDF, 0xA2F3_3668, 0xBCB4_666D, 0xB875_7BDA, 0xB536_5D03, 0xB1F7_40B4,
]
diff --git a/std/bzip2/decode_flush_fast.wuffs b/std/bzip2/decode_flush_fast.wuffs
index 9d472a2..b46b132 100644
--- a/std/bzip2/decode_flush_fast.wuffs
+++ b/std/bzip2/decode_flush_fast.wuffs
@@ -39,8 +39,8 @@
flush_repeat_count = 1
}
block_checksum_have =
- REV_CRC32_TABLE[((block_checksum_have >> 24) as base.u8) ^ curr] ^
- (block_checksum_have ~mod<< 8)
+ REV_CRC32_TABLE[((block_checksum_have >> 24) as base.u8) ^ curr] ^
+ (block_checksum_have ~mod<< 8)
args.dst.write_u8_fast!(a: curr)
flush_prev = curr
block_size -= 1
@@ -51,11 +51,11 @@
flush_pointer = entry >> 12
flush_repeat_count = curr as base.u32
while flush_repeat_count > 0,
- inv block_size > 0,
+ inv block_size > 0,
{
block_checksum_have =
- REV_CRC32_TABLE[((block_checksum_have >> 24) as base.u8) ^ flush_prev] ^
- (block_checksum_have ~mod<< 8)
+ REV_CRC32_TABLE[((block_checksum_have >> 24) as base.u8) ^ flush_prev] ^
+ (block_checksum_have ~mod<< 8)
if args.dst.length() > 0 {
args.dst.write_u8_fast!(a: flush_prev)
}
diff --git a/std/bzip2/decode_flush_slow.wuffs b/std/bzip2/decode_flush_slow.wuffs
index 8e0a5f4..27ca2c8 100644
--- a/std/bzip2/decode_flush_slow.wuffs
+++ b/std/bzip2/decode_flush_slow.wuffs
@@ -39,8 +39,8 @@
flush_repeat_count = 1
}
block_checksum_have =
- REV_CRC32_TABLE[((block_checksum_have >> 24) as base.u8) ^ curr] ^
- (block_checksum_have ~mod<< 8)
+ REV_CRC32_TABLE[((block_checksum_have >> 24) as base.u8) ^ curr] ^
+ (block_checksum_have ~mod<< 8)
args.dst.write_u8?(a: curr)
flush_prev = curr
block_size -= 1
@@ -51,11 +51,11 @@
flush_pointer = entry >> 12
flush_repeat_count = curr as base.u32
while flush_repeat_count > 0,
- inv block_size > 0,
+ inv block_size > 0,
{
block_checksum_have =
- REV_CRC32_TABLE[((block_checksum_have >> 24) as base.u8) ^ flush_prev] ^
- (block_checksum_have ~mod<< 8)
+ REV_CRC32_TABLE[((block_checksum_have >> 24) as base.u8) ^ flush_prev] ^
+ (block_checksum_have ~mod<< 8)
args.dst.write_u8?(a: flush_prev)
flush_repeat_count -= 1
} endwhile
diff --git a/std/bzip2/decode_huffman_fast.wuffs b/std/bzip2/decode_huffman_fast.wuffs
index eb404d0..86c5447 100644
--- a/std/bzip2/decode_huffman_fast.wuffs
+++ b/std/bzip2/decode_huffman_fast.wuffs
@@ -73,7 +73,7 @@
child_ff = (child & 0xFF) as base.u32
output = this.mtft[child_ff] as base.u32
this.mtft[1 .. 1 + child_ff].copy_from_slice!(
- s: this.mtft[.. child_ff])
+ s: this.mtft[.. child_ff])
this.mtft[0] = output as base.u8
this.letter_counts[output] ~mod+= 1
@@ -107,7 +107,7 @@
mtft0 = this.mtft[0] as base.u32
this.letter_counts[mtft0] ~mod+= run
while i < j,
- pre j <= 900000,
+ pre j <= 900000,
{
assert i < 900000 via "a < b: a < c; c <= b"(c: j)
this.bwt[i] = mtft0
diff --git a/std/bzip2/decode_huffman_slow.wuffs b/std/bzip2/decode_huffman_slow.wuffs
index 035f0c8..95829da 100644
--- a/std/bzip2/decode_huffman_slow.wuffs
+++ b/std/bzip2/decode_huffman_slow.wuffs
@@ -58,7 +58,7 @@
child_ff = (child & 0xFF) as base.u32
output = this.mtft[child_ff] as base.u32
this.mtft[1 .. 1 + child_ff].copy_from_slice!(
- s: this.mtft[.. child_ff])
+ s: this.mtft[.. child_ff])
this.mtft[0] = output as base.u8
this.letter_counts[output] ~mod+= 1
@@ -93,7 +93,7 @@
mtft0 = this.mtft[0] as base.u32
this.letter_counts[mtft0] ~mod+= run
while i < j,
- pre j <= 900000,
+ pre j <= 900000,
{
assert i < 900000 via "a < b: a < c; c <= b"(c: j)
this.bwt[i] = mtft0
diff --git a/std/cbor/decode_cbor.wuffs b/std/cbor/decode_cbor.wuffs
index 318ead8..66894f3 100644
--- a/std/cbor/decode_cbor.wuffs
+++ b/std/cbor/decode_cbor.wuffs
@@ -77,40 +77,40 @@
// --------
pri const LITERALS : array[4] base.u32[..= 0x1FF_FFFF] = [
- (base.TOKEN__VBC__LITERAL << 21) | base.TOKEN__VBD__LITERAL__FALSE,
- (base.TOKEN__VBC__LITERAL << 21) | base.TOKEN__VBD__LITERAL__TRUE,
- (base.TOKEN__VBC__LITERAL << 21) | base.TOKEN__VBD__LITERAL__NULL,
- (base.TOKEN__VBC__LITERAL << 21) | base.TOKEN__VBD__LITERAL__UNDEFINED,
+ (base.TOKEN__VBC__LITERAL << 21) | base.TOKEN__VBD__LITERAL__FALSE,
+ (base.TOKEN__VBC__LITERAL << 21) | base.TOKEN__VBD__LITERAL__TRUE,
+ (base.TOKEN__VBC__LITERAL << 21) | base.TOKEN__VBD__LITERAL__NULL,
+ (base.TOKEN__VBC__LITERAL << 21) | base.TOKEN__VBD__LITERAL__UNDEFINED,
]
pri const TOKEN_LENGTHS : array[32] base.u8[..= 9] = [
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 3, 5, 9, 0, 0, 0, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 2, 3, 5, 9, 0, 0, 0, 1,
]
pub struct decoder? implements base.token_decoder(
- end_of_data : base.bool,
+ end_of_data : base.bool,
- util : base.utility,
+ util : base.utility,
)(
- // stack is conceptually an array of 2-bit integers, implemented as an
- // array of u32. The N'th 2-bit pair is whether we're in an array or
- // object, where N is the recursion depth:
- // - 0b00 In an array.
- // - 0b01 In an object, expecting a value.
- // - 0b10 In an array.
- // - 0b11 In an object, expecting a key.
- //
- // The maximum recursion depth, 1024, is the same as for std/json.
- stack : array[1024 / 16] base.u32,
+ // stack is conceptually an array of 2-bit integers, implemented as an
+ // array of u32. The N'th 2-bit pair is whether we're in an array or
+ // object, where N is the recursion depth:
+ // - 0b00 In an array.
+ // - 0b01 In an object, expecting a value.
+ // - 0b10 In an array.
+ // - 0b11 In an object, expecting a key.
+ //
+ // The maximum recursion depth, 1024, is the same as for std/json.
+ stack : array[1024 / 16] base.u32,
- // container_num_remaining[i] is the number of elements remaining in the
- // open containers, for i ranging in 0 .. depth. If (i < depth) and
- // (container_num_remaining[i] == 0) then the i'th open container has
- // indefinite length.
- container_num_remaining : array[1024] base.u64,
+ // container_num_remaining[i] is the number of elements remaining in the
+ // open containers, for i ranging in 0 .. depth. If (i < depth) and
+ // (container_num_remaining[i] == 0) then the i'th open container has
+ // indefinite length.
+ container_num_remaining : array[1024] base.u64,
)
pub func decoder.set_quirk_enabled!(quirk: base.u32, enabled: base.bool) {
@@ -166,19 +166,19 @@
return "#bad input"
}
vminor = (base.TOKEN__VBC__STRING << 21) |
- base.TOKEN__VBD__STRING__CONVERT_0_DST_1_SRC_DROP
+ base.TOKEN__VBD__STRING__CONVERT_0_DST_1_SRC_DROP
if indefinite_string_major_type == 3 {
vminor |= base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
- base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
- base.TOKEN__VBD__STRING__DEFINITELY_ASCII
+ base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
+ base.TOKEN__VBD__STRING__DEFINITELY_ASCII
}
indefinite_string_major_type = 0
args.src.skip_u32_fast!(actual: 1, worst_case: 1)
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: vminor,
- continued: 0,
- length: 1)
+ value_major: 0,
+ value_minor: vminor,
+ continued: 0,
+ length: 1)
break.goto_parsed_a_leaf_value
}
@@ -189,7 +189,7 @@
string_length = c_minor as base.u64
} else {
while.goto_have_string_length true,
- inv args.dst.length() > 1,
+ inv args.dst.length() > 1,
{{
if c_minor == 0x18 {
if args.src.length() >= 1 {
@@ -236,23 +236,23 @@
// -------- BEGIN Major type 0: an unsigned integer.
if c_minor < 0x1A {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__INLINE_INTEGER_UNSIGNED << 21) |
- ((string_length & 0xFFFF) as base.u32),
- continued: 0,
- length: TOKEN_LENGTHS[c_minor] as base.u32)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__INLINE_INTEGER_UNSIGNED << 21) |
+ ((string_length & 0xFFFF) as base.u32),
+ continued: 0,
+ length: TOKEN_LENGTHS[c_minor] as base.u32)
break.goto_parsed_a_leaf_value
} else if c_minor < 0x1C {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__INLINE_INTEGER_UNSIGNED << 21) |
- ((string_length >> base.TOKEN__VALUE_EXTENSION__NUM_BITS) as base.u32),
- continued: 1,
- length: 0)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__INLINE_INTEGER_UNSIGNED << 21) |
+ ((string_length >> base.TOKEN__VALUE_EXTENSION__NUM_BITS) as base.u32),
+ continued: 1,
+ length: 0)
args.dst.write_extended_token_fast!(
- value_extension: string_length & 0x3FFF_FFFF_FFFF,
- continued: 0,
- length: TOKEN_LENGTHS[c_minor] as base.u32)
+ value_extension: string_length & 0x3FFF_FFFF_FFFF,
+ continued: 0,
+ length: TOKEN_LENGTHS[c_minor] as base.u32)
break.goto_parsed_a_leaf_value
}
// -------- END Major type 0: an unsigned integer.
@@ -261,30 +261,30 @@
// -------- END Major type 1: a negative integer.
if c_minor < 0x1A {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__INLINE_INTEGER_SIGNED << 21) |
- (0x1F_FFFF - ((string_length & 0xFFFF) as base.u32)),
- continued: 0,
- length: TOKEN_LENGTHS[c_minor] as base.u32)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__INLINE_INTEGER_SIGNED << 21) |
+ (0x1F_FFFF - ((string_length & 0xFFFF) as base.u32)),
+ continued: 0,
+ length: TOKEN_LENGTHS[c_minor] as base.u32)
break.goto_parsed_a_leaf_value
} else if c_minor < 0x1C {
if string_length < 0x8000_0000_0000_0000 {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__INLINE_INTEGER_SIGNED << 21) |
- (0x1F_FFFF - ((string_length >> base.TOKEN__VALUE_EXTENSION__NUM_BITS) as base.u32)),
- continued: 1,
- length: 0)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__INLINE_INTEGER_SIGNED << 21) |
+ (0x1F_FFFF - ((string_length >> base.TOKEN__VALUE_EXTENSION__NUM_BITS) as base.u32)),
+ continued: 1,
+ length: 0)
args.dst.write_extended_token_fast!(
- value_extension: (0xFFFF_FFFF_FFFF_FFFF - string_length) & 0x3FFF_FFFF_FFFF,
- continued: 0,
- length: TOKEN_LENGTHS[c_minor] as base.u32)
+ value_extension: (0xFFFF_FFFF_FFFF_FFFF - string_length) & 0x3FFF_FFFF_FFFF,
+ continued: 0,
+ length: TOKEN_LENGTHS[c_minor] as base.u32)
} else {
args.dst.write_simple_token_fast!(
- value_major: TOKEN_VALUE_MAJOR,
- value_minor: TOKEN_VALUE_MINOR__MINUS_1_MINUS_X,
- continued: 0,
- length: 9)
+ value_major: TOKEN_VALUE_MAJOR,
+ value_minor: TOKEN_VALUE_MINOR__MINUS_1_MINUS_X,
+ continued: 0,
+ length: 9)
}
break.goto_parsed_a_leaf_value
}
@@ -295,30 +295,30 @@
if c_minor < 0x1C {
if string_length == 0 {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__STRING << 21) |
- base.TOKEN__VBD__STRING__CONVERT_0_DST_1_SRC_DROP,
- continued: 0,
- length: TOKEN_LENGTHS[c_minor] as base.u32)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__STRING << 21) |
+ base.TOKEN__VBD__STRING__CONVERT_0_DST_1_SRC_DROP,
+ continued: 0,
+ length: TOKEN_LENGTHS[c_minor] as base.u32)
break.goto_parsed_a_leaf_value
}
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__STRING << 21) |
- base.TOKEN__VBD__STRING__CONVERT_0_DST_1_SRC_DROP,
- continued: 1,
- length: TOKEN_LENGTHS[c_minor] as base.u32)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__STRING << 21) |
+ base.TOKEN__VBD__STRING__CONVERT_0_DST_1_SRC_DROP,
+ continued: 1,
+ length: TOKEN_LENGTHS[c_minor] as base.u32)
} else if c_minor == 0x1F {
if indefinite_string_major_type <> 0 {
break.goto_fail
}
indefinite_string_major_type = 2
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__STRING << 21) |
- base.TOKEN__VBD__STRING__CONVERT_0_DST_1_SRC_DROP,
- continued: 1,
- length: 1)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__STRING << 21) |
+ base.TOKEN__VBD__STRING__CONVERT_0_DST_1_SRC_DROP,
+ continued: 1,
+ length: 1)
continue.outer
} else {
break.goto_fail
@@ -350,11 +350,11 @@
}
args.src.skip_u32_fast!(actual: token_length, worst_case: token_length)
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__STRING << 21) |
- base.TOKEN__VBD__STRING__CONVERT_1_DST_1_SRC_COPY,
- continued: continued,
- length: token_length)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__STRING << 21) |
+ base.TOKEN__VBD__STRING__CONVERT_1_DST_1_SRC_COPY,
+ continued: continued,
+ length: token_length)
if string_length > 0 {
continue
} else if indefinite_string_major_type > 0 {
@@ -369,39 +369,39 @@
if c_minor < 0x1C {
if string_length == 0 {
args.dst.write_simple_token_fast!(
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__STRING << 21) |
+ base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
+ base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
+ base.TOKEN__VBD__STRING__DEFINITELY_ASCII |
+ base.TOKEN__VBD__STRING__CONVERT_0_DST_1_SRC_DROP,
+ continued: 0,
+ length: TOKEN_LENGTHS[c_minor] as base.u32)
+ break.goto_parsed_a_leaf_value
+ }
+ args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: (base.TOKEN__VBC__STRING << 21) |
base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
base.TOKEN__VBD__STRING__DEFINITELY_ASCII |
base.TOKEN__VBD__STRING__CONVERT_0_DST_1_SRC_DROP,
- continued: 0,
+ continued: 1,
length: TOKEN_LENGTHS[c_minor] as base.u32)
- break.goto_parsed_a_leaf_value
- }
- args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__STRING << 21) |
- base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
- base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
- base.TOKEN__VBD__STRING__DEFINITELY_ASCII |
- base.TOKEN__VBD__STRING__CONVERT_0_DST_1_SRC_DROP,
- continued: 1,
- length: TOKEN_LENGTHS[c_minor] as base.u32)
} else if c_minor == 0x1F {
if indefinite_string_major_type <> 0 {
break.goto_fail
}
indefinite_string_major_type = 3
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__STRING << 21) |
- base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
- base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
- base.TOKEN__VBD__STRING__DEFINITELY_ASCII |
- base.TOKEN__VBD__STRING__CONVERT_0_DST_1_SRC_DROP,
- continued: 1,
- length: 1)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__STRING << 21) |
+ base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
+ base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
+ base.TOKEN__VBD__STRING__DEFINITELY_ASCII |
+ base.TOKEN__VBD__STRING__CONVERT_0_DST_1_SRC_DROP,
+ continued: 1,
+ length: 1)
continue.outer
} else {
break.goto_fail
@@ -433,13 +433,13 @@
}
args.src.skip_u32_fast!(actual: token_length, worst_case: token_length)
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__STRING << 21) |
- base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
- base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
- base.TOKEN__VBD__STRING__CONVERT_1_DST_1_SRC_COPY,
- continued: continued,
- length: token_length)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__STRING << 21) |
+ base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
+ base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
+ base.TOKEN__VBD__STRING__CONVERT_1_DST_1_SRC_COPY,
+ continued: continued,
+ length: token_length)
if string_length > 0 {
continue
} else if indefinite_string_major_type > 0 {
@@ -463,47 +463,47 @@
}
vminor = (base.TOKEN__VBC__STRUCTURE << 21) |
- base.TOKEN__VBD__STRUCTURE__PUSH |
- base.TOKEN__VBD__STRUCTURE__FROM_NONE |
- base.TOKEN__VBD__STRUCTURE__TO_LIST
+ base.TOKEN__VBD__STRUCTURE__PUSH |
+ base.TOKEN__VBD__STRUCTURE__FROM_NONE |
+ base.TOKEN__VBD__STRUCTURE__TO_LIST
vminor_alt = (base.TOKEN__VBC__STRUCTURE << 21) |
- base.TOKEN__VBD__STRUCTURE__POP |
- base.TOKEN__VBD__STRUCTURE__FROM_LIST |
- base.TOKEN__VBD__STRUCTURE__TO_NONE
+ base.TOKEN__VBD__STRUCTURE__POP |
+ base.TOKEN__VBD__STRUCTURE__FROM_LIST |
+ base.TOKEN__VBD__STRUCTURE__TO_NONE
if depth > 0 {
stack_byte = (depth - 1) / 16
stack_bit = ((depth - 1) & 15) * 2
if 0 == (this.stack[stack_byte] & ((1 as base.u32) << stack_bit)) {
vminor = (base.TOKEN__VBC__STRUCTURE << 21) |
- base.TOKEN__VBD__STRUCTURE__PUSH |
- base.TOKEN__VBD__STRUCTURE__FROM_LIST |
- base.TOKEN__VBD__STRUCTURE__TO_LIST
+ base.TOKEN__VBD__STRUCTURE__PUSH |
+ base.TOKEN__VBD__STRUCTURE__FROM_LIST |
+ base.TOKEN__VBD__STRUCTURE__TO_LIST
vminor_alt = (base.TOKEN__VBC__STRUCTURE << 21) |
- base.TOKEN__VBD__STRUCTURE__POP |
- base.TOKEN__VBD__STRUCTURE__FROM_LIST |
- base.TOKEN__VBD__STRUCTURE__TO_LIST
+ base.TOKEN__VBD__STRUCTURE__POP |
+ base.TOKEN__VBD__STRUCTURE__FROM_LIST |
+ base.TOKEN__VBD__STRUCTURE__TO_LIST
} else {
vminor = (base.TOKEN__VBC__STRUCTURE << 21) |
- base.TOKEN__VBD__STRUCTURE__PUSH |
- base.TOKEN__VBD__STRUCTURE__FROM_DICT |
- base.TOKEN__VBD__STRUCTURE__TO_LIST
+ base.TOKEN__VBD__STRUCTURE__PUSH |
+ base.TOKEN__VBD__STRUCTURE__FROM_DICT |
+ base.TOKEN__VBD__STRUCTURE__TO_LIST
vminor_alt = (base.TOKEN__VBC__STRUCTURE << 21) |
- base.TOKEN__VBD__STRUCTURE__POP |
- base.TOKEN__VBD__STRUCTURE__FROM_LIST |
- base.TOKEN__VBD__STRUCTURE__TO_DICT
+ base.TOKEN__VBD__STRUCTURE__POP |
+ base.TOKEN__VBD__STRUCTURE__FROM_LIST |
+ base.TOKEN__VBD__STRUCTURE__TO_DICT
}
}
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: vminor,
- continued: 0,
- length: TOKEN_LENGTHS[c_minor] as base.u32)
+ value_major: 0,
+ value_minor: vminor,
+ continued: 0,
+ length: TOKEN_LENGTHS[c_minor] as base.u32)
if c_minor == 0x00 {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: vminor_alt,
- continued: 0,
- length: 0)
+ value_major: 0,
+ value_minor: vminor_alt,
+ continued: 0,
+ length: 0)
break.goto_parsed_a_leaf_value
}
@@ -530,47 +530,47 @@
}
vminor = (base.TOKEN__VBC__STRUCTURE << 21) |
- base.TOKEN__VBD__STRUCTURE__PUSH |
- base.TOKEN__VBD__STRUCTURE__FROM_NONE |
- base.TOKEN__VBD__STRUCTURE__TO_DICT
+ base.TOKEN__VBD__STRUCTURE__PUSH |
+ base.TOKEN__VBD__STRUCTURE__FROM_NONE |
+ base.TOKEN__VBD__STRUCTURE__TO_DICT
vminor_alt = (base.TOKEN__VBC__STRUCTURE << 21) |
- base.TOKEN__VBD__STRUCTURE__POP |
- base.TOKEN__VBD__STRUCTURE__FROM_DICT |
- base.TOKEN__VBD__STRUCTURE__TO_NONE
+ base.TOKEN__VBD__STRUCTURE__POP |
+ base.TOKEN__VBD__STRUCTURE__FROM_DICT |
+ base.TOKEN__VBD__STRUCTURE__TO_NONE
if depth > 0 {
stack_byte = (depth - 1) / 16
stack_bit = ((depth - 1) & 15) * 2
if 0 == (this.stack[stack_byte] & ((1 as base.u32) << stack_bit)) {
vminor = (base.TOKEN__VBC__STRUCTURE << 21) |
- base.TOKEN__VBD__STRUCTURE__PUSH |
- base.TOKEN__VBD__STRUCTURE__FROM_LIST |
- base.TOKEN__VBD__STRUCTURE__TO_DICT
+ base.TOKEN__VBD__STRUCTURE__PUSH |
+ base.TOKEN__VBD__STRUCTURE__FROM_LIST |
+ base.TOKEN__VBD__STRUCTURE__TO_DICT
vminor_alt = (base.TOKEN__VBC__STRUCTURE << 21) |
- base.TOKEN__VBD__STRUCTURE__POP |
- base.TOKEN__VBD__STRUCTURE__FROM_DICT |
- base.TOKEN__VBD__STRUCTURE__TO_LIST
+ base.TOKEN__VBD__STRUCTURE__POP |
+ base.TOKEN__VBD__STRUCTURE__FROM_DICT |
+ base.TOKEN__VBD__STRUCTURE__TO_LIST
} else {
vminor = (base.TOKEN__VBC__STRUCTURE << 21) |
- base.TOKEN__VBD__STRUCTURE__PUSH |
- base.TOKEN__VBD__STRUCTURE__FROM_DICT |
- base.TOKEN__VBD__STRUCTURE__TO_DICT
+ base.TOKEN__VBD__STRUCTURE__PUSH |
+ base.TOKEN__VBD__STRUCTURE__FROM_DICT |
+ base.TOKEN__VBD__STRUCTURE__TO_DICT
vminor_alt = (base.TOKEN__VBC__STRUCTURE << 21) |
- base.TOKEN__VBD__STRUCTURE__POP |
- base.TOKEN__VBD__STRUCTURE__FROM_DICT |
- base.TOKEN__VBD__STRUCTURE__TO_DICT
+ base.TOKEN__VBD__STRUCTURE__POP |
+ base.TOKEN__VBD__STRUCTURE__FROM_DICT |
+ base.TOKEN__VBD__STRUCTURE__TO_DICT
}
}
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: vminor,
- continued: 0,
- length: TOKEN_LENGTHS[c_minor] as base.u32)
+ value_major: 0,
+ value_minor: vminor,
+ continued: 0,
+ length: TOKEN_LENGTHS[c_minor] as base.u32)
if c_minor == 0x00 {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: vminor_alt,
- continued: 0,
- length: 0)
+ value_major: 0,
+ value_minor: vminor_alt,
+ continued: 0,
+ length: 0)
break.goto_parsed_a_leaf_value
}
@@ -591,22 +591,22 @@
// Write one token (18 bits) or two tokens (18 + 46 bits).
if string_length < 0x4_0000 {
args.dst.write_simple_token_fast!(
- value_major: TOKEN_VALUE_MAJOR,
- value_minor: TOKEN_VALUE_MINOR__TAG |
- (string_length as base.u32),
- continued: 0,
- length: TOKEN_LENGTHS[c_minor] as base.u32)
+ value_major: TOKEN_VALUE_MAJOR,
+ value_minor: TOKEN_VALUE_MINOR__TAG |
+ (string_length as base.u32),
+ continued: 0,
+ length: TOKEN_LENGTHS[c_minor] as base.u32)
} else {
args.dst.write_simple_token_fast!(
- value_major: TOKEN_VALUE_MAJOR,
- value_minor: TOKEN_VALUE_MINOR__TAG |
- ((string_length >> base.TOKEN__VALUE_EXTENSION__NUM_BITS) as base.u32),
- continued: 1,
- length: 0)
+ value_major: TOKEN_VALUE_MAJOR,
+ value_minor: TOKEN_VALUE_MINOR__TAG |
+ ((string_length >> base.TOKEN__VALUE_EXTENSION__NUM_BITS) as base.u32),
+ continued: 1,
+ length: 0)
args.dst.write_extended_token_fast!(
- value_extension: string_length & 0x3FFF_FFFF_FFFF,
- continued: 0,
- length: TOKEN_LENGTHS[c_minor] as base.u32)
+ value_extension: string_length & 0x3FFF_FFFF_FFFF,
+ continued: 0,
+ length: TOKEN_LENGTHS[c_minor] as base.u32)
}
tagged = true
continue.outer
@@ -616,19 +616,19 @@
// -------- BEGIN Major type 7: miscellaneous.
if c_minor < 0x14 {
args.dst.write_simple_token_fast!(
- value_major: TOKEN_VALUE_MAJOR,
- value_minor: TOKEN_VALUE_MINOR__SIMPLE_VALUE |
- ((string_length & 0xFF) as base.u32),
- continued: 0,
- length: 1)
+ value_major: TOKEN_VALUE_MAJOR,
+ value_minor: TOKEN_VALUE_MINOR__SIMPLE_VALUE |
+ ((string_length & 0xFF) as base.u32),
+ continued: 0,
+ length: 1)
break.goto_parsed_a_leaf_value
} else if c_minor < 0x18 {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: LITERALS[c_minor & 3],
- continued: 0,
- length: 1)
+ value_major: 0,
+ value_minor: LITERALS[c_minor & 3],
+ continued: 0,
+ length: 1)
break.goto_parsed_a_leaf_value
} else if c_minor == 0x18 {
@@ -640,22 +640,22 @@
break.goto_fail
}
args.dst.write_simple_token_fast!(
- value_major: TOKEN_VALUE_MAJOR,
- value_minor: TOKEN_VALUE_MINOR__SIMPLE_VALUE |
- ((string_length & 0xFF) as base.u32),
- continued: 0,
- length: 2)
+ value_major: TOKEN_VALUE_MAJOR,
+ value_minor: TOKEN_VALUE_MINOR__SIMPLE_VALUE |
+ ((string_length & 0xFF) as base.u32),
+ continued: 0,
+ length: 2)
break.goto_parsed_a_leaf_value
} else if c_minor < 0x1C {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__NUMBER << 21) |
- base.TOKEN__VBD__NUMBER__CONTENT_FLOATING_POINT |
- base.TOKEN__VBD__NUMBER__FORMAT_BINARY_BIG_ENDIAN |
- base.TOKEN__VBD__NUMBER__FORMAT_IGNORE_FIRST_BYTE,
- continued: 0,
- length: TOKEN_LENGTHS[c_minor] as base.u32)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__NUMBER << 21) |
+ base.TOKEN__VBD__NUMBER__CONTENT_FLOATING_POINT |
+ base.TOKEN__VBD__NUMBER__FORMAT_BINARY_BIG_ENDIAN |
+ base.TOKEN__VBD__NUMBER__FORMAT_IGNORE_FIRST_BYTE,
+ continued: 0,
+ length: TOKEN_LENGTHS[c_minor] as base.u32)
break.goto_parsed_a_leaf_value
} else if c_minor == 0x1F {
@@ -681,12 +681,12 @@
// Fill in FROM_ETC.
if stack_val <> 3 {
vminor_alt = (base.TOKEN__VBC__STRUCTURE << 21) |
- base.TOKEN__VBD__STRUCTURE__POP |
- base.TOKEN__VBD__STRUCTURE__FROM_LIST
+ base.TOKEN__VBD__STRUCTURE__POP |
+ base.TOKEN__VBD__STRUCTURE__FROM_LIST
} else {
vminor_alt = (base.TOKEN__VBC__STRUCTURE << 21) |
- base.TOKEN__VBD__STRUCTURE__POP |
- base.TOKEN__VBD__STRUCTURE__FROM_DICT
+ base.TOKEN__VBD__STRUCTURE__POP |
+ base.TOKEN__VBD__STRUCTURE__FROM_DICT
}
// Fill in TO_ETC.
@@ -703,10 +703,10 @@
}
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: vminor_alt,
- continued: 0,
- length: 1)
+ value_major: 0,
+ value_minor: vminor_alt,
+ continued: 0,
+ length: 1)
break.goto_parsed_a_leaf_value
}
// -------- END Major type 7: miscellaneous.
@@ -747,8 +747,8 @@
}
while args.dst.length() <= 0,
- inv depth > 0,
- post args.dst.length() > 0,
+ inv depth > 0,
+ post args.dst.length() > 0,
{
yield? base."$short write"
continue
@@ -760,12 +760,12 @@
stack_bit = (depth & 15) * 2
if 0 == (this.stack[stack_byte] & ((1 as base.u32) << stack_bit)) {
vminor_alt = (base.TOKEN__VBC__STRUCTURE << 21) |
- base.TOKEN__VBD__STRUCTURE__POP |
- base.TOKEN__VBD__STRUCTURE__FROM_LIST
+ base.TOKEN__VBD__STRUCTURE__POP |
+ base.TOKEN__VBD__STRUCTURE__FROM_LIST
} else {
vminor_alt = (base.TOKEN__VBC__STRUCTURE << 21) |
- base.TOKEN__VBD__STRUCTURE__POP |
- base.TOKEN__VBD__STRUCTURE__FROM_DICT
+ base.TOKEN__VBD__STRUCTURE__POP |
+ base.TOKEN__VBD__STRUCTURE__FROM_DICT
}
// Fill in TO_ETC.
@@ -782,10 +782,10 @@
}
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: vminor_alt,
- continued: 0,
- length: 0)
+ value_major: 0,
+ value_minor: vminor_alt,
+ continued: 0,
+ length: 0)
} endwhile
// We've parsed the top-level value and we're therefore done overall.
diff --git a/std/crc32/common_crc32.wuffs b/std/crc32/common_crc32.wuffs
index c7a94e9..f77cf29 100644
--- a/std/crc32/common_crc32.wuffs
+++ b/std/crc32/common_crc32.wuffs
@@ -14,7 +14,7 @@
// TODO: drop the '?' but still generate wuffs_crc32__ieee_hasher__initialize?
pub struct ieee_hasher? implements base.hasher_u32(
- state : base.u32,
+ state : base.u32,
)
pub func ieee_hasher.set_quirk_enabled!(quirk: base.u32, enabled: base.bool) {
@@ -26,16 +26,16 @@
pub func ieee_hasher.update_u32!(x: slice base.u8) base.u32 {
if this.state == 0 {
choose up = [
- up_arm_crc32,
- up_x86_avx2,
- up_x86_sse42]
+ up_arm_crc32,
+ up_x86_avx2,
+ up_x86_sse42]
}
this.up!(x: args.x)
return this.state
}
pri func ieee_hasher.up!(x: slice base.u8),
- choosy,
+ choosy,
{
var s : base.u32
var p : slice base.u8
@@ -46,25 +46,25 @@
// the slicing-by-M algorithm. We use an M of 16.
iterate (p = args.x)(length: 16, advance: 16, unroll: 2) {
s ^= ((p[0x00] as base.u32) << 0) |
- ((p[0x01] as base.u32) << 8) |
- ((p[0x02] as base.u32) << 16) |
- ((p[0x03] as base.u32) << 24)
+ ((p[0x01] as base.u32) << 8) |
+ ((p[0x02] as base.u32) << 16) |
+ ((p[0x03] as base.u32) << 24)
s = IEEE_TABLE[0x00][p[0x0F]] ^
- IEEE_TABLE[0x01][p[0x0E]] ^
- IEEE_TABLE[0x02][p[0x0D]] ^
- IEEE_TABLE[0x03][p[0x0C]] ^
- IEEE_TABLE[0x04][p[0x0B]] ^
- IEEE_TABLE[0x05][p[0x0A]] ^
- IEEE_TABLE[0x06][p[0x09]] ^
- IEEE_TABLE[0x07][p[0x08]] ^
- IEEE_TABLE[0x08][p[0x07]] ^
- IEEE_TABLE[0x09][p[0x06]] ^
- IEEE_TABLE[0x0A][p[0x05]] ^
- IEEE_TABLE[0x0B][p[0x04]] ^
- IEEE_TABLE[0x0C][0xFF & (s >> 24)] ^
- IEEE_TABLE[0x0D][0xFF & (s >> 16)] ^
- IEEE_TABLE[0x0E][0xFF & (s >> 8)] ^
- IEEE_TABLE[0x0F][0xFF & (s >> 0)]
+ IEEE_TABLE[0x01][p[0x0E]] ^
+ IEEE_TABLE[0x02][p[0x0D]] ^
+ IEEE_TABLE[0x03][p[0x0C]] ^
+ IEEE_TABLE[0x04][p[0x0B]] ^
+ IEEE_TABLE[0x05][p[0x0A]] ^
+ IEEE_TABLE[0x06][p[0x09]] ^
+ IEEE_TABLE[0x07][p[0x08]] ^
+ IEEE_TABLE[0x08][p[0x07]] ^
+ IEEE_TABLE[0x09][p[0x06]] ^
+ IEEE_TABLE[0x0A][p[0x05]] ^
+ IEEE_TABLE[0x0B][p[0x04]] ^
+ IEEE_TABLE[0x0C][0xFF & (s >> 24)] ^
+ IEEE_TABLE[0x0D][0xFF & (s >> 16)] ^
+ IEEE_TABLE[0x0E][0xFF & (s >> 8)] ^
+ IEEE_TABLE[0x0F][0xFF & (s >> 0)]
} else (length: 1, advance: 1, unroll: 1) {
s = IEEE_TABLE[0][((s & 0xFF) as base.u8) ^ p[0]] ^ (s >> 8)
}
@@ -75,531 +75,531 @@
// The table below was created by script/print-crc32-magic-numbers.go.
pri const IEEE_TABLE : array[16] array[256] base.u32 = [[
- 0x0000_0000, 0x7707_3096, 0xEE0E_612C, 0x9909_51BA, 0x076D_C419, 0x706A_F48F, 0xE963_A535, 0x9E64_95A3,
- 0x0EDB_8832, 0x79DC_B8A4, 0xE0D5_E91E, 0x97D2_D988, 0x09B6_4C2B, 0x7EB1_7CBD, 0xE7B8_2D07, 0x90BF_1D91,
- 0x1DB7_1064, 0x6AB0_20F2, 0xF3B9_7148, 0x84BE_41DE, 0x1ADA_D47D, 0x6DDD_E4EB, 0xF4D4_B551, 0x83D3_85C7,
- 0x136C_9856, 0x646B_A8C0, 0xFD62_F97A, 0x8A65_C9EC, 0x1401_5C4F, 0x6306_6CD9, 0xFA0F_3D63, 0x8D08_0DF5,
- 0x3B6E_20C8, 0x4C69_105E, 0xD560_41E4, 0xA267_7172, 0x3C03_E4D1, 0x4B04_D447, 0xD20D_85FD, 0xA50A_B56B,
- 0x35B5_A8FA, 0x42B2_986C, 0xDBBB_C9D6, 0xACBC_F940, 0x32D8_6CE3, 0x45DF_5C75, 0xDCD6_0DCF, 0xABD1_3D59,
- 0x26D9_30AC, 0x51DE_003A, 0xC8D7_5180, 0xBFD0_6116, 0x21B4_F4B5, 0x56B3_C423, 0xCFBA_9599, 0xB8BD_A50F,
- 0x2802_B89E, 0x5F05_8808, 0xC60C_D9B2, 0xB10B_E924, 0x2F6F_7C87, 0x5868_4C11, 0xC161_1DAB, 0xB666_2D3D,
- 0x76DC_4190, 0x01DB_7106, 0x98D2_20BC, 0xEFD5_102A, 0x71B1_8589, 0x06B6_B51F, 0x9FBF_E4A5, 0xE8B8_D433,
- 0x7807_C9A2, 0x0F00_F934, 0x9609_A88E, 0xE10E_9818, 0x7F6A_0DBB, 0x086D_3D2D, 0x9164_6C97, 0xE663_5C01,
- 0x6B6B_51F4, 0x1C6C_6162, 0x8565_30D8, 0xF262_004E, 0x6C06_95ED, 0x1B01_A57B, 0x8208_F4C1, 0xF50F_C457,
- 0x65B0_D9C6, 0x12B7_E950, 0x8BBE_B8EA, 0xFCB9_887C, 0x62DD_1DDF, 0x15DA_2D49, 0x8CD3_7CF3, 0xFBD4_4C65,
- 0x4DB2_6158, 0x3AB5_51CE, 0xA3BC_0074, 0xD4BB_30E2, 0x4ADF_A541, 0x3DD8_95D7, 0xA4D1_C46D, 0xD3D6_F4FB,
- 0x4369_E96A, 0x346E_D9FC, 0xAD67_8846, 0xDA60_B8D0, 0x4404_2D73, 0x3303_1DE5, 0xAA0A_4C5F, 0xDD0D_7CC9,
- 0x5005_713C, 0x2702_41AA, 0xBE0B_1010, 0xC90C_2086, 0x5768_B525, 0x206F_85B3, 0xB966_D409, 0xCE61_E49F,
- 0x5EDE_F90E, 0x29D9_C998, 0xB0D0_9822, 0xC7D7_A8B4, 0x59B3_3D17, 0x2EB4_0D81, 0xB7BD_5C3B, 0xC0BA_6CAD,
- 0xEDB8_8320, 0x9ABF_B3B6, 0x03B6_E20C, 0x74B1_D29A, 0xEAD5_4739, 0x9DD2_77AF, 0x04DB_2615, 0x73DC_1683,
- 0xE363_0B12, 0x9464_3B84, 0x0D6D_6A3E, 0x7A6A_5AA8, 0xE40E_CF0B, 0x9309_FF9D, 0x0A00_AE27, 0x7D07_9EB1,
- 0xF00F_9344, 0x8708_A3D2, 0x1E01_F268, 0x6906_C2FE, 0xF762_575D, 0x8065_67CB, 0x196C_3671, 0x6E6B_06E7,
- 0xFED4_1B76, 0x89D3_2BE0, 0x10DA_7A5A, 0x67DD_4ACC, 0xF9B9_DF6F, 0x8EBE_EFF9, 0x17B7_BE43, 0x60B0_8ED5,
- 0xD6D6_A3E8, 0xA1D1_937E, 0x38D8_C2C4, 0x4FDF_F252, 0xD1BB_67F1, 0xA6BC_5767, 0x3FB5_06DD, 0x48B2_364B,
- 0xD80D_2BDA, 0xAF0A_1B4C, 0x3603_4AF6, 0x4104_7A60, 0xDF60_EFC3, 0xA867_DF55, 0x316E_8EEF, 0x4669_BE79,
- 0xCB61_B38C, 0xBC66_831A, 0x256F_D2A0, 0x5268_E236, 0xCC0C_7795, 0xBB0B_4703, 0x2202_16B9, 0x5505_262F,
- 0xC5BA_3BBE, 0xB2BD_0B28, 0x2BB4_5A92, 0x5CB3_6A04, 0xC2D7_FFA7, 0xB5D0_CF31, 0x2CD9_9E8B, 0x5BDE_AE1D,
- 0x9B64_C2B0, 0xEC63_F226, 0x756A_A39C, 0x026D_930A, 0x9C09_06A9, 0xEB0E_363F, 0x7207_6785, 0x0500_5713,
- 0x95BF_4A82, 0xE2B8_7A14, 0x7BB1_2BAE, 0x0CB6_1B38, 0x92D2_8E9B, 0xE5D5_BE0D, 0x7CDC_EFB7, 0x0BDB_DF21,
- 0x86D3_D2D4, 0xF1D4_E242, 0x68DD_B3F8, 0x1FDA_836E, 0x81BE_16CD, 0xF6B9_265B, 0x6FB0_77E1, 0x18B7_4777,
- 0x8808_5AE6, 0xFF0F_6A70, 0x6606_3BCA, 0x1101_0B5C, 0x8F65_9EFF, 0xF862_AE69, 0x616B_FFD3, 0x166C_CF45,
- 0xA00A_E278, 0xD70D_D2EE, 0x4E04_8354, 0x3903_B3C2, 0xA767_2661, 0xD060_16F7, 0x4969_474D, 0x3E6E_77DB,
- 0xAED1_6A4A, 0xD9D6_5ADC, 0x40DF_0B66, 0x37D8_3BF0, 0xA9BC_AE53, 0xDEBB_9EC5, 0x47B2_CF7F, 0x30B5_FFE9,
- 0xBDBD_F21C, 0xCABA_C28A, 0x53B3_9330, 0x24B4_A3A6, 0xBAD0_3605, 0xCDD7_0693, 0x54DE_5729, 0x23D9_67BF,
- 0xB366_7A2E, 0xC461_4AB8, 0x5D68_1B02, 0x2A6F_2B94, 0xB40B_BE37, 0xC30C_8EA1, 0x5A05_DF1B, 0x2D02_EF8D,
+ 0x0000_0000, 0x7707_3096, 0xEE0E_612C, 0x9909_51BA, 0x076D_C419, 0x706A_F48F, 0xE963_A535, 0x9E64_95A3,
+ 0x0EDB_8832, 0x79DC_B8A4, 0xE0D5_E91E, 0x97D2_D988, 0x09B6_4C2B, 0x7EB1_7CBD, 0xE7B8_2D07, 0x90BF_1D91,
+ 0x1DB7_1064, 0x6AB0_20F2, 0xF3B9_7148, 0x84BE_41DE, 0x1ADA_D47D, 0x6DDD_E4EB, 0xF4D4_B551, 0x83D3_85C7,
+ 0x136C_9856, 0x646B_A8C0, 0xFD62_F97A, 0x8A65_C9EC, 0x1401_5C4F, 0x6306_6CD9, 0xFA0F_3D63, 0x8D08_0DF5,
+ 0x3B6E_20C8, 0x4C69_105E, 0xD560_41E4, 0xA267_7172, 0x3C03_E4D1, 0x4B04_D447, 0xD20D_85FD, 0xA50A_B56B,
+ 0x35B5_A8FA, 0x42B2_986C, 0xDBBB_C9D6, 0xACBC_F940, 0x32D8_6CE3, 0x45DF_5C75, 0xDCD6_0DCF, 0xABD1_3D59,
+ 0x26D9_30AC, 0x51DE_003A, 0xC8D7_5180, 0xBFD0_6116, 0x21B4_F4B5, 0x56B3_C423, 0xCFBA_9599, 0xB8BD_A50F,
+ 0x2802_B89E, 0x5F05_8808, 0xC60C_D9B2, 0xB10B_E924, 0x2F6F_7C87, 0x5868_4C11, 0xC161_1DAB, 0xB666_2D3D,
+ 0x76DC_4190, 0x01DB_7106, 0x98D2_20BC, 0xEFD5_102A, 0x71B1_8589, 0x06B6_B51F, 0x9FBF_E4A5, 0xE8B8_D433,
+ 0x7807_C9A2, 0x0F00_F934, 0x9609_A88E, 0xE10E_9818, 0x7F6A_0DBB, 0x086D_3D2D, 0x9164_6C97, 0xE663_5C01,
+ 0x6B6B_51F4, 0x1C6C_6162, 0x8565_30D8, 0xF262_004E, 0x6C06_95ED, 0x1B01_A57B, 0x8208_F4C1, 0xF50F_C457,
+ 0x65B0_D9C6, 0x12B7_E950, 0x8BBE_B8EA, 0xFCB9_887C, 0x62DD_1DDF, 0x15DA_2D49, 0x8CD3_7CF3, 0xFBD4_4C65,
+ 0x4DB2_6158, 0x3AB5_51CE, 0xA3BC_0074, 0xD4BB_30E2, 0x4ADF_A541, 0x3DD8_95D7, 0xA4D1_C46D, 0xD3D6_F4FB,
+ 0x4369_E96A, 0x346E_D9FC, 0xAD67_8846, 0xDA60_B8D0, 0x4404_2D73, 0x3303_1DE5, 0xAA0A_4C5F, 0xDD0D_7CC9,
+ 0x5005_713C, 0x2702_41AA, 0xBE0B_1010, 0xC90C_2086, 0x5768_B525, 0x206F_85B3, 0xB966_D409, 0xCE61_E49F,
+ 0x5EDE_F90E, 0x29D9_C998, 0xB0D0_9822, 0xC7D7_A8B4, 0x59B3_3D17, 0x2EB4_0D81, 0xB7BD_5C3B, 0xC0BA_6CAD,
+ 0xEDB8_8320, 0x9ABF_B3B6, 0x03B6_E20C, 0x74B1_D29A, 0xEAD5_4739, 0x9DD2_77AF, 0x04DB_2615, 0x73DC_1683,
+ 0xE363_0B12, 0x9464_3B84, 0x0D6D_6A3E, 0x7A6A_5AA8, 0xE40E_CF0B, 0x9309_FF9D, 0x0A00_AE27, 0x7D07_9EB1,
+ 0xF00F_9344, 0x8708_A3D2, 0x1E01_F268, 0x6906_C2FE, 0xF762_575D, 0x8065_67CB, 0x196C_3671, 0x6E6B_06E7,
+ 0xFED4_1B76, 0x89D3_2BE0, 0x10DA_7A5A, 0x67DD_4ACC, 0xF9B9_DF6F, 0x8EBE_EFF9, 0x17B7_BE43, 0x60B0_8ED5,
+ 0xD6D6_A3E8, 0xA1D1_937E, 0x38D8_C2C4, 0x4FDF_F252, 0xD1BB_67F1, 0xA6BC_5767, 0x3FB5_06DD, 0x48B2_364B,
+ 0xD80D_2BDA, 0xAF0A_1B4C, 0x3603_4AF6, 0x4104_7A60, 0xDF60_EFC3, 0xA867_DF55, 0x316E_8EEF, 0x4669_BE79,
+ 0xCB61_B38C, 0xBC66_831A, 0x256F_D2A0, 0x5268_E236, 0xCC0C_7795, 0xBB0B_4703, 0x2202_16B9, 0x5505_262F,
+ 0xC5BA_3BBE, 0xB2BD_0B28, 0x2BB4_5A92, 0x5CB3_6A04, 0xC2D7_FFA7, 0xB5D0_CF31, 0x2CD9_9E8B, 0x5BDE_AE1D,
+ 0x9B64_C2B0, 0xEC63_F226, 0x756A_A39C, 0x026D_930A, 0x9C09_06A9, 0xEB0E_363F, 0x7207_6785, 0x0500_5713,
+ 0x95BF_4A82, 0xE2B8_7A14, 0x7BB1_2BAE, 0x0CB6_1B38, 0x92D2_8E9B, 0xE5D5_BE0D, 0x7CDC_EFB7, 0x0BDB_DF21,
+ 0x86D3_D2D4, 0xF1D4_E242, 0x68DD_B3F8, 0x1FDA_836E, 0x81BE_16CD, 0xF6B9_265B, 0x6FB0_77E1, 0x18B7_4777,
+ 0x8808_5AE6, 0xFF0F_6A70, 0x6606_3BCA, 0x1101_0B5C, 0x8F65_9EFF, 0xF862_AE69, 0x616B_FFD3, 0x166C_CF45,
+ 0xA00A_E278, 0xD70D_D2EE, 0x4E04_8354, 0x3903_B3C2, 0xA767_2661, 0xD060_16F7, 0x4969_474D, 0x3E6E_77DB,
+ 0xAED1_6A4A, 0xD9D6_5ADC, 0x40DF_0B66, 0x37D8_3BF0, 0xA9BC_AE53, 0xDEBB_9EC5, 0x47B2_CF7F, 0x30B5_FFE9,
+ 0xBDBD_F21C, 0xCABA_C28A, 0x53B3_9330, 0x24B4_A3A6, 0xBAD0_3605, 0xCDD7_0693, 0x54DE_5729, 0x23D9_67BF,
+ 0xB366_7A2E, 0xC461_4AB8, 0x5D68_1B02, 0x2A6F_2B94, 0xB40B_BE37, 0xC30C_8EA1, 0x5A05_DF1B, 0x2D02_EF8D,
],[
- 0x0000_0000, 0x191B_3141, 0x3236_6282, 0x2B2D_53C3, 0x646C_C504, 0x7D77_F445, 0x565A_A786, 0x4F41_96C7,
- 0xC8D9_8A08, 0xD1C2_BB49, 0xFAEF_E88A, 0xE3F4_D9CB, 0xACB5_4F0C, 0xB5AE_7E4D, 0x9E83_2D8E, 0x8798_1CCF,
- 0x4AC2_1251, 0x53D9_2310, 0x78F4_70D3, 0x61EF_4192, 0x2EAE_D755, 0x37B5_E614, 0x1C98_B5D7, 0x0583_8496,
- 0x821B_9859, 0x9B00_A918, 0xB02D_FADB, 0xA936_CB9A, 0xE677_5D5D, 0xFF6C_6C1C, 0xD441_3FDF, 0xCD5A_0E9E,
- 0x9584_24A2, 0x8C9F_15E3, 0xA7B2_4620, 0xBEA9_7761, 0xF1E8_E1A6, 0xE8F3_D0E7, 0xC3DE_8324, 0xDAC5_B265,
- 0x5D5D_AEAA, 0x4446_9FEB, 0x6F6B_CC28, 0x7670_FD69, 0x3931_6BAE, 0x202A_5AEF, 0x0B07_092C, 0x121C_386D,
- 0xDF46_36F3, 0xC65D_07B2, 0xED70_5471, 0xF46B_6530, 0xBB2A_F3F7, 0xA231_C2B6, 0x891C_9175, 0x9007_A034,
- 0x179F_BCFB, 0x0E84_8DBA, 0x25A9_DE79, 0x3CB2_EF38, 0x73F3_79FF, 0x6AE8_48BE, 0x41C5_1B7D, 0x58DE_2A3C,
- 0xF079_4F05, 0xE962_7E44, 0xC24F_2D87, 0xDB54_1CC6, 0x9415_8A01, 0x8D0E_BB40, 0xA623_E883, 0xBF38_D9C2,
- 0x38A0_C50D, 0x21BB_F44C, 0x0A96_A78F, 0x138D_96CE, 0x5CCC_0009, 0x45D7_3148, 0x6EFA_628B, 0x77E1_53CA,
- 0xBABB_5D54, 0xA3A0_6C15, 0x888D_3FD6, 0x9196_0E97, 0xDED7_9850, 0xC7CC_A911, 0xECE1_FAD2, 0xF5FA_CB93,
- 0x7262_D75C, 0x6B79_E61D, 0x4054_B5DE, 0x594F_849F, 0x160E_1258, 0x0F15_2319, 0x2438_70DA, 0x3D23_419B,
- 0x65FD_6BA7, 0x7CE6_5AE6, 0x57CB_0925, 0x4ED0_3864, 0x0191_AEA3, 0x188A_9FE2, 0x33A7_CC21, 0x2ABC_FD60,
- 0xAD24_E1AF, 0xB43F_D0EE, 0x9F12_832D, 0x8609_B26C, 0xC948_24AB, 0xD053_15EA, 0xFB7E_4629, 0xE265_7768,
- 0x2F3F_79F6, 0x3624_48B7, 0x1D09_1B74, 0x0412_2A35, 0x4B53_BCF2, 0x5248_8DB3, 0x7965_DE70, 0x607E_EF31,
- 0xE7E6_F3FE, 0xFEFD_C2BF, 0xD5D0_917C, 0xCCCB_A03D, 0x838A_36FA, 0x9A91_07BB, 0xB1BC_5478, 0xA8A7_6539,
- 0x3B83_984B, 0x2298_A90A, 0x09B5_FAC9, 0x10AE_CB88, 0x5FEF_5D4F, 0x46F4_6C0E, 0x6DD9_3FCD, 0x74C2_0E8C,
- 0xF35A_1243, 0xEA41_2302, 0xC16C_70C1, 0xD877_4180, 0x9736_D747, 0x8E2D_E606, 0xA500_B5C5, 0xBC1B_8484,
- 0x7141_8A1A, 0x685A_BB5B, 0x4377_E898, 0x5A6C_D9D9, 0x152D_4F1E, 0x0C36_7E5F, 0x271B_2D9C, 0x3E00_1CDD,
- 0xB998_0012, 0xA083_3153, 0x8BAE_6290, 0x92B5_53D1, 0xDDF4_C516, 0xC4EF_F457, 0xEFC2_A794, 0xF6D9_96D5,
- 0xAE07_BCE9, 0xB71C_8DA8, 0x9C31_DE6B, 0x852A_EF2A, 0xCA6B_79ED, 0xD370_48AC, 0xF85D_1B6F, 0xE146_2A2E,
- 0x66DE_36E1, 0x7FC5_07A0, 0x54E8_5463, 0x4DF3_6522, 0x02B2_F3E5, 0x1BA9_C2A4, 0x3084_9167, 0x299F_A026,
- 0xE4C5_AEB8, 0xFDDE_9FF9, 0xD6F3_CC3A, 0xCFE8_FD7B, 0x80A9_6BBC, 0x99B2_5AFD, 0xB29F_093E, 0xAB84_387F,
- 0x2C1C_24B0, 0x3507_15F1, 0x1E2A_4632, 0x0731_7773, 0x4870_E1B4, 0x516B_D0F5, 0x7A46_8336, 0x635D_B277,
- 0xCBFA_D74E, 0xD2E1_E60F, 0xF9CC_B5CC, 0xE0D7_848D, 0xAF96_124A, 0xB68D_230B, 0x9DA0_70C8, 0x84BB_4189,
- 0x0323_5D46, 0x1A38_6C07, 0x3115_3FC4, 0x280E_0E85, 0x674F_9842, 0x7E54_A903, 0x5579_FAC0, 0x4C62_CB81,
- 0x8138_C51F, 0x9823_F45E, 0xB30E_A79D, 0xAA15_96DC, 0xE554_001B, 0xFC4F_315A, 0xD762_6299, 0xCE79_53D8,
- 0x49E1_4F17, 0x50FA_7E56, 0x7BD7_2D95, 0x62CC_1CD4, 0x2D8D_8A13, 0x3496_BB52, 0x1FBB_E891, 0x06A0_D9D0,
- 0x5E7E_F3EC, 0x4765_C2AD, 0x6C48_916E, 0x7553_A02F, 0x3A12_36E8, 0x2309_07A9, 0x0824_546A, 0x113F_652B,
- 0x96A7_79E4, 0x8FBC_48A5, 0xA491_1B66, 0xBD8A_2A27, 0xF2CB_BCE0, 0xEBD0_8DA1, 0xC0FD_DE62, 0xD9E6_EF23,
- 0x14BC_E1BD, 0x0DA7_D0FC, 0x268A_833F, 0x3F91_B27E, 0x70D0_24B9, 0x69CB_15F8, 0x42E6_463B, 0x5BFD_777A,
- 0xDC65_6BB5, 0xC57E_5AF4, 0xEE53_0937, 0xF748_3876, 0xB809_AEB1, 0xA112_9FF0, 0x8A3F_CC33, 0x9324_FD72,
+ 0x0000_0000, 0x191B_3141, 0x3236_6282, 0x2B2D_53C3, 0x646C_C504, 0x7D77_F445, 0x565A_A786, 0x4F41_96C7,
+ 0xC8D9_8A08, 0xD1C2_BB49, 0xFAEF_E88A, 0xE3F4_D9CB, 0xACB5_4F0C, 0xB5AE_7E4D, 0x9E83_2D8E, 0x8798_1CCF,
+ 0x4AC2_1251, 0x53D9_2310, 0x78F4_70D3, 0x61EF_4192, 0x2EAE_D755, 0x37B5_E614, 0x1C98_B5D7, 0x0583_8496,
+ 0x821B_9859, 0x9B00_A918, 0xB02D_FADB, 0xA936_CB9A, 0xE677_5D5D, 0xFF6C_6C1C, 0xD441_3FDF, 0xCD5A_0E9E,
+ 0x9584_24A2, 0x8C9F_15E3, 0xA7B2_4620, 0xBEA9_7761, 0xF1E8_E1A6, 0xE8F3_D0E7, 0xC3DE_8324, 0xDAC5_B265,
+ 0x5D5D_AEAA, 0x4446_9FEB, 0x6F6B_CC28, 0x7670_FD69, 0x3931_6BAE, 0x202A_5AEF, 0x0B07_092C, 0x121C_386D,
+ 0xDF46_36F3, 0xC65D_07B2, 0xED70_5471, 0xF46B_6530, 0xBB2A_F3F7, 0xA231_C2B6, 0x891C_9175, 0x9007_A034,
+ 0x179F_BCFB, 0x0E84_8DBA, 0x25A9_DE79, 0x3CB2_EF38, 0x73F3_79FF, 0x6AE8_48BE, 0x41C5_1B7D, 0x58DE_2A3C,
+ 0xF079_4F05, 0xE962_7E44, 0xC24F_2D87, 0xDB54_1CC6, 0x9415_8A01, 0x8D0E_BB40, 0xA623_E883, 0xBF38_D9C2,
+ 0x38A0_C50D, 0x21BB_F44C, 0x0A96_A78F, 0x138D_96CE, 0x5CCC_0009, 0x45D7_3148, 0x6EFA_628B, 0x77E1_53CA,
+ 0xBABB_5D54, 0xA3A0_6C15, 0x888D_3FD6, 0x9196_0E97, 0xDED7_9850, 0xC7CC_A911, 0xECE1_FAD2, 0xF5FA_CB93,
+ 0x7262_D75C, 0x6B79_E61D, 0x4054_B5DE, 0x594F_849F, 0x160E_1258, 0x0F15_2319, 0x2438_70DA, 0x3D23_419B,
+ 0x65FD_6BA7, 0x7CE6_5AE6, 0x57CB_0925, 0x4ED0_3864, 0x0191_AEA3, 0x188A_9FE2, 0x33A7_CC21, 0x2ABC_FD60,
+ 0xAD24_E1AF, 0xB43F_D0EE, 0x9F12_832D, 0x8609_B26C, 0xC948_24AB, 0xD053_15EA, 0xFB7E_4629, 0xE265_7768,
+ 0x2F3F_79F6, 0x3624_48B7, 0x1D09_1B74, 0x0412_2A35, 0x4B53_BCF2, 0x5248_8DB3, 0x7965_DE70, 0x607E_EF31,
+ 0xE7E6_F3FE, 0xFEFD_C2BF, 0xD5D0_917C, 0xCCCB_A03D, 0x838A_36FA, 0x9A91_07BB, 0xB1BC_5478, 0xA8A7_6539,
+ 0x3B83_984B, 0x2298_A90A, 0x09B5_FAC9, 0x10AE_CB88, 0x5FEF_5D4F, 0x46F4_6C0E, 0x6DD9_3FCD, 0x74C2_0E8C,
+ 0xF35A_1243, 0xEA41_2302, 0xC16C_70C1, 0xD877_4180, 0x9736_D747, 0x8E2D_E606, 0xA500_B5C5, 0xBC1B_8484,
+ 0x7141_8A1A, 0x685A_BB5B, 0x4377_E898, 0x5A6C_D9D9, 0x152D_4F1E, 0x0C36_7E5F, 0x271B_2D9C, 0x3E00_1CDD,
+ 0xB998_0012, 0xA083_3153, 0x8BAE_6290, 0x92B5_53D1, 0xDDF4_C516, 0xC4EF_F457, 0xEFC2_A794, 0xF6D9_96D5,
+ 0xAE07_BCE9, 0xB71C_8DA8, 0x9C31_DE6B, 0x852A_EF2A, 0xCA6B_79ED, 0xD370_48AC, 0xF85D_1B6F, 0xE146_2A2E,
+ 0x66DE_36E1, 0x7FC5_07A0, 0x54E8_5463, 0x4DF3_6522, 0x02B2_F3E5, 0x1BA9_C2A4, 0x3084_9167, 0x299F_A026,
+ 0xE4C5_AEB8, 0xFDDE_9FF9, 0xD6F3_CC3A, 0xCFE8_FD7B, 0x80A9_6BBC, 0x99B2_5AFD, 0xB29F_093E, 0xAB84_387F,
+ 0x2C1C_24B0, 0x3507_15F1, 0x1E2A_4632, 0x0731_7773, 0x4870_E1B4, 0x516B_D0F5, 0x7A46_8336, 0x635D_B277,
+ 0xCBFA_D74E, 0xD2E1_E60F, 0xF9CC_B5CC, 0xE0D7_848D, 0xAF96_124A, 0xB68D_230B, 0x9DA0_70C8, 0x84BB_4189,
+ 0x0323_5D46, 0x1A38_6C07, 0x3115_3FC4, 0x280E_0E85, 0x674F_9842, 0x7E54_A903, 0x5579_FAC0, 0x4C62_CB81,
+ 0x8138_C51F, 0x9823_F45E, 0xB30E_A79D, 0xAA15_96DC, 0xE554_001B, 0xFC4F_315A, 0xD762_6299, 0xCE79_53D8,
+ 0x49E1_4F17, 0x50FA_7E56, 0x7BD7_2D95, 0x62CC_1CD4, 0x2D8D_8A13, 0x3496_BB52, 0x1FBB_E891, 0x06A0_D9D0,
+ 0x5E7E_F3EC, 0x4765_C2AD, 0x6C48_916E, 0x7553_A02F, 0x3A12_36E8, 0x2309_07A9, 0x0824_546A, 0x113F_652B,
+ 0x96A7_79E4, 0x8FBC_48A5, 0xA491_1B66, 0xBD8A_2A27, 0xF2CB_BCE0, 0xEBD0_8DA1, 0xC0FD_DE62, 0xD9E6_EF23,
+ 0x14BC_E1BD, 0x0DA7_D0FC, 0x268A_833F, 0x3F91_B27E, 0x70D0_24B9, 0x69CB_15F8, 0x42E6_463B, 0x5BFD_777A,
+ 0xDC65_6BB5, 0xC57E_5AF4, 0xEE53_0937, 0xF748_3876, 0xB809_AEB1, 0xA112_9FF0, 0x8A3F_CC33, 0x9324_FD72,
],[
- 0x0000_0000, 0x01C2_6A37, 0x0384_D46E, 0x0246_BE59, 0x0709_A8DC, 0x06CB_C2EB, 0x048D_7CB2, 0x054F_1685,
- 0x0E13_51B8, 0x0FD1_3B8F, 0x0D97_85D6, 0x0C55_EFE1, 0x091A_F964, 0x08D8_9353, 0x0A9E_2D0A, 0x0B5C_473D,
- 0x1C26_A370, 0x1DE4_C947, 0x1FA2_771E, 0x1E60_1D29, 0x1B2F_0BAC, 0x1AED_619B, 0x18AB_DFC2, 0x1969_B5F5,
- 0x1235_F2C8, 0x13F7_98FF, 0x11B1_26A6, 0x1073_4C91, 0x153C_5A14, 0x14FE_3023, 0x16B8_8E7A, 0x177A_E44D,
- 0x384D_46E0, 0x398F_2CD7, 0x3BC9_928E, 0x3A0B_F8B9, 0x3F44_EE3C, 0x3E86_840B, 0x3CC0_3A52, 0x3D02_5065,
- 0x365E_1758, 0x379C_7D6F, 0x35DA_C336, 0x3418_A901, 0x3157_BF84, 0x3095_D5B3, 0x32D3_6BEA, 0x3311_01DD,
- 0x246B_E590, 0x25A9_8FA7, 0x27EF_31FE, 0x262D_5BC9, 0x2362_4D4C, 0x22A0_277B, 0x20E6_9922, 0x2124_F315,
- 0x2A78_B428, 0x2BBA_DE1F, 0x29FC_6046, 0x283E_0A71, 0x2D71_1CF4, 0x2CB3_76C3, 0x2EF5_C89A, 0x2F37_A2AD,
- 0x709A_8DC0, 0x7158_E7F7, 0x731E_59AE, 0x72DC_3399, 0x7793_251C, 0x7651_4F2B, 0x7417_F172, 0x75D5_9B45,
- 0x7E89_DC78, 0x7F4B_B64F, 0x7D0D_0816, 0x7CCF_6221, 0x7980_74A4, 0x7842_1E93, 0x7A04_A0CA, 0x7BC6_CAFD,
- 0x6CBC_2EB0, 0x6D7E_4487, 0x6F38_FADE, 0x6EFA_90E9, 0x6BB5_866C, 0x6A77_EC5B, 0x6831_5202, 0x69F3_3835,
- 0x62AF_7F08, 0x636D_153F, 0x612B_AB66, 0x60E9_C151, 0x65A6_D7D4, 0x6464_BDE3, 0x6622_03BA, 0x67E0_698D,
- 0x48D7_CB20, 0x4915_A117, 0x4B53_1F4E, 0x4A91_7579, 0x4FDE_63FC, 0x4E1C_09CB, 0x4C5A_B792, 0x4D98_DDA5,
- 0x46C4_9A98, 0x4706_F0AF, 0x4540_4EF6, 0x4482_24C1, 0x41CD_3244, 0x400F_5873, 0x4249_E62A, 0x438B_8C1D,
- 0x54F1_6850, 0x5533_0267, 0x5775_BC3E, 0x56B7_D609, 0x53F8_C08C, 0x523A_AABB, 0x507C_14E2, 0x51BE_7ED5,
- 0x5AE2_39E8, 0x5B20_53DF, 0x5966_ED86, 0x58A4_87B1, 0x5DEB_9134, 0x5C29_FB03, 0x5E6F_455A, 0x5FAD_2F6D,
- 0xE135_1B80, 0xE0F7_71B7, 0xE2B1_CFEE, 0xE373_A5D9, 0xE63C_B35C, 0xE7FE_D96B, 0xE5B8_6732, 0xE47A_0D05,
- 0xEF26_4A38, 0xEEE4_200F, 0xECA2_9E56, 0xED60_F461, 0xE82F_E2E4, 0xE9ED_88D3, 0xEBAB_368A, 0xEA69_5CBD,
- 0xFD13_B8F0, 0xFCD1_D2C7, 0xFE97_6C9E, 0xFF55_06A9, 0xFA1A_102C, 0xFBD8_7A1B, 0xF99E_C442, 0xF85C_AE75,
- 0xF300_E948, 0xF2C2_837F, 0xF084_3D26, 0xF146_5711, 0xF409_4194, 0xF5CB_2BA3, 0xF78D_95FA, 0xF64F_FFCD,
- 0xD978_5D60, 0xD8BA_3757, 0xDAFC_890E, 0xDB3E_E339, 0xDE71_F5BC, 0xDFB3_9F8B, 0xDDF5_21D2, 0xDC37_4BE5,
- 0xD76B_0CD8, 0xD6A9_66EF, 0xD4EF_D8B6, 0xD52D_B281, 0xD062_A404, 0xD1A0_CE33, 0xD3E6_706A, 0xD224_1A5D,
- 0xC55E_FE10, 0xC49C_9427, 0xC6DA_2A7E, 0xC718_4049, 0xC257_56CC, 0xC395_3CFB, 0xC1D3_82A2, 0xC011_E895,
- 0xCB4D_AFA8, 0xCA8F_C59F, 0xC8C9_7BC6, 0xC90B_11F1, 0xCC44_0774, 0xCD86_6D43, 0xCFC0_D31A, 0xCE02_B92D,
- 0x91AF_9640, 0x906D_FC77, 0x922B_422E, 0x93E9_2819, 0x96A6_3E9C, 0x9764_54AB, 0x9522_EAF2, 0x94E0_80C5,
- 0x9FBC_C7F8, 0x9E7E_ADCF, 0x9C38_1396, 0x9DFA_79A1, 0x98B5_6F24, 0x9977_0513, 0x9B31_BB4A, 0x9AF3_D17D,
- 0x8D89_3530, 0x8C4B_5F07, 0x8E0D_E15E, 0x8FCF_8B69, 0x8A80_9DEC, 0x8B42_F7DB, 0x8904_4982, 0x88C6_23B5,
- 0x839A_6488, 0x8258_0EBF, 0x801E_B0E6, 0x81DC_DAD1, 0x8493_CC54, 0x8551_A663, 0x8717_183A, 0x86D5_720D,
- 0xA9E2_D0A0, 0xA820_BA97, 0xAA66_04CE, 0xABA4_6EF9, 0xAEEB_787C, 0xAF29_124B, 0xAD6F_AC12, 0xACAD_C625,
- 0xA7F1_8118, 0xA633_EB2F, 0xA475_5576, 0xA5B7_3F41, 0xA0F8_29C4, 0xA13A_43F3, 0xA37C_FDAA, 0xA2BE_979D,
- 0xB5C4_73D0, 0xB406_19E7, 0xB640_A7BE, 0xB782_CD89, 0xB2CD_DB0C, 0xB30F_B13B, 0xB149_0F62, 0xB08B_6555,
- 0xBBD7_2268, 0xBA15_485F, 0xB853_F606, 0xB991_9C31, 0xBCDE_8AB4, 0xBD1C_E083, 0xBF5A_5EDA, 0xBE98_34ED,
+ 0x0000_0000, 0x01C2_6A37, 0x0384_D46E, 0x0246_BE59, 0x0709_A8DC, 0x06CB_C2EB, 0x048D_7CB2, 0x054F_1685,
+ 0x0E13_51B8, 0x0FD1_3B8F, 0x0D97_85D6, 0x0C55_EFE1, 0x091A_F964, 0x08D8_9353, 0x0A9E_2D0A, 0x0B5C_473D,
+ 0x1C26_A370, 0x1DE4_C947, 0x1FA2_771E, 0x1E60_1D29, 0x1B2F_0BAC, 0x1AED_619B, 0x18AB_DFC2, 0x1969_B5F5,
+ 0x1235_F2C8, 0x13F7_98FF, 0x11B1_26A6, 0x1073_4C91, 0x153C_5A14, 0x14FE_3023, 0x16B8_8E7A, 0x177A_E44D,
+ 0x384D_46E0, 0x398F_2CD7, 0x3BC9_928E, 0x3A0B_F8B9, 0x3F44_EE3C, 0x3E86_840B, 0x3CC0_3A52, 0x3D02_5065,
+ 0x365E_1758, 0x379C_7D6F, 0x35DA_C336, 0x3418_A901, 0x3157_BF84, 0x3095_D5B3, 0x32D3_6BEA, 0x3311_01DD,
+ 0x246B_E590, 0x25A9_8FA7, 0x27EF_31FE, 0x262D_5BC9, 0x2362_4D4C, 0x22A0_277B, 0x20E6_9922, 0x2124_F315,
+ 0x2A78_B428, 0x2BBA_DE1F, 0x29FC_6046, 0x283E_0A71, 0x2D71_1CF4, 0x2CB3_76C3, 0x2EF5_C89A, 0x2F37_A2AD,
+ 0x709A_8DC0, 0x7158_E7F7, 0x731E_59AE, 0x72DC_3399, 0x7793_251C, 0x7651_4F2B, 0x7417_F172, 0x75D5_9B45,
+ 0x7E89_DC78, 0x7F4B_B64F, 0x7D0D_0816, 0x7CCF_6221, 0x7980_74A4, 0x7842_1E93, 0x7A04_A0CA, 0x7BC6_CAFD,
+ 0x6CBC_2EB0, 0x6D7E_4487, 0x6F38_FADE, 0x6EFA_90E9, 0x6BB5_866C, 0x6A77_EC5B, 0x6831_5202, 0x69F3_3835,
+ 0x62AF_7F08, 0x636D_153F, 0x612B_AB66, 0x60E9_C151, 0x65A6_D7D4, 0x6464_BDE3, 0x6622_03BA, 0x67E0_698D,
+ 0x48D7_CB20, 0x4915_A117, 0x4B53_1F4E, 0x4A91_7579, 0x4FDE_63FC, 0x4E1C_09CB, 0x4C5A_B792, 0x4D98_DDA5,
+ 0x46C4_9A98, 0x4706_F0AF, 0x4540_4EF6, 0x4482_24C1, 0x41CD_3244, 0x400F_5873, 0x4249_E62A, 0x438B_8C1D,
+ 0x54F1_6850, 0x5533_0267, 0x5775_BC3E, 0x56B7_D609, 0x53F8_C08C, 0x523A_AABB, 0x507C_14E2, 0x51BE_7ED5,
+ 0x5AE2_39E8, 0x5B20_53DF, 0x5966_ED86, 0x58A4_87B1, 0x5DEB_9134, 0x5C29_FB03, 0x5E6F_455A, 0x5FAD_2F6D,
+ 0xE135_1B80, 0xE0F7_71B7, 0xE2B1_CFEE, 0xE373_A5D9, 0xE63C_B35C, 0xE7FE_D96B, 0xE5B8_6732, 0xE47A_0D05,
+ 0xEF26_4A38, 0xEEE4_200F, 0xECA2_9E56, 0xED60_F461, 0xE82F_E2E4, 0xE9ED_88D3, 0xEBAB_368A, 0xEA69_5CBD,
+ 0xFD13_B8F0, 0xFCD1_D2C7, 0xFE97_6C9E, 0xFF55_06A9, 0xFA1A_102C, 0xFBD8_7A1B, 0xF99E_C442, 0xF85C_AE75,
+ 0xF300_E948, 0xF2C2_837F, 0xF084_3D26, 0xF146_5711, 0xF409_4194, 0xF5CB_2BA3, 0xF78D_95FA, 0xF64F_FFCD,
+ 0xD978_5D60, 0xD8BA_3757, 0xDAFC_890E, 0xDB3E_E339, 0xDE71_F5BC, 0xDFB3_9F8B, 0xDDF5_21D2, 0xDC37_4BE5,
+ 0xD76B_0CD8, 0xD6A9_66EF, 0xD4EF_D8B6, 0xD52D_B281, 0xD062_A404, 0xD1A0_CE33, 0xD3E6_706A, 0xD224_1A5D,
+ 0xC55E_FE10, 0xC49C_9427, 0xC6DA_2A7E, 0xC718_4049, 0xC257_56CC, 0xC395_3CFB, 0xC1D3_82A2, 0xC011_E895,
+ 0xCB4D_AFA8, 0xCA8F_C59F, 0xC8C9_7BC6, 0xC90B_11F1, 0xCC44_0774, 0xCD86_6D43, 0xCFC0_D31A, 0xCE02_B92D,
+ 0x91AF_9640, 0x906D_FC77, 0x922B_422E, 0x93E9_2819, 0x96A6_3E9C, 0x9764_54AB, 0x9522_EAF2, 0x94E0_80C5,
+ 0x9FBC_C7F8, 0x9E7E_ADCF, 0x9C38_1396, 0x9DFA_79A1, 0x98B5_6F24, 0x9977_0513, 0x9B31_BB4A, 0x9AF3_D17D,
+ 0x8D89_3530, 0x8C4B_5F07, 0x8E0D_E15E, 0x8FCF_8B69, 0x8A80_9DEC, 0x8B42_F7DB, 0x8904_4982, 0x88C6_23B5,
+ 0x839A_6488, 0x8258_0EBF, 0x801E_B0E6, 0x81DC_DAD1, 0x8493_CC54, 0x8551_A663, 0x8717_183A, 0x86D5_720D,
+ 0xA9E2_D0A0, 0xA820_BA97, 0xAA66_04CE, 0xABA4_6EF9, 0xAEEB_787C, 0xAF29_124B, 0xAD6F_AC12, 0xACAD_C625,
+ 0xA7F1_8118, 0xA633_EB2F, 0xA475_5576, 0xA5B7_3F41, 0xA0F8_29C4, 0xA13A_43F3, 0xA37C_FDAA, 0xA2BE_979D,
+ 0xB5C4_73D0, 0xB406_19E7, 0xB640_A7BE, 0xB782_CD89, 0xB2CD_DB0C, 0xB30F_B13B, 0xB149_0F62, 0xB08B_6555,
+ 0xBBD7_2268, 0xBA15_485F, 0xB853_F606, 0xB991_9C31, 0xBCDE_8AB4, 0xBD1C_E083, 0xBF5A_5EDA, 0xBE98_34ED,
],[
- 0x0000_0000, 0xB8BC_6765, 0xAA09_C88B, 0x12B5_AFEE, 0x8F62_9757, 0x37DE_F032, 0x256B_5FDC, 0x9DD7_38B9,
- 0xC5B4_28EF, 0x7D08_4F8A, 0x6FBD_E064, 0xD701_8701, 0x4AD6_BFB8, 0xF26A_D8DD, 0xE0DF_7733, 0x5863_1056,
- 0x5019_579F, 0xE8A5_30FA, 0xFA10_9F14, 0x42AC_F871, 0xDF7B_C0C8, 0x67C7_A7AD, 0x7572_0843, 0xCDCE_6F26,
- 0x95AD_7F70, 0x2D11_1815, 0x3FA4_B7FB, 0x8718_D09E, 0x1ACF_E827, 0xA273_8F42, 0xB0C6_20AC, 0x087A_47C9,
- 0xA032_AF3E, 0x188E_C85B, 0x0A3B_67B5, 0xB287_00D0, 0x2F50_3869, 0x97EC_5F0C, 0x8559_F0E2, 0x3DE5_9787,
- 0x6586_87D1, 0xDD3A_E0B4, 0xCF8F_4F5A, 0x7733_283F, 0xEAE4_1086, 0x5258_77E3, 0x40ED_D80D, 0xF851_BF68,
- 0xF02B_F8A1, 0x4897_9FC4, 0x5A22_302A, 0xE29E_574F, 0x7F49_6FF6, 0xC7F5_0893, 0xD540_A77D, 0x6DFC_C018,
- 0x359F_D04E, 0x8D23_B72B, 0x9F96_18C5, 0x272A_7FA0, 0xBAFD_4719, 0x0241_207C, 0x10F4_8F92, 0xA848_E8F7,
- 0x9B14_583D, 0x23A8_3F58, 0x311D_90B6, 0x89A1_F7D3, 0x1476_CF6A, 0xACCA_A80F, 0xBE7F_07E1, 0x06C3_6084,
- 0x5EA0_70D2, 0xE61C_17B7, 0xF4A9_B859, 0x4C15_DF3C, 0xD1C2_E785, 0x697E_80E0, 0x7BCB_2F0E, 0xC377_486B,
- 0xCB0D_0FA2, 0x73B1_68C7, 0x6104_C729, 0xD9B8_A04C, 0x446F_98F5, 0xFCD3_FF90, 0xEE66_507E, 0x56DA_371B,
- 0x0EB9_274D, 0xB605_4028, 0xA4B0_EFC6, 0x1C0C_88A3, 0x81DB_B01A, 0x3967_D77F, 0x2BD2_7891, 0x936E_1FF4,
- 0x3B26_F703, 0x839A_9066, 0x912F_3F88, 0x2993_58ED, 0xB444_6054, 0x0CF8_0731, 0x1E4D_A8DF, 0xA6F1_CFBA,
- 0xFE92_DFEC, 0x462E_B889, 0x549B_1767, 0xEC27_7002, 0x71F0_48BB, 0xC94C_2FDE, 0xDBF9_8030, 0x6345_E755,
- 0x6B3F_A09C, 0xD383_C7F9, 0xC136_6817, 0x798A_0F72, 0xE45D_37CB, 0x5CE1_50AE, 0x4E54_FF40, 0xF6E8_9825,
- 0xAE8B_8873, 0x1637_EF16, 0x0482_40F8, 0xBC3E_279D, 0x21E9_1F24, 0x9955_7841, 0x8BE0_D7AF, 0x335C_B0CA,
- 0xED59_B63B, 0x55E5_D15E, 0x4750_7EB0, 0xFFEC_19D5, 0x623B_216C, 0xDA87_4609, 0xC832_E9E7, 0x708E_8E82,
- 0x28ED_9ED4, 0x9051_F9B1, 0x82E4_565F, 0x3A58_313A, 0xA78F_0983, 0x1F33_6EE6, 0x0D86_C108, 0xB53A_A66D,
- 0xBD40_E1A4, 0x05FC_86C1, 0x1749_292F, 0xAFF5_4E4A, 0x3222_76F3, 0x8A9E_1196, 0x982B_BE78, 0x2097_D91D,
- 0x78F4_C94B, 0xC048_AE2E, 0xD2FD_01C0, 0x6A41_66A5, 0xF796_5E1C, 0x4F2A_3979, 0x5D9F_9697, 0xE523_F1F2,
- 0x4D6B_1905, 0xF5D7_7E60, 0xE762_D18E, 0x5FDE_B6EB, 0xC209_8E52, 0x7AB5_E937, 0x6800_46D9, 0xD0BC_21BC,
- 0x88DF_31EA, 0x3063_568F, 0x22D6_F961, 0x9A6A_9E04, 0x07BD_A6BD, 0xBF01_C1D8, 0xADB4_6E36, 0x1508_0953,
- 0x1D72_4E9A, 0xA5CE_29FF, 0xB77B_8611, 0x0FC7_E174, 0x9210_D9CD, 0x2AAC_BEA8, 0x3819_1146, 0x80A5_7623,
- 0xD8C6_6675, 0x607A_0110, 0x72CF_AEFE, 0xCA73_C99B, 0x57A4_F122, 0xEF18_9647, 0xFDAD_39A9, 0x4511_5ECC,
- 0x764D_EE06, 0xCEF1_8963, 0xDC44_268D, 0x64F8_41E8, 0xF92F_7951, 0x4193_1E34, 0x5326_B1DA, 0xEB9A_D6BF,
- 0xB3F9_C6E9, 0x0B45_A18C, 0x19F0_0E62, 0xA14C_6907, 0x3C9B_51BE, 0x8427_36DB, 0x9692_9935, 0x2E2E_FE50,
- 0x2654_B999, 0x9EE8_DEFC, 0x8C5D_7112, 0x34E1_1677, 0xA936_2ECE, 0x118A_49AB, 0x033F_E645, 0xBB83_8120,
- 0xE3E0_9176, 0x5B5C_F613, 0x49E9_59FD, 0xF155_3E98, 0x6C82_0621, 0xD43E_6144, 0xC68B_CEAA, 0x7E37_A9CF,
- 0xD67F_4138, 0x6EC3_265D, 0x7C76_89B3, 0xC4CA_EED6, 0x591D_D66F, 0xE1A1_B10A, 0xF314_1EE4, 0x4BA8_7981,
- 0x13CB_69D7, 0xAB77_0EB2, 0xB9C2_A15C, 0x017E_C639, 0x9CA9_FE80, 0x2415_99E5, 0x36A0_360B, 0x8E1C_516E,
- 0x8666_16A7, 0x3EDA_71C2, 0x2C6F_DE2C, 0x94D3_B949, 0x0904_81F0, 0xB1B8_E695, 0xA30D_497B, 0x1BB1_2E1E,
- 0x43D2_3E48, 0xFB6E_592D, 0xE9DB_F6C3, 0x5167_91A6, 0xCCB0_A91F, 0x740C_CE7A, 0x66B9_6194, 0xDE05_06F1,
+ 0x0000_0000, 0xB8BC_6765, 0xAA09_C88B, 0x12B5_AFEE, 0x8F62_9757, 0x37DE_F032, 0x256B_5FDC, 0x9DD7_38B9,
+ 0xC5B4_28EF, 0x7D08_4F8A, 0x6FBD_E064, 0xD701_8701, 0x4AD6_BFB8, 0xF26A_D8DD, 0xE0DF_7733, 0x5863_1056,
+ 0x5019_579F, 0xE8A5_30FA, 0xFA10_9F14, 0x42AC_F871, 0xDF7B_C0C8, 0x67C7_A7AD, 0x7572_0843, 0xCDCE_6F26,
+ 0x95AD_7F70, 0x2D11_1815, 0x3FA4_B7FB, 0x8718_D09E, 0x1ACF_E827, 0xA273_8F42, 0xB0C6_20AC, 0x087A_47C9,
+ 0xA032_AF3E, 0x188E_C85B, 0x0A3B_67B5, 0xB287_00D0, 0x2F50_3869, 0x97EC_5F0C, 0x8559_F0E2, 0x3DE5_9787,
+ 0x6586_87D1, 0xDD3A_E0B4, 0xCF8F_4F5A, 0x7733_283F, 0xEAE4_1086, 0x5258_77E3, 0x40ED_D80D, 0xF851_BF68,
+ 0xF02B_F8A1, 0x4897_9FC4, 0x5A22_302A, 0xE29E_574F, 0x7F49_6FF6, 0xC7F5_0893, 0xD540_A77D, 0x6DFC_C018,
+ 0x359F_D04E, 0x8D23_B72B, 0x9F96_18C5, 0x272A_7FA0, 0xBAFD_4719, 0x0241_207C, 0x10F4_8F92, 0xA848_E8F7,
+ 0x9B14_583D, 0x23A8_3F58, 0x311D_90B6, 0x89A1_F7D3, 0x1476_CF6A, 0xACCA_A80F, 0xBE7F_07E1, 0x06C3_6084,
+ 0x5EA0_70D2, 0xE61C_17B7, 0xF4A9_B859, 0x4C15_DF3C, 0xD1C2_E785, 0x697E_80E0, 0x7BCB_2F0E, 0xC377_486B,
+ 0xCB0D_0FA2, 0x73B1_68C7, 0x6104_C729, 0xD9B8_A04C, 0x446F_98F5, 0xFCD3_FF90, 0xEE66_507E, 0x56DA_371B,
+ 0x0EB9_274D, 0xB605_4028, 0xA4B0_EFC6, 0x1C0C_88A3, 0x81DB_B01A, 0x3967_D77F, 0x2BD2_7891, 0x936E_1FF4,
+ 0x3B26_F703, 0x839A_9066, 0x912F_3F88, 0x2993_58ED, 0xB444_6054, 0x0CF8_0731, 0x1E4D_A8DF, 0xA6F1_CFBA,
+ 0xFE92_DFEC, 0x462E_B889, 0x549B_1767, 0xEC27_7002, 0x71F0_48BB, 0xC94C_2FDE, 0xDBF9_8030, 0x6345_E755,
+ 0x6B3F_A09C, 0xD383_C7F9, 0xC136_6817, 0x798A_0F72, 0xE45D_37CB, 0x5CE1_50AE, 0x4E54_FF40, 0xF6E8_9825,
+ 0xAE8B_8873, 0x1637_EF16, 0x0482_40F8, 0xBC3E_279D, 0x21E9_1F24, 0x9955_7841, 0x8BE0_D7AF, 0x335C_B0CA,
+ 0xED59_B63B, 0x55E5_D15E, 0x4750_7EB0, 0xFFEC_19D5, 0x623B_216C, 0xDA87_4609, 0xC832_E9E7, 0x708E_8E82,
+ 0x28ED_9ED4, 0x9051_F9B1, 0x82E4_565F, 0x3A58_313A, 0xA78F_0983, 0x1F33_6EE6, 0x0D86_C108, 0xB53A_A66D,
+ 0xBD40_E1A4, 0x05FC_86C1, 0x1749_292F, 0xAFF5_4E4A, 0x3222_76F3, 0x8A9E_1196, 0x982B_BE78, 0x2097_D91D,
+ 0x78F4_C94B, 0xC048_AE2E, 0xD2FD_01C0, 0x6A41_66A5, 0xF796_5E1C, 0x4F2A_3979, 0x5D9F_9697, 0xE523_F1F2,
+ 0x4D6B_1905, 0xF5D7_7E60, 0xE762_D18E, 0x5FDE_B6EB, 0xC209_8E52, 0x7AB5_E937, 0x6800_46D9, 0xD0BC_21BC,
+ 0x88DF_31EA, 0x3063_568F, 0x22D6_F961, 0x9A6A_9E04, 0x07BD_A6BD, 0xBF01_C1D8, 0xADB4_6E36, 0x1508_0953,
+ 0x1D72_4E9A, 0xA5CE_29FF, 0xB77B_8611, 0x0FC7_E174, 0x9210_D9CD, 0x2AAC_BEA8, 0x3819_1146, 0x80A5_7623,
+ 0xD8C6_6675, 0x607A_0110, 0x72CF_AEFE, 0xCA73_C99B, 0x57A4_F122, 0xEF18_9647, 0xFDAD_39A9, 0x4511_5ECC,
+ 0x764D_EE06, 0xCEF1_8963, 0xDC44_268D, 0x64F8_41E8, 0xF92F_7951, 0x4193_1E34, 0x5326_B1DA, 0xEB9A_D6BF,
+ 0xB3F9_C6E9, 0x0B45_A18C, 0x19F0_0E62, 0xA14C_6907, 0x3C9B_51BE, 0x8427_36DB, 0x9692_9935, 0x2E2E_FE50,
+ 0x2654_B999, 0x9EE8_DEFC, 0x8C5D_7112, 0x34E1_1677, 0xA936_2ECE, 0x118A_49AB, 0x033F_E645, 0xBB83_8120,
+ 0xE3E0_9176, 0x5B5C_F613, 0x49E9_59FD, 0xF155_3E98, 0x6C82_0621, 0xD43E_6144, 0xC68B_CEAA, 0x7E37_A9CF,
+ 0xD67F_4138, 0x6EC3_265D, 0x7C76_89B3, 0xC4CA_EED6, 0x591D_D66F, 0xE1A1_B10A, 0xF314_1EE4, 0x4BA8_7981,
+ 0x13CB_69D7, 0xAB77_0EB2, 0xB9C2_A15C, 0x017E_C639, 0x9CA9_FE80, 0x2415_99E5, 0x36A0_360B, 0x8E1C_516E,
+ 0x8666_16A7, 0x3EDA_71C2, 0x2C6F_DE2C, 0x94D3_B949, 0x0904_81F0, 0xB1B8_E695, 0xA30D_497B, 0x1BB1_2E1E,
+ 0x43D2_3E48, 0xFB6E_592D, 0xE9DB_F6C3, 0x5167_91A6, 0xCCB0_A91F, 0x740C_CE7A, 0x66B9_6194, 0xDE05_06F1,
],[
- 0x0000_0000, 0x3D60_29B0, 0x7AC0_5360, 0x47A0_7AD0, 0xF580_A6C0, 0xC8E0_8F70, 0x8F40_F5A0, 0xB220_DC10,
- 0x3070_4BC1, 0x0D10_6271, 0x4AB0_18A1, 0x77D0_3111, 0xC5F0_ED01, 0xF890_C4B1, 0xBF30_BE61, 0x8250_97D1,
- 0x60E0_9782, 0x5D80_BE32, 0x1A20_C4E2, 0x2740_ED52, 0x9560_3142, 0xA800_18F2, 0xEFA0_6222, 0xD2C0_4B92,
- 0x5090_DC43, 0x6DF0_F5F3, 0x2A50_8F23, 0x1730_A693, 0xA510_7A83, 0x9870_5333, 0xDFD0_29E3, 0xE2B0_0053,
- 0xC1C1_2F04, 0xFCA1_06B4, 0xBB01_7C64, 0x8661_55D4, 0x3441_89C4, 0x0921_A074, 0x4E81_DAA4, 0x73E1_F314,
- 0xF1B1_64C5, 0xCCD1_4D75, 0x8B71_37A5, 0xB611_1E15, 0x0431_C205, 0x3951_EBB5, 0x7EF1_9165, 0x4391_B8D5,
- 0xA121_B886, 0x9C41_9136, 0xDBE1_EBE6, 0xE681_C256, 0x54A1_1E46, 0x69C1_37F6, 0x2E61_4D26, 0x1301_6496,
- 0x9151_F347, 0xAC31_DAF7, 0xEB91_A027, 0xD6F1_8997, 0x64D1_5587, 0x59B1_7C37, 0x1E11_06E7, 0x2371_2F57,
- 0x58F3_5849, 0x6593_71F9, 0x2233_0B29, 0x1F53_2299, 0xAD73_FE89, 0x9013_D739, 0xD7B3_ADE9, 0xEAD3_8459,
- 0x6883_1388, 0x55E3_3A38, 0x1243_40E8, 0x2F23_6958, 0x9D03_B548, 0xA063_9CF8, 0xE7C3_E628, 0xDAA3_CF98,
- 0x3813_CFCB, 0x0573_E67B, 0x42D3_9CAB, 0x7FB3_B51B, 0xCD93_690B, 0xF0F3_40BB, 0xB753_3A6B, 0x8A33_13DB,
- 0x0863_840A, 0x3503_ADBA, 0x72A3_D76A, 0x4FC3_FEDA, 0xFDE3_22CA, 0xC083_0B7A, 0x8723_71AA, 0xBA43_581A,
- 0x9932_774D, 0xA452_5EFD, 0xE3F2_242D, 0xDE92_0D9D, 0x6CB2_D18D, 0x51D2_F83D, 0x1672_82ED, 0x2B12_AB5D,
- 0xA942_3C8C, 0x9422_153C, 0xD382_6FEC, 0xEEE2_465C, 0x5CC2_9A4C, 0x61A2_B3FC, 0x2602_C92C, 0x1B62_E09C,
- 0xF9D2_E0CF, 0xC4B2_C97F, 0x8312_B3AF, 0xBE72_9A1F, 0x0C52_460F, 0x3132_6FBF, 0x7692_156F, 0x4BF2_3CDF,
- 0xC9A2_AB0E, 0xF4C2_82BE, 0xB362_F86E, 0x8E02_D1DE, 0x3C22_0DCE, 0x0142_247E, 0x46E2_5EAE, 0x7B82_771E,
- 0xB1E6_B092, 0x8C86_9922, 0xCB26_E3F2, 0xF646_CA42, 0x4466_1652, 0x7906_3FE2, 0x3EA6_4532, 0x03C6_6C82,
- 0x8196_FB53, 0xBCF6_D2E3, 0xFB56_A833, 0xC636_8183, 0x7416_5D93, 0x4976_7423, 0x0ED6_0EF3, 0x33B6_2743,
- 0xD106_2710, 0xEC66_0EA0, 0xABC6_7470, 0x96A6_5DC0, 0x2486_81D0, 0x19E6_A860, 0x5E46_D2B0, 0x6326_FB00,
- 0xE176_6CD1, 0xDC16_4561, 0x9BB6_3FB1, 0xA6D6_1601, 0x14F6_CA11, 0x2996_E3A1, 0x6E36_9971, 0x5356_B0C1,
- 0x7027_9F96, 0x4D47_B626, 0x0AE7_CCF6, 0x3787_E546, 0x85A7_3956, 0xB8C7_10E6, 0xFF67_6A36, 0xC207_4386,
- 0x4057_D457, 0x7D37_FDE7, 0x3A97_8737, 0x07F7_AE87, 0xB5D7_7297, 0x88B7_5B27, 0xCF17_21F7, 0xF277_0847,
- 0x10C7_0814, 0x2DA7_21A4, 0x6A07_5B74, 0x5767_72C4, 0xE547_AED4, 0xD827_8764, 0x9F87_FDB4, 0xA2E7_D404,
- 0x20B7_43D5, 0x1DD7_6A65, 0x5A77_10B5, 0x6717_3905, 0xD537_E515, 0xE857_CCA5, 0xAFF7_B675, 0x9297_9FC5,
- 0xE915_E8DB, 0xD475_C16B, 0x93D5_BBBB, 0xAEB5_920B, 0x1C95_4E1B, 0x21F5_67AB, 0x6655_1D7B, 0x5B35_34CB,
- 0xD965_A31A, 0xE405_8AAA, 0xA3A5_F07A, 0x9EC5_D9CA, 0x2CE5_05DA, 0x1185_2C6A, 0x5625_56BA, 0x6B45_7F0A,
- 0x89F5_7F59, 0xB495_56E9, 0xF335_2C39, 0xCE55_0589, 0x7C75_D999, 0x4115_F029, 0x06B5_8AF9, 0x3BD5_A349,
- 0xB985_3498, 0x84E5_1D28, 0xC345_67F8, 0xFE25_4E48, 0x4C05_9258, 0x7165_BBE8, 0x36C5_C138, 0x0BA5_E888,
- 0x28D4_C7DF, 0x15B4_EE6F, 0x5214_94BF, 0x6F74_BD0F, 0xDD54_611F, 0xE034_48AF, 0xA794_327F, 0x9AF4_1BCF,
- 0x18A4_8C1E, 0x25C4_A5AE, 0x6264_DF7E, 0x5F04_F6CE, 0xED24_2ADE, 0xD044_036E, 0x97E4_79BE, 0xAA84_500E,
- 0x4834_505D, 0x7554_79ED, 0x32F4_033D, 0x0F94_2A8D, 0xBDB4_F69D, 0x80D4_DF2D, 0xC774_A5FD, 0xFA14_8C4D,
- 0x7844_1B9C, 0x4524_322C, 0x0284_48FC, 0x3FE4_614C, 0x8DC4_BD5C, 0xB0A4_94EC, 0xF704_EE3C, 0xCA64_C78C,
+ 0x0000_0000, 0x3D60_29B0, 0x7AC0_5360, 0x47A0_7AD0, 0xF580_A6C0, 0xC8E0_8F70, 0x8F40_F5A0, 0xB220_DC10,
+ 0x3070_4BC1, 0x0D10_6271, 0x4AB0_18A1, 0x77D0_3111, 0xC5F0_ED01, 0xF890_C4B1, 0xBF30_BE61, 0x8250_97D1,
+ 0x60E0_9782, 0x5D80_BE32, 0x1A20_C4E2, 0x2740_ED52, 0x9560_3142, 0xA800_18F2, 0xEFA0_6222, 0xD2C0_4B92,
+ 0x5090_DC43, 0x6DF0_F5F3, 0x2A50_8F23, 0x1730_A693, 0xA510_7A83, 0x9870_5333, 0xDFD0_29E3, 0xE2B0_0053,
+ 0xC1C1_2F04, 0xFCA1_06B4, 0xBB01_7C64, 0x8661_55D4, 0x3441_89C4, 0x0921_A074, 0x4E81_DAA4, 0x73E1_F314,
+ 0xF1B1_64C5, 0xCCD1_4D75, 0x8B71_37A5, 0xB611_1E15, 0x0431_C205, 0x3951_EBB5, 0x7EF1_9165, 0x4391_B8D5,
+ 0xA121_B886, 0x9C41_9136, 0xDBE1_EBE6, 0xE681_C256, 0x54A1_1E46, 0x69C1_37F6, 0x2E61_4D26, 0x1301_6496,
+ 0x9151_F347, 0xAC31_DAF7, 0xEB91_A027, 0xD6F1_8997, 0x64D1_5587, 0x59B1_7C37, 0x1E11_06E7, 0x2371_2F57,
+ 0x58F3_5849, 0x6593_71F9, 0x2233_0B29, 0x1F53_2299, 0xAD73_FE89, 0x9013_D739, 0xD7B3_ADE9, 0xEAD3_8459,
+ 0x6883_1388, 0x55E3_3A38, 0x1243_40E8, 0x2F23_6958, 0x9D03_B548, 0xA063_9CF8, 0xE7C3_E628, 0xDAA3_CF98,
+ 0x3813_CFCB, 0x0573_E67B, 0x42D3_9CAB, 0x7FB3_B51B, 0xCD93_690B, 0xF0F3_40BB, 0xB753_3A6B, 0x8A33_13DB,
+ 0x0863_840A, 0x3503_ADBA, 0x72A3_D76A, 0x4FC3_FEDA, 0xFDE3_22CA, 0xC083_0B7A, 0x8723_71AA, 0xBA43_581A,
+ 0x9932_774D, 0xA452_5EFD, 0xE3F2_242D, 0xDE92_0D9D, 0x6CB2_D18D, 0x51D2_F83D, 0x1672_82ED, 0x2B12_AB5D,
+ 0xA942_3C8C, 0x9422_153C, 0xD382_6FEC, 0xEEE2_465C, 0x5CC2_9A4C, 0x61A2_B3FC, 0x2602_C92C, 0x1B62_E09C,
+ 0xF9D2_E0CF, 0xC4B2_C97F, 0x8312_B3AF, 0xBE72_9A1F, 0x0C52_460F, 0x3132_6FBF, 0x7692_156F, 0x4BF2_3CDF,
+ 0xC9A2_AB0E, 0xF4C2_82BE, 0xB362_F86E, 0x8E02_D1DE, 0x3C22_0DCE, 0x0142_247E, 0x46E2_5EAE, 0x7B82_771E,
+ 0xB1E6_B092, 0x8C86_9922, 0xCB26_E3F2, 0xF646_CA42, 0x4466_1652, 0x7906_3FE2, 0x3EA6_4532, 0x03C6_6C82,
+ 0x8196_FB53, 0xBCF6_D2E3, 0xFB56_A833, 0xC636_8183, 0x7416_5D93, 0x4976_7423, 0x0ED6_0EF3, 0x33B6_2743,
+ 0xD106_2710, 0xEC66_0EA0, 0xABC6_7470, 0x96A6_5DC0, 0x2486_81D0, 0x19E6_A860, 0x5E46_D2B0, 0x6326_FB00,
+ 0xE176_6CD1, 0xDC16_4561, 0x9BB6_3FB1, 0xA6D6_1601, 0x14F6_CA11, 0x2996_E3A1, 0x6E36_9971, 0x5356_B0C1,
+ 0x7027_9F96, 0x4D47_B626, 0x0AE7_CCF6, 0x3787_E546, 0x85A7_3956, 0xB8C7_10E6, 0xFF67_6A36, 0xC207_4386,
+ 0x4057_D457, 0x7D37_FDE7, 0x3A97_8737, 0x07F7_AE87, 0xB5D7_7297, 0x88B7_5B27, 0xCF17_21F7, 0xF277_0847,
+ 0x10C7_0814, 0x2DA7_21A4, 0x6A07_5B74, 0x5767_72C4, 0xE547_AED4, 0xD827_8764, 0x9F87_FDB4, 0xA2E7_D404,
+ 0x20B7_43D5, 0x1DD7_6A65, 0x5A77_10B5, 0x6717_3905, 0xD537_E515, 0xE857_CCA5, 0xAFF7_B675, 0x9297_9FC5,
+ 0xE915_E8DB, 0xD475_C16B, 0x93D5_BBBB, 0xAEB5_920B, 0x1C95_4E1B, 0x21F5_67AB, 0x6655_1D7B, 0x5B35_34CB,
+ 0xD965_A31A, 0xE405_8AAA, 0xA3A5_F07A, 0x9EC5_D9CA, 0x2CE5_05DA, 0x1185_2C6A, 0x5625_56BA, 0x6B45_7F0A,
+ 0x89F5_7F59, 0xB495_56E9, 0xF335_2C39, 0xCE55_0589, 0x7C75_D999, 0x4115_F029, 0x06B5_8AF9, 0x3BD5_A349,
+ 0xB985_3498, 0x84E5_1D28, 0xC345_67F8, 0xFE25_4E48, 0x4C05_9258, 0x7165_BBE8, 0x36C5_C138, 0x0BA5_E888,
+ 0x28D4_C7DF, 0x15B4_EE6F, 0x5214_94BF, 0x6F74_BD0F, 0xDD54_611F, 0xE034_48AF, 0xA794_327F, 0x9AF4_1BCF,
+ 0x18A4_8C1E, 0x25C4_A5AE, 0x6264_DF7E, 0x5F04_F6CE, 0xED24_2ADE, 0xD044_036E, 0x97E4_79BE, 0xAA84_500E,
+ 0x4834_505D, 0x7554_79ED, 0x32F4_033D, 0x0F94_2A8D, 0xBDB4_F69D, 0x80D4_DF2D, 0xC774_A5FD, 0xFA14_8C4D,
+ 0x7844_1B9C, 0x4524_322C, 0x0284_48FC, 0x3FE4_614C, 0x8DC4_BD5C, 0xB0A4_94EC, 0xF704_EE3C, 0xCA64_C78C,
],[
- 0x0000_0000, 0xCB5C_D3A5, 0x4DC8_A10B, 0x8694_72AE, 0x9B91_4216, 0x50CD_91B3, 0xD659_E31D, 0x1D05_30B8,
- 0xEC53_826D, 0x270F_51C8, 0xA19B_2366, 0x6AC7_F0C3, 0x77C2_C07B, 0xBC9E_13DE, 0x3A0A_6170, 0xF156_B2D5,
- 0x03D6_029B, 0xC88A_D13E, 0x4E1E_A390, 0x8542_7035, 0x9847_408D, 0x531B_9328, 0xD58F_E186, 0x1ED3_3223,
- 0xEF85_80F6, 0x24D9_5353, 0xA24D_21FD, 0x6911_F258, 0x7414_C2E0, 0xBF48_1145, 0x39DC_63EB, 0xF280_B04E,
- 0x07AC_0536, 0xCCF0_D693, 0x4A64_A43D, 0x8138_7798, 0x9C3D_4720, 0x5761_9485, 0xD1F5_E62B, 0x1AA9_358E,
- 0xEBFF_875B, 0x20A3_54FE, 0xA637_2650, 0x6D6B_F5F5, 0x706E_C54D, 0xBB32_16E8, 0x3DA6_6446, 0xF6FA_B7E3,
- 0x047A_07AD, 0xCF26_D408, 0x49B2_A6A6, 0x82EE_7503, 0x9FEB_45BB, 0x54B7_961E, 0xD223_E4B0, 0x197F_3715,
- 0xE829_85C0, 0x2375_5665, 0xA5E1_24CB, 0x6EBD_F76E, 0x73B8_C7D6, 0xB8E4_1473, 0x3E70_66DD, 0xF52C_B578,
- 0x0F58_0A6C, 0xC404_D9C9, 0x4290_AB67, 0x89CC_78C2, 0x94C9_487A, 0x5F95_9BDF, 0xD901_E971, 0x125D_3AD4,
- 0xE30B_8801, 0x2857_5BA4, 0xAEC3_290A, 0x659F_FAAF, 0x789A_CA17, 0xB3C6_19B2, 0x3552_6B1C, 0xFE0E_B8B9,
- 0x0C8E_08F7, 0xC7D2_DB52, 0x4146_A9FC, 0x8A1A_7A59, 0x971F_4AE1, 0x5C43_9944, 0xDAD7_EBEA, 0x118B_384F,
- 0xE0DD_8A9A, 0x2B81_593F, 0xAD15_2B91, 0x6649_F834, 0x7B4C_C88C, 0xB010_1B29, 0x3684_6987, 0xFDD8_BA22,
- 0x08F4_0F5A, 0xC3A8_DCFF, 0x453C_AE51, 0x8E60_7DF4, 0x9365_4D4C, 0x5839_9EE9, 0xDEAD_EC47, 0x15F1_3FE2,
- 0xE4A7_8D37, 0x2FFB_5E92, 0xA96F_2C3C, 0x6233_FF99, 0x7F36_CF21, 0xB46A_1C84, 0x32FE_6E2A, 0xF9A2_BD8F,
- 0x0B22_0DC1, 0xC07E_DE64, 0x46EA_ACCA, 0x8DB6_7F6F, 0x90B3_4FD7, 0x5BEF_9C72, 0xDD7B_EEDC, 0x1627_3D79,
- 0xE771_8FAC, 0x2C2D_5C09, 0xAAB9_2EA7, 0x61E5_FD02, 0x7CE0_CDBA, 0xB7BC_1E1F, 0x3128_6CB1, 0xFA74_BF14,
- 0x1EB0_14D8, 0xD5EC_C77D, 0x5378_B5D3, 0x9824_6676, 0x8521_56CE, 0x4E7D_856B, 0xC8E9_F7C5, 0x03B5_2460,
- 0xF2E3_96B5, 0x39BF_4510, 0xBF2B_37BE, 0x7477_E41B, 0x6972_D4A3, 0xA22E_0706, 0x24BA_75A8, 0xEFE6_A60D,
- 0x1D66_1643, 0xD63A_C5E6, 0x50AE_B748, 0x9BF2_64ED, 0x86F7_5455, 0x4DAB_87F0, 0xCB3F_F55E, 0x0063_26FB,
- 0xF135_942E, 0x3A69_478B, 0xBCFD_3525, 0x77A1_E680, 0x6AA4_D638, 0xA1F8_059D, 0x276C_7733, 0xEC30_A496,
- 0x191C_11EE, 0xD240_C24B, 0x54D4_B0E5, 0x9F88_6340, 0x828D_53F8, 0x49D1_805D, 0xCF45_F2F3, 0x0419_2156,
- 0xF54F_9383, 0x3E13_4026, 0xB887_3288, 0x73DB_E12D, 0x6EDE_D195, 0xA582_0230, 0x2316_709E, 0xE84A_A33B,
- 0x1ACA_1375, 0xD196_C0D0, 0x5702_B27E, 0x9C5E_61DB, 0x815B_5163, 0x4A07_82C6, 0xCC93_F068, 0x07CF_23CD,
- 0xF699_9118, 0x3DC5_42BD, 0xBB51_3013, 0x700D_E3B6, 0x6D08_D30E, 0xA654_00AB, 0x20C0_7205, 0xEB9C_A1A0,
- 0x11E8_1EB4, 0xDAB4_CD11, 0x5C20_BFBF, 0x977C_6C1A, 0x8A79_5CA2, 0x4125_8F07, 0xC7B1_FDA9, 0x0CED_2E0C,
- 0xFDBB_9CD9, 0x36E7_4F7C, 0xB073_3DD2, 0x7B2F_EE77, 0x662A_DECF, 0xAD76_0D6A, 0x2BE2_7FC4, 0xE0BE_AC61,
- 0x123E_1C2F, 0xD962_CF8A, 0x5FF6_BD24, 0x94AA_6E81, 0x89AF_5E39, 0x42F3_8D9C, 0xC467_FF32, 0x0F3B_2C97,
- 0xFE6D_9E42, 0x3531_4DE7, 0xB3A5_3F49, 0x78F9_ECEC, 0x65FC_DC54, 0xAEA0_0FF1, 0x2834_7D5F, 0xE368_AEFA,
- 0x1644_1B82, 0xDD18_C827, 0x5B8C_BA89, 0x90D0_692C, 0x8DD5_5994, 0x4689_8A31, 0xC01D_F89F, 0x0B41_2B3A,
- 0xFA17_99EF, 0x314B_4A4A, 0xB7DF_38E4, 0x7C83_EB41, 0x6186_DBF9, 0xAADA_085C, 0x2C4E_7AF2, 0xE712_A957,
- 0x1592_1919, 0xDECE_CABC, 0x585A_B812, 0x9306_6BB7, 0x8E03_5B0F, 0x455F_88AA, 0xC3CB_FA04, 0x0897_29A1,
- 0xF9C1_9B74, 0x329D_48D1, 0xB409_3A7F, 0x7F55_E9DA, 0x6250_D962, 0xA90C_0AC7, 0x2F98_7869, 0xE4C4_ABCC,
+ 0x0000_0000, 0xCB5C_D3A5, 0x4DC8_A10B, 0x8694_72AE, 0x9B91_4216, 0x50CD_91B3, 0xD659_E31D, 0x1D05_30B8,
+ 0xEC53_826D, 0x270F_51C8, 0xA19B_2366, 0x6AC7_F0C3, 0x77C2_C07B, 0xBC9E_13DE, 0x3A0A_6170, 0xF156_B2D5,
+ 0x03D6_029B, 0xC88A_D13E, 0x4E1E_A390, 0x8542_7035, 0x9847_408D, 0x531B_9328, 0xD58F_E186, 0x1ED3_3223,
+ 0xEF85_80F6, 0x24D9_5353, 0xA24D_21FD, 0x6911_F258, 0x7414_C2E0, 0xBF48_1145, 0x39DC_63EB, 0xF280_B04E,
+ 0x07AC_0536, 0xCCF0_D693, 0x4A64_A43D, 0x8138_7798, 0x9C3D_4720, 0x5761_9485, 0xD1F5_E62B, 0x1AA9_358E,
+ 0xEBFF_875B, 0x20A3_54FE, 0xA637_2650, 0x6D6B_F5F5, 0x706E_C54D, 0xBB32_16E8, 0x3DA6_6446, 0xF6FA_B7E3,
+ 0x047A_07AD, 0xCF26_D408, 0x49B2_A6A6, 0x82EE_7503, 0x9FEB_45BB, 0x54B7_961E, 0xD223_E4B0, 0x197F_3715,
+ 0xE829_85C0, 0x2375_5665, 0xA5E1_24CB, 0x6EBD_F76E, 0x73B8_C7D6, 0xB8E4_1473, 0x3E70_66DD, 0xF52C_B578,
+ 0x0F58_0A6C, 0xC404_D9C9, 0x4290_AB67, 0x89CC_78C2, 0x94C9_487A, 0x5F95_9BDF, 0xD901_E971, 0x125D_3AD4,
+ 0xE30B_8801, 0x2857_5BA4, 0xAEC3_290A, 0x659F_FAAF, 0x789A_CA17, 0xB3C6_19B2, 0x3552_6B1C, 0xFE0E_B8B9,
+ 0x0C8E_08F7, 0xC7D2_DB52, 0x4146_A9FC, 0x8A1A_7A59, 0x971F_4AE1, 0x5C43_9944, 0xDAD7_EBEA, 0x118B_384F,
+ 0xE0DD_8A9A, 0x2B81_593F, 0xAD15_2B91, 0x6649_F834, 0x7B4C_C88C, 0xB010_1B29, 0x3684_6987, 0xFDD8_BA22,
+ 0x08F4_0F5A, 0xC3A8_DCFF, 0x453C_AE51, 0x8E60_7DF4, 0x9365_4D4C, 0x5839_9EE9, 0xDEAD_EC47, 0x15F1_3FE2,
+ 0xE4A7_8D37, 0x2FFB_5E92, 0xA96F_2C3C, 0x6233_FF99, 0x7F36_CF21, 0xB46A_1C84, 0x32FE_6E2A, 0xF9A2_BD8F,
+ 0x0B22_0DC1, 0xC07E_DE64, 0x46EA_ACCA, 0x8DB6_7F6F, 0x90B3_4FD7, 0x5BEF_9C72, 0xDD7B_EEDC, 0x1627_3D79,
+ 0xE771_8FAC, 0x2C2D_5C09, 0xAAB9_2EA7, 0x61E5_FD02, 0x7CE0_CDBA, 0xB7BC_1E1F, 0x3128_6CB1, 0xFA74_BF14,
+ 0x1EB0_14D8, 0xD5EC_C77D, 0x5378_B5D3, 0x9824_6676, 0x8521_56CE, 0x4E7D_856B, 0xC8E9_F7C5, 0x03B5_2460,
+ 0xF2E3_96B5, 0x39BF_4510, 0xBF2B_37BE, 0x7477_E41B, 0x6972_D4A3, 0xA22E_0706, 0x24BA_75A8, 0xEFE6_A60D,
+ 0x1D66_1643, 0xD63A_C5E6, 0x50AE_B748, 0x9BF2_64ED, 0x86F7_5455, 0x4DAB_87F0, 0xCB3F_F55E, 0x0063_26FB,
+ 0xF135_942E, 0x3A69_478B, 0xBCFD_3525, 0x77A1_E680, 0x6AA4_D638, 0xA1F8_059D, 0x276C_7733, 0xEC30_A496,
+ 0x191C_11EE, 0xD240_C24B, 0x54D4_B0E5, 0x9F88_6340, 0x828D_53F8, 0x49D1_805D, 0xCF45_F2F3, 0x0419_2156,
+ 0xF54F_9383, 0x3E13_4026, 0xB887_3288, 0x73DB_E12D, 0x6EDE_D195, 0xA582_0230, 0x2316_709E, 0xE84A_A33B,
+ 0x1ACA_1375, 0xD196_C0D0, 0x5702_B27E, 0x9C5E_61DB, 0x815B_5163, 0x4A07_82C6, 0xCC93_F068, 0x07CF_23CD,
+ 0xF699_9118, 0x3DC5_42BD, 0xBB51_3013, 0x700D_E3B6, 0x6D08_D30E, 0xA654_00AB, 0x20C0_7205, 0xEB9C_A1A0,
+ 0x11E8_1EB4, 0xDAB4_CD11, 0x5C20_BFBF, 0x977C_6C1A, 0x8A79_5CA2, 0x4125_8F07, 0xC7B1_FDA9, 0x0CED_2E0C,
+ 0xFDBB_9CD9, 0x36E7_4F7C, 0xB073_3DD2, 0x7B2F_EE77, 0x662A_DECF, 0xAD76_0D6A, 0x2BE2_7FC4, 0xE0BE_AC61,
+ 0x123E_1C2F, 0xD962_CF8A, 0x5FF6_BD24, 0x94AA_6E81, 0x89AF_5E39, 0x42F3_8D9C, 0xC467_FF32, 0x0F3B_2C97,
+ 0xFE6D_9E42, 0x3531_4DE7, 0xB3A5_3F49, 0x78F9_ECEC, 0x65FC_DC54, 0xAEA0_0FF1, 0x2834_7D5F, 0xE368_AEFA,
+ 0x1644_1B82, 0xDD18_C827, 0x5B8C_BA89, 0x90D0_692C, 0x8DD5_5994, 0x4689_8A31, 0xC01D_F89F, 0x0B41_2B3A,
+ 0xFA17_99EF, 0x314B_4A4A, 0xB7DF_38E4, 0x7C83_EB41, 0x6186_DBF9, 0xAADA_085C, 0x2C4E_7AF2, 0xE712_A957,
+ 0x1592_1919, 0xDECE_CABC, 0x585A_B812, 0x9306_6BB7, 0x8E03_5B0F, 0x455F_88AA, 0xC3CB_FA04, 0x0897_29A1,
+ 0xF9C1_9B74, 0x329D_48D1, 0xB409_3A7F, 0x7F55_E9DA, 0x6250_D962, 0xA90C_0AC7, 0x2F98_7869, 0xE4C4_ABCC,
],[
- 0x0000_0000, 0xA677_0BB4, 0x979F_1129, 0x31E8_1A9D, 0xF44F_2413, 0x5238_2FA7, 0x63D0_353A, 0xC5A7_3E8E,
- 0x33EF_4E67, 0x9598_45D3, 0xA470_5F4E, 0x0207_54FA, 0xC7A0_6A74, 0x61D7_61C0, 0x503F_7B5D, 0xF648_70E9,
- 0x67DE_9CCE, 0xC1A9_977A, 0xF041_8DE7, 0x5636_8653, 0x9391_B8DD, 0x35E6_B369, 0x040E_A9F4, 0xA279_A240,
- 0x5431_D2A9, 0xF246_D91D, 0xC3AE_C380, 0x65D9_C834, 0xA07E_F6BA, 0x0609_FD0E, 0x37E1_E793, 0x9196_EC27,
- 0xCFBD_399C, 0x69CA_3228, 0x5822_28B5, 0xFE55_2301, 0x3BF2_1D8F, 0x9D85_163B, 0xAC6D_0CA6, 0x0A1A_0712,
- 0xFC52_77FB, 0x5A25_7C4F, 0x6BCD_66D2, 0xCDBA_6D66, 0x081D_53E8, 0xAE6A_585C, 0x9F82_42C1, 0x39F5_4975,
- 0xA863_A552, 0x0E14_AEE6, 0x3FFC_B47B, 0x998B_BFCF, 0x5C2C_8141, 0xFA5B_8AF5, 0xCBB3_9068, 0x6DC4_9BDC,
- 0x9B8C_EB35, 0x3DFB_E081, 0x0C13_FA1C, 0xAA64_F1A8, 0x6FC3_CF26, 0xC9B4_C492, 0xF85C_DE0F, 0x5E2B_D5BB,
- 0x440B_7579, 0xE27C_7ECD, 0xD394_6450, 0x75E3_6FE4, 0xB044_516A, 0x1633_5ADE, 0x27DB_4043, 0x81AC_4BF7,
- 0x77E4_3B1E, 0xD193_30AA, 0xE07B_2A37, 0x460C_2183, 0x83AB_1F0D, 0x25DC_14B9, 0x1434_0E24, 0xB243_0590,
- 0x23D5_E9B7, 0x85A2_E203, 0xB44A_F89E, 0x123D_F32A, 0xD79A_CDA4, 0x71ED_C610, 0x4005_DC8D, 0xE672_D739,
- 0x103A_A7D0, 0xB64D_AC64, 0x87A5_B6F9, 0x21D2_BD4D, 0xE475_83C3, 0x4202_8877, 0x73EA_92EA, 0xD59D_995E,
- 0x8BB6_4CE5, 0x2DC1_4751, 0x1C29_5DCC, 0xBA5E_5678, 0x7FF9_68F6, 0xD98E_6342, 0xE866_79DF, 0x4E11_726B,
- 0xB859_0282, 0x1E2E_0936, 0x2FC6_13AB, 0x89B1_181F, 0x4C16_2691, 0xEA61_2D25, 0xDB89_37B8, 0x7DFE_3C0C,
- 0xEC68_D02B, 0x4A1F_DB9F, 0x7BF7_C102, 0xDD80_CAB6, 0x1827_F438, 0xBE50_FF8C, 0x8FB8_E511, 0x29CF_EEA5,
- 0xDF87_9E4C, 0x79F0_95F8, 0x4818_8F65, 0xEE6F_84D1, 0x2BC8_BA5F, 0x8DBF_B1EB, 0xBC57_AB76, 0x1A20_A0C2,
- 0x8816_EAF2, 0x2E61_E146, 0x1F89_FBDB, 0xB9FE_F06F, 0x7C59_CEE1, 0xDA2E_C555, 0xEBC6_DFC8, 0x4DB1_D47C,
- 0xBBF9_A495, 0x1D8E_AF21, 0x2C66_B5BC, 0x8A11_BE08, 0x4FB6_8086, 0xE9C1_8B32, 0xD829_91AF, 0x7E5E_9A1B,
- 0xEFC8_763C, 0x49BF_7D88, 0x7857_6715, 0xDE20_6CA1, 0x1B87_522F, 0xBDF0_599B, 0x8C18_4306, 0x2A6F_48B2,
- 0xDC27_385B, 0x7A50_33EF, 0x4BB8_2972, 0xEDCF_22C6, 0x2868_1C48, 0x8E1F_17FC, 0xBFF7_0D61, 0x1980_06D5,
- 0x47AB_D36E, 0xE1DC_D8DA, 0xD034_C247, 0x7643_C9F3, 0xB3E4_F77D, 0x1593_FCC9, 0x247B_E654, 0x820C_EDE0,
- 0x7444_9D09, 0xD233_96BD, 0xE3DB_8C20, 0x45AC_8794, 0x800B_B91A, 0x267C_B2AE, 0x1794_A833, 0xB1E3_A387,
- 0x2075_4FA0, 0x8602_4414, 0xB7EA_5E89, 0x119D_553D, 0xD43A_6BB3, 0x724D_6007, 0x43A5_7A9A, 0xE5D2_712E,
- 0x139A_01C7, 0xB5ED_0A73, 0x8405_10EE, 0x2272_1B5A, 0xE7D5_25D4, 0x41A2_2E60, 0x704A_34FD, 0xD63D_3F49,
- 0xCC1D_9F8B, 0x6A6A_943F, 0x5B82_8EA2, 0xFDF5_8516, 0x3852_BB98, 0x9E25_B02C, 0xAFCD_AAB1, 0x09BA_A105,
- 0xFFF2_D1EC, 0x5985_DA58, 0x686D_C0C5, 0xCE1A_CB71, 0x0BBD_F5FF, 0xADCA_FE4B, 0x9C22_E4D6, 0x3A55_EF62,
- 0xABC3_0345, 0x0DB4_08F1, 0x3C5C_126C, 0x9A2B_19D8, 0x5F8C_2756, 0xF9FB_2CE2, 0xC813_367F, 0x6E64_3DCB,
- 0x982C_4D22, 0x3E5B_4696, 0x0FB3_5C0B, 0xA9C4_57BF, 0x6C63_6931, 0xCA14_6285, 0xFBFC_7818, 0x5D8B_73AC,
- 0x03A0_A617, 0xA5D7_ADA3, 0x943F_B73E, 0x3248_BC8A, 0xF7EF_8204, 0x5198_89B0, 0x6070_932D, 0xC607_9899,
- 0x304F_E870, 0x9638_E3C4, 0xA7D0_F959, 0x01A7_F2ED, 0xC400_CC63, 0x6277_C7D7, 0x539F_DD4A, 0xF5E8_D6FE,
- 0x647E_3AD9, 0xC209_316D, 0xF3E1_2BF0, 0x5596_2044, 0x9031_1ECA, 0x3646_157E, 0x07AE_0FE3, 0xA1D9_0457,
- 0x5791_74BE, 0xF1E6_7F0A, 0xC00E_6597, 0x6679_6E23, 0xA3DE_50AD, 0x05A9_5B19, 0x3441_4184, 0x9236_4A30,
+ 0x0000_0000, 0xA677_0BB4, 0x979F_1129, 0x31E8_1A9D, 0xF44F_2413, 0x5238_2FA7, 0x63D0_353A, 0xC5A7_3E8E,
+ 0x33EF_4E67, 0x9598_45D3, 0xA470_5F4E, 0x0207_54FA, 0xC7A0_6A74, 0x61D7_61C0, 0x503F_7B5D, 0xF648_70E9,
+ 0x67DE_9CCE, 0xC1A9_977A, 0xF041_8DE7, 0x5636_8653, 0x9391_B8DD, 0x35E6_B369, 0x040E_A9F4, 0xA279_A240,
+ 0x5431_D2A9, 0xF246_D91D, 0xC3AE_C380, 0x65D9_C834, 0xA07E_F6BA, 0x0609_FD0E, 0x37E1_E793, 0x9196_EC27,
+ 0xCFBD_399C, 0x69CA_3228, 0x5822_28B5, 0xFE55_2301, 0x3BF2_1D8F, 0x9D85_163B, 0xAC6D_0CA6, 0x0A1A_0712,
+ 0xFC52_77FB, 0x5A25_7C4F, 0x6BCD_66D2, 0xCDBA_6D66, 0x081D_53E8, 0xAE6A_585C, 0x9F82_42C1, 0x39F5_4975,
+ 0xA863_A552, 0x0E14_AEE6, 0x3FFC_B47B, 0x998B_BFCF, 0x5C2C_8141, 0xFA5B_8AF5, 0xCBB3_9068, 0x6DC4_9BDC,
+ 0x9B8C_EB35, 0x3DFB_E081, 0x0C13_FA1C, 0xAA64_F1A8, 0x6FC3_CF26, 0xC9B4_C492, 0xF85C_DE0F, 0x5E2B_D5BB,
+ 0x440B_7579, 0xE27C_7ECD, 0xD394_6450, 0x75E3_6FE4, 0xB044_516A, 0x1633_5ADE, 0x27DB_4043, 0x81AC_4BF7,
+ 0x77E4_3B1E, 0xD193_30AA, 0xE07B_2A37, 0x460C_2183, 0x83AB_1F0D, 0x25DC_14B9, 0x1434_0E24, 0xB243_0590,
+ 0x23D5_E9B7, 0x85A2_E203, 0xB44A_F89E, 0x123D_F32A, 0xD79A_CDA4, 0x71ED_C610, 0x4005_DC8D, 0xE672_D739,
+ 0x103A_A7D0, 0xB64D_AC64, 0x87A5_B6F9, 0x21D2_BD4D, 0xE475_83C3, 0x4202_8877, 0x73EA_92EA, 0xD59D_995E,
+ 0x8BB6_4CE5, 0x2DC1_4751, 0x1C29_5DCC, 0xBA5E_5678, 0x7FF9_68F6, 0xD98E_6342, 0xE866_79DF, 0x4E11_726B,
+ 0xB859_0282, 0x1E2E_0936, 0x2FC6_13AB, 0x89B1_181F, 0x4C16_2691, 0xEA61_2D25, 0xDB89_37B8, 0x7DFE_3C0C,
+ 0xEC68_D02B, 0x4A1F_DB9F, 0x7BF7_C102, 0xDD80_CAB6, 0x1827_F438, 0xBE50_FF8C, 0x8FB8_E511, 0x29CF_EEA5,
+ 0xDF87_9E4C, 0x79F0_95F8, 0x4818_8F65, 0xEE6F_84D1, 0x2BC8_BA5F, 0x8DBF_B1EB, 0xBC57_AB76, 0x1A20_A0C2,
+ 0x8816_EAF2, 0x2E61_E146, 0x1F89_FBDB, 0xB9FE_F06F, 0x7C59_CEE1, 0xDA2E_C555, 0xEBC6_DFC8, 0x4DB1_D47C,
+ 0xBBF9_A495, 0x1D8E_AF21, 0x2C66_B5BC, 0x8A11_BE08, 0x4FB6_8086, 0xE9C1_8B32, 0xD829_91AF, 0x7E5E_9A1B,
+ 0xEFC8_763C, 0x49BF_7D88, 0x7857_6715, 0xDE20_6CA1, 0x1B87_522F, 0xBDF0_599B, 0x8C18_4306, 0x2A6F_48B2,
+ 0xDC27_385B, 0x7A50_33EF, 0x4BB8_2972, 0xEDCF_22C6, 0x2868_1C48, 0x8E1F_17FC, 0xBFF7_0D61, 0x1980_06D5,
+ 0x47AB_D36E, 0xE1DC_D8DA, 0xD034_C247, 0x7643_C9F3, 0xB3E4_F77D, 0x1593_FCC9, 0x247B_E654, 0x820C_EDE0,
+ 0x7444_9D09, 0xD233_96BD, 0xE3DB_8C20, 0x45AC_8794, 0x800B_B91A, 0x267C_B2AE, 0x1794_A833, 0xB1E3_A387,
+ 0x2075_4FA0, 0x8602_4414, 0xB7EA_5E89, 0x119D_553D, 0xD43A_6BB3, 0x724D_6007, 0x43A5_7A9A, 0xE5D2_712E,
+ 0x139A_01C7, 0xB5ED_0A73, 0x8405_10EE, 0x2272_1B5A, 0xE7D5_25D4, 0x41A2_2E60, 0x704A_34FD, 0xD63D_3F49,
+ 0xCC1D_9F8B, 0x6A6A_943F, 0x5B82_8EA2, 0xFDF5_8516, 0x3852_BB98, 0x9E25_B02C, 0xAFCD_AAB1, 0x09BA_A105,
+ 0xFFF2_D1EC, 0x5985_DA58, 0x686D_C0C5, 0xCE1A_CB71, 0x0BBD_F5FF, 0xADCA_FE4B, 0x9C22_E4D6, 0x3A55_EF62,
+ 0xABC3_0345, 0x0DB4_08F1, 0x3C5C_126C, 0x9A2B_19D8, 0x5F8C_2756, 0xF9FB_2CE2, 0xC813_367F, 0x6E64_3DCB,
+ 0x982C_4D22, 0x3E5B_4696, 0x0FB3_5C0B, 0xA9C4_57BF, 0x6C63_6931, 0xCA14_6285, 0xFBFC_7818, 0x5D8B_73AC,
+ 0x03A0_A617, 0xA5D7_ADA3, 0x943F_B73E, 0x3248_BC8A, 0xF7EF_8204, 0x5198_89B0, 0x6070_932D, 0xC607_9899,
+ 0x304F_E870, 0x9638_E3C4, 0xA7D0_F959, 0x01A7_F2ED, 0xC400_CC63, 0x6277_C7D7, 0x539F_DD4A, 0xF5E8_D6FE,
+ 0x647E_3AD9, 0xC209_316D, 0xF3E1_2BF0, 0x5596_2044, 0x9031_1ECA, 0x3646_157E, 0x07AE_0FE3, 0xA1D9_0457,
+ 0x5791_74BE, 0xF1E6_7F0A, 0xC00E_6597, 0x6679_6E23, 0xA3DE_50AD, 0x05A9_5B19, 0x3441_4184, 0x9236_4A30,
],[
- 0x0000_0000, 0xCCAA_009E, 0x4225_077D, 0x8E8F_07E3, 0x844A_0EFA, 0x48E0_0E64, 0xC66F_0987, 0x0AC5_0919,
- 0xD3E5_1BB5, 0x1F4F_1B2B, 0x91C0_1CC8, 0x5D6A_1C56, 0x57AF_154F, 0x9B05_15D1, 0x158A_1232, 0xD920_12AC,
- 0x7CBB_312B, 0xB011_31B5, 0x3E9E_3656, 0xF234_36C8, 0xF8F1_3FD1, 0x345B_3F4F, 0xBAD4_38AC, 0x767E_3832,
- 0xAF5E_2A9E, 0x63F4_2A00, 0xED7B_2DE3, 0x21D1_2D7D, 0x2B14_2464, 0xE7BE_24FA, 0x6931_2319, 0xA59B_2387,
- 0xF976_6256, 0x35DC_62C8, 0xBB53_652B, 0x77F9_65B5, 0x7D3C_6CAC, 0xB196_6C32, 0x3F19_6BD1, 0xF3B3_6B4F,
- 0x2A93_79E3, 0xE639_797D, 0x68B6_7E9E, 0xA41C_7E00, 0xAED9_7719, 0x6273_7787, 0xECFC_7064, 0x2056_70FA,
- 0x85CD_537D, 0x4967_53E3, 0xC7E8_5400, 0x0B42_549E, 0x0187_5D87, 0xCD2D_5D19, 0x43A2_5AFA, 0x8F08_5A64,
- 0x5628_48C8, 0x9A82_4856, 0x140D_4FB5, 0xD8A7_4F2B, 0xD262_4632, 0x1EC8_46AC, 0x9047_414F, 0x5CED_41D1,
- 0x299D_C2ED, 0xE537_C273, 0x6BB8_C590, 0xA712_C50E, 0xADD7_CC17, 0x617D_CC89, 0xEFF2_CB6A, 0x2358_CBF4,
- 0xFA78_D958, 0x36D2_D9C6, 0xB85D_DE25, 0x74F7_DEBB, 0x7E32_D7A2, 0xB298_D73C, 0x3C17_D0DF, 0xF0BD_D041,
- 0x5526_F3C6, 0x998C_F358, 0x1703_F4BB, 0xDBA9_F425, 0xD16C_FD3C, 0x1DC6_FDA2, 0x9349_FA41, 0x5FE3_FADF,
- 0x86C3_E873, 0x4A69_E8ED, 0xC4E6_EF0E, 0x084C_EF90, 0x0289_E689, 0xCE23_E617, 0x40AC_E1F4, 0x8C06_E16A,
- 0xD0EB_A0BB, 0x1C41_A025, 0x92CE_A7C6, 0x5E64_A758, 0x54A1_AE41, 0x980B_AEDF, 0x1684_A93C, 0xDA2E_A9A2,
- 0x030E_BB0E, 0xCFA4_BB90, 0x412B_BC73, 0x8D81_BCED, 0x8744_B5F4, 0x4BEE_B56A, 0xC561_B289, 0x09CB_B217,
- 0xAC50_9190, 0x60FA_910E, 0xEE75_96ED, 0x22DF_9673, 0x281A_9F6A, 0xE4B0_9FF4, 0x6A3F_9817, 0xA695_9889,
- 0x7FB5_8A25, 0xB31F_8ABB, 0x3D90_8D58, 0xF13A_8DC6, 0xFBFF_84DF, 0x3755_8441, 0xB9DA_83A2, 0x7570_833C,
- 0x533B_85DA, 0x9F91_8544, 0x111E_82A7, 0xDDB4_8239, 0xD771_8B20, 0x1BDB_8BBE, 0x9554_8C5D, 0x59FE_8CC3,
- 0x80DE_9E6F, 0x4C74_9EF1, 0xC2FB_9912, 0x0E51_998C, 0x0494_9095, 0xC83E_900B, 0x46B1_97E8, 0x8A1B_9776,
- 0x2F80_B4F1, 0xE32A_B46F, 0x6DA5_B38C, 0xA10F_B312, 0xABCA_BA0B, 0x6760_BA95, 0xE9EF_BD76, 0x2545_BDE8,
- 0xFC65_AF44, 0x30CF_AFDA, 0xBE40_A839, 0x72EA_A8A7, 0x782F_A1BE, 0xB485_A120, 0x3A0A_A6C3, 0xF6A0_A65D,
- 0xAA4D_E78C, 0x66E7_E712, 0xE868_E0F1, 0x24C2_E06F, 0x2E07_E976, 0xE2AD_E9E8, 0x6C22_EE0B, 0xA088_EE95,
- 0x79A8_FC39, 0xB502_FCA7, 0x3B8D_FB44, 0xF727_FBDA, 0xFDE2_F2C3, 0x3148_F25D, 0xBFC7_F5BE, 0x736D_F520,
- 0xD6F6_D6A7, 0x1A5C_D639, 0x94D3_D1DA, 0x5879_D144, 0x52BC_D85D, 0x9E16_D8C3, 0x1099_DF20, 0xDC33_DFBE,
- 0x0513_CD12, 0xC9B9_CD8C, 0x4736_CA6F, 0x8B9C_CAF1, 0x8159_C3E8, 0x4DF3_C376, 0xC37C_C495, 0x0FD6_C40B,
- 0x7AA6_4737, 0xB60C_47A9, 0x3883_404A, 0xF429_40D4, 0xFEEC_49CD, 0x3246_4953, 0xBCC9_4EB0, 0x7063_4E2E,
- 0xA943_5C82, 0x65E9_5C1C, 0xEB66_5BFF, 0x27CC_5B61, 0x2D09_5278, 0xE1A3_52E6, 0x6F2C_5505, 0xA386_559B,
- 0x061D_761C, 0xCAB7_7682, 0x4438_7161, 0x8892_71FF, 0x8257_78E6, 0x4EFD_7878, 0xC072_7F9B, 0x0CD8_7F05,
- 0xD5F8_6DA9, 0x1952_6D37, 0x97DD_6AD4, 0x5B77_6A4A, 0x51B2_6353, 0x9D18_63CD, 0x1397_642E, 0xDF3D_64B0,
- 0x83D0_2561, 0x4F7A_25FF, 0xC1F5_221C, 0x0D5F_2282, 0x079A_2B9B, 0xCB30_2B05, 0x45BF_2CE6, 0x8915_2C78,
- 0x5035_3ED4, 0x9C9F_3E4A, 0x1210_39A9, 0xDEBA_3937, 0xD47F_302E, 0x18D5_30B0, 0x965A_3753, 0x5AF0_37CD,
- 0xFF6B_144A, 0x33C1_14D4, 0xBD4E_1337, 0x71E4_13A9, 0x7B21_1AB0, 0xB78B_1A2E, 0x3904_1DCD, 0xF5AE_1D53,
- 0x2C8E_0FFF, 0xE024_0F61, 0x6EAB_0882, 0xA201_081C, 0xA8C4_0105, 0x646E_019B, 0xEAE1_0678, 0x264B_06E6,
+ 0x0000_0000, 0xCCAA_009E, 0x4225_077D, 0x8E8F_07E3, 0x844A_0EFA, 0x48E0_0E64, 0xC66F_0987, 0x0AC5_0919,
+ 0xD3E5_1BB5, 0x1F4F_1B2B, 0x91C0_1CC8, 0x5D6A_1C56, 0x57AF_154F, 0x9B05_15D1, 0x158A_1232, 0xD920_12AC,
+ 0x7CBB_312B, 0xB011_31B5, 0x3E9E_3656, 0xF234_36C8, 0xF8F1_3FD1, 0x345B_3F4F, 0xBAD4_38AC, 0x767E_3832,
+ 0xAF5E_2A9E, 0x63F4_2A00, 0xED7B_2DE3, 0x21D1_2D7D, 0x2B14_2464, 0xE7BE_24FA, 0x6931_2319, 0xA59B_2387,
+ 0xF976_6256, 0x35DC_62C8, 0xBB53_652B, 0x77F9_65B5, 0x7D3C_6CAC, 0xB196_6C32, 0x3F19_6BD1, 0xF3B3_6B4F,
+ 0x2A93_79E3, 0xE639_797D, 0x68B6_7E9E, 0xA41C_7E00, 0xAED9_7719, 0x6273_7787, 0xECFC_7064, 0x2056_70FA,
+ 0x85CD_537D, 0x4967_53E3, 0xC7E8_5400, 0x0B42_549E, 0x0187_5D87, 0xCD2D_5D19, 0x43A2_5AFA, 0x8F08_5A64,
+ 0x5628_48C8, 0x9A82_4856, 0x140D_4FB5, 0xD8A7_4F2B, 0xD262_4632, 0x1EC8_46AC, 0x9047_414F, 0x5CED_41D1,
+ 0x299D_C2ED, 0xE537_C273, 0x6BB8_C590, 0xA712_C50E, 0xADD7_CC17, 0x617D_CC89, 0xEFF2_CB6A, 0x2358_CBF4,
+ 0xFA78_D958, 0x36D2_D9C6, 0xB85D_DE25, 0x74F7_DEBB, 0x7E32_D7A2, 0xB298_D73C, 0x3C17_D0DF, 0xF0BD_D041,
+ 0x5526_F3C6, 0x998C_F358, 0x1703_F4BB, 0xDBA9_F425, 0xD16C_FD3C, 0x1DC6_FDA2, 0x9349_FA41, 0x5FE3_FADF,
+ 0x86C3_E873, 0x4A69_E8ED, 0xC4E6_EF0E, 0x084C_EF90, 0x0289_E689, 0xCE23_E617, 0x40AC_E1F4, 0x8C06_E16A,
+ 0xD0EB_A0BB, 0x1C41_A025, 0x92CE_A7C6, 0x5E64_A758, 0x54A1_AE41, 0x980B_AEDF, 0x1684_A93C, 0xDA2E_A9A2,
+ 0x030E_BB0E, 0xCFA4_BB90, 0x412B_BC73, 0x8D81_BCED, 0x8744_B5F4, 0x4BEE_B56A, 0xC561_B289, 0x09CB_B217,
+ 0xAC50_9190, 0x60FA_910E, 0xEE75_96ED, 0x22DF_9673, 0x281A_9F6A, 0xE4B0_9FF4, 0x6A3F_9817, 0xA695_9889,
+ 0x7FB5_8A25, 0xB31F_8ABB, 0x3D90_8D58, 0xF13A_8DC6, 0xFBFF_84DF, 0x3755_8441, 0xB9DA_83A2, 0x7570_833C,
+ 0x533B_85DA, 0x9F91_8544, 0x111E_82A7, 0xDDB4_8239, 0xD771_8B20, 0x1BDB_8BBE, 0x9554_8C5D, 0x59FE_8CC3,
+ 0x80DE_9E6F, 0x4C74_9EF1, 0xC2FB_9912, 0x0E51_998C, 0x0494_9095, 0xC83E_900B, 0x46B1_97E8, 0x8A1B_9776,
+ 0x2F80_B4F1, 0xE32A_B46F, 0x6DA5_B38C, 0xA10F_B312, 0xABCA_BA0B, 0x6760_BA95, 0xE9EF_BD76, 0x2545_BDE8,
+ 0xFC65_AF44, 0x30CF_AFDA, 0xBE40_A839, 0x72EA_A8A7, 0x782F_A1BE, 0xB485_A120, 0x3A0A_A6C3, 0xF6A0_A65D,
+ 0xAA4D_E78C, 0x66E7_E712, 0xE868_E0F1, 0x24C2_E06F, 0x2E07_E976, 0xE2AD_E9E8, 0x6C22_EE0B, 0xA088_EE95,
+ 0x79A8_FC39, 0xB502_FCA7, 0x3B8D_FB44, 0xF727_FBDA, 0xFDE2_F2C3, 0x3148_F25D, 0xBFC7_F5BE, 0x736D_F520,
+ 0xD6F6_D6A7, 0x1A5C_D639, 0x94D3_D1DA, 0x5879_D144, 0x52BC_D85D, 0x9E16_D8C3, 0x1099_DF20, 0xDC33_DFBE,
+ 0x0513_CD12, 0xC9B9_CD8C, 0x4736_CA6F, 0x8B9C_CAF1, 0x8159_C3E8, 0x4DF3_C376, 0xC37C_C495, 0x0FD6_C40B,
+ 0x7AA6_4737, 0xB60C_47A9, 0x3883_404A, 0xF429_40D4, 0xFEEC_49CD, 0x3246_4953, 0xBCC9_4EB0, 0x7063_4E2E,
+ 0xA943_5C82, 0x65E9_5C1C, 0xEB66_5BFF, 0x27CC_5B61, 0x2D09_5278, 0xE1A3_52E6, 0x6F2C_5505, 0xA386_559B,
+ 0x061D_761C, 0xCAB7_7682, 0x4438_7161, 0x8892_71FF, 0x8257_78E6, 0x4EFD_7878, 0xC072_7F9B, 0x0CD8_7F05,
+ 0xD5F8_6DA9, 0x1952_6D37, 0x97DD_6AD4, 0x5B77_6A4A, 0x51B2_6353, 0x9D18_63CD, 0x1397_642E, 0xDF3D_64B0,
+ 0x83D0_2561, 0x4F7A_25FF, 0xC1F5_221C, 0x0D5F_2282, 0x079A_2B9B, 0xCB30_2B05, 0x45BF_2CE6, 0x8915_2C78,
+ 0x5035_3ED4, 0x9C9F_3E4A, 0x1210_39A9, 0xDEBA_3937, 0xD47F_302E, 0x18D5_30B0, 0x965A_3753, 0x5AF0_37CD,
+ 0xFF6B_144A, 0x33C1_14D4, 0xBD4E_1337, 0x71E4_13A9, 0x7B21_1AB0, 0xB78B_1A2E, 0x3904_1DCD, 0xF5AE_1D53,
+ 0x2C8E_0FFF, 0xE024_0F61, 0x6EAB_0882, 0xA201_081C, 0xA8C4_0105, 0x646E_019B, 0xEAE1_0678, 0x264B_06E6,
],[
- 0x0000_0000, 0x177B_1443, 0x2EF6_2886, 0x398D_3CC5, 0x5DEC_510C, 0x4A97_454F, 0x731A_798A, 0x6461_6DC9,
- 0xBBD8_A218, 0xACA3_B65B, 0x952E_8A9E, 0x8255_9EDD, 0xE634_F314, 0xF14F_E757, 0xC8C2_DB92, 0xDFB9_CFD1,
- 0xACC0_4271, 0xBBBB_5632, 0x8236_6AF7, 0x954D_7EB4, 0xF12C_137D, 0xE657_073E, 0xDFDA_3BFB, 0xC8A1_2FB8,
- 0x1718_E069, 0x0063_F42A, 0x39EE_C8EF, 0x2E95_DCAC, 0x4AF4_B165, 0x5D8F_A526, 0x6402_99E3, 0x7379_8DA0,
- 0x82F1_82A3, 0x958A_96E0, 0xAC07_AA25, 0xBB7C_BE66, 0xDF1D_D3AF, 0xC866_C7EC, 0xF1EB_FB29, 0xE690_EF6A,
- 0x3929_20BB, 0x2E52_34F8, 0x17DF_083D, 0x00A4_1C7E, 0x64C5_71B7, 0x73BE_65F4, 0x4A33_5931, 0x5D48_4D72,
- 0x2E31_C0D2, 0x394A_D491, 0x00C7_E854, 0x17BC_FC17, 0x73DD_91DE, 0x64A6_859D, 0x5D2B_B958, 0x4A50_AD1B,
- 0x95E9_62CA, 0x8292_7689, 0xBB1F_4A4C, 0xAC64_5E0F, 0xC805_33C6, 0xDF7E_2785, 0xE6F3_1B40, 0xF188_0F03,
- 0xDE92_0307, 0xC9E9_1744, 0xF064_2B81, 0xE71F_3FC2, 0x837E_520B, 0x9405_4648, 0xAD88_7A8D, 0xBAF3_6ECE,
- 0x654A_A11F, 0x7231_B55C, 0x4BBC_8999, 0x5CC7_9DDA, 0x38A6_F013, 0x2FDD_E450, 0x1650_D895, 0x012B_CCD6,
- 0x7252_4176, 0x6529_5535, 0x5CA4_69F0, 0x4BDF_7DB3, 0x2FBE_107A, 0x38C5_0439, 0x0148_38FC, 0x1633_2CBF,
- 0xC98A_E36E, 0xDEF1_F72D, 0xE77C_CBE8, 0xF007_DFAB, 0x9466_B262, 0x831D_A621, 0xBA90_9AE4, 0xADEB_8EA7,
- 0x5C63_81A4, 0x4B18_95E7, 0x7295_A922, 0x65EE_BD61, 0x018F_D0A8, 0x16F4_C4EB, 0x2F79_F82E, 0x3802_EC6D,
- 0xE7BB_23BC, 0xF0C0_37FF, 0xC94D_0B3A, 0xDE36_1F79, 0xBA57_72B0, 0xAD2C_66F3, 0x94A1_5A36, 0x83DA_4E75,
- 0xF0A3_C3D5, 0xE7D8_D796, 0xDE55_EB53, 0xC92E_FF10, 0xAD4F_92D9, 0xBA34_869A, 0x83B9_BA5F, 0x94C2_AE1C,
- 0x4B7B_61CD, 0x5C00_758E, 0x658D_494B, 0x72F6_5D08, 0x1697_30C1, 0x01EC_2482, 0x3861_1847, 0x2F1A_0C04,
- 0x6655_004F, 0x712E_140C, 0x48A3_28C9, 0x5FD8_3C8A, 0x3BB9_5143, 0x2CC2_4500, 0x154F_79C5, 0x0234_6D86,
- 0xDD8D_A257, 0xCAF6_B614, 0xF37B_8AD1, 0xE400_9E92, 0x8061_F35B, 0x971A_E718, 0xAE97_DBDD, 0xB9EC_CF9E,
- 0xCA95_423E, 0xDDEE_567D, 0xE463_6AB8, 0xF318_7EFB, 0x9779_1332, 0x8002_0771, 0xB98F_3BB4, 0xAEF4_2FF7,
- 0x714D_E026, 0x6636_F465, 0x5FBB_C8A0, 0x48C0_DCE3, 0x2CA1_B12A, 0x3BDA_A569, 0x0257_99AC, 0x152C_8DEF,
- 0xE4A4_82EC, 0xF3DF_96AF, 0xCA52_AA6A, 0xDD29_BE29, 0xB948_D3E0, 0xAE33_C7A3, 0x97BE_FB66, 0x80C5_EF25,
- 0x5F7C_20F4, 0x4807_34B7, 0x718A_0872, 0x66F1_1C31, 0x0290_71F8, 0x15EB_65BB, 0x2C66_597E, 0x3B1D_4D3D,
- 0x4864_C09D, 0x5F1F_D4DE, 0x6692_E81B, 0x71E9_FC58, 0x1588_9191, 0x02F3_85D2, 0x3B7E_B917, 0x2C05_AD54,
- 0xF3BC_6285, 0xE4C7_76C6, 0xDD4A_4A03, 0xCA31_5E40, 0xAE50_3389, 0xB92B_27CA, 0x80A6_1B0F, 0x97DD_0F4C,
- 0xB8C7_0348, 0xAFBC_170B, 0x9631_2BCE, 0x814A_3F8D, 0xE52B_5244, 0xF250_4607, 0xCBDD_7AC2, 0xDCA6_6E81,
- 0x031F_A150, 0x1464_B513, 0x2DE9_89D6, 0x3A92_9D95, 0x5EF3_F05C, 0x4988_E41F, 0x7005_D8DA, 0x677E_CC99,
- 0x1407_4139, 0x037C_557A, 0x3AF1_69BF, 0x2D8A_7DFC, 0x49EB_1035, 0x5E90_0476, 0x671D_38B3, 0x7066_2CF0,
- 0xAFDF_E321, 0xB8A4_F762, 0x8129_CBA7, 0x9652_DFE4, 0xF233_B22D, 0xE548_A66E, 0xDCC5_9AAB, 0xCBBE_8EE8,
- 0x3A36_81EB, 0x2D4D_95A8, 0x14C0_A96D, 0x03BB_BD2E, 0x67DA_D0E7, 0x70A1_C4A4, 0x492C_F861, 0x5E57_EC22,
- 0x81EE_23F3, 0x9695_37B0, 0xAF18_0B75, 0xB863_1F36, 0xDC02_72FF, 0xCB79_66BC, 0xF2F4_5A79, 0xE58F_4E3A,
- 0x96F6_C39A, 0x818D_D7D9, 0xB800_EB1C, 0xAF7B_FF5F, 0xCB1A_9296, 0xDC61_86D5, 0xE5EC_BA10, 0xF297_AE53,
- 0x2D2E_6182, 0x3A55_75C1, 0x03D8_4904, 0x14A3_5D47, 0x70C2_308E, 0x67B9_24CD, 0x5E34_1808, 0x494F_0C4B,
+ 0x0000_0000, 0x177B_1443, 0x2EF6_2886, 0x398D_3CC5, 0x5DEC_510C, 0x4A97_454F, 0x731A_798A, 0x6461_6DC9,
+ 0xBBD8_A218, 0xACA3_B65B, 0x952E_8A9E, 0x8255_9EDD, 0xE634_F314, 0xF14F_E757, 0xC8C2_DB92, 0xDFB9_CFD1,
+ 0xACC0_4271, 0xBBBB_5632, 0x8236_6AF7, 0x954D_7EB4, 0xF12C_137D, 0xE657_073E, 0xDFDA_3BFB, 0xC8A1_2FB8,
+ 0x1718_E069, 0x0063_F42A, 0x39EE_C8EF, 0x2E95_DCAC, 0x4AF4_B165, 0x5D8F_A526, 0x6402_99E3, 0x7379_8DA0,
+ 0x82F1_82A3, 0x958A_96E0, 0xAC07_AA25, 0xBB7C_BE66, 0xDF1D_D3AF, 0xC866_C7EC, 0xF1EB_FB29, 0xE690_EF6A,
+ 0x3929_20BB, 0x2E52_34F8, 0x17DF_083D, 0x00A4_1C7E, 0x64C5_71B7, 0x73BE_65F4, 0x4A33_5931, 0x5D48_4D72,
+ 0x2E31_C0D2, 0x394A_D491, 0x00C7_E854, 0x17BC_FC17, 0x73DD_91DE, 0x64A6_859D, 0x5D2B_B958, 0x4A50_AD1B,
+ 0x95E9_62CA, 0x8292_7689, 0xBB1F_4A4C, 0xAC64_5E0F, 0xC805_33C6, 0xDF7E_2785, 0xE6F3_1B40, 0xF188_0F03,
+ 0xDE92_0307, 0xC9E9_1744, 0xF064_2B81, 0xE71F_3FC2, 0x837E_520B, 0x9405_4648, 0xAD88_7A8D, 0xBAF3_6ECE,
+ 0x654A_A11F, 0x7231_B55C, 0x4BBC_8999, 0x5CC7_9DDA, 0x38A6_F013, 0x2FDD_E450, 0x1650_D895, 0x012B_CCD6,
+ 0x7252_4176, 0x6529_5535, 0x5CA4_69F0, 0x4BDF_7DB3, 0x2FBE_107A, 0x38C5_0439, 0x0148_38FC, 0x1633_2CBF,
+ 0xC98A_E36E, 0xDEF1_F72D, 0xE77C_CBE8, 0xF007_DFAB, 0x9466_B262, 0x831D_A621, 0xBA90_9AE4, 0xADEB_8EA7,
+ 0x5C63_81A4, 0x4B18_95E7, 0x7295_A922, 0x65EE_BD61, 0x018F_D0A8, 0x16F4_C4EB, 0x2F79_F82E, 0x3802_EC6D,
+ 0xE7BB_23BC, 0xF0C0_37FF, 0xC94D_0B3A, 0xDE36_1F79, 0xBA57_72B0, 0xAD2C_66F3, 0x94A1_5A36, 0x83DA_4E75,
+ 0xF0A3_C3D5, 0xE7D8_D796, 0xDE55_EB53, 0xC92E_FF10, 0xAD4F_92D9, 0xBA34_869A, 0x83B9_BA5F, 0x94C2_AE1C,
+ 0x4B7B_61CD, 0x5C00_758E, 0x658D_494B, 0x72F6_5D08, 0x1697_30C1, 0x01EC_2482, 0x3861_1847, 0x2F1A_0C04,
+ 0x6655_004F, 0x712E_140C, 0x48A3_28C9, 0x5FD8_3C8A, 0x3BB9_5143, 0x2CC2_4500, 0x154F_79C5, 0x0234_6D86,
+ 0xDD8D_A257, 0xCAF6_B614, 0xF37B_8AD1, 0xE400_9E92, 0x8061_F35B, 0x971A_E718, 0xAE97_DBDD, 0xB9EC_CF9E,
+ 0xCA95_423E, 0xDDEE_567D, 0xE463_6AB8, 0xF318_7EFB, 0x9779_1332, 0x8002_0771, 0xB98F_3BB4, 0xAEF4_2FF7,
+ 0x714D_E026, 0x6636_F465, 0x5FBB_C8A0, 0x48C0_DCE3, 0x2CA1_B12A, 0x3BDA_A569, 0x0257_99AC, 0x152C_8DEF,
+ 0xE4A4_82EC, 0xF3DF_96AF, 0xCA52_AA6A, 0xDD29_BE29, 0xB948_D3E0, 0xAE33_C7A3, 0x97BE_FB66, 0x80C5_EF25,
+ 0x5F7C_20F4, 0x4807_34B7, 0x718A_0872, 0x66F1_1C31, 0x0290_71F8, 0x15EB_65BB, 0x2C66_597E, 0x3B1D_4D3D,
+ 0x4864_C09D, 0x5F1F_D4DE, 0x6692_E81B, 0x71E9_FC58, 0x1588_9191, 0x02F3_85D2, 0x3B7E_B917, 0x2C05_AD54,
+ 0xF3BC_6285, 0xE4C7_76C6, 0xDD4A_4A03, 0xCA31_5E40, 0xAE50_3389, 0xB92B_27CA, 0x80A6_1B0F, 0x97DD_0F4C,
+ 0xB8C7_0348, 0xAFBC_170B, 0x9631_2BCE, 0x814A_3F8D, 0xE52B_5244, 0xF250_4607, 0xCBDD_7AC2, 0xDCA6_6E81,
+ 0x031F_A150, 0x1464_B513, 0x2DE9_89D6, 0x3A92_9D95, 0x5EF3_F05C, 0x4988_E41F, 0x7005_D8DA, 0x677E_CC99,
+ 0x1407_4139, 0x037C_557A, 0x3AF1_69BF, 0x2D8A_7DFC, 0x49EB_1035, 0x5E90_0476, 0x671D_38B3, 0x7066_2CF0,
+ 0xAFDF_E321, 0xB8A4_F762, 0x8129_CBA7, 0x9652_DFE4, 0xF233_B22D, 0xE548_A66E, 0xDCC5_9AAB, 0xCBBE_8EE8,
+ 0x3A36_81EB, 0x2D4D_95A8, 0x14C0_A96D, 0x03BB_BD2E, 0x67DA_D0E7, 0x70A1_C4A4, 0x492C_F861, 0x5E57_EC22,
+ 0x81EE_23F3, 0x9695_37B0, 0xAF18_0B75, 0xB863_1F36, 0xDC02_72FF, 0xCB79_66BC, 0xF2F4_5A79, 0xE58F_4E3A,
+ 0x96F6_C39A, 0x818D_D7D9, 0xB800_EB1C, 0xAF7B_FF5F, 0xCB1A_9296, 0xDC61_86D5, 0xE5EC_BA10, 0xF297_AE53,
+ 0x2D2E_6182, 0x3A55_75C1, 0x03D8_4904, 0x14A3_5D47, 0x70C2_308E, 0x67B9_24CD, 0x5E34_1808, 0x494F_0C4B,
],[
- 0x0000_0000, 0xEFC2_6B3E, 0x04F5_D03D, 0xEB37_BB03, 0x09EB_A07A, 0xE629_CB44, 0x0D1E_7047, 0xE2DC_1B79,
- 0x13D7_40F4, 0xFC15_2BCA, 0x1722_90C9, 0xF8E0_FBF7, 0x1A3C_E08E, 0xF5FE_8BB0, 0x1EC9_30B3, 0xF10B_5B8D,
- 0x27AE_81E8, 0xC86C_EAD6, 0x235B_51D5, 0xCC99_3AEB, 0x2E45_2192, 0xC187_4AAC, 0x2AB0_F1AF, 0xC572_9A91,
- 0x3479_C11C, 0xDBBB_AA22, 0x308C_1121, 0xDF4E_7A1F, 0x3D92_6166, 0xD250_0A58, 0x3967_B15B, 0xD6A5_DA65,
- 0x4F5D_03D0, 0xA09F_68EE, 0x4BA8_D3ED, 0xA46A_B8D3, 0x46B6_A3AA, 0xA974_C894, 0x4243_7397, 0xAD81_18A9,
- 0x5C8A_4324, 0xB348_281A, 0x587F_9319, 0xB7BD_F827, 0x5561_E35E, 0xBAA3_8860, 0x5194_3363, 0xBE56_585D,
- 0x68F3_8238, 0x8731_E906, 0x6C06_5205, 0x83C4_393B, 0x6118_2242, 0x8EDA_497C, 0x65ED_F27F, 0x8A2F_9941,
- 0x7B24_C2CC, 0x94E6_A9F2, 0x7FD1_12F1, 0x9013_79CF, 0x72CF_62B6, 0x9D0D_0988, 0x763A_B28B, 0x99F8_D9B5,
- 0x9EBA_07A0, 0x7178_6C9E, 0x9A4F_D79D, 0x758D_BCA3, 0x9751_A7DA, 0x7893_CCE4, 0x93A4_77E7, 0x7C66_1CD9,
- 0x8D6D_4754, 0x62AF_2C6A, 0x8998_9769, 0x665A_FC57, 0x8486_E72E, 0x6B44_8C10, 0x8073_3713, 0x6FB1_5C2D,
- 0xB914_8648, 0x56D6_ED76, 0xBDE1_5675, 0x5223_3D4B, 0xB0FF_2632, 0x5F3D_4D0C, 0xB40A_F60F, 0x5BC8_9D31,
- 0xAAC3_C6BC, 0x4501_AD82, 0xAE36_1681, 0x41F4_7DBF, 0xA328_66C6, 0x4CEA_0DF8, 0xA7DD_B6FB, 0x481F_DDC5,
- 0xD1E7_0470, 0x3E25_6F4E, 0xD512_D44D, 0x3AD0_BF73, 0xD80C_A40A, 0x37CE_CF34, 0xDCF9_7437, 0x333B_1F09,
- 0xC230_4484, 0x2DF2_2FBA, 0xC6C5_94B9, 0x2907_FF87, 0xCBDB_E4FE, 0x2419_8FC0, 0xCF2E_34C3, 0x20EC_5FFD,
- 0xF649_8598, 0x198B_EEA6, 0xF2BC_55A5, 0x1D7E_3E9B, 0xFFA2_25E2, 0x1060_4EDC, 0xFB57_F5DF, 0x1495_9EE1,
- 0xE59E_C56C, 0x0A5C_AE52, 0xE16B_1551, 0x0EA9_7E6F, 0xEC75_6516, 0x03B7_0E28, 0xE880_B52B, 0x0742_DE15,
- 0xE605_0901, 0x09C7_623F, 0xE2F0_D93C, 0x0D32_B202, 0xEFEE_A97B, 0x002C_C245, 0xEB1B_7946, 0x04D9_1278,
- 0xF5D2_49F5, 0x1A10_22CB, 0xF127_99C8, 0x1EE5_F2F6, 0xFC39_E98F, 0x13FB_82B1, 0xF8CC_39B2, 0x170E_528C,
- 0xC1AB_88E9, 0x2E69_E3D7, 0xC55E_58D4, 0x2A9C_33EA, 0xC840_2893, 0x2782_43AD, 0xCCB5_F8AE, 0x2377_9390,
- 0xD27C_C81D, 0x3DBE_A323, 0xD689_1820, 0x394B_731E, 0xDB97_6867, 0x3455_0359, 0xDF62_B85A, 0x30A0_D364,
- 0xA958_0AD1, 0x469A_61EF, 0xADAD_DAEC, 0x426F_B1D2, 0xA0B3_AAAB, 0x4F71_C195, 0xA446_7A96, 0x4B84_11A8,
- 0xBA8F_4A25, 0x554D_211B, 0xBE7A_9A18, 0x51B8_F126, 0xB364_EA5F, 0x5CA6_8161, 0xB791_3A62, 0x5853_515C,
- 0x8EF6_8B39, 0x6134_E007, 0x8A03_5B04, 0x65C1_303A, 0x871D_2B43, 0x68DF_407D, 0x83E8_FB7E, 0x6C2A_9040,
- 0x9D21_CBCD, 0x72E3_A0F3, 0x99D4_1BF0, 0x7616_70CE, 0x94CA_6BB7, 0x7B08_0089, 0x903F_BB8A, 0x7FFD_D0B4,
- 0x78BF_0EA1, 0x977D_659F, 0x7C4A_DE9C, 0x9388_B5A2, 0x7154_AEDB, 0x9E96_C5E5, 0x75A1_7EE6, 0x9A63_15D8,
- 0x6B68_4E55, 0x84AA_256B, 0x6F9D_9E68, 0x805F_F556, 0x6283_EE2F, 0x8D41_8511, 0x6676_3E12, 0x89B4_552C,
- 0x5F11_8F49, 0xB0D3_E477, 0x5BE4_5F74, 0xB426_344A, 0x56FA_2F33, 0xB938_440D, 0x520F_FF0E, 0xBDCD_9430,
- 0x4CC6_CFBD, 0xA304_A483, 0x4833_1F80, 0xA7F1_74BE, 0x452D_6FC7, 0xAAEF_04F9, 0x41D8_BFFA, 0xAE1A_D4C4,
- 0x37E2_0D71, 0xD820_664F, 0x3317_DD4C, 0xDCD5_B672, 0x3E09_AD0B, 0xD1CB_C635, 0x3AFC_7D36, 0xD53E_1608,
- 0x2435_4D85, 0xCBF7_26BB, 0x20C0_9DB8, 0xCF02_F686, 0x2DDE_EDFF, 0xC21C_86C1, 0x292B_3DC2, 0xC6E9_56FC,
- 0x104C_8C99, 0xFF8E_E7A7, 0x14B9_5CA4, 0xFB7B_379A, 0x19A7_2CE3, 0xF665_47DD, 0x1D52_FCDE, 0xF290_97E0,
- 0x039B_CC6D, 0xEC59_A753, 0x076E_1C50, 0xE8AC_776E, 0x0A70_6C17, 0xE5B2_0729, 0x0E85_BC2A, 0xE147_D714,
+ 0x0000_0000, 0xEFC2_6B3E, 0x04F5_D03D, 0xEB37_BB03, 0x09EB_A07A, 0xE629_CB44, 0x0D1E_7047, 0xE2DC_1B79,
+ 0x13D7_40F4, 0xFC15_2BCA, 0x1722_90C9, 0xF8E0_FBF7, 0x1A3C_E08E, 0xF5FE_8BB0, 0x1EC9_30B3, 0xF10B_5B8D,
+ 0x27AE_81E8, 0xC86C_EAD6, 0x235B_51D5, 0xCC99_3AEB, 0x2E45_2192, 0xC187_4AAC, 0x2AB0_F1AF, 0xC572_9A91,
+ 0x3479_C11C, 0xDBBB_AA22, 0x308C_1121, 0xDF4E_7A1F, 0x3D92_6166, 0xD250_0A58, 0x3967_B15B, 0xD6A5_DA65,
+ 0x4F5D_03D0, 0xA09F_68EE, 0x4BA8_D3ED, 0xA46A_B8D3, 0x46B6_A3AA, 0xA974_C894, 0x4243_7397, 0xAD81_18A9,
+ 0x5C8A_4324, 0xB348_281A, 0x587F_9319, 0xB7BD_F827, 0x5561_E35E, 0xBAA3_8860, 0x5194_3363, 0xBE56_585D,
+ 0x68F3_8238, 0x8731_E906, 0x6C06_5205, 0x83C4_393B, 0x6118_2242, 0x8EDA_497C, 0x65ED_F27F, 0x8A2F_9941,
+ 0x7B24_C2CC, 0x94E6_A9F2, 0x7FD1_12F1, 0x9013_79CF, 0x72CF_62B6, 0x9D0D_0988, 0x763A_B28B, 0x99F8_D9B5,
+ 0x9EBA_07A0, 0x7178_6C9E, 0x9A4F_D79D, 0x758D_BCA3, 0x9751_A7DA, 0x7893_CCE4, 0x93A4_77E7, 0x7C66_1CD9,
+ 0x8D6D_4754, 0x62AF_2C6A, 0x8998_9769, 0x665A_FC57, 0x8486_E72E, 0x6B44_8C10, 0x8073_3713, 0x6FB1_5C2D,
+ 0xB914_8648, 0x56D6_ED76, 0xBDE1_5675, 0x5223_3D4B, 0xB0FF_2632, 0x5F3D_4D0C, 0xB40A_F60F, 0x5BC8_9D31,
+ 0xAAC3_C6BC, 0x4501_AD82, 0xAE36_1681, 0x41F4_7DBF, 0xA328_66C6, 0x4CEA_0DF8, 0xA7DD_B6FB, 0x481F_DDC5,
+ 0xD1E7_0470, 0x3E25_6F4E, 0xD512_D44D, 0x3AD0_BF73, 0xD80C_A40A, 0x37CE_CF34, 0xDCF9_7437, 0x333B_1F09,
+ 0xC230_4484, 0x2DF2_2FBA, 0xC6C5_94B9, 0x2907_FF87, 0xCBDB_E4FE, 0x2419_8FC0, 0xCF2E_34C3, 0x20EC_5FFD,
+ 0xF649_8598, 0x198B_EEA6, 0xF2BC_55A5, 0x1D7E_3E9B, 0xFFA2_25E2, 0x1060_4EDC, 0xFB57_F5DF, 0x1495_9EE1,
+ 0xE59E_C56C, 0x0A5C_AE52, 0xE16B_1551, 0x0EA9_7E6F, 0xEC75_6516, 0x03B7_0E28, 0xE880_B52B, 0x0742_DE15,
+ 0xE605_0901, 0x09C7_623F, 0xE2F0_D93C, 0x0D32_B202, 0xEFEE_A97B, 0x002C_C245, 0xEB1B_7946, 0x04D9_1278,
+ 0xF5D2_49F5, 0x1A10_22CB, 0xF127_99C8, 0x1EE5_F2F6, 0xFC39_E98F, 0x13FB_82B1, 0xF8CC_39B2, 0x170E_528C,
+ 0xC1AB_88E9, 0x2E69_E3D7, 0xC55E_58D4, 0x2A9C_33EA, 0xC840_2893, 0x2782_43AD, 0xCCB5_F8AE, 0x2377_9390,
+ 0xD27C_C81D, 0x3DBE_A323, 0xD689_1820, 0x394B_731E, 0xDB97_6867, 0x3455_0359, 0xDF62_B85A, 0x30A0_D364,
+ 0xA958_0AD1, 0x469A_61EF, 0xADAD_DAEC, 0x426F_B1D2, 0xA0B3_AAAB, 0x4F71_C195, 0xA446_7A96, 0x4B84_11A8,
+ 0xBA8F_4A25, 0x554D_211B, 0xBE7A_9A18, 0x51B8_F126, 0xB364_EA5F, 0x5CA6_8161, 0xB791_3A62, 0x5853_515C,
+ 0x8EF6_8B39, 0x6134_E007, 0x8A03_5B04, 0x65C1_303A, 0x871D_2B43, 0x68DF_407D, 0x83E8_FB7E, 0x6C2A_9040,
+ 0x9D21_CBCD, 0x72E3_A0F3, 0x99D4_1BF0, 0x7616_70CE, 0x94CA_6BB7, 0x7B08_0089, 0x903F_BB8A, 0x7FFD_D0B4,
+ 0x78BF_0EA1, 0x977D_659F, 0x7C4A_DE9C, 0x9388_B5A2, 0x7154_AEDB, 0x9E96_C5E5, 0x75A1_7EE6, 0x9A63_15D8,
+ 0x6B68_4E55, 0x84AA_256B, 0x6F9D_9E68, 0x805F_F556, 0x6283_EE2F, 0x8D41_8511, 0x6676_3E12, 0x89B4_552C,
+ 0x5F11_8F49, 0xB0D3_E477, 0x5BE4_5F74, 0xB426_344A, 0x56FA_2F33, 0xB938_440D, 0x520F_FF0E, 0xBDCD_9430,
+ 0x4CC6_CFBD, 0xA304_A483, 0x4833_1F80, 0xA7F1_74BE, 0x452D_6FC7, 0xAAEF_04F9, 0x41D8_BFFA, 0xAE1A_D4C4,
+ 0x37E2_0D71, 0xD820_664F, 0x3317_DD4C, 0xDCD5_B672, 0x3E09_AD0B, 0xD1CB_C635, 0x3AFC_7D36, 0xD53E_1608,
+ 0x2435_4D85, 0xCBF7_26BB, 0x20C0_9DB8, 0xCF02_F686, 0x2DDE_EDFF, 0xC21C_86C1, 0x292B_3DC2, 0xC6E9_56FC,
+ 0x104C_8C99, 0xFF8E_E7A7, 0x14B9_5CA4, 0xFB7B_379A, 0x19A7_2CE3, 0xF665_47DD, 0x1D52_FCDE, 0xF290_97E0,
+ 0x039B_CC6D, 0xEC59_A753, 0x076E_1C50, 0xE8AC_776E, 0x0A70_6C17, 0xE5B2_0729, 0x0E85_BC2A, 0xE147_D714,
],[
- 0x0000_0000, 0xC18E_DFC0, 0x586C_B9C1, 0x99E2_6601, 0xB0D9_7382, 0x7157_AC42, 0xE8B5_CA43, 0x293B_1583,
- 0xBAC3_E145, 0x7B4D_3E85, 0xE2AF_5884, 0x2321_8744, 0x0A1A_92C7, 0xCB94_4D07, 0x5276_2B06, 0x93F8_F4C6,
- 0xAEF6_C4CB, 0x6F78_1B0B, 0xF69A_7D0A, 0x3714_A2CA, 0x1E2F_B749, 0xDFA1_6889, 0x4643_0E88, 0x87CD_D148,
- 0x1435_258E, 0xD5BB_FA4E, 0x4C59_9C4F, 0x8DD7_438F, 0xA4EC_560C, 0x6562_89CC, 0xFC80_EFCD, 0x3D0E_300D,
- 0x869C_8FD7, 0x4712_5017, 0xDEF0_3616, 0x1F7E_E9D6, 0x3645_FC55, 0xF7CB_2395, 0x6E29_4594, 0xAFA7_9A54,
- 0x3C5F_6E92, 0xFDD1_B152, 0x6433_D753, 0xA5BD_0893, 0x8C86_1D10, 0x4D08_C2D0, 0xD4EA_A4D1, 0x1564_7B11,
- 0x286A_4B1C, 0xE9E4_94DC, 0x7006_F2DD, 0xB188_2D1D, 0x98B3_389E, 0x593D_E75E, 0xC0DF_815F, 0x0151_5E9F,
- 0x92A9_AA59, 0x5327_7599, 0xCAC5_1398, 0x0B4B_CC58, 0x2270_D9DB, 0xE3FE_061B, 0x7A1C_601A, 0xBB92_BFDA,
- 0xD648_19EF, 0x17C6_C62F, 0x8E24_A02E, 0x4FAA_7FEE, 0x6691_6A6D, 0xA71F_B5AD, 0x3EFD_D3AC, 0xFF73_0C6C,
- 0x6C8B_F8AA, 0xAD05_276A, 0x34E7_416B, 0xF569_9EAB, 0xDC52_8B28, 0x1DDC_54E8, 0x843E_32E9, 0x45B0_ED29,
- 0x78BE_DD24, 0xB930_02E4, 0x20D2_64E5, 0xE15C_BB25, 0xC867_AEA6, 0x09E9_7166, 0x900B_1767, 0x5185_C8A7,
- 0xC27D_3C61, 0x03F3_E3A1, 0x9A11_85A0, 0x5B9F_5A60, 0x72A4_4FE3, 0xB32A_9023, 0x2AC8_F622, 0xEB46_29E2,
- 0x50D4_9638, 0x915A_49F8, 0x08B8_2FF9, 0xC936_F039, 0xE00D_E5BA, 0x2183_3A7A, 0xB861_5C7B, 0x79EF_83BB,
- 0xEA17_777D, 0x2B99_A8BD, 0xB27B_CEBC, 0x73F5_117C, 0x5ACE_04FF, 0x9B40_DB3F, 0x02A2_BD3E, 0xC32C_62FE,
- 0xFE22_52F3, 0x3FAC_8D33, 0xA64E_EB32, 0x67C0_34F2, 0x4EFB_2171, 0x8F75_FEB1, 0x1697_98B0, 0xD719_4770,
- 0x44E1_B3B6, 0x856F_6C76, 0x1C8D_0A77, 0xDD03_D5B7, 0xF438_C034, 0x35B6_1FF4, 0xAC54_79F5, 0x6DDA_A635,
- 0x77E1_359F, 0xB66F_EA5F, 0x2F8D_8C5E, 0xEE03_539E, 0xC738_461D, 0x06B6_99DD, 0x9F54_FFDC, 0x5EDA_201C,
- 0xCD22_D4DA, 0x0CAC_0B1A, 0x954E_6D1B, 0x54C0_B2DB, 0x7DFB_A758, 0xBC75_7898, 0x2597_1E99, 0xE419_C159,
- 0xD917_F154, 0x1899_2E94, 0x817B_4895, 0x40F5_9755, 0x69CE_82D6, 0xA840_5D16, 0x31A2_3B17, 0xF02C_E4D7,
- 0x63D4_1011, 0xA25A_CFD1, 0x3BB8_A9D0, 0xFA36_7610, 0xD30D_6393, 0x1283_BC53, 0x8B61_DA52, 0x4AEF_0592,
- 0xF17D_BA48, 0x30F3_6588, 0xA911_0389, 0x689F_DC49, 0x41A4_C9CA, 0x802A_160A, 0x19C8_700B, 0xD846_AFCB,
- 0x4BBE_5B0D, 0x8A30_84CD, 0x13D2_E2CC, 0xD25C_3D0C, 0xFB67_288F, 0x3AE9_F74F, 0xA30B_914E, 0x6285_4E8E,
- 0x5F8B_7E83, 0x9E05_A143, 0x07E7_C742, 0xC669_1882, 0xEF52_0D01, 0x2EDC_D2C1, 0xB73E_B4C0, 0x76B0_6B00,
- 0xE548_9FC6, 0x24C6_4006, 0xBD24_2607, 0x7CAA_F9C7, 0x5591_EC44, 0x941F_3384, 0x0DFD_5585, 0xCC73_8A45,
- 0xA1A9_2C70, 0x6027_F3B0, 0xF9C5_95B1, 0x384B_4A71, 0x1170_5FF2, 0xD0FE_8032, 0x491C_E633, 0x8892_39F3,
- 0x1B6A_CD35, 0xDAE4_12F5, 0x4306_74F4, 0x8288_AB34, 0xABB3_BEB7, 0x6A3D_6177, 0xF3DF_0776, 0x3251_D8B6,
- 0x0F5F_E8BB, 0xCED1_377B, 0x5733_517A, 0x96BD_8EBA, 0xBF86_9B39, 0x7E08_44F9, 0xE7EA_22F8, 0x2664_FD38,
- 0xB59C_09FE, 0x7412_D63E, 0xEDF0_B03F, 0x2C7E_6FFF, 0x0545_7A7C, 0xC4CB_A5BC, 0x5D29_C3BD, 0x9CA7_1C7D,
- 0x2735_A3A7, 0xE6BB_7C67, 0x7F59_1A66, 0xBED7_C5A6, 0x97EC_D025, 0x5662_0FE5, 0xCF80_69E4, 0x0E0E_B624,
- 0x9DF6_42E2, 0x5C78_9D22, 0xC59A_FB23, 0x0414_24E3, 0x2D2F_3160, 0xECA1_EEA0, 0x7543_88A1, 0xB4CD_5761,
- 0x89C3_676C, 0x484D_B8AC, 0xD1AF_DEAD, 0x1021_016D, 0x391A_14EE, 0xF894_CB2E, 0x6176_AD2F, 0xA0F8_72EF,
- 0x3300_8629, 0xF28E_59E9, 0x6B6C_3FE8, 0xAAE2_E028, 0x83D9_F5AB, 0x4257_2A6B, 0xDBB5_4C6A, 0x1A3B_93AA,
+ 0x0000_0000, 0xC18E_DFC0, 0x586C_B9C1, 0x99E2_6601, 0xB0D9_7382, 0x7157_AC42, 0xE8B5_CA43, 0x293B_1583,
+ 0xBAC3_E145, 0x7B4D_3E85, 0xE2AF_5884, 0x2321_8744, 0x0A1A_92C7, 0xCB94_4D07, 0x5276_2B06, 0x93F8_F4C6,
+ 0xAEF6_C4CB, 0x6F78_1B0B, 0xF69A_7D0A, 0x3714_A2CA, 0x1E2F_B749, 0xDFA1_6889, 0x4643_0E88, 0x87CD_D148,
+ 0x1435_258E, 0xD5BB_FA4E, 0x4C59_9C4F, 0x8DD7_438F, 0xA4EC_560C, 0x6562_89CC, 0xFC80_EFCD, 0x3D0E_300D,
+ 0x869C_8FD7, 0x4712_5017, 0xDEF0_3616, 0x1F7E_E9D6, 0x3645_FC55, 0xF7CB_2395, 0x6E29_4594, 0xAFA7_9A54,
+ 0x3C5F_6E92, 0xFDD1_B152, 0x6433_D753, 0xA5BD_0893, 0x8C86_1D10, 0x4D08_C2D0, 0xD4EA_A4D1, 0x1564_7B11,
+ 0x286A_4B1C, 0xE9E4_94DC, 0x7006_F2DD, 0xB188_2D1D, 0x98B3_389E, 0x593D_E75E, 0xC0DF_815F, 0x0151_5E9F,
+ 0x92A9_AA59, 0x5327_7599, 0xCAC5_1398, 0x0B4B_CC58, 0x2270_D9DB, 0xE3FE_061B, 0x7A1C_601A, 0xBB92_BFDA,
+ 0xD648_19EF, 0x17C6_C62F, 0x8E24_A02E, 0x4FAA_7FEE, 0x6691_6A6D, 0xA71F_B5AD, 0x3EFD_D3AC, 0xFF73_0C6C,
+ 0x6C8B_F8AA, 0xAD05_276A, 0x34E7_416B, 0xF569_9EAB, 0xDC52_8B28, 0x1DDC_54E8, 0x843E_32E9, 0x45B0_ED29,
+ 0x78BE_DD24, 0xB930_02E4, 0x20D2_64E5, 0xE15C_BB25, 0xC867_AEA6, 0x09E9_7166, 0x900B_1767, 0x5185_C8A7,
+ 0xC27D_3C61, 0x03F3_E3A1, 0x9A11_85A0, 0x5B9F_5A60, 0x72A4_4FE3, 0xB32A_9023, 0x2AC8_F622, 0xEB46_29E2,
+ 0x50D4_9638, 0x915A_49F8, 0x08B8_2FF9, 0xC936_F039, 0xE00D_E5BA, 0x2183_3A7A, 0xB861_5C7B, 0x79EF_83BB,
+ 0xEA17_777D, 0x2B99_A8BD, 0xB27B_CEBC, 0x73F5_117C, 0x5ACE_04FF, 0x9B40_DB3F, 0x02A2_BD3E, 0xC32C_62FE,
+ 0xFE22_52F3, 0x3FAC_8D33, 0xA64E_EB32, 0x67C0_34F2, 0x4EFB_2171, 0x8F75_FEB1, 0x1697_98B0, 0xD719_4770,
+ 0x44E1_B3B6, 0x856F_6C76, 0x1C8D_0A77, 0xDD03_D5B7, 0xF438_C034, 0x35B6_1FF4, 0xAC54_79F5, 0x6DDA_A635,
+ 0x77E1_359F, 0xB66F_EA5F, 0x2F8D_8C5E, 0xEE03_539E, 0xC738_461D, 0x06B6_99DD, 0x9F54_FFDC, 0x5EDA_201C,
+ 0xCD22_D4DA, 0x0CAC_0B1A, 0x954E_6D1B, 0x54C0_B2DB, 0x7DFB_A758, 0xBC75_7898, 0x2597_1E99, 0xE419_C159,
+ 0xD917_F154, 0x1899_2E94, 0x817B_4895, 0x40F5_9755, 0x69CE_82D6, 0xA840_5D16, 0x31A2_3B17, 0xF02C_E4D7,
+ 0x63D4_1011, 0xA25A_CFD1, 0x3BB8_A9D0, 0xFA36_7610, 0xD30D_6393, 0x1283_BC53, 0x8B61_DA52, 0x4AEF_0592,
+ 0xF17D_BA48, 0x30F3_6588, 0xA911_0389, 0x689F_DC49, 0x41A4_C9CA, 0x802A_160A, 0x19C8_700B, 0xD846_AFCB,
+ 0x4BBE_5B0D, 0x8A30_84CD, 0x13D2_E2CC, 0xD25C_3D0C, 0xFB67_288F, 0x3AE9_F74F, 0xA30B_914E, 0x6285_4E8E,
+ 0x5F8B_7E83, 0x9E05_A143, 0x07E7_C742, 0xC669_1882, 0xEF52_0D01, 0x2EDC_D2C1, 0xB73E_B4C0, 0x76B0_6B00,
+ 0xE548_9FC6, 0x24C6_4006, 0xBD24_2607, 0x7CAA_F9C7, 0x5591_EC44, 0x941F_3384, 0x0DFD_5585, 0xCC73_8A45,
+ 0xA1A9_2C70, 0x6027_F3B0, 0xF9C5_95B1, 0x384B_4A71, 0x1170_5FF2, 0xD0FE_8032, 0x491C_E633, 0x8892_39F3,
+ 0x1B6A_CD35, 0xDAE4_12F5, 0x4306_74F4, 0x8288_AB34, 0xABB3_BEB7, 0x6A3D_6177, 0xF3DF_0776, 0x3251_D8B6,
+ 0x0F5F_E8BB, 0xCED1_377B, 0x5733_517A, 0x96BD_8EBA, 0xBF86_9B39, 0x7E08_44F9, 0xE7EA_22F8, 0x2664_FD38,
+ 0xB59C_09FE, 0x7412_D63E, 0xEDF0_B03F, 0x2C7E_6FFF, 0x0545_7A7C, 0xC4CB_A5BC, 0x5D29_C3BD, 0x9CA7_1C7D,
+ 0x2735_A3A7, 0xE6BB_7C67, 0x7F59_1A66, 0xBED7_C5A6, 0x97EC_D025, 0x5662_0FE5, 0xCF80_69E4, 0x0E0E_B624,
+ 0x9DF6_42E2, 0x5C78_9D22, 0xC59A_FB23, 0x0414_24E3, 0x2D2F_3160, 0xECA1_EEA0, 0x7543_88A1, 0xB4CD_5761,
+ 0x89C3_676C, 0x484D_B8AC, 0xD1AF_DEAD, 0x1021_016D, 0x391A_14EE, 0xF894_CB2E, 0x6176_AD2F, 0xA0F8_72EF,
+ 0x3300_8629, 0xF28E_59E9, 0x6B6C_3FE8, 0xAAE2_E028, 0x83D9_F5AB, 0x4257_2A6B, 0xDBB5_4C6A, 0x1A3B_93AA,
],[
- 0x0000_0000, 0x9BA5_4C6F, 0xEC3B_9E9F, 0x779E_D2F0, 0x0306_3B7F, 0x98A3_7710, 0xEF3D_A5E0, 0x7498_E98F,
- 0x060C_76FE, 0x9DA9_3A91, 0xEA37_E861, 0x7192_A40E, 0x050A_4D81, 0x9EAF_01EE, 0xE931_D31E, 0x7294_9F71,
- 0x0C18_EDFC, 0x97BD_A193, 0xE023_7363, 0x7B86_3F0C, 0x0F1E_D683, 0x94BB_9AEC, 0xE325_481C, 0x7880_0473,
- 0x0A14_9B02, 0x91B1_D76D, 0xE62F_059D, 0x7D8A_49F2, 0x0912_A07D, 0x92B7_EC12, 0xE529_3EE2, 0x7E8C_728D,
- 0x1831_DBF8, 0x8394_9797, 0xF40A_4567, 0x6FAF_0908, 0x1B37_E087, 0x8092_ACE8, 0xF70C_7E18, 0x6CA9_3277,
- 0x1E3D_AD06, 0x8598_E169, 0xF206_3399, 0x69A3_7FF6, 0x1D3B_9679, 0x869E_DA16, 0xF100_08E6, 0x6AA5_4489,
- 0x1429_3604, 0x8F8C_7A6B, 0xF812_A89B, 0x63B7_E4F4, 0x172F_0D7B, 0x8C8A_4114, 0xFB14_93E4, 0x60B1_DF8B,
- 0x1225_40FA, 0x8980_0C95, 0xFE1E_DE65, 0x65BB_920A, 0x1123_7B85, 0x8A86_37EA, 0xFD18_E51A, 0x66BD_A975,
- 0x3063_B7F0, 0xABC6_FB9F, 0xDC58_296F, 0x47FD_6500, 0x3365_8C8F, 0xA8C0_C0E0, 0xDF5E_1210, 0x44FB_5E7F,
- 0x366F_C10E, 0xADCA_8D61, 0xDA54_5F91, 0x41F1_13FE, 0x3569_FA71, 0xAECC_B61E, 0xD952_64EE, 0x42F7_2881,
- 0x3C7B_5A0C, 0xA7DE_1663, 0xD040_C493, 0x4BE5_88FC, 0x3F7D_6173, 0xA4D8_2D1C, 0xD346_FFEC, 0x48E3_B383,
- 0x3A77_2CF2, 0xA1D2_609D, 0xD64C_B26D, 0x4DE9_FE02, 0x3971_178D, 0xA2D4_5BE2, 0xD54A_8912, 0x4EEF_C57D,
- 0x2852_6C08, 0xB3F7_2067, 0xC469_F297, 0x5FCC_BEF8, 0x2B54_5777, 0xB0F1_1B18, 0xC76F_C9E8, 0x5CCA_8587,
- 0x2E5E_1AF6, 0xB5FB_5699, 0xC265_8469, 0x59C0_C806, 0x2D58_2189, 0xB6FD_6DE6, 0xC163_BF16, 0x5AC6_F379,
- 0x244A_81F4, 0xBFEF_CD9B, 0xC871_1F6B, 0x53D4_5304, 0x274C_BA8B, 0xBCE9_F6E4, 0xCB77_2414, 0x50D2_687B,
- 0x2246_F70A, 0xB9E3_BB65, 0xCE7D_6995, 0x55D8_25FA, 0x2140_CC75, 0xBAE5_801A, 0xCD7B_52EA, 0x56DE_1E85,
- 0x60C7_6FE0, 0xFB62_238F, 0x8CFC_F17F, 0x1759_BD10, 0x63C1_549F, 0xF864_18F0, 0x8FFA_CA00, 0x145F_866F,
- 0x66CB_191E, 0xFD6E_5571, 0x8AF0_8781, 0x1155_CBEE, 0x65CD_2261, 0xFE68_6E0E, 0x89F6_BCFE, 0x1253_F091,
- 0x6CDF_821C, 0xF77A_CE73, 0x80E4_1C83, 0x1B41_50EC, 0x6FD9_B963, 0xF47C_F50C, 0x83E2_27FC, 0x1847_6B93,
- 0x6AD3_F4E2, 0xF176_B88D, 0x86E8_6A7D, 0x1D4D_2612, 0x69D5_CF9D, 0xF270_83F2, 0x85EE_5102, 0x1E4B_1D6D,
- 0x78F6_B418, 0xE353_F877, 0x94CD_2A87, 0x0F68_66E8, 0x7BF0_8F67, 0xE055_C308, 0x97CB_11F8, 0x0C6E_5D97,
- 0x7EFA_C2E6, 0xE55F_8E89, 0x92C1_5C79, 0x0964_1016, 0x7DFC_F999, 0xE659_B5F6, 0x91C7_6706, 0x0A62_2B69,
- 0x74EE_59E4, 0xEF4B_158B, 0x98D5_C77B, 0x0370_8B14, 0x77E8_629B, 0xEC4D_2EF4, 0x9BD3_FC04, 0x0076_B06B,
- 0x72E2_2F1A, 0xE947_6375, 0x9ED9_B185, 0x057C_FDEA, 0x71E4_1465, 0xEA41_580A, 0x9DDF_8AFA, 0x067A_C695,
- 0x50A4_D810, 0xCB01_947F, 0xBC9F_468F, 0x273A_0AE0, 0x53A2_E36F, 0xC807_AF00, 0xBF99_7DF0, 0x243C_319F,
- 0x56A8_AEEE, 0xCD0D_E281, 0xBA93_3071, 0x2136_7C1E, 0x55AE_9591, 0xCE0B_D9FE, 0xB995_0B0E, 0x2230_4761,
- 0x5CBC_35EC, 0xC719_7983, 0xB087_AB73, 0x2B22_E71C, 0x5FBA_0E93, 0xC41F_42FC, 0xB381_900C, 0x2824_DC63,
- 0x5AB0_4312, 0xC115_0F7D, 0xB68B_DD8D, 0x2D2E_91E2, 0x59B6_786D, 0xC213_3402, 0xB58D_E6F2, 0x2E28_AA9D,
- 0x4895_03E8, 0xD330_4F87, 0xA4AE_9D77, 0x3F0B_D118, 0x4B93_3897, 0xD036_74F8, 0xA7A8_A608, 0x3C0D_EA67,
- 0x4E99_7516, 0xD53C_3979, 0xA2A2_EB89, 0x3907_A7E6, 0x4D9F_4E69, 0xD63A_0206, 0xA1A4_D0F6, 0x3A01_9C99,
- 0x448D_EE14, 0xDF28_A27B, 0xA8B6_708B, 0x3313_3CE4, 0x478B_D56B, 0xDC2E_9904, 0xABB0_4BF4, 0x3015_079B,
- 0x4281_98EA, 0xD924_D485, 0xAEBA_0675, 0x351F_4A1A, 0x4187_A395, 0xDA22_EFFA, 0xADBC_3D0A, 0x3619_7165,
+ 0x0000_0000, 0x9BA5_4C6F, 0xEC3B_9E9F, 0x779E_D2F0, 0x0306_3B7F, 0x98A3_7710, 0xEF3D_A5E0, 0x7498_E98F,
+ 0x060C_76FE, 0x9DA9_3A91, 0xEA37_E861, 0x7192_A40E, 0x050A_4D81, 0x9EAF_01EE, 0xE931_D31E, 0x7294_9F71,
+ 0x0C18_EDFC, 0x97BD_A193, 0xE023_7363, 0x7B86_3F0C, 0x0F1E_D683, 0x94BB_9AEC, 0xE325_481C, 0x7880_0473,
+ 0x0A14_9B02, 0x91B1_D76D, 0xE62F_059D, 0x7D8A_49F2, 0x0912_A07D, 0x92B7_EC12, 0xE529_3EE2, 0x7E8C_728D,
+ 0x1831_DBF8, 0x8394_9797, 0xF40A_4567, 0x6FAF_0908, 0x1B37_E087, 0x8092_ACE8, 0xF70C_7E18, 0x6CA9_3277,
+ 0x1E3D_AD06, 0x8598_E169, 0xF206_3399, 0x69A3_7FF6, 0x1D3B_9679, 0x869E_DA16, 0xF100_08E6, 0x6AA5_4489,
+ 0x1429_3604, 0x8F8C_7A6B, 0xF812_A89B, 0x63B7_E4F4, 0x172F_0D7B, 0x8C8A_4114, 0xFB14_93E4, 0x60B1_DF8B,
+ 0x1225_40FA, 0x8980_0C95, 0xFE1E_DE65, 0x65BB_920A, 0x1123_7B85, 0x8A86_37EA, 0xFD18_E51A, 0x66BD_A975,
+ 0x3063_B7F0, 0xABC6_FB9F, 0xDC58_296F, 0x47FD_6500, 0x3365_8C8F, 0xA8C0_C0E0, 0xDF5E_1210, 0x44FB_5E7F,
+ 0x366F_C10E, 0xADCA_8D61, 0xDA54_5F91, 0x41F1_13FE, 0x3569_FA71, 0xAECC_B61E, 0xD952_64EE, 0x42F7_2881,
+ 0x3C7B_5A0C, 0xA7DE_1663, 0xD040_C493, 0x4BE5_88FC, 0x3F7D_6173, 0xA4D8_2D1C, 0xD346_FFEC, 0x48E3_B383,
+ 0x3A77_2CF2, 0xA1D2_609D, 0xD64C_B26D, 0x4DE9_FE02, 0x3971_178D, 0xA2D4_5BE2, 0xD54A_8912, 0x4EEF_C57D,
+ 0x2852_6C08, 0xB3F7_2067, 0xC469_F297, 0x5FCC_BEF8, 0x2B54_5777, 0xB0F1_1B18, 0xC76F_C9E8, 0x5CCA_8587,
+ 0x2E5E_1AF6, 0xB5FB_5699, 0xC265_8469, 0x59C0_C806, 0x2D58_2189, 0xB6FD_6DE6, 0xC163_BF16, 0x5AC6_F379,
+ 0x244A_81F4, 0xBFEF_CD9B, 0xC871_1F6B, 0x53D4_5304, 0x274C_BA8B, 0xBCE9_F6E4, 0xCB77_2414, 0x50D2_687B,
+ 0x2246_F70A, 0xB9E3_BB65, 0xCE7D_6995, 0x55D8_25FA, 0x2140_CC75, 0xBAE5_801A, 0xCD7B_52EA, 0x56DE_1E85,
+ 0x60C7_6FE0, 0xFB62_238F, 0x8CFC_F17F, 0x1759_BD10, 0x63C1_549F, 0xF864_18F0, 0x8FFA_CA00, 0x145F_866F,
+ 0x66CB_191E, 0xFD6E_5571, 0x8AF0_8781, 0x1155_CBEE, 0x65CD_2261, 0xFE68_6E0E, 0x89F6_BCFE, 0x1253_F091,
+ 0x6CDF_821C, 0xF77A_CE73, 0x80E4_1C83, 0x1B41_50EC, 0x6FD9_B963, 0xF47C_F50C, 0x83E2_27FC, 0x1847_6B93,
+ 0x6AD3_F4E2, 0xF176_B88D, 0x86E8_6A7D, 0x1D4D_2612, 0x69D5_CF9D, 0xF270_83F2, 0x85EE_5102, 0x1E4B_1D6D,
+ 0x78F6_B418, 0xE353_F877, 0x94CD_2A87, 0x0F68_66E8, 0x7BF0_8F67, 0xE055_C308, 0x97CB_11F8, 0x0C6E_5D97,
+ 0x7EFA_C2E6, 0xE55F_8E89, 0x92C1_5C79, 0x0964_1016, 0x7DFC_F999, 0xE659_B5F6, 0x91C7_6706, 0x0A62_2B69,
+ 0x74EE_59E4, 0xEF4B_158B, 0x98D5_C77B, 0x0370_8B14, 0x77E8_629B, 0xEC4D_2EF4, 0x9BD3_FC04, 0x0076_B06B,
+ 0x72E2_2F1A, 0xE947_6375, 0x9ED9_B185, 0x057C_FDEA, 0x71E4_1465, 0xEA41_580A, 0x9DDF_8AFA, 0x067A_C695,
+ 0x50A4_D810, 0xCB01_947F, 0xBC9F_468F, 0x273A_0AE0, 0x53A2_E36F, 0xC807_AF00, 0xBF99_7DF0, 0x243C_319F,
+ 0x56A8_AEEE, 0xCD0D_E281, 0xBA93_3071, 0x2136_7C1E, 0x55AE_9591, 0xCE0B_D9FE, 0xB995_0B0E, 0x2230_4761,
+ 0x5CBC_35EC, 0xC719_7983, 0xB087_AB73, 0x2B22_E71C, 0x5FBA_0E93, 0xC41F_42FC, 0xB381_900C, 0x2824_DC63,
+ 0x5AB0_4312, 0xC115_0F7D, 0xB68B_DD8D, 0x2D2E_91E2, 0x59B6_786D, 0xC213_3402, 0xB58D_E6F2, 0x2E28_AA9D,
+ 0x4895_03E8, 0xD330_4F87, 0xA4AE_9D77, 0x3F0B_D118, 0x4B93_3897, 0xD036_74F8, 0xA7A8_A608, 0x3C0D_EA67,
+ 0x4E99_7516, 0xD53C_3979, 0xA2A2_EB89, 0x3907_A7E6, 0x4D9F_4E69, 0xD63A_0206, 0xA1A4_D0F6, 0x3A01_9C99,
+ 0x448D_EE14, 0xDF28_A27B, 0xA8B6_708B, 0x3313_3CE4, 0x478B_D56B, 0xDC2E_9904, 0xABB0_4BF4, 0x3015_079B,
+ 0x4281_98EA, 0xD924_D485, 0xAEBA_0675, 0x351F_4A1A, 0x4187_A395, 0xDA22_EFFA, 0xADBC_3D0A, 0x3619_7165,
],[
- 0x0000_0000, 0xDD96_D985, 0x605C_B54B, 0xBDCA_6CCE, 0xC0B9_6A96, 0x1D2F_B313, 0xA0E5_DFDD, 0x7D73_0658,
- 0x5A03_D36D, 0x8795_0AE8, 0x3A5F_6626, 0xE7C9_BFA3, 0x9ABA_B9FB, 0x472C_607E, 0xFAE6_0CB0, 0x2770_D535,
- 0xB407_A6DA, 0x6991_7F5F, 0xD45B_1391, 0x09CD_CA14, 0x74BE_CC4C, 0xA928_15C9, 0x14E2_7907, 0xC974_A082,
- 0xEE04_75B7, 0x3392_AC32, 0x8E58_C0FC, 0x53CE_1979, 0x2EBD_1F21, 0xF32B_C6A4, 0x4EE1_AA6A, 0x9377_73EF,
- 0xB37E_4BF5, 0x6EE8_9270, 0xD322_FEBE, 0x0EB4_273B, 0x73C7_2163, 0xAE51_F8E6, 0x139B_9428, 0xCE0D_4DAD,
- 0xE97D_9898, 0x34EB_411D, 0x8921_2DD3, 0x54B7_F456, 0x29C4_F20E, 0xF452_2B8B, 0x4998_4745, 0x940E_9EC0,
- 0x0779_ED2F, 0xDAEF_34AA, 0x6725_5864, 0xBAB3_81E1, 0xC7C0_87B9, 0x1A56_5E3C, 0xA79C_32F2, 0x7A0A_EB77,
- 0x5D7A_3E42, 0x80EC_E7C7, 0x3D26_8B09, 0xE0B0_528C, 0x9DC3_54D4, 0x4055_8D51, 0xFD9F_E19F, 0x2009_381A,
- 0xBD8D_91AB, 0x601B_482E, 0xDDD1_24E0, 0x0047_FD65, 0x7D34_FB3D, 0xA0A2_22B8, 0x1D68_4E76, 0xC0FE_97F3,
- 0xE78E_42C6, 0x3A18_9B43, 0x87D2_F78D, 0x5A44_2E08, 0x2737_2850, 0xFAA1_F1D5, 0x476B_9D1B, 0x9AFD_449E,
- 0x098A_3771, 0xD41C_EEF4, 0x69D6_823A, 0xB440_5BBF, 0xC933_5DE7, 0x14A5_8462, 0xA96F_E8AC, 0x74F9_3129,
- 0x5389_E41C, 0x8E1F_3D99, 0x33D5_5157, 0xEE43_88D2, 0x9330_8E8A, 0x4EA6_570F, 0xF36C_3BC1, 0x2EFA_E244,
- 0x0EF3_DA5E, 0xD365_03DB, 0x6EAF_6F15, 0xB339_B690, 0xCE4A_B0C8, 0x13DC_694D, 0xAE16_0583, 0x7380_DC06,
- 0x54F0_0933, 0x8966_D0B6, 0x34AC_BC78, 0xE93A_65FD, 0x9449_63A5, 0x49DF_BA20, 0xF415_D6EE, 0x2983_0F6B,
- 0xBAF4_7C84, 0x6762_A501, 0xDAA8_C9CF, 0x073E_104A, 0x7A4D_1612, 0xA7DB_CF97, 0x1A11_A359, 0xC787_7ADC,
- 0xE0F7_AFE9, 0x3D61_766C, 0x80AB_1AA2, 0x5D3D_C327, 0x204E_C57F, 0xFDD8_1CFA, 0x4012_7034, 0x9D84_A9B1,
- 0xA06A_2517, 0x7DFC_FC92, 0xC036_905C, 0x1DA0_49D9, 0x60D3_4F81, 0xBD45_9604, 0x008F_FACA, 0xDD19_234F,
- 0xFA69_F67A, 0x27FF_2FFF, 0x9A35_4331, 0x47A3_9AB4, 0x3AD0_9CEC, 0xE746_4569, 0x5A8C_29A7, 0x871A_F022,
- 0x146D_83CD, 0xC9FB_5A48, 0x7431_3686, 0xA9A7_EF03, 0xD4D4_E95B, 0x0942_30DE, 0xB488_5C10, 0x691E_8595,
- 0x4E6E_50A0, 0x93F8_8925, 0x2E32_E5EB, 0xF3A4_3C6E, 0x8ED7_3A36, 0x5341_E3B3, 0xEE8B_8F7D, 0x331D_56F8,
- 0x1314_6EE2, 0xCE82_B767, 0x7348_DBA9, 0xAEDE_022C, 0xD3AD_0474, 0x0E3B_DDF1, 0xB3F1_B13F, 0x6E67_68BA,
- 0x4917_BD8F, 0x9481_640A, 0x294B_08C4, 0xF4DD_D141, 0x89AE_D719, 0x5438_0E9C, 0xE9F2_6252, 0x3464_BBD7,
- 0xA713_C838, 0x7A85_11BD, 0xC74F_7D73, 0x1AD9_A4F6, 0x67AA_A2AE, 0xBA3C_7B2B, 0x07F6_17E5, 0xDA60_CE60,
- 0xFD10_1B55, 0x2086_C2D0, 0x9D4C_AE1E, 0x40DA_779B, 0x3DA9_71C3, 0xE03F_A846, 0x5DF5_C488, 0x8063_1D0D,
- 0x1DE7_B4BC, 0xC071_6D39, 0x7DBB_01F7, 0xA02D_D872, 0xDD5E_DE2A, 0x00C8_07AF, 0xBD02_6B61, 0x6094_B2E4,
- 0x47E4_67D1, 0x9A72_BE54, 0x27B8_D29A, 0xFA2E_0B1F, 0x875D_0D47, 0x5ACB_D4C2, 0xE701_B80C, 0x3A97_6189,
- 0xA9E0_1266, 0x7476_CBE3, 0xC9BC_A72D, 0x142A_7EA8, 0x6959_78F0, 0xB4CF_A175, 0x0905_CDBB, 0xD493_143E,
- 0xF3E3_C10B, 0x2E75_188E, 0x93BF_7440, 0x4E29_ADC5, 0x335A_AB9D, 0xEECC_7218, 0x5306_1ED6, 0x8E90_C753,
- 0xAE99_FF49, 0x730F_26CC, 0xCEC5_4A02, 0x1353_9387, 0x6E20_95DF, 0xB3B6_4C5A, 0x0E7C_2094, 0xD3EA_F911,
- 0xF49A_2C24, 0x290C_F5A1, 0x94C6_996F, 0x4950_40EA, 0x3423_46B2, 0xE9B5_9F37, 0x547F_F3F9, 0x89E9_2A7C,
- 0x1A9E_5993, 0xC708_8016, 0x7AC2_ECD8, 0xA754_355D, 0xDA27_3305, 0x07B1_EA80, 0xBA7B_864E, 0x67ED_5FCB,
- 0x409D_8AFE, 0x9D0B_537B, 0x20C1_3FB5, 0xFD57_E630, 0x8024_E068, 0x5DB2_39ED, 0xE078_5523, 0x3DEE_8CA6,
+ 0x0000_0000, 0xDD96_D985, 0x605C_B54B, 0xBDCA_6CCE, 0xC0B9_6A96, 0x1D2F_B313, 0xA0E5_DFDD, 0x7D73_0658,
+ 0x5A03_D36D, 0x8795_0AE8, 0x3A5F_6626, 0xE7C9_BFA3, 0x9ABA_B9FB, 0x472C_607E, 0xFAE6_0CB0, 0x2770_D535,
+ 0xB407_A6DA, 0x6991_7F5F, 0xD45B_1391, 0x09CD_CA14, 0x74BE_CC4C, 0xA928_15C9, 0x14E2_7907, 0xC974_A082,
+ 0xEE04_75B7, 0x3392_AC32, 0x8E58_C0FC, 0x53CE_1979, 0x2EBD_1F21, 0xF32B_C6A4, 0x4EE1_AA6A, 0x9377_73EF,
+ 0xB37E_4BF5, 0x6EE8_9270, 0xD322_FEBE, 0x0EB4_273B, 0x73C7_2163, 0xAE51_F8E6, 0x139B_9428, 0xCE0D_4DAD,
+ 0xE97D_9898, 0x34EB_411D, 0x8921_2DD3, 0x54B7_F456, 0x29C4_F20E, 0xF452_2B8B, 0x4998_4745, 0x940E_9EC0,
+ 0x0779_ED2F, 0xDAEF_34AA, 0x6725_5864, 0xBAB3_81E1, 0xC7C0_87B9, 0x1A56_5E3C, 0xA79C_32F2, 0x7A0A_EB77,
+ 0x5D7A_3E42, 0x80EC_E7C7, 0x3D26_8B09, 0xE0B0_528C, 0x9DC3_54D4, 0x4055_8D51, 0xFD9F_E19F, 0x2009_381A,
+ 0xBD8D_91AB, 0x601B_482E, 0xDDD1_24E0, 0x0047_FD65, 0x7D34_FB3D, 0xA0A2_22B8, 0x1D68_4E76, 0xC0FE_97F3,
+ 0xE78E_42C6, 0x3A18_9B43, 0x87D2_F78D, 0x5A44_2E08, 0x2737_2850, 0xFAA1_F1D5, 0x476B_9D1B, 0x9AFD_449E,
+ 0x098A_3771, 0xD41C_EEF4, 0x69D6_823A, 0xB440_5BBF, 0xC933_5DE7, 0x14A5_8462, 0xA96F_E8AC, 0x74F9_3129,
+ 0x5389_E41C, 0x8E1F_3D99, 0x33D5_5157, 0xEE43_88D2, 0x9330_8E8A, 0x4EA6_570F, 0xF36C_3BC1, 0x2EFA_E244,
+ 0x0EF3_DA5E, 0xD365_03DB, 0x6EAF_6F15, 0xB339_B690, 0xCE4A_B0C8, 0x13DC_694D, 0xAE16_0583, 0x7380_DC06,
+ 0x54F0_0933, 0x8966_D0B6, 0x34AC_BC78, 0xE93A_65FD, 0x9449_63A5, 0x49DF_BA20, 0xF415_D6EE, 0x2983_0F6B,
+ 0xBAF4_7C84, 0x6762_A501, 0xDAA8_C9CF, 0x073E_104A, 0x7A4D_1612, 0xA7DB_CF97, 0x1A11_A359, 0xC787_7ADC,
+ 0xE0F7_AFE9, 0x3D61_766C, 0x80AB_1AA2, 0x5D3D_C327, 0x204E_C57F, 0xFDD8_1CFA, 0x4012_7034, 0x9D84_A9B1,
+ 0xA06A_2517, 0x7DFC_FC92, 0xC036_905C, 0x1DA0_49D9, 0x60D3_4F81, 0xBD45_9604, 0x008F_FACA, 0xDD19_234F,
+ 0xFA69_F67A, 0x27FF_2FFF, 0x9A35_4331, 0x47A3_9AB4, 0x3AD0_9CEC, 0xE746_4569, 0x5A8C_29A7, 0x871A_F022,
+ 0x146D_83CD, 0xC9FB_5A48, 0x7431_3686, 0xA9A7_EF03, 0xD4D4_E95B, 0x0942_30DE, 0xB488_5C10, 0x691E_8595,
+ 0x4E6E_50A0, 0x93F8_8925, 0x2E32_E5EB, 0xF3A4_3C6E, 0x8ED7_3A36, 0x5341_E3B3, 0xEE8B_8F7D, 0x331D_56F8,
+ 0x1314_6EE2, 0xCE82_B767, 0x7348_DBA9, 0xAEDE_022C, 0xD3AD_0474, 0x0E3B_DDF1, 0xB3F1_B13F, 0x6E67_68BA,
+ 0x4917_BD8F, 0x9481_640A, 0x294B_08C4, 0xF4DD_D141, 0x89AE_D719, 0x5438_0E9C, 0xE9F2_6252, 0x3464_BBD7,
+ 0xA713_C838, 0x7A85_11BD, 0xC74F_7D73, 0x1AD9_A4F6, 0x67AA_A2AE, 0xBA3C_7B2B, 0x07F6_17E5, 0xDA60_CE60,
+ 0xFD10_1B55, 0x2086_C2D0, 0x9D4C_AE1E, 0x40DA_779B, 0x3DA9_71C3, 0xE03F_A846, 0x5DF5_C488, 0x8063_1D0D,
+ 0x1DE7_B4BC, 0xC071_6D39, 0x7DBB_01F7, 0xA02D_D872, 0xDD5E_DE2A, 0x00C8_07AF, 0xBD02_6B61, 0x6094_B2E4,
+ 0x47E4_67D1, 0x9A72_BE54, 0x27B8_D29A, 0xFA2E_0B1F, 0x875D_0D47, 0x5ACB_D4C2, 0xE701_B80C, 0x3A97_6189,
+ 0xA9E0_1266, 0x7476_CBE3, 0xC9BC_A72D, 0x142A_7EA8, 0x6959_78F0, 0xB4CF_A175, 0x0905_CDBB, 0xD493_143E,
+ 0xF3E3_C10B, 0x2E75_188E, 0x93BF_7440, 0x4E29_ADC5, 0x335A_AB9D, 0xEECC_7218, 0x5306_1ED6, 0x8E90_C753,
+ 0xAE99_FF49, 0x730F_26CC, 0xCEC5_4A02, 0x1353_9387, 0x6E20_95DF, 0xB3B6_4C5A, 0x0E7C_2094, 0xD3EA_F911,
+ 0xF49A_2C24, 0x290C_F5A1, 0x94C6_996F, 0x4950_40EA, 0x3423_46B2, 0xE9B5_9F37, 0x547F_F3F9, 0x89E9_2A7C,
+ 0x1A9E_5993, 0xC708_8016, 0x7AC2_ECD8, 0xA754_355D, 0xDA27_3305, 0x07B1_EA80, 0xBA7B_864E, 0x67ED_5FCB,
+ 0x409D_8AFE, 0x9D0B_537B, 0x20C1_3FB5, 0xFD57_E630, 0x8024_E068, 0x5DB2_39ED, 0xE078_5523, 0x3DEE_8CA6,
],[
- 0x0000_0000, 0x9D0F_E176, 0xE16E_C4AD, 0x7C61_25DB, 0x19AC_8F1B, 0x84A3_6E6D, 0xF8C2_4BB6, 0x65CD_AAC0,
- 0x3359_1E36, 0xAE56_FF40, 0xD237_DA9B, 0x4F38_3BED, 0x2AF5_912D, 0xB7FA_705B, 0xCB9B_5580, 0x5694_B4F6,
- 0x66B2_3C6C, 0xFBBD_DD1A, 0x87DC_F8C1, 0x1AD3_19B7, 0x7F1E_B377, 0xE211_5201, 0x9E70_77DA, 0x037F_96AC,
- 0x55EB_225A, 0xC8E4_C32C, 0xB485_E6F7, 0x298A_0781, 0x4C47_AD41, 0xD148_4C37, 0xAD29_69EC, 0x3026_889A,
- 0xCD64_78D8, 0x506B_99AE, 0x2C0A_BC75, 0xB105_5D03, 0xD4C8_F7C3, 0x49C7_16B5, 0x35A6_336E, 0xA8A9_D218,
- 0xFE3D_66EE, 0x6332_8798, 0x1F53_A243, 0x825C_4335, 0xE791_E9F5, 0x7A9E_0883, 0x06FF_2D58, 0x9BF0_CC2E,
- 0xABD6_44B4, 0x36D9_A5C2, 0x4AB8_8019, 0xD7B7_616F, 0xB27A_CBAF, 0x2F75_2AD9, 0x5314_0F02, 0xCE1B_EE74,
- 0x988F_5A82, 0x0580_BBF4, 0x79E1_9E2F, 0xE4EE_7F59, 0x8123_D599, 0x1C2C_34EF, 0x604D_1134, 0xFD42_F042,
- 0x41B9_F7F1, 0xDCB6_1687, 0xA0D7_335C, 0x3DD8_D22A, 0x5815_78EA, 0xC51A_999C, 0xB97B_BC47, 0x2474_5D31,
- 0x72E0_E9C7, 0xEFEF_08B1, 0x938E_2D6A, 0x0E81_CC1C, 0x6B4C_66DC, 0xF643_87AA, 0x8A22_A271, 0x172D_4307,
- 0x270B_CB9D, 0xBA04_2AEB, 0xC665_0F30, 0x5B6A_EE46, 0x3EA7_4486, 0xA3A8_A5F0, 0xDFC9_802B, 0x42C6_615D,
- 0x1452_D5AB, 0x895D_34DD, 0xF53C_1106, 0x6833_F070, 0x0DFE_5AB0, 0x90F1_BBC6, 0xEC90_9E1D, 0x719F_7F6B,
- 0x8CDD_8F29, 0x11D2_6E5F, 0x6DB3_4B84, 0xF0BC_AAF2, 0x9571_0032, 0x087E_E144, 0x741F_C49F, 0xE910_25E9,
- 0xBF84_911F, 0x228B_7069, 0x5EEA_55B2, 0xC3E5_B4C4, 0xA628_1E04, 0x3B27_FF72, 0x4746_DAA9, 0xDA49_3BDF,
- 0xEA6F_B345, 0x7760_5233, 0x0B01_77E8, 0x960E_969E, 0xF3C3_3C5E, 0x6ECC_DD28, 0x12AD_F8F3, 0x8FA2_1985,
- 0xD936_AD73, 0x4439_4C05, 0x3858_69DE, 0xA557_88A8, 0xC09A_2268, 0x5D95_C31E, 0x21F4_E6C5, 0xBCFB_07B3,
- 0x8373_EFE2, 0x1E7C_0E94, 0x621D_2B4F, 0xFF12_CA39, 0x9ADF_60F9, 0x07D0_818F, 0x7BB1_A454, 0xE6BE_4522,
- 0xB02A_F1D4, 0x2D25_10A2, 0x5144_3579, 0xCC4B_D40F, 0xA986_7ECF, 0x3489_9FB9, 0x48E8_BA62, 0xD5E7_5B14,
- 0xE5C1_D38E, 0x78CE_32F8, 0x04AF_1723, 0x99A0_F655, 0xFC6D_5C95, 0x6162_BDE3, 0x1D03_9838, 0x800C_794E,
- 0xD698_CDB8, 0x4B97_2CCE, 0x37F6_0915, 0xAAF9_E863, 0xCF34_42A3, 0x523B_A3D5, 0x2E5A_860E, 0xB355_6778,
- 0x4E17_973A, 0xD318_764C, 0xAF79_5397, 0x3276_B2E1, 0x57BB_1821, 0xCAB4_F957, 0xB6D5_DC8C, 0x2BDA_3DFA,
- 0x7D4E_890C, 0xE041_687A, 0x9C20_4DA1, 0x012F_ACD7, 0x64E2_0617, 0xF9ED_E761, 0x858C_C2BA, 0x1883_23CC,
- 0x28A5_AB56, 0xB5AA_4A20, 0xC9CB_6FFB, 0x54C4_8E8D, 0x3109_244D, 0xAC06_C53B, 0xD067_E0E0, 0x4D68_0196,
- 0x1BFC_B560, 0x86F3_5416, 0xFA92_71CD, 0x679D_90BB, 0x0250_3A7B, 0x9F5F_DB0D, 0xE33E_FED6, 0x7E31_1FA0,
- 0xC2CA_1813, 0x5FC5_F965, 0x23A4_DCBE, 0xBEAB_3DC8, 0xDB66_9708, 0x4669_767E, 0x3A08_53A5, 0xA707_B2D3,
- 0xF193_0625, 0x6C9C_E753, 0x10FD_C288, 0x8DF2_23FE, 0xE83F_893E, 0x7530_6848, 0x0951_4D93, 0x945E_ACE5,
- 0xA478_247F, 0x3977_C509, 0x4516_E0D2, 0xD819_01A4, 0xBDD4_AB64, 0x20DB_4A12, 0x5CBA_6FC9, 0xC1B5_8EBF,
- 0x9721_3A49, 0x0A2E_DB3F, 0x764F_FEE4, 0xEB40_1F92, 0x8E8D_B552, 0x1382_5424, 0x6FE3_71FF, 0xF2EC_9089,
- 0x0FAE_60CB, 0x92A1_81BD, 0xEEC0_A466, 0x73CF_4510, 0x1602_EFD0, 0x8B0D_0EA6, 0xF76C_2B7D, 0x6A63_CA0B,
- 0x3CF7_7EFD, 0xA1F8_9F8B, 0xDD99_BA50, 0x4096_5B26, 0x255B_F1E6, 0xB854_1090, 0xC435_354B, 0x593A_D43D,
- 0x691C_5CA7, 0xF413_BDD1, 0x8872_980A, 0x157D_797C, 0x70B0_D3BC, 0xEDBF_32CA, 0x91DE_1711, 0x0CD1_F667,
- 0x5A45_4291, 0xC74A_A3E7, 0xBB2B_863C, 0x2624_674A, 0x43E9_CD8A, 0xDEE6_2CFC, 0xA287_0927, 0x3F88_E851,
+ 0x0000_0000, 0x9D0F_E176, 0xE16E_C4AD, 0x7C61_25DB, 0x19AC_8F1B, 0x84A3_6E6D, 0xF8C2_4BB6, 0x65CD_AAC0,
+ 0x3359_1E36, 0xAE56_FF40, 0xD237_DA9B, 0x4F38_3BED, 0x2AF5_912D, 0xB7FA_705B, 0xCB9B_5580, 0x5694_B4F6,
+ 0x66B2_3C6C, 0xFBBD_DD1A, 0x87DC_F8C1, 0x1AD3_19B7, 0x7F1E_B377, 0xE211_5201, 0x9E70_77DA, 0x037F_96AC,
+ 0x55EB_225A, 0xC8E4_C32C, 0xB485_E6F7, 0x298A_0781, 0x4C47_AD41, 0xD148_4C37, 0xAD29_69EC, 0x3026_889A,
+ 0xCD64_78D8, 0x506B_99AE, 0x2C0A_BC75, 0xB105_5D03, 0xD4C8_F7C3, 0x49C7_16B5, 0x35A6_336E, 0xA8A9_D218,
+ 0xFE3D_66EE, 0x6332_8798, 0x1F53_A243, 0x825C_4335, 0xE791_E9F5, 0x7A9E_0883, 0x06FF_2D58, 0x9BF0_CC2E,
+ 0xABD6_44B4, 0x36D9_A5C2, 0x4AB8_8019, 0xD7B7_616F, 0xB27A_CBAF, 0x2F75_2AD9, 0x5314_0F02, 0xCE1B_EE74,
+ 0x988F_5A82, 0x0580_BBF4, 0x79E1_9E2F, 0xE4EE_7F59, 0x8123_D599, 0x1C2C_34EF, 0x604D_1134, 0xFD42_F042,
+ 0x41B9_F7F1, 0xDCB6_1687, 0xA0D7_335C, 0x3DD8_D22A, 0x5815_78EA, 0xC51A_999C, 0xB97B_BC47, 0x2474_5D31,
+ 0x72E0_E9C7, 0xEFEF_08B1, 0x938E_2D6A, 0x0E81_CC1C, 0x6B4C_66DC, 0xF643_87AA, 0x8A22_A271, 0x172D_4307,
+ 0x270B_CB9D, 0xBA04_2AEB, 0xC665_0F30, 0x5B6A_EE46, 0x3EA7_4486, 0xA3A8_A5F0, 0xDFC9_802B, 0x42C6_615D,
+ 0x1452_D5AB, 0x895D_34DD, 0xF53C_1106, 0x6833_F070, 0x0DFE_5AB0, 0x90F1_BBC6, 0xEC90_9E1D, 0x719F_7F6B,
+ 0x8CDD_8F29, 0x11D2_6E5F, 0x6DB3_4B84, 0xF0BC_AAF2, 0x9571_0032, 0x087E_E144, 0x741F_C49F, 0xE910_25E9,
+ 0xBF84_911F, 0x228B_7069, 0x5EEA_55B2, 0xC3E5_B4C4, 0xA628_1E04, 0x3B27_FF72, 0x4746_DAA9, 0xDA49_3BDF,
+ 0xEA6F_B345, 0x7760_5233, 0x0B01_77E8, 0x960E_969E, 0xF3C3_3C5E, 0x6ECC_DD28, 0x12AD_F8F3, 0x8FA2_1985,
+ 0xD936_AD73, 0x4439_4C05, 0x3858_69DE, 0xA557_88A8, 0xC09A_2268, 0x5D95_C31E, 0x21F4_E6C5, 0xBCFB_07B3,
+ 0x8373_EFE2, 0x1E7C_0E94, 0x621D_2B4F, 0xFF12_CA39, 0x9ADF_60F9, 0x07D0_818F, 0x7BB1_A454, 0xE6BE_4522,
+ 0xB02A_F1D4, 0x2D25_10A2, 0x5144_3579, 0xCC4B_D40F, 0xA986_7ECF, 0x3489_9FB9, 0x48E8_BA62, 0xD5E7_5B14,
+ 0xE5C1_D38E, 0x78CE_32F8, 0x04AF_1723, 0x99A0_F655, 0xFC6D_5C95, 0x6162_BDE3, 0x1D03_9838, 0x800C_794E,
+ 0xD698_CDB8, 0x4B97_2CCE, 0x37F6_0915, 0xAAF9_E863, 0xCF34_42A3, 0x523B_A3D5, 0x2E5A_860E, 0xB355_6778,
+ 0x4E17_973A, 0xD318_764C, 0xAF79_5397, 0x3276_B2E1, 0x57BB_1821, 0xCAB4_F957, 0xB6D5_DC8C, 0x2BDA_3DFA,
+ 0x7D4E_890C, 0xE041_687A, 0x9C20_4DA1, 0x012F_ACD7, 0x64E2_0617, 0xF9ED_E761, 0x858C_C2BA, 0x1883_23CC,
+ 0x28A5_AB56, 0xB5AA_4A20, 0xC9CB_6FFB, 0x54C4_8E8D, 0x3109_244D, 0xAC06_C53B, 0xD067_E0E0, 0x4D68_0196,
+ 0x1BFC_B560, 0x86F3_5416, 0xFA92_71CD, 0x679D_90BB, 0x0250_3A7B, 0x9F5F_DB0D, 0xE33E_FED6, 0x7E31_1FA0,
+ 0xC2CA_1813, 0x5FC5_F965, 0x23A4_DCBE, 0xBEAB_3DC8, 0xDB66_9708, 0x4669_767E, 0x3A08_53A5, 0xA707_B2D3,
+ 0xF193_0625, 0x6C9C_E753, 0x10FD_C288, 0x8DF2_23FE, 0xE83F_893E, 0x7530_6848, 0x0951_4D93, 0x945E_ACE5,
+ 0xA478_247F, 0x3977_C509, 0x4516_E0D2, 0xD819_01A4, 0xBDD4_AB64, 0x20DB_4A12, 0x5CBA_6FC9, 0xC1B5_8EBF,
+ 0x9721_3A49, 0x0A2E_DB3F, 0x764F_FEE4, 0xEB40_1F92, 0x8E8D_B552, 0x1382_5424, 0x6FE3_71FF, 0xF2EC_9089,
+ 0x0FAE_60CB, 0x92A1_81BD, 0xEEC0_A466, 0x73CF_4510, 0x1602_EFD0, 0x8B0D_0EA6, 0xF76C_2B7D, 0x6A63_CA0B,
+ 0x3CF7_7EFD, 0xA1F8_9F8B, 0xDD99_BA50, 0x4096_5B26, 0x255B_F1E6, 0xB854_1090, 0xC435_354B, 0x593A_D43D,
+ 0x691C_5CA7, 0xF413_BDD1, 0x8872_980A, 0x157D_797C, 0x70B0_D3BC, 0xEDBF_32CA, 0x91DE_1711, 0x0CD1_F667,
+ 0x5A45_4291, 0xC74A_A3E7, 0xBB2B_863C, 0x2624_674A, 0x43E9_CD8A, 0xDEE6_2CFC, 0xA287_0927, 0x3F88_E851,
],[
- 0x0000_0000, 0xB9FB_DBE8, 0xA886_B191, 0x117D_6A79, 0x8A7C_6563, 0x3387_BE8B, 0x22FA_D4F2, 0x9B01_0F1A,
- 0xCF89_CC87, 0x7672_176F, 0x670F_7D16, 0xDEF4_A6FE, 0x45F5_A9E4, 0xFC0E_720C, 0xED73_1875, 0x5488_C39D,
- 0x4462_9F4F, 0xFD99_44A7, 0xECE4_2EDE, 0x551F_F536, 0xCE1E_FA2C, 0x77E5_21C4, 0x6698_4BBD, 0xDF63_9055,
- 0x8BEB_53C8, 0x3210_8820, 0x236D_E259, 0x9A96_39B1, 0x0197_36AB, 0xB86C_ED43, 0xA911_873A, 0x10EA_5CD2,
- 0x88C5_3E9E, 0x313E_E576, 0x2043_8F0F, 0x99B8_54E7, 0x02B9_5BFD, 0xBB42_8015, 0xAA3F_EA6C, 0x13C4_3184,
- 0x474C_F219, 0xFEB7_29F1, 0xEFCA_4388, 0x5631_9860, 0xCD30_977A, 0x74CB_4C92, 0x65B6_26EB, 0xDC4D_FD03,
- 0xCCA7_A1D1, 0x755C_7A39, 0x6421_1040, 0xDDDA_CBA8, 0x46DB_C4B2, 0xFF20_1F5A, 0xEE5D_7523, 0x57A6_AECB,
- 0x032E_6D56, 0xBAD5_B6BE, 0xABA8_DCC7, 0x1253_072F, 0x8952_0835, 0x30A9_D3DD, 0x21D4_B9A4, 0x982F_624C,
- 0xCAFB_7B7D, 0x7300_A095, 0x627D_CAEC, 0xDB86_1104, 0x4087_1E1E, 0xF97C_C5F6, 0xE801_AF8F, 0x51FA_7467,
- 0x0572_B7FA, 0xBC89_6C12, 0xADF4_066B, 0x140F_DD83, 0x8F0E_D299, 0x36F5_0971, 0x2788_6308, 0x9E73_B8E0,
- 0x8E99_E432, 0x3762_3FDA, 0x261F_55A3, 0x9FE4_8E4B, 0x04E5_8151, 0xBD1E_5AB9, 0xAC63_30C0, 0x1598_EB28,
- 0x4110_28B5, 0xF8EB_F35D, 0xE996_9924, 0x506D_42CC, 0xCB6C_4DD6, 0x7297_963E, 0x63EA_FC47, 0xDA11_27AF,
- 0x423E_45E3, 0xFBC5_9E0B, 0xEAB8_F472, 0x5343_2F9A, 0xC842_2080, 0x71B9_FB68, 0x60C4_9111, 0xD93F_4AF9,
- 0x8DB7_8964, 0x344C_528C, 0x2531_38F5, 0x9CCA_E31D, 0x07CB_EC07, 0xBE30_37EF, 0xAF4D_5D96, 0x16B6_867E,
- 0x065C_DAAC, 0xBFA7_0144, 0xAEDA_6B3D, 0x1721_B0D5, 0x8C20_BFCF, 0x35DB_6427, 0x24A6_0E5E, 0x9D5D_D5B6,
- 0xC9D5_162B, 0x702E_CDC3, 0x6153_A7BA, 0xD8A8_7C52, 0x43A9_7348, 0xFA52_A8A0, 0xEB2F_C2D9, 0x52D4_1931,
- 0x4E87_F0BB, 0xF77C_2B53, 0xE601_412A, 0x5FFA_9AC2, 0xC4FB_95D8, 0x7D00_4E30, 0x6C7D_2449, 0xD586_FFA1,
- 0x810E_3C3C, 0x38F5_E7D4, 0x2988_8DAD, 0x9073_5645, 0x0B72_595F, 0xB289_82B7, 0xA3F4_E8CE, 0x1A0F_3326,
- 0x0AE5_6FF4, 0xB31E_B41C, 0xA263_DE65, 0x1B98_058D, 0x8099_0A97, 0x3962_D17F, 0x281F_BB06, 0x91E4_60EE,
- 0xC56C_A373, 0x7C97_789B, 0x6DEA_12E2, 0xD411_C90A, 0x4F10_C610, 0xF6EB_1DF8, 0xE796_7781, 0x5E6D_AC69,
- 0xC642_CE25, 0x7FB9_15CD, 0x6EC4_7FB4, 0xD73F_A45C, 0x4C3E_AB46, 0xF5C5_70AE, 0xE4B8_1AD7, 0x5D43_C13F,
- 0x09CB_02A2, 0xB030_D94A, 0xA14D_B333, 0x18B6_68DB, 0x83B7_67C1, 0x3A4C_BC29, 0x2B31_D650, 0x92CA_0DB8,
- 0x8220_516A, 0x3BDB_8A82, 0x2AA6_E0FB, 0x935D_3B13, 0x085C_3409, 0xB1A7_EFE1, 0xA0DA_8598, 0x1921_5E70,
- 0x4DA9_9DED, 0xF452_4605, 0xE52F_2C7C, 0x5CD4_F794, 0xC7D5_F88E, 0x7E2E_2366, 0x6F53_491F, 0xD6A8_92F7,
- 0x847C_8BC6, 0x3D87_502E, 0x2CFA_3A57, 0x9501_E1BF, 0x0E00_EEA5, 0xB7FB_354D, 0xA686_5F34, 0x1F7D_84DC,
- 0x4BF5_4741, 0xF20E_9CA9, 0xE373_F6D0, 0x5A88_2D38, 0xC189_2222, 0x7872_F9CA, 0x690F_93B3, 0xD0F4_485B,
- 0xC01E_1489, 0x79E5_CF61, 0x6898_A518, 0xD163_7EF0, 0x4A62_71EA, 0xF399_AA02, 0xE2E4_C07B, 0x5B1F_1B93,
- 0x0F97_D80E, 0xB66C_03E6, 0xA711_699F, 0x1EEA_B277, 0x85EB_BD6D, 0x3C10_6685, 0x2D6D_0CFC, 0x9496_D714,
- 0x0CB9_B558, 0xB542_6EB0, 0xA43F_04C9, 0x1DC4_DF21, 0x86C5_D03B, 0x3F3E_0BD3, 0x2E43_61AA, 0x97B8_BA42,
- 0xC330_79DF, 0x7ACB_A237, 0x6BB6_C84E, 0xD24D_13A6, 0x494C_1CBC, 0xF0B7_C754, 0xE1CA_AD2D, 0x5831_76C5,
- 0x48DB_2A17, 0xF120_F1FF, 0xE05D_9B86, 0x59A6_406E, 0xC2A7_4F74, 0x7B5C_949C, 0x6A21_FEE5, 0xD3DA_250D,
- 0x8752_E690, 0x3EA9_3D78, 0x2FD4_5701, 0x962F_8CE9, 0x0D2E_83F3, 0xB4D5_581B, 0xA5A8_3262, 0x1C53_E98A,
+ 0x0000_0000, 0xB9FB_DBE8, 0xA886_B191, 0x117D_6A79, 0x8A7C_6563, 0x3387_BE8B, 0x22FA_D4F2, 0x9B01_0F1A,
+ 0xCF89_CC87, 0x7672_176F, 0x670F_7D16, 0xDEF4_A6FE, 0x45F5_A9E4, 0xFC0E_720C, 0xED73_1875, 0x5488_C39D,
+ 0x4462_9F4F, 0xFD99_44A7, 0xECE4_2EDE, 0x551F_F536, 0xCE1E_FA2C, 0x77E5_21C4, 0x6698_4BBD, 0xDF63_9055,
+ 0x8BEB_53C8, 0x3210_8820, 0x236D_E259, 0x9A96_39B1, 0x0197_36AB, 0xB86C_ED43, 0xA911_873A, 0x10EA_5CD2,
+ 0x88C5_3E9E, 0x313E_E576, 0x2043_8F0F, 0x99B8_54E7, 0x02B9_5BFD, 0xBB42_8015, 0xAA3F_EA6C, 0x13C4_3184,
+ 0x474C_F219, 0xFEB7_29F1, 0xEFCA_4388, 0x5631_9860, 0xCD30_977A, 0x74CB_4C92, 0x65B6_26EB, 0xDC4D_FD03,
+ 0xCCA7_A1D1, 0x755C_7A39, 0x6421_1040, 0xDDDA_CBA8, 0x46DB_C4B2, 0xFF20_1F5A, 0xEE5D_7523, 0x57A6_AECB,
+ 0x032E_6D56, 0xBAD5_B6BE, 0xABA8_DCC7, 0x1253_072F, 0x8952_0835, 0x30A9_D3DD, 0x21D4_B9A4, 0x982F_624C,
+ 0xCAFB_7B7D, 0x7300_A095, 0x627D_CAEC, 0xDB86_1104, 0x4087_1E1E, 0xF97C_C5F6, 0xE801_AF8F, 0x51FA_7467,
+ 0x0572_B7FA, 0xBC89_6C12, 0xADF4_066B, 0x140F_DD83, 0x8F0E_D299, 0x36F5_0971, 0x2788_6308, 0x9E73_B8E0,
+ 0x8E99_E432, 0x3762_3FDA, 0x261F_55A3, 0x9FE4_8E4B, 0x04E5_8151, 0xBD1E_5AB9, 0xAC63_30C0, 0x1598_EB28,
+ 0x4110_28B5, 0xF8EB_F35D, 0xE996_9924, 0x506D_42CC, 0xCB6C_4DD6, 0x7297_963E, 0x63EA_FC47, 0xDA11_27AF,
+ 0x423E_45E3, 0xFBC5_9E0B, 0xEAB8_F472, 0x5343_2F9A, 0xC842_2080, 0x71B9_FB68, 0x60C4_9111, 0xD93F_4AF9,
+ 0x8DB7_8964, 0x344C_528C, 0x2531_38F5, 0x9CCA_E31D, 0x07CB_EC07, 0xBE30_37EF, 0xAF4D_5D96, 0x16B6_867E,
+ 0x065C_DAAC, 0xBFA7_0144, 0xAEDA_6B3D, 0x1721_B0D5, 0x8C20_BFCF, 0x35DB_6427, 0x24A6_0E5E, 0x9D5D_D5B6,
+ 0xC9D5_162B, 0x702E_CDC3, 0x6153_A7BA, 0xD8A8_7C52, 0x43A9_7348, 0xFA52_A8A0, 0xEB2F_C2D9, 0x52D4_1931,
+ 0x4E87_F0BB, 0xF77C_2B53, 0xE601_412A, 0x5FFA_9AC2, 0xC4FB_95D8, 0x7D00_4E30, 0x6C7D_2449, 0xD586_FFA1,
+ 0x810E_3C3C, 0x38F5_E7D4, 0x2988_8DAD, 0x9073_5645, 0x0B72_595F, 0xB289_82B7, 0xA3F4_E8CE, 0x1A0F_3326,
+ 0x0AE5_6FF4, 0xB31E_B41C, 0xA263_DE65, 0x1B98_058D, 0x8099_0A97, 0x3962_D17F, 0x281F_BB06, 0x91E4_60EE,
+ 0xC56C_A373, 0x7C97_789B, 0x6DEA_12E2, 0xD411_C90A, 0x4F10_C610, 0xF6EB_1DF8, 0xE796_7781, 0x5E6D_AC69,
+ 0xC642_CE25, 0x7FB9_15CD, 0x6EC4_7FB4, 0xD73F_A45C, 0x4C3E_AB46, 0xF5C5_70AE, 0xE4B8_1AD7, 0x5D43_C13F,
+ 0x09CB_02A2, 0xB030_D94A, 0xA14D_B333, 0x18B6_68DB, 0x83B7_67C1, 0x3A4C_BC29, 0x2B31_D650, 0x92CA_0DB8,
+ 0x8220_516A, 0x3BDB_8A82, 0x2AA6_E0FB, 0x935D_3B13, 0x085C_3409, 0xB1A7_EFE1, 0xA0DA_8598, 0x1921_5E70,
+ 0x4DA9_9DED, 0xF452_4605, 0xE52F_2C7C, 0x5CD4_F794, 0xC7D5_F88E, 0x7E2E_2366, 0x6F53_491F, 0xD6A8_92F7,
+ 0x847C_8BC6, 0x3D87_502E, 0x2CFA_3A57, 0x9501_E1BF, 0x0E00_EEA5, 0xB7FB_354D, 0xA686_5F34, 0x1F7D_84DC,
+ 0x4BF5_4741, 0xF20E_9CA9, 0xE373_F6D0, 0x5A88_2D38, 0xC189_2222, 0x7872_F9CA, 0x690F_93B3, 0xD0F4_485B,
+ 0xC01E_1489, 0x79E5_CF61, 0x6898_A518, 0xD163_7EF0, 0x4A62_71EA, 0xF399_AA02, 0xE2E4_C07B, 0x5B1F_1B93,
+ 0x0F97_D80E, 0xB66C_03E6, 0xA711_699F, 0x1EEA_B277, 0x85EB_BD6D, 0x3C10_6685, 0x2D6D_0CFC, 0x9496_D714,
+ 0x0CB9_B558, 0xB542_6EB0, 0xA43F_04C9, 0x1DC4_DF21, 0x86C5_D03B, 0x3F3E_0BD3, 0x2E43_61AA, 0x97B8_BA42,
+ 0xC330_79DF, 0x7ACB_A237, 0x6BB6_C84E, 0xD24D_13A6, 0x494C_1CBC, 0xF0B7_C754, 0xE1CA_AD2D, 0x5831_76C5,
+ 0x48DB_2A17, 0xF120_F1FF, 0xE05D_9B86, 0x59A6_406E, 0xC2A7_4F74, 0x7B5C_949C, 0x6A21_FEE5, 0xD3DA_250D,
+ 0x8752_E690, 0x3EA9_3D78, 0x2FD4_5701, 0x962F_8CE9, 0x0D2E_83F3, 0xB4D5_581B, 0xA5A8_3262, 0x1C53_E98A,
],[
- 0x0000_0000, 0xAE68_9191, 0x87A0_2563, 0x29C8_B4F2, 0xD431_4C87, 0x7A59_DD16, 0x5391_69E4, 0xFDF9_F875,
- 0x7313_9F4F, 0xDD7B_0EDE, 0xF4B3_BA2C, 0x5ADB_2BBD, 0xA722_D3C8, 0x094A_4259, 0x2082_F6AB, 0x8EEA_673A,
- 0xE627_3E9E, 0x484F_AF0F, 0x6187_1BFD, 0xCFEF_8A6C, 0x3216_7219, 0x9C7E_E388, 0xB5B6_577A, 0x1BDE_C6EB,
- 0x9534_A1D1, 0x3B5C_3040, 0x1294_84B2, 0xBCFC_1523, 0x4105_ED56, 0xEF6D_7CC7, 0xC6A5_C835, 0x68CD_59A4,
- 0x173F_7B7D, 0xB957_EAEC, 0x909F_5E1E, 0x3EF7_CF8F, 0xC30E_37FA, 0x6D66_A66B, 0x44AE_1299, 0xEAC6_8308,
- 0x642C_E432, 0xCA44_75A3, 0xE38C_C151, 0x4DE4_50C0, 0xB01D_A8B5, 0x1E75_3924, 0x37BD_8DD6, 0x99D5_1C47,
- 0xF118_45E3, 0x5F70_D472, 0x76B8_6080, 0xD8D0_F111, 0x2529_0964, 0x8B41_98F5, 0xA289_2C07, 0x0CE1_BD96,
- 0x820B_DAAC, 0x2C63_4B3D, 0x05AB_FFCF, 0xABC3_6E5E, 0x563A_962B, 0xF852_07BA, 0xD19A_B348, 0x7FF2_22D9,
- 0x2E7E_F6FA, 0x8016_676B, 0xA9DE_D399, 0x07B6_4208, 0xFA4F_BA7D, 0x5427_2BEC, 0x7DEF_9F1E, 0xD387_0E8F,
- 0x5D6D_69B5, 0xF305_F824, 0xDACD_4CD6, 0x74A5_DD47, 0x895C_2532, 0x2734_B4A3, 0x0EFC_0051, 0xA094_91C0,
- 0xC859_C864, 0x6631_59F5, 0x4FF9_ED07, 0xE191_7C96, 0x1C68_84E3, 0xB200_1572, 0x9BC8_A180, 0x35A0_3011,
- 0xBB4A_572B, 0x1522_C6BA, 0x3CEA_7248, 0x9282_E3D9, 0x6F7B_1BAC, 0xC113_8A3D, 0xE8DB_3ECF, 0x46B3_AF5E,
- 0x3941_8D87, 0x9729_1C16, 0xBEE1_A8E4, 0x1089_3975, 0xED70_C100, 0x4318_5091, 0x6AD0_E463, 0xC4B8_75F2,
- 0x4A52_12C8, 0xE43A_8359, 0xCDF2_37AB, 0x639A_A63A, 0x9E63_5E4F, 0x300B_CFDE, 0x19C3_7B2C, 0xB7AB_EABD,
- 0xDF66_B319, 0x710E_2288, 0x58C6_967A, 0xF6AE_07EB, 0x0B57_FF9E, 0xA53F_6E0F, 0x8CF7_DAFD, 0x229F_4B6C,
- 0xAC75_2C56, 0x021D_BDC7, 0x2BD5_0935, 0x85BD_98A4, 0x7844_60D1, 0xD62C_F140, 0xFFE4_45B2, 0x518C_D423,
- 0x5CFD_EDF4, 0xF295_7C65, 0xDB5D_C897, 0x7535_5906, 0x88CC_A173, 0x26A4_30E2, 0x0F6C_8410, 0xA104_1581,
- 0x2FEE_72BB, 0x8186_E32A, 0xA84E_57D8, 0x0626_C649, 0xFBDF_3E3C, 0x55B7_AFAD, 0x7C7F_1B5F, 0xD217_8ACE,
- 0xBADA_D36A, 0x14B2_42FB, 0x3D7A_F609, 0x9312_6798, 0x6EEB_9FED, 0xC083_0E7C, 0xE94B_BA8E, 0x4723_2B1F,
- 0xC9C9_4C25, 0x67A1_DDB4, 0x4E69_6946, 0xE001_F8D7, 0x1DF8_00A2, 0xB390_9133, 0x9A58_25C1, 0x3430_B450,
- 0x4BC2_9689, 0xE5AA_0718, 0xCC62_B3EA, 0x620A_227B, 0x9FF3_DA0E, 0x319B_4B9F, 0x1853_FF6D, 0xB63B_6EFC,
- 0x38D1_09C6, 0x96B9_9857, 0xBF71_2CA5, 0x1119_BD34, 0xECE0_4541, 0x4288_D4D0, 0x6B40_6022, 0xC528_F1B3,
- 0xADE5_A817, 0x038D_3986, 0x2A45_8D74, 0x842D_1CE5, 0x79D4_E490, 0xD7BC_7501, 0xFE74_C1F3, 0x501C_5062,
- 0xDEF6_3758, 0x709E_A6C9, 0x5956_123B, 0xF73E_83AA, 0x0AC7_7BDF, 0xA4AF_EA4E, 0x8D67_5EBC, 0x230F_CF2D,
- 0x7283_1B0E, 0xDCEB_8A9F, 0xF523_3E6D, 0x5B4B_AFFC, 0xA6B2_5789, 0x08DA_C618, 0x2112_72EA, 0x8F7A_E37B,
- 0x0190_8441, 0xAFF8_15D0, 0x8630_A122, 0x2858_30B3, 0xD5A1_C8C6, 0x7BC9_5957, 0x5201_EDA5, 0xFC69_7C34,
- 0x94A4_2590, 0x3ACC_B401, 0x1304_00F3, 0xBD6C_9162, 0x4095_6917, 0xEEFD_F886, 0xC735_4C74, 0x695D_DDE5,
- 0xE7B7_BADF, 0x49DF_2B4E, 0x6017_9FBC, 0xCE7F_0E2D, 0x3386_F658, 0x9DEE_67C9, 0xB426_D33B, 0x1A4E_42AA,
- 0x65BC_6073, 0xCBD4_F1E2, 0xE21C_4510, 0x4C74_D481, 0xB18D_2CF4, 0x1FE5_BD65, 0x362D_0997, 0x9845_9806,
- 0x16AF_FF3C, 0xB8C7_6EAD, 0x910F_DA5F, 0x3F67_4BCE, 0xC29E_B3BB, 0x6CF6_222A, 0x453E_96D8, 0xEB56_0749,
- 0x839B_5EED, 0x2DF3_CF7C, 0x043B_7B8E, 0xAA53_EA1F, 0x57AA_126A, 0xF9C2_83FB, 0xD00A_3709, 0x7E62_A698,
- 0xF088_C1A2, 0x5EE0_5033, 0x7728_E4C1, 0xD940_7550, 0x24B9_8D25, 0x8AD1_1CB4, 0xA319_A846, 0x0D71_39D7,
+ 0x0000_0000, 0xAE68_9191, 0x87A0_2563, 0x29C8_B4F2, 0xD431_4C87, 0x7A59_DD16, 0x5391_69E4, 0xFDF9_F875,
+ 0x7313_9F4F, 0xDD7B_0EDE, 0xF4B3_BA2C, 0x5ADB_2BBD, 0xA722_D3C8, 0x094A_4259, 0x2082_F6AB, 0x8EEA_673A,
+ 0xE627_3E9E, 0x484F_AF0F, 0x6187_1BFD, 0xCFEF_8A6C, 0x3216_7219, 0x9C7E_E388, 0xB5B6_577A, 0x1BDE_C6EB,
+ 0x9534_A1D1, 0x3B5C_3040, 0x1294_84B2, 0xBCFC_1523, 0x4105_ED56, 0xEF6D_7CC7, 0xC6A5_C835, 0x68CD_59A4,
+ 0x173F_7B7D, 0xB957_EAEC, 0x909F_5E1E, 0x3EF7_CF8F, 0xC30E_37FA, 0x6D66_A66B, 0x44AE_1299, 0xEAC6_8308,
+ 0x642C_E432, 0xCA44_75A3, 0xE38C_C151, 0x4DE4_50C0, 0xB01D_A8B5, 0x1E75_3924, 0x37BD_8DD6, 0x99D5_1C47,
+ 0xF118_45E3, 0x5F70_D472, 0x76B8_6080, 0xD8D0_F111, 0x2529_0964, 0x8B41_98F5, 0xA289_2C07, 0x0CE1_BD96,
+ 0x820B_DAAC, 0x2C63_4B3D, 0x05AB_FFCF, 0xABC3_6E5E, 0x563A_962B, 0xF852_07BA, 0xD19A_B348, 0x7FF2_22D9,
+ 0x2E7E_F6FA, 0x8016_676B, 0xA9DE_D399, 0x07B6_4208, 0xFA4F_BA7D, 0x5427_2BEC, 0x7DEF_9F1E, 0xD387_0E8F,
+ 0x5D6D_69B5, 0xF305_F824, 0xDACD_4CD6, 0x74A5_DD47, 0x895C_2532, 0x2734_B4A3, 0x0EFC_0051, 0xA094_91C0,
+ 0xC859_C864, 0x6631_59F5, 0x4FF9_ED07, 0xE191_7C96, 0x1C68_84E3, 0xB200_1572, 0x9BC8_A180, 0x35A0_3011,
+ 0xBB4A_572B, 0x1522_C6BA, 0x3CEA_7248, 0x9282_E3D9, 0x6F7B_1BAC, 0xC113_8A3D, 0xE8DB_3ECF, 0x46B3_AF5E,
+ 0x3941_8D87, 0x9729_1C16, 0xBEE1_A8E4, 0x1089_3975, 0xED70_C100, 0x4318_5091, 0x6AD0_E463, 0xC4B8_75F2,
+ 0x4A52_12C8, 0xE43A_8359, 0xCDF2_37AB, 0x639A_A63A, 0x9E63_5E4F, 0x300B_CFDE, 0x19C3_7B2C, 0xB7AB_EABD,
+ 0xDF66_B319, 0x710E_2288, 0x58C6_967A, 0xF6AE_07EB, 0x0B57_FF9E, 0xA53F_6E0F, 0x8CF7_DAFD, 0x229F_4B6C,
+ 0xAC75_2C56, 0x021D_BDC7, 0x2BD5_0935, 0x85BD_98A4, 0x7844_60D1, 0xD62C_F140, 0xFFE4_45B2, 0x518C_D423,
+ 0x5CFD_EDF4, 0xF295_7C65, 0xDB5D_C897, 0x7535_5906, 0x88CC_A173, 0x26A4_30E2, 0x0F6C_8410, 0xA104_1581,
+ 0x2FEE_72BB, 0x8186_E32A, 0xA84E_57D8, 0x0626_C649, 0xFBDF_3E3C, 0x55B7_AFAD, 0x7C7F_1B5F, 0xD217_8ACE,
+ 0xBADA_D36A, 0x14B2_42FB, 0x3D7A_F609, 0x9312_6798, 0x6EEB_9FED, 0xC083_0E7C, 0xE94B_BA8E, 0x4723_2B1F,
+ 0xC9C9_4C25, 0x67A1_DDB4, 0x4E69_6946, 0xE001_F8D7, 0x1DF8_00A2, 0xB390_9133, 0x9A58_25C1, 0x3430_B450,
+ 0x4BC2_9689, 0xE5AA_0718, 0xCC62_B3EA, 0x620A_227B, 0x9FF3_DA0E, 0x319B_4B9F, 0x1853_FF6D, 0xB63B_6EFC,
+ 0x38D1_09C6, 0x96B9_9857, 0xBF71_2CA5, 0x1119_BD34, 0xECE0_4541, 0x4288_D4D0, 0x6B40_6022, 0xC528_F1B3,
+ 0xADE5_A817, 0x038D_3986, 0x2A45_8D74, 0x842D_1CE5, 0x79D4_E490, 0xD7BC_7501, 0xFE74_C1F3, 0x501C_5062,
+ 0xDEF6_3758, 0x709E_A6C9, 0x5956_123B, 0xF73E_83AA, 0x0AC7_7BDF, 0xA4AF_EA4E, 0x8D67_5EBC, 0x230F_CF2D,
+ 0x7283_1B0E, 0xDCEB_8A9F, 0xF523_3E6D, 0x5B4B_AFFC, 0xA6B2_5789, 0x08DA_C618, 0x2112_72EA, 0x8F7A_E37B,
+ 0x0190_8441, 0xAFF8_15D0, 0x8630_A122, 0x2858_30B3, 0xD5A1_C8C6, 0x7BC9_5957, 0x5201_EDA5, 0xFC69_7C34,
+ 0x94A4_2590, 0x3ACC_B401, 0x1304_00F3, 0xBD6C_9162, 0x4095_6917, 0xEEFD_F886, 0xC735_4C74, 0x695D_DDE5,
+ 0xE7B7_BADF, 0x49DF_2B4E, 0x6017_9FBC, 0xCE7F_0E2D, 0x3386_F658, 0x9DEE_67C9, 0xB426_D33B, 0x1A4E_42AA,
+ 0x65BC_6073, 0xCBD4_F1E2, 0xE21C_4510, 0x4C74_D481, 0xB18D_2CF4, 0x1FE5_BD65, 0x362D_0997, 0x9845_9806,
+ 0x16AF_FF3C, 0xB8C7_6EAD, 0x910F_DA5F, 0x3F67_4BCE, 0xC29E_B3BB, 0x6CF6_222A, 0x453E_96D8, 0xEB56_0749,
+ 0x839B_5EED, 0x2DF3_CF7C, 0x043B_7B8E, 0xAA53_EA1F, 0x57AA_126A, 0xF9C2_83FB, 0xD00A_3709, 0x7E62_A698,
+ 0xF088_C1A2, 0x5EE0_5033, 0x7728_E4C1, 0xD940_7550, 0x24B9_8D25, 0x8AD1_1CB4, 0xA319_A846, 0x0D71_39D7,
]]
diff --git a/std/crc32/common_up_arm_crc32.wuffs b/std/crc32/common_up_arm_crc32.wuffs
index 20b1ef4..718e685 100644
--- a/std/crc32/common_up_arm_crc32.wuffs
+++ b/std/crc32/common_up_arm_crc32.wuffs
@@ -13,7 +13,7 @@
// limitations under the License.
pri func ieee_hasher.up_arm_crc32!(x: slice base.u8),
- choose cpu_arch >= arm_crc32,
+ choose cpu_arch >= arm_crc32,
{
var p : slice base.u8
diff --git a/std/crc32/common_up_x86_avx2.wuffs b/std/crc32/common_up_x86_avx2.wuffs
index 27c0722..2228158 100644
--- a/std/crc32/common_up_x86_avx2.wuffs
+++ b/std/crc32/common_up_x86_avx2.wuffs
@@ -21,7 +21,7 @@
// cpu_arch >= x86_avx2". With AVX, PCLMULQDQ has a three-operand form, not
// just a two-operand form: https://www.felixcloutier.com/x86/pclmulqdq
pri func ieee_hasher.up_x86_avx2!(x: slice base.u8),
- choose cpu_arch >= x86_avx2,
+ choose cpu_arch >= x86_avx2,
{
var s : base.u32
var p : slice base.u8
@@ -102,10 +102,10 @@
// Reduce 128 bits to 64 bits.
x1 = x0._mm_clmulepi64_si128(b: k, imm8: 0x10)
x2 = util.make_m128i_multiple_u32(
- a00: 0xFFFF_FFFF,
- a01: 0x0000_0000,
- a02: 0xFFFF_FFFF,
- a03: 0x0000_0000)
+ a00: 0xFFFF_FFFF,
+ a01: 0x0000_0000,
+ a02: 0xFFFF_FFFF,
+ a03: 0x0000_0000)
x0 = x0._mm_srli_si128(imm8: 8)
x0 = x0._mm_xor_si128(b: x1)
k = util.make_m128i_slice128(a: IEEE_X86_SSE42_K5ZZ[.. 16])
diff --git a/std/crc32/common_up_x86_sse42.wuffs b/std/crc32/common_up_x86_sse42.wuffs
index da9f298..d65c981 100644
--- a/std/crc32/common_up_x86_sse42.wuffs
+++ b/std/crc32/common_up_x86_sse42.wuffs
@@ -18,7 +18,7 @@
// Computation for Generic Polynomials Using PCLMULQDQ Instruction".
pri func ieee_hasher.up_x86_sse42!(x: slice base.u8),
- choose cpu_arch >= x86_sse42,
+ choose cpu_arch >= x86_sse42,
{
var s : base.u32
var p : slice base.u8
@@ -99,10 +99,10 @@
// Reduce 128 bits to 64 bits.
x1 = x0._mm_clmulepi64_si128(b: k, imm8: 0x10)
x2 = util.make_m128i_multiple_u32(
- a00: 0xFFFF_FFFF,
- a01: 0x0000_0000,
- a02: 0xFFFF_FFFF,
- a03: 0x0000_0000)
+ a00: 0xFFFF_FFFF,
+ a01: 0x0000_0000,
+ a02: 0xFFFF_FFFF,
+ a03: 0x0000_0000)
x0 = x0._mm_srli_si128(imm8: 8)
x0 = x0._mm_xor_si128(b: x1)
k = util.make_m128i_slice128(a: IEEE_X86_SSE42_K5ZZ[.. 16])
@@ -141,21 +141,21 @@
// The k6' constant from the Gopal paper is unused.
pri const IEEE_X86_SSE42_K1K2 : array[16] base.u8 = [
- 0xD4, 0x2B, 0x44, 0x54, 0x01, 0x00, 0x00, 0x00, // k1' = 0x1_5444_2BD4
- 0x96, 0x15, 0xE4, 0xC6, 0x01, 0x00, 0x00, 0x00, // k2' = 0x1_C6E4_1596
+ 0xD4, 0x2B, 0x44, 0x54, 0x01, 0x00, 0x00, 0x00, // k1' = 0x1_5444_2BD4
+ 0x96, 0x15, 0xE4, 0xC6, 0x01, 0x00, 0x00, 0x00, // k2' = 0x1_C6E4_1596
]
pri const IEEE_X86_SSE42_K3K4 : array[16] base.u8 = [
- 0xD0, 0x97, 0x19, 0x75, 0x01, 0x00, 0x00, 0x00, // k3' = 0x1_7519_97D0
- 0x9E, 0x00, 0xAA, 0xCC, 0x00, 0x00, 0x00, 0x00, // k4' = 0x0_CCAA_009E
+ 0xD0, 0x97, 0x19, 0x75, 0x01, 0x00, 0x00, 0x00, // k3' = 0x1_7519_97D0
+ 0x9E, 0x00, 0xAA, 0xCC, 0x00, 0x00, 0x00, 0x00, // k4' = 0x0_CCAA_009E
]
pri const IEEE_X86_SSE42_K5ZZ : array[16] base.u8 = [
- 0x24, 0x61, 0xCD, 0x63, 0x01, 0x00, 0x00, 0x00, // k5' = 0x1_63CD_6124
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Unused
+ 0x24, 0x61, 0xCD, 0x63, 0x01, 0x00, 0x00, 0x00, // k5' = 0x1_63CD_6124
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Unused
]
pri const IEEE_X86_SSE42_PXMU : array[16] base.u8 = [
- 0x41, 0x06, 0x71, 0xDB, 0x01, 0x00, 0x00, 0x00, // Px' = 0x1_DB71_0641
- 0x41, 0x16, 0x01, 0xF7, 0x01, 0x00, 0x00, 0x00, // μ' = 0x1_F701_1641
+ 0x41, 0x06, 0x71, 0xDB, 0x01, 0x00, 0x00, 0x00, // Px' = 0x1_DB71_0641
+ 0x41, 0x16, 0x01, 0xF7, 0x01, 0x00, 0x00, 0x00, // μ' = 0x1_F701_1641
]
diff --git a/std/deflate/common_consts.wuffs b/std/deflate/common_consts.wuffs
index 9b29b5c..ca22a01 100644
--- a/std/deflate/common_consts.wuffs
+++ b/std/deflate/common_consts.wuffs
@@ -14,41 +14,41 @@
// CODE_ORDER is defined in the RFC section 3.2.7.
pri const CODE_ORDER : array[19] base.u8[..= 18] = [
- 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15,
+ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15,
]
// REVERSE8 reverses the bits in a byte.
pri const REVERSE8 : array[256] base.u8 = [
- 0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0, // 0x00 - 0x07
- 0x10, 0x90, 0x50, 0xD0, 0x30, 0xB0, 0x70, 0xF0, // 0x08 - 0x0F
- 0x08, 0x88, 0x48, 0xC8, 0x28, 0xA8, 0x68, 0xE8, // 0x10 - 0x17
- 0x18, 0x98, 0x58, 0xD8, 0x38, 0xB8, 0x78, 0xF8, // 0x18 - 0x1F
- 0x04, 0x84, 0x44, 0xC4, 0x24, 0xA4, 0x64, 0xE4, // 0x20 - 0x27
- 0x14, 0x94, 0x54, 0xD4, 0x34, 0xB4, 0x74, 0xF4, // 0x28 - 0x2F
- 0x0C, 0x8C, 0x4C, 0xCC, 0x2C, 0xAC, 0x6C, 0xEC, // 0x30 - 0x37
- 0x1C, 0x9C, 0x5C, 0xDC, 0x3C, 0xBC, 0x7C, 0xFC, // 0x38 - 0x3F
- 0x02, 0x82, 0x42, 0xC2, 0x22, 0xA2, 0x62, 0xE2, // 0x40 - 0x47
- 0x12, 0x92, 0x52, 0xD2, 0x32, 0xB2, 0x72, 0xF2, // 0x48 - 0x4F
- 0x0A, 0x8A, 0x4A, 0xCA, 0x2A, 0xAA, 0x6A, 0xEA, // 0x50 - 0x57
- 0x1A, 0x9A, 0x5A, 0xDA, 0x3A, 0xBA, 0x7A, 0xFA, // 0x58 - 0x5F
- 0x06, 0x86, 0x46, 0xC6, 0x26, 0xA6, 0x66, 0xE6, // 0x60 - 0x67
- 0x16, 0x96, 0x56, 0xD6, 0x36, 0xB6, 0x76, 0xF6, // 0x68 - 0x6F
- 0x0E, 0x8E, 0x4E, 0xCE, 0x2E, 0xAE, 0x6E, 0xEE, // 0x70 - 0x77
- 0x1E, 0x9E, 0x5E, 0xDE, 0x3E, 0xBE, 0x7E, 0xFE, // 0x78 - 0x7F
- 0x01, 0x81, 0x41, 0xC1, 0x21, 0xA1, 0x61, 0xE1, // 0x80 - 0x87
- 0x11, 0x91, 0x51, 0xD1, 0x31, 0xB1, 0x71, 0xF1, // 0x88 - 0x8F
- 0x09, 0x89, 0x49, 0xC9, 0x29, 0xA9, 0x69, 0xE9, // 0x90 - 0x97
- 0x19, 0x99, 0x59, 0xD9, 0x39, 0xB9, 0x79, 0xF9, // 0x98 - 0x9F
- 0x05, 0x85, 0x45, 0xC5, 0x25, 0xA5, 0x65, 0xE5, // 0xA0 - 0xA7
- 0x15, 0x95, 0x55, 0xD5, 0x35, 0xB5, 0x75, 0xF5, // 0xA8 - 0xAF
- 0x0D, 0x8D, 0x4D, 0xCD, 0x2D, 0xAD, 0x6D, 0xED, // 0xB0 - 0xB7
- 0x1D, 0x9D, 0x5D, 0xDD, 0x3D, 0xBD, 0x7D, 0xFD, // 0xB8 - 0xBF
- 0x03, 0x83, 0x43, 0xC3, 0x23, 0xA3, 0x63, 0xE3, // 0xC0 - 0xC7
- 0x13, 0x93, 0x53, 0xD3, 0x33, 0xB3, 0x73, 0xF3, // 0xC8 - 0xCF
- 0x0B, 0x8B, 0x4B, 0xCB, 0x2B, 0xAB, 0x6B, 0xEB, // 0xD0 - 0xD7
- 0x1B, 0x9B, 0x5B, 0xDB, 0x3B, 0xBB, 0x7B, 0xFB, // 0xD8 - 0xDF
- 0x07, 0x87, 0x47, 0xC7, 0x27, 0xA7, 0x67, 0xE7, // 0xE0 - 0xE7
- 0x17, 0x97, 0x57, 0xD7, 0x37, 0xB7, 0x77, 0xF7, // 0xE8 - 0xEF
- 0x0F, 0x8F, 0x4F, 0xCF, 0x2F, 0xAF, 0x6F, 0xEF, // 0xF0 - 0xF7
- 0x1F, 0x9F, 0x5F, 0xDF, 0x3F, 0xBF, 0x7F, 0xFF, // 0xF8 - 0xFF
+ 0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0, // 0x00 - 0x07
+ 0x10, 0x90, 0x50, 0xD0, 0x30, 0xB0, 0x70, 0xF0, // 0x08 - 0x0F
+ 0x08, 0x88, 0x48, 0xC8, 0x28, 0xA8, 0x68, 0xE8, // 0x10 - 0x17
+ 0x18, 0x98, 0x58, 0xD8, 0x38, 0xB8, 0x78, 0xF8, // 0x18 - 0x1F
+ 0x04, 0x84, 0x44, 0xC4, 0x24, 0xA4, 0x64, 0xE4, // 0x20 - 0x27
+ 0x14, 0x94, 0x54, 0xD4, 0x34, 0xB4, 0x74, 0xF4, // 0x28 - 0x2F
+ 0x0C, 0x8C, 0x4C, 0xCC, 0x2C, 0xAC, 0x6C, 0xEC, // 0x30 - 0x37
+ 0x1C, 0x9C, 0x5C, 0xDC, 0x3C, 0xBC, 0x7C, 0xFC, // 0x38 - 0x3F
+ 0x02, 0x82, 0x42, 0xC2, 0x22, 0xA2, 0x62, 0xE2, // 0x40 - 0x47
+ 0x12, 0x92, 0x52, 0xD2, 0x32, 0xB2, 0x72, 0xF2, // 0x48 - 0x4F
+ 0x0A, 0x8A, 0x4A, 0xCA, 0x2A, 0xAA, 0x6A, 0xEA, // 0x50 - 0x57
+ 0x1A, 0x9A, 0x5A, 0xDA, 0x3A, 0xBA, 0x7A, 0xFA, // 0x58 - 0x5F
+ 0x06, 0x86, 0x46, 0xC6, 0x26, 0xA6, 0x66, 0xE6, // 0x60 - 0x67
+ 0x16, 0x96, 0x56, 0xD6, 0x36, 0xB6, 0x76, 0xF6, // 0x68 - 0x6F
+ 0x0E, 0x8E, 0x4E, 0xCE, 0x2E, 0xAE, 0x6E, 0xEE, // 0x70 - 0x77
+ 0x1E, 0x9E, 0x5E, 0xDE, 0x3E, 0xBE, 0x7E, 0xFE, // 0x78 - 0x7F
+ 0x01, 0x81, 0x41, 0xC1, 0x21, 0xA1, 0x61, 0xE1, // 0x80 - 0x87
+ 0x11, 0x91, 0x51, 0xD1, 0x31, 0xB1, 0x71, 0xF1, // 0x88 - 0x8F
+ 0x09, 0x89, 0x49, 0xC9, 0x29, 0xA9, 0x69, 0xE9, // 0x90 - 0x97
+ 0x19, 0x99, 0x59, 0xD9, 0x39, 0xB9, 0x79, 0xF9, // 0x98 - 0x9F
+ 0x05, 0x85, 0x45, 0xC5, 0x25, 0xA5, 0x65, 0xE5, // 0xA0 - 0xA7
+ 0x15, 0x95, 0x55, 0xD5, 0x35, 0xB5, 0x75, 0xF5, // 0xA8 - 0xAF
+ 0x0D, 0x8D, 0x4D, 0xCD, 0x2D, 0xAD, 0x6D, 0xED, // 0xB0 - 0xB7
+ 0x1D, 0x9D, 0x5D, 0xDD, 0x3D, 0xBD, 0x7D, 0xFD, // 0xB8 - 0xBF
+ 0x03, 0x83, 0x43, 0xC3, 0x23, 0xA3, 0x63, 0xE3, // 0xC0 - 0xC7
+ 0x13, 0x93, 0x53, 0xD3, 0x33, 0xB3, 0x73, 0xF3, // 0xC8 - 0xCF
+ 0x0B, 0x8B, 0x4B, 0xCB, 0x2B, 0xAB, 0x6B, 0xEB, // 0xD0 - 0xD7
+ 0x1B, 0x9B, 0x5B, 0xDB, 0x3B, 0xBB, 0x7B, 0xFB, // 0xD8 - 0xDF
+ 0x07, 0x87, 0x47, 0xC7, 0x27, 0xA7, 0x67, 0xE7, // 0xE0 - 0xE7
+ 0x17, 0x97, 0x57, 0xD7, 0x37, 0xB7, 0x77, 0xF7, // 0xE8 - 0xEF
+ 0x0F, 0x8F, 0x4F, 0xCF, 0x2F, 0xAF, 0x6F, 0xEF, // 0xF0 - 0xF7
+ 0x1F, 0x9F, 0x5F, 0xDF, 0x3F, 0xBF, 0x7F, 0xFF, // 0xF8 - 0xFF
]
diff --git a/std/deflate/decode_deflate.wuffs b/std/deflate/decode_deflate.wuffs
index 188b0ce..5f9cb5b 100644
--- a/std/deflate/decode_deflate.wuffs
+++ b/std/deflate/decode_deflate.wuffs
@@ -45,17 +45,17 @@
// Some trailing elements are 0x08000000. Bit 27 indicates an invalid value.
pri const LCODE_MAGIC_NUMBERS : array[32] base.u32 = [
- 0x4000_0000, 0x4000_0100, 0x4000_0200, 0x4000_0300, 0x4000_0400, 0x4000_0500, 0x4000_0600, 0x4000_0700,
- 0x4000_0810, 0x4000_0A10, 0x4000_0C10, 0x4000_0E10, 0x4000_1020, 0x4000_1420, 0x4000_1820, 0x4000_1C20,
- 0x4000_2030, 0x4000_2830, 0x4000_3030, 0x4000_3830, 0x4000_4040, 0x4000_5040, 0x4000_6040, 0x4000_7040,
- 0x4000_8050, 0x4000_A050, 0x4000_C050, 0x4000_E050, 0x4000_FF00, 0x0800_0000, 0x0800_0000, 0x0800_0000,
+ 0x4000_0000, 0x4000_0100, 0x4000_0200, 0x4000_0300, 0x4000_0400, 0x4000_0500, 0x4000_0600, 0x4000_0700,
+ 0x4000_0810, 0x4000_0A10, 0x4000_0C10, 0x4000_0E10, 0x4000_1020, 0x4000_1420, 0x4000_1820, 0x4000_1C20,
+ 0x4000_2030, 0x4000_2830, 0x4000_3030, 0x4000_3830, 0x4000_4040, 0x4000_5040, 0x4000_6040, 0x4000_7040,
+ 0x4000_8050, 0x4000_A050, 0x4000_C050, 0x4000_E050, 0x4000_FF00, 0x0800_0000, 0x0800_0000, 0x0800_0000,
]
pri const DCODE_MAGIC_NUMBERS : array[32] base.u32 = [
- 0x4000_0000, 0x4000_0100, 0x4000_0200, 0x4000_0300, 0x4000_0410, 0x4000_0610, 0x4000_0820, 0x4000_0C20,
- 0x4000_1030, 0x4000_1830, 0x4000_2040, 0x4000_3040, 0x4000_4050, 0x4000_6050, 0x4000_8060, 0x4000_C060,
- 0x4001_0070, 0x4001_8070, 0x4002_0080, 0x4003_0080, 0x4004_0090, 0x4006_0090, 0x4008_00A0, 0x400C_00A0,
- 0x4010_00B0, 0x4018_00B0, 0x4020_00C0, 0x4030_00C0, 0x4040_00D0, 0x4060_00D0, 0x0800_0000, 0x0800_0000,
+ 0x4000_0000, 0x4000_0100, 0x4000_0200, 0x4000_0300, 0x4000_0410, 0x4000_0610, 0x4000_0820, 0x4000_0C20,
+ 0x4000_1030, 0x4000_1830, 0x4000_2040, 0x4000_3040, 0x4000_4050, 0x4000_6050, 0x4000_8060, 0x4000_C060,
+ 0x4001_0070, 0x4001_8070, 0x4002_0080, 0x4003_0080, 0x4004_0090, 0x4006_0090, 0x4008_00A0, 0x400C_00A0,
+ 0x4010_00B0, 0x4018_00B0, 0x4020_00C0, 0x4030_00C0, 0x4040_00D0, 0x4060_00D0, 0x0800_0000, 0x0800_0000,
]
// HUFFS_TABLE_SIZE is the smallest power of 2 that is greater than or equal to
@@ -67,89 +67,89 @@
pri const HUFFS_TABLE_MASK : base.u32 = 1023
pub struct decoder? implements base.io_transformer(
- // These fields yield src's bits in Least Significant Bits order.
- bits : base.u32,
- n_bits : base.u32,
+ // These fields yield src's bits in Least Significant Bits order.
+ bits : base.u32,
+ n_bits : base.u32,
- // transformed_history_count is the number of bytes written to the history
- // ringbuffer due to calling transform_io. It excludes any pre-history
- // written by explicit calls to add_history. It also excludes any bytes
- // decoded from the final transform_io call (the one that doesn't suspend)
- // as there is no further need for tracking history (for resolving back-
- // references) once the decoding completes.
- transformed_history_count : base.u64,
+ // transformed_history_count is the number of bytes written to the history
+ // ringbuffer due to calling transform_io. It excludes any pre-history
+ // written by explicit calls to add_history. It also excludes any bytes
+ // decoded from the final transform_io call (the one that doesn't suspend)
+ // as there is no further need for tracking history (for resolving back-
+ // references) once the decoding completes.
+ transformed_history_count : base.u64,
- // history_index indexes the history array, defined below.
- history_index : base.u32,
+ // history_index indexes the history array, defined below.
+ history_index : base.u32,
- // n_huffs_bits is discussed in the huffs field comment.
- n_huffs_bits : array[2] base.u32[..= 9],
+ // n_huffs_bits is discussed in the huffs field comment.
+ n_huffs_bits : array[2] base.u32[..= 9],
- // end_of_block is whether decode_huffman_xxx saw an end-of-block code.
- //
- // TODO: can decode_huffman_xxx signal this in band instead of out of band?
- end_of_block : base.bool,
+ // end_of_block is whether decode_huffman_xxx saw an end-of-block code.
+ //
+ // TODO: can decode_huffman_xxx signal this in band instead of out of band?
+ end_of_block : base.bool,
- util : base.utility,
+ util : base.utility,
)(
- // huffs and n_huffs_bits are the lookup tables for Huffman decodings.
- //
- // There are up to 2 Huffman decoders active at any one time. As per this
- // package's README.md:
- // - huffs[0] is used for clcode and lcode.
- // - huffs[1] is used for dcode.
- //
- // The initial table key is the low n_huffs_bits of the decoder.bits field.
- // Keys longer than 9 bits require a two step lookup, the first step
- // examines the low 9 bits, the second step examines the remaining bits.
- // Two steps are required at most, as keys are at most 15 bits long.
- //
- // Using decoder.bits's low n_huffs_bits as a table key is valid even if
- // decoder.n_bits is less than n_huffs_bits, because the immediate next
- // step after indexing the table by the key is to compare decoder.n_bits to
- // the table value's number of decoder.bits to consume. If it compares
- // less, then more source bytes are read and the table lookup re-tried.
- //
- // The table value's bits:
- // - bit 31 indicates a literal.
- // - bit 30 indicates a base number + extra bits.
- // - bit 29 indicates end-of-block.
- // - bit 28 indicates a redirect to another part of the table.
- // - bit 27 indicates an invalid value.
- // - bits 24 ..= 26 are zero.
- // - bits 8 ..= 23 are the redirect offset, literal (in bits [8 ..= 15])
- // or base number.
- // - bits 4 ..= 7 are the redirected table's size in bits or the number
- // of extra bits.
- // - bits 0 ..= 3 are the number of decoder.bits to consume.
- //
- // Exactly one of the eight bits [24 ..= 31] should be set.
- huffs : array[2] array[HUFFS_TABLE_SIZE] base.u32,
+ // huffs and n_huffs_bits are the lookup tables for Huffman decodings.
+ //
+ // There are up to 2 Huffman decoders active at any one time. As per this
+ // package's README.md:
+ // - huffs[0] is used for clcode and lcode.
+ // - huffs[1] is used for dcode.
+ //
+ // The initial table key is the low n_huffs_bits of the decoder.bits field.
+ // Keys longer than 9 bits require a two step lookup, the first step
+ // examines the low 9 bits, the second step examines the remaining bits.
+ // Two steps are required at most, as keys are at most 15 bits long.
+ //
+ // Using decoder.bits's low n_huffs_bits as a table key is valid even if
+ // decoder.n_bits is less than n_huffs_bits, because the immediate next
+ // step after indexing the table by the key is to compare decoder.n_bits to
+ // the table value's number of decoder.bits to consume. If it compares
+ // less, then more source bytes are read and the table lookup re-tried.
+ //
+ // The table value's bits:
+ // - bit 31 indicates a literal.
+ // - bit 30 indicates a base number + extra bits.
+ // - bit 29 indicates end-of-block.
+ // - bit 28 indicates a redirect to another part of the table.
+ // - bit 27 indicates an invalid value.
+ // - bits 24 ..= 26 are zero.
+ // - bits 8 ..= 23 are the redirect offset, literal (in bits [8 ..= 15])
+ // or base number.
+ // - bits 4 ..= 7 are the redirected table's size in bits or the number
+ // of extra bits.
+ // - bits 0 ..= 3 are the number of decoder.bits to consume.
+ //
+ // Exactly one of the eight bits [24 ..= 31] should be set.
+ huffs : array[2] array[HUFFS_TABLE_SIZE] base.u32,
- // history[.. 0x8000] holds up to the last 32KiB of decoded output, if the
- // decoding was incomplete (e.g. due to a short read or write). RFC 1951
- // (DEFLATE) gives the maximum distance in a length-distance back-reference
- // as 32768, or 0x8000. Similarly, the RFC gives the maximum length as 258.
- //
- // history[.. 0x8000] is a ringbuffer, so that the most distant byte in
- // the decoding isn't necessarily history[0]. The ringbuffer is full (i.e.
- // it holds 32KiB of history) if and only if history_index >= 0x8000.
- //
- // history[history_index & 0x7FFF] is where the next byte of decoded output
- // will be written.
- //
- // When suspended in decoder.transform_io, or after an add_history call,
- // history[0x8000 .. 0x8000 + (ML - 1)] duplicates history[.. (ML - 1)],
- // where ML is the maximum length (258 as stated above). This simplifies
- // copying up to ML bytes from the ringbuffer, as there is no need to split
- // the copy around the 0x8000 index.
- history : array[0x8000 + (258 - 1)] base.u8, // 32 KiB + (ML - 1) bytes.
+ // history[.. 0x8000] holds up to the last 32KiB of decoded output, if the
+ // decoding was incomplete (e.g. due to a short read or write). RFC 1951
+ // (DEFLATE) gives the maximum distance in a length-distance back-reference
+ // as 32768, or 0x8000. Similarly, the RFC gives the maximum length as 258.
+ //
+ // history[.. 0x8000] is a ringbuffer, so that the most distant byte in
+ // the decoding isn't necessarily history[0]. The ringbuffer is full (i.e.
+ // it holds 32KiB of history) if and only if history_index >= 0x8000.
+ //
+ // history[history_index & 0x7FFF] is where the next byte of decoded output
+ // will be written.
+ //
+ // When suspended in decoder.transform_io, or after an add_history call,
+ // history[0x8000 .. 0x8000 + (ML - 1)] duplicates history[.. (ML - 1)],
+ // where ML is the maximum length (258 as stated above). This simplifies
+ // copying up to ML bytes from the ringbuffer, as there is no need to split
+ // the copy around the 0x8000 index.
+ history : array[0x8000 + (258 - 1)] base.u8, // 32 KiB + (ML - 1) bytes.
- // code_lengths is used to pass out-of-band data to init_huff.
- //
- // code_lengths[args.n_codes0 + i] holds the number of bits in the i'th
- // code.
- code_lengths : array[320] base.u8,
+ // code_lengths is used to pass out-of-band data to init_huff.
+ //
+ // code_lengths[args.n_codes0 + i] holds the number of bits in the i'th
+ // code.
+ code_lengths : array[320] base.u8,
)
pub func decoder.add_history!(hist: slice base.u8) {
@@ -204,8 +204,8 @@
pub func decoder.workbuf_len() base.range_ii_u64 {
return this.util.make_range_ii_u64(
- min_incl: DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE,
- max_incl: DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE)
+ min_incl: DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE,
+ max_incl: DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE)
}
pub func decoder.transform_io?(dst: base.io_writer, src: base.io_reader, workbuf: slice base.u8) {
@@ -249,7 +249,7 @@
while.outer final == 0 {
while this.n_bits < 3,
- post this.n_bits >= 3,
+ post this.n_bits >= 3,
{
b0 = args.src.read_u8_as_u32?()
this.bits |= b0 << (this.n_bits & 3)
@@ -395,7 +395,7 @@
bits = this.bits
n_bits = this.n_bits
while n_bits < 14,
- post n_bits >= 14,
+ post n_bits >= 14,
{
b0 = args.src.read_u8_as_u32?()
bits |= b0 << n_bits
@@ -419,8 +419,8 @@
i = 0
while i < n_clen {
while n_bits < 3,
- inv i < n_clen,
- post n_bits >= 3,
+ inv i < n_clen,
+ post n_bits >= 3,
{
b1 = args.src.read_u8_as_u32?()
bits |= b1 << n_bits
@@ -449,7 +449,7 @@
// Decode a clcode symbol from H-CL.
while true,
- inv i < 320,
+ inv i < 320,
{
table_entry = this.huffs[0][bits & mask]
table_entry_n_bits = table_entry & 15
@@ -503,9 +503,9 @@
return "#internal error: inconsistent Huffman decoder state"
}
while n_bits < n_extra_bits,
- inv i < 320,
- inv rep_count <= 11,
- post n_bits >= n_extra_bits,
+ inv i < 320,
+ inv rep_count <= 11,
+ post n_bits >= n_extra_bits,
{
assert n_bits < 7 via "a < b: a < c; c <= b"(c: n_extra_bits)
b3 = args.src.read_u8_as_u32?()
@@ -643,7 +643,7 @@
// As a special case, allow a degenerate H-D Huffman table, with only
// one 1-bit code.
if (args.which == 1) and (counts[1] == 1) and
- (((counts[0] as base.u32) + args.n_codes0 + 1) == args.n_codes1) {
+ (((counts[0] as base.u32) + args.n_codes0 + 1) == args.n_codes1) {
i = 0
while i <= 29 {
@@ -708,7 +708,7 @@
// - offsets[5] = 10, formerly 8
i = args.n_codes0
while i < args.n_codes1,
- inv n_symbols <= 288,
+ inv n_symbols <= 288,
{
assert i < 320 via "a < b: a < c; c <= b"(c: args.n_codes1)
// TODO: this if check should be unnecessary.
@@ -732,7 +732,7 @@
// - max_cl = 5
min_cl = 1
while true,
- inv n_symbols <= 288,
+ inv n_symbols <= 288,
{
if counts[min_cl] <> 0 {
break
@@ -744,7 +744,7 @@
} endwhile
max_cl = 15
while true,
- inv n_symbols <= 288,
+ inv n_symbols <= 288,
{
if counts[max_cl] <> 0 {
break
@@ -793,9 +793,9 @@
key = 0
value = 0
while true,
- pre code < (1 << 15),
- pre i < 288,
- inv n_symbols <= 288,
+ pre code < (1 << 15),
+ pre i < 288,
+ inv n_symbols <= 288,
{
if (args.n_codes0 + (symbols[i] as base.u32)) >= 320 {
return "#internal error: inconsistent Huffman decoder state"
@@ -827,10 +827,10 @@
remaining = (1 as base.u32) << cl
j = prev_cl
while j <= 15,
- inv cl <= 9,
- inv code < (1 << 15),
- inv i < 288,
- inv n_symbols <= 288,
+ inv cl <= 9,
+ inv code < (1 << 15),
+ inv i < 288,
+ inv n_symbols <= 288,
{
if remaining <= (counts[j] as base.u32) {
break
@@ -892,9 +892,9 @@
high_bits = initial_high_bits
delta = (1 as base.u32) << cl
while high_bits >= delta,
- inv code < (1 << 15),
- inv i < 288,
- inv n_symbols <= 288,
+ inv code < (1 << 15),
+ inv i < 288,
+ inv n_symbols <= 288,
{
high_bits -= delta
if (top + ((high_bits | reversed_key) & 511)) >= HUFFS_TABLE_SIZE {
diff --git a/std/deflate/decode_huffman_bmi2.wuffs b/std/deflate/decode_huffman_bmi2.wuffs
index 3389e94..bc34fd7 100644
--- a/std/deflate/decode_huffman_bmi2.wuffs
+++ b/std/deflate/decode_huffman_bmi2.wuffs
@@ -16,7 +16,7 @@
// the "choose cpu_arch >= x86_bmi2". Unsurprisingly, having Bit Manipulation
// Instructions available to the compiler can help this function's performance.
pri func decoder.decode_huffman_bmi2!(dst: base.io_writer, src: base.io_reader) base.status,
- choose cpu_arch >= x86_bmi2,
+ choose cpu_arch >= x86_bmi2,
{
// When editing this function, consider making the equivalent change to the
// decode_huffman_slow function. Keep the diff between the two
@@ -108,7 +108,7 @@
redir_top = (table_entry >> 8) & 0xFFFF
redir_mask = ((1 as base.u32) << ((table_entry >> 4) & 0x0F)) - 1
table_entry = this.huffs[0][
- (redir_top + (((bits & 0xFFFF_FFFF) as base.u32) & redir_mask)) & HUFFS_TABLE_MASK]
+ (redir_top + (((bits & 0xFFFF_FFFF) as base.u32) & redir_mask)) & HUFFS_TABLE_MASK]
table_entry_n_bits = table_entry & 0x0F
bits >>= table_entry_n_bits
n_bits ~mod-= table_entry_n_bits
@@ -162,7 +162,7 @@
redir_top = (table_entry >> 8) & 0xFFFF
redir_mask = ((1 as base.u32) << ((table_entry >> 4) & 0x0F)) - 1
table_entry = this.huffs[1][
- (redir_top + (((bits & 0xFFFF_FFFF) as base.u32) & redir_mask)) & HUFFS_TABLE_MASK]
+ (redir_top + (((bits & 0xFFFF_FFFF) as base.u32) & redir_mask)) & HUFFS_TABLE_MASK]
table_entry_n_bits = table_entry & 0x0F
bits >>= table_entry_n_bits
n_bits ~mod-= table_entry_n_bits
@@ -193,7 +193,7 @@
// its presence minimizes the diff between decode_huffman_fastxx and
// decode_huffman_slow.
while true,
- pre args.dst.length() >= 266,
+ pre args.dst.length() >= 266,
{
// We can therefore prove:
assert (length as base.u64) <= args.dst.length() via "a <= b: a <= c; c <= b"(c: 266)
@@ -226,15 +226,15 @@
// because it cannot yield. We have already checked that
// args.dst.length() is large enough.
args.dst.limited_copy_u32_from_slice!(
- up_to: hlen, s: this.history[(this.history_index - hdist) & 0x7FFF ..])
+ up_to: hlen, s: this.history[(this.history_index - hdist) & 0x7FFF ..])
if length == 0 {
// No need to copy from args.dst.
continue.loop
}
if (((dist_minus_1 + 1) as base.u64) > args.dst.history_length()) or
- ((length as base.u64) > args.dst.length()) or
- (((length + 8) as base.u64) > args.dst.length()) {
+ ((length as base.u64) > args.dst.length()) or
+ (((length + 8) as base.u64) > args.dst.length()) {
return "#internal error: inconsistent distance"
}
}
@@ -255,15 +255,15 @@
// what was previously in the writer buffer.
if (dist_minus_1 + 1) >= 8 {
args.dst.limited_copy_u32_from_history_8_byte_chunks_fast!(
- up_to: length, distance: (dist_minus_1 + 1))
+ up_to: length, distance: (dist_minus_1 + 1))
} else if (dist_minus_1 + 1) == 1 {
// (distance == 1) is essentially RLE (Run Length Encoding). It
// happens often enough that it's worth special-casing.
args.dst.limited_copy_u32_from_history_8_byte_chunks_distance_1_fast!(
- up_to: length, distance: (dist_minus_1 + 1))
+ up_to: length, distance: (dist_minus_1 + 1))
} else {
args.dst.limited_copy_u32_from_history_fast!(
- up_to: length, distance: (dist_minus_1 + 1))
+ up_to: length, distance: (dist_minus_1 + 1))
}
break
} endwhile
@@ -283,7 +283,7 @@
return "#internal error: inconsistent n_bits"
}
while n_bits >= 8,
- post n_bits < 8,
+ post n_bits < 8,
{
n_bits -= 8
if args.src.can_undo_byte() {
diff --git a/std/deflate/decode_huffman_fast32.wuffs b/std/deflate/decode_huffman_fast32.wuffs
index 3ab0c2a..7c1f926 100644
--- a/std/deflate/decode_huffman_fast32.wuffs
+++ b/std/deflate/decode_huffman_fast32.wuffs
@@ -298,7 +298,7 @@
// its presence minimizes the diff between decode_huffman_fastxx and
// decode_huffman_slow.
while true,
- pre args.dst.length() >= 266,
+ pre args.dst.length() >= 266,
{
// We can therefore prove:
assert (length as base.u64) <= args.dst.length() via "a <= b: a <= c; c <= b"(c: 266)
@@ -331,15 +331,15 @@
// because it cannot yield. We have already checked that
// args.dst.length() is large enough.
args.dst.limited_copy_u32_from_slice!(
- up_to: hlen, s: this.history[(this.history_index - hdist) & 0x7FFF ..])
+ up_to: hlen, s: this.history[(this.history_index - hdist) & 0x7FFF ..])
if length == 0 {
// No need to copy from args.dst.
continue.loop
}
if (((dist_minus_1 + 1) as base.u64) > args.dst.history_length()) or
- ((length as base.u64) > args.dst.length()) or
- (((length + 8) as base.u64) > args.dst.length()) {
+ ((length as base.u64) > args.dst.length()) or
+ (((length + 8) as base.u64) > args.dst.length()) {
return "#internal error: inconsistent distance"
}
}
@@ -360,10 +360,10 @@
// what was previously in the writer buffer.
if (dist_minus_1 + 1) >= 8 {
args.dst.limited_copy_u32_from_history_8_byte_chunks_fast!(
- up_to: length, distance: (dist_minus_1 + 1))
+ up_to: length, distance: (dist_minus_1 + 1))
} else {
args.dst.limited_copy_u32_from_history_fast!(
- up_to: length, distance: (dist_minus_1 + 1))
+ up_to: length, distance: (dist_minus_1 + 1))
}
break
} endwhile
@@ -380,7 +380,7 @@
// even if conceptually, this function was responsible for reading the
// bytes we want to rewind.
while n_bits >= 8,
- post n_bits < 8,
+ post n_bits < 8,
{
n_bits -= 8
if args.src.can_undo_byte() {
diff --git a/std/deflate/decode_huffman_fast64.wuffs b/std/deflate/decode_huffman_fast64.wuffs
index 2030b51..a6e58f2 100644
--- a/std/deflate/decode_huffman_fast64.wuffs
+++ b/std/deflate/decode_huffman_fast64.wuffs
@@ -15,7 +15,7 @@
// TODO: describe how the xxx_fastxx version differs from the xxx_slow one, the
// assumptions that xxx_fastxx makes, and how that makes it fast.
pri func decoder.decode_huffman_fast64!(dst: base.io_writer, src: base.io_reader) base.status,
- choosy,
+ choosy,
{
// When editing this function, consider making the equivalent change to the
// decode_huffman_slow function. Keep the diff between the two
@@ -107,7 +107,7 @@
redir_top = (table_entry >> 8) & 0xFFFF
redir_mask = ((1 as base.u32) << ((table_entry >> 4) & 0x0F)) - 1
table_entry = this.huffs[0][
- (redir_top + (((bits & 0xFFFF_FFFF) as base.u32) & redir_mask)) & HUFFS_TABLE_MASK]
+ (redir_top + (((bits & 0xFFFF_FFFF) as base.u32) & redir_mask)) & HUFFS_TABLE_MASK]
table_entry_n_bits = table_entry & 0x0F
bits >>= table_entry_n_bits
n_bits ~mod-= table_entry_n_bits
@@ -161,7 +161,7 @@
redir_top = (table_entry >> 8) & 0xFFFF
redir_mask = ((1 as base.u32) << ((table_entry >> 4) & 0x0F)) - 1
table_entry = this.huffs[1][
- (redir_top + (((bits & 0xFFFF_FFFF) as base.u32) & redir_mask)) & HUFFS_TABLE_MASK]
+ (redir_top + (((bits & 0xFFFF_FFFF) as base.u32) & redir_mask)) & HUFFS_TABLE_MASK]
table_entry_n_bits = table_entry & 0x0F
bits >>= table_entry_n_bits
n_bits ~mod-= table_entry_n_bits
@@ -192,7 +192,7 @@
// its presence minimizes the diff between decode_huffman_fastxx and
// decode_huffman_slow.
while true,
- pre args.dst.length() >= 266,
+ pre args.dst.length() >= 266,
{
// We can therefore prove:
assert (length as base.u64) <= args.dst.length() via "a <= b: a <= c; c <= b"(c: 266)
@@ -225,15 +225,15 @@
// because it cannot yield. We have already checked that
// args.dst.length() is large enough.
args.dst.limited_copy_u32_from_slice!(
- up_to: hlen, s: this.history[(this.history_index - hdist) & 0x7FFF ..])
+ up_to: hlen, s: this.history[(this.history_index - hdist) & 0x7FFF ..])
if length == 0 {
// No need to copy from args.dst.
continue.loop
}
if (((dist_minus_1 + 1) as base.u64) > args.dst.history_length()) or
- ((length as base.u64) > args.dst.length()) or
- (((length + 8) as base.u64) > args.dst.length()) {
+ ((length as base.u64) > args.dst.length()) or
+ (((length + 8) as base.u64) > args.dst.length()) {
return "#internal error: inconsistent distance"
}
}
@@ -254,15 +254,15 @@
// what was previously in the writer buffer.
if (dist_minus_1 + 1) >= 8 {
args.dst.limited_copy_u32_from_history_8_byte_chunks_fast!(
- up_to: length, distance: (dist_minus_1 + 1))
+ up_to: length, distance: (dist_minus_1 + 1))
} else if (dist_minus_1 + 1) == 1 {
// (distance == 1) is essentially RLE (Run Length Encoding). It
// happens often enough that it's worth special-casing.
args.dst.limited_copy_u32_from_history_8_byte_chunks_distance_1_fast!(
- up_to: length, distance: (dist_minus_1 + 1))
+ up_to: length, distance: (dist_minus_1 + 1))
} else {
args.dst.limited_copy_u32_from_history_fast!(
- up_to: length, distance: (dist_minus_1 + 1))
+ up_to: length, distance: (dist_minus_1 + 1))
}
break
} endwhile
@@ -282,7 +282,7 @@
return "#internal error: inconsistent n_bits"
}
while n_bits >= 8,
- post n_bits < 8,
+ post n_bits < 8,
{
n_bits -= 8
if args.src.can_undo_byte() {
diff --git a/std/deflate/decode_huffman_slow.wuffs b/std/deflate/decode_huffman_slow.wuffs
index 1a4afb1..0205d50 100644
--- a/std/deflate/decode_huffman_slow.wuffs
+++ b/std/deflate/decode_huffman_slow.wuffs
@@ -124,7 +124,7 @@
table_entry_n_bits = (table_entry >> 4) & 0x0F
if table_entry_n_bits > 0 {
while n_bits < table_entry_n_bits,
- post n_bits >= table_entry_n_bits,
+ post n_bits >= table_entry_n_bits,
{
assert n_bits < 15 via "a < b: a < c; c <= b"(c: table_entry_n_bits)
b2 = args.src.read_u8_as_u32?()
@@ -189,7 +189,7 @@
table_entry_n_bits = (table_entry >> 4) & 0x0F
if table_entry_n_bits > 0 {
while n_bits < table_entry_n_bits,
- post n_bits >= table_entry_n_bits,
+ post n_bits >= table_entry_n_bits,
{
assert n_bits < 15 via "a < b: a < c; c <= b"(c: table_entry_n_bits)
b5 = args.src.read_u8_as_u32?()
@@ -223,7 +223,7 @@
// Copy from this.history[(this.history_index - hdist) ..].
n_copied = args.dst.limited_copy_u32_from_slice!(
- up_to: hlen, s: this.history[(this.history_index - hdist) & 0x7FFF ..])
+ up_to: hlen, s: this.history[(this.history_index - hdist) & 0x7FFF ..])
if n_copied < hlen {
assert n_copied < length via "a < b: a < c; c <= b"(c: hlen)
assert length > n_copied via "a > b: b < a"()
@@ -241,7 +241,7 @@
// Copy from args.dst.
n_copied = args.dst.limited_copy_u32_from_history!(
- up_to: length, distance: (dist_minus_1 + 1))
+ up_to: length, distance: (dist_minus_1 + 1))
if length <= n_copied {
continue.loop
}
diff --git a/std/gif/common_consts.wuffs b/std/gif/common_consts.wuffs
index 55cdd67..b0f1d2f 100644
--- a/std/gif/common_consts.wuffs
+++ b/std/gif/common_consts.wuffs
@@ -45,20 +45,20 @@
// ANIMEXTS1DOT0 is "ANIMEXTS1.0" as bytes.
pri const ANIMEXTS1DOT0 : array[11] base.u8 = [
- 0x41, 0x4E, 0x49, 0x4D, 0x45, 0x58, 0x54, 0x53, 0x31, 0x2E, 0x30,
+ 0x41, 0x4E, 0x49, 0x4D, 0x45, 0x58, 0x54, 0x53, 0x31, 0x2E, 0x30,
]
// NETSCAPE2DOT0 is "NETSCAPE2.0" as bytes.
pri const NETSCAPE2DOT0 : array[11] base.u8 = [
- 0x4E, 0x45, 0x54, 0x53, 0x43, 0x41, 0x50, 0x45, 0x32, 0x2E, 0x30,
+ 0x4E, 0x45, 0x54, 0x53, 0x43, 0x41, 0x50, 0x45, 0x32, 0x2E, 0x30,
]
// ICCRGBG1012 Is "ICCRGBG1012" as bytes.
pri const ICCRGBG1012 : array[11] base.u8 = [
- 0x49, 0x43, 0x43, 0x52, 0x47, 0x42, 0x47, 0x31, 0x30, 0x31, 0x32,
+ 0x49, 0x43, 0x43, 0x52, 0x47, 0x42, 0x47, 0x31, 0x30, 0x31, 0x32,
]
// XMPDATAXMP IS "XMP DataXMP" as bytes.
pri const XMPDATAXMP : array[11] base.u8 = [
- 0x58, 0x4D, 0x50, 0x20, 0x44, 0x61, 0x74, 0x61, 0x58, 0x4D, 0x50,
+ 0x58, 0x4D, 0x50, 0x20, 0x44, 0x61, 0x74, 0x61, 0x58, 0x4D, 0x50,
]
diff --git a/std/gif/decode_gif.wuffs b/std/gif/decode_gif.wuffs
index ac55de6..329494e 100644
--- a/std/gif/decode_gif.wuffs
+++ b/std/gif/decode_gif.wuffs
@@ -13,79 +13,79 @@
// limitations under the License.
pub struct decoder? implements base.image_decoder(
- width : base.u32,
- height : base.u32,
+ width : base.u32,
+ height : base.u32,
- // The call sequence state machine is discussed in
- // (/doc/std/image-decoders-call-sequence.md).
- //
- // A GIF's first frame's bounds affects the overall image bounds (per
- // test/data/artificial/gif-frame-out-of-bounds.gif.make-artificial.txt).
- // Decoding the first frame's bounds is part of decode_image_config even
- // though it's conceptually part of the first decode_frame_config.
- call_sequence : base.u8,
+ // The call sequence state machine is discussed in
+ // (/doc/std/image-decoders-call-sequence.md).
+ //
+ // A GIF's first frame's bounds affects the overall image bounds (per
+ // test/data/artificial/gif-frame-out-of-bounds.gif.make-artificial.txt).
+ // Decoding the first frame's bounds is part of decode_image_config even
+ // though it's conceptually part of the first decode_frame_config.
+ call_sequence : base.u8,
- report_metadata_iccp : base.bool,
- report_metadata_xmp : base.bool,
- metadata_fourcc : base.u32,
- metadata_io_position : base.u64,
+ report_metadata_iccp : base.bool,
+ report_metadata_xmp : base.bool,
+ metadata_fourcc : base.u32,
+ metadata_io_position : base.u64,
- quirks : array[QUIRKS_COUNT] base.bool,
+ quirks : array[QUIRKS_COUNT] base.bool,
- delayed_num_decoded_frames : base.bool,
- previous_lzw_decode_ended_abruptly : base.bool,
- seen_header : base.bool,
+ delayed_num_decoded_frames : base.bool,
+ previous_lzw_decode_ended_abruptly : base.bool,
+ seen_header : base.bool,
- has_global_palette : base.bool,
+ has_global_palette : base.bool,
- // interlace indexes the INTERLACE_START and INTERLACE_DELTA arrays.
- interlace : base.u8[..= 4],
+ // interlace indexes the INTERLACE_START and INTERLACE_DELTA arrays.
+ interlace : base.u8[..= 4],
- // Absent an ANIMEXTS1.0 or NETSCAPE2.0 extension, the implicit number of
- // animation loops is 1.
- seen_num_animation_loops_value : base.bool,
- num_animation_loops_value : base.u32,
+ // Absent an ANIMEXTS1.0 or NETSCAPE2.0 extension, the implicit number of
+ // animation loops is 1.
+ seen_num_animation_loops_value : base.bool,
+ num_animation_loops_value : base.u32,
- background_color_u32_argb_premul : base.u32,
- black_color_u32_argb_premul : base.u32,
+ background_color_u32_argb_premul : base.u32,
+ black_color_u32_argb_premul : base.u32,
- gc_has_transparent_index : base.bool,
- gc_transparent_index : base.u8,
- gc_disposal : base.u8,
- // There are 7_056000 flicks per centisecond.
- gc_duration : base.u64[..= 0xFFFF * 7_056000],
+ gc_has_transparent_index : base.bool,
+ gc_transparent_index : base.u8,
+ gc_disposal : base.u8,
+ // There are 7_056000 flicks per centisecond.
+ gc_duration : base.u64[..= 0xFFFF * 7_056000],
- frame_config_io_position : base.u64,
+ frame_config_io_position : base.u64,
- num_decoded_frame_configs_value : base.u64,
- num_decoded_frames_value : base.u64,
+ num_decoded_frame_configs_value : base.u64,
+ num_decoded_frames_value : base.u64,
- frame_rect_x0 : base.u32,
- frame_rect_y0 : base.u32,
- frame_rect_x1 : base.u32,
- frame_rect_y1 : base.u32,
+ frame_rect_x0 : base.u32,
+ frame_rect_y0 : base.u32,
+ frame_rect_x1 : base.u32,
+ frame_rect_y1 : base.u32,
- // The dst_etc fields are the output cursor during copy_to_image_buffer.
- dst_x : base.u32,
- dst_y : base.u32,
- dirty_max_excl_y : base.u32,
+ // The dst_etc fields are the output cursor during copy_to_image_buffer.
+ dst_x : base.u32,
+ dst_y : base.u32,
+ dirty_max_excl_y : base.u32,
- // Indexes into the compressed array, defined below.
- compressed_ri : base.u64,
- compressed_wi : base.u64,
+ // Indexes into the compressed array, defined below.
+ compressed_ri : base.u64,
+ compressed_wi : base.u64,
- swizzler : base.pixel_swizzler,
+ swizzler : base.pixel_swizzler,
- util : base.utility,
+ util : base.utility,
)(
- compressed : array[4096] base.u8,
+ compressed : array[4096] base.u8,
- // palettes[0] and palettes[1] are the Global and Local Color Table.
- palettes : array[2] array[4 * 256] base.u8,
- // dst_palette is the swizzled color table.
- dst_palette : array[4 * 256] base.u8,
+ // palettes[0] and palettes[1] are the Global and Local Color Table.
+ palettes : array[2] array[4 * 256] base.u8,
+ // dst_palette is the swizzled color table.
+ dst_palette : array[4 * 256] base.u8,
- lzw : lzw.decoder,
+ lzw : lzw.decoder,
)
pub func decoder.set_quirk_enabled!(quirk: base.u32, enabled: base.bool) {
@@ -125,10 +125,10 @@
ffio = not this.gc_has_transparent_index
if not this.quirks[QUIRK_HONOR_BACKGROUND_COLOR - QUIRKS_BASE] {
ffio = ffio and
- (this.frame_rect_x0 == 0) and
- (this.frame_rect_y0 == 0) and
- (this.frame_rect_x1 == this.width) and
- (this.frame_rect_y1 == this.height)
+ (this.frame_rect_x0 == 0) and
+ (this.frame_rect_y0 == 0) and
+ (this.frame_rect_x1 == this.width) and
+ (this.frame_rect_y1 == this.height)
} else if ffio {
// Use opaque black, not transparent black.
this.black_color_u32_argb_premul = 0xFF00_0000
@@ -140,12 +140,12 @@
if args.dst <> nullptr {
args.dst.set!(
- pixfmt: base.PIXEL_FORMAT__INDEXED__BGRA_BINARY,
- pixsub: 0,
- width: this.width,
- height: this.height,
- first_frame_io_position: this.frame_config_io_position,
- first_frame_is_opaque: ffio)
+ pixfmt: base.PIXEL_FORMAT__INDEXED__BGRA_BINARY,
+ pixsub: 0,
+ width: this.width,
+ height: this.height,
+ first_frame_io_position: this.frame_config_io_position,
+ first_frame_is_opaque: ffio)
}
if this.call_sequence == 0x00 {
@@ -185,16 +185,16 @@
while true {
while true,
- post args.src.length() > 0,
+ post args.src.length() > 0,
{
if args.src.position() <> this.metadata_io_position {
if args.minfo <> nullptr {
args.minfo.set!(
- flavor: base.MORE_INFORMATION__FLAVOR__IO_SEEK,
- w: 0,
- x: this.metadata_io_position,
- y: 0,
- z: 0)
+ flavor: base.MORE_INFORMATION__FLAVOR__IO_SEEK,
+ w: 0,
+ x: this.metadata_io_position,
+ y: 0,
+ z: 0)
}
yield? base."$mispositioned read"
continue
@@ -203,11 +203,11 @@
if args.src.length() <= 0 {
if args.minfo <> nullptr {
args.minfo.set!(
- flavor: 0,
- w: 0,
- x: 0,
- y: 0,
- z: 0)
+ flavor: 0,
+ w: 0,
+ x: 0,
+ y: 0,
+ z: 0)
}
yield? base."$short read"
continue
@@ -235,11 +235,11 @@
if args.minfo <> nullptr {
args.minfo.set!(
- flavor: base.MORE_INFORMATION__FLAVOR__METADATA_RAW_PASSTHROUGH,
- w: this.metadata_fourcc,
- x: 0,
- y: args.src.position(),
- z: this.metadata_io_position)
+ flavor: base.MORE_INFORMATION__FLAVOR__METADATA_RAW_PASSTHROUGH,
+ w: this.metadata_fourcc,
+ x: 0,
+ y: args.src.position(),
+ z: this.metadata_io_position)
}
yield? base."$even more information"
@@ -247,11 +247,11 @@
if args.minfo <> nullptr {
args.minfo.set!(
- flavor: base.MORE_INFORMATION__FLAVOR__METADATA_RAW_PASSTHROUGH,
- w: this.metadata_fourcc,
- x: 0,
- y: this.metadata_io_position,
- z: this.metadata_io_position)
+ flavor: base.MORE_INFORMATION__FLAVOR__METADATA_RAW_PASSTHROUGH,
+ w: this.metadata_fourcc,
+ x: 0,
+ y: this.metadata_io_position,
+ z: this.metadata_io_position)
}
this.call_sequence &= 0xEF
this.metadata_fourcc = 0
@@ -292,16 +292,16 @@
// The "foo.min(a:this.width_or_height)" calls clip the nominal frame_rect
// to the image_rect.
return this.util.make_rect_ie_u32(
- min_incl_x: this.frame_rect_x0.min(a: this.width),
- min_incl_y: this.frame_rect_y0.min(a: this.height),
- max_excl_x: this.frame_rect_x1.min(a: this.width),
- max_excl_y: this.dirty_max_excl_y.min(a: this.height))
+ min_incl_x: this.frame_rect_x0.min(a: this.width),
+ min_incl_y: this.frame_rect_y0.min(a: this.height),
+ max_excl_x: this.frame_rect_x1.min(a: this.width),
+ max_excl_y: this.dirty_max_excl_y.min(a: this.height))
}
pub func decoder.workbuf_len() base.range_ii_u64 {
return this.util.make_range_ii_u64(
- min_incl: DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE,
- max_incl: DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE)
+ min_incl: DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE,
+ max_incl: DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE)
}
pub func decoder.restart_frame!(index: base.u64, io_position: base.u64) base.status {
@@ -370,10 +370,10 @@
// If the quirk is enabled and the first frame has a local color
// palette, its background color is black.
if this.quirks[QUIRK_FIRST_FRAME_LOCAL_PALETTE_MEANS_BLACK_BACKGROUND - QUIRKS_BASE] and
- (this.num_decoded_frame_configs_value == 0) {
+ (this.num_decoded_frame_configs_value == 0) {
while args.src.length() <= 0,
- post args.src.length() > 0,
+ post args.src.length() > 0,
{
yield? base."$short read"
} endwhile
@@ -388,17 +388,17 @@
// The "foo.min(a:this.width_or_height)" calls clip the nominal
// frame_rect to the image_rect.
args.dst.set!(bounds: this.util.make_rect_ie_u32(
- min_incl_x: this.frame_rect_x0.min(a: this.width),
- min_incl_y: this.frame_rect_y0.min(a: this.height),
- max_excl_x: this.frame_rect_x1.min(a: this.width),
- max_excl_y: this.frame_rect_y1.min(a: this.height)),
- duration: this.gc_duration,
- index: this.num_decoded_frame_configs_value,
- io_position: this.frame_config_io_position,
- disposal: this.gc_disposal,
- opaque_within_bounds: not this.gc_has_transparent_index,
- overwrite_instead_of_blend: false,
- background_color: background_color)
+ min_incl_x: this.frame_rect_x0.min(a: this.width),
+ min_incl_y: this.frame_rect_y0.min(a: this.height),
+ max_excl_x: this.frame_rect_x1.min(a: this.width),
+ max_excl_y: this.frame_rect_y1.min(a: this.height)),
+ duration: this.gc_duration,
+ index: this.num_decoded_frame_configs_value,
+ io_position: this.frame_config_io_position,
+ disposal: this.gc_disposal,
+ opaque_within_bounds: not this.gc_has_transparent_index,
+ overwrite_instead_of_blend: false,
+ background_color: background_color)
}
this.num_decoded_frame_configs_value ~sat+= 1
@@ -455,7 +455,7 @@
return base."@end of data"
}
if this.quirks[QUIRK_REJECT_EMPTY_FRAME - QUIRKS_BASE] and
- ((this.frame_rect_x0 == this.frame_rect_x1) or (this.frame_rect_y0 == this.frame_rect_y1)) {
+ ((this.frame_rect_x0 == this.frame_rect_x1) or (this.frame_rect_y0 == this.frame_rect_y1)) {
return "#bad frame size"
}
this.decode_id_part1?(dst: args.dst, src: args.src, blend: args.blend)
@@ -528,7 +528,7 @@
i += 1
} endwhile
if (c[0] <> 'G') or (c[1] <> 'I') or (c[2] <> 'F') or (c[3] <> '8') or
- ((c[4] <> '7') and (c[4] <> '9')) or (c[5] <> 'a') {
+ ((c[4] <> '7') and (c[4] <> '9')) or (c[5] <> 'a') {
return "#bad header"
}
}
@@ -571,14 +571,14 @@
if this.quirks[QUIRK_HONOR_BACKGROUND_COLOR - QUIRKS_BASE] {
if (background_color_index <> 0) and
- ((background_color_index as base.u32) < num_palette_entries) {
+ ((background_color_index as base.u32) < num_palette_entries) {
j = 4 * (background_color_index as base.u32)
this.background_color_u32_argb_premul =
- ((this.palettes[0][j + 0] as base.u32) << 0) |
- ((this.palettes[0][j + 1] as base.u32) << 8) |
- ((this.palettes[0][j + 2] as base.u32) << 16) |
- ((this.palettes[0][j + 3] as base.u32) << 24)
+ ((this.palettes[0][j + 0] as base.u32) << 0) |
+ ((this.palettes[0][j + 1] as base.u32) << 8) |
+ ((this.palettes[0][j + 2] as base.u32) << 16) |
+ ((this.palettes[0][j + 3] as base.u32) << 24)
} else {
// The background color is either opaque black or transparent
// black. We set it to an arbitrary nonsense value (77) for
@@ -862,11 +862,11 @@
}
status = this.swizzler.prepare!(
- dst_pixfmt: args.dst.pixel_format(),
- dst_palette: args.dst.palette_or_else(fallback: this.dst_palette[..]),
- src_pixfmt: this.util.make_pixel_format(repr: base.PIXEL_FORMAT__INDEXED__BGRA_BINARY),
- src_palette: this.palettes[which_palette][..],
- blend: args.blend)
+ dst_pixfmt: args.dst.pixel_format(),
+ dst_palette: args.dst.palette_or_else(fallback: this.dst_palette[..]),
+ src_pixfmt: this.util.make_pixel_format(repr: base.PIXEL_FORMAT__INDEXED__BGRA_BINARY),
+ src_palette: this.palettes[which_palette][..],
+ blend: args.blend)
if not status.is_ok() {
return status
}
@@ -936,8 +936,8 @@
break
}
n_copied = args.src.limited_copy_u32_to_slice!(
- up_to: (n_compressed & 0xFFFF_FFFF) as base.u32,
- s: this.compressed[this.compressed_wi ..])
+ up_to: (n_compressed & 0xFFFF_FFFF) as base.u32,
+ s: this.compressed[this.compressed_wi ..])
this.compressed_wi ~sat+= n_copied as base.u64
block_size ~sat-= n_copied as base.u64
if block_size > 0 {
@@ -958,7 +958,7 @@
io_bind (io: r, data: this.compressed[this.compressed_ri .. this.compressed_wi], history_position: 0) {
mark = r.mark()
lzw_status =? this.lzw.transform_io?(
- dst: this.util.empty_io_writer(), src: r, workbuf: this.util.empty_slice_u8())
+ dst: this.util.empty_io_writer(), src: r, workbuf: this.util.empty_slice_u8())
this.compressed_ri ~sat+= r.count_since(mark: mark)
}
@@ -985,7 +985,7 @@
} else if lzw_status == base."$short write" {
continue.inner
} else if this.quirks[QUIRK_IGNORE_TOO_MUCH_PIXEL_DATA - QUIRKS_BASE] and
- (this.dst_y >= this.frame_rect_y1) and (this.interlace == 0) {
+ (this.dst_y >= this.frame_rect_y1) and (this.interlace == 0) {
// It's invalid LZW-compressed data, but we still have a full
// frame and have opted in to QUIRK_IGNORE_TOO_MUCH_PIXEL_DATA,
// so treat it like the lzw_status.is_ok() case, other than not
@@ -1004,8 +1004,8 @@
this.compressed_wi = 0
if (this.dst_y < this.frame_rect_y1) and
- (this.frame_rect_x0 <> this.frame_rect_x1) and
- (this.frame_rect_y0 <> this.frame_rect_y1) {
+ (this.frame_rect_x0 <> this.frame_rect_x1) and
+ (this.frame_rect_y0 <> this.frame_rect_y1) {
return base."#not enough data"
}
}
@@ -1068,7 +1068,7 @@
dst = dst[i ..]
}
n = this.swizzler.swizzle_interleaved_from_slice!(
- dst: dst, dst_palette: this.dst_palette[..], src: src)
+ dst: dst, dst_palette: this.dst_palette[..], src: src)
src_ri ~sat+= n
this.dst_x ~sat+= (n & 0xFFFF_FFFF) as base.u32
@@ -1091,8 +1091,8 @@
// Some other GIF implementations call this progressive display or
// a "Haeberli inspired" technique.
if (this.num_decoded_frames_value == 0) and
- (not this.gc_has_transparent_index) and
- (this.interlace > 1) {
+ (not this.gc_has_transparent_index) and
+ (this.interlace > 1) {
replicate_src = tab.row_u32(y: this.dst_y)
replicate_y0 = this.dst_y ~sat+ 1
diff --git a/std/gzip/decode_gzip.wuffs b/std/gzip/decode_gzip.wuffs
index 699975b..40c415c 100644
--- a/std/gzip/decode_gzip.wuffs
+++ b/std/gzip/decode_gzip.wuffs
@@ -25,12 +25,12 @@
pub const DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE : base.u64 = 1
pub struct decoder? implements base.io_transformer(
- ignore_checksum : base.bool,
- checksum : crc32.ieee_hasher,
+ ignore_checksum : base.bool,
+ checksum : crc32.ieee_hasher,
- flate : deflate.decoder,
+ flate : deflate.decoder,
- util : base.utility,
+ util : base.utility,
)
pub func decoder.set_quirk_enabled!(quirk: base.u32, enabled: base.bool) {
@@ -41,8 +41,8 @@
pub func decoder.workbuf_len() base.range_ii_u64 {
return this.util.make_range_ii_u64(
- min_incl: DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE,
- max_incl: DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE)
+ min_incl: DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE,
+ max_incl: DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE)
}
pub func decoder.transform_io?(dst: base.io_writer, src: base.io_reader, workbuf: slice base.u8) {
@@ -141,7 +141,7 @@
checksum_want = args.src.read_u32le?()
decoded_length_want = args.src.read_u32le?()
if (not this.ignore_checksum) and
- ((checksum_got <> checksum_want) or (decoded_length_got <> decoded_length_want)) {
+ ((checksum_got <> checksum_want) or (decoded_length_got <> decoded_length_want)) {
return "#bad checksum"
}
}
diff --git a/std/json/common_consts.wuffs b/std/json/common_consts.wuffs
index dc9ab34..405ee86 100644
--- a/std/json/common_consts.wuffs
+++ b/std/json/common_consts.wuffs
@@ -85,69 +85,69 @@
// If the element is zero then "\i" is invalid, or it is a special case, the
// start of "\x12", "\u1234" or "\U12345678".
pri const LUT_BACKSLASHES : array[256] base.u8 = [
- // 0 1 2 3 4 5 6 7
- // 8 9 A B C D E F
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x00 ..= 0x07.
- 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x08 ..= 0x0F. '\n'.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x10 ..= 0x17.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x18 ..= 0x1F.
- 0x00, 0x00, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x05, // 0x20 ..= 0x27. '"', '\''.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAF, // 0x28 ..= 0x2F. '/'.
- 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x30 ..= 0x37. '0'.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, // 0x38 ..= 0x3F. '?'
+ // 0 1 2 3 4 5 6 7
+ // 8 9 A B C D E F
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x00 ..= 0x07.
+ 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x08 ..= 0x0F. '\n'.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x10 ..= 0x17.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x18 ..= 0x1F.
+ 0x00, 0x00, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x05, // 0x20 ..= 0x27. '"', '\''.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAF, // 0x28 ..= 0x2F. '/'.
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x30 ..= 0x37. '0'.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, // 0x38 ..= 0x3F. '?'
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x40 ..= 0x47.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x48 ..= 0x4F.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x50 ..= 0x57.
- 0x00, 0x00, 0x00, 0x00, 0xDC, 0x00, 0x00, 0x00, // 0x58 ..= 0x5F. '\\'.
- 0x00, 0x01, 0x88, 0x00, 0x00, 0x02, 0x8C, 0x00, // 0x60 ..= 0x67. 'a', 'b', 'e', 'f'.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x00, // 0x68 ..= 0x6F. 'n'.
- 0x00, 0x00, 0x8D, 0x00, 0x89, 0x00, 0x06, 0x00, // 0x70 ..= 0x77. 'r', 't', 'v'.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x78 ..= 0x7F.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x40 ..= 0x47.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x48 ..= 0x4F.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x50 ..= 0x57.
+ 0x00, 0x00, 0x00, 0x00, 0xDC, 0x00, 0x00, 0x00, // 0x58 ..= 0x5F. '\\'.
+ 0x00, 0x01, 0x88, 0x00, 0x00, 0x02, 0x8C, 0x00, // 0x60 ..= 0x67. 'a', 'b', 'e', 'f'.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x00, // 0x68 ..= 0x6F. 'n'.
+ 0x00, 0x00, 0x8D, 0x00, 0x89, 0x00, 0x06, 0x00, // 0x70 ..= 0x77. 'r', 't', 'v'.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x78 ..= 0x7F.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80 ..= 0x87.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x88 ..= 0x8F.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x90 ..= 0x97.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x98 ..= 0x9F.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xA0 ..= 0xA7.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xA8 ..= 0xAF.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xB0 ..= 0xB7.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xB8 ..= 0xBF.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80 ..= 0x87.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x88 ..= 0x8F.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x90 ..= 0x97.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x98 ..= 0x9F.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xA0 ..= 0xA7.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xA8 ..= 0xAF.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xB0 ..= 0xB7.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xB8 ..= 0xBF.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC0 ..= 0xC7.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC8 ..= 0xCF.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD0 ..= 0xD7.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD8 ..= 0xDF.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xE0 ..= 0xE7.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xE8 ..= 0xEF.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xF0 ..= 0xF7.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xF8 ..= 0xFF.
- // 0 1 2 3 4 5 6 7
- // 8 9 A B C D E F
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC0 ..= 0xC7.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC8 ..= 0xCF.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD0 ..= 0xD7.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD8 ..= 0xDF.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xE0 ..= 0xE7.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xE8 ..= 0xEF.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xF0 ..= 0xF7.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xF8 ..= 0xFF.
+ // 0 1 2 3 4 5 6 7
+ // 8 9 A B C D E F
]
// LUT_QUIRKY_BACKSLASHES_QUIRKS is discussed in the LUT_BACKSLASHES comment.
// The first element (index 0) is not used, but 8 is a round power of 2, so
// enforcing index-in-bounds is a simple "&7" operation.
pri const LUT_QUIRKY_BACKSLASHES_QUIRKS : array[8] base.u8[..= 0x0A] = [
- 0,
- // Uncommenting the following lines requires being able to define consts in
- // terms of other consts, which could be non-trivial to specify and
- // implement (to avoid infinite loops).
- 0x01, // (QUIRK_ALLOW_BACKSLASH_A - QUIRKS_BASE) as base.u8,
- 0x03, // (QUIRK_ALLOW_BACKSLASH_E - QUIRKS_BASE) as base.u8,
- 0x04, // (QUIRK_ALLOW_BACKSLASH_NEW_LINE - QUIRKS_BASE) as base.u8,
- 0x05, // (QUIRK_ALLOW_BACKSLASH_QUESTION_MARK - QUIRKS_BASE) as base.u8,
- 0x06, // (QUIRK_ALLOW_BACKSLASH_SINGLE_QUOTE - QUIRKS_BASE) as base.u8,
- 0x07, // (QUIRK_ALLOW_BACKSLASH_V - QUIRKS_BASE) as base.u8,
- 0x0A, // (QUIRK_ALLOW_BACKSLASH_ZERO - QUIRKS_BASE) as base.u8,
+ 0,
+ // Uncommenting the following lines requires being able to define consts in
+ // terms of other consts, which could be non-trivial to specify and
+ // implement (to avoid infinite loops).
+ 0x01, // (QUIRK_ALLOW_BACKSLASH_A - QUIRKS_BASE) as base.u8,
+ 0x03, // (QUIRK_ALLOW_BACKSLASH_E - QUIRKS_BASE) as base.u8,
+ 0x04, // (QUIRK_ALLOW_BACKSLASH_NEW_LINE - QUIRKS_BASE) as base.u8,
+ 0x05, // (QUIRK_ALLOW_BACKSLASH_QUESTION_MARK - QUIRKS_BASE) as base.u8,
+ 0x06, // (QUIRK_ALLOW_BACKSLASH_SINGLE_QUOTE - QUIRKS_BASE) as base.u8,
+ 0x07, // (QUIRK_ALLOW_BACKSLASH_V - QUIRKS_BASE) as base.u8,
+ 0x0A, // (QUIRK_ALLOW_BACKSLASH_ZERO - QUIRKS_BASE) as base.u8,
]
// LUT_QUIRKY_BACKSLASHES_CHARS is discussed in the LUT_BACKSLASHES comment.
// The first element (index 0) is not used, but 8 is a round power of 2, so
// enforcing index-in-bounds is a simple "&7" operation.
pri const LUT_QUIRKY_BACKSLASHES_CHARS : array[8] base.u8 = [
- 0x00, 0x07, 0x1B, 0x0A, 0x3F, 0x27, 0x0B, 0x00,
+ 0x00, 0x07, 0x1B, 0x0A, 0x3F, 0x27, 0x0B, 0x00,
]
// LUT_CHARS helps decode bytes within a string:
@@ -170,45 +170,45 @@
// %xF4 %x80-8F 2( UTF8-tail )
// UTF8-tail = %x80-BF
pri const LUT_CHARS : array[256] base.u8 = [
- // 0 1 2 3 4 5 6 7
- // 8 9 A B C D E F
- 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, // 0x00 ..= 0x07. C0 control codes.
- 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, // 0x08 ..= 0x0F. C0 control codes.
- 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, // 0x10 ..= 0x17. C0 control codes.
- 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, // 0x18 ..= 0x1F. C0 control codes.
- 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x20 ..= 0x27. UTF-8-1; '"'.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x28 ..= 0x2F. UTF-8-1.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x30 ..= 0x37. UTF-8-1.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x38 ..= 0x3F. UTF-8-1.
+ // 0 1 2 3 4 5 6 7
+ // 8 9 A B C D E F
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, // 0x00 ..= 0x07. C0 control codes.
+ 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, // 0x08 ..= 0x0F. C0 control codes.
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, // 0x10 ..= 0x17. C0 control codes.
+ 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, // 0x18 ..= 0x1F. C0 control codes.
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x20 ..= 0x27. UTF-8-1; '"'.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x28 ..= 0x2F. UTF-8-1.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x30 ..= 0x37. UTF-8-1.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x38 ..= 0x3F. UTF-8-1.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x40 ..= 0x47. UTF-8-1.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x48 ..= 0x4F. UTF-8-1.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x50 ..= 0x57. UTF-8-1.
- 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // 0x58 ..= 0x5F. UTF-8-1; '\\'.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x60 ..= 0x67. UTF-8-1.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x68 ..= 0x6F. UTF-8-1.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x70 ..= 0x77. UTF-8-1.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x78 ..= 0x7F. UTF-8-1.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x40 ..= 0x47. UTF-8-1.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x48 ..= 0x4F. UTF-8-1.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x50 ..= 0x57. UTF-8-1.
+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // 0x58 ..= 0x5F. UTF-8-1; '\\'.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x60 ..= 0x67. UTF-8-1.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x68 ..= 0x6F. UTF-8-1.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x70 ..= 0x77. UTF-8-1.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x78 ..= 0x7F. UTF-8-1.
- 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, // 0x80 ..= 0x87. UTF-8 tail.
- 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, // 0x88 ..= 0x8F. UTF-8 tail.
- 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, // 0x90 ..= 0x97. UTF-8 tail.
- 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, // 0x98 ..= 0x9F. UTF-8 tail.
- 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, // 0xA0 ..= 0xA7. UTF-8 tail.
- 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, // 0xA8 ..= 0xAF. UTF-8 tail.
- 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, // 0xB0 ..= 0xB7. UTF-8 tail.
- 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, // 0xB8 ..= 0xBF. UTF-8 tail.
+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, // 0x80 ..= 0x87. UTF-8 tail.
+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, // 0x88 ..= 0x8F. UTF-8 tail.
+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, // 0x90 ..= 0x97. UTF-8 tail.
+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, // 0x98 ..= 0x9F. UTF-8 tail.
+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, // 0xA0 ..= 0xA7. UTF-8 tail.
+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, // 0xA8 ..= 0xAF. UTF-8 tail.
+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, // 0xB0 ..= 0xB7. UTF-8 tail.
+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, // 0xB8 ..= 0xBF. UTF-8 tail.
- 0x20, 0x20, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, // 0xC0 ..= 0xC7. Invalid UTF-8; UTF-8-2.
- 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, // 0xC8 ..= 0xCF. UTF-8-2.
- 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, // 0xD0 ..= 0xD7. UTF-8-2.
- 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, // 0xD8 ..= 0xDF. UTF-8-2.
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, // 0xE0 ..= 0xE7. UTF-8-3.
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, // 0xE8 ..= 0xEF. UTF-8-3.
- 0x05, 0x05, 0x05, 0x05, 0x05, 0x20, 0x20, 0x20, // 0xF0 ..= 0xF7. UTF-8-4; Invalid UTF-8.
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 0xF8 ..= 0xFF. Invalid UTF-8.
- // 0 1 2 3 4 5 6 7
- // 8 9 A B C D E F
+ 0x20, 0x20, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, // 0xC0 ..= 0xC7. Invalid UTF-8; UTF-8-2.
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, // 0xC8 ..= 0xCF. UTF-8-2.
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, // 0xD0 ..= 0xD7. UTF-8-2.
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, // 0xD8 ..= 0xDF. UTF-8-2.
+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, // 0xE0 ..= 0xE7. UTF-8-3.
+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, // 0xE8 ..= 0xEF. UTF-8-3.
+ 0x05, 0x05, 0x05, 0x05, 0x05, 0x20, 0x20, 0x20, // 0xF0 ..= 0xF7. UTF-8-4; Invalid UTF-8.
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 0xF8 ..= 0xFF. Invalid UTF-8.
+ // 0 1 2 3 4 5 6 7
+ // 8 9 A B C D E F
]
pri const CLASS_WHITESPACE : base.u8 = 0x00
@@ -270,127 +270,127 @@
// The bitmasks are used by the "expect" variable: what the next character
// class can be. See EXPECT_ETC above.
pri const LUT_CLASSES : array[256] base.u8[..= 0x0F] = [
- // 0 1 2 3 4 5 6 7
- // 8 9 A B C D E F
- 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0x00 ..= 0x07.
- 0x0F, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x0F, 0x0F, // 0x08 ..= 0x0F. '\t', '\n', '\r'.
- 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0x10 ..= 0x17.
- 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0x18 ..= 0x1F.
- 0x00, 0x0F, 0x01, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0x20 ..= 0x27. ' ', '"'.
- 0x0F, 0x0F, 0x0F, 0x0B, 0x02, 0x04, 0x0F, 0x0C, // 0x28 ..= 0x2F. '+', ',', '-', '/'.
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, // 0x30 ..= 0x37. '0'-'7'.
- 0x04, 0x04, 0x03, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0x38 ..= 0x3F. '8'-'9', ':'.
+ // 0 1 2 3 4 5 6 7
+ // 8 9 A B C D E F
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0x00 ..= 0x07.
+ 0x0F, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x0F, 0x0F, // 0x08 ..= 0x0F. '\t', '\n', '\r'.
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0x10 ..= 0x17.
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0x18 ..= 0x1F.
+ 0x00, 0x0F, 0x01, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0x20 ..= 0x27. ' ', '"'.
+ 0x0F, 0x0F, 0x0F, 0x0B, 0x02, 0x04, 0x0F, 0x0C, // 0x28 ..= 0x2F. '+', ',', '-', '/'.
+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, // 0x30 ..= 0x37. '0'-'7'.
+ 0x04, 0x04, 0x03, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0x38 ..= 0x3F. '8'-'9', ':'.
- 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0x40 ..= 0x47.
- 0x0F, 0x0B, 0x0F, 0x0F, 0x0F, 0x0F, 0x0B, 0x0F, // 0x48 ..= 0x4F. 'I', 'N'.
- 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0x50 ..= 0x57.
- 0x0F, 0x0F, 0x0F, 0x07, 0x0F, 0x08, 0x0F, 0x0F, // 0x58 ..= 0x5F. '[', ']'.
- 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x09, 0x0F, // 0x60 ..= 0x67. 'f'.
- 0x0F, 0x0B, 0x0F, 0x0F, 0x0F, 0x0F, 0x0B, 0x0F, // 0x68 ..= 0x6F. 'i', 'n'.
- 0x0F, 0x0F, 0x0F, 0x0F, 0x0A, 0x0F, 0x0F, 0x0F, // 0x70 ..= 0x77. 't'.
- 0x0F, 0x0F, 0x0F, 0x05, 0x0F, 0x06, 0x0F, 0x0F, // 0x78 ..= 0x7F. '{', '}'.
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0x40 ..= 0x47.
+ 0x0F, 0x0B, 0x0F, 0x0F, 0x0F, 0x0F, 0x0B, 0x0F, // 0x48 ..= 0x4F. 'I', 'N'.
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0x50 ..= 0x57.
+ 0x0F, 0x0F, 0x0F, 0x07, 0x0F, 0x08, 0x0F, 0x0F, // 0x58 ..= 0x5F. '[', ']'.
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x09, 0x0F, // 0x60 ..= 0x67. 'f'.
+ 0x0F, 0x0B, 0x0F, 0x0F, 0x0F, 0x0F, 0x0B, 0x0F, // 0x68 ..= 0x6F. 'i', 'n'.
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x0A, 0x0F, 0x0F, 0x0F, // 0x70 ..= 0x77. 't'.
+ 0x0F, 0x0F, 0x0F, 0x05, 0x0F, 0x06, 0x0F, 0x0F, // 0x78 ..= 0x7F. '{', '}'.
- 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0x80 ..= 0x87.
- 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0x88 ..= 0x8F.
- 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0x90 ..= 0x97.
- 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0x98 ..= 0x9F.
- 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0xA0 ..= 0xA7.
- 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0xA8 ..= 0xAF.
- 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0xB0 ..= 0xB7.
- 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0xB8 ..= 0xBF.
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0x80 ..= 0x87.
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0x88 ..= 0x8F.
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0x90 ..= 0x97.
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0x98 ..= 0x9F.
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0xA0 ..= 0xA7.
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0xA8 ..= 0xAF.
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0xB0 ..= 0xB7.
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0xB8 ..= 0xBF.
- 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0xC0 ..= 0xC7.
- 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0xC8 ..= 0xCF.
- 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0xD0 ..= 0xD7.
- 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0xD8 ..= 0xDF.
- 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0xE0 ..= 0xE7.
- 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0xE8 ..= 0xEF.
- 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0xF0 ..= 0xF7.
- 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0xF8 ..= 0xFF.
- // 0 1 2 3 4 5 6 7
- // 8 9 A B C D E F
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0xC0 ..= 0xC7.
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0xC8 ..= 0xCF.
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0xD0 ..= 0xD7.
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0xD8 ..= 0xDF.
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0xE0 ..= 0xE7.
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0xE8 ..= 0xEF.
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0xF0 ..= 0xF7.
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 0xF8 ..= 0xFF.
+ // 0 1 2 3 4 5 6 7
+ // 8 9 A B C D E F
]
pri const LUT_DECIMAL_DIGITS : array[256] base.u8 = [
- // 0 1 2 3 4 5 6 7
- // 8 9 A B C D E F
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x00 ..= 0x07.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x08 ..= 0x0F.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x10 ..= 0x17.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x18 ..= 0x1F.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x20 ..= 0x27.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x28 ..= 0x2F.
- 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, // 0x30 ..= 0x37. '0'-'7'.
- 0x88, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x38 ..= 0x3F. '8'-'9'.
+ // 0 1 2 3 4 5 6 7
+ // 8 9 A B C D E F
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x00 ..= 0x07.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x08 ..= 0x0F.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x10 ..= 0x17.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x18 ..= 0x1F.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x20 ..= 0x27.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x28 ..= 0x2F.
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, // 0x30 ..= 0x37. '0'-'7'.
+ 0x88, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x38 ..= 0x3F. '8'-'9'.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x40 ..= 0x47.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x48 ..= 0x4F.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x50 ..= 0x57.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x58 ..= 0x5F.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x60 ..= 0x67.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x68 ..= 0x6F.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x70 ..= 0x77.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x78 ..= 0x7F.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x40 ..= 0x47.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x48 ..= 0x4F.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x50 ..= 0x57.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x58 ..= 0x5F.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x60 ..= 0x67.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x68 ..= 0x6F.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x70 ..= 0x77.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x78 ..= 0x7F.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80 ..= 0x87.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x88 ..= 0x8F.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x90 ..= 0x97.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x98 ..= 0x9F.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xA0 ..= 0xA7.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xA8 ..= 0xAF.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xB0 ..= 0xB7.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xB8 ..= 0xBF.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80 ..= 0x87.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x88 ..= 0x8F.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x90 ..= 0x97.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x98 ..= 0x9F.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xA0 ..= 0xA7.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xA8 ..= 0xAF.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xB0 ..= 0xB7.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xB8 ..= 0xBF.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC0 ..= 0xC7.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC8 ..= 0xCF.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD0 ..= 0xD7.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD8 ..= 0xDF.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xE0 ..= 0xE7.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xE8 ..= 0xEF.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xF0 ..= 0xF7.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xF8 ..= 0xFF.
- // 0 1 2 3 4 5 6 7
- // 8 9 A B C D E F
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC0 ..= 0xC7.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC8 ..= 0xCF.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD0 ..= 0xD7.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD8 ..= 0xDF.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xE0 ..= 0xE7.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xE8 ..= 0xEF.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xF0 ..= 0xF7.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xF8 ..= 0xFF.
+ // 0 1 2 3 4 5 6 7
+ // 8 9 A B C D E F
]
pri const LUT_HEXADECIMAL_DIGITS : array[256] base.u8 = [
- // 0 1 2 3 4 5 6 7
- // 8 9 A B C D E F
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x00 ..= 0x07.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x08 ..= 0x0F.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x10 ..= 0x17.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x18 ..= 0x1F.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x20 ..= 0x27.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x28 ..= 0x2F.
- 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, // 0x30 ..= 0x37. '0'-'7'.
- 0x88, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x38 ..= 0x3F. '8'-'9'.
+ // 0 1 2 3 4 5 6 7
+ // 8 9 A B C D E F
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x00 ..= 0x07.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x08 ..= 0x0F.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x10 ..= 0x17.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x18 ..= 0x1F.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x20 ..= 0x27.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x28 ..= 0x2F.
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, // 0x30 ..= 0x37. '0'-'7'.
+ 0x88, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x38 ..= 0x3F. '8'-'9'.
- 0x00, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x00, // 0x40 ..= 0x47. 'A'-'F'.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x48 ..= 0x4F.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x50 ..= 0x57.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x58 ..= 0x5F.
- 0x00, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x00, // 0x60 ..= 0x67. 'a'-'f'.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x68 ..= 0x6F.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x70 ..= 0x77.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x78 ..= 0x7F.
+ 0x00, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x00, // 0x40 ..= 0x47. 'A'-'F'.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x48 ..= 0x4F.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x50 ..= 0x57.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x58 ..= 0x5F.
+ 0x00, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x00, // 0x60 ..= 0x67. 'a'-'f'.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x68 ..= 0x6F.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x70 ..= 0x77.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x78 ..= 0x7F.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80 ..= 0x87.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x88 ..= 0x8F.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x90 ..= 0x97.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x98 ..= 0x9F.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xA0 ..= 0xA7.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xA8 ..= 0xAF.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xB0 ..= 0xB7.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xB8 ..= 0xBF.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80 ..= 0x87.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x88 ..= 0x8F.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x90 ..= 0x97.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x98 ..= 0x9F.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xA0 ..= 0xA7.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xA8 ..= 0xAF.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xB0 ..= 0xB7.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xB8 ..= 0xBF.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC0 ..= 0xC7.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC8 ..= 0xCF.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD0 ..= 0xD7.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD8 ..= 0xDF.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xE0 ..= 0xE7.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xE8 ..= 0xEF.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xF0 ..= 0xF7.
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xF8 ..= 0xFF.
- // 0 1 2 3 4 5 6 7
- // 8 9 A B C D E F
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC0 ..= 0xC7.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC8 ..= 0xCF.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD0 ..= 0xD7.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD8 ..= 0xDF.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xE0 ..= 0xE7.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xE8 ..= 0xEF.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xF0 ..= 0xF7.
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xF8 ..= 0xFF.
+ // 0 1 2 3 4 5 6 7
+ // 8 9 A B C D E F
]
diff --git a/std/json/decode_json.wuffs b/std/json/decode_json.wuffs
index 05ffa47..c257123 100644
--- a/std/json/decode_json.wuffs
+++ b/std/json/decode_json.wuffs
@@ -13,52 +13,52 @@
// limitations under the License.
pub struct decoder? implements base.token_decoder(
- quirks : array[QUIRKS_COUNT] base.bool,
+ quirks : array[QUIRKS_COUNT] base.bool,
- allow_leading_ars : base.bool,
- allow_leading_ubom : base.bool,
+ allow_leading_ars : base.bool,
+ allow_leading_ubom : base.bool,
- end_of_data : base.bool,
+ end_of_data : base.bool,
- trailer_stop : base.u8,
+ trailer_stop : base.u8,
- // comment_type is set as a side-effect of decode_comment?.
- // - 0 means no comment.
- // - 1 means a block comment.
- // - 2 means a line comment.
- comment_type : base.u8,
+ // comment_type is set as a side-effect of decode_comment?.
+ // - 0 means no comment.
+ // - 1 means a block comment.
+ // - 2 means a line comment.
+ comment_type : base.u8,
- util : base.utility,
+ util : base.utility,
)(
- // stack is conceptually an array of bits, implemented as an array of u32.
- // The N'th bit being 0 or 1 means that we're in an array or object, where
- // N is the recursion depth.
- //
- // Parsing JSON involves recursion: containers (arrays and objects) can
- // hold other containers. As child elements are completed, the parser needs
- // to remember 1 bit of state per recursion depth: whether the parent
- // container was an array or an object. When continuing to parse the
- // parent's elements, `, "key": value` is only valid for objects.
- //
- // Note that we explicitly track our own stack and depth. We do not use the
- // call stack to hold this state and the decoder.decode_tokens function is
- // not recursive per se.
- //
- // Wuffs code does not have the capability to dynamically allocate memory,
- // so the maximum depth is hard-coded at compile time. In this case, the
- // maximum is 1024 (stack is 1024 bits or 128 bytes), also known as
- // DECODER_DEPTH_MAX_INCL.
- //
- // The [JSON spec](https://www.ietf.org/rfc/rfc8259.txt) clearly states,
- // "an implementation may set limits on the maximum depth of nesting".
- //
- // In comparison, as of February 2020, the Chromium web browser's JSON
- // parser's maximum recursion depth is 200:
- // https://source.chromium.org/chromium/chromium/src/+/3dece34cde622faa0daac07156c25d92c9897d1e:base/json/json_common.h;l=18
- //
- // Other languages and libraries' maximum depths (determined empirically)
- // are listed at https://github.com/lovasoa/bad_json_parsers#results
- stack : array[1024 / 32] base.u32,
+ // stack is conceptually an array of bits, implemented as an array of u32.
+ // The N'th bit being 0 or 1 means that we're in an array or object, where
+ // N is the recursion depth.
+ //
+ // Parsing JSON involves recursion: containers (arrays and objects) can
+ // hold other containers. As child elements are completed, the parser needs
+ // to remember 1 bit of state per recursion depth: whether the parent
+ // container was an array or an object. When continuing to parse the
+ // parent's elements, `, "key": value` is only valid for objects.
+ //
+ // Note that we explicitly track our own stack and depth. We do not use the
+ // call stack to hold this state and the decoder.decode_tokens function is
+ // not recursive per se.
+ //
+ // Wuffs code does not have the capability to dynamically allocate memory,
+ // so the maximum depth is hard-coded at compile time. In this case, the
+ // maximum is 1024 (stack is 1024 bits or 128 bytes), also known as
+ // DECODER_DEPTH_MAX_INCL.
+ //
+ // The [JSON spec](https://www.ietf.org/rfc/rfc8259.txt) clearly states,
+ // "an implementation may set limits on the maximum depth of nesting".
+ //
+ // In comparison, as of February 2020, the Chromium web browser's JSON
+ // parser's maximum recursion depth is 200:
+ // https://source.chromium.org/chromium/chromium/src/+/3dece34cde622faa0daac07156c25d92c9897d1e:base/json/json_common.h;l=18
+ //
+ // Other languages and libraries' maximum depths (determined empirically)
+ // are listed at https://github.com/lovasoa/bad_json_parsers#results
+ stack : array[1024 / 32] base.u32,
)
pub func decoder.set_quirk_enabled!(quirk: base.u32, enabled: base.bool) {
@@ -126,14 +126,14 @@
if this.quirks[QUIRK_EXPECT_TRAILING_NEW_LINE_OR_EOF - QUIRKS_BASE] {
if this.quirks[QUIRK_ALLOW_COMMENT_BLOCK - QUIRKS_BASE] or
- this.quirks[QUIRK_ALLOW_COMMENT_LINE - QUIRKS_BASE] or
- this.quirks[QUIRK_ALLOW_TRAILING_FILLER - QUIRKS_BASE] {
+ this.quirks[QUIRK_ALLOW_COMMENT_LINE - QUIRKS_BASE] or
+ this.quirks[QUIRK_ALLOW_TRAILING_FILLER - QUIRKS_BASE] {
return "#bad quirk combination"
}
}
if this.quirks[QUIRK_ALLOW_LEADING_ASCII_RECORD_SEPARATOR - QUIRKS_BASE] or
- this.quirks[QUIRK_ALLOW_LEADING_UNICODE_BYTE_ORDER_MARK - QUIRKS_BASE] {
+ this.quirks[QUIRK_ALLOW_LEADING_UNICODE_BYTE_ORDER_MARK - QUIRKS_BASE] {
this.decode_leading?(dst: args.dst, src: args.src)
}
@@ -151,16 +151,16 @@
c = 0
class = 0
while.ws true,
- inv args.dst.length() > 0,
- post args.src.length() > 0,
+ inv args.dst.length() > 0,
+ post args.src.length() > 0,
{
if args.src.length() <= 0 {
if whitespace_length > 0 {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: 0,
- continued: 0,
- length: whitespace_length)
+ value_major: 0,
+ value_minor: 0,
+ continued: 0,
+ length: whitespace_length)
whitespace_length = 0
}
if args.src.is_closed() {
@@ -179,10 +179,10 @@
if whitespace_length >= 0xFFFE {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: 0,
- continued: 0,
- length: 0xFFFF)
+ value_major: 0,
+ value_minor: 0,
+ continued: 0,
+ length: 0xFFFF)
whitespace_length = 0
continue.outer
}
@@ -192,10 +192,10 @@
// Emit whitespace.
if whitespace_length > 0 {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: 0,
- continued: 0,
- length: whitespace_length)
+ value_major: 0,
+ value_minor: 0,
+ continued: 0,
+ length: whitespace_length)
whitespace_length = 0
if args.dst.length() <= 0 {
continue.outer
@@ -218,14 +218,14 @@
// -------- BEGIN parse strings.
// Emit the leading '"'.
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__STRING << 21) |
- base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
- base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
- base.TOKEN__VBD__STRING__DEFINITELY_ASCII |
- base.TOKEN__VBD__STRING__CONVERT_0_DST_1_SRC_DROP,
- continued: 1,
- length: 1)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__STRING << 21) |
+ base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
+ base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
+ base.TOKEN__VBD__STRING__DEFINITELY_ASCII |
+ base.TOKEN__VBD__STRING__CONVERT_0_DST_1_SRC_DROP,
+ continued: 1,
+ length: 1)
args.src.skip_u32_fast!(actual: 1, worst_case: 1)
while.string_loop_outer true {
@@ -236,18 +236,18 @@
string_length = 0
while.string_loop_inner true,
- pre args.dst.length() > 0,
+ pre args.dst.length() > 0,
{
if args.src.length() <= 0 {
if string_length > 0 {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__STRING << 21) |
- base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
- base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
- base.TOKEN__VBD__STRING__CONVERT_1_DST_1_SRC_COPY,
- continued: 1,
- length: string_length)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__STRING << 21) |
+ base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
+ base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
+ base.TOKEN__VBD__STRING__CONVERT_1_DST_1_SRC_COPY,
+ continued: 1,
+ length: string_length)
string_length = 0
}
if args.src.is_closed() {
@@ -260,26 +260,26 @@
// As an optimization, consume non-special ASCII 4 bytes at
// a time.
while args.src.length() > 4,
- inv args.dst.length() > 0,
- inv args.src.length() > 0,
+ inv args.dst.length() > 0,
+ inv args.src.length() > 0,
{
c4 = args.src.peek_u32le()
if 0x00 <> (LUT_CHARS[0xFF & (c4 >> 0)] |
- LUT_CHARS[0xFF & (c4 >> 8)] |
- LUT_CHARS[0xFF & (c4 >> 16)] |
- LUT_CHARS[0xFF & (c4 >> 24)]) {
+ LUT_CHARS[0xFF & (c4 >> 8)] |
+ LUT_CHARS[0xFF & (c4 >> 16)] |
+ LUT_CHARS[0xFF & (c4 >> 24)]) {
break
}
args.src.skip_u32_fast!(actual: 4, worst_case: 4)
if string_length > (0xFFFB - 4) {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__STRING << 21) |
- base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
- base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
- base.TOKEN__VBD__STRING__CONVERT_1_DST_1_SRC_COPY,
- continued: 1,
- length: string_length + 4)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__STRING << 21) |
+ base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
+ base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
+ base.TOKEN__VBD__STRING__CONVERT_1_DST_1_SRC_COPY,
+ continued: 1,
+ length: string_length + 4)
string_length = 0
continue.string_loop_outer
}
@@ -293,13 +293,13 @@
args.src.skip_u32_fast!(actual: 1, worst_case: 1)
if string_length >= 0xFFFB {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__STRING << 21) |
- base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
- base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
- base.TOKEN__VBD__STRING__CONVERT_1_DST_1_SRC_COPY,
- continued: 1,
- length: 0xFFFC)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__STRING << 21) |
+ base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
+ base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
+ base.TOKEN__VBD__STRING__CONVERT_1_DST_1_SRC_COPY,
+ continued: 1,
+ length: 0xFFFC)
string_length = 0
continue.string_loop_outer
}
@@ -309,13 +309,13 @@
} else if char == 0x01 { // '"'
if string_length <> 0 {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__STRING << 21) |
- base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
- base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
- base.TOKEN__VBD__STRING__CONVERT_1_DST_1_SRC_COPY,
- continued: 1,
- length: string_length)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__STRING << 21) |
+ base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
+ base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
+ base.TOKEN__VBD__STRING__CONVERT_1_DST_1_SRC_COPY,
+ continued: 1,
+ length: string_length)
string_length = 0
}
break.string_loop_outer
@@ -323,13 +323,13 @@
} else if char == 0x02 { // '\\'.
if string_length > 0 {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__STRING << 21) |
- base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
- base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
- base.TOKEN__VBD__STRING__CONVERT_1_DST_1_SRC_COPY,
- continued: 1,
- length: string_length)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__STRING << 21) |
+ base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
+ base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
+ base.TOKEN__VBD__STRING__CONVERT_1_DST_1_SRC_COPY,
+ continued: 1,
+ length: string_length)
string_length = 0
if args.dst.length() <= 0 {
continue.string_loop_outer
@@ -349,22 +349,22 @@
if (backslash & 0x80) <> 0 {
args.src.skip_u32_fast!(actual: 2, worst_case: 2)
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__UNICODE_CODE_POINT << 21) |
- ((backslash & 0x7F) as base.u32),
- continued: 1,
- length: 2)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__UNICODE_CODE_POINT << 21) |
+ ((backslash & 0x7F) as base.u32),
+ continued: 1,
+ length: 2)
continue.string_loop_outer
} else if backslash <> 0 {
if this.quirks[LUT_QUIRKY_BACKSLASHES_QUIRKS[backslash & 7]] {
args.src.skip_u32_fast!(actual: 2, worst_case: 2)
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__UNICODE_CODE_POINT << 21) |
- (LUT_QUIRKY_BACKSLASHES_CHARS[backslash & 7] as base.u32),
- continued: 1,
- length: 2)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__UNICODE_CODE_POINT << 21) |
+ (LUT_QUIRKY_BACKSLASHES_CHARS[backslash & 7] as base.u32),
+ continued: 1,
+ length: 2)
continue.string_loop_outer
}
@@ -403,11 +403,11 @@
// Not a Unicode surrogate. We're good.
args.src.skip_u32_fast!(actual: 6, worst_case: 6)
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__UNICODE_CODE_POINT << 21) |
- uni4_value,
- continued: 1,
- length: 6)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__UNICODE_CODE_POINT << 21) |
+ uni4_value,
+ continued: 1,
+ length: 6)
continue.string_loop_outer
} else if uni4_value >= 0xDC00 {
@@ -425,11 +425,11 @@
if this.quirks[QUIRK_REPLACE_INVALID_UNICODE - QUIRKS_BASE] {
args.src.skip_u32_fast!(actual: 6, worst_case: 6)
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__UNICODE_CODE_POINT << 21) |
- base.UNICODE__REPLACEMENT_CHARACTER,
- continued: 1,
- length: 6)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__UNICODE_CODE_POINT << 21) |
+ base.UNICODE__REPLACEMENT_CHARACTER,
+ continued: 1,
+ length: 6)
continue.string_loop_outer
}
return "#bad backslash-escape"
@@ -441,13 +441,13 @@
// Look for the low surrogate's "\\u".
if ((0xFF & (uni4_string >> 0)) <> '\\') or
- ((0xFF & (uni4_string >> 8)) <> 'u') {
+ ((0xFF & (uni4_string >> 8)) <> 'u') {
uni4_high_surrogate = 0
uni4_value = 0
uni4_ok = 0
} else {
uni4_high_surrogate =
- 0x1_0000 + ((uni4_value - 0xD800) << 10)
+ 0x1_0000 + ((uni4_value - 0xD800) << 10)
uni4_value = 0
uni4_ok = 0x80
uni4_string >>= 16
@@ -467,18 +467,18 @@
}
if (uni4_ok <> 0) and
- (0xDC00 <= uni4_value) and (uni4_value <= 0xDFFF) {
+ (0xDC00 <= uni4_value) and (uni4_value <= 0xDFFF) {
// Emit a single token for the surrogate
// pair.
uni4_value -= 0xDC00
args.src.skip_u32_fast!(actual: 12, worst_case: 12)
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__UNICODE_CODE_POINT << 21) |
- uni4_high_surrogate | uni4_value,
- continued: 1,
- length: 12)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__UNICODE_CODE_POINT << 21) |
+ uni4_high_surrogate | uni4_value,
+ continued: 1,
+ length: 12)
continue.string_loop_outer
}
}
@@ -489,17 +489,17 @@
}
args.src.skip_u32_fast!(actual: 6, worst_case: 6)
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__UNICODE_CODE_POINT << 21) |
- base.UNICODE__REPLACEMENT_CHARACTER,
- continued: 1,
- length: 6)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__UNICODE_CODE_POINT << 21) |
+ base.UNICODE__REPLACEMENT_CHARACTER,
+ continued: 1,
+ length: 6)
continue.string_loop_outer
}
// -------- END backslash-u.
} else if (c == 'U') and
- this.quirks[QUIRK_ALLOW_BACKSLASH_CAPITAL_U - QUIRKS_BASE] {
+ this.quirks[QUIRK_ALLOW_BACKSLASH_CAPITAL_U - QUIRKS_BASE] {
// -------- BEGIN backslash-capital-u.
if args.src.length() < 10 {
if args.src.is_closed() {
@@ -542,30 +542,30 @@
// fall through to "#bad backslash-escape").
} else if (uni8_value < 0xD800) or (
- (0xDFFF < uni8_value) and (uni8_value <= 0x10_FFFF)) {
+ (0xDFFF < uni8_value) and (uni8_value <= 0x10_FFFF)) {
// Not a Unicode surrogate. We're good.
args.src.skip_u32_fast!(actual: 10, worst_case: 10)
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__UNICODE_CODE_POINT << 21) |
- (uni8_value & 0x1F_FFFF),
- continued: 1,
- length: 10)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__UNICODE_CODE_POINT << 21) |
+ (uni8_value & 0x1F_FFFF),
+ continued: 1,
+ length: 10)
continue.string_loop_outer
} else if this.quirks[QUIRK_REPLACE_INVALID_UNICODE - QUIRKS_BASE] {
args.src.skip_u32_fast!(actual: 10, worst_case: 10)
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__UNICODE_CODE_POINT << 21) |
- base.UNICODE__REPLACEMENT_CHARACTER,
- continued: 1,
- length: 10)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__UNICODE_CODE_POINT << 21) |
+ base.UNICODE__REPLACEMENT_CHARACTER,
+ continued: 1,
+ length: 10)
continue.string_loop_outer
}
// -------- END backslash-capital-u.
} else if (c == 'x') and
- this.quirks[QUIRK_ALLOW_BACKSLASH_X_AS_CODE_POINTS - QUIRKS_BASE] {
+ this.quirks[QUIRK_ALLOW_BACKSLASH_X_AS_CODE_POINTS - QUIRKS_BASE] {
// -------- BEGIN backslash-x
if args.src.length() < 4 {
if args.src.is_closed() {
@@ -586,18 +586,18 @@
backslash_x_value = (backslash_x_value | (c & 0x0F)) as base.u8
if (backslash_x_ok == 0) or
- ((backslash_x_string & 0xFFFF) <> 0x785C) {
+ ((backslash_x_string & 0xFFFF) <> 0x785C) {
// It wasn't "\\x34", for some hexadecimal
// digits "34".
return "#bad backslash-escape"
}
args.src.skip_u32_fast!(actual: 4, worst_case: 4)
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__UNICODE_CODE_POINT << 21) |
- (backslash_x_value as base.u32),
- continued: 1,
- length: 4)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__UNICODE_CODE_POINT << 21) |
+ (backslash_x_value as base.u32),
+ continued: 1,
+ length: 4)
continue.string_loop_outer
// -------- END backslash-x
}
@@ -608,13 +608,13 @@
if args.src.length() < 2 {
if string_length > 0 {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__STRING << 21) |
- base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
- base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
- base.TOKEN__VBD__STRING__CONVERT_1_DST_1_SRC_COPY,
- continued: 1,
- length: string_length)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__STRING << 21) |
+ base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
+ base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
+ base.TOKEN__VBD__STRING__CONVERT_1_DST_1_SRC_COPY,
+ continued: 1,
+ length: string_length)
string_length = 0
if args.dst.length() <= 0 {
continue.string_loop_outer
@@ -623,11 +623,11 @@
if args.src.is_closed() {
if this.quirks[QUIRK_REPLACE_INVALID_UNICODE - QUIRKS_BASE] {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__UNICODE_CODE_POINT << 21) |
- base.UNICODE__REPLACEMENT_CHARACTER,
- continued: 1,
- length: 1)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__UNICODE_CODE_POINT << 21) |
+ base.UNICODE__REPLACEMENT_CHARACTER,
+ continued: 1,
+ length: 1)
args.src.skip_u32_fast!(actual: 1, worst_case: 1)
continue.string_loop_outer
}
@@ -639,17 +639,17 @@
multi_byte_utf8 = args.src.peek_u16le_as_u32()
if (multi_byte_utf8 & 0xC000) == 0x8000 {
multi_byte_utf8 = (0x00_07C0 & (multi_byte_utf8 ~mod<< 6)) |
- (0x00_003F & (multi_byte_utf8 >> 8))
+ (0x00_003F & (multi_byte_utf8 >> 8))
args.src.skip_u32_fast!(actual: 2, worst_case: 2)
if string_length >= 0xFFF8 {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__STRING << 21) |
- base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
- base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
- base.TOKEN__VBD__STRING__CONVERT_1_DST_1_SRC_COPY,
- continued: 1,
- length: string_length + 2)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__STRING << 21) |
+ base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
+ base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
+ base.TOKEN__VBD__STRING__CONVERT_1_DST_1_SRC_COPY,
+ continued: 1,
+ length: string_length + 2)
string_length = 0
continue.string_loop_outer
}
@@ -661,13 +661,13 @@
if args.src.length() < 3 {
if string_length > 0 {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__STRING << 21) |
- base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
- base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
- base.TOKEN__VBD__STRING__CONVERT_1_DST_1_SRC_COPY,
- continued: 1,
- length: string_length)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__STRING << 21) |
+ base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
+ base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
+ base.TOKEN__VBD__STRING__CONVERT_1_DST_1_SRC_COPY,
+ continued: 1,
+ length: string_length)
string_length = 0
if args.dst.length() <= 0 {
continue.string_loop_outer
@@ -676,11 +676,11 @@
if args.src.is_closed() {
if this.quirks[QUIRK_REPLACE_INVALID_UNICODE - QUIRKS_BASE] {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__UNICODE_CODE_POINT << 21) |
- base.UNICODE__REPLACEMENT_CHARACTER,
- continued: 1,
- length: 1)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__UNICODE_CODE_POINT << 21) |
+ base.UNICODE__REPLACEMENT_CHARACTER,
+ continued: 1,
+ length: 1)
args.src.skip_u32_fast!(actual: 1, worst_case: 1)
continue.string_loop_outer
}
@@ -692,21 +692,21 @@
multi_byte_utf8 = args.src.peek_u24le_as_u32()
if (multi_byte_utf8 & 0xC0_C000) == 0x80_8000 {
multi_byte_utf8 = (0x00_F000 & (multi_byte_utf8 ~mod<< 12)) |
- (0x00_0FC0 & (multi_byte_utf8 >> 2)) |
- (0x00_003F & (multi_byte_utf8 >> 16))
+ (0x00_0FC0 & (multi_byte_utf8 >> 2)) |
+ (0x00_003F & (multi_byte_utf8 >> 16))
if (0x07FF < multi_byte_utf8) and
- ((multi_byte_utf8 < 0xD800) or (0xDFFF < multi_byte_utf8)) {
+ ((multi_byte_utf8 < 0xD800) or (0xDFFF < multi_byte_utf8)) {
args.src.skip_u32_fast!(actual: 3, worst_case: 3)
if string_length >= 0xFFF8 {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__STRING << 21) |
- base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
- base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
- base.TOKEN__VBD__STRING__CONVERT_1_DST_1_SRC_COPY,
- continued: 1,
- length: string_length + 3)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__STRING << 21) |
+ base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
+ base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
+ base.TOKEN__VBD__STRING__CONVERT_1_DST_1_SRC_COPY,
+ continued: 1,
+ length: string_length + 3)
string_length = 0
continue.string_loop_outer
}
@@ -719,13 +719,13 @@
if args.src.length() < 4 {
if string_length > 0 {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__STRING << 21) |
- base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
- base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
- base.TOKEN__VBD__STRING__CONVERT_1_DST_1_SRC_COPY,
- continued: 1,
- length: string_length)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__STRING << 21) |
+ base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
+ base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
+ base.TOKEN__VBD__STRING__CONVERT_1_DST_1_SRC_COPY,
+ continued: 1,
+ length: string_length)
string_length = 0
if args.dst.length() <= 0 {
continue.string_loop_outer
@@ -734,11 +734,11 @@
if args.src.is_closed() {
if this.quirks[QUIRK_REPLACE_INVALID_UNICODE - QUIRKS_BASE] {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__UNICODE_CODE_POINT << 21) |
- base.UNICODE__REPLACEMENT_CHARACTER,
- continued: 1,
- length: 1)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__UNICODE_CODE_POINT << 21) |
+ base.UNICODE__REPLACEMENT_CHARACTER,
+ continued: 1,
+ length: 1)
args.src.skip_u32_fast!(actual: 1, worst_case: 1)
continue.string_loop_outer
}
@@ -750,20 +750,20 @@
multi_byte_utf8 = args.src.peek_u32le()
if (multi_byte_utf8 & 0xC0C0_C000) == 0x8080_8000 {
multi_byte_utf8 = (0x1C_0000 & (multi_byte_utf8 ~mod<< 18)) |
- (0x03_F000 & (multi_byte_utf8 ~mod<< 4)) |
- (0x00_0FC0 & (multi_byte_utf8 >> 10)) |
- (0x00_003F & (multi_byte_utf8 >> 24))
+ (0x03_F000 & (multi_byte_utf8 ~mod<< 4)) |
+ (0x00_0FC0 & (multi_byte_utf8 >> 10)) |
+ (0x00_003F & (multi_byte_utf8 >> 24))
if (0xFFFF < multi_byte_utf8) and (multi_byte_utf8 <= 0x10_FFFF) {
args.src.skip_u32_fast!(actual: 4, worst_case: 4)
if string_length >= 0xFFF8 {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__STRING << 21) |
- base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
- base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
- base.TOKEN__VBD__STRING__CONVERT_1_DST_1_SRC_COPY,
- continued: 1,
- length: string_length + 4)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__STRING << 21) |
+ base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
+ base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
+ base.TOKEN__VBD__STRING__CONVERT_1_DST_1_SRC_COPY,
+ continued: 1,
+ length: string_length + 4)
string_length = 0
continue.string_loop_outer
}
@@ -775,13 +775,13 @@
if string_length > 0 {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__STRING << 21) |
- base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
- base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
- base.TOKEN__VBD__STRING__CONVERT_1_DST_1_SRC_COPY,
- continued: 1,
- length: string_length)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__STRING << 21) |
+ base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
+ base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
+ base.TOKEN__VBD__STRING__CONVERT_1_DST_1_SRC_COPY,
+ continued: 1,
+ length: string_length)
string_length = 0
if args.dst.length() <= 0 {
continue.string_loop_outer
@@ -790,11 +790,11 @@
if (char & 0x80) <> 0 {
if this.quirks[QUIRK_ALLOW_ASCII_CONTROL_CODES - QUIRKS_BASE] {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__UNICODE_CODE_POINT << 21) |
- ((char & 0x7F) as base.u32),
- continued: 1,
- length: 1)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__UNICODE_CODE_POINT << 21) |
+ ((char & 0x7F) as base.u32),
+ continued: 1,
+ length: 1)
args.src.skip_u32_fast!(actual: 1, worst_case: 1)
continue.string_loop_outer
}
@@ -805,11 +805,11 @@
}
if this.quirks[QUIRK_REPLACE_INVALID_UNICODE - QUIRKS_BASE] {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__UNICODE_CODE_POINT << 21) |
- base.UNICODE__REPLACEMENT_CHARACTER,
- continued: 1,
- length: 1)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__UNICODE_CODE_POINT << 21) |
+ base.UNICODE__REPLACEMENT_CHARACTER,
+ continued: 1,
+ length: 1)
args.src.skip_u32_fast!(actual: 1, worst_case: 1)
continue.string_loop_outer
}
@@ -832,14 +832,14 @@
}
args.src.skip_u32_fast!(actual: 1, worst_case: 1)
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__STRING << 21) |
- base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
- base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
- base.TOKEN__VBD__STRING__DEFINITELY_ASCII |
- base.TOKEN__VBD__STRING__CONVERT_0_DST_1_SRC_DROP,
- continued: 0,
- length: 1)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__STRING << 21) |
+ base.TOKEN__VBD__STRING__DEFINITELY_UTF_8 |
+ base.TOKEN__VBD__STRING__CHAIN_MUST_BE_UTF_8 |
+ base.TOKEN__VBD__STRING__DEFINITELY_ASCII |
+ base.TOKEN__VBD__STRING__CONVERT_0_DST_1_SRC_DROP,
+ continued: 0,
+ length: 1)
break
} endwhile
@@ -857,11 +857,11 @@
args.src.skip_u32_fast!(actual: 1, worst_case: 1)
// The ',' is punctuation (filler).
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__FILLER << 21) |
- base.TOKEN__VBD__FILLER__PUNCTUATION,
- continued: 0,
- length: 1)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__FILLER << 21) |
+ base.TOKEN__VBD__FILLER__PUNCTUATION,
+ continued: 0,
+ length: 1)
// What's valid after a comma depends on whether or not we're in an
// array or an object.
if 0 == (expect & ((1 as base.u32) << CLASS_CLOSE_SQUARE_BRACKET)) {
@@ -883,37 +883,37 @@
args.src.skip_u32_fast!(actual: 1, worst_case: 1)
// The ':' is punctuation (filler).
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__FILLER << 21) |
- base.TOKEN__VBD__FILLER__PUNCTUATION,
- continued: 0,
- length: 1)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__FILLER << 21) |
+ base.TOKEN__VBD__FILLER__PUNCTUATION,
+ continued: 0,
+ length: 1)
expect = EXPECT_VALUE
continue.outer
} else if class == CLASS_NUMBER {
// -------- BEGIN parse numbers.
while true,
- pre args.dst.length() > 0,
+ pre args.dst.length() > 0,
{
number_length = this.decode_number!(src: args.src)
number_status = number_length >> 8
vminor = (base.TOKEN__VBC__NUMBER << 21) |
- base.TOKEN__VBD__NUMBER__CONTENT_FLOATING_POINT |
- base.TOKEN__VBD__NUMBER__CONTENT_INTEGER_SIGNED |
- base.TOKEN__VBD__NUMBER__FORMAT_TEXT
+ base.TOKEN__VBD__NUMBER__CONTENT_FLOATING_POINT |
+ base.TOKEN__VBD__NUMBER__CONTENT_INTEGER_SIGNED |
+ base.TOKEN__VBD__NUMBER__FORMAT_TEXT
if (number_length & 0x80) <> 0 {
vminor = (base.TOKEN__VBC__NUMBER << 21) |
- base.TOKEN__VBD__NUMBER__CONTENT_FLOATING_POINT |
- base.TOKEN__VBD__NUMBER__FORMAT_TEXT
+ base.TOKEN__VBD__NUMBER__CONTENT_FLOATING_POINT |
+ base.TOKEN__VBD__NUMBER__FORMAT_TEXT
}
number_length = number_length & 0x7F
if number_status == 0 {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: vminor,
- continued: 0,
- length: number_length)
+ value_major: 0,
+ value_minor: vminor,
+ continued: 0,
+ length: number_length)
break
}
@@ -937,7 +937,7 @@
} else {
yield? base."$short read"
while args.dst.length() <= 0,
- post args.dst.length() > 0,
+ post args.dst.length() > 0,
{
yield? base."$short write"
} endwhile
@@ -948,21 +948,21 @@
} else if class == CLASS_OPEN_CURLY_BRACE {
vminor = (base.TOKEN__VBC__STRUCTURE << 21) |
- base.TOKEN__VBD__STRUCTURE__PUSH |
- base.TOKEN__VBD__STRUCTURE__FROM_NONE |
- base.TOKEN__VBD__STRUCTURE__TO_DICT
+ base.TOKEN__VBD__STRUCTURE__PUSH |
+ base.TOKEN__VBD__STRUCTURE__FROM_NONE |
+ base.TOKEN__VBD__STRUCTURE__TO_DICT
if depth == 0 {
// No-op.
} else if 0 <> (expect_after_value & ((1 as base.u32) << CLASS_CLOSE_CURLY_BRACE)) {
vminor = (base.TOKEN__VBC__STRUCTURE << 21) |
- base.TOKEN__VBD__STRUCTURE__PUSH |
- base.TOKEN__VBD__STRUCTURE__FROM_DICT |
- base.TOKEN__VBD__STRUCTURE__TO_DICT
+ base.TOKEN__VBD__STRUCTURE__PUSH |
+ base.TOKEN__VBD__STRUCTURE__FROM_DICT |
+ base.TOKEN__VBD__STRUCTURE__TO_DICT
} else {
vminor = (base.TOKEN__VBC__STRUCTURE << 21) |
- base.TOKEN__VBD__STRUCTURE__PUSH |
- base.TOKEN__VBD__STRUCTURE__FROM_LIST |
- base.TOKEN__VBD__STRUCTURE__TO_DICT
+ base.TOKEN__VBD__STRUCTURE__PUSH |
+ base.TOKEN__VBD__STRUCTURE__FROM_LIST |
+ base.TOKEN__VBD__STRUCTURE__TO_DICT
}
if depth >= 1024 {
return "#unsupported recursion depth"
@@ -974,10 +974,10 @@
args.src.skip_u32_fast!(actual: 1, worst_case: 1)
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: vminor,
- continued: 0,
- length: 1)
+ value_major: 0,
+ value_minor: vminor,
+ continued: 0,
+ length: 1)
expect = EXPECT_CLOSE_CURLY_BRACE | EXPECT_STRING
expect_after_value = EXPECT_CLOSE_CURLY_BRACE | EXPECT_COMMA
continue.outer
@@ -986,13 +986,13 @@
args.src.skip_u32_fast!(actual: 1, worst_case: 1)
if depth <= 1 {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__STRUCTURE << 21) |
- base.TOKEN__VBD__STRUCTURE__POP |
- base.TOKEN__VBD__STRUCTURE__FROM_DICT |
- base.TOKEN__VBD__STRUCTURE__TO_NONE,
- continued: 0,
- length: 1)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__STRUCTURE << 21) |
+ base.TOKEN__VBD__STRUCTURE__POP |
+ base.TOKEN__VBD__STRUCTURE__FROM_DICT |
+ base.TOKEN__VBD__STRUCTURE__TO_NONE,
+ continued: 0,
+ length: 1)
break.outer
}
depth -= 1
@@ -1000,24 +1000,24 @@
stack_bit = (depth - 1) & 31
if 0 == (this.stack[stack_byte] & ((1 as base.u32) << stack_bit)) {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__STRUCTURE << 21) |
- base.TOKEN__VBD__STRUCTURE__POP |
- base.TOKEN__VBD__STRUCTURE__FROM_DICT |
- base.TOKEN__VBD__STRUCTURE__TO_LIST,
- continued: 0,
- length: 1)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__STRUCTURE << 21) |
+ base.TOKEN__VBD__STRUCTURE__POP |
+ base.TOKEN__VBD__STRUCTURE__FROM_DICT |
+ base.TOKEN__VBD__STRUCTURE__TO_LIST,
+ continued: 0,
+ length: 1)
expect = EXPECT_CLOSE_SQUARE_BRACKET | EXPECT_COMMA
expect_after_value = EXPECT_CLOSE_SQUARE_BRACKET | EXPECT_COMMA
} else {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__STRUCTURE << 21) |
- base.TOKEN__VBD__STRUCTURE__POP |
- base.TOKEN__VBD__STRUCTURE__FROM_DICT |
- base.TOKEN__VBD__STRUCTURE__TO_DICT,
- continued: 0,
- length: 1)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__STRUCTURE << 21) |
+ base.TOKEN__VBD__STRUCTURE__POP |
+ base.TOKEN__VBD__STRUCTURE__FROM_DICT |
+ base.TOKEN__VBD__STRUCTURE__TO_DICT,
+ continued: 0,
+ length: 1)
expect = EXPECT_CLOSE_CURLY_BRACE | EXPECT_COMMA
expect_after_value = EXPECT_CLOSE_CURLY_BRACE | EXPECT_COMMA
}
@@ -1025,21 +1025,21 @@
} else if class == CLASS_OPEN_SQUARE_BRACKET {
vminor = (base.TOKEN__VBC__STRUCTURE << 21) |
- base.TOKEN__VBD__STRUCTURE__PUSH |
- base.TOKEN__VBD__STRUCTURE__FROM_NONE |
- base.TOKEN__VBD__STRUCTURE__TO_LIST
+ base.TOKEN__VBD__STRUCTURE__PUSH |
+ base.TOKEN__VBD__STRUCTURE__FROM_NONE |
+ base.TOKEN__VBD__STRUCTURE__TO_LIST
if depth == 0 {
// No-op.
} else if 0 <> (expect_after_value & ((1 as base.u32) << CLASS_CLOSE_CURLY_BRACE)) {
vminor = (base.TOKEN__VBC__STRUCTURE << 21) |
- base.TOKEN__VBD__STRUCTURE__PUSH |
- base.TOKEN__VBD__STRUCTURE__FROM_DICT |
- base.TOKEN__VBD__STRUCTURE__TO_LIST
+ base.TOKEN__VBD__STRUCTURE__PUSH |
+ base.TOKEN__VBD__STRUCTURE__FROM_DICT |
+ base.TOKEN__VBD__STRUCTURE__TO_LIST
} else {
vminor = (base.TOKEN__VBC__STRUCTURE << 21) |
- base.TOKEN__VBD__STRUCTURE__PUSH |
- base.TOKEN__VBD__STRUCTURE__FROM_LIST |
- base.TOKEN__VBD__STRUCTURE__TO_LIST
+ base.TOKEN__VBD__STRUCTURE__PUSH |
+ base.TOKEN__VBD__STRUCTURE__FROM_LIST |
+ base.TOKEN__VBD__STRUCTURE__TO_LIST
}
if depth >= 1024 {
return "#unsupported recursion depth"
@@ -1051,10 +1051,10 @@
args.src.skip_u32_fast!(actual: 1, worst_case: 1)
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: vminor,
- continued: 0,
- length: 1)
+ value_major: 0,
+ value_minor: vminor,
+ continued: 0,
+ length: 1)
expect = EXPECT_CLOSE_SQUARE_BRACKET | EXPECT_VALUE
expect_after_value = EXPECT_CLOSE_SQUARE_BRACKET | EXPECT_COMMA
continue.outer
@@ -1063,13 +1063,13 @@
args.src.skip_u32_fast!(actual: 1, worst_case: 1)
if depth <= 1 {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__STRUCTURE << 21) |
- base.TOKEN__VBD__STRUCTURE__POP |
- base.TOKEN__VBD__STRUCTURE__FROM_LIST |
- base.TOKEN__VBD__STRUCTURE__TO_NONE,
- continued: 0,
- length: 1)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__STRUCTURE << 21) |
+ base.TOKEN__VBD__STRUCTURE__POP |
+ base.TOKEN__VBD__STRUCTURE__FROM_LIST |
+ base.TOKEN__VBD__STRUCTURE__TO_NONE,
+ continued: 0,
+ length: 1)
break.outer
}
depth -= 1
@@ -1077,24 +1077,24 @@
stack_bit = (depth - 1) & 31
if 0 == (this.stack[stack_byte] & ((1 as base.u32) << stack_bit)) {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__STRUCTURE << 21) |
- base.TOKEN__VBD__STRUCTURE__POP |
- base.TOKEN__VBD__STRUCTURE__FROM_LIST |
- base.TOKEN__VBD__STRUCTURE__TO_LIST,
- continued: 0,
- length: 1)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__STRUCTURE << 21) |
+ base.TOKEN__VBD__STRUCTURE__POP |
+ base.TOKEN__VBD__STRUCTURE__FROM_LIST |
+ base.TOKEN__VBD__STRUCTURE__TO_LIST,
+ continued: 0,
+ length: 1)
expect = EXPECT_CLOSE_SQUARE_BRACKET | EXPECT_COMMA
expect_after_value = EXPECT_CLOSE_SQUARE_BRACKET | EXPECT_COMMA
} else {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__STRUCTURE << 21) |
- base.TOKEN__VBD__STRUCTURE__POP |
- base.TOKEN__VBD__STRUCTURE__FROM_LIST |
- base.TOKEN__VBD__STRUCTURE__TO_DICT,
- continued: 0,
- length: 1)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__STRUCTURE << 21) |
+ base.TOKEN__VBD__STRUCTURE__POP |
+ base.TOKEN__VBD__STRUCTURE__FROM_LIST |
+ base.TOKEN__VBD__STRUCTURE__TO_DICT,
+ continued: 0,
+ length: 1)
expect = EXPECT_CLOSE_CURLY_BRACE | EXPECT_COMMA
expect_after_value = EXPECT_CLOSE_CURLY_BRACE | EXPECT_COMMA
}
@@ -1104,11 +1104,11 @@
match = args.src.match7(a: '\x05false'le)
if match == 0 {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__LITERAL << 21) |
- base.TOKEN__VBD__LITERAL__FALSE,
- continued: 0,
- length: 5)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__LITERAL << 21) |
+ base.TOKEN__VBD__LITERAL__FALSE,
+ continued: 0,
+ length: 5)
if args.src.length() < 5 {
return "#internal error: inconsistent I/O"
}
@@ -1123,11 +1123,11 @@
match = args.src.match7(a: '\x04true'le)
if match == 0 {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__LITERAL << 21) |
- base.TOKEN__VBD__LITERAL__TRUE,
- continued: 0,
- length: 4)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__LITERAL << 21) |
+ base.TOKEN__VBD__LITERAL__TRUE,
+ continued: 0,
+ length: 4)
if args.src.length() < 4 {
return "#internal error: inconsistent I/O"
}
@@ -1142,11 +1142,11 @@
match = args.src.match7(a: '\x04null'le)
if match == 0 {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__LITERAL << 21) |
- base.TOKEN__VBD__LITERAL__NULL,
- continued: 0,
- length: 4)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__LITERAL << 21) |
+ base.TOKEN__VBD__LITERAL__NULL,
+ continued: 0,
+ length: 4)
if args.src.length() < 4 {
return "#internal error: inconsistent I/O"
}
@@ -1164,7 +1164,7 @@
} else if class == CLASS_COMMENT {
if this.quirks[QUIRK_ALLOW_COMMENT_BLOCK - QUIRKS_BASE] or
- this.quirks[QUIRK_ALLOW_COMMENT_LINE - QUIRKS_BASE] {
+ this.quirks[QUIRK_ALLOW_COMMENT_LINE - QUIRKS_BASE] {
this.decode_comment?(dst: args.dst, src: args.src)
if this.comment_type > 0 {
continue.outer
@@ -1184,7 +1184,7 @@
} endwhile.outer
if this.quirks[QUIRK_ALLOW_TRAILING_FILLER - QUIRKS_BASE] or
- this.quirks[QUIRK_EXPECT_TRAILING_NEW_LINE_OR_EOF - QUIRKS_BASE] {
+ this.quirks[QUIRK_EXPECT_TRAILING_NEW_LINE_OR_EOF - QUIRKS_BASE] {
this.decode_trailer?(dst: args.dst, src: args.src)
}
@@ -1371,9 +1371,9 @@
var u : base.u32
this.allow_leading_ars =
- this.quirks[QUIRK_ALLOW_LEADING_ASCII_RECORD_SEPARATOR - QUIRKS_BASE]
+ this.quirks[QUIRK_ALLOW_LEADING_ASCII_RECORD_SEPARATOR - QUIRKS_BASE]
this.allow_leading_ubom =
- this.quirks[QUIRK_ALLOW_LEADING_UNICODE_BYTE_ORDER_MARK - QUIRKS_BASE]
+ this.quirks[QUIRK_ALLOW_LEADING_UNICODE_BYTE_ORDER_MARK - QUIRKS_BASE]
while this.allow_leading_ars or this.allow_leading_ubom {
if args.dst.length() <= 0 {
@@ -1392,7 +1392,7 @@
this.allow_leading_ars = false
args.src.skip_u32_fast!(actual: 1, worst_case: 1)
args.dst.write_simple_token_fast!(
- value_major: 0, value_minor: 0, continued: 0, length: 1)
+ value_major: 0, value_minor: 0, continued: 0, length: 1)
continue
} else if (c == 0xEF) and this.allow_leading_ubom {
if args.src.length() < 3 {
@@ -1407,7 +1407,7 @@
this.allow_leading_ubom = false
args.src.skip_u32_fast!(actual: 3, worst_case: 3)
args.dst.write_simple_token_fast!(
- value_major: 0, value_minor: 0, continued: 0, length: 3)
+ value_major: 0, value_minor: 0, continued: 0, length: 3)
continue
}
}
@@ -1423,8 +1423,8 @@
this.comment_type = 0
while (args.dst.length() <= 0) or (args.src.length() <= 1),
- post args.dst.length() > 0,
- post args.src.length() > 1,
+ post args.dst.length() > 0,
+ post args.src.length() > 1,
{
if args.dst.length() <= 0 {
yield? base."$short write"
@@ -1442,23 +1442,23 @@
length = 2
while.comment_block true,
- pre args.dst.length() > 0,
+ pre args.dst.length() > 0,
{
if args.src.length() <= 1 {
if length > 0 {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__FILLER << 21) |
- base.TOKEN__VBD__FILLER__COMMENT_BLOCK,
- continued: 1,
- length: length)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__FILLER << 21) |
+ base.TOKEN__VBD__FILLER__COMMENT_BLOCK,
+ continued: 1,
+ length: length)
}
if args.src.is_closed() {
return "#bad input"
}
yield? base."$short read"
while args.dst.length() <= 0,
- post args.dst.length() > 0,
+ post args.dst.length() > 0,
{
yield? base."$short write"
} endwhile
@@ -1470,11 +1470,11 @@
if c2 == '*/'le {
args.src.skip_u32_fast!(actual: 2, worst_case: 2)
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__FILLER << 21) |
- base.TOKEN__VBD__FILLER__COMMENT_BLOCK,
- continued: 0,
- length: length + 2)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__FILLER << 21) |
+ base.TOKEN__VBD__FILLER__COMMENT_BLOCK,
+ continued: 0,
+ length: length + 2)
this.comment_type = 1
return ok
}
@@ -1482,13 +1482,13 @@
args.src.skip_u32_fast!(actual: 1, worst_case: 1)
if length >= 0xFFFD {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__FILLER << 21) |
- base.TOKEN__VBD__FILLER__COMMENT_BLOCK,
- continued: 1,
- length: length + 1)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__FILLER << 21) |
+ base.TOKEN__VBD__FILLER__COMMENT_BLOCK,
+ continued: 1,
+ length: length + 1)
while args.dst.length() <= 0,
- post args.dst.length() > 0,
+ post args.dst.length() > 0,
{
yield? base."$short write"
} endwhile
@@ -1503,29 +1503,29 @@
length = 2
while.comment_line true,
- pre args.dst.length() > 0,
+ pre args.dst.length() > 0,
{
if args.src.length() <= 0 {
if args.src.is_closed() {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__FILLER << 21) |
- base.TOKEN__VBD__FILLER__COMMENT_LINE,
- continued: 0,
- length: length)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__FILLER << 21) |
+ base.TOKEN__VBD__FILLER__COMMENT_LINE,
+ continued: 0,
+ length: length)
this.comment_type = 2
return ok
} else if length > 0 {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__FILLER << 21) |
- base.TOKEN__VBD__FILLER__COMMENT_LINE,
- continued: 1,
- length: length)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__FILLER << 21) |
+ base.TOKEN__VBD__FILLER__COMMENT_LINE,
+ continued: 1,
+ length: length)
}
yield? base."$short read"
while args.dst.length() <= 0,
- post args.dst.length() > 0,
+ post args.dst.length() > 0,
{
yield? base."$short write"
} endwhile
@@ -1536,11 +1536,11 @@
c = args.src.peek_u8()
if c == '\n' {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__FILLER << 21) |
- base.TOKEN__VBD__FILLER__COMMENT_LINE,
- continued: 0,
- length: length)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__FILLER << 21) |
+ base.TOKEN__VBD__FILLER__COMMENT_LINE,
+ continued: 0,
+ length: length)
this.comment_type = 2
return ok
}
@@ -1548,13 +1548,13 @@
args.src.skip_u32_fast!(actual: 1, worst_case: 1)
if length >= 0xFFFD {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__FILLER << 21) |
- base.TOKEN__VBD__FILLER__COMMENT_LINE,
- continued: 1,
- length: length + 1)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__FILLER << 21) |
+ base.TOKEN__VBD__FILLER__COMMENT_LINE,
+ continued: 1,
+ length: length + 1)
while args.dst.length() <= 0,
- post args.dst.length() > 0,
+ post args.dst.length() > 0,
{
yield? base."$short write"
} endwhile
@@ -1590,11 +1590,11 @@
if args.src.length() > 7 {
if (args.src.peek_u64le() | 0x2020_2020_2020_2020) == 'infinity'le {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__NUMBER << 21) |
- base.TOKEN__VBD__NUMBER__CONTENT_POS_INF,
- continued: 0,
- length: 8)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__NUMBER << 21) |
+ base.TOKEN__VBD__NUMBER__CONTENT_POS_INF,
+ continued: 0,
+ length: 8)
args.src.skip_u32_fast!(actual: 8, worst_case: 8)
return ok
}
@@ -1603,21 +1603,21 @@
continue
}
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__NUMBER << 21) |
- base.TOKEN__VBD__NUMBER__CONTENT_POS_INF,
- continued: 0,
- length: 3)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__NUMBER << 21) |
+ base.TOKEN__VBD__NUMBER__CONTENT_POS_INF,
+ continued: 0,
+ length: 3)
args.src.skip_u32_fast!(actual: 3, worst_case: 3)
return ok
} else if (c4 | 0x20_2020) == 'nan'le {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__NUMBER << 21) |
- base.TOKEN__VBD__NUMBER__CONTENT_POS_NAN,
- continued: 0,
- length: 3)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__NUMBER << 21) |
+ base.TOKEN__VBD__NUMBER__CONTENT_POS_NAN,
+ continued: 0,
+ length: 3)
args.src.skip_u32_fast!(actual: 3, worst_case: 3)
return ok
} else if (c4 & 0xFF) == '+' {
@@ -1641,11 +1641,11 @@
if args.src.length() > 8 {
if (args.src.peek_u64le_at(offset: 1) | 0x2020_2020_2020_2020) == 'infinity'le {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__NUMBER << 21) |
- (base.TOKEN__VBD__NUMBER__CONTENT_POS_INF >> neg),
- continued: 0,
- length: 9)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__NUMBER << 21) |
+ (base.TOKEN__VBD__NUMBER__CONTENT_POS_INF >> neg),
+ continued: 0,
+ length: 9)
args.src.skip_u32_fast!(actual: 9, worst_case: 9)
return ok
}
@@ -1654,21 +1654,21 @@
continue
}
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__NUMBER << 21) |
- (base.TOKEN__VBD__NUMBER__CONTENT_POS_INF >> neg),
- continued: 0,
- length: 4)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__NUMBER << 21) |
+ (base.TOKEN__VBD__NUMBER__CONTENT_POS_INF >> neg),
+ continued: 0,
+ length: 4)
args.src.skip_u32_fast!(actual: 4, worst_case: 4)
return ok
} else if (c4 | 0x20_2020) == 'nan'le {
args.dst.write_simple_token_fast!(
- value_major: 0,
- value_minor: (base.TOKEN__VBC__NUMBER << 21) |
- (base.TOKEN__VBD__NUMBER__CONTENT_POS_NAN >> neg),
- continued: 0,
- length: 4)
+ value_major: 0,
+ value_minor: (base.TOKEN__VBC__NUMBER << 21) |
+ (base.TOKEN__VBD__NUMBER__CONTENT_POS_NAN >> neg),
+ continued: 0,
+ length: 4)
args.src.skip_u32_fast!(actual: 4, worst_case: 4)
return ok
}
@@ -1695,12 +1695,12 @@
whitespace_length = 0
while.inner true,
- pre args.dst.length() > 0,
+ pre args.dst.length() > 0,
{
if args.src.length() <= 0 {
if whitespace_length > 0 {
args.dst.write_simple_token_fast!(
- value_major: 0, value_minor: 0, continued: 0, length: whitespace_length)
+ value_major: 0, value_minor: 0, continued: 0, length: whitespace_length)
}
if args.src.is_closed() {
break.outer
@@ -1713,7 +1713,7 @@
if LUT_CLASSES[c] <> CLASS_WHITESPACE {
if whitespace_length > 0 {
args.dst.write_simple_token_fast!(
- value_major: 0, value_minor: 0, continued: 0, length: whitespace_length)
+ value_major: 0, value_minor: 0, continued: 0, length: whitespace_length)
}
if this.trailer_stop > 0 {
return "#bad input"
@@ -1728,7 +1728,7 @@
args.src.skip_u32_fast!(actual: 1, worst_case: 1)
if (whitespace_length >= 0xFFFE) or (c == this.trailer_stop) {
args.dst.write_simple_token_fast!(
- value_major: 0, value_minor: 0, continued: 0, length: whitespace_length + 1)
+ value_major: 0, value_minor: 0, continued: 0, length: whitespace_length + 1)
if c == this.trailer_stop {
return ok
}
diff --git a/std/lzw/decode_lzw.wuffs b/std/lzw/decode_lzw.wuffs
index b193900..38df473 100644
--- a/std/lzw/decode_lzw.wuffs
+++ b/std/lzw/decode_lzw.wuffs
@@ -28,46 +28,46 @@
pub const DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE : base.u64 = 0
pub struct decoder? implements base.io_transformer(
- // set_literal_width_arg is 1 plus the saved argument passed to
- // set_literal_width. This is assigned to the literal_width field at the
- // start of transform_io. During that method, calling set_literal_width
- // will change set_literal_width_arg but not literal_width.
- set_literal_width_arg : base.u32[..= 9],
+ // set_literal_width_arg is 1 plus the saved argument passed to
+ // set_literal_width. This is assigned to the literal_width field at the
+ // start of transform_io. During that method, calling set_literal_width
+ // will change set_literal_width_arg but not literal_width.
+ set_literal_width_arg : base.u32[..= 9],
- // read_from state that does not change during a decode call.
- literal_width : base.u32[..= 8],
- clear_code : base.u32[..= 256],
- end_code : base.u32[..= 257],
+ // read_from state that does not change during a decode call.
+ literal_width : base.u32[..= 8],
+ clear_code : base.u32[..= 256],
+ end_code : base.u32[..= 257],
- // read_from state that does change during a decode call.
- save_code : base.u32[..= 4096],
- prev_code : base.u32[..= 4095],
- width : base.u32[..= 12],
- bits : base.u32,
- n_bits : base.u32[..= 31],
- output_ri : base.u32[..= 8191],
- output_wi : base.u32[..= 8191],
+ // read_from state that does change during a decode call.
+ save_code : base.u32[..= 4096],
+ prev_code : base.u32[..= 4095],
+ width : base.u32[..= 12],
+ bits : base.u32,
+ n_bits : base.u32[..= 31],
+ output_ri : base.u32[..= 8191],
+ output_wi : base.u32[..= 8191],
- // read_from return value. The read_from method effectively returns a
- // base.u32 to show how decode should continue after calling write_to. That
- // value needs to be saved across write_to's possible suspension, so we
- // might as well save it explicitly as a decoder field.
- read_from_return_value : base.u32,
+ // read_from return value. The read_from method effectively returns a
+ // base.u32 to show how decode should continue after calling write_to. That
+ // value needs to be saved across write_to's possible suspension, so we
+ // might as well save it explicitly as a decoder field.
+ read_from_return_value : base.u32,
- // read_from per-code state.
- prefixes : array[4096] base.u16[..= 4095],
+ // read_from per-code state.
+ prefixes : array[4096] base.u16[..= 4095],
- util : base.utility,
+ util : base.utility,
)(
- // read_from per-code state.
- suffixes : array[4096] array[8] base.u8,
- // lm1s is the "length minus 1"s of the values for the implicit key-value
- // table in this decoder. See std/lzw/README.md for more detail.
- lm1s : array[4096] base.u16,
+ // read_from per-code state.
+ suffixes : array[4096] array[8] base.u8,
+ // lm1s is the "length minus 1"s of the values for the implicit key-value
+ // table in this decoder. See std/lzw/README.md for more detail.
+ lm1s : array[4096] base.u16,
- // output[output_ri:output_wi] is the buffered output, connecting read_from
- // with write_to and flush.
- output : array[8192 + 7] base.u8,
+ // output[output_ri:output_wi] is the buffered output, connecting read_from
+ // with write_to and flush.
+ output : array[8192 + 7] base.u8,
)
pub func decoder.set_quirk_enabled!(quirk: base.u32, enabled: base.bool) {
diff --git a/std/nie/decode_nie.wuffs b/std/nie/decode_nie.wuffs
index dfa6024..a0ad13d 100644
--- a/std/nie/decode_nie.wuffs
+++ b/std/nie/decode_nie.wuffs
@@ -21,19 +21,19 @@
pub const DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE : base.u64 = 0
pub struct decoder? implements base.image_decoder(
- pixfmt : base.u32,
- width : base.u32[..= 0x7FFF_FFFF],
- height : base.u32[..= 0x7FFF_FFFF],
+ pixfmt : base.u32,
+ width : base.u32[..= 0x7FFF_FFFF],
+ height : base.u32[..= 0x7FFF_FFFF],
- // The call sequence state machine is discussed in
- // (/doc/std/image-decoders-call-sequence.md).
- call_sequence : base.u8,
+ // The call sequence state machine is discussed in
+ // (/doc/std/image-decoders-call-sequence.md).
+ call_sequence : base.u8,
- dst_x : base.u32,
- dst_y : base.u32,
+ dst_x : base.u32,
+ dst_y : base.u32,
- swizzler : base.pixel_swizzler,
- util : base.utility,
+ swizzler : base.pixel_swizzler,
+ util : base.utility,
)
pub func decoder.set_quirk_enabled!(quirk: base.u32, enabled: base.bool) {
@@ -90,12 +90,12 @@
if args.dst <> nullptr {
args.dst.set!(
- pixfmt: this.pixfmt,
- pixsub: 0,
- width: this.width,
- height: this.height,
- first_frame_io_position: 16,
- first_frame_is_opaque: false)
+ pixfmt: this.pixfmt,
+ pixsub: 0,
+ width: this.width,
+ height: this.height,
+ first_frame_io_position: 16,
+ first_frame_is_opaque: false)
}
this.call_sequence = 0x20
@@ -131,17 +131,17 @@
if args.dst <> nullptr {
args.dst.set!(bounds: this.util.make_rect_ie_u32(
- min_incl_x: 0,
- min_incl_y: 0,
- max_excl_x: this.width,
- max_excl_y: this.height),
- duration: 0,
- index: 0,
- io_position: 16,
- disposal: 0,
- opaque_within_bounds: false,
- overwrite_instead_of_blend: false,
- background_color: 0x0000_0000)
+ min_incl_x: 0,
+ min_incl_y: 0,
+ max_excl_x: this.width,
+ max_excl_y: this.height),
+ duration: 0,
+ index: 0,
+ io_position: 16,
+ disposal: 0,
+ opaque_within_bounds: false,
+ overwrite_instead_of_blend: false,
+ background_color: 0x0000_0000)
}
this.call_sequence = 0x40
@@ -174,11 +174,11 @@
this.dst_y = 0
status = this.swizzler.prepare!(
- dst_pixfmt: args.dst.pixel_format(),
- dst_palette: args.dst.palette(),
- src_pixfmt: this.util.make_pixel_format(repr: this.pixfmt),
- src_palette: this.util.empty_slice_u8(),
- blend: args.blend)
+ dst_pixfmt: args.dst.pixel_format(),
+ dst_palette: args.dst.palette(),
+ src_pixfmt: this.util.make_pixel_format(repr: this.pixfmt),
+ src_palette: this.util.empty_slice_u8(),
+ blend: args.blend)
if not status.is_ok() {
return status
}
@@ -246,24 +246,24 @@
while j >= 8 {
if args.src.length() >= ((src_bytes_per_pixel * 8) as base.u64) {
args.src.skip_u32_fast!(
- actual: src_bytes_per_pixel * 8,
- worst_case: src_bytes_per_pixel * 8)
+ actual: src_bytes_per_pixel * 8,
+ worst_case: src_bytes_per_pixel * 8)
}
j -= 8
} endwhile
while j > 0 {
if args.src.length() >= ((src_bytes_per_pixel * 1) as base.u64) {
args.src.skip_u32_fast!(
- actual: src_bytes_per_pixel * 1,
- worst_case: src_bytes_per_pixel * 1)
+ actual: src_bytes_per_pixel * 1,
+ worst_case: src_bytes_per_pixel * 1)
}
j -= 1
} endwhile
} else {
n = this.swizzler.swizzle_interleaved_from_reader!(
- dst: dst[i ..],
- dst_palette: args.dst.palette(),
- src: args.src)
+ dst: dst[i ..],
+ dst_palette: args.dst.palette(),
+ src: args.src)
}
if n == 0 {
return "@internal note: short read"
@@ -276,10 +276,10 @@
pub func decoder.frame_dirty_rect() base.rect_ie_u32 {
return this.util.make_rect_ie_u32(
- min_incl_x: 0,
- min_incl_y: 0,
- max_excl_x: this.width,
- max_excl_y: this.height)
+ min_incl_x: 0,
+ min_incl_y: 0,
+ max_excl_x: this.width,
+ max_excl_y: this.height)
}
pub func decoder.num_animation_loops() base.u32 {
diff --git a/std/png/common_consts.wuffs b/std/png/common_consts.wuffs
index cdc7066..8258d23 100644
--- a/std/png/common_consts.wuffs
+++ b/std/png/common_consts.wuffs
@@ -58,87 +58,87 @@
// 4: y_stride - y_offset - 1
// 5: y_offset
pri const INTERLACING : array[8] array[6] base.u8[..= 7] = [
- [0, 0, 0, 0, 0, 0], // non-interlaced; xy_stride=1, xy_offset=0
- [3, 7, 0, 3, 7, 0], // interlace_pass == 1
- [3, 3, 4, 3, 7, 0], // interlace_pass == 2
- [2, 3, 0, 3, 3, 4], // interlace_pass == 3
- [2, 1, 2, 2, 3, 0], // interlace_pass == 4
- [1, 1, 0, 2, 1, 2], // interlace_pass == 5
- [1, 0, 1, 1, 1, 0], // interlace_pass == 6
- [0, 0, 0, 1, 0, 1], // interlace_pass == 7
+ [0, 0, 0, 0, 0, 0], // non-interlaced; xy_stride=1, xy_offset=0
+ [3, 7, 0, 3, 7, 0], // interlace_pass == 1
+ [3, 3, 4, 3, 7, 0], // interlace_pass == 2
+ [2, 3, 0, 3, 3, 4], // interlace_pass == 3
+ [2, 1, 2, 2, 3, 0], // interlace_pass == 4
+ [1, 1, 0, 2, 1, 2], // interlace_pass == 5
+ [1, 0, 1, 1, 1, 0], // interlace_pass == 6
+ [0, 0, 0, 1, 0, 1], // interlace_pass == 7
]
// LOW_BIT_DEPTH_MULTIPLIERS holds multipliers that convert D-bit values into
// 8-bit values, for depth D.
pri const LOW_BIT_DEPTH_MULTIPLIERS : array[8] base.u8 = [
- 0,
- 0b1111_1111, // depth == 1
- 0b0101_0101, // depth == 2
- 0,
- 0b0001_0001, // depth == 4
- 0,
- 0,
- 0,
+ 0,
+ 0b1111_1111, // depth == 1
+ 0b0101_0101, // depth == 2
+ 0,
+ 0b0001_0001, // depth == 4
+ 0,
+ 0,
+ 0,
]
// LOW_BIT_DEPTH_NUM_PACKS holds the number of smaller-than-1-byte units that
// are packed into each byte.
pri const LOW_BIT_DEPTH_NUM_PACKS : array[8] base.u8 = [
- 0,
- 8, // depth == 1
- 4, // depth == 2
- 0,
- 2, // depth == 4
- 0,
- 0,
- 0,
+ 0,
+ 8, // depth == 1
+ 4, // depth == 2
+ 0,
+ 2, // depth == 4
+ 0,
+ 0,
+ 0,
]
// NUM_CHANNELS holds the number of channels for each valid color type.
pri const NUM_CHANNELS : array[8] base.u8[..= 4] = [
- 1, // color_type == 0: Y
- 0,
- 3, // color_type == 2: RGB
- 1, // color_type == 3: indexed
- 2, // color_type == 4: YA
- 0,
- 4, // color_type == 6: RGBA
- 0,
+ 1, // color_type == 0: Y
+ 0,
+ 3, // color_type == 2: RGB
+ 1, // color_type == 3: indexed
+ 2, // color_type == 4: YA
+ 0,
+ 4, // color_type == 6: RGBA
+ 0,
]
// LATIN_1 converts from printable Latin-1 (ISO/IEC 8859-1) to UTF-8 (encoded
// as little-endian u16). It was created by script/print-png-latin-1.go.
pri const LATIN_1 : array[256] base.u16 = [
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
- 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
- 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
- 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
- 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
- 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
- 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
- 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
- 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
- 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
- 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
- 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0xA1C2, 0xA2C2, 0xA3C2, 0xA4C2, 0xA5C2, 0xA6C2, 0xA7C2,
- 0xA8C2, 0xA9C2, 0xAAC2, 0xABC2, 0xACC2, 0xADC2, 0xAEC2, 0xAFC2,
- 0xB0C2, 0xB1C2, 0xB2C2, 0xB3C2, 0xB4C2, 0xB5C2, 0xB6C2, 0xB7C2,
- 0xB8C2, 0xB9C2, 0xBAC2, 0xBBC2, 0xBCC2, 0xBDC2, 0xBEC2, 0xBFC2,
- 0x80C3, 0x81C3, 0x82C3, 0x83C3, 0x84C3, 0x85C3, 0x86C3, 0x87C3,
- 0x88C3, 0x89C3, 0x8AC3, 0x8BC3, 0x8CC3, 0x8DC3, 0x8EC3, 0x8FC3,
- 0x90C3, 0x91C3, 0x92C3, 0x93C3, 0x94C3, 0x95C3, 0x96C3, 0x97C3,
- 0x98C3, 0x99C3, 0x9AC3, 0x9BC3, 0x9CC3, 0x9DC3, 0x9EC3, 0x9FC3,
- 0xA0C3, 0xA1C3, 0xA2C3, 0xA3C3, 0xA4C3, 0xA5C3, 0xA6C3, 0xA7C3,
- 0xA8C3, 0xA9C3, 0xAAC3, 0xABC3, 0xACC3, 0xADC3, 0xAEC3, 0xAFC3,
- 0xB0C3, 0xB1C3, 0xB2C3, 0xB3C3, 0xB4C3, 0xB5C3, 0xB6C3, 0xB7C3,
- 0xB8C3, 0xB9C3, 0xBAC3, 0xBBC3, 0xBCC3, 0xBDC3, 0xBEC3, 0xBFC3,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xA1C2, 0xA2C2, 0xA3C2, 0xA4C2, 0xA5C2, 0xA6C2, 0xA7C2,
+ 0xA8C2, 0xA9C2, 0xAAC2, 0xABC2, 0xACC2, 0xADC2, 0xAEC2, 0xAFC2,
+ 0xB0C2, 0xB1C2, 0xB2C2, 0xB3C2, 0xB4C2, 0xB5C2, 0xB6C2, 0xB7C2,
+ 0xB8C2, 0xB9C2, 0xBAC2, 0xBBC2, 0xBCC2, 0xBDC2, 0xBEC2, 0xBFC2,
+ 0x80C3, 0x81C3, 0x82C3, 0x83C3, 0x84C3, 0x85C3, 0x86C3, 0x87C3,
+ 0x88C3, 0x89C3, 0x8AC3, 0x8BC3, 0x8CC3, 0x8DC3, 0x8EC3, 0x8FC3,
+ 0x90C3, 0x91C3, 0x92C3, 0x93C3, 0x94C3, 0x95C3, 0x96C3, 0x97C3,
+ 0x98C3, 0x99C3, 0x9AC3, 0x9BC3, 0x9CC3, 0x9DC3, 0x9EC3, 0x9FC3,
+ 0xA0C3, 0xA1C3, 0xA2C3, 0xA3C3, 0xA4C3, 0xA5C3, 0xA6C3, 0xA7C3,
+ 0xA8C3, 0xA9C3, 0xAAC3, 0xABC3, 0xACC3, 0xADC3, 0xAEC3, 0xAFC3,
+ 0xB0C3, 0xB1C3, 0xB2C3, 0xB3C3, 0xB4C3, 0xB5C3, 0xB6C3, 0xB7C3,
+ 0xB8C3, 0xB9C3, 0xBAC3, 0xBBC3, 0xBCC3, 0xBDC3, 0xBEC3, 0xBFC3,
]
diff --git a/std/png/decode_filter_arm_neon.wuffs b/std/png/decode_filter_arm_neon.wuffs
index 484832a..5bce234 100644
--- a/std/png/decode_filter_arm_neon.wuffs
+++ b/std/png/decode_filter_arm_neon.wuffs
@@ -29,7 +29,7 @@
// Filter 1: Sub.
pri func decoder.filter_1_distance_4_arm_neon!(curr: slice base.u8),
- choose cpu_arch >= arm_neon,
+ choose cpu_arch >= arm_neon,
{
var curr : slice base.u8
@@ -50,7 +50,7 @@
// Filter 3: Average.
pri func decoder.filter_3_distance_4_arm_neon!(curr: slice base.u8, prev: slice base.u8),
- choose cpu_arch >= arm_neon,
+ choose cpu_arch >= arm_neon,
{
var curr : slice base.u8
var prev : slice base.u8
@@ -84,7 +84,7 @@
// Filter 4: Paeth.
pri func decoder.filter_4_distance_3_arm_neon!(curr: slice base.u8, prev: slice base.u8),
- choose cpu_arch >= arm_neon,
+ choose cpu_arch >= arm_neon,
{
// See the comments in filter_4_distance_4_arm_neon for an explanation of
// how this works. That function's single loop is copied twice here, once
@@ -125,8 +125,8 @@
picka = cmpab.vandq_u16(b: cmpac).vmovn_u16()
pickb = pb.vcleq_u16(b: pc).vmovn_u16()
fx = fx.vadd_u8(
- b: picka.vbsl_u8(b: fa,
- c: pickb.vbsl_u8(b: fb, c: fc)))
+ b: picka.vbsl_u8(b: fa,
+ c: pickb.vbsl_u8(b: fb, c: fc)))
// § poke_u24le replaces poke_u32le.
curr.poke_u24le!(a: fx.as_u32x2().vget_lane_u32(b: 0))
fc = fb
@@ -146,8 +146,8 @@
picka = cmpab.vandq_u16(b: cmpac).vmovn_u16()
pickb = pb.vcleq_u16(b: pc).vmovn_u16()
fx = fx.vadd_u8(
- b: picka.vbsl_u8(b: fa,
- c: pickb.vbsl_u8(b: fb, c: fc)))
+ b: picka.vbsl_u8(b: fa,
+ c: pickb.vbsl_u8(b: fb, c: fc)))
// § poke_u24le replaces poke_u32le.
curr.poke_u24le!(a: fx.as_u32x2().vget_lane_u32(b: 0))
// § These assignments are unnecessary; this is the last iteration.
@@ -157,7 +157,7 @@
}
pri func decoder.filter_4_distance_4_arm_neon!(curr: slice base.u8, prev: slice base.u8),
- choose cpu_arch >= arm_neon,
+ choose cpu_arch >= arm_neon,
{
var curr : slice base.u8
var prev : slice base.u8
@@ -196,8 +196,8 @@
// Add the predictor to the residual.
fx = fx.vadd_u8(
- b: picka.vbsl_u8(b: fa,
- c: pickb.vbsl_u8(b: fb, c: fc)))
+ b: picka.vbsl_u8(b: fa,
+ c: pickb.vbsl_u8(b: fb, c: fc)))
curr.poke_u32le!(a: fx.as_u32x2().vget_lane_u32(b: 0))
fc = fb
diff --git a/std/png/decode_filter_fallback.wuffs b/std/png/decode_filter_fallback.wuffs
index 3c544ee..77950a7 100644
--- a/std/png/decode_filter_fallback.wuffs
+++ b/std/png/decode_filter_fallback.wuffs
@@ -17,7 +17,7 @@
// Filter 1: Sub.
pri func decoder.filter_1!(curr: slice base.u8),
- choosy,
+ choosy,
{
var filter_distance : base.u64[..= 8]
var fa : base.u8
@@ -31,7 +31,7 @@
fa = 0
i = i_start
while i < args.curr.length(),
- inv i_start < 8,
+ inv i_start < 8,
{
args.curr[i] = args.curr[i] ~mod+ fa
fa = args.curr[i]
@@ -87,8 +87,8 @@
n = args.curr.length().min(a: args.prev.length())
i = 0
while i < n,
- inv n <= args.curr.length(),
- inv n <= args.prev.length(),
+ inv n <= args.curr.length(),
+ inv n <= args.prev.length(),
{
assert i < 0xFFFF_FFFF_FFFF_FFFF via "a < b: a < c; c <= b"(c: n)
assert i < args.curr.length() via "a < b: a < c; c <= b"(c: n)
@@ -101,7 +101,7 @@
// Filter 3: Average.
pri func decoder.filter_3!(curr: slice base.u8, prev: slice base.u8),
- choosy,
+ choosy,
{
var filter_distance : base.u64[..= 8]
var n : base.u64
@@ -112,7 +112,7 @@
i = filter_distance
assert i >= filter_distance via "a >= b: a == b"()
while i < args.curr.length(),
- inv i >= filter_distance,
+ inv i >= filter_distance,
{
assert i < 0xFFFF_FFFF_FFFF_FFFF via "a < b: a < c; c <= b"(c: args.curr.length())
assert (i - filter_distance) < args.curr.length() via "(a - b) < c: a < c; 0 <= b"()
@@ -125,8 +125,8 @@
n = args.curr.length().min(a: args.prev.length())
i = 0
while (i < n) and (i < filter_distance),
- inv n <= args.curr.length(),
- inv n <= args.prev.length(),
+ inv n <= args.curr.length(),
+ inv n <= args.prev.length(),
{
assert i < 0xFFFF_FFFF_FFFF_FFFF via "a < b: a < c; c <= b"(c: n)
assert i < args.curr.length() via "a < b: a < c; c <= b"(c: n)
@@ -138,17 +138,17 @@
i = filter_distance
assert i >= filter_distance via "a >= b: a == b"()
while i < n,
- inv i >= filter_distance,
- inv n <= args.curr.length(),
- inv n <= args.prev.length(),
+ inv i >= filter_distance,
+ inv n <= args.curr.length(),
+ inv n <= args.prev.length(),
{
assert i < 0xFFFF_FFFF_FFFF_FFFF via "a < b: a < c; c <= b"(c: n)
assert i < args.curr.length() via "a < b: a < c; c <= b"(c: n)
assert i < args.prev.length() via "a < b: a < c; c <= b"(c: n)
assert (i - filter_distance) < args.curr.length() via "(a - b) < c: a < c; 0 <= b"()
args.curr[i] = args.curr[i] ~mod+ (((
- (args.curr[i - filter_distance] as base.u32) +
- (args.prev[i] as base.u32)) / 2) as base.u8)
+ (args.curr[i - filter_distance] as base.u32) +
+ (args.prev[i] as base.u32)) / 2) as base.u8)
i += 1
assert i >= filter_distance via "a >= b: a >= (b + c); 0 <= c"(c: 1)
} endwhile
@@ -223,7 +223,7 @@
// Filter 4: Paeth.
pri func decoder.filter_4!(curr: slice base.u8, prev: slice base.u8),
- choosy,
+ choosy,
{
var filter_distance : base.u64[..= 8]
var n : base.u64
@@ -241,8 +241,8 @@
n = args.curr.length().min(a: args.prev.length())
i = 0
while (i < n) and (i < filter_distance),
- inv n <= args.curr.length(),
- inv n <= args.prev.length(),
+ inv n <= args.curr.length(),
+ inv n <= args.prev.length(),
{
assert i < 0xFFFF_FFFF_FFFF_FFFF via "a < b: a < c; c <= b"(c: n)
assert i < args.curr.length() via "a < b: a < c; c <= b"(c: n)
@@ -254,9 +254,9 @@
i = filter_distance
assert i >= filter_distance via "a >= b: a == b"()
while i < n,
- inv i >= filter_distance,
- inv n <= args.curr.length(),
- inv n <= args.prev.length(),
+ inv i >= filter_distance,
+ inv n <= args.curr.length(),
+ inv n <= args.prev.length(),
{
assert i < 0xFFFF_FFFF_FFFF_FFFF via "a < b: a < c; c <= b"(c: n)
assert i < args.curr.length() via "a < b: a < c; c <= b"(c: n)
diff --git a/std/png/decode_filter_x86_sse42.wuffs b/std/png/decode_filter_x86_sse42.wuffs
index 9251541..62c8f91 100644
--- a/std/png/decode_filter_x86_sse42.wuffs
+++ b/std/png/decode_filter_x86_sse42.wuffs
@@ -45,7 +45,7 @@
// "Have std/png filter_1_distance_? use more SIMD" for a pessimizing example.
pri func decoder.filter_1_distance_4_x86_sse42!(curr: slice base.u8),
- choose cpu_arch >= x86_sse42,
+ choose cpu_arch >= x86_sse42,
{
var curr : slice base.u8
@@ -75,7 +75,7 @@
// }
pri func decoder.filter_3_distance_4_x86_sse42!(curr: slice base.u8, prev: slice base.u8),
- choose cpu_arch >= x86_sse42,
+ choose cpu_arch >= x86_sse42,
{
var curr : slice base.u8
var prev : slice base.u8
@@ -134,7 +134,7 @@
// Filter 4: Paeth.
pri func decoder.filter_4_distance_3_x86_sse42!(curr: slice base.u8, prev: slice base.u8),
- choose cpu_arch >= x86_sse42,
+ choose cpu_arch >= x86_sse42,
{
// See the comments in filter_4_distance_4_x86_sse42 for an explanation of
// how this works. That function's single loop is copied twice here, once
@@ -170,10 +170,10 @@
pc128 = pc128._mm_abs_epi16()
smallest128 = pc128._mm_min_epi16(b: pb128._mm_min_epi16(b: pa128))
p128 = c128._mm_blendv_epi8(
- b: b128,
- mask: smallest128._mm_cmpeq_epi16(b: pb128))._mm_blendv_epi8(
- b: a128,
- mask: smallest128._mm_cmpeq_epi16(b: pa128))
+ b: b128,
+ mask: smallest128._mm_cmpeq_epi16(b: pb128))._mm_blendv_epi8(
+ b: a128,
+ mask: smallest128._mm_cmpeq_epi16(b: pa128))
x128 = util.make_m128i_single_u32(a: curr.peek_u32le())
x128 = x128._mm_unpacklo_epi8(b: z128)
x128 = x128._mm_add_epi8(b: p128)
@@ -196,10 +196,10 @@
pc128 = pc128._mm_abs_epi16()
smallest128 = pc128._mm_min_epi16(b: pb128._mm_min_epi16(b: pa128))
p128 = c128._mm_blendv_epi8(
- b: b128,
- mask: smallest128._mm_cmpeq_epi16(b: pb128))._mm_blendv_epi8(
- b: a128,
- mask: smallest128._mm_cmpeq_epi16(b: pa128))
+ b: b128,
+ mask: smallest128._mm_cmpeq_epi16(b: pb128))._mm_blendv_epi8(
+ b: a128,
+ mask: smallest128._mm_cmpeq_epi16(b: pa128))
// § peek_u24le_as_u32 replaces peek_u32le.
x128 = util.make_m128i_single_u32(a: curr.peek_u24le_as_u32())
x128 = x128._mm_unpacklo_epi8(b: z128)
@@ -214,7 +214,7 @@
}
pri func decoder.filter_4_distance_4_x86_sse42!(curr: slice base.u8, prev: slice base.u8),
- choose cpu_arch >= x86_sse42,
+ choose cpu_arch >= x86_sse42,
{
var curr : slice base.u8
var prev : slice base.u8
@@ -259,10 +259,10 @@
//
// The a._mm_blendv_epi8(b, mask) method picks b when mask is true.
p128 = c128._mm_blendv_epi8(
- b: b128,
- mask: smallest128._mm_cmpeq_epi16(b: pb128))._mm_blendv_epi8(
- b: a128,
- mask: smallest128._mm_cmpeq_epi16(b: pa128))
+ b: b128,
+ mask: smallest128._mm_cmpeq_epi16(b: pb128))._mm_blendv_epi8(
+ b: a128,
+ mask: smallest128._mm_cmpeq_epi16(b: pa128))
// Add the predictor to the residual and, for the next iteration, set
// its previous pixels, a128 and c128, to x128 and b128.
diff --git a/std/png/decode_png.wuffs b/std/png/decode_png.wuffs
index 33dd227..4df5f34 100644
--- a/std/png/decode_png.wuffs
+++ b/std/png/decode_png.wuffs
@@ -16,143 +16,143 @@
use "std/zlib"
pub struct decoder? implements base.image_decoder(
- // The 0x00FF_FFFF limit is arbitrary (the PNG spec says 0x7FFF_FFFF) but
- // it means that (width * height * bytes_per_pixel) doesn't overflow a u64.
- width : base.u32[..= 0x00FF_FFFF],
- height : base.u32[..= 0x00FF_FFFF],
+ // The 0x00FF_FFFF limit is arbitrary (the PNG spec says 0x7FFF_FFFF) but
+ // it means that (width * height * bytes_per_pixel) doesn't overflow a u64.
+ width : base.u32[..= 0x00FF_FFFF],
+ height : base.u32[..= 0x00FF_FFFF],
- // pass_bytes_per_row doesn't include the 1 byte for the per-row filter.
- pass_bytes_per_row : base.u64[..= 0x07FF_FFF8],
+ // pass_bytes_per_row doesn't include the 1 byte for the per-row filter.
+ pass_bytes_per_row : base.u64[..= 0x07FF_FFF8],
- workbuf_wi : base.u64,
- workbuf_hist_pos_base : base.u64,
+ workbuf_wi : base.u64,
+ workbuf_hist_pos_base : base.u64,
- // The inclusive upper bound, DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE, is
- // derived from the width and height upper bounds at up to 8 bytes per
- // pixel. It equals (((8 * M) + 1) * M), where M is 0x00FF_FFFF.
- overall_workbuf_length : base.u64[..= 0x0007_FFFF_F100_0007],
- pass_workbuf_length : base.u64[..= 0x0007_FFFF_F100_0007],
+ // The inclusive upper bound, DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE, is
+ // derived from the width and height upper bounds at up to 8 bytes per
+ // pixel. It equals (((8 * M) + 1) * M), where M is 0x00FF_FFFF.
+ overall_workbuf_length : base.u64[..= 0x0007_FFFF_F100_0007],
+ pass_workbuf_length : base.u64[..= 0x0007_FFFF_F100_0007],
- // The call sequence state machine is discussed in
- // (/doc/std/image-decoders-call-sequence.md).
- call_sequence : base.u8,
+ // The call sequence state machine is discussed in
+ // (/doc/std/image-decoders-call-sequence.md).
+ call_sequence : base.u8,
- report_metadata_chrm : base.bool,
- report_metadata_exif : base.bool,
- report_metadata_gama : base.bool,
- report_metadata_iccp : base.bool,
- report_metadata_kvp : base.bool,
- report_metadata_srgb : base.bool,
+ report_metadata_chrm : base.bool,
+ report_metadata_exif : base.bool,
+ report_metadata_gama : base.bool,
+ report_metadata_iccp : base.bool,
+ report_metadata_kvp : base.bool,
+ report_metadata_srgb : base.bool,
- ignore_checksum : base.bool,
+ ignore_checksum : base.bool,
- depth : base.u8[..= 16],
- color_type : base.u8[..= 6],
- filter_distance : base.u8[..= 8],
- interlace_pass : base.u8[..= 7],
+ depth : base.u8[..= 16],
+ color_type : base.u8[..= 6],
+ filter_distance : base.u8[..= 8],
+ interlace_pass : base.u8[..= 7],
- seen_actl : base.bool,
- seen_chrm : base.bool,
- seen_fctl : base.bool,
- seen_exif : base.bool,
- seen_gama : base.bool,
- seen_iccp : base.bool,
- seen_idat : base.bool,
- seen_ihdr : base.bool,
- seen_plte : base.bool,
- seen_srgb : base.bool,
- seen_trns : base.bool,
+ seen_actl : base.bool,
+ seen_chrm : base.bool,
+ seen_fctl : base.bool,
+ seen_exif : base.bool,
+ seen_gama : base.bool,
+ seen_iccp : base.bool,
+ seen_idat : base.bool,
+ seen_ihdr : base.bool,
+ seen_plte : base.bool,
+ seen_srgb : base.bool,
+ seen_trns : base.bool,
- metadata_is_zlib_compressed : base.bool,
+ metadata_is_zlib_compressed : base.bool,
- zlib_is_dirty : base.bool,
+ zlib_is_dirty : base.bool,
- chunk_type : base.u32,
- chunk_type_array : array[4] base.u8,
- chunk_length : base.u32,
+ chunk_type : base.u32,
+ chunk_type_array : array[4] base.u8,
+ chunk_length : base.u32,
- // remap_transparency, if non-zero, is the 32-bit or 64-bit (depending on
- // this.depth) argb_nonpremul color that is nominally opaque but remapped
- // to transparent black.
- //
- // "Remapped" is an unofficial term. This is where the IHDR color type is 0
- // (Y) or 2 (RGB) but there's also a tRNS chunk.
- //
- // PNG transparency that isn't "remapped" is color type 3 (indexed) with
- // tRNS, color type 4 (YA) or color type 6 (RGBA).
- remap_transparency : base.u64,
+ // remap_transparency, if non-zero, is the 32-bit or 64-bit (depending on
+ // this.depth) argb_nonpremul color that is nominally opaque but remapped
+ // to transparent black.
+ //
+ // "Remapped" is an unofficial term. This is where the IHDR color type is 0
+ // (Y) or 2 (RGB) but there's also a tRNS chunk.
+ //
+ // PNG transparency that isn't "remapped" is color type 3 (indexed) with
+ // tRNS, color type 4 (YA) or color type 6 (RGBA).
+ remap_transparency : base.u64,
- dst_pixfmt : base.u32,
- src_pixfmt : base.u32,
+ dst_pixfmt : base.u32,
+ src_pixfmt : base.u32,
- num_animation_frames_value : base.u32,
- num_animation_loops_value : base.u32,
- num_decoded_frame_configs_value : base.u32,
- num_decoded_frames_value : base.u32,
+ num_animation_frames_value : base.u32,
+ num_animation_loops_value : base.u32,
+ num_decoded_frame_configs_value : base.u32,
+ num_decoded_frames_value : base.u32,
- // The frame_etc fields correspond to the base.frame_config argument passed
- // to decode_frame_config. For animated APNG, these are explicitly given in
- // the file's fcTL chunks. For still PNG, these are implicitly given in the
- // file's IHDR chunk.
- //
- // Either way, decode_image_config has to read all the way to the start of
- // the first IDAT / fdAT chunk (e.g. to see if there's a PLTE chunk). While
- // later frame's restart io_positions are located just before fcTL chunks,
- // the first frame's restart io_position is located just before the IDAT /
- // fdAT chunk, so we also have to cache the first frame's configuration as
- // we cannot re-read the first fcTL. Hence, there are first_etc fields for
- // every frame_etc field.
- //
- // For the etc_duration fields, there are 705_600000 flicks per second and
- // the maximum frame duration is 65535 seconds.
- //
- // The fields are ordered to minimize alignment wastage.
- frame_rect_x0 : base.u32[..= 0x00FF_FFFF],
- frame_rect_y0 : base.u32[..= 0x00FF_FFFF],
- frame_rect_x1 : base.u32[..= 0x00FF_FFFF],
- frame_rect_y1 : base.u32[..= 0x00FF_FFFF],
- first_rect_x0 : base.u32[..= 0x00FF_FFFF],
- first_rect_y0 : base.u32[..= 0x00FF_FFFF],
- first_rect_x1 : base.u32[..= 0x00FF_FFFF],
- first_rect_y1 : base.u32[..= 0x00FF_FFFF],
- frame_config_io_position : base.u64,
- first_config_io_position : base.u64,
- frame_duration : base.u64[..= 0x2A0E_6FF1_6600],
- first_duration : base.u64[..= 0x2A0E_6FF1_6600],
- frame_disposal : base.u8,
- first_disposal : base.u8,
- frame_overwrite_instead_of_blend : base.bool,
- first_overwrite_instead_of_blend : base.bool,
+ // The frame_etc fields correspond to the base.frame_config argument passed
+ // to decode_frame_config. For animated APNG, these are explicitly given in
+ // the file's fcTL chunks. For still PNG, these are implicitly given in the
+ // file's IHDR chunk.
+ //
+ // Either way, decode_image_config has to read all the way to the start of
+ // the first IDAT / fdAT chunk (e.g. to see if there's a PLTE chunk). While
+ // later frame's restart io_positions are located just before fcTL chunks,
+ // the first frame's restart io_position is located just before the IDAT /
+ // fdAT chunk, so we also have to cache the first frame's configuration as
+ // we cannot re-read the first fcTL. Hence, there are first_etc fields for
+ // every frame_etc field.
+ //
+ // For the etc_duration fields, there are 705_600000 flicks per second and
+ // the maximum frame duration is 65535 seconds.
+ //
+ // The fields are ordered to minimize alignment wastage.
+ frame_rect_x0 : base.u32[..= 0x00FF_FFFF],
+ frame_rect_y0 : base.u32[..= 0x00FF_FFFF],
+ frame_rect_x1 : base.u32[..= 0x00FF_FFFF],
+ frame_rect_y1 : base.u32[..= 0x00FF_FFFF],
+ first_rect_x0 : base.u32[..= 0x00FF_FFFF],
+ first_rect_y0 : base.u32[..= 0x00FF_FFFF],
+ first_rect_x1 : base.u32[..= 0x00FF_FFFF],
+ first_rect_y1 : base.u32[..= 0x00FF_FFFF],
+ frame_config_io_position : base.u64,
+ first_config_io_position : base.u64,
+ frame_duration : base.u64[..= 0x2A0E_6FF1_6600],
+ first_duration : base.u64[..= 0x2A0E_6FF1_6600],
+ frame_disposal : base.u8,
+ first_disposal : base.u8,
+ frame_overwrite_instead_of_blend : base.bool,
+ first_overwrite_instead_of_blend : base.bool,
- next_animation_seq_num : base.u32,
+ next_animation_seq_num : base.u32,
- metadata_flavor : base.u32,
- metadata_fourcc : base.u32,
- metadata_x : base.u64,
- metadata_y : base.u64,
- metadata_z : base.u64,
+ metadata_flavor : base.u32,
+ metadata_fourcc : base.u32,
+ metadata_x : base.u64,
+ metadata_y : base.u64,
+ metadata_z : base.u64,
- // ztxt_ri and ztxt_wi are read and write indexes into the dst_palette
- // buffer, re-purposed as a zlib uncompression buffer for zTXt chunks. The
- // upper bound, 1024, is the same as the dst_palette length.
- ztxt_ri : base.u32[..= 1024],
- ztxt_wi : base.u32[..= 1024],
- // ztxt_hist_pos is the history position: how many uncompressed bytes have
- // been generated.
- ztxt_hist_pos : base.u64,
+ // ztxt_ri and ztxt_wi are read and write indexes into the dst_palette
+ // buffer, re-purposed as a zlib uncompression buffer for zTXt chunks. The
+ // upper bound, 1024, is the same as the dst_palette length.
+ ztxt_ri : base.u32[..= 1024],
+ ztxt_wi : base.u32[..= 1024],
+ // ztxt_hist_pos is the history position: how many uncompressed bytes have
+ // been generated.
+ ztxt_hist_pos : base.u64,
- swizzler : base.pixel_swizzler,
- util : base.utility,
+ swizzler : base.pixel_swizzler,
+ util : base.utility,
)(
- crc32 : crc32.ieee_hasher,
- zlib : zlib.decoder,
+ crc32 : crc32.ieee_hasher,
+ zlib : zlib.decoder,
- // dst_palette and src_palette are used by the swizzler, during
- // decode_frame. src_palette is initialized by processing the PLTE chunk.
- // dst_palette is also re-purposed as a zlib uncompression buffer for zTXt
- // chunks, during decode_image_config.
- dst_palette : array[4 * 256] base.u8,
- src_palette : array[4 * 256] base.u8,
+ // dst_palette and src_palette are used by the swizzler, during
+ // decode_frame. src_palette is initialized by processing the PLTE chunk.
+ // dst_palette is also re-purposed as a zlib uncompression buffer for zTXt
+ // chunks, during decode_image_config.
+ dst_palette : array[4 * 256] base.u8,
+ src_palette : array[4 * 256] base.u8,
)
pub func decoder.set_quirk_enabled!(quirk: base.u32, enabled: base.bool) {
@@ -291,7 +291,7 @@
checksum_want = args.src.read_u32be?()
if (not this.ignore_checksum) and ((this.chunk_type & ANCILLARY_BIT) == 0) and
- (checksum_have <> checksum_want) {
+ (checksum_have <> checksum_want) {
return "#bad checksum"
}
} endwhile
@@ -305,12 +305,12 @@
if args.dst <> nullptr {
args.dst.set!(
- pixfmt: this.dst_pixfmt,
- pixsub: 0,
- width: this.width,
- height: this.height,
- first_frame_io_position: this.first_config_io_position,
- first_frame_is_opaque: (this.color_type <= 3) and (not this.seen_trns))
+ pixfmt: this.dst_pixfmt,
+ pixsub: 0,
+ width: this.width,
+ height: this.height,
+ first_frame_io_position: this.first_config_io_position,
+ first_frame_is_opaque: (this.color_type <= 3) and (not this.seen_trns))
}
// For still (non-animated) PNGs, the first and only frame's configuration
@@ -393,7 +393,7 @@
return "#bad header"
}
this.overall_workbuf_length = (this.height as base.u64) *
- (1 + this.calculate_bytes_per_row(width: this.width))
+ (1 + this.calculate_bytes_per_row(width: this.width))
this.choose_filter_implementations!()
}
@@ -489,7 +489,7 @@
}
bytes_per_channel = (this.depth >> 3) as base.u64
return (args.width as base.u64) * bytes_per_channel *
- (NUM_CHANNELS[this.color_type] as base.u64)
+ (NUM_CHANNELS[this.color_type] as base.u64)
}
pri func decoder.choose_filter_implementations!() {
@@ -499,22 +499,22 @@
choose filter_1 = [filter_1_distance_3_fallback]
choose filter_3 = [filter_3_distance_3_fallback]
choose filter_4 = [
- filter_4_distance_3_arm_neon,
- filter_4_distance_3_x86_sse42,
- filter_4_distance_3_fallback]
+ filter_4_distance_3_arm_neon,
+ filter_4_distance_3_x86_sse42,
+ filter_4_distance_3_fallback]
} else if this.filter_distance == 4 {
choose filter_1 = [
- filter_1_distance_4_arm_neon,
- filter_1_distance_4_x86_sse42,
- filter_1_distance_4_fallback]
+ filter_1_distance_4_arm_neon,
+ filter_1_distance_4_x86_sse42,
+ filter_1_distance_4_fallback]
choose filter_3 = [
- filter_3_distance_4_arm_neon,
- filter_3_distance_4_x86_sse42,
- filter_3_distance_4_fallback]
+ filter_3_distance_4_arm_neon,
+ filter_3_distance_4_x86_sse42,
+ filter_3_distance_4_fallback]
choose filter_4 = [
- filter_4_distance_4_arm_neon,
- filter_4_distance_4_x86_sse42,
- filter_4_distance_4_fallback]
+ filter_4_distance_4_arm_neon,
+ filter_4_distance_4_x86_sse42,
+ filter_4_distance_4_fallback]
}
}
@@ -553,8 +553,8 @@
}
} else if (this.chunk_type == 'iTXt'le) or
- (this.chunk_type == 'tEXt'le) or
- (this.chunk_type == 'zTXt'le) {
+ (this.chunk_type == 'tEXt'le) or
+ (this.chunk_type == 'zTXt'le) {
if this.report_metadata_kvp {
this.metadata_flavor = base.MORE_INFORMATION__FLAVOR__METADATA_RAW_TRANSFORM
this.metadata_fourcc = 'KVPK'be
@@ -616,7 +616,7 @@
} else if this.chunk_type == 'tRNS'le {
if this.seen_trns or (this.color_type > 3) or
- ((this.color_type == 3) and (not this.seen_plte)) {
+ ((this.color_type == 3) and (not this.seen_plte)) {
return "#bad chunk"
}
this.decode_trns?(src: args.src)
@@ -721,7 +721,7 @@
x1 ~mod+= x0
y1 ~mod+= y0
if (x0 >= x1) or (x0 > this.width) or (x1 > this.width) or
- (y0 >= y1) or (y0 > this.height) or (y1 > this.height) {
+ (y0 >= y1) or (y0 > this.height) or (y1 > this.height) {
return "#bad chunk"
}
assert x1 <= 0x00FF_FFFF via "a <= b: a <= c; c <= b"(c: this.width)
@@ -914,10 +914,10 @@
u = args.src.read_u48be_as_u64?()
if this.depth <= 8 {
this.remap_transparency =
- (0x0000_00FF & (u >> 0)) |
- (0x0000_FF00 & (u >> 8)) |
- (0x00FF_0000 & (u >> 16)) |
- 0xFF00_0000
+ (0x0000_00FF & (u >> 0)) |
+ (0x0000_FF00 & (u >> 8)) |
+ (0x00FF_0000 & (u >> 16)) |
+ 0xFF00_0000
} else {
this.remap_transparency = u | 0xFFFF_0000_0000_0000
}
@@ -1023,17 +1023,17 @@
if args.dst <> nullptr {
args.dst.set!(bounds: this.util.make_rect_ie_u32(
- min_incl_x: this.frame_rect_x0,
- min_incl_y: this.frame_rect_y0,
- max_excl_x: this.frame_rect_x1,
- max_excl_y: this.frame_rect_y1),
- duration: this.frame_duration,
- index: this.num_decoded_frame_configs_value as base.u64,
- io_position: this.frame_config_io_position,
- disposal: this.frame_disposal,
- opaque_within_bounds: (this.color_type <= 3) and (not this.seen_trns),
- overwrite_instead_of_blend: this.frame_overwrite_instead_of_blend,
- background_color: 0x0000_0000)
+ min_incl_x: this.frame_rect_x0,
+ min_incl_y: this.frame_rect_y0,
+ max_excl_x: this.frame_rect_x1,
+ max_excl_y: this.frame_rect_y1),
+ duration: this.frame_duration,
+ index: this.num_decoded_frame_configs_value as base.u64,
+ io_position: this.frame_config_io_position,
+ disposal: this.frame_disposal,
+ opaque_within_bounds: (this.color_type <= 3) and (not this.seen_trns),
+ overwrite_instead_of_blend: this.frame_overwrite_instead_of_blend,
+ background_color: 0x0000_0000)
}
this.num_decoded_frame_configs_value ~sat+= 1
@@ -1190,11 +1190,11 @@
this.zlib_is_dirty = true
status = this.swizzler.prepare!(
- dst_pixfmt: args.dst.pixel_format(),
- dst_palette: args.dst.palette_or_else(fallback: this.dst_palette[..]),
- src_pixfmt: this.util.make_pixel_format(repr: this.src_pixfmt),
- src_palette: this.src_palette[..],
- blend: args.blend)
+ dst_pixfmt: args.dst.pixel_format(),
+ dst_palette: args.dst.palette_or_else(fallback: this.dst_palette[..]),
+ src_pixfmt: this.util.make_pixel_format(repr: this.src_pixfmt),
+ src_palette: this.src_palette[..],
+ blend: args.blend)
if not status.is_ok() {
return status
}
@@ -1203,11 +1203,11 @@
while true {
if (this.chunk_type_array[0] == 'I') {
pass_width = 0x00FF_FFFF &
- (((INTERLACING[this.interlace_pass][1] as base.u32) + this.width) >>
- INTERLACING[this.interlace_pass][0])
+ (((INTERLACING[this.interlace_pass][1] as base.u32) + this.width) >>
+ INTERLACING[this.interlace_pass][0])
pass_height = 0x00FF_FFFF &
- (((INTERLACING[this.interlace_pass][4] as base.u32) + this.height) >>
- INTERLACING[this.interlace_pass][3])
+ (((INTERLACING[this.interlace_pass][4] as base.u32) + this.height) >>
+ INTERLACING[this.interlace_pass][3])
} else {
pass_width = 0x00FF_FFFF & (this.frame_rect_x1 ~mod- this.frame_rect_x0)
pass_height = 0x00FF_FFFF & (this.frame_rect_y1 ~mod- this.frame_rect_y0)
@@ -1221,7 +1221,7 @@
if status.is_ok() {
break
} else if status.is_error() or
- ((status == base."$short read") and args.src.is_closed()) {
+ ((status == base."$short read") and args.src.is_closed()) {
// The input was invalid or truncated. Produce whatever
// pixels we can.
if this.workbuf_wi <= args.workbuf.length() {
@@ -1265,7 +1265,7 @@
this.workbuf_wi = 0
while true {
if (this.workbuf_wi > this.pass_workbuf_length) or (
- this.pass_workbuf_length > args.workbuf.length()) {
+ this.pass_workbuf_length > args.workbuf.length()) {
return base."#bad workbuf length"
}
io_bind (io: w, data: args.workbuf[this.workbuf_wi .. this.pass_workbuf_length], history_position: this.workbuf_hist_pos_base ~mod+ this.workbuf_wi) {
@@ -1273,7 +1273,7 @@
w_mark = w.mark()
r_mark = args.src.mark()
zlib_status =? this.zlib.transform_io?(
- dst: w, src: args.src, workbuf: this.util.empty_slice_u8())
+ dst: w, src: args.src, workbuf: this.util.empty_slice_u8())
if not this.ignore_checksum {
this.crc32.update_u32!(x: args.src.since(mark: r_mark))
}
@@ -1359,10 +1359,10 @@
pub func decoder.frame_dirty_rect() base.rect_ie_u32 {
return this.util.make_rect_ie_u32(
- min_incl_x: this.frame_rect_x0,
- min_incl_y: this.frame_rect_y0,
- max_excl_x: this.frame_rect_x1,
- max_excl_y: this.frame_rect_y1)
+ min_incl_x: this.frame_rect_x0,
+ min_incl_y: this.frame_rect_y0,
+ max_excl_x: this.frame_rect_x1,
+ max_excl_y: this.frame_rect_y1)
}
pub func decoder.num_animation_loops() base.u32 {
@@ -1381,7 +1381,7 @@
if this.call_sequence < 0x20 {
return base."#bad call sequence"
} else if (args.index >= (this.num_animation_frames_value as base.u64)) or
- ((args.index == 0) and (args.io_position <> this.first_config_io_position)) {
+ ((args.index == 0) and (args.io_position <> this.first_config_io_position)) {
return base."#bad argument"
}
this.call_sequence = 0x28
@@ -1445,11 +1445,11 @@
return base."#bad I/O position"
} else if args.minfo <> nullptr {
args.minfo.set!(
- flavor: this.metadata_flavor,
- w: this.metadata_fourcc,
- x: this.metadata_x,
- y: this.metadata_y,
- z: this.metadata_z)
+ flavor: this.metadata_flavor,
+ w: this.metadata_fourcc,
+ x: this.metadata_x,
+ y: this.metadata_y,
+ z: this.metadata_z)
}
if this.metadata_y >= this.metadata_z {
break.goto_done
@@ -1473,11 +1473,11 @@
while.loop true {
if args.minfo <> nullptr {
args.minfo.set!(
- flavor: this.metadata_flavor,
- w: this.metadata_fourcc,
- x: this.metadata_x,
- y: this.metadata_y,
- z: this.metadata_z)
+ flavor: this.metadata_flavor,
+ w: this.metadata_fourcc,
+ x: this.metadata_x,
+ y: this.metadata_y,
+ z: this.metadata_z)
}
if this.metadata_flavor <> base.MORE_INFORMATION__FLAVOR__METADATA_RAW_TRANSFORM {
@@ -1489,9 +1489,9 @@
io_limit (io: args.src, limit: this.chunk_length as base.u64) {
r_mark = args.src.mark()
zlib_status =? this.zlib.transform_io?(
- dst: args.dst, src: args.src, workbuf: this.util.empty_slice_u8())
+ dst: args.dst, src: args.src, workbuf: this.util.empty_slice_u8())
this.chunk_length ~sat-=
- (args.src.count_since(mark: r_mark) & 0xFFFF_FFFF) as base.u32
+ (args.src.count_since(mark: r_mark) & 0xFFFF_FFFF) as base.u32
}
if zlib_status.is_ok() {
@@ -1507,9 +1507,9 @@
io_limit (io: args.src, limit: this.chunk_length as base.u64) {
r_mark = args.src.mark()
zlib_status =? this.zlib.transform_io?(
- dst: args.dst, src: args.src, workbuf: this.util.empty_slice_u8())
+ dst: args.dst, src: args.src, workbuf: this.util.empty_slice_u8())
this.chunk_length ~sat-=
- (args.src.count_since(mark: r_mark) & 0xFFFF_FFFF) as base.u32
+ (args.src.count_since(mark: r_mark) & 0xFFFF_FFFF) as base.u32
}
if zlib_status.is_ok() {
@@ -1528,9 +1528,9 @@
w_mark = w.mark()
r_mark = args.src.mark()
zlib_status =? this.zlib.transform_io?(
- dst: w, src: args.src, workbuf: this.util.empty_slice_u8())
+ dst: w, src: args.src, workbuf: this.util.empty_slice_u8())
this.chunk_length ~sat-=
- (args.src.count_since(mark: r_mark) & 0xFFFF_FFFF) as base.u32
+ (args.src.count_since(mark: r_mark) & 0xFFFF_FFFF) as base.u32
num_written = w.count_since(mark: w_mark)
}
}
@@ -1718,6 +1718,6 @@
pub func decoder.workbuf_len() base.range_ii_u64 {
return this.util.make_range_ii_u64(
- min_incl: this.overall_workbuf_length,
- max_incl: this.overall_workbuf_length)
+ min_incl: this.overall_workbuf_length,
+ max_incl: this.overall_workbuf_length)
}
diff --git a/std/png/decode_swizzle_default.wuffs b/std/png/decode_swizzle_default.wuffs
index 9397ad9..c528817 100644
--- a/std/png/decode_swizzle_default.wuffs
+++ b/std/png/decode_swizzle_default.wuffs
@@ -13,7 +13,7 @@
// limitations under the License.
pri func decoder.filter_and_swizzle!(dst: ptr base.pixel_buffer, workbuf: slice base.u8) base.status,
- choosy,
+ choosy,
{
var dst_pixfmt : base.pixel_format
var dst_bits_per_pixel : base.u32[..= 256]
@@ -44,24 +44,24 @@
if dst_bytes_per_row1 < tab.width() {
tab = tab.subtable(
- min_incl_x: 0,
- min_incl_y: 0,
- max_incl_x: dst_bytes_per_row1,
- max_incl_y: tab.height())
+ min_incl_x: 0,
+ min_incl_y: 0,
+ max_incl_x: dst_bytes_per_row1,
+ max_incl_y: tab.height())
}
if dst_bytes_per_row0 < tab.width() {
tab = tab.subtable(
- min_incl_x: dst_bytes_per_row0,
- min_incl_y: 0,
- max_incl_x: tab.width(),
- max_incl_y: tab.height())
+ min_incl_x: dst_bytes_per_row0,
+ min_incl_y: 0,
+ max_incl_x: tab.width(),
+ max_incl_y: tab.height())
} else {
tab = tab.subtable(
- min_incl_x: 0,
- min_incl_y: 0,
- max_incl_x: 0,
- max_incl_y: 0)
+ min_incl_x: 0,
+ min_incl_y: 0,
+ max_incl_x: 0,
+ max_incl_y: 0)
}
y = this.frame_rect_y0
@@ -95,9 +95,9 @@
}
this.swizzler.swizzle_interleaved_from_slice!(
- dst: dst,
- dst_palette: dst_palette,
- src: curr_row)
+ dst: dst,
+ dst_palette: dst_palette,
+ src: curr_row)
prev_row = curr_row
y += 1
diff --git a/std/png/decode_swizzle_tricky.wuffs b/std/png/decode_swizzle_tricky.wuffs
index 7ca993b..9ec3249 100644
--- a/std/png/decode_swizzle_tricky.wuffs
+++ b/std/png/decode_swizzle_tricky.wuffs
@@ -52,7 +52,7 @@
src_bytes_per_pixel = 1
if this.depth >= 8 {
src_bytes_per_pixel = (NUM_CHANNELS[this.color_type] as base.u64) *
- ((this.depth >> 3) as base.u64)
+ ((this.depth >> 3) as base.u64)
}
if (this.chunk_type_array[0] == 'I') {
@@ -100,7 +100,7 @@
}
if this.depth == 8 {
while x < this.frame_rect_x1,
- inv y < 0x00FF_FFFF,
+ inv y < 0x00FF_FFFF,
{
assert x < 0x00FF_FFFF via "a < b: a < c; c <= b"(c: this.frame_rect_x1)
i = (x as base.u64) * dst_bytes_per_pixel
@@ -113,9 +113,9 @@
bits_unpacked[3] = s[1]
s = s[2 ..]
this.swizzler.swizzle_interleaved_from_slice!(
- dst: dst[i ..],
- dst_palette: dst_palette,
- src: bits_unpacked[.. 4])
+ dst: dst[i ..],
+ dst_palette: dst_palette,
+ src: bits_unpacked[.. 4])
}
} else if ((this.remap_transparency & 0xFFFF_FFFF) as base.u32) <> 0 {
@@ -127,19 +127,19 @@
bits_unpacked[3] = 0xFF
s = s[1 ..]
if ((this.remap_transparency & 0xFFFF_FFFF) as base.u32) == (
- ((bits_unpacked[0] as base.u32) << 0) |
- ((bits_unpacked[1] as base.u32) << 8) |
- ((bits_unpacked[2] as base.u32) << 16) |
- ((bits_unpacked[3] as base.u32) << 24)) {
+ ((bits_unpacked[0] as base.u32) << 0) |
+ ((bits_unpacked[1] as base.u32) << 8) |
+ ((bits_unpacked[2] as base.u32) << 16) |
+ ((bits_unpacked[3] as base.u32) << 24)) {
bits_unpacked[0] = 0
bits_unpacked[1] = 0
bits_unpacked[2] = 0
bits_unpacked[3] = 0
}
this.swizzler.swizzle_interleaved_from_slice!(
- dst: dst[i ..],
- dst_palette: dst_palette,
- src: bits_unpacked[.. 4])
+ dst: dst[i ..],
+ dst_palette: dst_palette,
+ src: bits_unpacked[.. 4])
}
} else {
if 3 <= s.length() {
@@ -149,27 +149,27 @@
bits_unpacked[3] = 0xFF
s = s[3 ..]
if ((this.remap_transparency & 0xFFFF_FFFF) as base.u32) == (
- ((bits_unpacked[0] as base.u32) << 0) |
- ((bits_unpacked[1] as base.u32) << 8) |
- ((bits_unpacked[2] as base.u32) << 16) |
- ((bits_unpacked[3] as base.u32) << 24)) {
+ ((bits_unpacked[0] as base.u32) << 0) |
+ ((bits_unpacked[1] as base.u32) << 8) |
+ ((bits_unpacked[2] as base.u32) << 16) |
+ ((bits_unpacked[3] as base.u32) << 24)) {
bits_unpacked[0] = 0
bits_unpacked[1] = 0
bits_unpacked[2] = 0
bits_unpacked[3] = 0
}
this.swizzler.swizzle_interleaved_from_slice!(
- dst: dst[i ..],
- dst_palette: dst_palette,
- src: bits_unpacked[.. 4])
+ dst: dst[i ..],
+ dst_palette: dst_palette,
+ src: bits_unpacked[.. 4])
}
}
} else if src_bytes_per_pixel <= s.length() {
this.swizzler.swizzle_interleaved_from_slice!(
- dst: dst[i ..],
- dst_palette: dst_palette,
- src: s[.. src_bytes_per_pixel])
+ dst: dst[i ..],
+ dst_palette: dst_palette,
+ src: s[.. src_bytes_per_pixel])
s = s[src_bytes_per_pixel ..]
}
}
@@ -185,8 +185,8 @@
packs_remaining = 0
while x < this.frame_rect_x1,
- inv y < 0x00FF_FFFF,
- inv this.depth < 8,
+ inv y < 0x00FF_FFFF,
+ inv this.depth < 8,
{
assert x < 0x00FF_FFFF via "a < b: a < c; c <= b"(c: this.frame_rect_x1)
i = (x as base.u64) * dst_bytes_per_pixel
@@ -205,25 +205,25 @@
bits_unpacked[2] = bits_unpacked[0]
bits_unpacked[3] = 0xFF
if ((this.remap_transparency & 0xFFFF_FFFF) as base.u32) == (
- ((bits_unpacked[0] as base.u32) << 0) |
- ((bits_unpacked[1] as base.u32) << 8) |
- ((bits_unpacked[2] as base.u32) << 16) |
- ((bits_unpacked[3] as base.u32) << 24)) {
+ ((bits_unpacked[0] as base.u32) << 0) |
+ ((bits_unpacked[1] as base.u32) << 8) |
+ ((bits_unpacked[2] as base.u32) << 16) |
+ ((bits_unpacked[3] as base.u32) << 24)) {
bits_unpacked[0] = 0
bits_unpacked[1] = 0
bits_unpacked[2] = 0
bits_unpacked[3] = 0
}
this.swizzler.swizzle_interleaved_from_slice!(
- dst: dst[i ..],
- dst_palette: dst_palette,
- src: bits_unpacked[.. 4])
+ dst: dst[i ..],
+ dst_palette: dst_palette,
+ src: bits_unpacked[.. 4])
} else {
this.swizzler.swizzle_interleaved_from_slice!(
- dst: dst[i ..],
- dst_palette: dst_palette,
- src: bits_unpacked[.. 1])
+ dst: dst[i ..],
+ dst_palette: dst_palette,
+ src: bits_unpacked[.. 1])
}
}
x += (1 as base.u32) << INTERLACING[this.interlace_pass][0]
@@ -231,7 +231,7 @@
} else {
while x < this.frame_rect_x1,
- inv y < 0x00FF_FFFF,
+ inv y < 0x00FF_FFFF,
{
assert x < 0x00FF_FFFF via "a < b: a < c; c <= b"(c: this.frame_rect_x1)
i = (x as base.u64) * dst_bytes_per_pixel
@@ -248,14 +248,14 @@
bits_unpacked[7] = 0xFF
s = s[2 ..]
if this.remap_transparency == (
- ((bits_unpacked[0] as base.u64) << 0) |
- ((bits_unpacked[1] as base.u64) << 8) |
- ((bits_unpacked[2] as base.u64) << 16) |
- ((bits_unpacked[3] as base.u64) << 24) |
- ((bits_unpacked[4] as base.u64) << 32) |
- ((bits_unpacked[5] as base.u64) << 40) |
- ((bits_unpacked[6] as base.u64) << 48) |
- ((bits_unpacked[7] as base.u64) << 56)) {
+ ((bits_unpacked[0] as base.u64) << 0) |
+ ((bits_unpacked[1] as base.u64) << 8) |
+ ((bits_unpacked[2] as base.u64) << 16) |
+ ((bits_unpacked[3] as base.u64) << 24) |
+ ((bits_unpacked[4] as base.u64) << 32) |
+ ((bits_unpacked[5] as base.u64) << 40) |
+ ((bits_unpacked[6] as base.u64) << 48) |
+ ((bits_unpacked[7] as base.u64) << 56)) {
bits_unpacked[0] = 0
bits_unpacked[1] = 0
bits_unpacked[2] = 0
@@ -279,14 +279,14 @@
bits_unpacked[7] = 0xFF
s = s[6 ..]
if this.remap_transparency == (
- ((bits_unpacked[0] as base.u64) << 0) |
- ((bits_unpacked[1] as base.u64) << 8) |
- ((bits_unpacked[2] as base.u64) << 16) |
- ((bits_unpacked[3] as base.u64) << 24) |
- ((bits_unpacked[4] as base.u64) << 32) |
- ((bits_unpacked[5] as base.u64) << 40) |
- ((bits_unpacked[6] as base.u64) << 48) |
- ((bits_unpacked[7] as base.u64) << 56)) {
+ ((bits_unpacked[0] as base.u64) << 0) |
+ ((bits_unpacked[1] as base.u64) << 8) |
+ ((bits_unpacked[2] as base.u64) << 16) |
+ ((bits_unpacked[3] as base.u64) << 24) |
+ ((bits_unpacked[4] as base.u64) << 32) |
+ ((bits_unpacked[5] as base.u64) << 40) |
+ ((bits_unpacked[6] as base.u64) << 48) |
+ ((bits_unpacked[7] as base.u64) << 56)) {
bits_unpacked[0] = 0
bits_unpacked[1] = 0
bits_unpacked[2] = 0
@@ -326,9 +326,9 @@
}
this.swizzler.swizzle_interleaved_from_slice!(
- dst: dst[i ..],
- dst_palette: dst_palette,
- src: bits_unpacked[.. 8])
+ dst: dst[i ..],
+ dst_palette: dst_palette,
+ src: bits_unpacked[.. 8])
}
x += (1 as base.u32) << INTERLACING[this.interlace_pass][0]
} endwhile
diff --git a/std/tga/decode_tga.wuffs b/std/tga/decode_tga.wuffs
index f1d7d09..535729d 100644
--- a/std/tga/decode_tga.wuffs
+++ b/std/tga/decode_tga.wuffs
@@ -20,36 +20,36 @@
pub const DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE : base.u64 = 0
pub struct decoder? implements base.image_decoder(
- width : base.u32[..= 0xFFFF],
- height : base.u32[..= 0xFFFF],
+ width : base.u32[..= 0xFFFF],
+ height : base.u32[..= 0xFFFF],
- // The call sequence state machine is discussed in
- // (/doc/std/image-decoders-call-sequence.md).
- call_sequence : base.u8,
+ // The call sequence state machine is discussed in
+ // (/doc/std/image-decoders-call-sequence.md).
+ call_sequence : base.u8,
- header_id_length : base.u8,
- header_color_map_type : base.u8,
- header_image_type : base.u8,
- header_color_map_first_entry_index : base.u16,
- header_color_map_length : base.u16,
- header_color_map_entry_size : base.u8,
- header_pixel_depth : base.u8,
- header_image_descriptor : base.u8,
+ header_id_length : base.u8,
+ header_color_map_type : base.u8,
+ header_image_type : base.u8,
+ header_color_map_first_entry_index : base.u16,
+ header_color_map_length : base.u16,
+ header_color_map_entry_size : base.u8,
+ header_pixel_depth : base.u8,
+ header_image_descriptor : base.u8,
- opaque : base.bool,
+ opaque : base.bool,
- scratch_bytes_per_pixel : base.u32[..= 4],
- src_bytes_per_pixel : base.u32[..= 4],
- src_pixfmt : base.u32,
+ scratch_bytes_per_pixel : base.u32[..= 4],
+ src_bytes_per_pixel : base.u32[..= 4],
+ src_pixfmt : base.u32,
- frame_config_io_position : base.u64,
+ frame_config_io_position : base.u64,
- swizzler : base.pixel_swizzler,
- util : base.utility,
+ swizzler : base.pixel_swizzler,
+ util : base.utility,
)(
- dst_palette : array[4 * 256] base.u8,
- src_palette : array[4 * 256] base.u8,
- scratch : array[4] base.u8,
+ dst_palette : array[4 * 256] base.u8,
+ src_palette : array[4 * 256] base.u8,
+ scratch : array[4] base.u8,
)
pub func decoder.set_quirk_enabled!(quirk: base.u32, enabled: base.bool) {
@@ -84,11 +84,11 @@
this.header_image_type = args.src.read_u8?()
if (this.header_image_type == 0x01) or
- (this.header_image_type == 0x02) or
- (this.header_image_type == 0x03) or
- (this.header_image_type == 0x09) or
- (this.header_image_type == 0x0A) or
- (this.header_image_type == 0x0B) {
+ (this.header_image_type == 0x02) or
+ (this.header_image_type == 0x03) or
+ (this.header_image_type == 0x09) or
+ (this.header_image_type == 0x0A) or
+ (this.header_image_type == 0x0B) {
// No-op.
} else {
// TODO: 0x20 and 0x21 are invalid, according to the spec, but are
@@ -102,19 +102,19 @@
if this.header_color_map_type <> 0 {
// We have a color-mapped image (in Wuffs, an indexed pixel format).
if (this.header_color_map_first_entry_index <> 0) or
- (this.header_color_map_length > 0x100) {
+ (this.header_color_map_length > 0x100) {
return "#unsupported TGA file"
} else if (this.header_color_map_entry_size <> 0x0F) and
- (this.header_color_map_entry_size <> 0x10) and
- (this.header_color_map_entry_size <> 0x18) and
- (this.header_color_map_entry_size <> 0x20) {
+ (this.header_color_map_entry_size <> 0x10) and
+ (this.header_color_map_entry_size <> 0x18) and
+ (this.header_color_map_entry_size <> 0x20) {
return "#bad header"
}
} else {
// The color-map fields must be zero.
if (this.header_color_map_first_entry_index <> 0) or
- (this.header_color_map_length <> 0) or
- (this.header_color_map_entry_size <> 0) {
+ (this.header_color_map_length <> 0) or
+ (this.header_color_map_entry_size <> 0) {
return "#bad header"
}
}
@@ -127,11 +127,11 @@
this.header_pixel_depth = args.src.read_u8?()
if (this.header_pixel_depth <> 0x01) and
- (this.header_pixel_depth <> 0x08) and
- (this.header_pixel_depth <> 0x0F) and
- (this.header_pixel_depth <> 0x10) and
- (this.header_pixel_depth <> 0x18) and
- (this.header_pixel_depth <> 0x20) {
+ (this.header_pixel_depth <> 0x08) and
+ (this.header_pixel_depth <> 0x0F) and
+ (this.header_pixel_depth <> 0x10) and
+ (this.header_pixel_depth <> 0x18) and
+ (this.header_pixel_depth <> 0x20) {
return "#bad header"
}
@@ -140,12 +140,12 @@
this.src_bytes_per_pixel = 1
this.src_pixfmt = base.PIXEL_FORMAT__INDEXED__BGRA_NONPREMUL
this.opaque =
- (this.header_color_map_entry_size == 0x0F) or
- (this.header_color_map_entry_size == 0x18)
+ (this.header_color_map_entry_size == 0x0F) or
+ (this.header_color_map_entry_size == 0x18)
} else if (this.header_image_type | 8) == 0x0A {
if (this.header_pixel_depth == 0x0F) or
- (this.header_pixel_depth == 0x10) {
+ (this.header_pixel_depth == 0x10) {
// Wuffs' base.pixel_swizzler doesn't support BGRX5551, so
// scratch_bytes_per_pixel and src_bytes_per_pixel are different.
this.scratch_bytes_per_pixel = 4
@@ -227,12 +227,12 @@
if args.dst <> nullptr {
args.dst.set!(
- pixfmt: this.src_pixfmt,
- pixsub: 0,
- width: this.width,
- height: this.height,
- first_frame_io_position: this.frame_config_io_position,
- first_frame_is_opaque: this.opaque)
+ pixfmt: this.src_pixfmt,
+ pixsub: 0,
+ width: this.width,
+ height: this.height,
+ first_frame_io_position: this.frame_config_io_position,
+ first_frame_is_opaque: this.opaque)
}
this.call_sequence = 0x20
@@ -268,17 +268,17 @@
if args.dst <> nullptr {
args.dst.set!(bounds: this.util.make_rect_ie_u32(
- min_incl_x: 0,
- min_incl_y: 0,
- max_excl_x: this.width,
- max_excl_y: this.height),
- duration: 0,
- index: 0,
- io_position: this.frame_config_io_position,
- disposal: 0,
- opaque_within_bounds: this.opaque,
- overwrite_instead_of_blend: false,
- background_color: 0xFF00_0000)
+ min_incl_x: 0,
+ min_incl_y: 0,
+ max_excl_x: this.width,
+ max_excl_y: this.height),
+ duration: 0,
+ index: 0,
+ io_position: this.frame_config_io_position,
+ disposal: 0,
+ opaque_within_bounds: this.opaque,
+ overwrite_instead_of_blend: false,
+ background_color: 0xFF00_0000)
}
this.call_sequence = 0x40
@@ -330,11 +330,11 @@
src_palette = this.src_palette[..]
}
status = this.swizzler.prepare!(
- dst_pixfmt: args.dst.pixel_format(),
- dst_palette: args.dst.palette_or_else(fallback: this.dst_palette[..]),
- src_pixfmt: this.util.make_pixel_format(repr: this.src_pixfmt),
- src_palette: src_palette,
- blend: args.blend)
+ dst_pixfmt: args.dst.pixel_format(),
+ dst_palette: args.dst.palette_or_else(fallback: this.dst_palette[..]),
+ src_pixfmt: this.util.make_pixel_format(repr: this.src_pixfmt),
+ src_palette: src_palette,
+ blend: args.blend)
if not status.is_ok() {
return status
}
@@ -382,9 +382,9 @@
num_src_bytes = num_pixels32 * this.src_bytes_per_pixel
args.src.skip_u32?(n: num_src_bytes)
this.swizzler.swizzle_interleaved_from_slice!(
- dst: dst,
- dst_palette: dst_palette,
- src: args.src.since(mark: mark))
+ dst: dst,
+ dst_palette: dst_palette,
+ src: args.src.since(mark: mark))
if num_dst_bytes <= dst.length() {
dst = dst[num_dst_bytes ..]
} else {
@@ -400,9 +400,9 @@
} else if run_length > 0 {
run_length -= 1
this.swizzler.swizzle_interleaved_from_slice!(
- dst: dst,
- dst_palette: dst_palette,
- src: this.scratch[.. this.scratch_bytes_per_pixel])
+ dst: dst,
+ dst_palette: dst_palette,
+ src: this.scratch[.. this.scratch_bytes_per_pixel])
if dst_bytes_per_pixel <= dst.length() {
dst = dst[dst_bytes_per_pixel ..]
}
@@ -487,9 +487,9 @@
// TODO: can the alpha value be zero (BGRA5551 not BGRX5551)?
this.scratch[3] = 0xFF
this.swizzler.swizzle_interleaved_from_slice!(
- dst: dst,
- dst_palette: dst_palette,
- src: this.scratch[.. 4])
+ dst: dst,
+ dst_palette: dst_palette,
+ src: this.scratch[.. 4])
if dst_bytes_per_pixel <= dst.length() {
dst = dst[dst_bytes_per_pixel ..]
}
@@ -499,9 +499,9 @@
} else if run_length > 0 {
run_length -= 1
this.swizzler.swizzle_interleaved_from_slice!(
- dst: dst,
- dst_palette: dst_palette,
- src: this.scratch[.. this.scratch_bytes_per_pixel])
+ dst: dst,
+ dst_palette: dst_palette,
+ src: this.scratch[.. this.scratch_bytes_per_pixel])
if dst_bytes_per_pixel <= dst.length() {
dst = dst[dst_bytes_per_pixel ..]
}
@@ -566,10 +566,10 @@
pub func decoder.frame_dirty_rect() base.rect_ie_u32 {
return this.util.make_rect_ie_u32(
- min_incl_x: 0,
- min_incl_y: 0,
- max_excl_x: this.width,
- max_excl_y: this.height)
+ min_incl_x: 0,
+ min_incl_y: 0,
+ max_excl_x: this.width,
+ max_excl_y: this.height)
}
pub func decoder.num_animation_loops() base.u32 {
diff --git a/std/wbmp/decode_wbmp.wuffs b/std/wbmp/decode_wbmp.wuffs
index 5d128dd..0f8ceef 100644
--- a/std/wbmp/decode_wbmp.wuffs
+++ b/std/wbmp/decode_wbmp.wuffs
@@ -18,17 +18,17 @@
pub const DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE : base.u64 = 0
pub struct decoder? implements base.image_decoder(
- width : base.u32,
- height : base.u32,
+ width : base.u32,
+ height : base.u32,
- // The call sequence state machine is discussed in
- // (/doc/std/image-decoders-call-sequence.md).
- call_sequence : base.u8,
+ // The call sequence state machine is discussed in
+ // (/doc/std/image-decoders-call-sequence.md).
+ call_sequence : base.u8,
- frame_config_io_position : base.u64,
+ frame_config_io_position : base.u64,
- swizzler : base.pixel_swizzler,
- util : base.utility,
+ swizzler : base.pixel_swizzler,
+ util : base.utility,
)
pub func decoder.set_quirk_enabled!(quirk: base.u32, enabled: base.bool) {
@@ -72,7 +72,7 @@
x32 = 0
while true,
- inv i < 2,
+ inv i < 2,
{
c = args.src.read_u8?()
x32 |= (c & 0x7F) as base.u32
@@ -98,12 +98,12 @@
if args.dst <> nullptr {
args.dst.set!(
- pixfmt: base.PIXEL_FORMAT__INDEXED__BGRA_BINARY,
- pixsub: 0,
- width: this.width,
- height: this.height,
- first_frame_io_position: this.frame_config_io_position,
- first_frame_is_opaque: true)
+ pixfmt: base.PIXEL_FORMAT__INDEXED__BGRA_BINARY,
+ pixsub: 0,
+ width: this.width,
+ height: this.height,
+ first_frame_io_position: this.frame_config_io_position,
+ first_frame_is_opaque: true)
}
this.call_sequence = 0x20
@@ -139,17 +139,17 @@
if args.dst <> nullptr {
args.dst.set!(bounds: this.util.make_rect_ie_u32(
- min_incl_x: 0,
- min_incl_y: 0,
- max_excl_x: this.width,
- max_excl_y: this.height),
- duration: 0,
- index: 0,
- io_position: this.frame_config_io_position,
- disposal: 0,
- opaque_within_bounds: true,
- overwrite_instead_of_blend: false,
- background_color: 0xFF00_0000)
+ min_incl_x: 0,
+ min_incl_y: 0,
+ max_excl_x: this.width,
+ max_excl_y: this.height),
+ duration: 0,
+ index: 0,
+ io_position: this.frame_config_io_position,
+ disposal: 0,
+ opaque_within_bounds: true,
+ overwrite_instead_of_blend: false,
+ background_color: 0xFF00_0000)
}
this.call_sequence = 0x40
@@ -189,11 +189,11 @@
}
status = this.swizzler.prepare!(
- dst_pixfmt: args.dst.pixel_format(),
- dst_palette: args.dst.palette(),
- src_pixfmt: this.util.make_pixel_format(repr: base.PIXEL_FORMAT__Y),
- src_palette: this.util.empty_slice_u8(),
- blend: args.blend)
+ dst_pixfmt: args.dst.pixel_format(),
+ dst_palette: args.dst.palette(),
+ src_pixfmt: this.util.make_pixel_format(repr: base.PIXEL_FORMAT__Y),
+ src_palette: this.util.empty_slice_u8(),
+ blend: args.blend)
if not status.is_ok() {
return status
}
@@ -216,15 +216,15 @@
dst_x = 0
while dst_x < this.width,
- inv dst_y < 0xFFFF_FFFF,
+ inv dst_y < 0xFFFF_FFFF,
{
assert dst_x < 0xFFFF_FFFF via "a < b: a < c; c <= b"(c: this.width)
if (dst_x & 7) == 0 {
while args.src.length() <= 0,
- inv dst_x < 0xFFFF_FFFF,
- inv dst_y < 0xFFFF_FFFF,
- post args.src.length() > 0,
+ inv dst_x < 0xFFFF_FFFF,
+ inv dst_y < 0xFFFF_FFFF,
+ post args.src.length() > 0,
{
yield? base."$short read"
tab = args.dst.plane(p: 0)
@@ -250,7 +250,7 @@
c = (((c as base.u32) << 1) & 0xFF) as base.u8
this.swizzler.swizzle_interleaved_from_slice!(
- dst: dst, dst_palette: this.util.empty_slice_u8(), src: src[..])
+ dst: dst, dst_palette: this.util.empty_slice_u8(), src: src[..])
if dst_bytes_per_pixel <= dst.length() {
dst = dst[dst_bytes_per_pixel ..]
@@ -267,10 +267,10 @@
pub func decoder.frame_dirty_rect() base.rect_ie_u32 {
return this.util.make_rect_ie_u32(
- min_incl_x: 0,
- min_incl_y: 0,
- max_excl_x: this.width,
- max_excl_y: this.height)
+ min_incl_x: 0,
+ min_incl_y: 0,
+ max_excl_x: this.width,
+ max_excl_y: this.height)
}
pub func decoder.num_animation_loops() base.u32 {
diff --git a/std/zlib/decode_zlib.wuffs b/std/zlib/decode_zlib.wuffs
index cf06113..707ec79 100644
--- a/std/zlib/decode_zlib.wuffs
+++ b/std/zlib/decode_zlib.wuffs
@@ -28,24 +28,24 @@
pub const DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE : base.u64 = 1
pub struct decoder? implements base.io_transformer(
- bad_call_sequence : base.bool,
- header_complete : base.bool,
+ bad_call_sequence : base.bool,
+ header_complete : base.bool,
- got_dictionary : base.bool,
- want_dictionary : base.bool,
+ got_dictionary : base.bool,
+ want_dictionary : base.bool,
- quirks : array[QUIRKS_COUNT] base.bool,
+ quirks : array[QUIRKS_COUNT] base.bool,
- ignore_checksum : base.bool,
- checksum : adler32.hasher,
+ ignore_checksum : base.bool,
+ checksum : adler32.hasher,
- dict_id_hasher : adler32.hasher,
- dict_id_got : base.u32,
- dict_id_want : base.u32,
+ dict_id_hasher : adler32.hasher,
+ dict_id_got : base.u32,
+ dict_id_want : base.u32,
- flate : deflate.decoder,
+ flate : deflate.decoder,
- util : base.utility,
+ util : base.utility,
)
pub func decoder.dictionary_id() base.u32 {
@@ -77,8 +77,8 @@
pub func decoder.workbuf_len() base.range_ii_u64 {
return this.util.make_range_ii_u64(
- min_incl: DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE,
- max_incl: DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE)
+ min_incl: DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE,
+ max_incl: DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE)
}
pub func decoder.transform_io?(dst: base.io_writer, src: base.io_reader, workbuf: slice base.u8) {