blob: 20e0a11b8503a7b4fdf3cd658683b0f894958826 [file] [log] [blame]
// Copyright 2023 The Wuffs Authors.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// https://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
//
// SPDX-License-Identifier: Apache-2.0 OR MIT
pub struct ecma_hasher? implements base.hasher_u64(
state : base.u64,
)
pub func ecma_hasher.get_quirk(key: base.u32) base.u64 {
return 0
}
pub func ecma_hasher.set_quirk!(key: base.u32, value: base.u64) base.status {
return base."#unsupported option"
}
pub func ecma_hasher.update!(x: roslice base.u8) {
if this.state == 0 {
choose up = [
up_x86_sse42]
}
this.up!(x: args.x)
}
pub func ecma_hasher.update_u64!(x: roslice base.u8) base.u64 {
this.update!(x: args.x)
return this.checksum_u64()
}
pri func ecma_hasher.up!(x: roslice base.u8),
choosy,
{
var s : base.u64
var p : roslice base.u8
s = 0xFFFF_FFFF_FFFF_FFFF ^ this.state
// Use the same slicing-by-M algorithm as for std/crc32, with M = 8.
iterate (p = args.x)(length: 8, advance: 8, unroll: 1) {
s ^= ((p[0x00] as base.u64) << 0) |
((p[0x01] as base.u64) << 8) |
((p[0x02] as base.u64) << 16) |
((p[0x03] as base.u64) << 24) |
((p[0x04] as base.u64) << 32) |
((p[0x05] as base.u64) << 40) |
((p[0x06] as base.u64) << 48) |
((p[0x07] as base.u64) << 56)
s = ECMA_TABLE[0x00][0xFF & (s >> 56)] ^
ECMA_TABLE[0x01][0xFF & (s >> 48)] ^
ECMA_TABLE[0x02][0xFF & (s >> 40)] ^
ECMA_TABLE[0x03][0xFF & (s >> 32)] ^
ECMA_TABLE[0x04][0xFF & (s >> 24)] ^
ECMA_TABLE[0x05][0xFF & (s >> 16)] ^
ECMA_TABLE[0x06][0xFF & (s >> 8)] ^
ECMA_TABLE[0x07][0xFF & (s >> 0)]
} else (length: 1, advance: 1, unroll: 1) {
s = ECMA_TABLE[0][((s & 0xFF) as base.u8) ^ p[0]] ^ (s >> 8)
}
this.state = 0xFFFF_FFFF_FFFF_FFFF ^ s
}
pub func ecma_hasher.checksum_u64() base.u64 {
return this.state
}
// The table below was created by script/print-crc64-magic-numbers.go.
pri const ECMA_TABLE : roarray[8] roarray[256] base.u64 = [[
0x0000_0000_0000_0000, 0xB32E_4CBE_03A7_5F6F, 0xF484_3657_A840_A05B, 0x47AA_7AE9_ABE7_FF34,
0x7BD0_C384_FF8F_5E33, 0xC8FE_8F3A_FC28_015C, 0x8F54_F5D3_57CF_FE68, 0x3C7A_B96D_5468_A107,
0xF7A1_8709_FF1E_BC66, 0x448F_CBB7_FCB9_E309, 0x0325_B15E_575E_1C3D, 0xB00B_FDE0_54F9_4352,
0x8C71_448D_0091_E255, 0x3F5F_0833_0336_BD3A, 0x78F5_72DA_A8D1_420E, 0xCBDB_3E64_AB76_1D61,
0x7D9B_A138_5133_6649, 0xCEB5_ED86_5294_3926, 0x891F_976F_F973_C612, 0x3A31_DBD1_FAD4_997D,
0x064B_62BC_AEBC_387A, 0xB565_2E02_AD1B_6715, 0xF2CF_54EB_06FC_9821, 0x41E1_1855_055B_C74E,
0x8A3A_2631_AE2D_DA2F, 0x3914_6A8F_AD8A_8540, 0x7EBE_1066_066D_7A74, 0xCD90_5CD8_05CA_251B,
0xF1EA_E5B5_51A2_841C, 0x42C4_A90B_5205_DB73, 0x056E_D3E2_F9E2_2447, 0xB640_9F5C_FA45_7B28,
0xFB37_4270_A266_CC92, 0x4819_0ECE_A1C1_93FD, 0x0FB3_7427_0A26_6CC9, 0xBC9D_3899_0981_33A6,
0x80E7_81F4_5DE9_92A1, 0x33C9_CD4A_5E4E_CDCE, 0x7463_B7A3_F5A9_32FA, 0xC74D_FB1D_F60E_6D95,
0x0C96_C579_5D78_70F4, 0xBFB8_89C7_5EDF_2F9B, 0xF812_F32E_F538_D0AF, 0x4B3C_BF90_F69F_8FC0,
0x7746_06FD_A2F7_2EC7, 0xC468_4A43_A150_71A8, 0x83C2_30AA_0AB7_8E9C, 0x30EC_7C14_0910_D1F3,
0x86AC_E348_F355_AADB, 0x3582_AFF6_F0F2_F5B4, 0x7228_D51F_5B15_0A80, 0xC106_99A1_58B2_55EF,
0xFD7C_20CC_0CDA_F4E8, 0x4E52_6C72_0F7D_AB87, 0x09F8_169B_A49A_54B3, 0xBAD6_5A25_A73D_0BDC,
0x710D_6441_0C4B_16BD, 0xC223_28FF_0FEC_49D2, 0x8589_5216_A40B_B6E6, 0x36A7_1EA8_A7AC_E989,
0x0ADD_A7C5_F3C4_488E, 0xB9F3_EB7B_F063_17E1, 0xFE59_9192_5B84_E8D5, 0x4D77_DD2C_5823_B7BA,
0x64B6_2BCA_EBC3_87A1, 0xD798_6774_E864_D8CE, 0x9032_1D9D_4383_27FA, 0x231C_5123_4024_7895,
0x1F66_E84E_144C_D992, 0xAC48_A4F0_17EB_86FD, 0xEBE2_DE19_BC0C_79C9, 0x58CC_92A7_BFAB_26A6,
0x9317_ACC3_14DD_3BC7, 0x2039_E07D_177A_64A8, 0x6793_9A94_BC9D_9B9C, 0xD4BD_D62A_BF3A_C4F3,
0xE8C7_6F47_EB52_65F4, 0x5BE9_23F9_E8F5_3A9B, 0x1C43_5910_4312_C5AF, 0xAF6D_15AE_40B5_9AC0,
0x192D_8AF2_BAF0_E1E8, 0xAA03_C64C_B957_BE87, 0xEDA9_BCA5_12B0_41B3, 0x5E87_F01B_1117_1EDC,
0x62FD_4976_457F_BFDB, 0xD1D3_05C8_46D8_E0B4, 0x9679_7F21_ED3F_1F80, 0x2557_339F_EE98_40EF,
0xEE8C_0DFB_45EE_5D8E, 0x5DA2_4145_4649_02E1, 0x1A08_3BAC_EDAE_FDD5, 0xA926_7712_EE09_A2BA,
0x955C_CE7F_BA61_03BD, 0x2672_82C1_B9C6_5CD2, 0x61D8_F828_1221_A3E6, 0xD2F6_B496_1186_FC89,
0x9F81_69BA_49A5_4B33, 0x2CAF_2504_4A02_145C, 0x6B05_5FED_E1E5_EB68, 0xD82B_1353_E242_B407,
0xE451_AA3E_B62A_1500, 0x577F_E680_B58D_4A6F, 0x10D5_9C69_1E6A_B55B, 0xA3FB_D0D7_1DCD_EA34,
0x6820_EEB3_B6BB_F755, 0xDB0E_A20D_B51C_A83A, 0x9CA4_D8E4_1EFB_570E, 0x2F8A_945A_1D5C_0861,
0x13F0_2D37_4934_A966, 0xA0DE_6189_4A93_F609, 0xE774_1B60_E174_093D, 0x545A_57DE_E2D3_5652,
0xE21A_C882_1896_2D7A, 0x5134_843C_1B31_7215, 0x169E_FED5_B0D6_8D21, 0xA5B0_B26B_B371_D24E,
0x99CA_0B06_E719_7349, 0x2AE4_47B8_E4BE_2C26, 0x6D4E_3D51_4F59_D312, 0xDE60_71EF_4CFE_8C7D,
0x15BB_4F8B_E788_911C, 0xA695_0335_E42F_CE73, 0xE13F_79DC_4FC8_3147, 0x5211_3562_4C6F_6E28,
0x6E6B_8C0F_1807_CF2F, 0xDD45_C0B1_1BA0_9040, 0x9AEF_BA58_B047_6F74, 0x29C1_F6E6_B3E0_301B,
0xC96C_5795_D787_0F42, 0x7A42_1B2B_D420_502D, 0x3DE8_61C2_7FC7_AF19, 0x8EC6_2D7C_7C60_F076,
0xB2BC_9411_2808_5171, 0x0192_D8AF_2BAF_0E1E, 0x4638_A246_8048_F12A, 0xF516_EEF8_83EF_AE45,
0x3ECD_D09C_2899_B324, 0x8DE3_9C22_2B3E_EC4B, 0xCA49_E6CB_80D9_137F, 0x7967_AA75_837E_4C10,
0x451D_1318_D716_ED17, 0xF633_5FA6_D4B1_B278, 0xB199_254F_7F56_4D4C, 0x02B7_69F1_7CF1_1223,
0xB4F7_F6AD_86B4_690B, 0x07D9_BA13_8513_3664, 0x4073_C0FA_2EF4_C950, 0xF35D_8C44_2D53_963F,
0xCF27_3529_793B_3738, 0x7C09_7997_7A9C_6857, 0x3BA3_037E_D17B_9763, 0x888D_4FC0_D2DC_C80C,
0x4356_71A4_79AA_D56D, 0xF078_3D1A_7A0D_8A02, 0xB7D2_47F3_D1EA_7536, 0x04FC_0B4D_D24D_2A59,
0x3886_B220_8625_8B5E, 0x8BA8_FE9E_8582_D431, 0xCC02_8477_2E65_2B05, 0x7F2C_C8C9_2DC2_746A,
0x325B_15E5_75E1_C3D0, 0x8175_595B_7646_9CBF, 0xC6DF_23B2_DDA1_638B, 0x75F1_6F0C_DE06_3CE4,
0x498B_D661_8A6E_9DE3, 0xFAA5_9ADF_89C9_C28C, 0xBD0F_E036_222E_3DB8, 0x0E21_AC88_2189_62D7,
0xC5FA_92EC_8AFF_7FB6, 0x76D4_DE52_8958_20D9, 0x317E_A4BB_22BF_DFED, 0x8250_E805_2118_8082,
0xBE2A_5168_7570_2185, 0x0D04_1DD6_76D7_7EEA, 0x4AAE_673F_DD30_81DE, 0xF980_2B81_DE97_DEB1,
0x4FC0_B4DD_24D2_A599, 0xFCEE_F863_2775_FAF6, 0xBB44_828A_8C92_05C2, 0x086A_CE34_8F35_5AAD,
0x3410_7759_DB5D_FBAA, 0x873E_3BE7_D8FA_A4C5, 0xC094_410E_731D_5BF1, 0x73BA_0DB0_70BA_049E,
0xB861_33D4_DBCC_19FF, 0x0B4F_7F6A_D86B_4690, 0x4CE5_0583_738C_B9A4, 0xFFCB_493D_702B_E6CB,
0xC3B1_F050_2443_47CC, 0x709F_BCEE_27E4_18A3, 0x3735_C607_8C03_E797, 0x841B_8AB9_8FA4_B8F8,
0xADDA_7C5F_3C44_88E3, 0x1EF4_30E1_3FE3_D78C, 0x595E_4A08_9404_28B8, 0xEA70_06B6_97A3_77D7,
0xD60A_BFDB_C3CB_D6D0, 0x6524_F365_C06C_89BF, 0x228E_898C_6B8B_768B, 0x91A0_C532_682C_29E4,
0x5A7B_FB56_C35A_3485, 0xE955_B7E8_C0FD_6BEA, 0xAEFF_CD01_6B1A_94DE, 0x1DD1_81BF_68BD_CBB1,
0x21AB_38D2_3CD5_6AB6, 0x9285_746C_3F72_35D9, 0xD52F_0E85_9495_CAED, 0x6601_423B_9732_9582,
0xD041_DD67_6D77_EEAA, 0x636F_91D9_6ED0_B1C5, 0x24C5_EB30_C537_4EF1, 0x97EB_A78E_C690_119E,
0xAB91_1EE3_92F8_B099, 0x18BF_525D_915F_EFF6, 0x5F15_28B4_3AB8_10C2, 0xEC3B_640A_391F_4FAD,
0x27E0_5A6E_9269_52CC, 0x94CE_16D0_91CE_0DA3, 0xD364_6C39_3A29_F297, 0x604A_2087_398E_ADF8,
0x5C30_99EA_6DE6_0CFF, 0xEF1E_D554_6E41_5390, 0xA8B4_AFBD_C5A6_ACA4, 0x1B9A_E303_C601_F3CB,
0x56ED_3E2F_9E22_4471, 0xE5C3_7291_9D85_1B1E, 0xA269_0878_3662_E42A, 0x1147_44C6_35C5_BB45,
0x2D3D_FDAB_61AD_1A42, 0x9E13_B115_620A_452D, 0xD9B9_CBFC_C9ED_BA19, 0x6A97_8742_CA4A_E576,
0xA14C_B926_613C_F817, 0x1262_F598_629B_A778, 0x55C8_8F71_C97C_584C, 0xE6E6_C3CF_CADB_0723,
0xDA9C_7AA2_9EB3_A624, 0x69B2_361C_9D14_F94B, 0x2E18_4CF5_36F3_067F, 0x9D36_004B_3554_5910,
0x2B76_9F17_CF11_2238, 0x9858_D3A9_CCB6_7D57, 0xDFF2_A940_6751_8263, 0x6CDC_E5FE_64F6_DD0C,
0x50A6_5C93_309E_7C0B, 0xE388_102D_3339_2364, 0xA422_6AC4_98DE_DC50, 0x170C_267A_9B79_833F,
0xDCD7_181E_300F_9E5E, 0x6FF9_54A0_33A8_C131, 0x2853_2E49_984F_3E05, 0x9B7D_62F7_9BE8_616A,
0xA707_DB9A_CF80_C06D, 0x1429_9724_CC27_9F02, 0x5383_EDCD_67C0_6036, 0xE0AD_A173_6467_3F59,
],[
0x0000_0000_0000_0000, 0x54E9_7992_5CD0_F10D, 0xA9D2_F324_B9A1_E21A, 0xFD3B_8AB6_E571_1317,
0xC17D_4962_DC4D_DAB1, 0x9594_30F0_809D_2BBC, 0x68AF_BA46_65EC_38AB, 0x3C46_C3D4_393C_C9A6,
0x1022_3DEE_1795_ABE7, 0x44CB_447C_4B45_5AEA, 0xB9F0_CECA_AE34_49FD, 0xED19_B758_F2E4_B8F0,
0xD15F_748C_CBD8_7156, 0x85B6_0D1E_9708_805B, 0x788D_87A8_7279_934C, 0x2C64_FE3A_2EA9_6241,
0x2044_7BDC_2F2B_57CE, 0x74AD_024E_73FB_A6C3, 0x8996_88F8_968A_B5D4, 0xDD7F_F16A_CA5A_44D9,
0xE139_32BE_F366_8D7F, 0xB5D0_4B2C_AFB6_7C72, 0x48EB_C19A_4AC7_6F65, 0x1C02_B808_1617_9E68,
0x3066_4632_38BE_FC29, 0x648F_3FA0_646E_0D24, 0x99B4_B516_811F_1E33, 0xCD5D_CC84_DDCF_EF3E,
0xF11B_0F50_E4F3_2698, 0xA5F2_76C2_B823_D795, 0x58C9_FC74_5D52_C482, 0x0C20_85E6_0182_358F,
0x4088_F7B8_5E56_AF9C, 0x1461_8E2A_0286_5E91, 0xE95A_049C_E7F7_4D86, 0xBDB3_7D0E_BB27_BC8B,
0x81F5_BEDA_821B_752D, 0xD51C_C748_DECB_8420, 0x2827_4DFE_3BBA_9737, 0x7CCE_346C_676A_663A,
0x50AA_CA56_49C3_047B, 0x0443_B3C4_1513_F576, 0xF978_3972_F062_E661, 0xAD91_40E0_ACB2_176C,
0x91D7_8334_958E_DECA, 0xC53E_FAA6_C95E_2FC7, 0x3805_7010_2C2F_3CD0, 0x6CEC_0982_70FF_CDDD,
0x60CC_8C64_717D_F852, 0x3425_F5F6_2DAD_095F, 0xC91E_7F40_C8DC_1A48, 0x9DF7_06D2_940C_EB45,
0xA1B1_C506_AD30_22E3, 0xF558_BC94_F1E0_D3EE, 0x0863_3622_1491_C0F9, 0x5C8A_4FB0_4841_31F4,
0x70EE_B18A_66E8_53B5, 0x2407_C818_3A38_A2B8, 0xD93C_42AE_DF49_B1AF, 0x8DD5_3B3C_8399_40A2,
0xB193_F8E8_BAA5_8904, 0xE57A_817A_E675_7809, 0x1841_0BCC_0304_6B1E, 0x4CA8_725E_5FD4_9A13,
0x8111_EF70_BCAD_5F38, 0xD5F8_96E2_E07D_AE35, 0x28C3_1C54_050C_BD22, 0x7C2A_65C6_59DC_4C2F,
0x406C_A612_60E0_8589, 0x1485_DF80_3C30_7484, 0xE9BE_5536_D941_6793, 0xBD57_2CA4_8591_969E,
0x9133_D29E_AB38_F4DF, 0xC5DA_AB0C_F7E8_05D2, 0x38E1_21BA_1299_16C5, 0x6C08_5828_4E49_E7C8,
0x504E_9BFC_7775_2E6E, 0x04A7_E26E_2BA5_DF63, 0xF99C_68D8_CED4_CC74, 0xAD75_114A_9204_3D79,
0xA155_94AC_9386_08F6, 0xF5BC_ED3E_CF56_F9FB, 0x0887_6788_2A27_EAEC, 0x5C6E_1E1A_76F7_1BE1,
0x6028_DDCE_4FCB_D247, 0x34C1_A45C_131B_234A, 0xC9FA_2EEA_F66A_305D, 0x9D13_5778_AABA_C150,
0xB177_A942_8413_A311, 0xE59E_D0D0_D8C3_521C, 0x18A5_5A66_3DB2_410B, 0x4C4C_23F4_6162_B006,
0x700A_E020_585E_79A0, 0x24E3_99B2_048E_88AD, 0xD9D8_1304_E1FF_9BBA, 0x8D31_6A96_BD2F_6AB7,
0xC199_18C8_E2FB_F0A4, 0x9570_615A_BE2B_01A9, 0x684B_EBEC_5B5A_12BE, 0x3CA2_927E_078A_E3B3,
0x00E4_51AA_3EB6_2A15, 0x540D_2838_6266_DB18, 0xA936_A28E_8717_C80F, 0xFDDF_DB1C_DBC7_3902,
0xD1BB_2526_F56E_5B43, 0x8552_5CB4_A9BE_AA4E, 0x7869_D602_4CCF_B959, 0x2C80_AF90_101F_4854,
0x10C6_6C44_2923_81F2, 0x442F_15D6_75F3_70FF, 0xB914_9F60_9082_63E8, 0xEDFD_E6F2_CC52_92E5,
0xE1DD_6314_CDD0_A76A, 0xB534_1A86_9100_5667, 0x480F_9030_7471_4570, 0x1CE6_E9A2_28A1_B47D,
0x20A0_2A76_119D_7DDB, 0x7449_53E4_4D4D_8CD6, 0x8972_D952_A83C_9FC1, 0xDD9B_A0C0_F4EC_6ECC,
0xF1FF_5EFA_DA45_0C8D, 0xA516_2768_8695_FD80, 0x582D_ADDE_63E4_EE97, 0x0CC4_D44C_3F34_1F9A,
0x3082_1798_0608_D63C, 0x646B_6E0A_5AD8_2731, 0x9950_E4BC_BFA9_3426, 0xCDB9_9D2E_E379_C52B,
0x90FB_71CA_D654_A0F5, 0xC412_0858_8A84_51F8, 0x3929_82EE_6FF5_42EF, 0x6DC0_FB7C_3325_B3E2,
0x5186_38A8_0A19_7A44, 0x056F_413A_56C9_8B49, 0xF854_CB8C_B3B8_985E, 0xACBD_B21E_EF68_6953,
0x80D9_4C24_C1C1_0B12, 0xD430_35B6_9D11_FA1F, 0x290B_BF00_7860_E908, 0x7DE2_C692_24B0_1805,
0x41A4_0546_1D8C_D1A3, 0x154D_7CD4_415C_20AE, 0xE876_F662_A42D_33B9, 0xBC9F_8FF0_F8FD_C2B4,
0xB0BF_0A16_F97F_F73B, 0xE456_7384_A5AF_0636, 0x196D_F932_40DE_1521, 0x4D84_80A0_1C0E_E42C,
0x71C2_4374_2532_2D8A, 0x252B_3AE6_79E2_DC87, 0xD810_B050_9C93_CF90, 0x8CF9_C9C2_C043_3E9D,
0xA09D_37F8_EEEA_5CDC, 0xF474_4E6A_B23A_ADD1, 0x094F_C4DC_574B_BEC6, 0x5DA6_BD4E_0B9B_4FCB,
0x61E0_7E9A_32A7_866D, 0x3509_0708_6E77_7760, 0xC832_8DBE_8B06_6477, 0x9CDB_F42C_D7D6_957A,
0xD073_8672_8802_0F69, 0x849A_FFE0_D4D2_FE64, 0x79A1_7556_31A3_ED73, 0x2D48_0CC4_6D73_1C7E,
0x110E_CF10_544F_D5D8, 0x45E7_B682_089F_24D5, 0xB8DC_3C34_EDEE_37C2, 0xEC35_45A6_B13E_C6CF,
0xC051_BB9C_9F97_A48E, 0x94B8_C20E_C347_5583, 0x6983_48B8_2636_4694, 0x3D6A_312A_7AE6_B799,
0x012C_F2FE_43DA_7E3F, 0x55C5_8B6C_1F0A_8F32, 0xA8FE_01DA_FA7B_9C25, 0xFC17_7848_A6AB_6D28,
0xF037_FDAE_A729_58A7, 0xA4DE_843C_FBF9_A9AA, 0x59E5_0E8A_1E88_BABD, 0x0D0C_7718_4258_4BB0,
0x314A_B4CC_7B64_8216, 0x65A3_CD5E_27B4_731B, 0x9898_47E8_C2C5_600C, 0xCC71_3E7A_9E15_9101,
0xE015_C040_B0BC_F340, 0xB4FC_B9D2_EC6C_024D, 0x49C7_3364_091D_115A, 0x1D2E_4AF6_55CD_E057,
0x2168_8922_6CF1_29F1, 0x7581_F0B0_3021_D8FC, 0x88BA_7A06_D550_CBEB, 0xDC53_0394_8980_3AE6,
0x11EA_9EBA_6AF9_FFCD, 0x4503_E728_3629_0EC0, 0xB838_6D9E_D358_1DD7, 0xECD1_140C_8F88_ECDA,
0xD097_D7D8_B6B4_257C, 0x847E_AE4A_EA64_D471, 0x7945_24FC_0F15_C766, 0x2DAC_5D6E_53C5_366B,
0x01C8_A354_7D6C_542A, 0x5521_DAC6_21BC_A527, 0xA81A_5070_C4CD_B630, 0xFCF3_29E2_981D_473D,
0xC0B5_EA36_A121_8E9B, 0x945C_93A4_FDF1_7F96, 0x6967_1912_1880_6C81, 0x3D8E_6080_4450_9D8C,
0x31AE_E566_45D2_A803, 0x6547_9CF4_1902_590E, 0x987C_1642_FC73_4A19, 0xCC95_6FD0_A0A3_BB14,
0xF0D3_AC04_999F_72B2, 0xA43A_D596_C54F_83BF, 0x5901_5F20_203E_90A8, 0x0DE8_26B2_7CEE_61A5,
0x218C_D888_5247_03E4, 0x7565_A11A_0E97_F2E9, 0x885E_2BAC_EBE6_E1FE, 0xDCB7_523E_B736_10F3,
0xE0F1_91EA_8E0A_D955, 0xB418_E878_D2DA_2858, 0x4923_62CE_37AB_3B4F, 0x1DCA_1B5C_6B7B_CA42,
0x5162_6902_34AF_5051, 0x058B_1090_687F_A15C, 0xF8B0_9A26_8D0E_B24B, 0xAC59_E3B4_D1DE_4346,
0x901F_2060_E8E2_8AE0, 0xC4F6_59F2_B432_7BED, 0x39CD_D344_5143_68FA, 0x6D24_AAD6_0D93_99F7,
0x4140_54EC_233A_FBB6, 0x15A9_2D7E_7FEA_0ABB, 0xE892_A7C8_9A9B_19AC, 0xBC7B_DE5A_C64B_E8A1,
0x803D_1D8E_FF77_2107, 0xD4D4_641C_A3A7_D00A, 0x29EF_EEAA_46D6_C31D, 0x7D06_9738_1A06_3210,
0x7126_12DE_1B84_079F, 0x25CF_6B4C_4754_F692, 0xD8F4_E1FA_A225_E585, 0x8C1D_9868_FEF5_1488,
0xB05B_5BBC_C7C9_DD2E, 0xE4B2_222E_9B19_2C23, 0x1989_A898_7E68_3F34, 0x4D60_D10A_22B8_CE39,
0x6104_2F30_0C11_AC78, 0x35ED_56A2_50C1_5D75, 0xC8D6_DC14_B5B0_4E62, 0x9C3F_A586_E960_BF6F,
0xA079_6652_D05C_76C9, 0xF490_1FC0_8C8C_87C4, 0x09AB_9576_69FD_94D3, 0x5D42_ECE4_352D_65DE,
],[
0x0000_0000_0000_0000, 0x3F0B_E14A_916A_6DCB, 0x7E17_C295_22D4_DB96, 0x411C_23DF_B3BE_B65D,
0xFC2F_852A_45A9_B72C, 0xC324_6460_D4C3_DAE7, 0x8238_47BF_677D_6CBA, 0xBD33_A6F5_F617_0171,
0x6A87_A57F_245D_70DD, 0x558C_4435_B537_1D16, 0x1490_67EA_0689_AB4B, 0x2B9B_86A0_97E3_C680,
0x96A8_2055_61F4_C7F1, 0xA9A3_C11F_F09E_AA3A, 0xE8BF_E2C0_4320_1C67, 0xD7B4_038A_D24A_71AC,
0xD50F_4AFE_48BA_E1BA, 0xEA04_ABB4_D9D0_8C71, 0xAB18_886B_6A6E_3A2C, 0x9413_6921_FB04_57E7,
0x2920_CFD4_0D13_5696, 0x162B_2E9E_9C79_3B5D, 0x5737_0D41_2FC7_8D00, 0x683C_EC0B_BEAD_E0CB,
0xBF88_EF81_6CE7_9167, 0x8083_0ECB_FD8D_FCAC, 0xC19F_2D14_4E33_4AF1, 0xFE94_CC5E_DF59_273A,
0x43A7_6AAB_294E_264B, 0x7CAC_8BE1_B824_4B80, 0x3DB0_A83E_0B9A_FDDD, 0x02BB_4974_9AF0_9016,
0x38C6_3AD7_3E7B_DDF1, 0x07CD_DB9D_AF11_B03A, 0x46D1_F842_1CAF_0667, 0x79DA_1908_8DC5_6BAC,
0xC4E9_BFFD_7BD2_6ADD, 0xFBE2_5EB7_EAB8_0716, 0xBAFE_7D68_5906_B14B, 0x85F5_9C22_C86C_DC80,
0x5241_9FA8_1A26_AD2C, 0x6D4A_7EE2_8B4C_C0E7, 0x2C56_5D3D_38F2_76BA, 0x135D_BC77_A998_1B71,
0xAE6E_1A82_5F8F_1A00, 0x9165_FBC8_CEE5_77CB, 0xD079_D817_7D5B_C196, 0xEF72_395D_EC31_AC5D,
0xEDC9_7029_76C1_3C4B, 0xD2C2_9163_E7AB_5180, 0x93DE_B2BC_5415_E7DD, 0xACD5_53F6_C57F_8A16,
0x11E6_F503_3368_8B67, 0x2EED_1449_A202_E6AC, 0x6FF1_3796_11BC_50F1, 0x50FA_D6DC_80D6_3D3A,
0x874E_D556_529C_4C96, 0xB845_341C_C3F6_215D, 0xF959_17C3_7048_9700, 0xC652_F689_E122_FACB,
0x7B61_507C_1735_FBBA, 0x446A_B136_865F_9671, 0x0576_92E9_35E1_202C, 0x3A7D_73A3_A48B_4DE7,
0x718C_75AE_7CF7_BBE2, 0x4E87_94E4_ED9D_D629, 0x0F9B_B73B_5E23_6074, 0x3090_5671_CF49_0DBF,
0x8DA3_F084_395E_0CCE, 0xB2A8_11CE_A834_6105, 0xF3B4_3211_1B8A_D758, 0xCCBF_D35B_8AE0_BA93,
0x1B0B_D0D1_58AA_CB3F, 0x2400_319B_C9C0_A6F4, 0x651C_1244_7A7E_10A9, 0x5A17_F30E_EB14_7D62,
0xE724_55FB_1D03_7C13, 0xD82F_B4B1_8C69_11D8, 0x9933_976E_3FD7_A785, 0xA638_7624_AEBD_CA4E,
0xA483_3F50_344D_5A58, 0x9B88_DE1A_A527_3793, 0xDA94_FDC5_1699_81CE, 0xE59F_1C8F_87F3_EC05,
0x58AC_BA7A_71E4_ED74, 0x67A7_5B30_E08E_80BF, 0x26BB_78EF_5330_36E2, 0x19B0_99A5_C25A_5B29,
0xCE04_9A2F_1010_2A85, 0xF10F_7B65_817A_474E, 0xB013_58BA_32C4_F113, 0x8F18_B9F0_A3AE_9CD8,
0x322B_1F05_55B9_9DA9, 0x0D20_FE4F_C4D3_F062, 0x4C3C_DD90_776D_463F, 0x7337_3CDA_E607_2BF4,
0x494A_4F79_428C_6613, 0x7641_AE33_D3E6_0BD8, 0x375D_8DEC_6058_BD85, 0x0856_6CA6_F132_D04E,
0xB565_CA53_0725_D13F, 0x8A6E_2B19_964F_BCF4, 0xCB72_08C6_25F1_0AA9, 0xF479_E98C_B49B_6762,
0x23CD_EA06_66D1_16CE, 0x1CC6_0B4C_F7BB_7B05, 0x5DDA_2893_4405_CD58, 0x62D1_C9D9_D56F_A093,
0xDFE2_6F2C_2378_A1E2, 0xE0E9_8E66_B212_CC29, 0xA1F5_ADB9_01AC_7A74, 0x9EFE_4CF3_90C6_17BF,
0x9C45_0587_0A36_87A9, 0xA34E_E4CD_9B5C_EA62, 0xE252_C712_28E2_5C3F, 0xDD59_2658_B988_31F4,
0x606A_80AD_4F9F_3085, 0x5F61_61E7_DEF5_5D4E, 0x1E7D_4238_6D4B_EB13, 0x2176_A372_FC21_86D8,
0xF6C2_A0F8_2E6B_F774, 0xC9C9_41B2_BF01_9ABF, 0x88D5_626D_0CBF_2CE2, 0xB7DE_8327_9DD5_4129,
0x0AED_25D2_6BC2_4058, 0x35E6_C498_FAA8_2D93, 0x74FA_E747_4916_9BCE, 0x4BF1_060D_D87C_F605,
0xE318_EB5C_F9EF_77C4, 0xDC13_0A16_6885_1A0F, 0x9D0F_29C9_DB3B_AC52, 0xA204_C883_4A51_C199,
0x1F37_6E76_BC46_C0E8, 0x203C_8F3C_2D2C_AD23, 0x6120_ACE3_9E92_1B7E, 0x5E2B_4DA9_0FF8_76B5,
0x899F_4E23_DDB2_0719, 0xB694_AF69_4CD8_6AD2, 0xF788_8CB6_FF66_DC8F, 0xC883_6DFC_6E0C_B144,
0x75B0_CB09_981B_B035, 0x4ABB_2A43_0971_DDFE, 0x0BA7_099C_BACF_6BA3, 0x34AC_E8D6_2BA5_0668,
0x3617_A1A2_B155_967E, 0x091C_40E8_203F_FBB5, 0x4800_6337_9381_4DE8, 0x770B_827D_02EB_2023,
0xCA38_2488_F4FC_2152, 0xF533_C5C2_6596_4C99, 0xB42F_E61D_D628_FAC4, 0x8B24_0757_4742_970F,
0x5C90_04DD_9508_E6A3, 0x639B_E597_0462_8B68, 0x2287_C648_B7DC_3D35, 0x1D8C_2702_26B6_50FE,
0xA0BF_81F7_D0A1_518F, 0x9FB4_60BD_41CB_3C44, 0xDEA8_4362_F275_8A19, 0xE1A3_A228_631F_E7D2,
0xDBDE_D18B_C794_AA35, 0xE4D5_30C1_56FE_C7FE, 0xA5C9_131E_E540_71A3, 0x9AC2_F254_742A_1C68,
0x27F1_54A1_823D_1D19, 0x18FA_B5EB_1357_70D2, 0x59E6_9634_A0E9_C68F, 0x66ED_777E_3183_AB44,
0xB159_74F4_E3C9_DAE8, 0x8E52_95BE_72A3_B723, 0xCF4E_B661_C11D_017E, 0xF045_572B_5077_6CB5,
0x4D76_F1DE_A660_6DC4, 0x727D_1094_370A_000F, 0x3361_334B_84B4_B652, 0x0C6A_D201_15DE_DB99,
0x0ED1_9B75_8F2E_4B8F, 0x31DA_7A3F_1E44_2644, 0x70C6_59E0_ADFA_9019, 0x4FCD_B8AA_3C90_FDD2,
0xF2FE_1E5F_CA87_FCA3, 0xCDF5_FF15_5BED_9168, 0x8CE9_DCCA_E853_2735, 0xB3E2_3D80_7939_4AFE,
0x6456_3E0A_AB73_3B52, 0x5B5D_DF40_3A19_5699, 0x1A41_FC9F_89A7_E0C4, 0x254A_1DD5_18CD_8D0F,
0x9879_BB20_EEDA_8C7E, 0xA772_5A6A_7FB0_E1B5, 0xE66E_79B5_CC0E_57E8, 0xD965_98FF_5D64_3A23,
0x9294_9EF2_8518_CC26, 0xAD9F_7FB8_1472_A1ED, 0xEC83_5C67_A7CC_17B0, 0xD388_BD2D_36A6_7A7B,
0x6EBB_1BD8_C0B1_7B0A, 0x51B0_FA92_51DB_16C1, 0x10AC_D94D_E265_A09C, 0x2FA7_3807_730F_CD57,
0xF813_3B8D_A145_BCFB, 0xC718_DAC7_302F_D130, 0x8604_F918_8391_676D, 0xB90F_1852_12FB_0AA6,
0x043C_BEA7_E4EC_0BD7, 0x3B37_5FED_7586_661C, 0x7A2B_7C32_C638_D041, 0x4520_9D78_5752_BD8A,
0x479B_D40C_CDA2_2D9C, 0x7890_3546_5CC8_4057, 0x398C_1699_EF76_F60A, 0x0687_F7D3_7E1C_9BC1,
0xBBB4_5126_880B_9AB0, 0x84BF_B06C_1961_F77B, 0xC5A3_93B3_AADF_4126, 0xFAA8_72F9_3BB5_2CED,
0x2D1C_7173_E9FF_5D41, 0x1217_9039_7895_308A, 0x530B_B3E6_CB2B_86D7, 0x6C00_52AC_5A41_EB1C,
0xD133_F459_AC56_EA6D, 0xEE38_1513_3D3C_87A6, 0xAF24_36CC_8E82_31FB, 0x902F_D786_1FE8_5C30,
0xAA52_A425_BB63_11D7, 0x9559_456F_2A09_7C1C, 0xD445_66B0_99B7_CA41, 0xEB4E_87FA_08DD_A78A,
0x567D_210F_FECA_A6FB, 0x6976_C045_6FA0_CB30, 0x286A_E39A_DC1E_7D6D, 0x1761_02D0_4D74_10A6,
0xC0D5_015A_9F3E_610A, 0xFFDE_E010_0E54_0CC1, 0xBEC2_C3CF_BDEA_BA9C, 0x81C9_2285_2C80_D757,
0x3CFA_8470_DA97_D626, 0x03F1_653A_4BFD_BBED, 0x42ED_46E5_F843_0DB0, 0x7DE6_A7AF_6929_607B,
0x7F5D_EEDB_F3D9_F06D, 0x4056_0F91_62B3_9DA6, 0x014A_2C4E_D10D_2BFB, 0x3E41_CD04_4067_4630,
0x8372_6BF1_B670_4741, 0xBC79_8ABB_271A_2A8A, 0xFD65_A964_94A4_9CD7, 0xC26E_482E_05CE_F11C,
0x15DA_4BA4_D784_80B0, 0x2AD1_AAEE_46EE_ED7B, 0x6BCD_8931_F550_5B26, 0x54C6_687B_643A_36ED,
0xE9F5_CE8E_922D_379C, 0xD6FE_2FC4_0347_5A57, 0x97E2_0C1B_B0F9_EC0A, 0xA8E9_ED51_2193_81C1,
],[
0x0000_0000_0000_0000, 0x1DEE_8A5E_222C_A1DC, 0x3BDD_14BC_4459_43B8, 0x2633_9EE2_6675_E264,
0x77BA_2978_88B2_8770, 0x6A54_A326_AA9E_26AC, 0x4C67_3DC4_CCEB_C4C8, 0x5189_B79A_EEC7_6514,
0xEF74_52F1_1165_0EE0, 0xF29A_D8AF_3349_AF3C, 0xD4A9_464D_553C_4D58, 0xC947_CC13_7710_EC84,
0x98CE_7B89_99D7_8990, 0x8520_F1D7_BBFB_284C, 0xA313_6F35_DD8E_CA28, 0xBEFD_E56B_FFA2_6BF4,
0x4C30_0AC9_8DC4_0345, 0x51DE_8097_AFE8_A299, 0x77ED_1E75_C99D_40FD, 0x6A03_942B_EBB1_E121,
0x3B8A_23B1_0576_8435, 0x2664_A9EF_275A_25E9, 0x0057_370D_412F_C78D, 0x1DB9_BD53_6303_6651,
0xA344_5838_9CA1_0DA5, 0xBEAA_D266_BE8D_AC79, 0x9899_4C84_D8F8_4E1D, 0x8577_C6DA_FAD4_EFC1,
0xD4FE_7140_1413_8AD5, 0xC910_FB1E_363F_2B09, 0xEF23_65FC_504A_C96D, 0xF2CD_EFA2_7266_68B1,
0x9860_1593_1B88_068A, 0x858E_9FCD_39A4_A756, 0xA3BD_012F_5FD1_4532, 0xBE53_8B71_7DFD_E4EE,
0xEFDA_3CEB_933A_81FA, 0xF234_B6B5_B116_2026, 0xD407_2857_D763_C242, 0xC9E9_A209_F54F_639E,
0x7714_4762_0AED_086A, 0x6AFA_CD3C_28C1_A9B6, 0x4CC9_53DE_4EB4_4BD2, 0x5127_D980_6C98_EA0E,
0x00AE_6E1A_825F_8F1A, 0x1D40_E444_A073_2EC6, 0x3B73_7AA6_C606_CCA2, 0x269D_F0F8_E42A_6D7E,
0xD450_1F5A_964C_05CF, 0xC9BE_9504_B460_A413, 0xEF8D_0BE6_D215_4677, 0xF263_81B8_F039_E7AB,
0xA3EA_3622_1EFE_82BF, 0xBE04_BC7C_3CD2_2363, 0x9837_229E_5AA7_C107, 0x85D9_A8C0_788B_60DB,
0x3B24_4DAB_8729_0B2F, 0x26CA_C7F5_A505_AAF3, 0x00F9_5917_C370_4897, 0x1D17_D349_E15C_E94B,
0x4C9E_64D3_0F9B_8C5F, 0x5170_EE8D_2DB7_2D83, 0x7743_706F_4BC2_CFE7, 0x6AAD_FA31_69EE_6E3B,
0xA218_840D_981E_1391, 0xBFF6_0E53_BA32_B24D, 0x99C5_90B1_DC47_5029, 0x842B_1AEF_FE6B_F1F5,
0xD5A2_AD75_10AC_94E1, 0xC84C_272B_3280_353D, 0xEE7F_B9C9_54F5_D759, 0xF391_3397_76D9_7685,
0x4D6C_D6FC_897B_1D71, 0x5082_5CA2_AB57_BCAD, 0x76B1_C240_CD22_5EC9, 0x6B5F_481E_EF0E_FF15,
0x3AD6_FF84_01C9_9A01, 0x2738_75DA_23E5_3BDD, 0x010B_EB38_4590_D9B9, 0x1CE5_6166_67BC_7865,
0xEE28_8EC4_15DA_10D4, 0xF3C6_049A_37F6_B108, 0xD5F5_9A78_5183_536C, 0xC81B_1026_73AF_F2B0,
0x9992_A7BC_9D68_97A4, 0x847C_2DE2_BF44_3678, 0xA24F_B300_D931_D41C, 0xBFA1_395E_FB1D_75C0,
0x015C_DC35_04BF_1E34, 0x1CB2_566B_2693_BFE8, 0x3A81_C889_40E6_5D8C, 0x276F_42D7_62CA_FC50,
0x76E6_F54D_8C0D_9944, 0x6B08_7F13_AE21_3898, 0x4D3B_E1F1_C854_DAFC, 0x50D5_6BAF_EA78_7B20,
0x3A78_919E_8396_151B, 0x2796_1BC0_A1BA_B4C7, 0x01A5_8522_C7CF_56A3, 0x1C4B_0F7C_E5E3_F77F,
0x4DC2_B8E6_0B24_926B, 0x502C_32B8_2908_33B7, 0x761F_AC5A_4F7D_D1D3, 0x6BF1_2604_6D51_700F,
0xD50C_C36F_92F3_1BFB, 0xC8E2_4931_B0DF_BA27, 0xEED1_D7D3_D6AA_5843, 0xF33F_5D8D_F486_F99F,
0xA2B6_EA17_1A41_9C8B, 0xBF58_6049_386D_3D57, 0x996B_FEAB_5E18_DF33, 0x8485_74F5_7C34_7EEF,
0x7648_9B57_0E52_165E, 0x6BA6_1109_2C7E_B782, 0x4D95_8FEB_4A0B_55E6, 0x507B_05B5_6827_F43A,
0x01F2_B22F_86E0_912E, 0x1C1C_3871_A4CC_30F2, 0x3A2F_A693_C2B9_D296, 0x27C1_2CCD_E095_734A,
0x993C_C9A6_1F37_18BE, 0x84D2_43F8_3D1B_B962, 0xA2E1_DD1A_5B6E_5B06, 0xBF0F_5744_7942_FADA,
0xEE86_E0DE_9785_9FCE, 0xF368_6A80_B5A9_3E12, 0xD55B_F462_D3DC_DC76, 0xC8B5_7E3C_F1F0_7DAA,
0xD6E9_A730_9F32_39A7, 0xCB07_2D6E_BD1E_987B, 0xED34_B38C_DB6B_7A1F, 0xF0DA_39D2_F947_DBC3,
0xA153_8E48_1780_BED7, 0xBCBD_0416_35AC_1F0B, 0x9A8E_9AF4_53D9_FD6F, 0x8760_10AA_71F5_5CB3,
0x399D_F5C1_8E57_3747, 0x2473_7F9F_AC7B_969B, 0x0240_E17D_CA0E_74FF, 0x1FAE_6B23_E822_D523,
0x4E27_DCB9_06E5_B037, 0x53C9_56E7_24C9_11EB, 0x75FA_C805_42BC_F38F, 0x6814_425B_6090_5253,
0x9AD9_ADF9_12F6_3AE2, 0x8737_27A7_30DA_9B3E, 0xA104_B945_56AF_795A, 0xBCEA_331B_7483_D886,
0xED63_8481_9A44_BD92, 0xF08D_0EDF_B868_1C4E, 0xD6BE_903D_DE1D_FE2A, 0xCB50_1A63_FC31_5FF6,
0x75AD_FF08_0393_3402, 0x6843_7556_21BF_95DE, 0x4E70_EBB4_47CA_77BA, 0x539E_61EA_65E6_D666,
0x0217_D670_8B21_B372, 0x1FF9_5C2E_A90D_12AE, 0x39CA_C2CC_CF78_F0CA, 0x2424_4892_ED54_5116,
0x4E89_B2A3_84BA_3F2D, 0x5367_38FD_A696_9EF1, 0x7554_A61F_C0E3_7C95, 0x68BA_2C41_E2CF_DD49,
0x3933_9BDB_0C08_B85D, 0x24DD_1185_2E24_1981, 0x02EE_8F67_4851_FBE5, 0x1F00_0539_6A7D_5A39,
0xA1FD_E052_95DF_31CD, 0xBC13_6A0C_B7F3_9011, 0x9A20_F4EE_D186_7275, 0x87CE_7EB0_F3AA_D3A9,
0xD647_C92A_1D6D_B6BD, 0xCBA9_4374_3F41_1761, 0xED9A_DD96_5934_F505, 0xF074_57C8_7B18_54D9,
0x02B9_B86A_097E_3C68, 0x1F57_3234_2B52_9DB4, 0x3964_ACD6_4D27_7FD0, 0x248A_2688_6F0B_DE0C,
0x7503_9112_81CC_BB18, 0x68ED_1B4C_A3E0_1AC4, 0x4EDE_85AE_C595_F8A0, 0x5330_0FF0_E7B9_597C,
0xEDCD_EA9B_181B_3288, 0xF023_60C5_3A37_9354, 0xD610_FE27_5C42_7130, 0xCBFE_7479_7E6E_D0EC,
0x9A77_C3E3_90A9_B5F8, 0x8799_49BD_B285_1424, 0xA1AA_D75F_D4F0_F640, 0xBC44_5D01_F6DC_579C,
0x74F1_233D_072C_2A36, 0x691F_A963_2500_8BEA, 0x4F2C_3781_4375_698E, 0x52C2_BDDF_6159_C852,
0x034B_0A45_8F9E_AD46, 0x1EA5_801B_ADB2_0C9A, 0x3896_1EF9_CBC7_EEFE, 0x2578_94A7_E9EB_4F22,
0x9B85_71CC_1649_24D6, 0x866B_FB92_3465_850A, 0xA058_6570_5210_676E, 0xBDB6_EF2E_703C_C6B2,
0xEC3F_58B4_9EFB_A3A6, 0xF1D1_D2EA_BCD7_027A, 0xD7E2_4C08_DAA2_E01E, 0xCA0C_C656_F88E_41C2,
0x38C1_29F4_8AE8_2973, 0x252F_A3AA_A8C4_88AF, 0x031C_3D48_CEB1_6ACB, 0x1EF2_B716_EC9D_CB17,
0x4F7B_008C_025A_AE03, 0x5295_8AD2_2076_0FDF, 0x74A6_1430_4603_EDBB, 0x6948_9E6E_642F_4C67,
0xD7B5_7B05_9B8D_2793, 0xCA5B_F15B_B9A1_864F, 0xEC68_6FB9_DFD4_642B, 0xF186_E5E7_FDF8_C5F7,
0xA00F_527D_133F_A0E3, 0xBDE1_D823_3113_013F, 0x9BD2_46C1_5766_E35B, 0x863C_CC9F_754A_4287,
0xEC91_36AE_1CA4_2CBC, 0xF17F_BCF0_3E88_8D60, 0xD74C_2212_58FD_6F04, 0xCAA2_A84C_7AD1_CED8,
0x9B2B_1FD6_9416_ABCC, 0x86C5_9588_B63A_0A10, 0xA0F6_0B6A_D04F_E874, 0xBD18_8134_F263_49A8,
0x03E5_645F_0DC1_225C, 0x1E0B_EE01_2FED_8380, 0x3838_70E3_4998_61E4, 0x25D6_FABD_6BB4_C038,
0x745F_4D27_8573_A52C, 0x69B1_C779_A75F_04F0, 0x4F82_599B_C12A_E694, 0x526C_D3C5_E306_4748,
0xA0A1_3C67_9160_2FF9, 0xBD4F_B639_B34C_8E25, 0x9B7C_28DB_D539_6C41, 0x8692_A285_F715_CD9D,
0xD71B_151F_19D2_A889, 0xCAF5_9F41_3BFE_0955, 0xECC6_01A3_5D8B_EB31, 0xF128_8BFD_7FA7_4AED,
0x4FD5_6E96_8005_2119, 0x523B_E4C8_A229_80C5, 0x7408_7A2A_C45C_62A1, 0x69E6_F074_E670_C37D,
0x386F_47EE_08B7_A669, 0x2581_CDB0_2A9B_07B5, 0x03B2_5352_4CEE_E5D1, 0x1E5C_D90C_6EC2_440D,
],[
0x0000_0000_0000_0000, 0x5C2D_7760_33C4_205E, 0xB85A_EEC0_6788_40BC, 0xE477_99A0_544C_60E2,
0xE26D_72AB_601E_9FFD, 0xBE40_05CB_53DA_BFA3, 0x5A37_9C6B_0796_DF41, 0x061A_EB0B_3452_FF1F,
0x5602_4A7D_6F33_217F, 0x0A2F_3D1D_5CF7_0121, 0xEE58_A4BD_08BB_61C3, 0xB275_D3DD_3B7F_419D,
0xB46F_38D6_0F2D_BE82, 0xE842_4FB6_3CE9_9EDC, 0x0C35_D616_68A5_FE3E, 0x5018_A176_5B61_DE60,
0xAC04_94FA_DE66_42FE, 0xF029_E39A_EDA2_62A0, 0x145E_7A3A_B9EE_0242, 0x4873_0D5A_8A2A_221C,
0x4E69_E651_BE78_DD03, 0x1244_9131_8DBC_FD5D, 0xF633_0891_D9F0_9DBF, 0xAA1E_7FF1_EA34_BDE1,
0xFA06_DE87_B155_6381, 0xA62B_A9E7_8291_43DF, 0x425C_3047_D6DD_233D, 0x1E71_4727_E519_0363,
0x186B_AC2C_D14B_FC7C, 0x4446_DB4C_E28F_DC22, 0xA031_42EC_B6C3_BCC0, 0xFC1C_358C_8507_9C9E,
0xCAD1_86DE_13C2_9B79, 0x96FC_F1BE_2006_BB27, 0x728B_681E_744A_DBC5, 0x2EA6_1F7E_478E_FB9B,
0x28BC_F475_73DC_0484, 0x7491_8315_4018_24DA, 0x90E6_1AB5_1454_4438, 0xCCCB_6DD5_2790_6466,
0x9CD3_CCA3_7CF1_BA06, 0xC0FE_BBC3_4F35_9A58, 0x2489_2263_1B79_FABA, 0x78A4_5503_28BD_DAE4,
0x7EBE_BE08_1CEF_25FB, 0x2293_C968_2F2B_05A5, 0xC6E4_50C8_7B67_6547, 0x9AC9_27A8_48A3_4519,
0x66D5_1224_CDA4_D987, 0x3AF8_6544_FE60_F9D9, 0xDE8F_FCE4_AA2C_993B, 0x82A2_8B84_99E8_B965,
0x84B8_608F_ADBA_467A, 0xD895_17EF_9E7E_6624, 0x3CE2_8E4F_CA32_06C6, 0x60CF_F92F_F9F6_2698,
0x30D7_5859_A297_F8F8, 0x6CFA_2F39_9153_D8A6, 0x888D_B699_C51F_B844, 0xD4A0_C1F9_F6DB_981A,
0xD2BA_2AF2_C289_6705, 0x8E97_5D92_F14D_475B, 0x6AE0_C432_A501_27B9, 0x36CD_B352_96C5_07E7,
0x077B_A297_888B_2877, 0x5B56_D5F7_BB4F_0829, 0xBF21_4C57_EF03_68CB, 0xE30C_3B37_DCC7_4895,
0xE516_D03C_E895_B78A, 0xB93B_A75C_DB51_97D4, 0x5D4C_3EFC_8F1D_F736, 0x0161_499C_BCD9_D768,
0x5179_E8EA_E7B8_0908, 0x0D54_9F8A_D47C_2956, 0xE923_062A_8030_49B4, 0xB50E_714A_B3F4_69EA,
0xB314_9A41_87A6_96F5, 0xEF39_ED21_B462_B6AB, 0x0B4E_7481_E02E_D649, 0x5763_03E1_D3EA_F617,
0xAB7F_366D_56ED_6A89, 0xF752_410D_6529_4AD7, 0x1325_D8AD_3165_2A35, 0x4F08_AFCD_02A1_0A6B,
0x4912_44C6_36F3_F574, 0x153F_33A6_0537_D52A, 0xF148_AA06_517B_B5C8, 0xAD65_DD66_62BF_9596,
0xFD7D_7C10_39DE_4BF6, 0xA150_0B70_0A1A_6BA8, 0x4527_92D0_5E56_0B4A, 0x190A_E5B0_6D92_2B14,
0x1F10_0EBB_59C0_D40B, 0x433D_79DB_6A04_F455, 0xA74A_E07B_3E48_94B7, 0xFB67_971B_0D8C_B4E9,
0xCDAA_2449_9B49_B30E, 0x9187_5329_A88D_9350, 0x75F0_CA89_FCC1_F3B2, 0x29DD_BDE9_CF05_D3EC,
0x2FC7_56E2_FB57_2CF3, 0x73EA_2182_C893_0CAD, 0x979D_B822_9CDF_6C4F, 0xCBB0_CF42_AF1B_4C11,
0x9BA8_6E34_F47A_9271, 0xC785_1954_C7BE_B22F, 0x23F2_80F4_93F2_D2CD, 0x7FDF_F794_A036_F293,
0x79C5_1C9F_9464_0D8C, 0x25E8_6BFF_A7A0_2DD2, 0xC19F_F25F_F3EC_4D30, 0x9DB2_853F_C028_6D6E,
0x61AE_B0B3_452F_F1F0, 0x3D83_C7D3_76EB_D1AE, 0xD9F4_5E73_22A7_B14C, 0x85D9_2913_1163_9112,
0x83C3_C218_2531_6E0D, 0xDFEE_B578_16F5_4E53, 0x3B99_2CD8_42B9_2EB1, 0x67B4_5BB8_717D_0EEF,
0x37AC_FACE_2A1C_D08F, 0x6B81_8DAE_19D8_F0D1, 0x8FF6_140E_4D94_9033, 0xD3DB_636E_7E50_B06D,
0xD5C1_8865_4A02_4F72, 0x89EC_FF05_79C6_6F2C, 0x6D9B_66A5_2D8A_0FCE, 0x31B6_11C5_1E4E_2F90,
0x0EF7_452F_1116_50EE, 0x52DA_324F_22D2_70B0, 0xB6AD_ABEF_769E_1052, 0xEA80_DC8F_455A_300C,
0xEC9A_3784_7108_CF13, 0xB0B7_40E4_42CC_EF4D, 0x54C0_D944_1680_8FAF, 0x08ED_AE24_2544_AFF1,
0x58F5_0F52_7E25_7191, 0x04D8_7832_4DE1_51CF, 0xE0AF_E192_19AD_312D, 0xBC82_96F2_2A69_1173,
0xBA98_7DF9_1E3B_EE6C, 0xE6B5_0A99_2DFF_CE32, 0x02C2_9339_79B3_AED0, 0x5EEF_E459_4A77_8E8E,
0xA2F3_D1D5_CF70_1210, 0xFEDE_A6B5_FCB4_324E, 0x1AA9_3F15_A8F8_52AC, 0x4684_4875_9B3C_72F2,
0x409E_A37E_AF6E_8DED, 0x1CB3_D41E_9CAA_ADB3, 0xF8C4_4DBE_C8E6_CD51, 0xA4E9_3ADE_FB22_ED0F,
0xF4F1_9BA8_A043_336F, 0xA8DC_ECC8_9387_1331, 0x4CAB_7568_C7CB_73D3, 0x1086_0208_F40F_538D,
0x169C_E903_C05D_AC92, 0x4AB1_9E63_F399_8CCC, 0xAEC6_07C3_A7D5_EC2E, 0xF2EB_70A3_9411_CC70,
0xC426_C3F1_02D4_CB97, 0x980B_B491_3110_EBC9, 0x7C7C_2D31_655C_8B2B, 0x2051_5A51_5698_AB75,
0x264B_B15A_62CA_546A, 0x7A66_C63A_510E_7434, 0x9E11_5F9A_0542_14D6, 0xC23C_28FA_3686_3488,
0x9224_898C_6DE7_EAE8, 0xCE09_FEEC_5E23_CAB6, 0x2A7E_674C_0A6F_AA54, 0x7653_102C_39AB_8A0A,
0x7049_FB27_0DF9_7515, 0x2C64_8C47_3E3D_554B, 0xC813_15E7_6A71_35A9, 0x943E_6287_59B5_15F7,
0x6822_570B_DCB2_8969, 0x340F_206B_EF76_A937, 0xD078_B9CB_BB3A_C9D5, 0x8C55_CEAB_88FE_E98B,
0x8A4F_25A0_BCAC_1694, 0xD662_52C0_8F68_36CA, 0x3215_CB60_DB24_5628, 0x6E38_BC00_E8E0_7676,
0x3E20_1D76_B381_A816, 0x620D_6A16_8045_8848, 0x867A_F3B6_D409_E8AA, 0xDA57_84D6_E7CD_C8F4,
0xDC4D_6FDD_D39F_37EB, 0x8060_18BD_E05B_17B5, 0x6417_811D_B417_7757, 0x383A_F67D_87D3_5709,
0x098C_E7B8_999D_7899, 0x55A1_90D8_AA59_58C7, 0xB1D6_0978_FE15_3825, 0xEDFB_7E18_CDD1_187B,
0xEBE1_9513_F983_E764, 0xB7CC_E273_CA47_C73A, 0x53BB_7BD3_9E0B_A7D8, 0x0F96_0CB3_ADCF_8786,
0x5F8E_ADC5_F6AE_59E6, 0x03A3_DAA5_C56A_79B8, 0xE7D4_4305_9126_195A, 0xBBF9_3465_A2E2_3904,
0xBDE3_DF6E_96B0_C61B, 0xE1CE_A80E_A574_E645, 0x05B9_31AE_F138_86A7, 0x5994_46CE_C2FC_A6F9,
0xA588_7342_47FB_3A67, 0xF9A5_0422_743F_1A39, 0x1DD2_9D82_2073_7ADB, 0x41FF_EAE2_13B7_5A85,
0x47E5_01E9_27E5_A59A, 0x1BC8_7689_1421_85C4, 0xFFBF_EF29_406D_E526, 0xA392_9849_73A9_C578,
0xF38A_393F_28C8_1B18, 0xAFA7_4E5F_1B0C_3B46, 0x4BD0_D7FF_4F40_5BA4, 0x17FD_A09F_7C84_7BFA,
0x11E7_4B94_48D6_84E5, 0x4DCA_3CF4_7B12_A4BB, 0xA9BD_A554_2F5E_C459, 0xF590_D234_1C9A_E407,
0xC35D_6166_8A5F_E3E0, 0x9F70_1606_B99B_C3BE, 0x7B07_8FA6_EDD7_A35C, 0x272A_F8C6_DE13_8302,
0x2130_13CD_EA41_7C1D, 0x7D1D_64AD_D985_5C43, 0x996A_FD0D_8DC9_3CA1, 0xC547_8A6D_BE0D_1CFF,
0x955F_2B1B_E56C_C29F, 0xC972_5C7B_D6A8_E2C1, 0x2D05_C5DB_82E4_8223, 0x7128_B2BB_B120_A27D,
0x7732_59B0_8572_5D62, 0x2B1F_2ED0_B6B6_7D3C, 0xCF68_B770_E2FA_1DDE, 0x9345_C010_D13E_3D80,
0x6F59_F59C_5439_A11E, 0x3374_82FC_67FD_8140, 0xD703_1B5C_33B1_E1A2, 0x8B2E_6C3C_0075_C1FC,
0x8D34_8737_3427_3EE3, 0xD119_F057_07E3_1EBD, 0x356E_69F7_53AF_7E5F, 0x6943_1E97_606B_5E01,
0x395B_BFE1_3B0A_8061, 0x6576_C881_08CE_A03F, 0x8101_5121_5C82_C0DD, 0xDD2C_2641_6F46_E083,
0xDB36_CD4A_5B14_1F9C, 0x871B_BA2A_68D0_3FC2, 0x636C_238A_3C9C_5F20, 0x3F41_54EA_0F58_7F7E,
],[
0x0000_0000_0000_0000, 0x6184_D55F_7212_67C6, 0xC309_AABE_E424_CF8C, 0xA28D_7FE1_9636_A84A,
0x14CB_FA56_6747_819D, 0x754F_2F09_1555_E65B, 0xD7C2_50E8_8363_4E11, 0xB646_85B7_F171_29D7,
0x2997_F4AC_CE8F_033A, 0x4813_21F3_BC9D_64FC, 0xEA9E_5E12_2AAB_CCB6, 0x8B1A_8B4D_58B9_AB70,
0x3D5C_0EFA_A9C8_82A7, 0x5CD8_DBA5_DBDA_E561, 0xFE55_A444_4DEC_4D2B, 0x9FD1_711B_3FFE_2AED,
0x532F_E959_9D1E_0674, 0x32AB_3C06_EF0C_61B2, 0x9026_43E7_793A_C9F8, 0xF1A2_96B8_0B28_AE3E,
0x47E4_130F_FA59_87E9, 0x2660_C650_884B_E02F, 0x84ED_B9B1_1E7D_4865, 0xE569_6CEE_6C6F_2FA3,
0x7AB8_1DF5_5391_054E, 0x1B3C_C8AA_2183_6288, 0xB9B1_B74B_B7B5_CAC2, 0xD835_6214_C5A7_AD04,
0x6E73_E7A3_34D6_84D3, 0x0FF7_32FC_46C4_E315, 0xAD7A_4D1D_D0F2_4B5F, 0xCCFE_9842_A2E0_2C99,
0xA65F_D2B3_3A3C_0CE8, 0xC7DB_07EC_482E_6B2E, 0x6556_780D_DE18_C364, 0x04D2_AD52_AC0A_A4A2,
0xB294_28E5_5D7B_8D75, 0xD310_FDBA_2F69_EAB3, 0x719D_825B_B95F_42F9, 0x1019_5704_CB4D_253F,
0x8FC8_261F_F4B3_0FD2, 0xEE4C_F340_86A1_6814, 0x4CC1_8CA1_1097_C05E, 0x2D45_59FE_6285_A798,
0x9B03_DC49_93F4_8E4F, 0xFA87_0916_E1E6_E989, 0x580A_76F7_77D0_41C3, 0x398E_A3A8_05C2_2605,
0xF570_3BEA_A722_0A9C, 0x94F4_EEB5_D530_6D5A, 0x3679_9154_4306_C510, 0x57FD_440B_3114_A2D6,
0xE1BB_C1BC_C065_8B01, 0x803F_14E3_B277_ECC7, 0x22B2_6B02_2441_448D, 0x4336_BE5D_5653_234B,
0xDCE7_CF46_69AD_09A6, 0xBD63_1A19_1BBF_6E60, 0x1FEE_65F8_8D89_C62A, 0x7E6A_B0A7_FF9B_A1EC,
0xC82C_3510_0EEA_883B, 0xA9A8_E04F_7CF8_EFFD, 0x0B25_9FAE_EACE_47B7, 0x6AA1_4AF1_98DC_2071,
0xDE67_0A4D_DB76_0755, 0xBFE3_DF12_A964_6093, 0x1D6E_A0F3_3F52_C8D9, 0x7CEA_75AC_4D40_AF1F,
0xCAAC_F01B_BC31_86C8, 0xAB28_2544_CE23_E10E, 0x09A5_5AA5_5815_4944, 0x6821_8FFA_2A07_2E82,
0xF7F0_FEE1_15F9_046F, 0x9674_2BBE_67EB_63A9, 0x34F9_545F_F1DD_CBE3, 0x557D_8100_83CF_AC25,
0xE33B_04B7_72BE_85F2, 0x82BF_D1E8_00AC_E234, 0x2032_AE09_969A_4A7E, 0x41B6_7B56_E488_2DB8,
0x8D48_E314_4668_0121, 0xECCC_364B_347A_66E7, 0x4E41_49AA_A24C_CEAD, 0x2FC5_9CF5_D05E_A96B,
0x9983_1942_212F_80BC, 0xF807_CC1D_533D_E77A, 0x5A8A_B3FC_C50B_4F30, 0x3B0E_66A3_B719_28F6,
0xA4DF_17B8_88E7_021B, 0xC55B_C2E7_FAF5_65DD, 0x67D6_BD06_6CC3_CD97, 0x0652_6859_1ED1_AA51,
0xB014_EDEE_EFA0_8386, 0xD190_38B1_9DB2_E440, 0x731D_4750_0B84_4C0A, 0x1299_920F_7996_2BCC,
0x7838_D8FE_E14A_0BBD, 0x19BC_0DA1_9358_6C7B, 0xBB31_7240_056E_C431, 0xDAB5_A71F_777C_A3F7,
0x6CF3_22A8_860D_8A20, 0x0D77_F7F7_F41F_EDE6, 0xAFFA_8816_6229_45AC, 0xCE7E_5D49_103B_226A,
0x51AF_2C52_2FC5_0887, 0x302B_F90D_5DD7_6F41, 0x92A6_86EC_CBE1_C70B, 0xF322_53B3_B9F3_A0CD,
0x4564_D604_4882_891A, 0x24E0_035B_3A90_EEDC, 0x866D_7CBA_ACA6_4696, 0xE7E9_A9E5_DEB4_2150,
0x2B17_31A7_7C54_0DC9, 0x4A93_E4F8_0E46_6A0F, 0xE81E_9B19_9870_C245, 0x899A_4E46_EA62_A583,
0x3FDC_CBF1_1B13_8C54, 0x5E58_1EAE_6901_EB92, 0xFCD5_614F_FF37_43D8, 0x9D51_B410_8D25_241E,
0x0280_C50B_B2DB_0EF3, 0x6304_1054_C0C9_6935, 0xC189_6FB5_56FF_C17F, 0xA00D_BAEA_24ED_A6B9,
0x164B_3F5D_D59C_8F6E, 0x77CF_EA02_A78E_E8A8, 0xD542_95E3_31B8_40E2, 0xB4C6_40BC_43AA_2724,
0x2E16_BBB0_19E2_102F, 0x4F92_6EEF_6BF0_77E9, 0xED1F_110E_FDC6_DFA3, 0x8C9B_C451_8FD4_B865,
0x3ADD_41E6_7EA5_91B2, 0x5B59_94B9_0CB7_F674, 0xF9D4_EB58_9A81_5E3E, 0x9850_3E07_E893_39F8,
0x0781_4F1C_D76D_1315, 0x6605_9A43_A57F_74D3, 0xC488_E5A2_3349_DC99, 0xA50C_30FD_415B_BB5F,
0x134A_B54A_B02A_9288, 0x72CE_6015_C238_F54E, 0xD043_1FF4_540E_5D04, 0xB1C7_CAAB_261C_3AC2,
0x7D39_52E9_84FC_165B, 0x1CBD_87B6_F6EE_719D, 0xBE30_F857_60D8_D9D7, 0xDFB4_2D08_12CA_BE11,
0x69F2_A8BF_E3BB_97C6, 0x0876_7DE0_91A9_F000, 0xAAFB_0201_079F_584A, 0xCB7F_D75E_758D_3F8C,
0x54AE_A645_4A73_1561, 0x352A_731A_3861_72A7, 0x97A7_0CFB_AE57_DAED, 0xF623_D9A4_DC45_BD2B,
0x4065_5C13_2D34_94FC, 0x21E1_894C_5F26_F33A, 0x836C_F6AD_C910_5B70, 0xE2E8_23F2_BB02_3CB6,
0x8849_6903_23DE_1CC7, 0xE9CD_BC5C_51CC_7B01, 0x4B40_C3BD_C7FA_D34B, 0x2AC4_16E2_B5E8_B48D,
0x9C82_9355_4499_9D5A, 0xFD06_460A_368B_FA9C, 0x5F8B_39EB_A0BD_52D6, 0x3E0F_ECB4_D2AF_3510,
0xA1DE_9DAF_ED51_1FFD, 0xC05A_48F0_9F43_783B, 0x62D7_3711_0975_D071, 0x0353_E24E_7B67_B7B7,
0xB515_67F9_8A16_9E60, 0xD491_B2A6_F804_F9A6, 0x761C_CD47_6E32_51EC, 0x1798_1818_1C20_362A,
0xDB66_805A_BEC0_1AB3, 0xBAE2_5505_CCD2_7D75, 0x186F_2AE4_5AE4_D53F, 0x79EB_FFBB_28F6_B2F9,
0xCFAD_7A0C_D987_9B2E, 0xAE29_AF53_AB95_FCE8, 0x0CA4_D0B2_3DA3_54A2, 0x6D20_05ED_4FB1_3364,
0xF2F1_74F6_704F_1989, 0x9375_A1A9_025D_7E4F, 0x31F8_DE48_946B_D605, 0x507C_0B17_E679_B1C3,
0xE63A_8EA0_1708_9814, 0x87BE_5BFF_651A_FFD2, 0x2533_241E_F32C_5798, 0x44B7_F141_813E_305E,
0xF071_B1FD_C294_177A, 0x91F5_64A2_B086_70BC, 0x3378_1B43_26B0_D8F6, 0x52FC_CE1C_54A2_BF30,
0xE4BA_4BAB_A5D3_96E7, 0x853E_9EF4_D7C1_F121, 0x27B3_E115_41F7_596B, 0x4637_344A_33E5_3EAD,
0xD9E6_4551_0C1B_1440, 0xB862_900E_7E09_7386, 0x1AEF_EFEF_E83F_DBCC, 0x7B6B_3AB0_9A2D_BC0A,
0xCD2D_BF07_6B5C_95DD, 0xACA9_6A58_194E_F21B, 0x0E24_15B9_8F78_5A51, 0x6FA0_C0E6_FD6A_3D97,
0xA35E_58A4_5F8A_110E, 0xC2DA_8DFB_2D98_76C8, 0x6057_F21A_BBAE_DE82, 0x01D3_2745_C9BC_B944,
0xB795_A2F2_38CD_9093, 0xD611_77AD_4ADF_F755, 0x749C_084C_DCE9_5F1F, 0x1518_DD13_AEFB_38D9,
0x8AC9_AC08_9105_1234, 0xEB4D_7957_E317_75F2, 0x49C0_06B6_7521_DDB8, 0x2844_D3E9_0733_BA7E,
0x9E02_565E_F642_93A9, 0xFF86_8301_8450_F46F, 0x5D0B_FCE0_1266_5C25, 0x3C8F_29BF_6074_3BE3,
0x562E_634E_F8A8_1B92, 0x37AA_B611_8ABA_7C54, 0x9527_C9F0_1C8C_D41E, 0xF4A3_1CAF_6E9E_B3D8,
0x42E5_9918_9FEF_9A0F, 0x2361_4C47_EDFD_FDC9, 0x81EC_33A6_7BCB_5583, 0xE068_E6F9_09D9_3245,
0x7FB9_97E2_3627_18A8, 0x1E3D_42BD_4435_7F6E, 0xBCB0_3D5C_D203_D724, 0xDD34_E803_A011_B0E2,
0x6B72_6DB4_5160_9935, 0x0AF6_B8EB_2372_FEF3, 0xA87B_C70A_B544_56B9, 0xC9FF_1255_C756_317F,
0x0501_8A17_65B6_1DE6, 0x6485_5F48_17A4_7A20, 0xC608_20A9_8192_D26A, 0xA78C_F5F6_F380_B5AC,
0x11CA_7041_02F1_9C7B, 0x704E_A51E_70E3_FBBD, 0xD2C3_DAFF_E6D5_53F7, 0xB347_0FA0_94C7_3431,
0x2C96_7EBB_AB39_1EDC, 0x4D12_ABE4_D92B_791A, 0xEF9F_D405_4F1D_D150, 0x8E1B_015A_3D0F_B696,
0x385D_84ED_CC7E_9F41, 0x59D9_51B2_BE6C_F887, 0xFB54_2E53_285A_50CD, 0x9AD0_FB0C_5A48_370B,
],[
0x0000_0000_0000_0000, 0x22EF_0D59_34F9_64EC, 0x45DE_1AB2_69F2_C9D8, 0x6731_17EB_5D0B_AD34,
0x8BBC_3564_D3E5_93B0, 0xA953_383D_E71C_F75C, 0xCE62_2FD6_BA17_5A68, 0xEC8D_228F_8EEE_3E84,
0x85A0_C5E2_08C5_39E5, 0xA74F_C8BB_3C3C_5D09, 0xC07E_DF50_6137_F03D, 0xE291_D209_55CE_94D1,
0x0E1C_F086_DB20_AA55, 0x2CF3_FDDF_EFD9_CEB9, 0x4BC2_EA34_B2D2_638D, 0x692D_E76D_862B_0761,
0x9999_24EF_BE84_6D4F, 0xBB76_29B6_8A7D_09A3, 0xDC47_3E5D_D776_A497, 0xFEA8_3304_E38F_C07B,
0x1225_118B_6D61_FEFF, 0x30CA_1CD2_5998_9A13, 0x57FB_0B39_0493_3727, 0x7514_0660_306A_53CB,
0x1C39_E10D_B641_54AA, 0x3ED6_EC54_82B8_3046, 0x59E7_FBBF_DFB3_9D72, 0x7B08_F6E6_EB4A_F99E,
0x9785_D469_65A4_C71A, 0xB56A_D930_515D_A3F6, 0xD25B_CEDB_0C56_0EC2, 0xF0B4_C382_38AF_6A2E,
0xA1EA_E6F4_D206_C41B, 0x8305_EBAD_E6FF_A0F7, 0xE434_FC46_BBF4_0DC3, 0xC6DB_F11F_8F0D_692F,
0x2A56_D390_01E3_57AB, 0x08B9_DEC9_351A_3347, 0x6F88_C922_6811_9E73, 0x4D67_C47B_5CE8_FA9F,
0x244A_2316_DAC3_FDFE, 0x06A5_2E4F_EE3A_9912, 0x6194_39A4_B331_3426, 0x437B_34FD_87C8_50CA,
0xAFF6_1672_0926_6E4E, 0x8D19_1B2B_3DDF_0AA2, 0xEA28_0CC0_60D4_A796, 0xC8C7_0199_542D_C37A,
0x3873_C21B_6C82_A954, 0x1A9C_CF42_587B_CDB8, 0x7DAD_D8A9_0570_608C, 0x5F42_D5F0_3189_0460,
0xB3CF_F77F_BF67_3AE4, 0x9120_FA26_8B9E_5E08, 0xF611_EDCD_D695_F33C, 0xD4FE_E094_E26C_97D0,
0xBDD3_07F9_6447_90B1, 0x9F3C_0AA0_50BE_F45D, 0xF80D_1D4B_0DB5_5969, 0xDAE2_1012_394C_3D85,
0x366F_329D_B7A2_0301, 0x1480_3FC4_835B_67ED, 0x73B1_282F_DE50_CAD9, 0x515E_2576_EAA9_AE35,
0xD10D_62C2_0B03_96B3, 0xF3E2_6F9B_3FFA_F25F, 0x94D3_7870_62F1_5F6B, 0xB63C_7529_5608_3B87,
0x5AB1_57A6_D8E6_0503, 0x785E_5AFF_EC1F_61EF, 0x1F6F_4D14_B114_CCDB, 0x3D80_404D_85ED_A837,
0x54AD_A720_03C6_AF56, 0x7642_AA79_373F_CBBA, 0x1173_BD92_6A34_668E, 0x339C_B0CB_5ECD_0262,
0xDF11_9244_D023_3CE6, 0xFDFE_9F1D_E4DA_580A, 0x9ACF_88F6_B9D1_F53E, 0xB820_85AF_8D28_91D2,
0x4894_462D_B587_FBFC, 0x6A7B_4B74_817E_9F10, 0x0D4A_5C9F_DC75_3224, 0x2FA5_51C6_E88C_56C8,
0xC328_7349_6662_684C, 0xE1C7_7E10_529B_0CA0, 0x86F6_69FB_0F90_A194, 0xA419_64A2_3B69_C578,
0xCD34_83CF_BD42_C219, 0xEFDB_8E96_89BB_A6F5, 0x88EA_997D_D4B0_0BC1, 0xAA05_9424_E049_6F2D,
0x4688_B6AB_6EA7_51A9, 0x6467_BBF2_5A5E_3545, 0x0356_AC19_0755_9871, 0x21B9_A140_33AC_FC9D,
0x70E7_8436_D905_52A8, 0x5208_896F_EDFC_3644, 0x3539_9E84_B0F7_9B70, 0x17D6_93DD_840E_FF9C,
0xFB5B_B152_0AE0_C118, 0xD9B4_BC0B_3E19_A5F4, 0xBE85_ABE0_6312_08C0, 0x9C6A_A6B9_57EB_6C2C,
0xF547_41D4_D1C0_6B4D, 0xD7A8_4C8D_E539_0FA1, 0xB099_5B66_B832_A295, 0x9276_563F_8CCB_C679,
0x7EFB_74B0_0225_F8FD, 0x5C14_79E9_36DC_9C11, 0x3B25_6E02_6BD7_3125, 0x19CA_635B_5F2E_55C9,
0xE97E_A0D9_6781_3FE7, 0xCB91_AD80_5378_5B0B, 0xACA0_BA6B_0E73_F63F, 0x8E4F_B732_3A8A_92D3,
0x62C2_95BD_B464_AC57, 0x402D_98E4_809D_C8BB, 0x271C_8F0F_DD96_658F, 0x05F3_8256_E96F_0163,
0x6CDE_653B_6F44_0602, 0x4E31_6862_5BBD_62EE, 0x2900_7F89_06B6_CFDA, 0x0BEF_72D0_324F_AB36,
0xE762_505F_BCA1_95B2, 0xC58D_5D06_8858_F15E, 0xA2BC_4AED_D553_5C6A, 0x8053_47B4_E1AA_3886,
0x30C2_6AAF_B909_33E3, 0x122D_67F6_8DF0_570F, 0x751C_701D_D0FB_FA3B, 0x57F3_7D44_E402_9ED7,
0xBB7E_5FCB_6AEC_A053, 0x9991_5292_5E15_C4BF, 0xFEA0_4579_031E_698B, 0xDC4F_4820_37E7_0D67,
0xB562_AF4D_B1CC_0A06, 0x978D_A214_8535_6EEA, 0xF0BC_B5FF_D83E_C3DE, 0xD253_B8A6_ECC7_A732,
0x3EDE_9A29_6229_99B6, 0x1C31_9770_56D0_FD5A, 0x7B00_809B_0BDB_506E, 0x59EF_8DC2_3F22_3482,
0xA95B_4E40_078D_5EAC, 0x8BB4_4319_3374_3A40, 0xEC85_54F2_6E7F_9774, 0xCE6A_59AB_5A86_F398,
0x22E7_7B24_D468_CD1C, 0x0008_767D_E091_A9F0, 0x6739_6196_BD9A_04C4, 0x45D6_6CCF_8963_6028,
0x2CFB_8BA2_0F48_6749, 0x0E14_86FB_3BB1_03A5, 0x6925_9110_66BA_AE91, 0x4BCA_9C49_5243_CA7D,
0xA747_BEC6_DCAD_F4F9, 0x85A8_B39F_E854_9015, 0xE299_A474_B55F_3D21, 0xC076_A92D_81A6_59CD,
0x9128_8C5B_6B0F_F7F8, 0xB3C7_8102_5FF6_9314, 0xD4F6_96E9_02FD_3E20, 0xF619_9BB0_3604_5ACC,
0x1A94_B93F_B8EA_6448, 0x387B_B466_8C13_00A4, 0x5F4A_A38D_D118_AD90, 0x7DA5_AED4_E5E1_C97C,
0x1488_49B9_63CA_CE1D, 0x3667_44E0_5733_AAF1, 0x5156_530B_0A38_07C5, 0x73B9_5E52_3EC1_6329,
0x9F34_7CDD_B02F_5DAD, 0xBDDB_7184_84D6_3941, 0xDAEA_666F_D9DD_9475, 0xF805_6B36_ED24_F099,
0x08B1_A8B4_D58B_9AB7, 0x2A5E_A5ED_E172_FE5B, 0x4D6F_B206_BC79_536F, 0x6F80_BF5F_8880_3783,
0x830D_9DD0_066E_0907, 0xA1E2_9089_3297_6DEB, 0xC6D3_8762_6F9C_C0DF, 0xE43C_8A3B_5B65_A433,
0x8D11_6D56_DD4E_A352, 0xAFFE_600F_E9B7_C7BE, 0xC8CF_77E4_B4BC_6A8A, 0xEA20_7ABD_8045_0E66,
0x06AD_5832_0EAB_30E2, 0x2442_556B_3A52_540E, 0x4373_4280_6759_F93A, 0x619C_4FD9_53A0_9DD6,
0xE1CF_086D_B20A_A550, 0xC320_0534_86F3_C1BC, 0xA411_12DF_DBF8_6C88, 0x86FE_1F86_EF01_0864,
0x6A73_3D09_61EF_36E0, 0x489C_3050_5516_520C, 0x2FAD_27BB_081D_FF38, 0x0D42_2AE2_3CE4_9BD4,
0x646F_CD8F_BACF_9CB5, 0x4680_C0D6_8E36_F859, 0x21B1_D73D_D33D_556D, 0x035E_DA64_E7C4_3181,
0xEFD3_F8EB_692A_0F05, 0xCD3C_F5B2_5DD3_6BE9, 0xAA0D_E259_00D8_C6DD, 0x88E2_EF00_3421_A231,
0x7856_2C82_0C8E_C81F, 0x5AB9_21DB_3877_ACF3, 0x3D88_3630_657C_01C7, 0x1F67_3B69_5185_652B,
0xF3EA_19E6_DF6B_5BAF, 0xD105_14BF_EB92_3F43, 0xB634_0354_B699_9277, 0x94DB_0E0D_8260_F69B,
0xFDF6_E960_044B_F1FA, 0xDF19_E439_30B2_9516, 0xB828_F3D2_6DB9_3822, 0x9AC7_FE8B_5940_5CCE,
0x764A_DC04_D7AE_624A, 0x54A5_D15D_E357_06A6, 0x3394_C6B6_BE5C_AB92, 0x117B_CBEF_8AA5_CF7E,
0x4025_EE99_600C_614B, 0x62CA_E3C0_54F5_05A7, 0x05FB_F42B_09FE_A893, 0x2714_F972_3D07_CC7F,
0xCB99_DBFD_B3E9_F2FB, 0xE976_D6A4_8710_9617, 0x8E47_C14F_DA1B_3B23, 0xACA8_CC16_EEE2_5FCF,
0xC585_2B7B_68C9_58AE, 0xE76A_2622_5C30_3C42, 0x805B_31C9_013B_9176, 0xA2B4_3C90_35C2_F59A,
0x4E39_1E1F_BB2C_CB1E, 0x6CD6_1346_8FD5_AFF2, 0x0BE7_04AD_D2DE_02C6, 0x2908_09F4_E627_662A,
0xD9BC_CA76_DE88_0C04, 0xFB53_C72F_EA71_68E8, 0x9C62_D0C4_B77A_C5DC, 0xBE8D_DD9D_8383_A130,
0x5200_FF12_0D6D_9FB4, 0x70EF_F24B_3994_FB58, 0x17DE_E5A0_649F_566C, 0x3531_E8F9_5066_3280,
0x5C1C_0F94_D64D_35E1, 0x7EF3_02CD_E2B4_510D, 0x19C2_1526_BFBF_FC39, 0x3B2D_187F_8B46_98D5,
0xD7A0_3AF0_05A8_A651, 0xF54F_37A9_3151_C2BD, 0x927E_2042_6C5A_6F89, 0xB091_2D1B_58A3_0B65,
],[
0x0000_0000_0000_0000, 0xDABE_95AF_C787_5F40, 0x27A5_8474_2000_A005, 0xFD1B_11DB_E787_FF45,
0x4F4B_08E8_4001_400A, 0x95F5_9D47_8786_1F4A, 0x68EE_8C9C_6001_E00F, 0xB250_1933_A786_BF4F,
0x9E96_11D0_8002_8014, 0x4428_847F_4785_DF54, 0xB933_95A4_A002_2011, 0x638D_000B_6785_7F51,
0xD1DD_1938_C003_C01E, 0x0B63_8C97_0784_9F5E, 0xF678_9D4C_E003_601B, 0x2CC6_08E3_2784_3F5B,
0xAFF4_8C8A_AF0B_1EAD, 0x754A_1925_688C_41ED, 0x8851_08FE_8F0B_BEA8, 0x52EF_9D51_488C_E1E8,
0xE0BF_8462_EF0A_5EA7, 0x3A01_11CD_288D_01E7, 0xC71A_0016_CF0A_FEA2, 0x1DA4_95B9_088D_A1E2,
0x3162_9D5A_2F09_9EB9, 0xEBDC_08F5_E88E_C1F9, 0x16C7_192E_0F09_3EBC, 0xCC79_8C81_C88E_61FC,
0x7E29_95B2_6F08_DEB3, 0xA497_001D_A88F_81F3, 0x598C_11C6_4F08_7EB6, 0x8332_8469_888F_21F6,
0xCD31_B63E_F118_23DF, 0x178F_2391_369F_7C9F, 0xEA94_324A_D118_83DA, 0x302A_A7E5_169F_DC9A,
0x827A_BED6_B119_63D5, 0x58C4_2B79_769E_3C95, 0xA5DF_3AA2_9119_C3D0, 0x7F61_AF0D_569E_9C90,
0x53A7_A7EE_711A_A3CB, 0x8919_3241_B69D_FC8B, 0x7402_239A_511A_03CE, 0xAEBC_B635_969D_5C8E,
0x1CEC_AF06_311B_E3C1, 0xC652_3AA9_F69C_BC81, 0x3B49_2B72_111B_43C4, 0xE1F7_BEDD_D69C_1C84,
0x62C5_3AB4_5E13_3D72, 0xB87B_AF1B_9994_6232, 0x4560_BEC0_7E13_9D77, 0x9FDE_2B6F_B994_C237,
0x2D8E_325C_1E12_7D78, 0xF730_A7F3_D995_2238, 0x0A2B_B628_3E12_DD7D, 0xD095_2387_F995_823D,
0xFC53_2B64_DE11_BD66, 0x26ED_BECB_1996_E226, 0xDBF6_AF10_FE11_1D63, 0x0148_3ABF_3996_4223,
0xB318_238C_9E10_FD6C, 0x69A6_B623_5997_A22C, 0x94BD_A7F8_BE10_5D69, 0x4E03_3257_7997_0229,
0x08BB_C356_4D3E_593B, 0xD205_56F9_8AB9_067B, 0x2F1E_4722_6D3E_F93E, 0xF5A0_D28D_AAB9_A67E,
0x47F0_CBBE_0D3F_1931, 0x9D4E_5E11_CAB8_4671, 0x6055_4FCA_2D3F_B934, 0xBAEB_DA65_EAB8_E674,
0x962D_D286_CD3C_D92F, 0x4C93_4729_0ABB_866F, 0xB188_56F2_ED3C_792A, 0x6B36_C35D_2ABB_266A,
0xD966_DA6E_8D3D_9925, 0x03D8_4FC1_4ABA_C665, 0xFEC3_5E1A_AD3D_3920, 0x247D_CBB5_6ABA_6660,
0xA74F_4FDC_E235_4796, 0x7DF1_DA73_25B2_18D6, 0x80EA_CBA8_C235_E793, 0x5A54_5E07_05B2_B8D3,
0xE804_4734_A234_079C, 0x32BA_D29B_65B3_58DC, 0xCFA1_C340_8234_A799, 0x151F_56EF_45B3_F8D9,
0x39D9_5E0C_6237_C782, 0xE367_CBA3_A5B0_98C2, 0x1E7C_DA78_4237_6787, 0xC4C2_4FD7_85B0_38C7,
0x7692_56E4_2236_8788, 0xAC2C_C34B_E5B1_D8C8, 0x5137_D290_0236_278D, 0x8B89_473F_C5B1_78CD,
0xC58A_7568_BC26_7AE4, 0x1F34_E0C7_7BA1_25A4, 0xE22F_F11C_9C26_DAE1, 0x3891_64B3_5BA1_85A1,
0x8AC1_7D80_FC27_3AEE, 0x507F_E82F_3BA0_65AE, 0xAD64_F9F4_DC27_9AEB, 0x77DA_6C5B_1BA0_C5AB,
0x5B1C_64B8_3C24_FAF0, 0x81A2_F117_FBA3_A5B0, 0x7CB9_E0CC_1C24_5AF5, 0xA607_7563_DBA3_05B5,
0x1457_6C50_7C25_BAFA, 0xCEE9_F9FF_BBA2_E5BA, 0x33F2_E824_5C25_1AFF, 0xE94C_7D8B_9BA2_45BF,
0x6A7E_F9E2_132D_6449, 0xB0C0_6C4D_D4AA_3B09, 0x4DDB_7D96_332D_C44C, 0x9765_E839_F4AA_9B0C,
0x2535_F10A_532C_2443, 0xFF8B_64A5_94AB_7B03, 0x0290_757E_732C_8446, 0xD82E_E0D1_B4AB_DB06,
0xF4E8_E832_932F_E45D, 0x2E56_7D9D_54A8_BB1D, 0xD34D_6C46_B32F_4458, 0x09F3_F9E9_74A8_1B18,
0xBBA3_E0DA_D32E_A457, 0x611D_7575_14A9_FB17, 0x9C06_64AE_F32E_0452, 0x46B8_F101_34A9_5B12,
0x1177_86AC_9A7C_B276, 0xCBC9_1303_5DFB_ED36, 0x36D2_02D8_BA7C_1273, 0xEC6C_9777_7DFB_4D33,
0x5E3C_8E44_DA7D_F27C, 0x8482_1BEB_1DFA_AD3C, 0x7999_0A30_FA7D_5279, 0xA327_9F9F_3DFA_0D39,
0x8FE1_977C_1A7E_3262, 0x555F_02D3_DDF9_6D22, 0xA844_1308_3A7E_9267, 0x72FA_86A7_FDF9_CD27,
0xC0AA_9F94_5A7F_7268, 0x1A14_0A3B_9DF8_2D28, 0xE70F_1BE0_7A7F_D26D, 0x3DB1_8E4F_BDF8_8D2D,
0xBE83_0A26_3577_ACDB, 0x643D_9F89_F2F0_F39B, 0x9926_8E52_1577_0CDE, 0x4398_1BFD_D2F0_539E,
0xF1C8_02CE_7576_ECD1, 0x2B76_9761_B2F1_B391, 0xD66D_86BA_5576_4CD4, 0x0CD3_1315_92F1_1394,
0x2015_1BF6_B575_2CCF, 0xFAAB_8E59_72F2_738F, 0x07B0_9F82_9575_8CCA, 0xDD0E_0A2D_52F2_D38A,
0x6F5E_131E_F574_6CC5, 0xB5E0_86B1_32F3_3385, 0x48FB_976A_D574_CCC0, 0x9245_02C5_12F3_9380,
0xDC46_3092_6B64_91A9, 0x06F8_A53D_ACE3_CEE9, 0xFBE3_B4E6_4B64_31AC, 0x215D_2149_8CE3_6EEC,
0x930D_387A_2B65_D1A3, 0x49B3_ADD5_ECE2_8EE3, 0xB4A8_BC0E_0B65_71A6, 0x6E16_29A1_CCE2_2EE6,
0x42D0_2142_EB66_11BD, 0x986E_B4ED_2CE1_4EFD, 0x6575_A536_CB66_B1B8, 0xBFCB_3099_0CE1_EEF8,
0x0D9B_29AA_AB67_51B7, 0xD725_BC05_6CE0_0EF7, 0x2A3E_ADDE_8B67_F1B2, 0xF080_3871_4CE0_AEF2,
0x73B2_BC18_C46F_8F04, 0xA90C_29B7_03E8_D044, 0x5417_386C_E46F_2F01, 0x8EA9_ADC3_23E8_7041,
0x3CF9_B4F0_846E_CF0E, 0xE647_215F_43E9_904E, 0x1B5C_3084_A46E_6F0B, 0xC1E2_A52B_63E9_304B,
0xED24_ADC8_446D_0F10, 0x379A_3867_83EA_5050, 0xCA81_29BC_646D_AF15, 0x103F_BC13_A3EA_F055,
0xA26F_A520_046C_4F1A, 0x78D1_308F_C3EB_105A, 0x85CA_2154_246C_EF1F, 0x5F74_B4FB_E3EB_B05F,
0x19CC_45FA_D742_EB4D, 0xC372_D055_10C5_B40D, 0x3E69_C18E_F742_4B48, 0xE4D7_5421_30C5_1408,
0x5687_4D12_9743_AB47, 0x8C39_D8BD_50C4_F407, 0x7122_C966_B743_0B42, 0xAB9C_5CC9_70C4_5402,
0x875A_542A_5740_6B59, 0x5DE4_C185_90C7_3419, 0xA0FF_D05E_7740_CB5C, 0x7A41_45F1_B0C7_941C,
0xC811_5CC2_1741_2B53, 0x12AF_C96D_D0C6_7413, 0xEFB4_D8B6_3741_8B56, 0x350A_4D19_F0C6_D416,
0xB638_C970_7849_F5E0, 0x6C86_5CDF_BFCE_AAA0, 0x919D_4D04_5849_55E5, 0x4B23_D8AB_9FCE_0AA5,
0xF973_C198_3848_B5EA, 0x23CD_5437_FFCF_EAAA, 0xDED6_45EC_1848_15EF, 0x0468_D043_DFCF_4AAF,
0x28AE_D8A0_F84B_75F4, 0xF210_4D0F_3FCC_2AB4, 0x0F0B_5CD4_D84B_D5F1, 0xD5B5_C97B_1FCC_8AB1,
0x67E5_D048_B84A_35FE, 0xBD5B_45E7_7FCD_6ABE, 0x4040_543C_984A_95FB, 0x9AFE_C193_5FCD_CABB,
0xD4FD_F3C4_265A_C892, 0x0E43_666B_E1DD_97D2, 0xF358_77B0_065A_6897, 0x29E6_E21F_C1DD_37D7,
0x9BB6_FB2C_665B_8898, 0x4108_6E83_A1DC_D7D8, 0xBC13_7F58_465B_289D, 0x66AD_EAF7_81DC_77DD,
0x4A6B_E214_A658_4886, 0x90D5_77BB_61DF_17C6, 0x6DCE_6660_8658_E883, 0xB770_F3CF_41DF_B7C3,
0x0520_EAFC_E659_088C, 0xDF9E_7F53_21DE_57CC, 0x2285_6E88_C659_A889, 0xF83B_FB27_01DE_F7C9,
0x7B09_7F4E_8951_D63F, 0xA1B7_EAE1_4ED6_897F, 0x5CAC_FB3A_A951_763A, 0x8612_6E95_6ED6_297A,
0x3442_77A6_C950_9635, 0xEEFC_E209_0ED7_C975, 0x13E7_F3D2_E950_3630, 0xC959_667D_2ED7_6970,
0xE59F_6E9E_0953_562B, 0x3F21_FB31_CED4_096B, 0xC23A_EAEA_2953_F62E, 0x1884_7F45_EED4_A96E,
0xAAD4_6676_4952_1621, 0x706A_F3D9_8ED5_4961, 0x8D71_E202_6952_B624, 0x57CF_77AD_AED5_E964,
]]