• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2020 The Abseil Authors
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //     https://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #include "absl/hash/internal/low_level_hash.h"
16 
17 #include <cinttypes>
18 
19 #include "gmock/gmock.h"
20 #include "gtest/gtest.h"
21 #include "absl/strings/escaping.h"
22 
23 #define UPDATE_GOLDEN 0
24 
25 namespace {
26 
27 static const uint64_t kSalt[5] = {0xa0761d6478bd642f, 0xe7037ed1a0b428dbl,
28                                   0x8ebc6af09c88c6e3, 0x589965cc75374cc3l,
29                                   0x1d8e4e27c47d124f};
30 
TEST(LowLevelHashTest,VerifyGolden)31 TEST(LowLevelHashTest, VerifyGolden) {
32   constexpr size_t kNumGoldenOutputs = 134;
33   static struct {
34     absl::string_view base64_data;
35     uint64_t seed;
36   } cases[] = {
37       {"", uint64_t{0xec42b7ab404b8acb}},
38       {"ICAg", uint64_t{0}},
39       {"YWFhYQ==", uint64_t{0}},
40       {"AQID", uint64_t{0}},
41       {"AQIDBA==", uint64_t{0}},
42       {"dGhpcmRfcGFydHl8d3loYXNofDY0", uint64_t{0}},
43       {"Zw==", uint64_t{0xeeee074043a3ee0f}},
44       {"xmk=", uint64_t{0x857902089c393de}},
45       {"c1H/", uint64_t{0x993df040024ca3af}},
46       {"SuwpzQ==", uint64_t{0xc4e4c2acea740e96}},
47       {"uqvy++M=", uint64_t{0x6a214b3db872d0cf}},
48       {"RnzCVPgb", uint64_t{0x44343db6a89dba4d}},
49       {"6OeNdlouYw==", uint64_t{0x77b5d6d1ae1dd483}},
50       {"M5/JmmYyDbc=", uint64_t{0x89ab8ecb44d221f1}},
51       {"MVijWiVdBRdY", uint64_t{0x60244b17577ca81b}},
52       {"6V7Uq7LNxpu0VA==", uint64_t{0x59a08dcee0717067}},
53       {"EQ6CdEEhPdyHcOk=", uint64_t{0xf5f20db3ade57396}},
54       {"PqFB4fxnPgF+l+rc", uint64_t{0xbf8dee0751ad3efb}},
55       {"a5aPOFwq7LA7+zKvPA==", uint64_t{0x6b7a06b268d63e30}},
56       {"VOwY21wCGv5D+/qqOvs=", uint64_t{0xb8c37f0ae0f54c82}},
57       {"KdHmBTx8lHXYvmGJ+Vy7", uint64_t{0x9fcbed0c38e50eef}},
58       {"qJkPlbHr8bMF7/cA6aE65Q==", uint64_t{0x2af4bade1d8e3a1d}},
59       {"ygvL0EhHZL0fIx6oHHtkxRQ=", uint64_t{0x714e3aa912da2f2c}},
60       {"c1rFXkt5YztwZCQRngncqtSs", uint64_t{0xf5ee75e3cbb82c1c}},
61       {"8hsQrzszzeNQSEcVXLtvIhm6mw==", uint64_t{0x620e7007321b93b9}},
62       {"ffUL4RocfyP4KfikGxO1yk7omDI=", uint64_t{0xc08528cac2e551fc}},
63       {"OOB5TT00vF9Od/rLbAWshiErqhpV", uint64_t{0x6a1debf9cc3ad39}},
64       {"or5wtXM7BFzTNpSzr+Lw5J5PMhVJ/Q==", uint64_t{0x7e0a3c88111fc226}},
65       {"gk6pCHDUsoopVEiaCrzVDhioRKxb844=", uint64_t{0x1301fef15df39edb}},
66       {"TNctmwlC5QbEM6/No4R/La3UdkfeMhzs", uint64_t{0x64e181f3d5817ab}},
67       {"SsQw9iAjhWz7sgcE9OwLuSC6hsM+BfHs2Q==", uint64_t{0xafafc44961078ecb}},
68       {"ZzO3mVCj4xTT2TT3XqDyEKj2BZQBvrS8RHg=", uint64_t{0x4f7bb45549250094}},
69       {"+klp5iPQGtppan5MflEls0iEUzqU+zGZkDJX", uint64_t{0xa30061abaa2818c}},
70       {"RO6bvOnlJc8I9eniXlNgqtKy0IX6VNg16NRmgg==",
71        uint64_t{0xd902ee3e44a5705f}},
72       {"ZJjZqId1ZXBaij9igClE3nyliU5XWdNRrayGlYA=", uint64_t{0x316d36da516f583}},
73       {"7BfkhfGMDGbxfMB8uyL85GbaYQtjr2K8g7RpLzr/",
74        uint64_t{0x402d83f9f834f616}},
75       {"rycWk6wHH7htETQtje9PidS2YzXBx+Qkg2fY7ZYS7A==",
76        uint64_t{0x9c604164c016b72c}},
77       {"RTkC2OUK+J13CdGllsH0H5WqgspsSa6QzRZouqx6pvI=",
78        uint64_t{0x3f4507e01f9e73ba}},
79       {"tKjKmbLCNyrLCM9hycOAXm4DKNpM12oZ7dLTmUx5iwAi",
80        uint64_t{0xc3fe0d5be8d2c7c7}},
81       {"VprUGNH+5NnNRaORxgH/ySrZFQFDL+4VAodhfBNinmn8cg==",
82        uint64_t{0x531858a40bfa7ea1}},
83       {"gc1xZaY+q0nPcUvOOnWnT3bqfmT/geth/f7Dm2e/DemMfk4=",
84        uint64_t{0x86689478a7a7e8fa}},
85       {"Mr35fIxqx1ukPAL0su1yFuzzAU3wABCLZ8+ZUFsXn47UmAph",
86        uint64_t{0x4ec948b8e7f27288}},
87       {"A9G8pw2+m7+rDtWYAdbl8tb2fT7FFo4hLi2vAsa5Y8mKH3CX3g==",
88        uint64_t{0xce46c7213c10032}},
89       {"DFaJGishGwEHDdj9ixbCoaTjz9KS0phLNWHVVdFsM93CvPft3hM=",
90        uint64_t{0xf63e96ee6f32a8b6}},
91       {"7+Ugx+Kr3aRNgYgcUxru62YkTDt5Hqis+2po81hGBkcrJg4N0uuy",
92        uint64_t{0x1cfe85e65fc5225}},
93       {"H2w6O8BUKqu6Tvj2xxaecxEI2wRgIgqnTTG1WwOgDSINR13Nm4d4Vg==",
94        uint64_t{0x45c474f1cee1d2e8}},
95       {"1XBMnIbqD5jy65xTDaf6WtiwtdtQwv1dCVoqpeKj+7cTR1SaMWMyI04=",
96        uint64_t{0x6e024e14015f329c}},
97       {"znZbdXG2TSFrKHEuJc83gPncYpzXGbAebUpP0XxzH0rpe8BaMQ17nDbt",
98        uint64_t{0x760c40502103ae1c}},
99       {"ylu8Atu13j1StlcC1MRMJJXIl7USgDDS22HgVv0WQ8hx/8pNtaiKB17hCQ==",
100        uint64_t{0x17fd05c3c560c320}},
101       {"M6ZVVzsd7vAvbiACSYHioH/440dp4xG2mLlBnxgiqEvI/aIEGpD0Sf4VS0g=",
102        uint64_t{0x8b34200a6f8e90d9}},
103       {"li3oFSXLXI+ubUVGJ4blP6mNinGKLHWkvGruun85AhVn6iuMtocbZPVhqxzn",
104        uint64_t{0x6be89e50818bdf69}},
105       {"kFuQHuUCqBF3Tc3hO4dgdIp223ShaCoog48d5Do5zMqUXOh5XpGK1t5XtxnfGA==",
106        uint64_t{0xfb389773315b47d8}},
107       {"jWmOad0v0QhXVJd1OdGuBZtDYYS8wBVHlvOeTQx9ZZnm8wLEItPMeihj72E0nWY=",
108        uint64_t{0x4f2512a23f61efee}},
109       {"z+DHU52HaOQdW4JrZwDQAebEA6rm13Zg/9lPYA3txt3NjTBqFZlOMvTRnVzRbl23",
110        uint64_t{0x59ccd92fc16c6fda}},
111       {"MmBiGDfYeTayyJa/tVycg+rN7f9mPDFaDc+23j0TlW9094er0ADigsl4QX7V3gG/qw==",
112        uint64_t{0x25c5a7f5bd330919}},
113       {"774RK+9rOL4iFvs1q2qpo/JVc/I39buvNjqEFDtDvyoB0FXxPI2vXqOrk08VPfIHkmU=",
114        uint64_t{0x51df4174d34c97d7}},
115       {"+slatXiQ7/2lK0BkVUI1qzNxOOLP3I1iK6OfHaoxgqT63FpzbElwEXSwdsryq3UlHK0I",
116        uint64_t{0x80ce6d76f89cb57}},
117       {"64mVTbQ47dHjHlOHGS/hjJwr/"
118        "K2frCNpn87exOqMzNUVYiPKmhCbfS7vBUce5tO6Ec9osQ==",
119        uint64_t{0x20961c911965f684}},
120       {"fIsaG1r530SFrBqaDj1kqE0AJnvvK8MNEZbII2Yw1OK77v0V59xabIh0B5axaz/"
121        "+a2V5WpA=",
122        uint64_t{0x4e5b926ec83868e7}},
123       {"PGih0zDEOWCYGxuHGDFu9Ivbff/"
124        "iE7BNUq65tycTR2R76TerrXALRosnzaNYO5fjFhTi+CiS",
125        uint64_t{0x3927b30b922eecef}},
126       {"RnpA/"
127        "zJnEnnLjmICORByRVb9bCOgxF44p3VMiW10G7PvW7IhwsWajlP9kIwNA9FjAD2GoQHk2Q="
128        "=",
129        uint64_t{0xbd0291284a49b61c}},
130       {"qFklMceaTHqJpy2qavJE+EVBiNFOi6OxjOA3LeIcBop1K7w8xQi3TrDk+"
131        "BrWPRIbfprszSaPfrI=",
132        uint64_t{0x73a77c575bcc956}},
133       {"cLbfUtLl3EcQmITWoTskUR8da/VafRDYF/ylPYwk7/"
134        "zazk6ssyrzxMN3mmSyvrXR2yDGNZ3WDrTT",
135        uint64_t{0x766a0e2ade6d09a6}},
136       {"s/"
137        "Jf1+"
138        "FbsbCpXWPTUSeWyMH6e4CvTFvPE5Fs6Z8hvFITGyr0dtukHzkI84oviVLxhM1xMxrMAy1db"
139        "w==",
140        uint64_t{0x2599f4f905115869}},
141       {"FvyQ00+j7nmYZVQ8hI1Edxd0AWplhTfWuFGiu34AK5X8u2hLX1bE97sZM0CmeLe+"
142        "7LgoUT1fJ/axybE=",
143        uint64_t{0xd8256e5444d21e53}},
144       {"L8ncxMaYLBH3g9buPu8hfpWZNlOF7nvWLNv9IozH07uQsIBWSKxoPy8+"
145        "LW4tTuzC6CIWbRGRRD1sQV/4",
146        uint64_t{0xf664a91333fb8dfd}},
147       {"CDK0meI07yrgV2kQlZZ+"
148        "wuVqhc2NmzqeLH7bmcA6kchsRWFPeVF5Wqjjaj556ABeUoUr3yBmfU3kWOakkg==",
149        uint64_t{0x9625b859be372cd1}},
150       {"d23/vc5ONh/"
151        "HkMiq+gYk4gaCNYyuFKwUkvn46t+dfVcKfBTYykr4kdvAPNXGYLjM4u1YkAEFpJP+"
152        "nX7eOvs=",
153        uint64_t{0x7b99940782e29898}},
154       {"NUR3SRxBkxTSbtQORJpu/GdR6b/h6sSGfsMj/KFd99ahbh+9r7LSgSGmkGVB/"
155        "mGoT0pnMTQst7Lv2q6QN6Vm",
156        uint64_t{0x4fe12fa5383b51a8}},
157       {"2BOFlcI3Z0RYDtS9T9Ie9yJoXlOdigpPeeT+CRujb/"
158        "O39Ih5LPC9hP6RQk1kYESGyaLZZi3jtabHs7DiVx/VDg==",
159        uint64_t{0xe2ccb09ac0f5b4b6}},
160       {"FF2HQE1FxEvWBpg6Z9zAMH+Zlqx8S1JD/"
161        "wIlViL6ZDZY63alMDrxB0GJQahmAtjlm26RGLnjW7jmgQ4Ie3I+014=",
162        uint64_t{0x7d0a37adbd7b753b}},
163       {"tHmO7mqVL/PX11nZrz50Hc+M17Poj5lpnqHkEN+4bpMx/"
164        "YGbkrGOaYjoQjgmt1X2QyypK7xClFrjeWrCMdlVYtbW",
165        uint64_t{0xd3ae96ef9f7185f2}},
166       {"/WiHi9IQcxRImsudkA/KOTqGe8/"
167        "gXkhKIHkjddv5S9hi02M049dIK3EUyAEjkjpdGLUs+BN0QzPtZqjIYPOgwsYE9g==",
168        uint64_t{0x4fb88ea63f79a0d8}},
169       {"qds+1ExSnU11L4fTSDz/QE90g4Jh6ioqSh3KDOTOAo2pQGL1k/"
170        "9CCC7J23YF27dUTzrWsCQA2m4epXoCc3yPHb3xElA=",
171        uint64_t{0xed564e259bb5ebe9}},
172       {"8FVYHx40lSQPTHheh08Oq0/"
173        "pGm2OlG8BEf8ezvAxHuGGdgCkqpXIueJBF2mQJhTfDy5NncO8ntS7vaKs7sCNdDaNGOEi",
174        uint64_t{0x3e3256b60c428000}},
175       {"4ZoEIrJtstiCkeew3oRzmyJHVt/pAs2pj0HgHFrBPztbQ10NsQ/"
176        "lM6DM439QVxpznnBSiHMgMQJhER+70l72LqFTO1JiIQ==",
177        uint64_t{0xfb05bad59ec8705}},
178       {"hQPtaYI+wJyxXgwD5n8jGIKFKaFA/"
179        "P83KqCKZfPthnjwdOFysqEOYwAaZuaaiv4cDyi9TyS8hk5cEbNP/jrI7q6pYGBLbsM=",
180        uint64_t{0xafdc251dbf97b5f8}},
181       {"S4gpMSKzMD7CWPsSfLeYyhSpfWOntyuVZdX1xSBjiGvsspwOZcxNKCRIOqAA0moUfOh3I5+"
182        "juQV4rsqYElMD/gWfDGpsWZKQ",
183        uint64_t{0x10ec9c92ddb5dcbc}},
184       {"oswxop+"
185        "bthuDLT4j0PcoSKby4LhF47ZKg8K17xxHf74UsGCzTBbOz0MM8hQEGlyqDT1iUiAYnaPaUp"
186        "L2mRK0rcIUYA4qLt5uOw==",
187        uint64_t{0x9a767d5822c7dac4}},
188       {"0II/"
189        "697p+"
190        "BtLSjxj5989OXI004TogEb94VUnDzOVSgMXie72cuYRvTFNIBgtXlKfkiUjeqVpd4a+"
191        "n5bxNOD1TGrjQtzKU5r7obo=",
192        uint64_t{0xee46254080d6e2db}},
193       {"E84YZW2qipAlMPmctrg7TKlwLZ68l4L+c0xRDUfyyFrA4MAti0q9sHq3TDFviH0Y+"
194        "Kq3tEE5srWFA8LM9oomtmvm5PYxoaarWPLc",
195        uint64_t{0xbbb669588d8bf398}},
196       {"x3pa4HIElyZG0Nj7Vdy9IdJIR4izLmypXw5PCmZB5y68QQ4uRaVVi3UthsoJROvbjDJkP2D"
197        "Q6L/eN8pFeLFzNPKBYzcmuMOb5Ull7w==",
198        uint64_t{0xdc2afaa529beef44}},
199       {"jVDKGYIuWOP/"
200        "QKLdd2wi8B2VJA8Wh0c8PwrXJVM8FOGM3voPDVPyDJOU6QsBDPseoR8uuKd19OZ/"
201        "zAvSCB+zlf6upAsBlheUKgCfKww=",
202        uint64_t{0xf1f67391d45013a8}},
203       {"mkquunhmYe1aR2wmUz4vcvLEcKBoe6H+kjUok9VUn2+eTSkWs4oDDtJvNCWtY5efJwg/"
204        "j4PgjRYWtqnrCkhaqJaEvkkOwVfgMIwF3e+d",
205        uint64_t{0x16fce2b8c65a3429}},
206       {"fRelvKYonTQ+s+rnnvQw+JzGfFoPixtna0vzcSjiDqX5s2Kg2//"
207        "UGrK+AVCyMUhO98WoB1DDbrsOYSw2QzrcPe0+3ck9sePvb+Q/IRaHbw==",
208        uint64_t{0xf4b096699f49fe67}},
209       {"DUwXFJzagljo44QeJ7/"
210        "6ZKw4QXV18lhkYT2jglMr8WB3CHUU4vdsytvw6AKv42ZcG6fRkZkq9fpnmXy6xG0aO3WPT1"
211        "eHuyFirAlkW+zKtwg=",
212        uint64_t{0xca584c4bc8198682}},
213       {"cYmZCrOOBBongNTr7e4nYn52uQUy2mfe48s50JXx2AZ6cRAt/"
214        "xRHJ5QbEoEJOeOHsJyM4nbzwFm++SlT6gFZZHJpkXJ92JkR86uS/eV1hJUR",
215        uint64_t{0xed269fc3818b6aad}},
216       {"EXeHBDfhwzAKFhsMcH9+2RHwV+mJaN01+9oacF6vgm8mCXRd6jeN9U2oAb0of5c5cO4i+"
217        "Vb/LlHZSMI490SnHU0bejhSCC2gsC5d2K30ER3iNA==",
218        uint64_t{0x33f253cbb8fe66a8}},
219       {"FzkzRYoNjkxFhZDso94IHRZaJUP61nFYrh5MwDwv9FNoJ5jyNCY/"
220        "eazPZk+tbmzDyJIGw2h3GxaWZ9bSlsol/vK98SbkMKCQ/wbfrXRLcDzdd/8=",
221        uint64_t{0xd0b76b2c1523d99c}},
222       {"Re4aXISCMlYY/XsX7zkIFR04ta03u4zkL9dVbLXMa/q6hlY/CImVIIYRN3VKP4pnd0AUr/"
223        "ugkyt36JcstAInb4h9rpAGQ7GMVOgBniiMBZ/MGU7H",
224        uint64_t{0xfd28f0811a2a237f}},
225       {"ueLyMcqJXX+MhO4UApylCN9WlTQ+"
226        "ltJmItgG7vFUtqs2qNwBMjmAvr5u0sAKd8jpzV0dDPTwchbIeAW5zbtkA2NABJV6hFM48ib"
227        "4/J3A5mseA3cS8w==",
228        uint64_t{0x6261fb136482e84}},
229       {"6Si7Yi11L+jZMkwaN+GUuzXMrlvEqviEkGOilNq0h8TdQyYKuFXzkYc/"
230        "q74gP3pVCyiwz9KpVGMM9vfnq36riMHRknkmhQutxLZs5fbmOgEO69HglCU=",
231        uint64_t{0x458efc750bca7c3a}},
232       {"Q6AbOofGuTJOegPh9Clm/"
233        "9crtUMQqylKrTc1fhfJo1tqvpXxhU4k08kntL1RG7woRnFrVh2UoMrL1kjin+s9CanT+"
234        "y4hHwLqRranl9FjvxfVKm3yvg68",
235        uint64_t{0xa7e69ff84e5e7c27}},
236       {"ieQEbIPvqY2YfIjHnqfJiO1/MIVRk0RoaG/WWi3kFrfIGiNLCczYoklgaecHMm/"
237        "1sZ96AjO+a5stQfZbJQwS7Sc1ODABEdJKcTsxeW2hbh9A6CFzpowP1A==",
238        uint64_t{0x3c59bfd0c29efe9e}},
239       {"zQUv8hFB3zh2GGl3KTvCmnfzE+"
240        "SUgQPVaSVIELFX5H9cE3FuVFGmymkPQZJLAyzC90Cmi8GqYCvPqTuAAB//"
241        "XTJxy4bCcVArgZG9zJXpjowpNBfr3ngWrSE=",
242        uint64_t{0x10befacc6afd298d}},
243       {"US4hcC1+op5JKGC7eIs8CUgInjKWKlvKQkapulxW262E/"
244        "B2ye79QxOexf188u2mFwwe3WTISJHRZzS61IwljqAWAWoBAqkUnW8SHmIDwHUP31J0p5sGd"
245        "P47L",
246        uint64_t{0x41d5320b0a38efa7}},
247       {"9bHUWFna2LNaGF6fQLlkx1Hkt24nrkLE2CmFdWgTQV3FFbUe747SSqYw6ebpTa07MWSpWRP"
248        "sHesVo2B9tqHbe7eQmqYebPDFnNqrhSdZwFm9arLQVs+7a3Ic6A==",
249        uint64_t{0x58db1c7450fe17f3}},
250       {"Kb3DpHRUPhtyqgs3RuXjzA08jGb59hjKTOeFt1qhoINfYyfTt2buKhD6YVffRCPsgK9SeqZ"
251        "qRPJSyaqsa0ovyq1WnWW8jI/NhvAkZTVHUrX2pC+cD3OPYT05Dag=",
252        uint64_t{0x6098c055a335b7a6}},
253       {"gzxyMJIPlU+bJBwhFUCHSofZ/"
254        "319LxqMoqnt3+L6h2U2+ZXJCSsYpE80xmR0Ta77Jq54o92SMH87HV8dGOaCTuAYF+"
255        "lDL42SY1P316Cl0sZTS2ow3ZqwGbcPNs/1",
256        uint64_t{0x1bbacec67845a801}},
257       {"uR7V0TW+FGVMpsifnaBAQ3IGlr1wx5sKd7TChuqRe6OvUXTlD4hKWy8S+"
258        "8yyOw8lQabism19vOQxfmocEOW/"
259        "vzY0pEa87qHrAZy4s9fH2Bltu8vaOIe+agYohhYORQ==",
260        uint64_t{0xc419cfc7442190}},
261       {"1UR5eoo2aCwhacjZHaCh9bkOsITp6QunUxHQ2SfeHv0imHetzt/"
262        "Z70mhyWZBalv6eAx+YfWKCUib2SHDtz/"
263        "A2dc3hqUWX5VfAV7FQsghPUAtu6IiRatq4YSLpDvKZBQ=",
264        uint64_t{0xc95e510d94ba270c}},
265       {"opubR7H63BH7OtY+Avd7QyQ25UZ8kLBdFDsBTwZlY6gA/"
266        "u+x+"
267        "czC9AaZMgmQrUy15DH7YMGsvdXnviTtI4eVI4aF1H9Rl3NXMKZgwFOsdTfdcZeeHVRzBBKX"
268        "8jUfh1il",
269        uint64_t{0xff1ae05c98089c3f}},
270       {"DC0kXcSXtfQ9FbSRwirIn5tgPri0sbzHSa78aDZVDUKCMaBGyFU6BmrulywYX8yzvwprdLs"
271        "oOwTWN2wMjHlPDqrvVHNEjnmufRDblW+nSS+xtKNs3N5xsxXdv6JXDrAB/Q==",
272        uint64_t{0x90c02b8dceced493}},
273       {"BXRBk+3wEP3Lpm1y75wjoz+PgB0AMzLe8tQ1AYU2/"
274        "oqrQB2YMC6W+9QDbcOfkGbeH+b7IBkt/"
275        "gwCMw2HaQsRFEsurXtcQ3YwRuPz5XNaw5NAvrNa67Fm7eRzdE1+hWLKtA8=",
276        uint64_t{0x9f8a76697ab1aa36}},
277       {"RRBSvEGYnzR9E45Aps/+WSnpCo/X7gJLO4DRnUqFrJCV/kzWlusLE/"
278        "6ZU6RoUf2ROwcgEvUiXTGjLs7ts3t9SXnJHxC1KiOzxHdYLMhVvgNd3hVSAXODpKFSkVXND"
279        "55G2L1W",
280        uint64_t{0x6ba1bf3d811a531d}},
281       {"jeh6Qazxmdi57pa9S3XSnnZFIRrnc6s8QLrah5OX3SB/V2ErSPoEAumavzQPkdKF1/"
282        "SfvmdL+qgF1C+Yawy562QaFqwVGq7+tW0yxP8FStb56ZRgNI4IOmI30s1Ei7iops9Uuw==",
283        uint64_t{0x6a418974109c67b4}},
284       {"6QO5nnDrY2/"
285        "wrUXpltlKy2dSBcmK15fOY092CR7KxAjNfaY+"
286        "aAmtWbbzQk3MjBg03x39afSUN1fkrWACdyQKRaGxgwq6MGNxI6W+8DLWJBHzIXrntrE/"
287        "ml6fnNXEpxplWJ1vEs4=",
288        uint64_t{0x8472f1c2b3d230a3}},
289       {"0oPxeEHhqhcFuwonNfLd5jF3RNATGZS6NPoS0WklnzyokbTqcl4BeBkMn07+fDQv83j/"
290        "BpGUwcWO05f3+DYzocfnizpFjLJemFGsls3gxcBYxcbqWYev51tG3lN9EvRE+X9+Pwww",
291        uint64_t{0x5e06068f884e73a7}},
292       {"naSBSjtOKgAOg8XVbR5cHAW3Y+QL4Pb/JO9/"
293        "oy6L08wvVRZqo0BrssMwhzBP401Um7A4ppAupbQeJFdMrysY34AuSSNvtNUy5VxjNECwiNt"
294        "gwYHw7yakDUv8WvonctmnoSPKENegQg==",
295        uint64_t{0x55290b1a8f170f59}},
296       {"vPyl8DxVeRe1OpilKb9KNwpGkQRtA94UpAHetNh+"
297        "95V7nIW38v7PpzhnTWIml5kw3So1Si0TXtIUPIbsu32BNhoH7QwFvLM+"
298        "JACgSpc5e3RjsL6Qwxxi11npwxRmRUqATDeMUfRAjxg=",
299        uint64_t{0x5501cfd83dfe706a}},
300       {"QC9i2GjdTMuNC1xQJ74ngKfrlA4w3o58FhvNCltdIpuMhHP1YsDA78scQPLbZ3OCUgeQguY"
301        "f/vw6zAaVKSgwtaykqg5ka/4vhz4hYqWU5ficdXqClHl+zkWEY26slCNYOM5nnDlly8Cj",
302        uint64_t{0xe43ed13d13a66990}},
303       {"7CNIgQhAHX27nxI0HeB5oUTnTdgKpRDYDKwRcXfSFGP1XeT9nQF6WKCMjL1tBV6x7KuJ91G"
304        "Zz11F4c+8s+MfqEAEpd4FHzamrMNjGcjCyrVtU6y+7HscMVzr7Q/"
305        "ODLcPEFztFnwjvCjmHw==",
306        uint64_t{0xdf43bc375cf5283f}},
307       {"Qa/hC2RPXhANSospe+gUaPfjdK/yhQvfm4cCV6/pdvCYWPv8p1kMtKOX3h5/"
308        "8oZ31fsmx4Axphu5qXJokuhZKkBUJueuMpxRyXpwSWz2wELx5glxF7CM0Fn+"
309        "OevnkhUn5jsPlG2r5jYlVn8=",
310        uint64_t{0x8112b806d288d7b5}},
311       {"kUw/0z4l3a89jTwN5jpG0SHY5km/"
312        "IVhTjgM5xCiPRLncg40aqWrJ5vcF891AOq5hEpSq0bUCJUMFXgct7kvnys905HjerV7Vs1G"
313        "y84tgVJ70/2+pAZTsB/PzNOE/G6sOj4+GbTzkQu819OLB",
314        uint64_t{0xd52a18abb001cb46}},
315       {"VDdfSDbO8Tdj3T5W0XM3EI7iHh5xpIutiM6dvcJ/fhe23V/srFEkDy5iZf/"
316        "VnA9kfi2C79ENnFnbOReeuZW1b3MUXB9lgC6U4pOTuC+"
317        "jHK3Qnpyiqzj7h3ISJSuo2pob7vY6VHZo6Fn7exEqHg==",
318        uint64_t{0xe12b76a2433a1236}},
319       {"Ldfvy3ORdquM/R2fIkhH/ONi69mcP1AEJ6n/"
320        "oropwecAsLJzQSgezSY8bEiEs0VnFTBBsW+RtZY6tDj03fnb3amNUOq1b7jbqyQkL9hpl+"
321        "2Z2J8IaVSeownWl+bQcsR5/xRktIMckC5AtF4YHfU=",
322        uint64_t{0x175bf7319cf1fa00}},
323       {"BrbNpb42+"
324        "VzZAjJw6QLirXzhweCVRfwlczzZ0VX2xluskwBqyfnGovz5EuX79JJ31VNXa5hTkAyQat3l"
325        "YKRADTdAdwE5PqM1N7YaMqqsqoAAAeuYVXuk5eWCykYmClNdSspegwgCuT+403JigBzi",
326        uint64_t{0xd63d57b3f67525ae}},
327       {"gB3NGHJJvVcuPyF0ZSvHwnWSIfmaI7La24VMPQVoIIWF7Z74NltPZZpx2f+cocESM+"
328        "ILzQW9p+BC8x5IWz7N4Str2WLGKMdgmaBfNkEhSHQDU0IJEOnpUt0HmjhFaBlx0/"
329        "LTmhua+rQ6Wup8ezLwfg==",
330        uint64_t{0x933faea858832b73}},
331       {"hTKHlRxx6Pl4gjG+6ksvvj0CWFicUg3WrPdSJypDpq91LUWRni2KF6+"
332        "81ZoHBFhEBrCdogKqeK+hy9bLDnx7g6rAFUjtn1+cWzQ2YjiOpz4+"
333        "ROBB7lnwjyTGWzJD1rXtlso1g2qVH8XJVigC5M9AIxM=",
334        uint64_t{0x53d061e5f8e7c04f}},
335       {"IWQBelSQnhrr0F3BhUpXUIDauhX6f95Qp+A0diFXiUK7irwPG1oqBiqHyK/SH/"
336        "9S+"
337        "rln9DlFROAmeFdH0OCJi2tFm4afxYzJTFR4HnR4cG4x12JqHaZLQx6iiu6CE3rtWBVz99oA"
338        "wCZUOEXIsLU24o2Y",
339        uint64_t{0xdb4124556dd515e0}},
340       {"TKo+l+"
341        "1dOXdLvIrFqeLaHdm0HZnbcdEgOoLVcGRiCbAMR0j5pIFw8D36tefckAS1RCFOH5IgP8yiF"
342        "T0Gd0a2hI3+"
343        "fTKA7iK96NekxWeoeqzJyctc6QsoiyBlkZerRxs5RplrxoeNg29kKDTM0K94mnhD9g==",
344        uint64_t{0x4fb31a0dd681ee71}},
345       {"YU4e7G6EfQYvxCFoCrrT0EFgVLHFfOWRTJQJ5gxM3G2b+"
346        "1kJf9YPrpsxF6Xr6nYtS8reEEbDoZJYqnlk9lXSkVArm88Cqn6d25VCx3+"
347        "49MqC0trIlXtb7SXUUhwpJK16T0hJUfPH7s5cMZXc6YmmbFuBNPE=",
348        uint64_t{0x27cc72eefa138e4c}},
349       {"/I/"
350        "eImMwPo1U6wekNFD1Jxjk9XQVi1D+"
351        "FPdqcHifYXQuP5aScNQfxMAmaPR2XhuOQhADV5tTVbBKwCDCX4E3jcDNHzCiPvViZF1W27t"
352        "xaf2BbFQdwKrNCmrtzcluBFYu0XZfc7RU1RmxK/RtnF1qHsq/O4pp",
353        uint64_t{0x44bc2dfba4bd3ced}},
354       {"CJTT9WGcY2XykTdo8KodRIA29qsqY0iHzWZRjKHb9alwyJ7RZAE3V5Juv4MY3MeYEr1EPCC"
355        "MxO7yFXqT8XA8YTjaMp3bafRt17Pw8JC4iKJ1zN+WWKOESrj+"
356        "3aluGQqn8z1EzqY4PH7rLG575PYeWsP98BugdA==",
357        uint64_t{0x242da1e3a439bed8}},
358       {"ZlhyQwLhXQyIUEnMH/"
359        "AEW27vh9xrbNKJxpWGtrEmKhd+nFqAfbeNBQjW0SfG1YI0xQkQMHXjuTt4P/"
360        "EpZRtA47ibZDVS8TtaxwyBjuIDwqcN09eCtpC+Ls+"
361        "vWDTLmBeDM3u4hmzz4DQAYsLiZYSJcldg9Q3wszw=",
362        uint64_t{0xdc559c746e35c139}},
363       {"v2KU8y0sCrBghmnm8lzGJlwo6D6ObccAxCf10heoDtYLosk4ztTpLlpSFEyu23MLA1tJkcg"
364        "Rko04h19QMG0mOw/"
365        "wc93EXAweriBqXfvdaP85sZABwiKO+6rtS9pacRVpYYhHJeVTQ5NzrvBvi1huxAr+"
366        "xswhVMfL",
367        uint64_t{0xd0b0350275b9989}},
368       {"QhKlnIS6BuVCTQsnoE67E/"
369        "yrgogE8EwO7xLaEGei26m0gEU4OksefJgppDh3X0x0Cs78Dr9IHK5b977CmZlrTRmwhlP8p"
370        "M+UzXPNRNIZuN3ntOum/QhUWP8SGpirheXENWsXMQ/"
371        "nxtxakyEtrNkKk471Oov9juP8oQ==",
372        uint64_t{0xb04489e41d17730c}},
373       {"/ZRMgnoRt+Uo6fUPr9FqQvKX7syhgVqWu+"
374        "WUSsiQ68UlN0efSP6Eced5gJZL6tg9gcYJIkhjuQNITU0Q3TjVAnAcobgbJikCn6qZ6pRxK"
375        "BY4MTiAlfGD3T7R7hwJwx554MAy++Zb/YUFlnCaCJiwQMnowF7aQzwYFCo=",
376        uint64_t{0x2217285eb4572156}},
377       {"NB7tU5fNE8nI+SXGfipc7sRkhnSkUF1krjeo6k+8FITaAtdyz+"
378        "o7mONgXmGLulBPH9bEwyYhKNVY0L+njNQrZ9YC2aXsFD3PdZsxAFaBT3VXEzh+"
379        "NGBTjDASNL3mXyS8Yv1iThGfHoY7T4aR0NYGJ+k+pR6f+KrPC96M",
380        uint64_t{0x12c2e8e68aede73b}},
381       {"8T6wrqCtEO6/rwxF6lvMeyuigVOLwPipX/FULvwyu+1wa5sQGav/"
382        "2FsLHUVn6cGSi0LlFwLewGHPFJDLR0u4t7ZUyM//"
383        "x6da0sWgOa5hzDqjsVGmjxEHXiaXKW3i4iSZNuxoNbMQkIbVML+"
384        "DkYu9ND0O2swg4itGeVSzXA==",
385        uint64_t{0x4d612125bdc4fd00}},
386       {"Ntf1bMRdondtMv1CYr3G80iDJ4WSAlKy5H34XdGruQiCrnRGDBa+"
387        "eUi7vKp4gp3BBcVGl8eYSasVQQjn7MLvb3BjtXx6c/"
388        "bCL7JtpzQKaDnPr9GWRxpBXVxKREgMM7d8lm35EODv0w+"
389        "hQLfVSh8OGs7fsBb68nNWPLeeSOo=",
390        uint64_t{0x81826b553954464e}},
391       {"VsSAw72Ro6xks02kaiLuiTEIWBC5bgqr4WDnmP8vglXzAhixk7td926rm9jNimL+"
392        "kroPSygZ9gl63aF5DCPOACXmsbmhDrAQuUzoh9ZKhWgElLQsrqo1KIjWoZT5b5QfVUXY9lS"
393        "IBg3U75SqORoTPq7HalxxoIT5diWOcJQi",
394        uint64_t{0xc2e5d345dc0ddd2d}},
395       {"j+loZ+C87+"
396        "bJxNVebg94gU0mSLeDulcHs84tQT7BZM2rzDSLiCNxUedHr1ZWJ9ejTiBa0dqy2I2ABc++"
397        "xzOLcv+//YfibtjKtYggC6/3rv0XCc7xu6d/"
398        "O6xO+XOBhOWAQ+IHJVHf7wZnDxIXB8AUHsnjEISKj7823biqXjyP3g==",
399        uint64_t{0x3da6830a9e32631e}},
400       {"f3LlpcPElMkspNtDq5xXyWU62erEaKn7RWKlo540gR6mZsNpK1czV/"
401        "sOmqaq8XAQLEn68LKj6/"
402        "cFkJukxRzCa4OF1a7cCAXYFp9+wZDu0bw4y63qbpjhdCl8GO6Z2lkcXy7KOzbPE01ukg7+"
403        "gN+7uKpoohgAhIwpAKQXmX5xtd0=",
404        uint64_t{0xc9ae5c8759b4877a}},
405   };
406 
407 #if defined(ABSL_IS_BIG_ENDIAN)
408   constexpr uint64_t kGolden[kNumGoldenOutputs] = {
409       0xe5a40d39ab796423, 0x1766974bf7527d81, 0x5c3bbbe230db17a8,
410       0xa6630143a7e6aa6f, 0x17645cb7318b86b,  0x218b175f30ba61f8,
411       0xa6564b468248c683, 0xef192f401b116e1c, 0xbe8dc0c54617639d,
412       0xe7b01610fc22dbb8, 0x99d9f694404af913, 0xf4eecd37464b45c5,
413       0x7d2c653d63596d9b, 0x3f15c8544ec5393a, 0x6b9dc0c1704f796c,
414       0xf1ded7a7eae5ed5a, 0x2db2fd7c6dd4641b, 0x151ca2d3d4cd33ab,
415       0xa5af5994ac2ccd64, 0x2b2a4ca3191d2fce, 0xf89e68c9364e7c05,
416       0x71724c70b799c21,  0x70536fabfd157369, 0xdee92794c3c3082b,
417       0xac033a6743d3b3eb, 0xed2956b506cd5151, 0xbd669644755264b6,
418       0x6ab1ff5d5f549a63, 0xf6bd551a2e3e04e,  0x7b5a8cef6875ea73,
419       0x22bccf4d4db0a91c, 0x4f2bc07754c7c7eb, 0xfb6b8342a86725db,
420       0x13a1a0d4c5854da,  0x5f6e44655f7dedac, 0x54a9198dff2bdf85,
421       0xdb17e6915d4e4042, 0xa69926cf5c3b89f,  0xf77f031bfd74c096,
422       0x1d6f916fdd50ec3c, 0x334ac76013ade393, 0x99370f899111de15,
423       0x352457a03ada6de,  0x341974d4f42d854d, 0xda89ab02872aeb5,
424       0x6ec2b74e143b10d9, 0x6f284c0b5cd60522, 0xf9670de353438f88,
425       0xde920913adf0a2b4, 0xb7a07d7c0c17a8ec, 0x879a69f558ba3a98,
426       0x360cf6d802df20f9, 0x53530f8046673738, 0xbd8f5f2bcf35e483,
427       0x3f171f047144b983, 0x644d04e820823465, 0x50e44773a20b2702,
428       0xe584ed4c05c745dd, 0x9a825c85b95ab6c0, 0xbce2931deb74e775,
429       0x10468e9e705c7cfe, 0x12e01de3104141e2, 0x5c11ae2ee3713abd,
430       0x6ac5ffb0860319e6, 0xc1e6da1849d30fc9, 0xa0e4d247a458b447,
431       0x4530d4615c32b89b, 0x116aa09107a76505, 0xf941339d00d9bb73,
432       0x573a0fc1615afb33, 0xa975c81dc868b258, 0x3ab2c5250ab54bda,
433       0x37f99f208a3e3b11, 0x4b49b0ff706689d,  0x30bafa0b8f0a87fe,
434       0xea6787a65cc20cdd, 0x55861729f1fc3ab8, 0xea38e009c5be9b72,
435       0xcb8522cba33c3c66, 0x352e77653fe306f3, 0xe0bb760793bac064,
436       0xf66ec59322662956, 0x637aa320455d56f8, 0x46ee546be5824a89,
437       0x9e6842421e83d8a4, 0xf98ac2bc96b9fb8c, 0xf2c1002fd9a70b99,
438       0x4c2b62b1e39e9405, 0x3248555fa3ade9c4, 0xd4d04c37f6417c21,
439       0xf40cd506b1bf5653, 0x6c45d6005c760d2f, 0x61d88a7e61ff0d7e,
440       0x131591e8a53cc967, 0xdae85cb9bc29bab6, 0xe98835334905e626,
441       0x7cce50a2b66b8754, 0x5b0b3d0c5ac498ae, 0xd35a218c974d1756,
442       0xfce436ddc1d003c,  0xd183901de90bb741, 0x9378f8f34974a66,
443       0x21f11ae0a0402368, 0xf2fbd7c94ef89cb6, 0xc329c69d0f0d080b,
444       0xf2841cba16216a61, 0x47aba97b44916df1, 0x724d4e00a8019fcf,
445       0x2df9005c2a728d63, 0xc788892a1a5d7515, 0x9e993a65f9df0480,
446       0x76876721ff49f969, 0xbe7a796cfba15bf5, 0xa4c8bd54586f5488,
447       0xb390a325275501ab, 0x893f11317427ccf1, 0x92f2bb57da5695b9,
448       0x30985b90da88269f, 0x2c690e268e086de8, 0x1c02df6097997196,
449       0x1f9778f8bbdf6455, 0x7d57378c7bf8416d, 0xba8582a5f8d84d38,
450       0xe8ca43b85050be4e, 0x5048cf6bed8a5d9f, 0xfbc5ba80917d0ea4,
451       0x8011026525bf1691, 0x26b8dc6aed9fb50d, 0x191f5bfee77c1fe3,
452       0xdd497891465a2cc1, 0x6f1fe8c57a33072e, 0x2c9f4ec078c460c0,
453       0x9a725bde8f6a1437, 0x6ce545fa3ef61e4d,
454   };
455 #elif defined(__aarch64__)
456   constexpr uint64_t kGolden[kNumGoldenOutputs] = {
457       0x45c0aadee165dcbe, 0x25ed8587f6f20d06, 0x5f23ae668ce7926d,
458       0xfef74d1da0846719, 0x54478408e68cb7d4, 0xee27ddaf88c6fe68,
459       0xb7ac7031e81867ca, 0xf1168f818ec6c36d, 0x1dd0b734a83b019a,
460       0xd6ae30d4142b54fe, 0xcd860c721ccb80fb, 0x068acf8493794756,
461       0xd4ada0be58681307, 0x13ffe0f64ca540ed, 0xffc1d7a3401aec02,
462       0xd81c4d865cf95fb9, 0x1dd0793acede62e0, 0xa6722abbca8fe4cf,
463       0x5453d3e4111a7e40, 0xf29b3e3204c9dcd2, 0x23be2980e43117f7,
464       0x74e2ccbc286f08eb, 0x19ef7c0f9496003a, 0xbfbf1c3e49b27987,
465       0x6e6c179eb4a82c70, 0x07f4e184216bc4fc, 0xf17fbc4254927554,
466       0xe57696b70a45b1b6, 0x6d3b144631b320e8, 0xccf8729792c75a2d,
467       0xe832495b41fa980b, 0x5c96cfdc7b227d34, 0xc4dca234ef4e43f4,
468       0x5fc801abf9abe307, 0xe41e3c5076d88f4d, 0x522346200ddec3c3,
469       0x72bed1946fd7aaa4, 0x0ac1f84dcc335f96, 0x3af78db5e0a47670,
470       0x6100ebf1481f1caf, 0xf5fd10037fc651a3, 0xa01227d8944665f3,
471       0x7217681c4bbc9420, 0x4adee538e3eb10d1, 0x35e1761ad96de9a7,
472       0x8b370aef9613bfba, 0x824506f749eeaf59, 0x85e805fa04423991,
473       0xb61e9c33283c3de7, 0xc79721bbcb039ed6, 0x04e1c19a3a1e6639,
474       0x6aaf6346b68dd638, 0x601a4b496be6d0c4, 0x3ece355f91c41787,
475       0xd2fc8998448d7888, 0xd7529804f843efa9, 0xabdcc38a288536aa,
476       0xdd323e48a9718648, 0x2090279c0030a52a, 0xe2f90faca88a3cd1,
477       0x3e0c4e92fc50e4aa, 0xa26d308798e801dd, 0x432eefeedee8c02e,
478       0xca4ce494614b77df, 0xbba82911e838066d, 0x4b00821016adee4b,
479       0x4cf6e526dfb5a20f, 0x5b8466495142cba2, 0xe28ac1406e88a68c,
480       0x8511e5f9d3100999, 0x05acbfe02798890b, 0x74c249c7ce4a8425,
481       0xdbe7468d09bc34bc, 0x11079ab10e3b9b58, 0xb7788dec9032035a,
482       0xb7e8daa786513f80, 0x34c3288831f46b45, 0x014cce5f0c21ecc6,
483       0xc6a8f7b024551a28, 0x49784e902e207fd8, 0x4720d32af0b55158,
484       0x8df3ec5de0c1da00, 0xf4db677b2c9e6853, 0xaa419abea78d312d,
485       0x181e0f91bd757443, 0xa8c45136fada083b, 0x91303b93f5f0582c,
486       0x883b95c6ddc62a08, 0x93186a8875fe952b, 0xd94f533928e957e2,
487       0x6ba343003e10c172, 0xc8623b620c715d6a, 0x8ca0c512e180e244,
488       0xdc9b74c2536b6216, 0x8eb5fdc61b295d96, 0x2ad83966b37c95ba,
489       0xb90bf154ac5edec9, 0x902cf847b326cfb3, 0x7b02d0c0ca7808ca,
490       0x492f310d003ea15f, 0x3eb6497a47c95990, 0x5d46b0ced31428b7,
491       0x081afa67d1986157, 0x043482ec286b20eb, 0xc103c8f18c1a2a53,
492       0xe8e9995a81481e83, 0x6bb3295822bc90b5, 0xeec75297a3fa5672,
493       0x591c8440c4857412, 0x74947f455aaf24ad, 0xcf0e571586ec77a9,
494       0x0c2553ea8c0400ad, 0x380219118066255f, 0x7595adb88b15ebe2,
495       0xb33c00696c64ae23, 0xa143516ddd7c9857, 0x39179af229248d26,
496       0x65d387a6f2ee2079, 0x89f8a9b21cd2f195, 0xbfef032d25df92e6,
497       0x6b7e18a36c69da71, 0x4b3b15f6c28974e6, 0x032a75917f6c544c,
498       0xe3b97ecca6d287cd, 0xa4a563110d3cda81, 0x35e09e8134f4e7f1,
499       0xc9419dd03a9a390e, 0x7b86fae9000fd329, 0x1e044f8d54fe74c3,
500       0x9c4991d7a47e9666, 0xfb485f3a1df4fdb6, 0xb11519969eeb94ff,
501       0x3224ea1c44caeb8d, 0x86570bbd7cc6b80d,
502   };
503 #else
504   constexpr uint64_t kGolden[kNumGoldenOutputs] = {
505       0xe5a40d39ab796423, 0x1766974bf7527d81, 0x5c3bbbe230db17a8,
506       0xa6630143a7e6aa6f, 0x8787cb2d04b0c984, 0x33603654ff574ac2,
507       0xa6564b468248c683, 0xef192f401b116e1c, 0xbe8dc0c54617639d,
508       0x93d7f665b5521c8e, 0x646d70bb42445f28, 0x96a7b1e3cc9bd426,
509       0x76020289ab0790c4, 0x39f842e4133b9b44, 0x2b8d7047be4bcaab,
510       0x99628abef6716a97, 0x4432e02ba42b2740, 0x74d810efcad7918a,
511       0x88c84e986002507f, 0x4f99acf193cf39b9, 0xd90e7a3655891e37,
512       0x3bb378b1d4df8fcf, 0xf78e94045c052d47, 0x26da0b2130da6b40,
513       0x30b4d426af8c6986, 0x5413b4aaf3baaeae, 0x756ab265370a1597,
514       0xdaf5f4b7d09814fb, 0x8f874ae37742b75e, 0x8fecd03956121ce8,
515       0x229c292ea7a08285, 0x0bb4bf0692d14bae, 0x207b24ca3bdac1db,
516       0x64f6cd6745d3825b, 0xa2b2e1656b58df1e, 0x0d01d30d9ee7a148,
517       0x1cb4cd00ab804e3b, 0x4697f2637fd90999, 0x8383a756b5688c07,
518       0x695c29cb3696a975, 0xda2e5a5a5e971521, 0x7935d4befa056b2b,
519       0x38dd541ca95420fe, 0xcc06c7a4963f967f, 0xbf0f6f66e232fb20,
520       0xf7efb32d373fe71a, 0xe2e64634b1c12660, 0x285b8fd1638e306d,
521       0x658e8a4e3b714d6c, 0xf391fb968e0eb398, 0x744a9ea0cc144bf2,
522       0x12636f2be11012f1, 0x29c57de825948f80, 0x58c6f99ab0d1c021,
523       0x13e7b5a7b82fe3bb, 0x10fbc87901e02b63, 0xa24c9184901b748b,
524       0xcac4fd4c5080e581, 0xc38bdb7483ba68e1, 0xdb2a8069b2ceaffa,
525       0xdf9fe91d0d1c7887, 0xe83f49e96e2e6a08, 0x0c69e61b62ca2b62,
526       0xb4a4f3f85f8298fe, 0x167a1b39e1e95f41, 0xf8a2a5649855ee41,
527       0x27992565b595c498, 0x3e08cca5b71f9346, 0xad406b10c770a6d2,
528       0xd1713ce6e552bcf2, 0x753b287194c73ad3, 0x5ae41a95f600af1c,
529       0x4a61163b86a8bb4c, 0x42eeaa79e760c7e4, 0x698df622ef465b0a,
530       0x157583111e1a6026, 0xaa1388f078e793e0, 0xf10d68d0f3309360,
531       0x2af056184457a3de, 0x6d0058e1590b2489, 0x638f287f68817f12,
532       0xc46b71fecefd5467, 0x2c8e94679d964e0a, 0x8612b797ce22503a,
533       0x59f929babfba7170, 0x9527556923fb49a0, 0x1039ab644f5e150b,
534       0x7816c83f3aa05e6d, 0xf51d2f564518c619, 0x67d494cff03ac004,
535       0x2802d636ced1cfbb, 0xf64e20bad771cb12, 0x0b9a6cf84a83e15e,
536       0x8da6630319609301, 0x40946a86e2a996f3, 0xcab7f5997953fa76,
537       0x39129ca0e04fc465, 0x5238221fd685e1b8, 0x175130c407dbcaab,
538       0x02f20e7536c0b0df, 0x2742cb488a04ad56, 0xd6afb593879ff93b,
539       0xf50ad64caac0ca7f, 0x2ade95c4261364ae, 0x5c4f3299faacd07a,
540       0xfffe3bff0ae5e9bc, 0x1db785c0005166e4, 0xea000d962ad18418,
541       0xe42aef38359362d9, 0xc8e95657348a3891, 0xc162eca864f238c6,
542       0xbe1fb373e20579ad, 0x628a1d4f40aa6ffd, 0xa87bdb7456340f90,
543       0x5960ef3ba982c801, 0x5026586df9a431ec, 0xfe4b8a20fdf0840b,
544       0xdcb761867da7072f, 0xc10d4653667275b7, 0x727720deec13110b,
545       0x710b009662858dc9, 0xfbf8f7a3ecac1eb7, 0xb6fc4fcd0722e3df,
546       0x7cb86dcc55104aac, 0x19e71e9b45c3a51e, 0x51de38573c2bea48,
547       0xa73ab6996d6df158, 0x55ef2b8c930817b2, 0xb2850bf5fae87157,
548       0xecf3de1acd04651f, 0xcc0a40552559ff32, 0xc385c374f20315b1,
549       0xb90208a4c7234183, 0x58aa1ca7a4c075d9,
550   };
551 #endif
552 
553 #if UPDATE_GOLDEN
554   (void)kGolden;  // Silence warning.
555   for (size_t i = 0; i < kNumGoldenOutputs; ++i) {
556     std::string str;
557     ASSERT_TRUE(absl::Base64Unescape(cases[i].base64_data, &str));
558     uint64_t h = absl::hash_internal::LowLevelHash(str.data(), str.size(),
559                                                    cases[i].seed, kSalt);
560     printf("0x%016" PRIx64 ", ", h);
561     if (i % 3 == 2) {
562       printf("\n");
563     }
564   }
565   printf("\n\n\n");
566   EXPECT_FALSE(true);
567 #else
568   for (size_t i = 0; i < kNumGoldenOutputs; ++i) {
569     SCOPED_TRACE(::testing::Message()
570                  << "i = " << i << "; input = " << cases[i].base64_data);
571     std::string str;
572     ASSERT_TRUE(absl::Base64Unescape(cases[i].base64_data, &str));
573     EXPECT_EQ(absl::hash_internal::LowLevelHash(str.data(), str.size(),
574                                                 cases[i].seed, kSalt),
575               kGolden[i]);
576   }
577 #endif
578 }
579 
580 }  // namespace
581