bee-crypto 0.3.0

Cryptographic primitives of the IOTA protocol
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
// Copyright 2020-2021 IOTA Stiftung
// SPDX-License-Identifier: Apache-2.0

#![allow(deprecated)]

use bee_crypto::ternary::sponge::{CurlP27, CurlP81, Kerl, Sponge, SpongeKind, UnrolledCurlP81};
use bee_ternary::{T1B1Buf, T3B1Buf, TritBuf, TryteBuf};

pub fn sponge_generic_digest<S: Sponge + Default>(input: &str, output: &str) {
    let mut sponge = S::default();

    let input_trit_buf = TryteBuf::try_from_str(input).unwrap().as_trits().encode::<T1B1Buf>();
    let expected_hash = TryteBuf::try_from_str(output).unwrap();
    let calculated_hash = match sponge.digest(input_trit_buf.as_slice()) {
        Ok(digest) => digest.encode::<T3B1Buf>(),
        Err(_) => unreachable!(),
    };

    assert_eq!(calculated_hash.as_slice(), expected_hash.as_trits());
}

pub fn sponge_generic_digest_into<S: Sponge + Default>(input: &str, output: &str) {
    let mut sponge = S::default();

    let input_trit_buf = TryteBuf::try_from_str(input).unwrap().as_trits().encode::<T1B1Buf>();
    let expected_hash = TryteBuf::try_from_str(output).unwrap();

    let output_len = expected_hash.as_trits().len();
    let mut calculated_hash = TritBuf::<T1B1Buf>::zeros(output_len);

    assert!(
        sponge
            .digest_into(input_trit_buf.as_slice(), calculated_hash.as_slice_mut())
            .is_ok()
    );

    let calculated_hash = calculated_hash.encode::<T3B1Buf>();

    assert_eq!(calculated_hash.as_slice(), expected_hash.as_trits());
}

// In the following tests, fields are:
// * Input
// * Kerl output
// * CurlP27 output
// * CurlP81 output

fn sponge_input_243_output_243(sponge_type: SpongeKind) {
    let tests = [
        (
            "HHPELNTNJIOKLYDUW9NDULWPHCWFRPTDIUWLYUHQWWJVPAKKGKOAZFJPQJBLNDPALCVXGJLRBFSHATF9C",
            "DMJWZTDJTASXZTHZFXFZXWMNFHRTKWFUPCQJXEBJCLRZOM9LPVJSTCLFLTQTDGMLVUHOVJHBBUYFD9AXX",
            "FPQIQGEHZOYNZGGCTPYHYBEWMAGPPBMOAPZHSWMDIRSINUXQYSEJBVUNUDDMPSRQZQONWPGBQKUKRINWR",
            "XMJNTUHSDIVRPCBKWPOZWTJFDRSKXZKNJEJSBIHQXQE9YVGTOFF9DMQTFOLCPVLPGMYUGJSTOZZSIGFGH",
        ),
        (
            "QAUGQZQKRAW9GKEFIBUD9BMJQOABXBTFELCT9GVSZCPTZOSFBSHPQRWJLLWURPXKNAOWCSVWUBNDSWMPW",
            "HOVOHFEPCIGTOFEAZVXAHQRFFRTPQEEKANKFKIHUKSGRICVADWDMBINDYKRCCIWBEOPXXIKMLNSOHEAQZ",
            "OWKVBSCEWDLDXQESNPMBYXMJRDGZGSCSFIPTXWXGKMUYEDVMROERME9IWDEEHPTVWOXNSMGYMPZOATQPN",
            "VBJQRNVTTZG9RHHIVVVZNLEOLVEPOMGFVFYGKCTFMPFTOAEYHKYZBZECZJRYXBOIPBU9YR9QFTJXERQKM",
        ),
        (
            "MWBLYBSRKEKLDHUSRDSDYZRNV9DDCPN9KENGXIYTLDWPJPKBHQBOALSDH9LEJVACJAKJYPCFTJEROARRW",
            "KXBKXQUZBYZFSYSPDPCNILVUSXOEHQWWWFKZPFCQ9ABGIIQBNLSWLPIMV9LYNQDDYUS9L9GNUIYKYAGVZ",
            "JK9S9MVAAZZW99SHJVGYOQXAEEMRHFRQNWIMWUEUCRGHENNWGW9KZHRILLNUQLGRXJGWCTADAUOMEQSDZ",
            "STZUTCKMGNLYWQAOVACOLOIQBGCXSNIXZAHXYFOAHIDVYOPLKWBZWC9EFIX9C9UADVV9TU9GZQWDE9PVL",
        ),
        (
            "GYOMKVTSNHVJNCNFBBAH9AAMXLPLLLROQY99QN9DLSJUHDPBLCFFAIQXZA9BKMBJCYSFHFPXAHDWZFEIZ",
            "OXJCNFHUNAHWDLKKPELTBFUCVW9KLXKOGWERKTJXQMXTKFKNWNNXYD9DMJJABSEIONOSJTTEVKVDQEWTW",
            "SODJTL9HXUI9JGRTPCDUQAZUWRBSZZPJQCKPAWDBWRWIRBNQRCZAVQJCHCEKSVZ9BYFPAHZAECOYAMEMO",
            "RWRXCNNLPWIVWKVNYXLSBGYPYFNLZRJHHBHHXTZYIG9URVDHRKBIPONSHPVDFLYJRNGPRQJDFC9CGKDJT",
        ),
        (
            "EMIDYNHBWMBCXVDEFOFWINXTERALUKYYPPHKP9JJFGJEIUY9MUDVNFZHMMWZUYUSWAIOWEVTHNWMHANBH",
            "EJEAOOZYSAWFPZQESYDHZCGYNSTWXUMVJOVDWUNZJXDGWCLUFGIMZRMGCAZGKNPLBRLGUNYWKLJTYEAQX",
            "BPNWKICEGJXDC9GYLDS9INRGGQ9SSJRRHOPXTHIJTGEFGLAWLAEKQYN9HTFAOTWIDABUWYHCFRLHRRDCY",
            "AQBOPUMJMGVHFOXSMUAGZNACKUTISDPBSILMRAGIGRXXS9JJTLIKZUW9BCJWKSTFBDSBLNVEEGVGAMSSM",
        ),
        (
            "FMMZTLNOZUWJUMLRUMZNQOZG9QQNWFHJBIKAMNMKTNKHZVKQALHPKUXHZSSRLKJFPIHCFZVZFEVOMBDUF",
            "USXHTPUJJXFQTWPDTV9URTSM9VBVFMBIQQ9VBKWGZRLDIZKRNAD9PWZZQMTFAZAK9ZMLGTMEBOOJB9XBA",
            "NDBJWEEYJRHLNDJGRQSTC9QJBEBBPPTDMS9WXQSBCCVCDHJIUXFYUCZUMPNOWXBTUXZCAQLSOCNVGDWHZ",
            "DBTAIDJZGGAFFFNGKDZLPASUIJIUYDQCDCCCMQEPYZNEBYQKBXGLEWYAHDAHCHUMFWQYXXTOQMJJIJFTO",
        ),
        (
            "CLKAPNTLUMITSDWRLDHYHEOURFJMKUDQXZXAMNGTJYOOKRRVYKPIPOVPNYWYITITLSJAXARZTQYDDDSZP",
            "UJAKNHBYKZAUQ9XCROPDRNIZWBMINFGOEAYTKASVLDOSFMCDZZLGOUQ9I9OGQLKTOVBMQZELFVIKIOBB9",
            "WQWJIXTQRNQQRIRXZBDMAXGLHMKV9DERKSXJHJHWFNANCKAWJWYLBICEVDGAKJZAKTSXUVOKUWIYTZZSH",
            "APXNVEGVYNUJXUYYNDWYDLRCJYXAETPPABKINDKMKYLPZZEIFWUQBYMZTFNIUWOCHXCVBXAAPYPQCNNIZ",
        ),
        (
            "COD9QLD9QGBCFVVDIETJXUPACVAKNKRPFIIXNOXFSJRKGDOGPIQMVDWKOIRODYFMUAO9HLKDGTEMHOSQQ",
            "GHJXHUAPEMWZTQDFLERAODMTOEMCYDXVVKDHYIGCMTRRDXVOXMSWBGSBZCZFKWMQNPZDYZYDBNZTVESTC",
            "MKHQ9YVJEJJZHGIZJKLXXGT9ZKRVGOJNNSWJJMKFVV9RHHYIWEAOJKYQRQAI9DQJDSZOKGPLPTFVFIFYK",
            "QSOWETZUHKRYKNMFASDMFAQV9JHFMKEFIIVOBFXIGJPQCMXRSRIQMXEKBQONRIWZFPHTBSBREBLMGHUQO",
        ),
        (
            "FPZELSWBZPBZCGVAZYROALBTEVTUBVPDWRZWDKAWJVWPADCPWXCFBEREADV9AOZSM9VQ9GGRZOSARZNHG",
            "DCGHRTZEKHICXRCTCXPLEQFDAOCKFVTDOBMXVYWZJLAPQUZCIPJF9BGCJF9CXPBVAAETDUILX9DTKWZYX",
            "RHGJDIHINZDYANT9CIMKJQPOFWA9PAQONVCKONHL9MAKZWWWTGFAZWMCRJGBXITTYWDLFYIQXBGXEIMGD",
            "KBAXEMPPDSMKMIH9EIRBIEXZVXKUTSCD9AOVMMXFSPEEFEPPOPGZYTYHPLOPWSE9TWXPVWPBF9JPGGQKO",
        ),
        (
            "TGKMNVKKGKMLIEMALEANLGYQMXTSVSZAO9YJRSLZJIXVSPLYZEZUOSIEWYJXTOEIUDGRVSPEDPKIYLBPF",
            "FLXPXOTTDPTMVZU9GJOXEAVRLHMEPRUXCITMQNNPZXPVQMUPDCJGDESLFGFGOBUTUJATIPG9NPJSASRHW",
            "YKP9FOLQBXTEYGSYEMW9RYPIQNOPRSQSUWTJNIBFPSLAEDKJEJNIPOMBLJZDVUUNDBVRZTEFWUTWIQYGG",
            "RLFMK9PGCNCMQDXSGZOXHN9ESCXTRMA9TDTAWDJAMQNDNZDMFFFIRBKDSJEBJJSJSZRHFSBSDCHNZQRSV",
        ),
        (
            "A9QHKAZPRUVLMTDSXYQYAIEFICA9EAEKLUVHEPHIUPJZLSBXLEGHXNQDIUDDSLAQCRINVUMVJMZPGHPTN",
            "LLXWPVEIQOK9WQUPCIGODVMJLSKMZPVDBUQKUTUNMVWMMOJQZGROEXTWZTRLPBBPFWHFJ9D9KWQLUADLA",
            "XSMQXBNLYKNH9RVAAGHEFVMVEOKOHLNFBUGUKVKAIUUBVIGLLCVRYIAAXQOTVVHVJFMOGNBLGENFSGPLU",
            "ITFFWBVZPOCNFVANJS9CACBZVVN9ZSJOQXCRSQGWKQVFQKAZNQJSZGIKWSIC9XWYIYVEYJQXRW9GGTUKL",
        ),
        (
            "GSSONEJY9VXSFNTYOBXHCHOB9EODIOTBXJMZMXOVHZQB9AEOZIJUM9PTYGYNGESR9ZSIKDJ9KEWIB9FAY",
            "SIQINLOFCHVANBUUOMYZUKEAVH9AVYAICXNFAGZGWQLLQD9HLBLSLVYESIAFJYJVYRVYGMYXERJZDDGDB",
            "SZEIFJWPY9W9MMYGO9MJIDEDVCSHPAPKDZHMEES9ZOUAMGVHSBJKIEBVXNHZVJHMATEYW9Y99SEHEDAXI",
            "EHKYMTXUA99PALEZKV99UTGBBWDVWHGUVKQVQXLHRZYSV9XFGDRONQROFDGIAQSHH9OEQVHDUYDXWSPUW",
        ),
        (
            "VBTTOJXZQLRJUNDXBY99ZOHVWZIUSTCSJATNCMAIOSQKDNBDVLVWEHQEHPBKCDPCXMKEXEMYHMDYKWNNB",
            "HLPRUENCJMDVQQTTWQ9LKHETLXALMGFRSCEIB9CMI9XLZAHFPTHXW9PWRCPAKZLGEJZHPTPEMVR9KFLPX",
            "NNIDHXCBLAGTBFGZIGDFUGUQQNXEXFHATZPONFDZLLOXNDDZGNIQODQHORWUVAFQBCHWFIKLGXBFWLOWJ",
            "IBZILY9UPYQGYZIVVTXXNNUC9AWYKWTZIZJBYXMVHQGQFJACMFFFUUNYBGXIOJLPSRKJYBDQZUUBQHPJZ",
        ),
        (
            "ILJLMZNJCJMHBWUOPVADFTBZZIWVGA9MCUGJVVXZKQIHRBQVLTXFCZL9EHHOEIRED9CXFMTTKOWPDDALJ",
            "AQSVEXFZVKQOBBMIUMRJV9HPTZJZETGGILFXNRYPWAWBZHSUDEBLYWMIAPVKMYALCCIAKHCCKHQHGHTCD",
            "MFQXVPQIFONMODCLNUMKOO9NZHYSXCTTNYOBMOA9MTBOLRNTFJQLTKOVQJVCFYCZDDPDTHZSBBWUYVCLV",
            "DSKCVRA9ZFMVRUATIEOVKUHEIUGDOFAXMKROKIWMIMFKUCIHGXAYKYYUWGNCJYDXKNIAZJLEPGTJMHIXL",
        ),
        (
            "OOVPLZATVDZXGNENSFKKPQTPIQJTCPIOSGEJDBIKCGKK9LHED9GWYZXXUO9DAESQKREANXAKKQBYPPUEZ",
            "JTFVFGCAQNKYVHRCGABUP9GNDNYIRGZQMWHMJSEABAILZPMVKXVQ9GIEPDZDKB9JBDLBDBMQWACNRDPYA",
            "CPGHMNNWVBFTLOLUSZPDBYNCDPEAQQXXYUM9HGJXNYJ9WJHYFUTGQVVE9VZBKVBRVFKSPILDDWRYSWGEJ",
            "RJAZVVBF9WHAVZWQVQAOPRNBFWEOBIACGF9LADNLHFHQSQJEQ9YBZJEOVUFHTEPS9VYSPHINWZHRQPSZA",
        ),
        (
            "MJEVWBFMD9OZ9QIGYEF9CEQFSZHYPPZKNJ9KOBKCVWR9OJ9IQFVAZYLXO9BNPSTQBCNESHZHJCMPFSLSQ",
            "YVJNGOIBVYVNMKN9SYPFMPJWJUCXZHPMRBICZQGYWKRLGICNAQZUHTGRROEVHVNML9SAZDAX99QRGMKNA",
            "HXHSWQNOH9YWWIFORTZRKWNPVOECCDCLQTMK9XJQAWOHSIRLPYTTGBINXYS9PMCFZQKIIIGMNPAWTPSPU",
            "LEJDJLGROACKOALCUBGGYGICAUYCGGEZYLMBW9OSENLGDZN9HUUMJBDPOKYLWSTLPPKLZBNBTWAKONDRD",
        ),
        (
            "RQXJUDVHGN9YUUDEDHDXCHAVUIVZHLQTZIJVLGNAFIIDYGVX9BOCMIDOKMPBZCNCGTYKRLTDSFYVLZOOD",
            "TELHYNCIHGTKCRC9IQDWBLSGPGQPRZCSVRYIPZJ9KXILOIDIHXRBSTMOJZRRRLSNHQGEH9AHROOZYEEMC",
            "VNXHQOPOCV9DLTXB9M9XBJQRUY9ZQDSRWHLLNWFWVILYWVRPEOKLLEPKYJLVYEH9VQNRIELBKSISIBBRF",
            "V9VVLTQIWWYWRUUZ9YHKHYNKFUNLHAOCCVAW9KMYQLHYRNPEJFCOTJJICRTNLE9TUYRRWOBFXLXZUEDQT",
        ),
        (
            "FKKKPTUKJOQXVOQSYBZLPWXPSB9IRTKUPM9OWDSLHYDKJUHCCEWAXRJXXZVGMYWSNTVNJCBSJLDFGYQRX",
            "ADJCUWPLCAGLSTPSOHVQCBCAGJHPWRXFWYNAYLADTHNRECVQDXM9OYGZWBARIEJTBISFKRTMBBXXLXDOW",
            "WJPSRKGNWTOGAJCRCS9UIEPZPUUEGWOSBMNSHXSWZNUHFXZRHESGDBX9JRKYFVXRTTWBUEHGPCRSOXL9C",
            "HSS9KUYTZJI9AHTNRGMGCGZZNQXWJ9ZWWSHHR9PGPJRMJG9SGTFCNRKKEIRZCKREUNGDKAMYYZRBQEIAW",
        ),
        (
            "AU9AW9RRLZQGMXDYIYADHAGSNLDQEEGSM9IOBFVEKTDYSVXEUJATJJFYAFA9KGL9JHKJOMSHTP9YYZBKT",
            "FCYDZDQFTFLQ9EBSFACTWTVGKCUBGJZPVDVPISGGJHHMNOBXXFATZFX9GNHUNGLILYQ9JPSBHBWWCNGUX",
            "ARSPQDOTWDXWPJLZYAGNWGKUXJJDCG9JKPOVLGIUYCCH9FKWSLESWSKZYQZCZJKODYOJHUCZRYFAQYTOI",
            "L9TZ9GQJGLYBAVHAXTLIDYRUCBSNSOEOBYZIMRJNPRQQRFALAJMHLPECDMTRKTGINDWFNMTGIIODHENCS",
        ),
        (
            "J9HER9GGWHKHTLPHYUXWEKAIKMXHPVWXQSBYMMDEFUSAYZDHKUBHQRYWICOSQRASXHEFDECMCHJHJKIVK",
            "NATACRWZMFAPEKI9GNZCRXZFJXCZHVZQOFHQTXKMNQHEQOYMPVQWVGELKYIZVLNCIMRLDH9QKRUJFJYTX",
            "YUFTJTIMBNGROQIJOBYSLNTALXPHQWHEFZMRRSWNAYNKKSMAABPKIHVDZIMI9ADPCNMLKRWZNSBFOMNNW",
            "NVWOEIHZRIZUOU9RPIPOBI9CUXOQOSWWRVHTE9TDCJGITXNVVCX9HHITHQRLDRXVTHCQFZTPNONOGBAAE",
        ),
    ];

    for test in tests.iter() {
        match sponge_type {
            SpongeKind::Kerl => sponge_generic_digest::<Kerl>(test.0, test.1),
            SpongeKind::CurlP27 => sponge_generic_digest::<CurlP27>(test.0, test.2),
            SpongeKind::CurlP81 => sponge_generic_digest::<CurlP81>(test.0, test.3),
            SpongeKind::UnrolledCurlP81 => sponge_generic_digest::<UnrolledCurlP81>(test.0, test.3),
        }
    }
}

#[test]
fn kerl_input_243_output_243() {
    sponge_input_243_output_243(SpongeKind::Kerl);
}

#[test]
fn curlp27_input_243_output_243() {
    sponge_input_243_output_243(SpongeKind::CurlP27);
}

#[test]
fn curlp81_input_243_output_243() {
    sponge_input_243_output_243(SpongeKind::CurlP81);
    sponge_input_243_output_243(SpongeKind::UnrolledCurlP81);
}

fn sponge_input_243_output_486(sponge_type: SpongeKind) {
    let tests = [
        (
            "9MIDYNHBWMBCXVDEFOFWINXTERALUKYYPPHKP9JJFGJEIUY9MUDVNFZHMMWZUYUSWAIOWEVTHNWMHANBH",
            "G9JYBOMPUXHYHKSNRNMMSSZCSHOFYOYNZRSZMAAYWDYEIMVVOGKPJBVBM9TDPULSFUNMTVXRKFIDOHUXXVYDLFSZYZTWQYTE9SPYYWYTXJYQ9IFGYOLZXWZBKWZN9QOOTBQMWMUBLEWUEEASRHRTNIQWJQNDWRYLCA",
            "PPXFWWD9BOBRQN9HUAO9TGGXMDHPJN9HWMSZVRYNUXWVRRXOOZBAGKBPIEVSJAMXIGHIYTNY9ETNZUUSPZFQNQDIHTALMLENHUPUNNNDJRIHWBHZFYJYEFSVPZOZCFPFPQFPYPLOJTAVQDYNIZT9VLLZZZQIVFDFNS",
            "CWBMQJMPO9UZFPCDHNELVRHSBDYDMDQZTOOMHYMMPVSQJSNELF9CNLGSGGAWLVWSP9VSEFJHHKRLSOAJYNOVXUYIJJCHCKOBSLDCIWFHBXGOSBNPTRJUFZZABJSMKNNAPC9QOCEUTKXZEYAXPWNADXU9GWEXTBBZUG",
        ),
        (
            "CXOXVFNGUPEUZESXHFBVHBNAAJNONJBPVBNJKP9QXWYGEVXOCUULVQKSSMLMJJUPVBYZ9FHMZRZYEPKSZ",
            "RSCSUVIEVAIJDMERX9ESPIKIJIGYRRCPQPJUSCEYWQQJFWRHMAUPKWN9FATEWDOGEPGP9VZAZVOLFDVVDCJHQTXFNLLHQXGXCCDXCNPKDYXXUTHBCRVRJHRVQAYCLQCSNVRKSN9RXM9IFWLQXB9ZXTEQTIRIKTXPNY",
            "RTKRURAQRRMXJLKNDXNVFPDCUPQR9ZEMXCQZUXGLADLJSBFGOKROSNHEHXTNLRJOATRAXQ99CUPDCMQGXAK9Z9XAWJSSHADXJJONDNXBMYZURM9JGDHJTDWCJEUHBNJDECRRHMQRATVIBAWZJDCDPVOM9KGMVREISI",
            "YRCAPSUQBZSAAUPUQSWAQFAVNCDPHYCWPYDTBQZADRYNOKHUIATKMNMEI9KOEKJRRRQBU9WQROKCETIUNDKGUREFMXCMZTLSE9OSPTWJYKAVGJPMMNPFCWAINUBQZJDNDMBZOBAQIWMFJGP9EXWNXBKFSVANFPYMND",
        ),
        (
            "KFHRWRNKPBIXR9DQC9NXEZDWJHDIID9DFJSNMIQ9PM9PSBMHPBNYKGATCYADJFVGEDKLQEMJNVWVIV9BJ",
            "VTGUEYQYEEOMVNUIKHRCD9NJUMQRQVGDARJBETPULYKXQGZKZDNE9ZEGPYOJXNYNTYWOYLUP9GPX9UNJC9BAZFGBOLISAXTPVPD9WWAHQUWPVJOCOLIDINAC9AKYVUCLUWIECSYRZRRBVLAUMDOCPZASDUWZZNJKMD",
            "IRRTXXQVNBFIVCNVQCOOGPUEHLUPVSFBWDWAOYNXLVEAFYTRQRHCCUANNZMAIYOLFNIYKDLSSLKKUJBGXYJDUBGJPCCKSVHXTQVCBQHCQSPOSCJKUUKFPTFDFKTKIMQYFBGBKPZRP9XCGLZTPMOIHPLHSMBSMZMUQQ",
            "RRQKEZAHPKHIXYMCKMLI9Y9YEVHDOXUKXVGATFPTZXJRCAPXKUPEZSYBPMREEUPTPZJQBQVRMYEJGUBAJSU9AMUGMTVNVUTDOECOCHSVTL9G9FBPYQNFJSEPCBVVMRAIKMJUECQCGMQKSNDYTUEFAZCGNOTUEFCBBW",
        ),
        (
            "AEFKWYAMFHKZQGH9MEGMVBGQKV9FNVFLXSWDBDMQMO9IEQGQKZDWBUUHPNVSIQ9HCMATTN9OSTM9YR9AC",
            "SFGULJLBXGCJRJBVYURBLURFINUOHVILXIGVRNXFPJWSBHYLRCICOYEMGKDMTTSEAFIM9USGCRULVUXWCLIPRSJBWAYOVUOURQUVLKLCNSPTPLJHEVUEPUKXPMJOPVSBSUKIWZFWQSQMXDU9ABFGT9WTZGODUMJGJZ",
            "VSKNYSNS9QQLZUQEECJGSJWKGBHTSDARVYWQYTIRDHSDODCODQHCZZEKUYLCUQUDRJYLBUYWNUA9BXYPVXMGSOTCZPNGWWTNHBEFBSPZJLAAP9T9VZBSOPPPDZHBAVWTUX9YUINSNMRDJKLLNLPMCBEDHZUEHDXFJW",
            "VUGAVRBDAJMLNOUQCHISIPFWXFRO9SZMQV99RPTHWMVGLQUSNWEKGMCS9AGQNHYVINRUQLGAOZJVEMRAUBKQOD9OUJYYQESTBRMAOPVFQQLXXHCACIOG9GALPRHQNQRENWZQJJNJOPKW9XAJGG9KBRKAKATWVJBJDJ",
        ),
        (
            "SWKSDPAMOI9LLXRQYIFDYETNUSHGCHUVQUMFLV9FXFEFEJVPDIMD9NHIYXIJUWENKHFROQBZA9UPUU9ON",
            "OUIURXMTDOCUAMG9RGKBGOLZKANHFKSQUKPDYGCNNFHFOJDHAVZEIFXOWMMTOMPFQCGLYFSCVDDWEEUABJPEWAKKIJOEXDQCU9ZEZMQRSWFWPLQROVCQYKHMAZMQVVE9DOMLSQEVFW9EUXEUGSGWKMDWHCDSGWPXQX",
            "MPDLZQABKTUHTWULMFNXCNRKIRC99IHOVULTTFMZ9YGZWFSWZUGF9RH9TQKYULIQOCRYKCPYMW9TW9NXLYNQEMMJGALJPCQJDGFCFKYRZSRPKGDQNNVZDHGKI9VNJIQZWFCZJOBYWUIRIROSFJPACAWOZMRMFNFITD",
            "HXMTLGWDOHQBKBAYASGRE9HBRZROJDYXPWUBBBARDOPDFPFMNUJYPSNE9ZSAVRQNXVRCZHQMFQQLJPPJVKRBJDWTLUGQ9PPGQFWYIKAYLBQILJOMMZBFWUJNBTMEOIGGSZPPGBMLNLSAPU9VNKHALB9LUQKOBNETLN",
        ),
        (
            "KVSAXCWHCVD9NDCGQPJNROGNATNNMGLMODYPEGBCRJJAYFIVLP9ITLDGARAKBQZLUSJZRO9SKWCFMRSWD",
            "CGPMKTXWEYYZOE9MMHGH9GGTXJBWKKBOXJETVKTQTWPOAOZRJLHYWGBWFLZSHUPMMTZMMRPWAJHGPDWJYVJELBIKC9WJJGGSXESPPGWLAH9MYUAGAGIOGNWPXUGEMWNCMCYNHQCMFYHQ9T9XYFRFTUPKMEPABCFTRD",
            "IMPHGBNHTIVMZJGHYQYSTPQTDGUCZYYYFXCHLHGQNBITDH9WACZXATC9BYTGZPJEAXKRZTXYRJVFKQZHBCAYZJ9LYCBSSFYRMBQMRHWFVSPHEGTETPHESPQFIRHAHMUOKVROXPVIGFXNMEDPI9PVDJIFDZAJASGUZI",
            "KVEYMMXCJOQFO9AZQRKZSLNWYG9YQDLSTSSHOMXNFQGVFSNGPZUREVGCGRJXYFLVLCDCQT9F9OXUNPVLVYKIROPI9AGUNAAHGVZQQTZBXKALJV9PKJZCRDXKIWIYVMJXYYX99XNDTWNZBFZPSXKIUUZWSIVQYUNRTB",
        ),
        (
            "QJRMWWBQHCLKBUXZLOREVDQRYEQZNDOSIVEQGBBPUMACRGERUBBZTCOFSYUYVLXFPJBO9CUXIQPIGPISO",
            "HMXKCCATN9NTTGMADKIYKW9DM9HPQCBIMT9IJNDZJAZHYTJRPCTSGYDLXHZLIFRTOVOBBLWITPMALOJIWSDZBGHSKGSDJZBLSEFVTK9YLDNS9QDYEIODSXRVXUWUCVSBAIAUWNIYMGXJNKRUMCWHRECTRQQWW9MOWW",
            "DPPFSULW9KVNWJNCAMKKXIIDGWXOIZHQGUDSQPMKDZNRYWJGOBURUDPBJMSCYRGQOPYLCHLAIDGUNZALDLLVNPXAMNVNMKDGPARWQJGCXTRFXUUXZRPSSQ9HF9TUQGHHDKPBVYXFIMKFMPDZUVDZMA9TXLYNXTHNUU",
            "GFICMDOGTVCDYJKWNRGBOHAIPTNITDEK9KSKLAUFYDZLJICYANUXQKV9CJZMGHUKZDZRFTWJTMWXXSVLMCGZEZLXOMSQQEZCPRKTZCSMDDMNZFIYQGNSBLKTOCCJWNQDLJUHCILIGLLKROKNGINO9RIQDG9N9XAHZG",
        ),
        (
            "UYWDLKEQIBHL9CDOWRVZFAGPUZKGTYWDFIUBTWRAVXINAGKAQUMVSZMEVGAU9SZNDLRGPDK9MZ99KYSLL",
            "SJTKBFYODYYIJRSGFGLTARGGKJDTTSADSXRGPUXSVACHBIDEUMWUCOECFLHOGXEAKAXFT9ERRKCAZUUVXDTGFYERFTTKHWVAMYFBLAAAKHUOKKFMKQOTSIURUXFOYJNDWUAIYXPZT9NRFDWEZ99OFPVDPCPTONIXWB",
            "USYCCIDZCOZXUEEIEBJDYPMNJMUFHPAJZUGVLNRUUHXVEIVKZGJYLPT9RMSCZCLOPSZKVBPMURPAHQYKGKDRXGEVIHTPGLCTUDJOWSNBESHUOMSCYHXYIGW99CFSRWTFKGJXIXZMCKTGGINXWKUFHTCGVLLZXWXQAA",
            "QGCEMZNQPCWJIKHKPDGO9QETWDORPXRSEDRYRVRZBPKMAJHYPMWJBNORWVFOPTBVMIGKG9DXTAKROTJNYQRVDLPQQJRX9NDUZITGHEIEENGPRRNFCCJVMNFT9YCNFXTJIVEQJNEUYLBEEYQLXOLKRHVBKQEFXIDZXD",
        ),
        (
            "TUNIMRFTEC9EPWYMEMJXGPU9BBHW9PGEJOYEYIWVIARERV9YS9KZJOKMBIBFAKKIIUWGRR9RQMHFRXPVC",
            "ZCGTDRVLOKEJAMVJRBUSDELVWECRNJIOOVEE9XMFQDY9RCIBAWHPW9VZKBVGWWTXYTRZLSNBGOC9PYHIC9VCW9ZFQEDHAYPZWKAPYUQQJAWHTAZXQTKVKFVRXSVAPQ9KUIPFOZWQEAABAMOCUXILJFTHQBMZCHXYNA",
            "FFFIK9JJYJKPW9WMJOYMDBXIIJQZNLLCPKIHLBLKECBAPSNNZBBFDRTZANPRENREVHMKDAFUNNMTDSCROZMBGVFEGE9NELSMEERXOPRRJRPANVJZVLEUDTDMKPQWIM9HDVXFQJULZXOEZPFNBMOXAYYSPLENEPJUYZ",
            "AQDLESZTJAKGOFGD9RUGLBSLWCZQVOMLRVZLTMASTJDYMVOWBOUNXMGNKYJ9SMLCEDIZENJTNRDCEABYJZEOSNWGFESBWU9SQIVPPPXWJVAMPKCXKXRVHDYBSDXCRJENM9FYNVYSASIBKXM9ERGFCKY9HSBM9RVAHD",
        ),
        (
            "WCCAZJGBCAATESCXQVXZJTDFIYJDAWXFKJ9DPKQGHLQLKKR9RNGIAQVSNYAHIYMX9QUBSAMHVUVWXDGXA",
            "RBBBT9KWEKBDEFGS9XGFJWVLM9PXGCIEQRUSRLSBM9VIAGLFWUYWAJNNHVCRVXSPFWAVBFRMCUZKXPQKWVHHVRXUMZVFGVBCVEGBBIISOLIBYEKBNZVLHCIJMAYCZZ9XKZZJORJIUPUST9MGPSMQZTYBNESTDXBIMC",
            "9BAIDQQOSZQKMHGE9VNHJMTQZUVDKXKYQONI9ITXCIMJXNULFIRRNYSTZFRGKQSPVKHZTMBLBBGZWJUCRYWRUEGUQOSMJIPDGZXHSZFPAWCTRUFSWW9DD9QIVULFLCKQFTFRNPPCAPEANULGSCGNNTQFQ9GJFOYZOV",
            "RPYIC9OAJSQVUQRPXLOALSXFXOJYBWS9XPBIRSTAXOJERS9HTKWLNZBIYK9HXXDZEWTWACJVLJVRTQEIXXOGLCJPZVGTVNKIVTSEGMRU9UPSULJ9LGL9UONCNMVMMLPIXUEKZNVT9KGEG9YOQJURBMWFOGRZCUICHO",
        ),
    ];

    for test in tests.iter() {
        match sponge_type {
            SpongeKind::Kerl => sponge_generic_digest_into::<Kerl>(test.0, test.1),
            SpongeKind::CurlP27 => sponge_generic_digest_into::<CurlP27>(test.0, test.2),
            SpongeKind::CurlP81 => sponge_generic_digest_into::<CurlP81>(test.0, test.3),
            SpongeKind::UnrolledCurlP81 => sponge_generic_digest_into::<UnrolledCurlP81>(test.0, test.3),
        }
    }
}

#[test]
fn kerl_input_243_output_486() {
    sponge_input_243_output_486(SpongeKind::Kerl);
}

#[test]
fn curlp27_input_243_output_486() {
    sponge_input_243_output_486(SpongeKind::CurlP27);
}

#[test]
fn curlp81_input_243_output_486() {
    sponge_input_243_output_486(SpongeKind::CurlP81);
    sponge_input_243_output_486(SpongeKind::UnrolledCurlP81);
}

fn sponge_input_243_output_6561(sponge_type: SpongeKind) {
    let tests = [
        (
            "PQ9YDLLUQYNUKPCPGHYHQKJNBOOOSEXXGFWTEQQTV9MLPMPGRDIKYWWEQZPICNPCZIIINTULV9UXXYUFT",
            "YZ9KARNMPCZYBJFVPEXYUPWIBTIVGI9ZYEYAIUYRVYHF9DFTNRBHKSLIOSNDDMNUVYOAXKJCHUWOXIPSWUOQGGYEJB9PTDARNIIKPDKHKUHNJLM9FBRYRUMHIDKBSSEBELLBZVXJVKNMBCSHOHZXMBXMSAVQTSJBZWR9FRJKKRSQML9GJYSFSAONDQBY9YKIWUKADS9WBSNVSHYYNTYWQUWPXHEOLUPTN9MG9QCODWPWHCTALJWZEYRSBIIUMFMHXPVKCQAFSSQECNYLHEFWDITSHFUO9ZPNIRYSWFOOGKL9BFBZEWSXFGAHSOVDUQHCFYZCXXAWTYLZ9HXDLRDKNHDCGBXUHGSAXIBPIGQEN9DEFKH99RZSRFNEHTMZCPKVQVVXLBAZEHLXTUWYYNC9YDHIGANXVGIZPJGCZHN9DBJFFVMCPUQUBPTSDLBAUEQVGVAJTHEMVSWAFMAMGVSIESERMM9NYNVZLJHDQCZADFUOICJOOZITWZPZSWWUZCMWBOGLXJJWMYKIYFGVHGPLHVPFKVFPNL9OWJPYSAJVJW99VPVLQPXGVBAEKXLSF9CN9XKHD9MRUQS9KKDVOZLABWKJTGVEOMCUPNRUYRRVYGYZNFCTHXFAPRZGFPCUQLEWET9HRDYWPMXIMUMVGOZWQZHRBIGUEVWZVZZKCFMSKLXYEQYZQDEESHIMAELTUFUHCLOZQGIBKKCYIEONDYZDXWSPXGPZFFRIVJAICURQPZCNNNK9HIWBRNLWODSGGBUQXEMXLZTXHHEUJNKTJGSWYB9VRIXFYPIUP9DEBJXMQD9BFCJIATHMAFIQGDCPSVIXHZJEOBYWPXCXCEMXYNHFMCCFEOSMQZUQTKP9GXIEJHBTRNSCNZNUKSP9NECXKOOOJUFEQLMPCIZDVSFGTDBHWDJUXZAH9EEUBXKVHSGYZFYHFWKDPNDDHFFYQKQZNMQVNNOIJLFGAJO9UMIWJNDCANUWJVEOMOFMGBBBWYIRHZMVCNPFJQPJUGGORHNKVLYCCKDYJVBOR9NUMJASZZISEYOXR9YEAFPATWVBGHAMHDIUKJHEAAKZRFVTHCOQXGFVCGSUSEIEVHMCJTWTZOFHHOOBGXANIONX9ETKLGIZTYKYFBUEMWOIBTPHTEDTYSXWIWEQTTDQDVJCSTBFFCOQGOAVGMSZHASDDBXJHLAGWRGAEVZKFAPCFMBEEGSFKLDHPRSQMBBKRHVRGGFS9KWUPZFUWPOWLXBNDNUBDVKP9KZSOQQPRVSOWAWDMSRFBLJZOIYELEAPRRBYRJA9IBHCEG9SPFTKSNUMLAJWSCWUKDLXVCLKVPWZWCEDGXFZLNGM9BDKRFFUXIQNOCRGBZOGYCKORQWQEKOSXPK9QQTWNCFUFTTQCTKZRXKRIKOGRI9RYOFUBBX9OLFTTSURKSEDWBTBYMGMDHYJLZDFOKCDLTFELOLAYDCHPK9RXYKXRDJOSWVJELSHFD9VYVWDHAUTGWZQP9NCRTIRNMWZY9FGNBQNEFBSYBLPAQSXQXUYNRRTPOYRZQUHLYVCWJPILNMVEYZCPJYLVRSCRFTYUNNCVRYCDQREQHSIHFON9CBTOURVUTTMWGGAEZAFYNHYJNI9JT9LHERHBXWBJGCKUCFDETS9MSEEZPQMSSMBG9NFYCVVGQHQCD9SLONUWRSPTMVQSUQBJMBOFUYQEUQQZZRHTSQZLTTLXYUQNNOPRTYGTAEORCSNEHFJVSMCXRETKCZWHQUDUBET9QKMRZNIFS9WWGYLWOIBIMQRCZHKHUCXLVWCLOBVZJSXZRWNZVYBYQTMMGBUYFBW9HGRWBVAYJUEPSQKFEMPMCOWJDRIYOKOGUFKBKOXIADDXNEQKKGAMLIWKNIFIWEXJTGUFZNOLCHGYOZQDSOYYLZMJWXPLTAXUUAVUOPETRVJSCQYHRJMFANEKIMCIKCVBRKDJ9VRKJJALBTACU9LVRTN9AFZNERMLXZVVHVTTYBMGADFYHEQZLNJLSZAAJFGHMXXBBKAKYEGXZDVNEGDWFTRDJCUIGONKHBAODRP9ZUMWJHHGOLVKES9LDGWZCGFDEFUVKRUBW9UGSCJNXQN9BUUKIQVMCWF9PKRF9AKATGIZIOXFFKSGCXRSJMTEXENJPVDHYUAMQUQABGLSUFWPPWNTEPPSWEUGSBNZJYNTBBFUSY",
            "UKBDIVHXJLTGCKU9ZXJOAVZPXKNIQXDKTGX9OVWB9UKETCLUZCRCSXCCUFXTNODMUHKSFBQWQETODJXBETLI9NUAKBGYFXTLRMG99WBWUTRKOJIXIJFCUT9FXIZZFIXQKUJHXJQQPMAGUYFI9M9WUMLZTFDIBGMMPDHMSJUGZD9PCXIJXXGGXB9YELGJKPJSVBXOGTDWDQCUURMVEDZGXWQEEFNJXDNDXOQYXOBJGMNADTNAPQISLCYKUYEZORBJFQYKBXXGALEKHWCFXJDRCKSQTZZLWZKJROXLFYCIXFINRJDC9C9PEEZLPWCOEVBPFFZOJKFRRJ9RW9EBHJQ9ODARDENXQXY9HAXFCAOUJAFOQACOKNXBQKBNFUUJGVVNZVVSMQXGTJW9VAQJGUUYIIXBITSUDGUDJBSS9PVUNAOHO9QDVOVGGCMCCUR9HMKENQXXRZOLTZJQUDXQAAHRTUDOSUVRCZQWDUDNSYBOJYHADR9GCQEKETCDWQNAPNWXHBGARPWQ9BPSGTWRNZDOMCZUDA9NQCZVPOLIUMMTZXWQCQEDPIJHFWXHDNLRBPSRRVJSX9UPPDXWBMXPAMFCH9QJKYVGBWIRRONLKLW9BNF9G9RDASYGSDAIFNWPOPJQIDECTVAWDMDJJKMIGQFSWDTEZJOXU9EGFOCEAYQZDHVALKRYVRMRVXULPNVAUOOTTAKYDYYFISBZONDUXNCCYXPAERXTUPT9RFPKQRPXRDNJ9UQWDUUSEPW9IEFPZKBRTAOOIE9VHGGG9ZVMMXXYHDPUTPJJPJ9LOPDNSOOUYWAQRRLOIFYAREJKJFOEXGSDAUTTZXJNVFZMUAKAIGJQQHIIJSCLPBCIECCSJVONIPNKV9JFRAJXB9FITZVAMOTFJFAS9KNAGXQVEWVRDIIJRFHNENBGJYJUNKBPEKMNWXVDKWLKYJRGXXFFQGAIJOJMWTQPZSIAVHSLEMCFDBDRZHYN9CFIXHNYQBPIAIVZVIFQITVOJPFDYCTGSCEB9YYBQBPDEPIBRQFHNBPUAWERIIOEVUKTCIU9DAYRCMZZFECIFSUEIX9BRONOFB9REXNWBPWEGSALUPZVD9UTCDXBEUEJYDCI9FQYNQUGACLPQXFZSMVFPKTASINJGMHJVCNN9U9JJEOKLCVNQFO9GXOZUPTZTVFAXCUIKMPCEWSIEZNNRUJHRSBEBFJEFSGSFCTZRIASQCGKYAADSXRBDKKCRDKCYQM9BBHKBOOZECPERDHKZTPVYCGSGQC9UUSUIHIWQEERKHZLNECCRYMJELZKBUFMCVJLUGWVSDDIOBBKPNLDCGPPNRMDPZTSDNVX9PHVESMLMYUPUODYKYMYYQNXTFPJHNHHKFQNICFSTNIJMJLBXIJTWBIHVMEFERGAJSINFJFQQJUH9FN9B99HICIJHFY9BSJDVZ9UQRYSNY9ZJLQEMEPWVABMCEUUXIEN9WNKSRZ9OZJVCJN9BCDFYAFRQWP9AQGUHEDPUOGNAGKNSOPBP9UPNHDVDWZAKMSHXURSSNBIZGGHPIRVHBOMNCVYOAHLPRSSBBEQWHBGFYIVKVNIGHULMYBVZLOIFMONDAXHIAOXQEMBSNKEPTSQZHPQBXRQTCHXADDJGVVGIUPC9AZNFQNRGNVAJMBVZYNMMHFTPRAMOHLRBPGYKCDSYXQHCPRHXNNQMV9GIAKWIRTSMTLNKNKXXNIQRJHXJBLIDNUUAYWKXMUCJRYTDZIJG9TIC9MSSRESQGCAUHGVIWLZOWOX9RCFVKBV9OEO9HNWIUOQHUKXFEBYMDBFKTSOJFGRHSDQJZMOIMQUFUIUWISEBMYNOCZHFJIJHFPBUNMEGEHOAXJRVNSXVKVZUWYBNUCATOCDKKGFZZXLOTPMDDWERWJBWHQZWUIURFAY9OL9XOTOQGJNEGJTBGDESCLDNLYGOVQIOLXCDWWQ9EODKRLSSNIYVLXYJKWWHGXGYLILVBTXVQKNGGMANKWOBGWMZTRLUSTANVGCFLXMPYEPDQUIHIOKFEYZKNQJWWRHJLKQMTLRDCRT9C9JEKGIDPUXSJLRELAEBZNXWBJXOXDQDWNGMVPE9DGBCSGCNNXEABQRHZQB9QVRPUJUOSRRZSMAIBBIVHUWCZXCYL9SJJRRRGVDSNYCNVKBXUXRXTYUIPGHIXWYNSQMNJPMUMB",
            "HMSJUGZD9PCXIJXXGGXB9YELGJKPJSVBXOGTDWDQCUURMVEDZGXWQEEFNJXDNDXOQYXOBJGMNADTNAPQIIXBITSUDGUDJBSS9PVUNAOHO9QDVOVGGCMCCUR9HMKENQXXRZOLTZJQUDXQAAHRTUDOSUVRCZQWDUDNSYDMDJJKMIGQFSWDTEZJOXU9EGFOCEAYQZDHVALKRYVRMRVXULPNVAUOOTTAKYDYYFISBZONDUXNCCYXPAEAMOTFJFAS9KNAGXQVEWVRDIIJRFHNENBGJYJUNKBPEKMNWXVDKWLKYJRGXXFFQGAIJOJMWTQPZSIAVHSLVFPKTASINJGMHJVCNN9U9JJEOKLCVNQFO9GXOZUPTZTVFAXCUIKMPCEWSIEZNNRUJHRSBEBFJEFSGSFCTCFSTNIJMJLBXIJTWBIHVMEFERGAJSINFJFQQJUH9FN9B99HICIJHFY9BSJDVZ9UQRYSNY9ZJLQEMEPWVABXRQTCHXADDJGVVGIUPC9AZNFQNRGNVAJMBVZYNMMHFTPRAMOHLRBPGYKCDSYXQHCPRHXNNQMV9GIAKWIXVKVZUWYBNUCATOCDKKGFZZXLOTPMDDWERWJBWHQZWUIURFAY9OL9XOTOQGJNEGJTBGDESCLDNLYGOVQIQRHZQB9QVRPUJUOSRRZSMAIBBIVHUWCZXCYL9SJJRRRGVDSNYCNVKBXUXRXTYUIPGHIXWYNSQMNJPMUMBWSTNZFKUHDENVQJOBZGYCFQGUFRIIVAVZJKDKYYKSXDWPTPGKUAIQFDXVMCOEDDROSGZPLODXNTF9ZICPBBLRMEYCFGLBOO9MOZKMT9HCWVSKRTVLIHRSZHYEVIHCHPIXX9LMJPJUSPKLSZVG9PBQALKABHDKMTWBQJCCEFMFDNSQNID9ZC9SEWKIPGQMIAVPXYWFSXGESCYZQAJOLIA9PTCEDZFCYJWXAOEXJLCCWAVSGFMEHCFEV9XUDTKVLUWKZXTWONRIEZBONWUPSGKONKBBGMHROXWGZJYFGMANLYZYQTFWZWZVYVLWBJQZGYXSUANEQHHIHQMFQXV9RYGLLOSVBLHSGK9FIEFDFUYKEXI9DXHQFIUWXRROXKKSOJIPLVNBPVVIKTGXVDVUHDDLBNTS9ZX9DQKRCBVKOHHXUB9NOFCQJIKWZFMXBMPCBWYHSYTRUSPBTTOAOEQOKLNZLWROFXIFX9BWHBAGLCAICAOJGGJTHJJXDCBKKIL9XWKYTVW9GFPVHQLQQFLQCOKAZZHBRJWXCESSAUFSHCKTQBBHLBDDFGAQZOXVDLIJQKZUKTNJQCPANTQBNKZOSEAGUYBKHOAOITDRXPOP9NNVHBQDQ9VBAETSATNBBTCVJWFRHVAPVYQTGRDDPIIT9GWQXBGDKDK9AYSFRGJFZXDCCSMLXPYUEGLJAYKOPSLTSPT9QWPUKCJSVI9PPNMGYOGVDDZA9JDMMDCZNSA9YUDFSWZGDGJFCELSLAMZEJZINPBJPUWKHRGMXEEZ9WIZZYHFQYYGYWJSD9RELNBMCDNVKSENDEJIZNEQMHWJZDOKFNRAMAQWZLSMUTUIWHRSBEWLTLNXCXYHOQII9ZZJDTXQEWGHMZ9CSTLGFAEMXQDBXPCECHFEFTIHFRYZDOQJOWDJKNOQYNTIZMCANLMPWROKSZXFTPVD9XJUFQBXQRTAK9RI9HUYQUODFHVUKTABSYPRCZYRBGOHPFGDNKPMYKNZHWRNARMGHDKKFMBHZYTIEASOOU9NQKFJJWSQSKLBHQ9PIYTHYCNDD9COGLIEFHVTLDXXPZMBHNJRJHZNJNMWCMDNINLBRX9OEZFKJOCTQJQKHPNEMFGOFDR9FBB9UNCWL9CDGZXCUCWIQMMETIDXAWDIDMNNP9JRUVXDYNJZCUPTVKYJXXYJFBUKCUBIYGPCGDYBTKJQXMNKUQXZWQZ9FVV9GLBUXQXKMANGWOY9OLZJF9LNVTE9LECMCXLGBAMGKD9DHCBXDM9QS9M9GILMQOQRGSTWJOBSRNEAS9FUQSAETONMFFTBMQLGK9ETEEDYKVHWCX9TPPSXRZORBPOIL9XQPHTXHHFWFMOMKLELQZRLTBFZUZTXAZVEWQGHECENONJWMIJMXM9PZBP9IHNCBSJBMSITMPMUGFLNXALLEDBMOMYFEEUHRHRTQ9HUEGEOWPBXHPUBK",
        ),
        (
            "OLTQRBZYZLID9RKWBN9LQVFNITBGADSKAIJZ9NZVDAQVHHQMTICZRZKH9FKDMLICPPIT9BRVW9FBQPORK",
            "XRWLC9PXAJORZZSWHXKHPPCIMACANEBAFCOGGWWZKFBGAEZUYKYJSNGBYJUFIRYLYLMLUBLJZC9TYOBECTJUDYUBCBBAKIWOHSZL9GMAMMGXPTNXVMUEVDHFSGFOTTWDPJB9ZXPBPVBZXKMU9BEDDLLSYDHGVQSOYBFSNJPJDZENGPUQHCPAERYLIXOLVWTLM9PXWEG9KNTFLRRPYBSBNVFZCV9HRGCIGFWJSOLFLTVHWZPHRQDUT9LEXUNMNIMNNJWFJEOFMDNHZDIYXDDZFNCORVTZY9MVPBBN9RKTYUJRTUE9UBIZMUZBFPBOZHOZTTXAETUPPSUS9SNSP9MANRFEPGRLAAZAXHFHZOVKDBIJBFSLJZMUUJYKBWLYK9KATYUCPMVKKWAYYPAXQFMV9JD9WNJHXJHMUWEXMLYCMYRFRWTMKTCVPYKHLGQOFROQUOFCBYGIDEXUNSRQE9RKDAIZVHBHRRYLBI9JJAKMNJAOPKJOSNBMNYFLYTZV9SJTNKNXSDEAYYXQNMRIPJQLYDYZWKGVPFPGIBURSOOZOFBTUDAGOMDZNCCDGOXTMIFIVNUQYMRUJPDLAGEVCYLYVFGHCESLYPQRMJVBTLYHUJVBAPRZGDOOYQYLPVGQMQQTSUFNWYABQODEKU9PENXHHQMXF9LMWVSIH9DMNNIOCRVQUTZLHHKUXLQGZUJNVGRQQCCAOJNGUHXQMNXZSFY9YXJQXHHMMZIFTTFNDDKXQCCMREYSYENSLMQTJGXJFMVFRVYIHHJJWACYVLOUWCJFPEKABVAUJ9EDPYIOVMOAXXLZRQBVRDGJKHDDLEWYMKNVDOOKXEVYAHKYBOCOF9G9NWSUPKSIVQAJZZXPHHBVJ9SZGFPTKBZEYLBQBRCZXFFUFCU9QPFAJALQ9VDGQZFSNZPJMTAU9LQBMMIXYRWSMMUJTVFAPV9ANUVUBPPEJVDUCNJ9VMMZVGQWGPHZTGGXYMTSLAQNHBZBPGDOTGPWBTQUAAPAWZHZPOAECHEAVUVELDUGYJDOYILYOQ9CLSLMCADJAM9C9WGEZEAEOIVSDN9JVUCCRDFGUBBUM99EIKXOGH9UZIAMDQJNBKMWURXMFP9YEVCTGZQMKGPYXQYWIVTFJZJNYAXZVES9PWKLVRXCJELAUCVXPBRWKADPFYIJLQBZAKTCVAWXOJLEJMQLH9DQAXZOIKCAQTIVBELTCNXSHHIYMUKPDUYXDQSVQGQJFBAUMPTHECHRB9PEEBSLTJPDGTBPSZQSIGABGILKUAOQVDOVRP99VPSQDGGDSDOHNXYPHIPFVWINO9IVPHFMUIODXDJCVYOEOMSCMWXARSVXMVJJYRXZJGVYQTDIRIMWZRTXBFMLLIJHCJWSNVWSZBIFIEEWKDEMKGDZHXSPQE9YVVQUFMHGZBMSHEFUYTYVINYW9QFVXDQSXBASAELCMZIPUJYFGBEFSFWDLTOZIRJQMEZZLQAQVVWXNFEUEGLNVNVEBHXXEQTNUCX9DGQMEWSWCA9GELZCWNWZWCQHOWJR9IY9CITG9DKSXTGJZ9PQHKFQDXCWERAHKVDDOAPYXGRVDSN9BCDJFVIMJZTLOGS9ERSDEYBTLRQPCNLPXCDZTK9GPFLMIXZOKJFVDJKFAEFOLTABRJWMYCWYBXHERYYJQJXDPDSZJWIOPHZVJZBDWXNIJZJNN9RIOPYRWQILGQYKAIBIYWVJJVSLVOHPOOP9CFETJMSBUDCQSLJV9JINPEIXJAORFGE9CP9TSYCUUOXWAXFKLGMP9XBVFKLHABVCB9ZIQPALFGIPOROFSCYAVWOZCYANNENXZFELMYYQOAUPZIOTHQDCSTQQMMZEDATFTDMPLVZ9BFJRMPKPJPTGAEUVSAXELI9XHXEEAHQGVUEGPPGAZTAIWBMSIKTSIZVUQJDQBGAAU9UTFTCZSCEOW9VCJTHJXABHLUEMKTWHBVGBZJHANXYJQQPZRXLUB9UBPOERCGELJCDVPRAGPNIKTWAJONZWZJPILSREVXNLWLPJRPBPCEFDORMMTWKFOSQKQGXRADDOJSHVNIAEVRKAYEYTKBHEDLJCSUQHAXGYKXPEBTIHGOJBKOCKRWVOTMJMDTFJDVD9UPTAYBXHJXOGMYEGWFPPEVMRTS9EEXRASDTHDPGKONNTLIPOGIHRI9FHPDFJAQJQSZX",
            "OTJPWMRKPLUDFJEAZZVSCFFSPGUOGZNPQPPJSFOIRQAKWUPJTYHBJDMPCTZTGGCGIQTKZVLMSOQKGEONEZPXOFBKTTHHLSPLYONTQBIKQVMHROGTMECOZMQUASUIOSDYZQGVBNWQPOTREEWDDZNKTWSRAZU9JRDCCJVZQTJZEPPDIKMMKNNZPMHUSBKCNHTJHGKWRLOQMXEINLWAUZSCXZGEIJYNFPFBHNIKDNLAWNFNVUTQX9N9MVIROTFUEYUBPFAHVQBRMTKFOSYLKRWEPSBIXYPMMIDYEQVWVQBFFWYVZGGXEXPTUZLBAD9FJWNVBNYVQZUSQKMOVSBN9ILJUETTEIBAKDAGGOZOHWUJJEJJVIAFIZPNFKQSVSB9ZEXBGOIOEI9PQ9YRGZLRGJYYJHNO9ZLYKUKTQCTSHGXZPZGRSWCRIOIGICGMXLJAQILFDTTUMTERFX9MZAGMSNGHQQPREBPNASUJGPMGSWNSDOQCYFFOIVNQCUOCYP9RNJDDJCPOGXNQNHDBICHJLEXLGGIFQNOPGSIJDNNIHQJRXDNUOSYQDD9XBNZNUYWEGYNVXHJDQODMBPAYLHUCHOFGBBJ9RLP9ZABYQCIMPMFPQFFPQKTLTCPWLYTPGYVQSDFAQUTZQKNRFVUHCBDTXSXFVGWST9AQGROGPKOMKPBXBQEXIPWSIHYUJPPCXCJWPGSMLDVHRRPEQ9DSV9CXSHXJOEXMBJNECNHQNDLLWQZ9NINYCJDVBYEMXXOCAVXWDCUJIAIDYKWYESRWIGCJFSTJ9VMBVAZTLYORVCKYOBJNPKWXPIBNM9ZWPWRVSHIBSCSXRM9SXVAQIPAH9ULXFBWZRXYCSQBCBY9WJYKDJIJPXXLPJDJFXZBTBRVILBTJAXJKIAJKHKXBWMZ9ORELSWEDCLRBJ9KFAELQPQRDXERKAYJLY9IVGDRCWDXB9HYJDQYQSIQSXZFNBUVLMJUYXWHZRSFFQEWSMQUTUTFAIXLAIOOMOORMQ9GTUWRTZMZEFEYDRF9FJJOGHOCOBPJJERYTXKEVZZYYVPACMMK9LVSMVVWWWTOLINVTG9ZVUOKPKCZLRVQJQGAPXTQGB9SDGUZIOKYGWJQRMGCXXIZUVWPJEHYE9YYLKGB9QTCOJJLYMYXWKVVHYGRPPOE9TDLTA9BCZD9IKHTLVDULQXTSHUVNHDFQVGPJRWKALUQA9YQHXCQ9DGHKZGHFCZVSPK9PNMJKSRNQHMTDSAVSJHXET9BORFCFGLWXGCQZIJHVHSZIVRZAZMTSPLDHECICRUWKCBGBCMBQLKJHSABTDHLLQVYZIFYUBZVAYFBPWNOWXBG9RBGFPIK9WSWPDLSAYWVTTAIPIFHNBRUEICATIPNRUPKESTBP9NFLRFBNLFYKNTZZFNHMMNGMDQP9KJWBSEQM9SEILC9VCBGVVDUUDTBKMOFMBXXXVQAVSMRXCYQHKOEMFITYIQKCSMYZDYUHNQBRTVXNBLRQHNKDCBXOVZBMQNUIMAFOISQSOFBWTAMQSTDGMIXZJZXASTLHHLSGZRYAONXQRZ9KUKMKVJQJDIDSBDDAWWYAGCPFRMLX9BPNRTLLIVMJMYFZJGHWYKPVJAVFSZZDEJOWMHGWJUWUFATJHFTOCNXGDHA9OYMPTQCGGQQDT9LHMHQHLL9XOXZAEHFPFEHG9YSO9ZAHSTEJRMZKZVTLOFZKDV9XKNLGWG9EMIOPF9ERJFSBNZTXXINUM9BQCPVOVEYRFCFANPHIYMHVNXN99PZETNUCJGAYOHGEPRJWNNIAMXFLEOIWSS9MMHJBLIROWGZODCBIHIVUEGIEDIFR9BO9RBNETZPUCQACIFOXYWGQCGDKSQFZMOYCD9DSMIXESKXYYAZEMZDNYRVCGXZPMBXPBTYWDJT9GPHFFJIB9NZL9OAFTDB9KQUBGDZNPGPNPGFPRGEXO9SHTTFYVMSPGUZYRWNXMULPSMPTMDMKIVRIHNUERTZZZ9JPCQJGGQTGBSGSXDJTERTLFQEUUPWWGCMUE9MXEIYSDTNNDVBAUWNQYVBLVCZEZJYBCII9PXZNDJ9XLBDEJUWXJFRH99TWZPGYYEFROYWUCDWQVCUJGGACCDNPISFANZPSPYYJPYHDVMZXFAWBUGTVPGTXXBQCLU9ZBVULUKPQUYDELJHUKPQMWVNXBIZTQMT",
            "VZQTJZEPPDIKMMKNNZPMHUSBKCNHTJHGKWRLOQMXEINLWAUZSCXZGEIJYNFPFBHNIKDNLAWNFNVUTQX9NHNO9ZLYKUKTQCTSHGXZPZGRSWCRIOIGICGMXLJAQILFDTTUMTERFX9MZAGMSNGHQQPREBPNASUJGPMGSWFVUHCBDTXSXFVGWST9AQGROGPKOMKPBXBQEXIPWSIHYUJPPCXCJWPGSMLDVHRRPEQ9DSV9CXSHXJOEXMBJAXJKIAJKHKXBWMZ9ORELSWEDCLRBJ9KFAELQPQRDXERKAYJLY9IVGDRCWDXB9HYJDQYQSIQSXZFNBUVLYLKGB9QTCOJJLYMYXWKVVHYGRPPOE9TDLTA9BCZD9IKHTLVDULQXTSHUVNHDFQVGPJRWKALUQA9YQHXCQPNRUPKESTBP9NFLRFBNLFYKNTZZFNHMMNGMDQP9KJWBSEQM9SEILC9VCBGVVDUUDTBKMOFMBXXXVQAVSMEJOWMHGWJUWUFATJHFTOCNXGDHA9OYMPTQCGGQQDT9LHMHQHLL9XOXZAEHFPFEHG9YSO9ZAHSTEJRMZKZZMOYCD9DSMIXESKXYYAZEMZDNYRVCGXZPMBXPBTYWDJT9GPHFFJIB9NZL9OAFTDB9KQUBGDZNPGPNPGFPUJGGACCDNPISFANZPSPYYJPYHDVMZXFAWBUGTVPGTXXBQCLU9ZBVULUKPQUYDELJHUKPQMWVNXBIZTQMTN9XKFCT9JPLIGJB9PVUWYTVSGTJPVMPTBKKXNQLUWG9APLBCPCA9LOESLDIHTWCCGBTGBEMYEOEJUGXYELOYNOHMSTSJKGVWQYWBKWFOUTZG9TTIUETIUPOUTC9OMQ9NBAHRLPPRHZWBQASAUG9HWFHJJZXNKVSGXRAVBQZDQFIVREMMKQBGLSCZ9UXFTGWUHHRMGTYNLLWNJYRXFYBYDCXOUNFOXGTMUTCYYXNEDYQCVOARFVFSA9IGXZQDPTWXZKMQDKHAJQA9X9LWNGXCCUIUVQRY9PGCAYEAK9XJMQDUMVJ9GWLMWPKGTIKARDASMPHYCVICSU9RB9ELOIIGGVCRNQNMWWHYKUX9IARFYMDUVOFBPPJONWRBK9PS9OMKJJCXGTXMUI9MDSIMYHUSOWDTAXOTPAPNKKQNCWQGMZNUFIJOIUHFW9UBPKNDPNOZG9GISAPGCEYCSHHJXPWQXDPCOOIATLNVDVOCPMQGUG9JKRDHTWEYZIVDYVNJJWWSV9PBBEBAMFEDNWJZHLGSITAVCTROZJLBUZPGQMUYXMDRXXDSYCFYLXQVRFUQKBJTCGBFJENFNEBFDEETUKRH9YJJWYIMEYTATCFXAPRJOLRSNHSRGD9EJWGOIXIHRAHSDNNSZPUHKNJRVDOUKXRSPBVTUSWGHBECWLYMBTJHG999RKNYRNSTQFHKMSFOPOUCEKEPZBYSRCAMRACCLBZYRRXQISVDSTETOAPYSFKHEVLI9BUZNWCPT9RBKNGVELZXPJWBDKATRHFUUBHXUGPBCVGTP9QPZXAICRIOVPXHMJCYLNJCNE99FRSOSSEWDOGCBBXBXDNSVSHXFXDGEDHAKZDNLDKO9SGBLIFGHY9ZSHYNRCIVSCJUIVAUBK9WVT9ZSZXMOXMUAETPDWDQIRBSYASDYIDYH9OODRNDJCFZGCHFNEQY9OWWK9KPUSYIYLPHT9IZKOJGNAQCCXT9OWCBSDHOSAEMYJHEKCXQGNLRTFOZDUX9JEHHOIGTAMWHDSGCGZEYLQYSFUTZEIQMCKRALIBBHFPCXSPVJDRSXPT9NSVFHOESESLMRZXEVVGRGPGUKNSJBOMOLLBSPCSSXZVVIHKYTKG9TSB9HWMGKKDQLUQPOIAVRSAN9TDPMJ9PIW9FVOAGIEMVYREJDHGRRKKTKUBFCERFCJVYWCUMPCXXVZTRNRNDAUMYUVAMPGXVJAYMWXVYXCSUZHXEXLZIMPTYUUTGAUGIFQVIWYSHMXAVLLAZYUOUXZKIIXMZZJQB9FMUGGMIVYJYNWJPUOMCLRGTPNIHEKRCCGLEMLKNDFMGWGGNTTJWJMJZMXWQMZMPHWQEZJUIGPSPOMTURHVXIDKZUXRF9RBOXQROQYJP9KVXRGJWHEIMSFZUXAOXHVDFBWQSU9ASNPUCFYLLMTIERVVESALLIBVDSYH9KFMCUTYVUXOZACOENE",
        ),
        (
            "GYWHCDMUIBOFMJTHRDQJQHEXPWNNLMBRMNP9WWQQ9FJQAEWWFDZPRQDNMIYXYPDFRSJVATBMGOPYQXZL9",
            "UTVYWUXRYLOU9HCZALSEH9N9MLYNVNAHGYHQMQOTRBN9GUYNAT9IUGRKHOCUSGUEJLPPI9ZAQTAPYGMEWUWTXVDBGSXKXDKGOQXCAJKMPCDUGJXVTMDBSZTIXJHAPPYYZV9COFLKLVQZSPM9RFWZZKXRTNYHKRVOEDZDFABCGMYGERKKC9QLEJVWEVTNBVLYCFQYMLVCEYFWZGCQKLZARUITWKKAPLZHDICKNEXGJWLGBBHBTLWMZLBXKKO9DFSEMJTOWYHDLO9TSMAPUQUTKXPDYPDFMMLZDSPP9VEJUARDQOZCWZMONYMXUPSIDRTRADTXSHEAC99IIWIQBOPATNUI9QCAMAUDJDAXAPJLJ9BSDLVCGTLZM9BMCNOJYFUBLQNSAKKSOHQMDAOHHVSQWHFZWRYZ9GLEGGDDILKZQFELKLYGZUISBSLJFDJNVYNXIFI9ZWLNLNDZXYOV9MCLVKZZYMTNRKGDGZYICYADMZFOEILZPHGPIFCWNATHNKS9KJXVPNBJKPCZAQ9BTHQIVUNQNVMBJDXBZGYILGGKXXCWOZYRWCQKPMCBXGWEU9HTJWQESOSTNJWAINOBCLBV9KS9DXLWVRARPIBOXDGUWGELU9E9CEKBWOYLSCSMUHJEMLUUGTXXINHFKEWKYWERTDYFHABWGDVDBULGKO9JCTOZHY9TAUGYPRQUGGAFMFXB9TDBCZXCIXEHXBDPEAQPIBNPAFZNMTBXXUR9VTWVYHLWZRIKWFSPLHLURCIEWP9YUITOTOJBGYWHKTOBOUEHUEIDTKMIKXCIRMCAQUBDTAQRVBCMKFUDHQV9ZFYHJNUWNKECCPGDVSQALJL9KMGTABFJBJSQCWWKVVUJXEHXGTNFUARSBFQMOS9LAUDRXXAKASMRKIDGMCDOVSCNKQNLMYXS9UXTTKQXDBFSO9METVWSLZCPWOYKQP9JDSICQNZQLCZLMKZPSYPBGBNUAHOCWTJSGIGIRTKMJC9XGWTAJAYDBYXOBNSOOJPGQZYLASCSUXDDEAKSXOFHNCRXKZTFETLJVTNAYFPFBLNMN9CEUDNDQYZMOAEFJNCKPZAHKPEYXPDSNC9BQPVZNGXSZO9XW9UVEJRKXZKZVHBLSQOKBUCHTDXMUVERJUBWNTIVGJGAPTZGLCECMEAAVTPASVZKXIIWAXURYRZTCDSDNOTKACBNKDHDNGXVUHOQRHIVFCWFNUSPSYEWQGSHEQCUKFOXMEBOJZYXTPJH9QNQNVSYWQUFKT9LSKNCGZBQCHKXSJIJLNAXGIHMMNVWAZOAPJPETRGIOCT9ZBRIFSBDPXQW9WZTFLEBLAVBWAGRHCBSOFMI9JBRZRFLGTNPWRTPXU9CNYGWFUADTPLJCGGYBRBTG9JWUCHMPDBIXRLUXZQNHRLLOSDZYQHIPKQVZTVCQAOVLVRSNDY9YVMBBJMNCAK9FONINUSEPDXEXCVDDNDNJYUJVJLBYQXEFKUADAFRXOXZVXIORIRWEZWYFSCDAWWJQIZTMFUXQVUOIFCYWGXWFHYMFIXPTNYRRJGFAKK9LDZRULVCAGGVNOEAQGQJDMZPXQPWJDAAZAQPPAJDIATA9KIYVNXPLQFDFDLGYUETKGJDMTFIVYDREHPZBJHZAMNWHLMCBPSMYEIEHVAUTOGOBYDAQEDRBTLTGB9NGCIFYVVHXCIHJSUQTOTKXUFBDGYEIJL9FSFQPPV9HCCA9SGWFGKWQIDYRSS9XYWAMVV99OO9LPMT9YBBFSCILDHLELYRXCXDFCYMMDKPNXEZICUEWXVWOHBCPGATDHWRKHSNQYE9WWSNZMDWTUKFJZHMMGTQRWBCQKVSVMRBNUIPGQHKRKIEPJKOEUXMKHMRFCZMZSSOCPM9VZRTEIWBZZAT9JSYXIDOISBMMKXJWQRSTB9ZSYBIIGLVJYN9AEAJHIETTVRINBJWZXRBICPHGEDLUUCX9ULPBLFHSRI9GEWUYS9ULISTTKGWZMJUYBIGPPVWONUICOGQQBDOJPLCXPGTJRFBWDUAZSZEAJCZTVDKHNMSMPUVSEYFDOXGTCBBRIEMLFKIBOCD9ZFEXNFBCWNWNGQOXMMNXIMNKULQKMADPYDY99BOTU99PMJCTWKCTAGPDFGAZUEWCFEWYSYGNKGDKJDENSLAQKHFPLJHBQMWOWWMHDQFFACBASKYOSC",
            "LFPVMJUTDSYWJTNQUNGXOODHDLIXGIPRBXRZATRSDAPNVTMZLJUVGINDTJT9WDUPVQNSSTHXVDICZUAJPOWELGMKSCEGURLNCZYSBQTCNEXLMNUCXCK9LSGZPHAMZPBHG9PQBAEWUHZJMWNF9NSZMLRLSBSBVUZYUQSLTNRDRPWIZWYESPWKEIYRKDPXEDEDRQDZSVEMYPJVATW9VGJBDBICZBXDUTUFMQGLFRTKGRTNDJAOSAWZLNIIEVZWNPYXZQWANEHNZVFPWJZSIKSTRJRUISFSEZXZBQYPIZYDFEPWLLJTSVADASWBLILW9ZRFE9TOZ9JXCHSGZPIPUNJQCA9AYPVWLS9UVK9TATMQXMH9DMXXKL99VVNJDGACOCBBHHOHCZZLOYCKEXGVPIF9CLYKOWSLCRNKOKHKFBROOA9SOB9OCEHGZEPQYOJPWSULYFMBTTBKKRHWYPTCBQAUHHDGETGYGPJETMRBPMWVEBNTVSMQFPRPTWPQPWZYPAITYSCXTOICOQTDYPINBZGV9QVWSEJPJTAQAZYDECWJKYZWYFQKPC9YBIUMHZ9DHELUOV9MOROBZBT9EEI9BCGIDRGWGZBAPGFWJSYDNGJTLSD9GMJQKTGJCQWOJPAUROXG9H9ESVPQAUOEXXKSXLEGLDAAKODSVMWUHNWTZZXZQQSMQZAZTBACMEGBAPZHNEXAIVGURGGGSRXFEVAMQQJORWZHZOTFHANGNECLUILGZPSOMKSFRKWUSLGQFOVJSBIKPLGRHAMYRJXY9UOMXBWYFQCLKEHVEZLPKFXRIKBIOJRTSSSX9NWXAVCXJGFUBZXPUBRNMVQIXWEVYNHQDNT9RDAXSLXUU9AQRKWBDMJQLDPJVVBCCSQOAMVOQW9ABIVGGFMJWCHUBNIBTTOJGN9DKSEGXDYLIADZDMESDRVMQYLUYRVUKWXEGSWNIDTDGBVGHKYFIE9ZABDABSIRSQYQNYKCERSV9YIEMIGSEEVARRKMLPOERFSZOCLKGNMFBGHJTIWLSJKDRJIOC9IFNHNPTT9NUEU9SPMSAIOSTWJJSOWDSTCWBYIJKHRPEZWRYF9UVUIZNSVJF9KOY9OWROPHJRVWZSBXODQFWASBYEUBBJKGQPDF9RJO9PXDVQACPD9GQWFFZHWDGQJLPKHHSK9WPGWR9HCEDATSKIWZMDBKSZBDHFUFDIBEFOMPBQXTSAHWOPDJVMREQRT9BWZASMVONGRUTMYOHPFHAKLMDSRCATPQKNGNXWCHXE9CZZUOGOPEPIUJLJDVEEGLDRQKNFCAQQNKTZXWKFBGJCRAVMGWYZRUKNGJNRHWWESWP9JIUEPQI9KXMYFJJ9TPXSXSZXG9JJ9CGVRWT9B9DVKAXHI9XEELZBH9GVXWHACLVTRVBZDORMQJJANOUDWDVDE9YVLK9NTSMYXTRNDBNPPSZGKKEDVLQHIXNXOSNJTAVEUO9MECDKFLWASPXBHSIVKDROUXJWBOQEOPIRIWROSUWFQTT9ND9OAX9UBNHUVMHISJQVHSGPLLUJ9VAGEDJENM9GTPZABZSACSDBPMGAKTYXGQZTYYVAAPFMSSBBDJUEBMEVIEOWAWQGMPVU9RDBGPKPNAGJEYUCM9CII9DRKRHTXYZWC99UNPYZMZUJJN9YOLEPTGWQHKYUBIATWGFODBB9VEAARHEOINPXMXCNBFSHDESNTAXJSIDJKHJPZUQQFXHTDLBCQTHOKFBXGOLSXZLETHMBMMN9UHYSBVDLVJGEWGJUHK9HMXFQWIBDZNHMPAUXOEOWSJWFWAGNEVITFKB9TWC9GOGWDMJPNYLKOQCNVUTKPBUPA9TLDRKJVVFMLLDIDMVZLOOOUVNUJPGU9AJNYXOQOFUOIORGUSOOMUBJCTPNTSYYWICUMFBAYSFG9MFUKIQGKYNJCVWHDTZJKQIPZISPMZB9KVRHPGZCRFWI9R9GZDTLIPRCPHWETCYHZDGRLSDIBSUMPRDDTIFYCMSCMIFUQX99BEQCWQRWTVEIGKOH9QFEHHYKZZKRXLFXOADLZZDOCYNTXFMUDGWP9VHONVAUF9GFERTAADZVUVILCGSGQPJJHFCIENHUZVKHLJMHMCE9BRRTSXWOMWZOZCE9EMJGAXXOIZJJAWBKADWAWXWLWDRXNTUJBLEXRYNX9FHQNQOWYIWTFKFTM",
            "SLTNRDRPWIZWYESPWKEIYRKDPXEDEDRQDZSVEMYPJVATW9VGJBDBICZBXDUTUFMQGLFRTKGRTNDJAOSAWLYKOWSLCRNKOKHKFBROOA9SOB9OCEHGZEPQYOJPWSULYFMBTTBKKRHWYPTCBQAUHHDGETGYGPJETMRBPMAUOEXXKSXLEGLDAAKODSVMWUHNWTZZXZQQSMQZAZTBACMEGBAPZHNEXAIVGURGGGSRXFEVAMQQJORWZHZABIVGGFMJWCHUBNIBTTOJGN9DKSEGXDYLIADZDMESDRVMQYLUYRVUKWXEGSWNIDTDGBVGHKYFIE9ZABDADF9RJO9PXDVQACPD9GQWFFZHWDGQJLPKHHSK9WPGWR9HCEDATSKIWZMDBKSZBDHFUFDIBEFOMPBQXTSAHVKAXHI9XEELZBH9GVXWHACLVTRVBZDORMQJJANOUDWDVDE9YVLK9NTSMYXTRNDBNPPSZGKKEDVLQHIXNXGJEYUCM9CII9DRKRHTXYZWC99UNPYZMZUJJN9YOLEPTGWQHKYUBIATWGFODBB9VEAARHEOINPXMXCNBFSVNUJPGU9AJNYXOQOFUOIORGUSOOMUBJCTPNTSYYWICUMFBAYSFG9MFUKIQGKYNJCVWHDTZJKQIPZISPMZLJMHMCE9BRRTSXWOMWZOZCE9EMJGAXXOIZJJAWBKADWAWXWLWDRXNTUJBLEXRYNX9FHQNQOWYIWTFKFTMSN9NZHKWRRM99V9RSULELPTCRZYLUGJMIWFSRSFFVUUOZCSRDYWYUWAMUMKICLXWL9DGKVERMVNDDWZGK9NWZZKIDMMSNALHIDCLZYWGH9FGFMROYVFOORGEZBWU9EZQUYONQMMZQXWEWCOJVBIBNFSXDSKXOZMHAVCPVCBTV9VHZSFCRRKOELNZZHBGOABULOFGXXRIQTSOAQIJWWUUPAMQFZJXBWHHDXPQRJWWYTEOSVWNHPSZLTPHEOFMCEMBFYAPJJNEKVDIQYKAKSBBCZOVCCJGCJSQLJBWWIWCRHWKPF9ZBKGLSRFJLGQWNNTWCSPSV9BDAHMNFGRHBBKXSVPYOAQFWPJBINPCMONBALTFNWBNJYMGLFMLFWGB9IIOUSBZHXVCUBCAEXJXNQTUGLWYKRGRYHNWTJBJFSAXGAAWVGJYSCCOAS9XECTPBSTKWAKXFGHVZXILMOICBZHOCPVDCUHJUWN9NIH9B9PJRYLGSVEAAZGZS9ODHG9JT9XEZZQOTMHFEAKUBLLIEKKFZTSLAXUZJQEXTHJDZPDTAQJR9LQCVVAGDPGIVNUGOKRDZ99NJWKJSPSCVJCYBUHLQDLL9CXGEMPKOJY9QICEKFFEKKJEFDGP99MFCRAXIXFUDJZAYOOLKUMOZFBTPHLUBZHDVJRPLVDFBGBTSQOFYXKTPCJPSKJGFOLXBJJQNLPSIIXAFNHCTWFLQFUODWOHJQJPLNDRFMBWUZHCBCWSZEPUQVRENZQ9BVGKRQBGFIYFIRARETQICPHYWUBAJYZMDMSCSRDQLEWVYYCFUZNCXJRSPKPHFNBTISVIPPWHMSIKQHOSCQMZUHKM9NGBZPIJVIAEPVRCVMSNBVTPRYFNQEGHMEHHYNUZCVQHQRWRIO99XBTKR9ITT9YOXSSDLVZX9FUZGW9IMVEOIZBCTHMFVEMXCEQKTAVJID9N9A9KGJIWR9TR9JVFUHLMMTINXLNMWNQGOAWTVQHINMKUPIJEDWXXBKUETLATWL9BLJ9UPVFUSUMTAOEZXQIGGFPY9IGMIJYOZYLOBFGFRKMWHMTNAVSYJWDSPIRYICXRLZGNAISVNRGG9IIOIOBAWIHWKQISYQAKVGBXUBDPALEIEHQSSENTGJIVFEQECUBYVONVGREFKTHCNBNRGNFULLVKMWBBUTAQAZWQPLRFLDMXDNESEBAIUEQ9N9VHTBRTDUEOZQLBBYAWLGRAQUIKUJVKMMAJPBQLBVODHFHPHIATZHS9VQSOHICWEZJQKHXJXZRAXQRYHKEPEZLMXRYLDCRFPSALGPDGSEHMOPQM9UKIRTAMVYAZMKUKXEDIIXADPHBWPWKOJAOKVVYIJPRQASFFYGUNMISRCUIQELMI9HHDEKMSSGQLDKD9NANMMMNCTDFFJQNDXZIUQM9KTMLLHRKYNICRJPQLYZWIUKPQYLLGTEHLKHPLRDOMWU",
        ),
        (
            "PGPSLKIOBGPHAXVN9TKUYMORDMASZEMHWTWLKIRSQRWBWBFXUDQWWXNSFTJCARTCBFKVWFKUXBWRMQOTM",
            "DATCPNNDZCELMZCQHRFIPFTADMSTT9TIIHYPLFOMXFBWAGMOOYIFYGCVKQUJXBNDXWHPIOAOKHWPBGJ99JARBYFQXBUMC9YRJUXSXRPPFBWPASBQRIHRTAKLYUCFAACFGOHYLYZMFJIXYUAMYVMGBKFZJIHBLKUDGCXXHPZITDNSZYVMUMQK9EQSZLTWGAMYWIBCBOBOXRUIPZBAYAACCPQNMPAXBGOTGEOQHDRTGBZZE9PWCGXHKFYZGWBIYNDIVO9KVECFANMYMAEELK9MPXQSWFBJVBOIKQWSRUMGBAFREZQKZULA9ACKIURZYZRXME9BEPOGNEMWYDTFQRPWQFGFRZQCDOAZNWMNWQY9UVYSSYEVOB9DG9ETQFIVRTHIUE9LQLCIGDDAKSOOKOOSZLUVCRTHEQBCAXKCHGOAXNUVQNBMKZQUYTJMHYSX9EQLLWWDHLOXNKDDAHYIHTQEVXXVKSWDSOPKCSCQEB9SDHCYEEQDHPBXVMHKNDQTZAHXMEEZCAZEYHISYXAKPRXKHRAACREAZYBFKEJWIXYQRZSR9WSRVRUOAGWUYOHPQYCYVDDZWOLPGBKBOIZVHJVNQRCLIV9HI9GTLGOBCN9DIVVBZULKNXMVDCBOQKRPKMEPVOGUS9GBRWOITNSNOFTLXWVAEPVNTKNLRRZT9BNQYHLMXOTQFJSERNHJY9IWMXYLMQHLTFTOSXGEKMQH9IZGCXIYABRJZWQWVZUNHIGBVJAVJOA9WHFDBDIIHWULDESFAUDECCQMVNUOFDVM9LPHWLJCUSPXQHO9YBTSPCGIMDNQXEXBFNUWZKTPMDJWMAIWLGLGTLXYHKFQXXTYZ9JXDYVNN9OBPESHVTNOAEILHFXI9CLAMOEH9YVPEGAKAQAVMATAOLWNOEFWQAL9BDOOJWYVVIAHCHZKGKARPISSAABWVHENWLWUKAKCRTNREQUWHAKJXJLTEXMAWWGMPRYZTJ9OEGFMTQAXLAHQYOGJHMIXRMNTFDMGERHBOQYYFNSFLHVOKKLLTYRJEPSJBCXWOOGKYAFLAXQOJO9TOA9OPWLCDYKXYMWHPNIHZQBVQAWMXFWWXWZGC9OBFPNTSQHVZNLTJFYZ9VLHBHVDIQKPC9GKPZFYVMJLHOTYOWZETLAKBNPBZKRA9VGYSAO9NFKCPFGFYW9PK9YEJSODXJBBMVIO9SDELTHDEUUJ9KB9Q9WTKMHZUNYPFNKKJMDFRCWMUYFQAQUGXIUTRXXWJTJOIQFCZXUUJWFGJCMMCTEOKWSOBSCZSBHJZOVAVXOWZUHZXADN9NCVRNVJAIONTOCJNT9LNWIJOSPQSABIBGSXDJJLX9JJIBTTIRCFTAKVEYHAAGOXPGQOP9LVYKZVLIQVVTYINTW9YLP9ABLXJAJBOPCBBWEVRLBOFZMKGJVPVHSVIZ9NIQFTXP9YBT9UNRKTPNNBJFIQWWWZWCLDVCMZSWHLVF9ILLYMXDDHDSNDAZWQUNSXLWEBNZAQLPCOEKUKWZIUSGEFDCRUNXFA9ADKDVZCVGCD9JQGXYFBI9OFBHYXHOHGWCYNQPYIVHUNOWMCBK9OALDWJHXSAKQBDBZEGTSBXEZYVPEJJKMOOYWADALDXZSCXKGGMFCFRCWVHSATCZUGFKJ9SSEUUQ9OYDNLMWXQFAGC9E9A9RIPZUXCKIRANWDCIVV9VRTMUBITXKFZQKYVACEHPZUYKQHEVAJKPKKRTVFJVDSZTPEDVDZIDRFGTZWGGJAJBFJTVJRXANJ9DHEGWAPH9POUBWMHBTXEQMJISDXIWXFGQAOARIYFVSWWVYTTQDNQCSDYKIRRCVDXDKBEIGBHOXRVFE9ZKRXUCDVPSYNKHNAGFZBVMDLLCEMYCYSRZKNMDKBOTBGRWOFYHGJ9IUFCLIRMUONIBHPIWOSGBQYHGDAPOHOZXNWKOANZWHLWPRKJKSZQJWHXW9VXFWCECDINGDCSD9GHNLCDUAZQGLGJOBEFJISZFTNTHVGRZCY9TSJSVRNZHT9GSEJHWZIGYETENKFJLVJYWFYROMKXUYGTELBCINMOENDEBPKWTJHUWAEKZMAWN9GLKMPMJWLGKUASQQVCECYGW9UNJYO9Q9WZ9PDAWEINFVLUVZSIXQYW9QHDKELATCTOGVZWEYBIYWDFQKSWALUIPUZ9ZAWWNSQBQNSA9UX",
            "WNIFGGZPPVLRLIXJVHWSZFHMZSAQJVFKNPNJHPJGSEOQEKPBLNWMREHFL9V9YDYJLAVAVZKWNBHKMZAYTTPLBIFYNXQUIU9ARBWJMOUNNOQHCJO99RTKYROAHICVAEUSSGJWPXGDBMI9STSKGNWMFA9FNKBTYZSRBNNEESEQMNJJMIQEXKLIBOCMJYHAMELCKTAVCCCFHCUYOYKHYCCBGGMCWURNSYWVBTMMXUAJHGUPCEREEMJKPG9INBVAUF9WMGSXAVGUOFVPQGCLNNQFVBXAL9AGOPUNOOUFBSNIXSNQIRSBITI99HEITT9VSTQFVJCNORQBUCEECLDAHHTPGDXEU9GRAS9LDKOKOTSDLOCGOS9VJSWINPJZWWQOEALTELOJQSHZHTWUYPFLJQDIKJTHKOTCDUEIW9KRFWLBVHKVKSHDGDSLD9VZHACYVPBMGDIYYOOGEQXLMSRRCEMCRAWNKJVCQULNEBQHCSUFDDYA9YZG9HRFSTGAKTGZM9LXHSZIPMKZDHIU9UZKJWVKZVAQHNLHTPV99GFSMAORHFOZPLBRLAVKRZGTWQZHTBHTNBLYWTVX9XVCAMANNDYWJSW9AUTLLIMARE9ZSURSJRRIVAXXAKOMNRIAKWWMS9DJGXKUXFCSDNFLNRWGRJXPAQDSELYDPLAHWKBAMGTCNYKLIIESCBGRE9GXJMWLEIMAOVFDSSVDUUZZTDGQLZDXHUZOIUWEJSTLQLMZMLICFDMIUPITVCLIMNDHWVCDFQOFHI9GPIYUINVAIUVG9RHVQWBMTNRFDDWSYUMSCLRLWLUYZWOWJIYT9ZOMLOQMEQIWQXHYMGXPOZEUDHZJNENUHNYZOOLOJNYIPYPZFBTVGSFPWHNYUNGVDYHFINKUZPPWIMJBMEUMGELGGGRU9HVQOVUPTJC99QXKPJLXQUG9FCALZ9NHOVADCHZWWRLAOKA9BZZQUNYSZYEOHOBPLCMHAMEGRBEESTEB9XSAKLFCWVWDINNHPDYIXBESQBVRVZFYSJNIVWAOHFGSOZZHOJSECMMYXYAWSAWUSAZLDDHNLPQLAXHNUNJCARRTZBB99LWFSOMVHOR9NNKWPCLCJPDHXNLTXIZNSQDZPMCVNZPIL9KDOINRJKTM9LDCIJJMQANDNXBNMCQSGSONJIVPNFIVALHWGIKFXWHIVOFZNLQCGEYUFJGTAQMZIEPWRAKKEKWHNATFZXE9CARBBMGIAYHGWRMQLIFGUZDKYDMQN9VTEPBWMCPWHBVAXHULDBTIYRETPQFIPGGWFABZRTEB9NWRKJTEZUZ9QADUCBEJLSKEOSIJGLPDJ9BUSZAFBKALWGTTUPGUHYUKEUYZGPYEBF99OAFVIEWPADRXFXORWRQ9GOJEEKTKVEPLZDPCVDEQMZFPTHQTOCROSFLJDXPFQHPSEJWDABZF9GEFEOMIVKFIAOXCU9BXBLLC9IPQ9CJCLSMTRANQVADZIIKGDJLMYJXQZ9JSLUKKEXWGKS9CNUKZKCUAIEJEXYJ9DXRXHSARGKRDGRSBHXNLDZMOIEYBBUQBLYRAHNBJNQIJIQTILZWY9NNLRDCRMCO9VL9ZWMFMQWBVKISHCMSKFPNGAAKSPZBQGFWWQAXWTFRIIQXJRUIZKWNQPUAYAUBBK9QCSFUDPQESYMYPSDSSGEWBFHXVDABIDBJZJMYPIAHDHNPVKWWBSEHVQBPSTPTVDMLTPWR9MBPSVCWGLZPMTWSWLR9DDEDTCWRKMBFXFRP9H9TAXPQQKGWZB9MWMCEFSQXNCRFDGSOXGFSNRCDCD9RFEESR9PUGSATLAVMRAUIBLAOUTMEDN9KDUSIFAYRMVIEHKKJNXLXRRK9FEJHOXVSILBVQMDILRQWSFIZZAUO9RABHLPXLFOYUJKWTX9WVDFSG9YEHSGEBMNPIFRUAUA9OEZLZVQNLJIH9FQYETGMEIKURHRSVJTIYEZJ9YOED9TLJCOGDFPTCQUTWVJUGUXABHEQVZFNMWP9CIKKQU9EAZGPAMYONDGJKYNDBMOJWSFPNZ99DBQJIKDWUOJZXAHKCXZZGXABTRYNWVXITJUQTOVECDT9RWBJAVAVDZYCIEJZFPIEIYGKUC9RMHYFPIWXSNTRL9VKJV9CHKNLRIAQJNYYATOFMI9GUTVRULYZVU9NXASFHUGYURRVJKCZMJEX",
            "NEESEQMNJJMIQEXKLIBOCMJYHAMELCKTAVCCCFHCUYOYKHYCCBGGMCWURNSYWVBTMMXUAJHGUPCEREEMJJTHKOTCDUEIW9KRFWLBVHKVKSHDGDSLD9VZHACYVPBMGDIYYOOGEQXLMSRRCEMCRAWNKJVCQULNEBQHCSDNFLNRWGRJXPAQDSELYDPLAHWKBAMGTCNYKLIIESCBGRE9GXJMWLEIMAOVFDSSVDUUZZTDGQLZDXHUZOIUZPPWIMJBMEUMGELGGGRU9HVQOVUPTJC99QXKPJLXQUG9FCALZ9NHOVADCHZWWRLAOKA9BZZQUNYSZYEONRJKTM9LDCIJJMQANDNXBNMCQSGSONJIVPNFIVALHWGIKFXWHIVOFZNLQCGEYUFJGTAQMZIEPWRAKKEKWXORWRQ9GOJEEKTKVEPLZDPCVDEQMZFPTHQTOCROSFLJDXPFQHPSEJWDABZF9GEFEOMIVKFIAOXCU9BXBLGFWWQAXWTFRIIQXJRUIZKWNQPUAYAUBBK9QCSFUDPQESYMYPSDSSGEWBFHXVDABIDBJZJMYPIAHDHNPVKOXVSILBVQMDILRQWSFIZZAUO9RABHLPXLFOYUJKWTX9WVDFSG9YEHSGEBMNPIFRUAUA9OEZLZVQNLJIH9EIYGKUC9RMHYFPIWXSNTRL9VKJV9CHKNLRIAQJNYYATOFMI9GUTVRULYZVU9NXASFHUGYURRVJKCZMJEXWEZXDSIBNLTRVUPHDVKIBTBWL9WMBEQWGFLMHN9XZXAYJQFOCLWEBPDXMWQWFYXM9INAPLDTCKUGJLEOHTWJMCNJZZUOMAMMWDKHJIDLKECBGHW9KV9MEPTZXLIHSMSPQRAOFIZYLGOMTLEFZFMSCXJPMBOMUUYOQBMUWVESTQOQIOLJOORHIDQNZRKBBMXMJAOIMSLWRSZXGUEVVEZ9ZKHYTSMGJTNBKPZJPDUMUZHQLKGSZ99XQJDYBSAQU9HQODPWO9GMJYWEVQSSJHKXGGAZAWDAYTWDVKWJVFWMMEXYNGCDRKRQCOOCTKNVIKTXZNINVIWYETUMSBSUQTWHUFYMSBYGMKONQUVMWMBGKBWHQXCWVIVFQKVJSXN9ASNBRWYEQMDQSFIBDINTTRMJAWTUOUTXTFFHENBRETONWJEYWSFPHIVJICQMCGAYM9WFVKSPNUICOVDOVYHGOYTDOOBWSGZZAMNEIWJWXNVKMWBEPLS9REA9UHBOHDTPIXWZDUOIXWFYONVPDKMFXEIDUSMTAFN9PRR99UPC9J9UAYASXYCLPQU9GM9OSBXUE9EHIMRWVKXSDILWGVCXSWSBMHHHGNVXXWEM9HTCTVFZGLXF9CRDFBQCZBTFCJFKBKVSSVZVV9WCTTFL9RRNAETYOHKJZEGFIINLRKOMRYRNJJAZKDVZFXSRXRVAOMHHOJH9QMYVIRMY99JJKJFSCUQSBIAFWJXMIOECCVLGNQEFTIDGICVNJGEIEZXPYILTWKZRJWURHEIVMXDZJJXRQPJYWJMXUPOFJMNBUDILYKHPML9SQSAVIUPU9KBTBDMVAPMXKXALLAYSFHJMLKANXMBIQWRCZYLGVNH9DTE9ZJMMAEPKSBKVJFEEBGJWNMAEWZVZNUNYRNKWSZRCBCJHWPYNF99H9KFNXIUGEKJKGOEWARDHKADEICAOROJ9XCCRNQVWDPHITGMXIMYKEPGIPQAZDXFPIBCONOKULEDDN9DUAEQIJRDNMOERWPSVXJDFW9PZPC9WLRRNVUFAXOLKCNXGTTIN9XQFHPTZLRSKCYJMWPXNSFLSHVI9ZNQLXWILDPKTIBXSKEXMCTCGPLTYCDDPNANHRQHJDWPUSLSRWFUQOTGIY9BB9GEL9RVPHHRVHTOFYKQEWIPPTIWHBQIPOPQDHCETFMVEVKTAOLUYWLXTQJCZDRAZKXWRDSN9UORINDUDCRMZFAVYEU9T9ZNVWCVXTUDURIGQAQASS9GXKKZGABIXN9KKNQNHIOAXYFTUICONRNTYXWVRSYXMPXYNMJPCIRELU9KRJISRUFKZEVYJXFTBMANIYDYNNSJCBWSBKYRAPAMVVHQBUDUCEVOIQUKEPOPUZHVJLSNBEAUVISAADKZKOGYNIFICMDEGFZX9F9TFESBNEMGEFGY9PTSJFRQ9ZYWGW9VFVJWRDEGDEHFHUDQGUNAQUX",
        ),
        (
            "AKNFORSXSIBTZBDHKIJHSLAFRWVQZORJIS9VENKEWRUXEDFTDOT9XQWRLHXW9CKZWQKOSUUMVMGUFYDQN",
            "MTMTLDQPMCJOKUHXDJYAXMERBGJZSZ9WGSYNWGTCVHOQXTEZAZRCUDNMXZURPAMZXGNOSA9APZGSXNDBDKMNGLLF9MCKNIIFJDDY9ZUYJIABITVMEJABQAGTFHGWUZZAIHUAFUVACRYXPJIGGDFLHGTKZKNQAVNTDBWEFPXCRRTKYEC9KCLSTFPISBQ9CEZDOODSSIXFARXTWCUBDSFT9NBKCAMWNLBWBVXRRNMMWAAKLYVVIFAIORZZODVL9NIQCYKZ9LZ9SXWLOFPQHUPPYVNUZLJANVK9NVXWGROLDLWFGNSPTODAYZKBAAQELI9XHXNDVIXOYFXNIWOERIEFOQGYFGUAFEWRHA9NRWTEPBIUCRTSJWLDHZTZJTPTYOQGJUITSMYGJKSMNQOEIKVQDYEUPXEGIGAXIXLAARSCURNMTEHL9LSFMZXQGHLUATARUEYWYDVHSMYANFBYZACYKTBPJUJKK9MBXGYWUDUVNEWGIUAZGFDAQYTDZSDNWPAHE9FLVFNYBYMFAWPGWEKEDKUSA9MPUFTLRTMRRSDJCYVPULBGMMUAXXDXFKDMWJCSZJFDEQHJXMZWSQVEXELS9JME99QG9XUFVPBMARLRFBCAMMEGTQHCWOPVLZHEVVBJKVHHCYGCAVFUPBCJTIPVMQKCQVDKBDYVTTBDOHGSZMSPBWQJ9VVP9BBOTZ9WS9IZPXJGWMLPZXOKH9HAQUZLSEZXDHYEWKSVANYO9DSJPPBQVHRTRGKDVZZGDGSGZBSYSHFHYMTNH9YFRZOLQWMASNXYLCINIZZBIMMCUTHRHCCSFPZFLQMQSBKDWLCIADJUZBPSNFUSHPEB9IVWKNFVBDLOLMFWMEWUJJLKCNRGNXSZBAFCVNHEJVOUJ9CSX9ERMRGPKVQBFXKTCGTMLYH9FZQVQUSRUHV99KYIVT9KUFFGHAP9XIXQCMXH9ZF9QISCHDLKBTUMRYFWJVPESUGKMUANZHSOWBF9TDXFWH9IBGOAQZNAEDNFQXUGBTQY9WARAPXTSHAXIMQMGBSLEPHKUPSSJJXDYUQMEOPXDC9JAVSAORVCHIRYORBLJAD9IFWEAOAZHXVYAJDACQAVAHJKRRDKLHRFDFDEVSTIGFDHGTXVJDBQDM99DXHOLHESXENKZCWD9SSELIBQNJRIZCFZ9XAL9JUONAUDLOCSPHP9BRFFDNO9RTOQB9QVREIFJHCKNSFPLXK9PJBBCU9KLJH9SPMY9CUUUXEYLLAYSJKEAKBMDIQFBNYTMN9ICZSXCWXEWIDBXZOOHEKMBDVZAAUGTNJXUMEYCOKOWZBLHYBVPR9VNQJVNQUYAGDMPORGUAZTYXHKQTWVYKHLEMJEXKLORQQWOQPZHXHZ9KNZZPILHDUMXSBCB9MKXJJVREVANIHXJDIH9EXMJERRMUOKRZUWHBNRKZVILKTMFBIMNCZWXMBCKIDRSWGFIZSZXTZMFWTFAPMO9OGBCGANGZBFUEZUFUOUBMJZJDSDXQQYUPHIFLMTXHIOHJLFPQQJMCIXGRYIYZXFFWQVHSRWUPVQYAPJNPXCLUCHLULYVPCAQPMPSLZDMXFEFGUVPZHNRMDTAQAQOUNIPJ9N9XFJU9JRJ9UXHNJGEMHQWR9XKLZQXEIZNLKINQIDGJQKAHYTODU9NIDHKZTJLFRWZAZTBPWOYHPQMIAPOJQX9BELBSJCYKGBAWZLOPQRYDKYYZJLKVCBEICJEWLZLKKVJPJHOSVRXNFAINLSSFRBTHYFHX9YAMGUFBDHOUBZHC9FUZGRDMHJZEY9FGTL9ZATNEEPBCXRVSCPNBIZKNQXNPGG9LBJLOYLNGZHHTYECFTPSFORBBNMLSXKQPQXHBCMXUUITWPNPLHZRHI9GLZHUZUAZFBIODTK9LHUI9WMBTAUJGEZAWHLBJCTODBYJCKFDYJFISPCULHZA9HCLLVCUOIYAFCUAVQLFJUAYJ9KCLCCUBYNINPTCPOTZHNJY9TYAHQXZT9PWSGYFWOGLVXIK9SBZHMPRRWZCFVAHLWQSNQQZQDXXDYKGVZLFVYAQRWVBE9HFXO9VBTOCSEQP9KEWLOWWBITG9BP9WRKWNGYFUSGOGKRFBGFSGZY9ZOIKAVFXHVUWUMCEIMDWDRUAWQOZLNXAUJXIRFEBZMGXKVP9NCLBIFLQNWYXHG9QNRIGCMURZX",
            "JQPWORTYVYHFEK9WCAOCMSTADMFDQLWJAUWREAKKFIODTAZIQZCFBSORLMXCLNPIDYHICZVWKEZMGRHCLUCGGDVSECCY99HOO9KHQM9MLEMEZMSGYUUPOVMZZQRILFSEAXSOCBD9EFCOXDUBLZXSBCOQYTNCOFJVFQQ9TJXVTXFYGCSDRNKERYZNHNWJVNRVRRDIIKAIURYBXASGCMVMCOJ9DWNFDWRWYUYDYADZBSCOSNUYRQBKRKNUKZPKDWZUGIISDWNS9PEUSBSVWPAURSLRDOXKPXBUJQXJRHSKGGGDDJIBMGPOMHVXNUIGPLNWOF9SJBLWADDIOOLTPVYXZSVUOXLYLFQHGCFDGXIZYDMG9PFSXAVOCIZ9IUROMDWPYGWZTRMO9WQWDVPOD9FXVCELPWRHVUSHPXC9UJEHEWWZNNP9BVBYD9BUXCYDDVHILBU9G9APXTXVVXRMQXLTBN9MZHHFPIYJKEPGZFXBQHZUTUEEOJEQCCLSDIIQZDWGEXWMOFDFOWRJAVRUGQFHNHCTKNQFHMMFDWMJCCDFWBMRKHHEBOPXTQTYZQIEQDZHLRCZRZFI9MBUQGBZMZLAAOSIYKNZZGDGYSDZKPQKAOXWKMGBBLDMSHDBJAGEGULUGGNEZGYPIRKKISPEEESRCXSYYGSDCDSWFBRLTQOQEYFUGHRLKJFQLRBGUFUWWL9JJQSMYRPEXOFKFZMKDVEETYCAAIUJBPKSJBHHLBY9RYDZBHWLMWDMSBLTIDUEOARDIABXCYGSBWTOTDBKBFPXHSVEF9ZMJGMZMAXNHDTAKXPJKLLKOMVCMZFXUTUFOSNIPQZCSVWMCUXQWEKIECDOMBBFCRUG9AYJKFXGZDSBVKS99INYZJGECVCMJJEDYCVLPAXMVYYVGSXUSOJRCPU9QGTAATKTWJE9LXOYYZIJLGBIPDSTGCHPWYVGBOYDSNLIQXRUUYVI9NRFALIJTQSDASLPUNANVRFLN9SRQCCKNPXHMVIFDKJRZAJYSDKMMLQGLKAXYRUXHLXUPZZGTLFRPTJFNMAGJBXCEAAUUEVLYMMXTRTPYNZWSEOZPL9QFKBPSIOA9AKB9RRRXNIHLPZQ9MBXSHI9JDLDAFHFKIIDEEURPAGHGEZODWBRI9TJDWQEEZADPCJ9PYUNTRJHEJIDS9NMT9NP9QXRSQTCRNAUSFEXNKWGGGDQVDGTJWNQUF9YHYXQTABFIXFRAUJTYVLKDBLOFDESDWTECEIPSLVNULXWHNBPMZCGRHJOSZZZODRRKRKQHA9YIVGWLJZDQEJTMLZDQUKAWGKSPMTETBIUXLCUSXLSOAIVJXRWVBAJBZFLJXMYEIVIZNXJXAA9SMACGCFTQCQZJWUKRXZFRGLKQQIECDWYGKRDLLUXAAEBCAYJLCBQEXEAKVCVFZRFGGMTFSKSXMRLB9PKY9WJMDOMLKDFFGLON9HMBVANLGHXIKMZZLNVSNBPHPVAQCGXB9FJGDOOJIOVDFLCVPZHVVPMZNNEXDPDPQYXDDDM9VNCTYDMVVMHZLHZEJJJBXD9RFSXVCIOJUDWBAZTZUTTIKLANSGLXVHZYDGHIZRCXAUSP9KQLRCBNZJGIOALOZJVCEBCOIDQYD9ODCWUZUFFMZVURXLSBEGIQVPMWFBOJEKIZLRCFVSUIOMSYFCMPWEVKTLVHRFUSL9DYTDDNXXLPJWWCJOQKVEMIDTZKGF9FUXOYIQHRFXPWPQXDIWZFGFMRJKEKHJLICCQMQUWYTZUVXMCRRWWCPO9UYABYIPDARHRZLMKJCTOSDJHOMIMTCI9JDOTVANYTUVDIGMUYT9ROZDODHAOTFVEPJLRRVQLVHBCMVCKSUBYEFADZJQLNUJ9NBPNYRATVBJUFWNIWYGWXPOUSLKMRQV9XRKMOFWNHPNLGWEERPHNZXFJJKWCX9FEDOWFBGCRARWGOCZGFRPFZIOSJABGSQZNDGQWE9M9VZ9OICSNXTFNFIFCBXXNXX9WKMRXQAOYKPEKJ9P9XXNCXK9OVYKJKOQHFDADOTGZRHGZLD9WUJEWZBDEREGIQIKMMJPFPSPKPTTSBPOAXFCQOWMTVMVLZQUHNDEWCOGRBRIVOCHFQZEG9SZTPICKKPOASXMRUKCXIIHPSWIYKTUKORIUYQA9QFAIYUSAVUWIVDNIFSVTLVGAFO99FS9",
            "Q9TJXVTXFYGCSDRNKERYZNHNWJVNRVRRDIIKAIURYBXASGCMVMCOJ9DWNFDWRWYUYDYADZBSCOSNUYRQBCELPWRHVUSHPXC9UJEHEWWZNNP9BVBYD9BUXCYDDVHILBU9G9APXTXVVXRMQXLTBN9MZHHFPIYJKEPGZFIRKKISPEEESRCXSYYGSDCDSWFBRLTQOQEYFUGHRLKJFQLRBGUFUWWL9JJQSMYRPEXOFKFZMKDVEETYCAADYCVLPAXMVYYVGSXUSOJRCPU9QGTAATKTWJE9LXOYYZIJLGBIPDSTGCHPWYVGBOYDSNLIQXRUUYVI9NRFGHGEZODWBRI9TJDWQEEZADPCJ9PYUNTRJHEJIDS9NMT9NP9QXRSQTCRNAUSFEXNKWGGGDQVDGTJWNQUF9XZFRGLKQQIECDWYGKRDLLUXAAEBCAYJLCBQEXEAKVCVFZRFGGMTFSKSXMRLB9PKY9WJMDOMLKDFFGLON9OIDQYD9ODCWUZUFFMZVURXLSBEGIQVPMWFBOJEKIZLRCFVSUIOMSYFCMPWEVKTLVHRFUSL9DYTDDNXXLPDZJQLNUJ9NBPNYRATVBJUFWNIWYGWXPOUSLKMRQV9XRKMOFWNHPNLGWEERPHNZXFJJKWCX9FEDOWFBGCRIVOCHFQZEG9SZTPICKKPOASXMRUKCXIIHPSWIYKTUKORIUYQA9QFAIYUSAVUWIVDNIFSVTLVGAFO99FS9GVNCJCXKVUHVWEG9CXI99NCMYAJIH9UQJFYXWTVQDMQFEUDLHQVPEYRQRALTSCWDODYMUXBOFTKHNBWSEOSYYLBBKEGMHTNKATUVTEFHNBXERRRGPONVUR9BGNXOZPBPNDJKAGBP9HTSQIEZMTOMQRDCIUMISENDUPLYUPUKPLZIVJZOKOG9EFBARWKELYNGDOFMQSSZHRKUBIGNHC9BKZFHCWCAVIFOTFMLQTWWRMCPEEDPMOFHGIBTVOVZUWCTTJVFBOYVMGECFBIMUBZRWVBMTMFANUJTSYQRBVNPXITNHJPTSFFBWIRTTXVELZZENVEFJJUJWWAIG9XTTZSFYMBHKCRETUAOOEEHOITVSTPHBZOWOVC9VQBHPMXGPXRPDIDAKOQVYXQHWRJWDHUJRUGYXHXELLSCXJBWCIPTSODMM9KJJFKYGIKQXDUVOWDROSAMMOEMJSIEIZUJQQPR9ISITNOJDEGUBHRSYKVGMHMJIH9AQZCKQFMEMDES9CTIYHZPRLWYHRPUYIYKJWWBNOX9IYTEEXDRSWQBEXASZUTXOMZDEOHMHEDPRLQHP9QWZFRBRWNNWBMHFQWCDCJWRFBFMMAMADPJKEVIMPGUDDNBZQIUHQVQGPDWNNNJNLE9FBQUBS9AXR9MCAPHFUBQWPP9VOUIVTLLE9AIIGCGYVVMYTCNDMNHUXYKRAHVIX9DKUPDWOJEBHCRBYX9ODOMQZMSOSVKGPKL9DQ9ZTDIDKXEYLHXGNYAIASNELUARIWQEQYJNU9AV9XAGPOCB99HYPYUDFYNWYCXSSITBCKYCGGWOUJDMIIONWXRBRXFHLCINGQYBBFYQXINTWYUQSSYHQFUPVFPLJGSKPODRFTNLCKSDNGEJLQOBYANMCLWYQZ9YYKOGKHGJSOLPTWRELXWZIQARQSOVUNDPTMPGGGYYQWSSEIJWIKYENBTZMKTXUGLYYZPIOWOWVOJYSVRZMUASTGADGPFOUJKGPSCS9WCFZSIRMSKLFYQXXOSEWIUSUAOOYSVU9XVFHSAUCWWH9EETUQUV99FSS9FZDARCUPAEUNANSWJXKOTJQJJLEDZTUVCZXHBLEHLOSAKTQMXWLIVNHCCQ9NARHINMILLNXJWJKJYIQKDKEQKMZZQYUYOSLIECSFVDD9MMQQUNOCTXLERWQMGJV9ZFEDTU9TQQSEEBMHMFVHGKWYBXF9ABCZYYKIETMJTDHYBXRNZOJHNKXDHXFEABEUGEBJKFRFRHVPRBOQIBFQCOOZUJSCZSPDZVXXRHTPHMUKFZRXJYJDQZKRJZPQTCVAZBNJKCLFSBKOXUCWYDSGNGTUGLISTLKHDAPCQSQNSKACSHCBNVX9IHDXUXZSTEQ9VYNSFYD9VBPXWHZZZSJYAMRQ9LL9URBLVDNKPZ9N9HGDWBV9KNMCTAISCIBSKECYYWAIFWZAKDEUZ9DOUBPTLSD",
        ),
    ];

    for test in tests.iter() {
        match sponge_type {
            SpongeKind::Kerl => sponge_generic_digest_into::<Kerl>(test.0, test.1),
            SpongeKind::CurlP27 => sponge_generic_digest_into::<CurlP27>(test.0, test.2),
            SpongeKind::CurlP81 => sponge_generic_digest_into::<CurlP81>(test.0, test.3),
            SpongeKind::UnrolledCurlP81 => sponge_generic_digest_into::<UnrolledCurlP81>(test.0, test.3),
        }
    }
}

#[test]
fn kerl_input_243_output_6561() {
    sponge_input_243_output_6561(SpongeKind::Kerl);
}

#[test]
fn curlp27_input_243_output_6561() {
    sponge_input_243_output_6561(SpongeKind::CurlP27);
}

#[test]
fn curlp81_input_243_output_6561() {
    sponge_input_243_output_6561(SpongeKind::CurlP81);
    sponge_input_243_output_6561(SpongeKind::UnrolledCurlP81);
}

fn sponge_input_486_output_486(sponge_type: SpongeKind) {
    let tests = [
        (
            "G9JYBOMPUXHYHKSNRNMMSSZCSHOFYOYNZRSZMAAYWDYEIMVVOGKPJBVBM9TDPULSFUNMTVXRKFIDOHUXXVYDLFSZYZTWQYTE9SPYYWYTXJYQ9IFGYOLZXWZBKWZN9QOOTBQMWMUBLEWUEEASRHRTNIQWJQNDWRYLCA",
            "LUCKQVACOGBFYSPPVSSOXJEKNSQQRQKPZC9NXFSMQNRQCGGUL9OHVVKBDSKEQEBKXRNUJSRXYVHJTXBPDWQGNSCDCBAIRHAQCOWZEBSNHIJIGPZQITIBJQ9LNTDIBTCQ9EUWKHFLGFUVGGUWJONK9GBCDUIMAYMMQX",
            "PVWZZEGXNYLWUOAUJLRWKECSYRTJTTRCARZXUQUYJOYCDKUUZI9DYHILVHSTKKRCLXJMNOQGYFWG9PNFTUGPNONQGH9ZFXKAUDYXXDZKSYQXMYSGAAZIAMYWYJMCNTBT9YVDWG9KGHVTZCMFSXT9VIRWBWFFW9LTUM",
            "RWCBOLRFANOAYQWXXTFQJYQFAUTEEBSZWTIRSSDREYGCNFRLHQVDZXYXSJKCQFQLJMMRHYAZKRRLQZDKRQXMTYWDGLMZKULKACNDTKENVLFKHHMCCQSHARLQISEHIJPMDKQRFDUNHQBGH9XLMHPBGYWVIONWAVTXHZ",
        ),
        (
            "JUEZ9TPHLNUZCFDDPMHCGPDKGJWIHNUTCUU9DTXHLQMXVOVTRP9LQBXZZEEFPIWGTMIESQTKONSIKXTYQCCKE9ZEDXUSEFMRWDAQEJRSJAUJYNTPGNJFSUDXKO9MZDDNITYSVB9JS9GH9GJWHPKQONNRSNN9I9GB9W",
            "ZNRRI9URLIWOKNGWFPGKOLFOXMEHNOJRNDJHNHZSYLHTZJEKOSASCX9YFHROJGETALJJGEVPIYNXHXBYWGGXAXRYQTGIQGHPEOMIAWA9ZGKREQRANYKJCWK9VUJPPKTIZIGMMGENNBHHPVRYNKKNQUHQVKSBDVRTO9",
            "IKKJLXLIBDSYUWRMBOSQXCFNATRAJCBSUIUJBMRLHXEEPYGYAAGACHNZX9WVZZLULUSQXFPHQBPISYJZVJEHPNEWADCTTKFLSHJZFEVGCNRSL9JWTQZPGRH9XYKXJVZQWOUTDECXCDFKBKIY9PGUGWXNXESCGLIRFW",
            "CSPXGPMMZ9YIM9XXVXXG9JFXZZ9CIKAWQMAFSD9LPTNUVOCGLDFAEMHQQPFELXXCNKBEECPRZ9LXNMFXGDCZERBAQBZXBEGZC9JYIPCCEMZWCOVXEKFPWXAX9JYSTHBTLJIJSSVWY9ZATCKKVHBEMFMQPCZFSAZEGY",
        ),
        (
            "KQQC9UAKEFHUUKHRIWLJNSUCUSSKWSXBMGAFRCWIBULFP9BFVDYA9SVWIMJOAYPBVIHFOGKSWSPKLZWIUINOLMOZAPUSJSKQKBFYDULUADLCHPTNAUHXGZZCQBXQHRRUWWOWHTPTGYWXBGZZEYYXZWENJWFGAQDHI9",
            "FMNEUQIXRFADGTECOKHWUN9CUTRMGXWUCUMKYKFHRVDYPJOJPEPFAJ9PVPLREBWGPPSJUNLUDC9NZAZQAUETYPSWJTEAMSRSPYWHW9NAQVMKX999P9SJJGQPATEMPVUQQCINCVKUCLUIDDXQYGLSRFGUKZUOEQCEPX",
            "VKQ9WRNZZWJUKVVI9JFOXJUYYGXJLEWCRETOWLNYGRBFVP9JKZFCXWMNJRBRTPIWDLSDQPPLTIQUTXYXY9AVMDXDWKBMRQ99WLCSHXDZFUVKSLPTPYNCSVOBABKMPWHKJGZGRZKLC9PJJEDPVAIAUCXWJGFKNOQWHG",
            "WWWEGHXFKNBRUFXL9QJPKZMTRMURLDNKERUXUDMLFE9SDQLHXPQNHENNQFUPHYDIMYVDVOKFUOTXIJKPEQR9NTZCNQWBDLKKAPPGGVLXHDDCUT9DXUPULRXXYBMMGWCIJKXPUAWYQNXEFRPL9TRUJPNYFTAORXHZFB",
        ),
        (
            "WBQNFCYCPCBM9MCEJZIHOTTRJYILOCVLRQLFYTLQM9NEYWRMBVESI9OQKFMAZRIXNVNXGZAVQOOT9KSQXMKYFXDNDJCLAPFWWSKRXCQ9ZNINLYEPHUGTXNMDUP9ETBHJECYSOXZMWWEAEEQIGULIEGVNGEIUQEXTVW",
            "GVWXIFONJFRXXLQLXQBUHSJDXN9GRAF9XJUCKFCQCBPFVRP9CRZU9XKQLFEWPI9DCSWQJNYCKJDVDLEDCXVVMUTJAMSM9XKXRTY9WJHPPMOD9TEKLOQ9Z9CUGBWKBFMQHHDLAZDHWSTOUOSSZXYWRBOMRZOSXWINOB",
            "9ZDUTPPVAU9WDZLGJIRPVDQNLYREUHCWSKQXGTICMGBZIVACBBLL9DDJUZRFLD9JSHUJYTIXXDEFJYEXZEXOV9W9IEMEWZYBZLRLVIVRZSXT9PLRAVTUUPHVXOQ9TLVAPGFPATEQLEHFZEMVCOSDMOBDHSOHFMMXGK",
            "LGKPDRRWBVVE9WEVCSMYCIGEAPHIRKZEDRUCJPRORFUEZSLKYCFXXFCYHTPKLAFZLJVQMHATZZPFDZEYJQWVAAYJFCDITWWUQR9TYFJTR9MBWKOAHDHIHRSRATDSKSMJLPPWVCHAKOWQBHTHJVVEOEEUQTAIMQYNSO",
        ),
        (
            "MKUGFJCVYPCTCBLWWUHIPQNPFUPCYDQAYWLVXDBLXKLBOZXMWQBHTZVWVDHHUKLESVWVKNJKAMYPYFIMCYPFYUK9MYHJVNJHQCYEGVWFBSDEFWBCIBAXBOCJ9QTYKPKWFNEGFTIVQ9QRLTYYNGEBGBUDYPEFDSLZZC",
            "JFMFFTJVJRLUBKVFLKZ9BVQDWOGRIQNAMCZVTVXARLMCKGPHWQDJIFFHSYDQPCKWJFFQAJVLIRWRGHZUCHNWGPLJLPPVRTOJVLKVTHTAVYFDTVHZBMWJRXZOMICFTJYIWOESI9BMZHXDBXDIRKADXWDYIYOQEWFVBA",
            "HBROTEICDZ9GZIWBHJPDYLBOGYMVREOHTPDWNUBPLIUYRXMLUBUNBCIDHZETZMKJLNJYNCPEVPVKLQQXPXDIDEWWFBKFNKEMEBZMDGSLN9WGGMMMOFR9ARVQHCANJAHIKRAEIPWTYZSVH9FRLFDSSNYBFTUFMWKSN9",
            "QVUHGOXKIRSVCNIMFYBQOWARQAFWVYUQDRHNJLVFRYFRWHZFL9ISCUYAUNIJXBERCMLQKGVTXQKHHXHJIUXKJXJBCWDWO9IGGALOILM9ABBYVSUEVE9QPRXFKNLG9XSJBZQFPUCGUDANYWTFUPGWCCDF9FN9R9QMFE",
        ),
        (
            "SFTQUYNDAUXFLCAKZKKKOHUMOUTLXTFDCMDVOAT9QDGRVPJGBUG9YXVZDUVVQ9ILCRMEYVMWQXFFVTIITV9YYTTXJGOZAPDYBVQVAQYPORIJWAAPIFUTDZRIDKDGSQQXLARSSGGSUNPHZXKEERDYGSCDLPOJREIFMQ",
            "OBQYRUHLLXZFEXZMORLJGPCCZVXXMYZUYLEUJNFOOAAQUESYZCPAHPNVGRM9CUFZDSRJ9LPQIKCJ9XERWTZDKFZRE9ETURMEOHPJYJJNCHYNVOZJXWESUKHQCHCEFEKNSVMAHLRRADNAWBY9GVFOWWI9RDNRGYACUB",
            "V9CCLIJAOYTGSPGM9HAK9TTSVQVWTVNQWIWKTTSTWTPSLIPFJILKIBYETPDMHEVQZOHLJZCPDSAQVONZGFTXTSTCYGCVGZSJUTWPBFEVRWFH9HWLQLWDB9TSGYWHBUE9STRMXCGGIJUYUZDCAODLTLPJKZOPPGNHLV",
            "ONASVZ9HAUYTKK9EFITEFVPRHJIVAAGEDRJABDFFNEWFIUGWPIFTZUGLNHAXBIEBLIBXMXNQRSFCAYBTPTXHWPGVWRXTDBMD9F9VTRZJMYAXSZQETQKBNJIXGDDQONXAGDTUNVWSSFAWARBYNCTKCGTTJLZRBSVBBC",
        ),
        (
            "YHQZHLTBWYTTRHORKFJVIJIILPCYV9FPVIYSTYKYJSRHQKYRDDBWWO9TUGGFV9JAJENGXHNYPCAWLSHHEUOWJJYTHIDDDGXRQUO9VXIZ9MPAVZYFSIOPBWSWNOS9LEBNXVTUYJXYHXDXPESVKKZRRVNTXTUBPQGTB9",
            "BKBVMVDQTYKNWZAIOTPMBQULKYFXMWJOCVFKXXPEXOUXVAJGDOCVHSFPMUCDZAUTEOFXFHQMLVLDLAHLYEJBPYEXVOAEHSYRUVLOIJPTSBKPRSRMCCSOWWFGUMJUAADMRMPWDMOJABLAFXBZLLSIHMFBV9FRROMVGB",
            "HIAUDSZXUEIAWGOKZITJPNBAFCLBBYYYL99ELKCGRASATKPUKNLCRSEWZLQSOWBDCDLVDPOIYPBOG9PMMWOOFMJLNSZCQRPUGXPMUWWAPMSWKZFUZYLHJOCMLDRFXRGWHZWQXTUXWUFQRYRXHKSMHMQBYYLLYORQIT",
            "YZDPWMWUPUVMGQRZLI9QHGU9EZYSQINDZQRNBFDTMWUWYQJSECOOSPBJUICCSSD9MZUYCPSCMD9DIRNMMRIDBLXYHVXXVDQPHPOCYPDYMDQVZHZ9NUANMNVTLTFTW9EMGPZVFKPBUSGUONFQABHDHHZGA9QOLISULK",
        ),
        (
            "VXZKAOBXG9MRCGVWJXPAQLBWN9WYEINOBRTCECZQLGRKECEMLBFOIZEOFPRYJODXTGOWDAMNTOLUODGCFVAZOGABOUDAAH9WCIZTZOGSVMBVETINIBYEK9AU9ILOAUAVJMB9DEWNOBCNEHYTKVCHTZRBGSBXBREGXT",
            "BJCVBDZXMFOK9QLBUBUTZIKPZDEWDLGCQDJCJLMSTCONJFWVFYSTWPNUIYERHIKAKFPZXVDKAYARMOUKCWSTGSJURVF9NJZFIVLHAUGIOGSLEMKDP99UYIRQYQJGDJ9UZ9UANTXVIVMDACA9JWFVYSLXSCEZBYFYYC",
            "QSEOKAXNHPJZDADJNQTANJYCIJPFE9KMPTKKUGXPKRLXD9GGBOXMJEXJTPOZFXEDIRWJFGC9POMLJPWUGPIYIARNUGMOJJVUYMRZICBGFUTOMDMKGGBYCFHUSHCMSMIBEDYTQPGDSMTTTMAU9WPIZCRTDRFXKQ99XK",
            "GFZXKJGPZRGCLEKOGDCK9HOFDO9TYRJKCMOTVJQSWVLBZKJKTJYDDGGKFKKFJPN9GPI99MVRD9OTBSVJTFPNUHSRKIUHLACSWGFSWA9JEINHHINRMWLXIRWPXMXXELWZ9VTUXVNFHQBLJKIYXRDIBBBMYJZKMYJK9J",
        ),
        (
            "GERIGQBQCYXSLBJGSDYLGREHYRXAVRFHTTGEBREAALQZPAOXYZZZTBIEQGYBRFIQPGCFPWHOWEH9WBEZDOEVGJQVXQCDLYVLUCTPXMOHRQTAR9XJFZVEJIHREDQCIHBAWX9BYKNZHLDDXLNFP9MKYJJSKMNYZWAVUY",
            "WVNSIK9PFZYIKBMPFJSDZSGDO9AVR99SKFPHUBPODJEECLOZMFOPRCYPYVAQ9EBAAVFBMXTPANYBFCHLC9U9ZYZALGFBQPIZMHAMUDPXAXYZBXIGEEOKCZKAUMXRKSOK9OGRWULYJKLUBVGT9UEFLON9MGLJKUWFVD",
            "VFNFVZQNJBDPIUVZR9YUBDGDLZBLQAZLUTJBZGVEB9TD9SHFJCZZYMZBNUOUEOEZF9XIFJSKTGMG9NIXVOHGQVEXRWWOQX9DQVGMQSPAZ9EAQUCQWPBBIMVVAP9HLDYDWS9CYWNBXFKADGECGYKQHSLOCXLM999OUZ",
            "BSHJSSNBQXXZZCFYFMOBOW9ABQMXBLSFIRQTJFBNDDVHAPCICNBC9UYKSY9APIZFQXKR9EOMV9LTBCLWMLONDYYXBG9JZDCBSCDSYRWIIWZ9SJMFUFQNFINJAUSBBE9WGWANBXXHBJURZLIWZSKZEJATMTCZGYVITL",
        ),
        (
            "BFSAIXJPJJTZYNRKJA99RUOLLRWIFIPLUKRPVNEYAGTJHEXHARFVA9ZKUXXALRUZZDOJKHLKOYIFEYXOTZRHXTHUAWBQTDFMWUHYFSNNAWHN9LJCTVKHSSAPYXGYFTXVXKSUXXVYBHVJTURGRYHEHZQAKHNECWS9VY",
            "XSH9EMLVXECPMRKBUEBSWRLTRIAPMAJEJXSDBMHZUVKAVHQLDEHFJ9KKAVCRVIRMOKUBRTIOYYDMFTUAXOHSKPFRJVMNEDDTRUUEOAGXUJGQANIACBAKDHKVUSIIYWSEZPKSTIDZJCJVHFBSF9YGQ9JJBAKSSVIC9W",
            "MBDVVV9IJDRYMILFYZIPVDDFIEEQPABCJYSYDOEHIVWTW9QATQYEMMQ9LCHYUWCQLQRLVUCUPFZUULRKJBALXRQMXGUDUFWMPJVAJ9CDLW9ABT9UHDWBBDAELNTTKBPUJRKNAFRGMGVBQWDESOWDVPPBFEYTFROKBQ",
            "GS9PLHKMQNLPSHMOQWKMIUCGIJLHNWRLUVPTUGIVFZLZVJYEIMHBF9KZPEOAZKNGTOEZARADBKXWRSBSYFSUMJC9UUNJZRAIOOIRJAZA9BQPNGFKHTEKZJISOMBLFCPIRHQFOGHRHTQVVHQEYOMIMAXMXEYCMVUBOA",
        ),
    ];

    for test in tests.iter() {
        match sponge_type {
            SpongeKind::Kerl => sponge_generic_digest_into::<Kerl>(test.0, test.1),
            SpongeKind::CurlP27 => sponge_generic_digest_into::<CurlP27>(test.0, test.2),
            SpongeKind::CurlP81 => sponge_generic_digest_into::<CurlP81>(test.0, test.3),
            SpongeKind::UnrolledCurlP81 => sponge_generic_digest_into::<UnrolledCurlP81>(test.0, test.3),
        }
    }
}

#[test]
fn kerl_input_486_output_486() {
    sponge_input_486_output_486(SpongeKind::Kerl);
}

#[test]
fn curlp27_input_486_output_486() {
    sponge_input_486_output_486(SpongeKind::CurlP27);
}

#[test]
fn curlp81_input_486_output_486() {
    sponge_input_486_output_486(SpongeKind::CurlP81);
    sponge_input_486_output_486(SpongeKind::UnrolledCurlP81);
}

fn sponge_input_6561_output_6561(sponge_type: SpongeKind) {
    let tests = [
        (
            "ZDVXRHZRIPSGGHWELMZ9LAWABXPSBK9ERUANCKBPIKXNBMJUXTFNF9VHHXECYZTUKSQTPNFCTXZAGNTRCMLGFKEDAAVQMBUREFLNPJVQFDINCDRBL9TGKQGLBSBEVZUZDDCZDRVSDBOBVLSZHGZMDCQPEZBFLKWUXYFGQMSMCSHYKDBINWXXKFLYWAWCNPCYB9CBZOIRCNMFUMKXNPWRDPWHNGLHJALXUQNMRTFNVDRDEVHJHDQSIPHGFAVLQAIUUDXJREZLJKBYMCXPWIDOIMNKZICFTCQWRHKAZMZBNTRIXNFYZGELISFA9UVSAQHVJABZNSPMPZGSLNFMDORGPKTYMLWFMJQXVKUHDGPINFFBTEUTXAHDBMK9FVS9GBWXIOZBMBTZMDDFCVUYMIWXXFZZAXINQIPFIYMDGUURJJOCWRXMCULCKB9ZSZLLGXVMQMNZQFMSHCK9TRWIIPIOHRRQGHYZJVETBGEOAGZOGKTEJGYAYBHVQ9VFBNEKXLSJKXAAFHDQDEJCZEAHZPJXCYBQNZJOTOZ9AUTJVPGQABNMTZWCZSULVMFSXDKKUZ9JAXRMZRCFETMGBLBLJJMZAVSAZAVWTUETEYOMVDF9GXEMYKXWMEJBERDTMAIGDLRHAZJUUCQNATVZIRVOGXAZBECUPYBNUDFUM9SLRIBQNPVKXGMXZFZ9FGFVNNGCCOABCYWNMNNSIOPFHQVRXXWIFJKODOGOPURT9HFQUKAQB9DOGYIEVQTESPSVNKWKLGTMXTDPKTPDJGOKQIZVOHBA9UHOKXXZJZLCPLZTMWSHRIQHZRXXUOZSDGBAPOLNNXMXJXZGQZYXAQEGMKUICIQTL9DOXAELENQLTBAXQVEYQBFVRSVQMAMIELIUALNUUDAZKZTPYHUMPXBGZSAZPZRZFYUISCBRLMJQLYUVVPLDFMHIL9DEEIQSZWOUOQSXTREGSWZKPQBVXMBOANYWQGVHDXZO9LQGYOEXMCGFJKZQKYQYMRMGHTCPCOUYCEYHDCWSCHAYVDEOW9GKTBYRQGSSJATRVZM9FPT9FQTFBGNJQMQNQIMFDSHELQFKAVQXQBEHHKCNDNANYMWZDNFKU9ERPRVLDLTFTMGSSPWAGYPJNFKFUMM9Z9YHSSDJLDGNAAWDZIDTAHD9VQDJVPSQKMUFJAICMPAFDZHZDANRAXRESAUXTWEFGWWZRHVYQOGHLNMXZI9KZ9LJIXXBGOXIDJUBEZYBOYAOCP9RLHEAXQQBUUSMNJWNJIWVKCZLVDYTFANUGUNMZFFTLRUCMTCZUPMLVODPYYNVLJOSRNQVMORMMJYO9ZDXYFFOMMSZONYKENHMYLZPLLIFXKRND9CU9XIDMZFKOFLASVVBCVOXKZDOOVDUSDKVLSBKXREQDVKXJCIXCHWPXF9P9ROPDSPBSOYLPEQAGDYNLMBUOBIJQGUE9NWFWHZW9VJNGVAIDPR99KZXWSDETGXLOPJUZVB9VFLDJEPOMYJFAGXPSMDSXBPESBXDLPLNAGSPRKJYVEKHUUXGRLUWLJWBGCQHVFFTTXPWVEAZXW9EXDREDNHOULFTACX9QBZEUPORZPBTDGZWEKQUQTTAXFLDLUULWRBBEKVDPISONVYIXCSVEWPFGRXJJQBOYEXBVUWXKFSVHCNZXVLSFMJHYTDYGZUCNKORCAVZYGYGLAGTHGRUCZMHKFNIKLMY9JBRDAEKOJRBBWHQBUGCFIXBNNVCKKZDXLIHBJYXMLYKBLTYHQLCFBCXQARHCQXGIJS9LYSGNPWBZE9DWNJ9O9WJPYZEYKTDBJDHJZONCWVAMPMKVDEOPMHTYOXRKHE9CTXOBAGVFJSWFBVORGPXTBEYMMMUUALDST9OQHG9NGUICAFFRSEXHNQCZQCCUBXMWHCPZVSLKTNOHRLLZXOIRQIQCJIUQNDXVGPEISBIAXZNDVOMCDLTGJEBMHNYVNQMLZYNEQWRBNGFQOFDRCIXILN9QVKWJGVXXIFPVAPFELFSR9ZNNJGIUCUJWVIETMVMMTPHEKRZHJGSG9S9PCNYLANUFAIQTEFQSYJGBDEUJMAAPWQYBHZLSYSNQHWANATOESRFRIFJPDNRVWKDQVFLKFUXFCY9SBEOWTXPQGNUQJWLCRVFSNQPLGSQMPWOWJJASPAYPHQRLIGBGOMIZ9AIBHMFZJPJSNP",
            "UVYUPXYNXKSEVWKECMJFNIGRMSAKOQCMFOBTNWQCJOUIDAXSWSLLSPFMSOPBGCOQC9FCTYBZLTFYVNW9WS9ADNGWLBG9BKOZOBKQIEIDLWBCODAQXVPJGYTGTCEMXAUHADCONGMIEKPMXQVNUNXHIQHNQJIJRRXJAZVGHQCQI9WXEKENXRY9OA9OUCNEFJLAPOSLRUCCESYCPAUSUJBMEMD9T9NCUEEYODPPELJPYKQUAAHIAFYFQAVIKLFGPJUVZUQAKNDTRTOOWODBRSXMLFPIHWGGLMWZGHEGWNTBATFOFBDXHV9DEXQDXTVZLGEYWOEZHGYCEZNAAAYKSEGBWUVQDOKNVFE9TNLIOWJFLYIXFKITLHVUYNPGEPNQZANUE9MFPAO9YKJG9OKIM9KQZQY9OXSJ9MRRBOBAWCPNCOKAVTMDBSOSAHZJBLABIJZEDXWQYAVNCUXBSGIAGJLHYLWCLQCCHNGFPJON9XNGIGVEJSUAAKUGQXT9KHYOEGGFEY9TACL99D9XUDBZOXF9NQWJBATMWCWLRMPKUDZEAALRXZNELXEREFBOXGLSZJQXMKFFNUHZFE9PRBCOTJXGNEJYYSOJJALXGKSQPTFQTTKADFEUIDLIQGQBPZT9UNSVDXM9HFEBLCOKMJZTXYTMQYJBMJLEPBNSJBWVYGYMFUIOFTOJXZZMTPC9TFEXRGEPSAWPNBMNWFCKKXFEXKPWKGEIDWZNEAVFSZOKOWNMFHHVTWPQINKJDDH99TYHMBIUQKULWQNOKCTOVKFBPDQPNMAV9TVJ9GWDKM9NCEVUZDFPNYTYDUHYHGYN9ODSMFDGQSVWOJBYIRZXGCCKCBYIBFELLJTWKMKBOOEFPJJEDUHGKFFTYOXLRKGFOWXNHZNUZLMRYBKPSPMRFLIYMISAODJSJM9IEEIECJXTTPLMEFVTDGS9NXO9YTTLKNAVKKHIXXIFNW9ZCABXMQPF9UIUMFDHPDUHYEOMKYLUWYYQGLLPUZKPYKHHPFXFPJRKRFJQEBGMDEUYDWEDDQNORPYY9HTYRLSDDABBBACEWMFEFELZSLRSIFMEHUGLAFTVAUKNCHFHEYVSGFIBRGLBCLZRH9JTYQKICRICNQWWTHXGJAYBECNIGVDDJHHOHCRUKIGIGNPWTOJZWPCVYMDGGMYT9RBEZOWQQDUVOZLVM9BNUBLHUECDVLQWZUZIVCZYJWDX9DXVDRTGX9YNMRBWVDYJRBRSTOEJLBWQM9BPUMY9XTHSNKGTUVPDTKZOXTXTCHIVQKDGZJXGUULFMSFWNVJVRL9ZUNTOPTFUVTBBTQO9FDGCEHVCMGGYIYFMESMKMBJOTGTVWKCAQFNQKRY9YYGOMPLGOQHEBIWUXBSYLEZPC9RSJKEOURKRWAZLEQKSXOIJRPANOIN9PTMC9KRXQFFTXILSTQNBVUNWOZBDRAFIVPHFCYIZPCRUALMIEPZLHFNXYZLVGDEBIVBELET9LYLDKLUSSA9IUTTWTFNFJYYFBZVCNSHWMIEUTEOFJCLJNG9HOBWRBBUOCLSIEQJWSZP9UGQIGKGCMZS9SMAMSNQIC9VTFAOITNNTNIBRZPHVJOTYUBGUWEKNRYEXGDWFHFTDGGIDXDUFXFUXREYHOWCDKVRRAYFYDWYQUWFV9INPWXUQMTHIHDYEJPJASDZYYANPWNTPKDM9JVDNXFAXWHXWXBMWCPLJWCTKADMWYZEWTJURDOZYANFRGFXIOHQTMATPXDJO9DMFQWDOH9UIZH9FHGCJHCBASKZS9WSQGHA9TWRWMSQPYQWOQMMJHD9EEVTOPITDCFADNPUCECFDNNAPUMLLJUWALOKNNMWCGUWB9GFS9WMWONB9KJNBXRDOHNUFXKCBIAXMMYVLFDIWCVGLYVALALWNNNLRTZNPUYGGMRGRJPZFTRIJQ9VXLMBMMXJ9QWZXFETKZJFKRASFIJLQVEHXOKCFZXXJFJUDSTRIHRUEZUXJMTLSYYKPEVEYPOUUAZNXTDXLLIINALWGIOKYZRHWMWVIBXTETWKLMKOM9EYVNXMXBCSJZYRWHNYNHAIREVIUAPRETPWKHCIMHWDWZVVPEMWNKAPGTOHGOAHOFZHVPGPWCXRMVQHUCEXUJB9AZNBPOTZFMSNLADLSTLNKQPIKILMRBUU9NWDBJNNRRFKVRNUWOZUQU99",
            "PKNIBLYCJGHMOWIBXTHNOH9UTTHPOPIQXYNNMJDLFCLNIKZLAJR9GQXYYTWKUVIWEXB9RCZRPYOSRYOAAULANSCFWZQDD9SGNVZVME9YOZXCCAQEKSQD9CJLMIHEQEHRQXKWEXVXPACKNUDUMHF9LVBPFVXAQRZGHFVEDNGSTSIZBV9LUJFLTF9DJRJAMWXKXVHYWREMOJXHBDJBMKSLQVFJ9TIZJCVRKLHRUHQI9OZCLJXKOSUPIETKSXN9QDOYWKXDXYZJVCDJAMPMQPKSUHWZQGIMMEMSGNGLTVPDNMQFCCQXSYOWCEYCAAIVIXBGJPPKE9WRCSAGEM9EAPRNZVEHMIUOBQLWSWSHMUXWZGVPYIAJLEEVUBZUQTNBJEXJXYCFJFDLXCWVLCZMPPOKFDAGRFLSDYEPATEKSVAEUKCTANRTGLYEFR9AFJKJKNJ9IUELMLVRQGNTWZCTBQQBNBZ9HDJZNTYXZBGVGMDGWMMPCLFYFWOE99LAL9ECP9PVJJRSQVCFGRMPEOKWOPYLDDAOADYVKWFUSEWQVRPMXLHADRCAXCJRJRCNGCKEBJVDAYEDYALATUH9JNMLZICGJCMCCQAP9GXCBKBAIAUC9VLGIHGMOKYUUFCXNBEKEDJHFADLEFNESQZLECS9QDTIEYJPYDGLUM9AFYVSTRYZLCOREWSNWJPDQWCRHNDERSWGBPYJVWZND9VXQGXKRMTYY9CNQOVXSAUBMDTPGJMWPQHXWPSGLCLPJRTAMTRSIXTLNUBKDXEZLGUAFTCJXREHKTTYKJOBIBYPIVQDVLFI9XKPACTXOCJBCIQDALJGNLSXQUDWXDZRGWGNGVEKQZVQHUTNEGIBVUXCKZG9POSTNBKN9UMGQYVJZPRIPAADEXZUZNUNVXMXKDVIYSWMROYGEHWSRLHPANFGITKCGNDUPCDEOKETWBUGYWCIKOZPFIXJTUKLJRXZV9YSWWRGSHOHLTB9NPMNAEYMVQ9NVWLJBIDVKIEZQHIQSHQWGSUZTIIMFXORSYCNYQHJLMTVZIIIFUEVMOOBD9VX9OKQRHVCVAHIMWRVLMCWTUKJTOMKZHQAEN9YVECEHGCXCPCKKYECHWYAPVIQCOZTADTQUYHRXISOWJGPMSK9KNSLTVVCGJMTEL9ONFJXGEFETTD9IGFBZXRYGX99TYQSGKDHVYWMMCHYIXCYLRNRVVLDMGDU9KPLVJZAFGC9IJKIMINBXGTIYGKAYTGFOZODMARZ9SPCKTFBKV9LPHVBVHUWXHDEDAEQRETGXODGDKRSJGQYIMMOBPQNXNJ9AKGCTBZHOBTVWXKPJLQMZXMAWWEAOPZUKKSTCCYOTL9WZFRLFWGZLQLTHEJXJETDMGECWHMPAUUFWZKHIUVMCJPKMSZXPBOFZCQDVUKDTWZMYSSKDKATTEFYNKABSXSNUYJHIKYTWCHRWXRTREI9L9BHNTL9RXIOKZNJ9GBKKJQGZJSGTYCCTDD9AGODXQTMPMDVTXZUZEDBFBBNXVEEVGRSIQXWDCBGVPGZOPRXYPAQSH99S99INXZGLDAJHMGYHZTQL9U9OIMKHXUYTQRJKBQRKXOMDYDCJIYFRNFTZEXYUYUSKHJDRKAYDRDECNSRLQQFQLGZCTMFJRWKVOMNJCFI9K9LRCRGB9MISTDMRE9QCZD9DBEYWUNNTEWRDM9INRGXMYEPOIUXVTGCPJWRWQFGNPPOJKGBTBNXFPYUHYWTVQUINVC9ABXFSSXGE9YVJVDDISRXQPKQDYUVZLJMZDPN9FTPZHSFLWJCUAH9CTIUKQVTVSDHWEMWBCTHYVDWSYDSETWRIRQUANBJCKFJWPFTLQCYGJ9UAXWGIQBXOPUOIOWLCOCTSSG9FKWCABJJXCVAOLJGCZQ9MMQGCD9DDYRCEWOOSDDNGJYMBCPRCBJMSYAOHASUDHRSSLDLWWFTKGTZOLYKOLELYSOGVXVOQUFTBSFESPFERTGMWQCHLLQXFSLHJVASVZFFDDKZOPRK9M9W9USSRNOGAHGIHKUVK9IZMTKWFHMMDXLSUMLRIYAOGTAOEHTIQNSQWWUDLDVXVXNPGRMIRSIPY99G9DVEBRQK9FLQSUXGIQCAV9FDEAMBYYVBIYIXOCXARP9QPJEQSJAKYWSRRIMORAQBJKNDIWQXGQGGTNFVWRACSUICXAZQEOI",
            "XYAHHQRWJFOYDIPOYFZWOWUMXVCFPGWCPPPPLFBAQMLAASHHPZ9WJPNNFEZQKZILQGTSRSZZOJHWGZCAOAEPSGRRGWJUAFDJALMQUWSQP9FXTVSEACHUSEIUVSW9ALYDWIVSKIPNXNOROQZDFWSHYQXPVGBGC9LHC99E9PEBUVBFWCIDJ9UPCWRYOCWKBMGEPYLJCHMQGYSSRACYUGFXYUQFXFOMKPCCLSR9AKQASBDNYDERXNJIXJNIDZBELIWSYMPI9DRRYUS9SWDHSPJZDAGM9LFZET9XBBCBYUNXSJDGIYZLZMJBDUILUHWEDAUBTFPFPHQYDVGTWKAHDUJ9GJH9VLFXLRNGRVGSUYYNEAACYLUZQVNCZU9SKCJFWPRNGRUNAABNTRADOCSHPQBYPANDPPFCJASDCQWRCVBGSBYPLHPPVLDTAKT9TQDDTMXJZGWLTFIRYMSEJISNJLZWN9UCDZZEOMSMWUCTXEHT9NFWOEIXWZPJZAQNFBQKLYXCAIEAUGNPJVMJKNPPBGRYYWNRBDXTECSLVXVNEBEAARNCZWTKHEFSHGCMBDBALEFET9ZZUS99CUNLDXOADCDRXQOSIHCBWYJGSKBVYVSNTLWXRDZZ9KTIGHCBZOCYWPOGLLDEUENXGHSHONJPMHRWHTW9KHDLLIWPJUEQKCOUMZVGQCBKETBSTFTOMLCLLTKAHCEXXGYJHAJMSOFAYYUOCLSHYUERRFAXMVPNCGOLWTOR9SE9GYXUGEEFULJGNTUAEGYGENVOZ9MTKXAIAXYBXKSCBECJWTLYVOTTJSBMDJ9RYFB9VEZXPQGCAUSFZZJLIFZMHOPRAGWMBUDMRENIWKZTALFSJNNYEADDJLWKUKW9JJPFBQYOKJLZNENCXCKGHSVSGAUNFMNBSFGSBNKJIDGVYSVNBVRIUGW9FSOIFZEDIDRMZZBXDTTLTIJRCLQLRAURTWUUBMVIJZXVFJKJ9MXABYKHRBQCXFUQHKAONEONAOXMYGHNPSDBIQIMSPKLVMATCB9XEHKBXAQUOKWADTISNALNBGXFZ9JA9ZCXNIMPNOXXJZE9BMUQLMEWUM9OMDT9PCLEGCMRPYRYRWTKXNNYNT9YMWFYUJDUNTCYKGLQMRCNAOFHYESKZNXVTPWUTYRRMOEKKYXTJAIXO9FJGQUNZUDMCMMRIOWFFKGVZJAVZQCDNTISGMEAJCTAXWCBJMLYNQUUUSSCIINDMMTAXYIHWAPYWHMHPUHDOYKCRMMLMTDRLFQFHNGBOIJUMAULCYLEMICBEZO9YXO9EEKFRIKZIHSTVKXEUKNACUYCLU9EEQFQVOUUYKZAPHJRONEVTWELHYITUMOXVRDC9YUWQFZJRPKSEEFJCIIXNTDZOYVTCFHHFFIZONZCIHRPCNOUCHVPOVTHYQVWJVDNO9IRPKTTQTXEPERCEFEVADNFCVFRWWWBUNEQJUVXRLZ9KLROTSKETDYH9V9ICX9HTILOGR9NMYQQGXVXLKCFBRU9VDAUMLGLHHAJZJCVTUX9SMPJKWCVHBHOHWJMUJDTIWYUNJEHWXGQPGDOUJBSMSWVBIAKQYTDMQDAIQVMRAUL9TRCZIFALWUIFRJZISLPACOHECREYKYINGJUSUMYJZNONJBBMJXHFANQCKBPGWUCK9AKQJA9G9A9AKXVGYQKYMBDVGYYHLWWTAPQGPCNYMTLKC9POMAGQFYFGMKHFKHRATTDVJIKADWQBTXYGOHGQCGDXOVTITUORWEFZNYIHUZBXDELDDTOLLSVKEQHTNRBFCQ9JMCXCLNNIRL9XGBRHSWRLEBPSDMBZZOBOVPMIXSRFKGSCHJJCGWBAFAQJIDPL9UPKIIKMCBUQGHYNSJBDN9BGBOPVJOXSK9EWCQUMCWNZDOKXHDHFTMGXQTDXAQVFXHNSZAGBJB9NUWYUBOMHWYONHFY9LBVNHOYUSF9DC9F9KIPBPGDTXJHHNCYDEDSZUDFMVM9QLMROEGGPDETQJCIAFZJFRIQCZZZVML9EBKFECQRQBGAHKEYJLBSKZDMLOHMDSKIXYJDXEYINROS9EYVXDGRHKKS9MFAK9RHAGBLDXPXCATZNFFXRYQLWQXIXFWZHAQKPSJENWQCKDGZMECFSEHVRDXFYCCXXJKBQCCYDQDHKCVFBIJRBJSETXZOWMFVGIZRNDWFIBT",
        ),
        (
            "ICLPCHVNTEAFBGMCNRRJVPAMUFXZ9ORHNNAMNXBFDIXOMZAZCOBVVOGVFHGLUPRZTARPHHFJKTDPNFAMMDHOHOXRQICQCVXOAHADVEERKUVCRHMTIYTBYDGNTAQYMWRCWLRVMAZINJPIBKCKUXG9OPVK9JNYVNQUJTJHFOGTEBIOTNGOOGEXZDWYHEREOFOIUKOSGHOAYHHZXERGLONEYCEAFLSQK9KZTUUVPSZDOFEWGYMOAZQH9DDIDMDPBDCCBRKDIUGSDFSWEGCDZ9ZRNAKZNBRKGBZ9VERBCHUVEZHNWMIJAXSHO9F9TMKZRDCTBXVNZGIMZOE9JXADC9JXOVBPPIMYSGLYGEAQIXFSAJUUXZVTKLDQWHBGSSSFSXOOEAVGLGJXBFQFZNCWDIGWGX9NBOWDTOJN9YUUEQWVHRXYHTIAJORP9IRXIBCZX9HCH9QZOWJUUKUVPXKGFVZUQVP9WTXVNPOXW9YJTQDTSM9GXZVKVCWQQE9OLKTFP9HDKBKWUUNIACUPZMRZIGYRSQ9KMVZPZRNFRBHHVC9RYUDEKUANNKRLDKOQXYB9IYKFC9OVENTXOXZKYRDLPG9AOSEAUJSCYNSKOWYPVMWMZVUTYJNQQXUDDKQXKYPTSHBGEB99XRTCXDYFVQPRYDOSPXQWP9VFGEQDOHJCQSRUCZKDNFZT9NAXYUGJBCNWDNJXTUJEJXVZY9XAWCCMUCPJMXVLNYSPCTFLVIQRONHAQCX9KHDQUKWHLYDFRLGLYNMVOOJX9RRGNTYBXRCRDEWMWBDGEXJHZVHGGZDNPTXJOAJMWFFXQXKFIITMXIO9DBK9BKKIEANUKYCIOKVVWLLWMCUTEWEVHKOSCBXNTRSNJBQHVMJVGGLGD9DBYMCECXHMSAXHDGJURTIXEBLKIFNSXHAHSXOUJIBVJXWDUBVFUTTPKHPXMOZUJOBKFRVKXUGQEBFCRHDZHGD9NDEHWKHOTVIE9LHNHIANRSNKEMUYIYWKQKOIOWH9ARLBLEDWIMMPHB9KSYMEMBOTYUOMGAGC9UZBYSAJAMEDIGWZOVARYULPDVZMRXKAZSBDGJBAUDUEIQNHCCAEUJUFHNPYCWETTYPEXXQHLAAYBIYXAEUHEPEPUUWWLSMJSMBBJSUEFQFS9MAEEJU9PFADGCGBLCONZAQJAREJHVCCAENTERTQLFFPXFBEHCZCTVEWQJAZVFDNZTFPAURWMCRUNYXRYIMOY9MWRACQLBPHLSLNAFZNQVOWRILTN9YEUNMAWCEQCBPSIDPYUHMHUYBPJ9SYWNYHVDYLGJXT9NCO9XNJCPMRDMBYYFIZYZBSZLTOWONNYAVYXJBRUEAVLHUMDQLV9DEAZGNNSLHNIXGULXSSDNRSLZBNETUTDBLJVQRNYWVSFVMHSAXMBXQXATQUXFYOMQPYLNBYDKTSHXOCWBXABZLOVRPWVXYBUFZEHWVZLVHKKQULJIDQBBSQHINPZSYVWYATUBYACWCPXDFVEAEWBDISBOHPLFLKVHORQDAXOQAUGDWBLKKVCMLKXDAKTKDCVAMUEPUR9BGKQFRPRWHKWEBMQLVQVPACONSYVTCIYSAX9BQ9BZSOCDUMEJVWGYWEKSZW9RNRRNEJIOSRPDC9JMNCQRUIMOSFXGEXOYZ9UBTTNBDL9UUYONGKVZWCPAIUUDWKIWGYFYBGUE9YFPHJFXPDPKXRRJWHVH9YCNYSPMZBEGOCHPLSMJHDQYMDJCLNNCJAGUK9BZQXRLRDLXLJRAOUBHEJKKKEDKMYDQDYCZILMPQTASPMMX9DZNIORQBRORXMTSFN9WJFHWYMRBOVCOWGYOQDAEUAUAYLQEPHRJTUUHRPF9VVKFPGRGTQUHRMRTQNSSBFZPTDRZYGLEEMVNBMWHXERGDBEB9CPTMHITREBLKKAIVIGQNMGZAMDCXFVEMMMKLDVKXNPEXUAUNACAMVPHNDSVMMUPDIM9TGTWWQFJIIJIBKJEPHEQDX9X9NAMYWFTXCBN9FV9GKVVNEPE9GIEWS9QUWTCJQYDFYKXKKDWMYIREAJJICYUUERA9GYER9DUSS9TVAKKMTDRQTVGMAOGTVDR9YQLNAGMJQOQMQBVJVIDCKJFJLSGDBMKZATLOT9INBRMBHWEORSSJCDCMALMSMEDQAAVYSZQWIOHAJMRECBYWOX9HEKGP",
            "AJ9HCRUQOYXTPCDKATNKM9THEMSSDOQMFXWRDUUMERSJNVEHEQSNJTHIZOTCMEOUCSL9AOQGEDFSZWGOZDRFXINAKA9NEXQWPLPQBPJCUKWFWJ9BKZVNZUUXPFUQEJSUJSDQADRQRPXSPKSYMXCLAMK9YBAJSNCBJWP9CQTEOLFKBGCHNEEFAPAPUOADACBXBZWHLLGCODFZOXNTPBNOKUAJNHBTRJKSQWXI9PDNBFYFWSMDQACNHKAM9JPPFDOSZEKHOPBGSKRVBIXDMYAWNHUAOPMJJCCODLZ9DLWOCKQJSJGJHVSWIBLAUJEQQZLWTNP9ATWYOUZADEYIRUEXWDGKRSTKYLCWZMWRARGNDSKQPM9GMTLNMGQNZJGVLFTSLWJEXYIXVGOAKJXHEKUIDBQJPSYGAYCLMOXSTK9QLOROKVZHILO9VDVSPHRRXTNJBCCXBGK9TEIXJSSA9LOPNYFQWXM9TDHYA9JOLXSJDY9OEKNXHKORBRPRCCOEJJ9X9OZKZFYQNOWNIOHSJTJZIQAURUUCRAVFEJRIYYJHURLPRJEIETROHVWPOGAHEFIGJGWV9HKIQRTVLJODPULFLUTMWVYAUFCNUTEOLXXQLEBLQFAXUA9NCH9VOQANZOQTXXALURCCFGAMLTXXDLEIYFOJGMGDOWTTDJTKQ9OCUMSQSCW9YEKPOVA9CBOARZO9TWKDIXACLTNWFXGOQBC9GKDAAGRLYAVWYWOJOKPNEAJQZFQQIRHKXNABIQFXZWGILBKAHZJXDUQWHBTDPMMRDWOIVYMPEPVHUAAESYQTKCZRAAIEJGS9DITALHTKFPXZUCBOGYO9HYLVPQQRAWOBM9VHBPPZ9HEGIYYEWUCSM9HRFTVCGD9XRCXTQYZ9IZGFHSKWPDQQKGCBHWVLTERAK9GVIFBDAFDWXG9UCBLZS9YBCZHYTFDBCIEAKEETDOUWAYJXY9CJGOMCMZAEEUTHPDUWLFLVSNABZMWH9CZVEUB9DZQJZGRGEQNO9PWWZKJEGOHBUPWHCQFXVHOSBRCRAKLUZCOUWELCL9BVVLL9UCWJLONZAFLTSDIJEARGSWEFEWSCYNL9HXLTQDXCFNWNUZMURNUONNJQYHIESVRWDQENCYAICJKUTUUEDIKAWRKYWABOEAWZGHLOIYYVOAVJZZQPVRGIAKBXSDCEWTMMH9FRWCRMHQY9UFRGSFENSNDEIMZJSMJNAEHOSRQQDGLHQD9DQWZVQBXMRCILXHIRWWNKKKIDPROOFMFWCEBKJOLSXA9PLEWEDDFBXYXWUESGRYHSQJPBOKEBSAWWEAXKYGKBIRGHUTIOUIRTWADPCCHBXQZVHE9MBPUMAHJZVVKOEIMENHU9AQTTA9SQDBKTVNRFAGGBXFFXGSOCZREPFNUUBIQ9SUACHDJOEAMABBSYKOBJHIYCHOPTDUWWMTEYGPOFYVKLPBA9LOMWDDQWNV9ELHTRZOL9YMNHMX9YKNAAAEWLOIZPGZSSUNOLNOFUSEWMXXZMBUAFGDVHRNX99OGXUA9RLSWBC9YUNTIHIWOADPNPIL9KT9NISTTTXEPQDV9MGQGPAVGCOGJDDXEDTILWHUBNVRRIBGYBQUADWWYCYWJGMCP9TWGJEQHKTULPVKELDNIMCEMHLJDSTWNXAFLGTKVDBRVXOFZY99IFXITIT9SXJS9SQAQYYDKXDISJPFUFYYAJORRXQUWUAMUMFYIITUOOUUSSZR9OLNXFXKULRCKSSEPF9HLVNSY9HCXWAVAMBRJIMYKLZWGNQFKVLEGKVOSVG9KULJYPAXIJEXTLUOU9JOR9MYCCWVAZWQBZXNNYHVCEHULQJBBJ9IDWLSKSMMZAGKAXYNTQFUMXEYVIVEAVLVOSXOOAIRTZFUHBQBNKDGPCLTAVNXPTJWESBFUWRAYIQVFWTB9L9GWDAUASPFXDVWQQCX9IEGAFSHQVRPTMTGWSCVGQNGRV9JJASJAWAQSOLUYXBZHFLYGPLHSQNVNUTIJXEREPDDBTUTBIZI9ORVPUFFEFAF9POTUSEIGJGXLTHKCMMXU9HWIGLXW9ZWMNCRADKYIZYFXFG9BEFIOLATIFOGMVENSTQAZRJXIOVKTYCEKMPGI9WEAAORAJPQWRGXHZJAGMWWKBHZEMPVNMYVEUPFKAOTCPIYMMAPZXSGVZGDX9IHY",
            "JASCZSSTTLRFNXTJLXFBYFGVRMRR9GZTDEYHYMMYSNPELTZWEPZBVQISEG9KVBLDBIWNLE9RYUPPQOGAGKXW9ONISGAWAPESY9ZBDSHXLRRTXDNBPARQOM9JBBOTIXTMEBCTIYNITVQVMG9MRJJTOHZVGSKLAP9MENRZXUQOSMPTUFLJSRLNOGBOUFITUTLQAJMNUDZS9YKJHFDGY9CB9RFRKFAHEL9JBDHTSRQXPAFCQLLYMKNLAMXNQJEYF99JFCKI9MFNKTFWVIEPPPABGJIYZVAIIUSSSKWCCBQKHEAKLOVDXGCUONCOZCEISTQRF9SCTOYNMEUFHAWESVAGXYGWLJRZGHBFGOHQAPTAZTZJCPYBCMCCQKMOKHZLBDMYJO9AKPJRRSOEFLXFGZFFHCETMKREHEGMGK9LEFKEBEZGIBGNYKG9QNQ9RKKEIADTXKBMJPGXWRSMTLTQFRQFOETYOGAZVKQNQDNBZFGWGCFTS9LRE9YFUFRPATWXONWRULJNYV9IM9KCG9WZRNOTVZYNQYZNEACGKLLUBHSFACCVGHKGOUTPXBDJETQLOBRAFI9LQXMHWTDPASEXTZFRXCJYRHLQTIKRYEI9VFABUV9E99SNSWXMKEZNXQCQ9KGFZ9RPEVYYTYVDZWUPHVDJSACMICBOUAUXDWIPRTQEPRU9JIHQYQCPN9YKDBSXHCGKEQLOPJVIMMOYNOU9HUZSHXTIWNTUVAEKPPKZIHCOJUFNODMJQTJINAYMRMZUJEOZQWJK9ISPUKAAYNNIMYXXHQ9RUIQXYNKGDJTXFGYKPCMOVOIQHHRLXVGESLJLDTNANTJBFVPSZALDSIFCZ9ENDVXFXEC9HDFACVZUPVIYIHKUMKPPLNXBRYQLSXFUFBKTBXAAGJNTFKPEDAXWGNZMHCQPATTKELBOIMBOZIPSEUEJXJSDVJDKWZCPEUPE9NBUYPAUPQOIR9FWARDZJWHWHYTKZAIYYLFFDGKQPISZGNXCIXUEICHRHYHNHHYTPEMW9AVGILVGZHWYQDRHIEMCE9OQHZJOHTVKRKZGQEMWQXIVIFIHDLFELHETNQYCWNFMVCBOMINSABWQFGIKUHOIOTLLWPAXLDVTJJORHPILNJF9LIIX9J9IOFATCFKKLIURBRBORCEDBSFXHVFTDCLILCXIUHNAFJGLVX9TQGAHRJKQEWKVXSBKKMZEXMZLYOJYWHPFJFQJMYJBL9DEUFIMUZRWEWYD9KQHGIBKVBJAJJTZHCMJICJHESSBFYZCEXGSZMHBLBEVODRKLMKXWFFFK9DTDXREQDUHWYBSYQTRUDASYHWR99B9OFETKVAZFCBKFNHWLMKDVRWRJQGMBMPBQYMEAVPWRDMCIRGUHXCNEREEHCDBRE9IIBO9P9PQIXXNGYSFPCPFQEOBSOVAIYIW9AKOKMGFLE9MUOFOGCQHVMLRQYLJXGNGITTSVRPIXOQKVJ99AKCMX9CXGPZ9UTJIQPSTP9SQU9EMRQYLYXHZW9NPKQ9UDOMOKMLSQALWPHWCXSIYCLJJNSWKKEJGJHCNSYPZREUWRXOOBMVTHXWNTVKDKMSBPQTWIXJQMOJTVV9ZPECTILW9HQZ9GRSY9ODAYM9SOWGOYFLRYSTAWHGRXDLZIQEJDHQOLTDGA9EHQUIWSWNKJCUOK9CJYSIDB9CAQFHMBOQAVDFFSAASUEKHAEGZHACEZCSFJIEAGTXLCCKSHTYPCVTOHLPZBFSW9XOLSS9TAUUJCMEHJVXTYOEQOZ9BDJAVVEVFEHNTFOKHAXRWPALGEBVC9WBZIKQAENROLUBPIDZFZUEHABEXFRJKLRFQCELLZ9ZKNVZEUVOWWGCSVKEQCRMQXKFXKIZYFOHLNPIVYLZBSLCOGLLMX9VDUOMIHSLZXAYLWABRFBUMEDUGFZIEGSKGCQNFGUUUBJVFTIZORBSVKRGGUXCZGDRKZ9QQQFSPBICOJICRIFBDOGFMKKGGZBWDAYDENRNKHZQUEEPGHXNUPQDPUYNR9OOAGJMIHWMUSSMBCTEBGD9PAU9OSGQVLWWY9COHROMHBBKROBFEHMNHZBXBFBPAJDFWZZFMQXDENXTNUTUXAZNFZJNPKAXIFXJBXHVLVZFKXDMAEMEVU9NPBFBCJQILPM9VSTDXHIXKMDKM9PYWWSRBEZHGLBTKIGNWQQG",
            "SJODTCECEZQ9YITHGLRVTJDHIQJWXXGHQTGDLFOYHJPNMGPVRWSFIGQTFHTDKGGTKFEGMWYFWPXZHQOVQCSWVETGC9YRPJPJH9AMPH9QAAOFOMNZPLYJPFQKLRPAKVZDLHXYIDGELNP9WULOUXHJS9JFWAVMPVEBAZXGMFTZIOTTJRJXITVMLRKGHHCXNDEBSPGDR9SEOFFSNXVLEAYESTTCOHRFOEMXLCADXJBKPWVRHSETVXCVUWFYQRWPPINPWIPIPTPUTHADCZFTVSXRSLEQGMKWIOECHXHZAVOQXK9ZDHFEYQNBTVIEU9CANBWHNMOTFCWHOXJHLWUFOZ9FJPTVZGNVBLGAXXXLWZTOWJILXGHWAHWRVJQNOAFCIARXTRZSGYM9YMPCXQWUBCBLHFIFZDIHXYHKMUKMZMUAYONXIHMQZAUPOMMUXS9RXOTBMBMBIEPXIIHHHPTBXJFUZFFOBUYRNAWPDWTPIGPYJGREBVCF9OOPFRJHGANCCNAGCQ9XXPEBDYCPOCCMGWPWFXH9KXLDRKGBKJE99OAV9SOCW9MGHTJEQJZUNQPRFCXVIQMFOHVCAGEFKOVEGYI9ZTCKYSGLYCTCPKSIQDCBKZRV9TRV9YKVJDWIADYVFTBAGHZQYQRGOCHTTMJSOQGLG9JMEQUNDUVRRLFLVKQRANPEYZOUAPSCKASFAAF9PISZITBUJIRXSBSKCCGTXFKXXHRMJTGJP9CPETQKWSIPXASWBLHCTUOIKJYCGMDCPLPBPCWRIQL9WD99JI9RXULCA9HOXLXUZEHH9TFGMYXZDWYNTTIOTVMGGNKGDAP9PLPDCPWLVHM9BTRUFXHRONOEUVHIVOQLPHIRCEBMMMCQBPBBNTMSECJTFKZAWJVFZZIROITCDA9MBHBQLMQEASMNQCALIWQIHVVUPWQAMSOWUWRJJUUNYNYKHRTSFQKYELCENVEQSDEYSUAIMJSEHIFNGXIAIGMGXUT99CNOXDKEOY9RSEUXJHAMBLSG9T9CZNWXWLGBQGNSQBORDVJBXDKBHXZBRWZ9LSQAVISWCTZMVMA9BJYSZC9HIFJGEXKMEUKRFRGTKX9LGXUKCDOYCLRUPAUUDSQTPXETIREZRXQQOAXYT9BGQFPXBYQTMZWGFLRKRF9HLRDGGZ9GBMLERVBNMELJREVKJVGPN9H9BVEUZPOWDQUEJWLMHIZGVZCOBVBGINGGZSBLEWDJHDGJFQQXDMHVHPKPXKVMZE9DOCRRZNGUTUCNIDQKVUDDGOQZEZPRRKAC99SDKCQTBUPDFKIRRXFKXLDGOQWSBMOGRRTMJXX9EVIKBLTXKIYNMZADHZXHZDZGVSNQXYCROBQGOILJ9UOEKPC9XEDGPIUW9TIQOXTXMIQ9GFLCRMOERYQKKHGQMYYDUXKUSZSCCFBRCZNF9VKMYKDRXTHAIRVBWBNMIGXZLCIRZKRVCFQSTIVOHZYOJNAMHWTSXFUEHL9WDSPGYQWERYNAZMVPBRHNBWQKCOJAFSD9MMFWDJTIKYHXKLDJJT9UUGD9G9DPJAZJYDRWXXCTAHAAWUUCFDMQHUZG9BYAEVIOSSOSFJWOKQDTMCOAUIPDINZVUNMS9CSUVM9BPMPJCKTLJFCZGFZIVMMTEFAPXSYOPYWHMPUNJA9IWJWFEYMBUS9VYCCR9EUSLQGTDNRSPXCQNDMJMDOAFEIXMOTMETRMGN9M9IYMLJQRRRMUXJHAIDZEAJLIGB9IFVUHGZHMF9GFJFQXBETQLKLPHZRXQBC9QOZMEPDZXVURSVOFWGNXU9ZHRFVVGAMYLFFIPCBTAUC9ONL9KLJMYSRTBHYFJUORBCYWFGPNGVQHWI9MIYNMBBWMVDMNIDOMFIGNHUQWBEVWUEW9XXIWPVQKDGK999TMMACBAHASVWKTQALDMUCMNOSDKOUSYWSJSCGKSQQIROFZXEFUAPGHYREWSFHUQLOUEUDAJPZSSYKQCBGGNBZDULPWOUBCMWSMPQQX9BCFSJMANIPMVKBPRUIHJPWRAEEZ9RAOEX9TICSAZHTBCRKLPVLDZMCMFWZOCWKUWYDBRJM9BSJNRFHBDNXHHLLQAFQXHVYJGGSWAFRCF9JVBLVWWHVJWHTDMRVZAFDGSDTQBDBRJVZS9ECNJKLZWDUUR9IKKIPAUTSZTROEZPIDGBIYKKLKPQK",
        ),
        (
            "CSPIWCWCZEM9NNJXQOSUA9EI9SBHYVQZISITDSJNCYLMKDAUXDFLFSLSEUNCYXRVLCKMJVXGNKQQRIVCZWRIQTDXSDQMDHTCZBBNCO9KEGMJNHUJQBLRXQYYMBXZNMZGLDRSINHCGJNUZJDAMXZJFQWGPGO9FCNYRTUT9UZPPMZESAN9MRZIRVVBWDDPDKME9MBHPJQQUMCJVDP9F9ZCFDCOLNBBSUTYDZQZ9ZQAUV9YJYSO9JR9GBJUGNKSYMDQGDXHPYTWKJEUVGPMXBXRHEOIH9DKAVMWZVNZRHCQEANYXEDNWVHEJBHRO9CVBVSZOWXRJJWBFVZXHZWMDF9GY9TGD9EMOFFGQWOTGBKCEKYZWSFZDHYNCEJHNX9UTTIUXULQFCT9WAAQCDTCDLULJBNJUBNWCQCHGAPCMGOXIMAHBFCEHDLRTVBJLGXHCDUQQDDERTSNKUZYNQCY9DONIAKVC9UKSGRUQHEDPZPZ9ANKLIEOSJUGAFUCLCPELAVOACUMTSPAWWQCKNASXKETOOOEUICMUOPQYJAIGLIZUDGBTUGUWUSSIGWSBCOJXPXKPEDIRFBKDDUHHYD9PKSWPPARRYVDGEUALRCDSOED9IRCNFRIQKDIXELEBIZUPGKBXTJYCUYQVWLVNDVHUJGUTGHM9IFVHKEYQRMG9KKZRUXXEEHSJFNRFZAUPITLRVJAXH9ZLH9FTJMENVRUWICSBCBIPXN9NMCKVOSOHHHMTBUPKOMLCZMPDSEWPKWSJDTTNFRPIUYFSV9YGJQDQMSKCNCHVUYGEOCDQPBAAKTPNEMJWXQSIGEFLWAQFMGQZLMGKXEDGRCEYGSWOBWUKQXGZNKCUQBOKNXHYIVXWVLLTXOYIYYWNFKZZCALHBFACLJAWKCXTTHNRBXMB9WIWV9CSZVLBVPLBSFXKXLWKYRQMNFZDAWZUFLWGWFKXGJTFZNKFKXL9SMAMLAZWMGDWF9XMCULILXVSCZTYIOOIBNUAYH9VA9WYFXBSNTPZ9OUISROCPXGBJQAUPF9UPJXESMDMOPOPUCREERRMXTLSCJIONAFMYTIDKRMMPZZJNOVGMRF9BTJVPI9PHBQO9EBMGGGFVYEYSVTJSYJPFYEJLHKVSKZYLQZCVRMF99R9S9MPTYHLCNCXHTWTMHDCRCCOEOSHSOGLPNNMWYSCJKDKUNHEZAWMFSDVMMEXIAPVRRKONFWGEUBSP9IEUXEKKNTSYGONHMWETPWREJEFEZGUKATOJ9UG9EVUZIDZQKYDRFKCLCHRPLQYFUUJATISOFMVDLGIRMZNINQTAZFMXGWMICKDFRIKGWAXRMPJKTHTGGDCUTKNGYAZHL9TSOSDC9DKVZEPMZGABVSHLGJALJPYRPRZIRBOAXAIMKMBLQGFKFBOEFULSKPDRGDBYFYIMMRSEMBKPEMPJUIWAPABZKNOXJQZZPKSENMBFNLOMUXUZVNJJTDRLGNDG9JXPXMAEOXSNQUPZBFBLHFRIZUTCEZDUIFOJEAOMPFHMGNQKE9VVNGXBIHHNCAN9HYYNQTTFOMUW9TKILPRZH9RIYFVUKJF9GCBFX9YKYBTACPL9IXPQVZCVHYXJWFCNACRJPIHRYYAAUFHLFK9OBSR9VWEMOMPZPUELASECOXMTOHPKCXHVFDPPJFVAGSPSEAYRYCP9PLKHWMMCVPOTDKMCJNJNUZGFHZTMGYNUKTJOTVAFKJXXJJIMAYXG9JLKUTBOXXZTT9KWOUDUCLXPDAAQOBLNSRBSTV9MNGBUDYOPPTZPPUAZSQN9HQ9XFIUZFRZASJQXZSQDWSSPULLCVNQWFXPXXZMWQENKGTUROQNRTUHMEXUBYJGKNOKHFLXZZHXPGPIJWZ9WXVCOFXBXPSXRGRBSLDYXCHSFZSNYHYZEBRKHYTZICUEQED9GHYFLBQAP9NUSIRFSOGINCUSZDUMPLBJ9DKIWKDDZKFOCMJZQFHUEGHOBLPNVVVPLABYMQSBPWFKPJE9HPZNFEHMHYLYPGVVRIGLEYIGLSGHEN9VAGUJRRTIO9HPLOJMRE9VCVDNPZHFJZJWFBBXGNAVNFMPEUCXMUDRJLMYHZMQ9QPSFUBAYRDTWKQNOZYZFPKOOQIFQAIW9PCLVZTCFRMQDUHATAKLLCKORKTYVSPWWADRANADXPVARNGZAHULHFUCQLNAOJ",
            "DTUVVKMIQHIPFKAOWUXNTAVENPMFVFJ9ITLBAYTYR9SITVAOUWWPENLJCDMVLXSSCUAFTNZZQMFOAHWXABQZEFNNUEUIBFBNWVJNIXPPF9JNAUZ9B99CJKUQR9RMZYZEYCOOSPJESWSW9RYONBMVBYGA9SDBV9HRBCBULVUSDCEMLAJNNMTWEGLIJVNR9WNHLHFASGOUHCDKXCCKLKCDKZPAMWUMCBPYRJPOFMZA9ZTPIZVHSIYPQAUDNUUGNTXZKJGWZB9KVKISYEA9UAZLRQCFYBOOXFGZJCKJGHIZYNRCBPBRWXCEMIPWFDGDEMBDAJUCZSCVJODTIIVODVJHSEYPWRVXCBGCMKRTKXOJALWASGKTPE9I9OOMUXFFI9CBSETFE9CGZWTZISXYEVUHC9SEMGRDUDWACELWOONHVRIYUXXWCFOCZEYZHKCRZDPHBGJPKYLZLIQEEOPZVJUOCLDRDZBQ9NLDRWNWGWCBLEMESMCTPDSRXSHDZAOXFPLCONHIDRHDENLZFPRWZCI9NPORPTFUPVUHTPAHX9IFFBFNTGBESEM9RR9SWAEISLUNBBZYIVJSUGTHULGIWEOVRFILLWUN9UMMPFFGOPBFOMPYIGMFQHPJZEMS999GNQYSRLLIISMYHDWLJHDSSAFSCUDICZLAKRGPEAKTGKFVNFN99WZPOCKGXFIJVYMDOBKWXTDXVFGJQYKUOQZLIWJVRJKMCQUOOHDAB9LEDAWPPDBTU9TDIOIJLHMYMGFOMLMNHWLTOKZJBBIA9UKPFLEIEQIEWHJ9LJEIDDVDDIFWYYXPVDRHDGAYDEV9LBLIEMXEBINVQUWJQIEKAKJBN9ZBXCYXUKD9OTVSXNWCCCPGRUIEOGJXOMLWBRXXKZYQ9OSFQ9XLVOJCOAQHDIH9H9WRHNIHMXO9AKMQOFZJSJBW9GKJTQXRRCQHFDVCLDXUUPXYYSIQJAOJGTOW9VTJXXEARGRRSUAKOPROCX9OSXYJFCLDKCEKDNAOVSGVXIJIUDNF9ZKRFFLFWAIKTAVSGVQEMUCCOQFTAAMEAKLNEXNCOGLDHSYIGCX9CEDCNPTV9VVY9WFDIJIYUUZKJQYEJQPRJVZYBJZJ9WUACLJIGJVMBCHTMDIV9YNXODLKZYQAKGIIOVJOJFRWIZRHCSQZLHHUTGEXZOZDVKPZAT9BVIDHOHFQUJ9RNYSEOYAJXHVFZEZBYD9JMOBIAFAFTC9AKKZLAQGRKXWXZOVATWORTWGTRQSWEBYAMYLODYNZIRQFIMNDFLWVDRDXYXTBXGBDLOSNTROC9VRB9OQBVHIIQJHCB99FCVCEDBMODAJEIHLWZNAYNEHZGUHLJRLDPAXKZWCJTHEAZ9JAVQRFWEURP9BQ9ZHWUUKLNVBGPUMNYHVDBBHBTQXEOQESQVRUMYSKJYDILHOCBVICYIVROFZFMDCCCKIQOQ9RFBUNIR9YLVCPKGMGFHEXLMQARDJTRISQBIBTHPMILBOBIWBQAWW9QNJQ9IEVWA9DXFZVDSTLV9EDXY9PNGAXJDQBNZEZWXJLSRDT9AVQSPSXXJZEXEVXLYK9JGILLDIWB99SZQUTS9C9URQXAIDMMJULKIQHDCQIHDMDY9ATXKSO9N9NJBN9HJDSTCUENWF9LW9GHBRO9IHUPFQRTIUVPGPFCOLLSHUDBAQGOKNLIEHZDFNYBFHYWEBRKSAYULQGTZATVE9SGYVGCOKAVANMMFLVOMZKFAXETTMIYMNJQDUOAEUUOTELBXUTYJPTZKDNLNLFXXHWKHDQKRV9BXSTNOYZDMKKOLQPEDFBLRN9KILPUNNGN9PFCZNKXOANOJBTBUXSICWPJAMSXGNWYIWTQKDXPTJCDWNBIZCDJKJILRAMLQVBPIKEYUOXX9IFWV9PEX9HLV9NQZZRBJKSKOGTAKNAUXBSH9LCHQMNAULWVBQKPESKVRJXKNDHCALPYDEVWOBFGTTSBGQLVJYSWTCLZKMEFRSZODMFLSZMAOOHVKEEBMMC9MIUXYOAWBBSJDZQ9NNGVUNVSIDAYUMPPLY9SPHQG9U9DSNKLNPXIFXDSZJZPO9QLCNFQUOAVMNWPEFHZWIYXI99SZPZHQDDWWPVIDQCNZIPIAPOOVWAJIDQJKOUIHNOPBHSVCIMTQMLSSXSADUVDSFTRXYAN9GYDEAQSEWMNNZ",
            "XIDRTBNCNLKVCBZLTUPVGHJNNRHJAUSVY9HMJKIUFQQPZZSWPLCRVURDB9QBUGK9UELOSIPSCGLNQREUFVEBZFSEURJLZRBHOTICU9BTMEPUXUPZNFYYBJ9NEKFKCKJZBHL9QAFXVPUANHMXUARBKIQBUNJMUSDZOIHCHWBXCENVYBRVYDALPCOXB9QSBJTC9AZWZYONPQKTOUCYXILHMZUSXFGFHCELPVOGAJTJMNXPYR9CZGRVI9EVXMJOJFGUBIDFYQOQLITJLHRALCNVPUEMZIPGIUOZOLSJIANQMJUTRIUBTYVTBDBYYQBDHGUGKRB9CBFPU9HVNN9VORGXAGGQJZQPDWQDIEIGZBUO9WVTWTMPBRQXQNYBTUSKMABNAIEGINVAKQSWPRAWGDSJTWUTALPVOXTIUBWTSXIR9XREQKCVKCKQAMNNDGXIEVBEQNVAMRBGLWSXLGMYONWVVDUYFFADFEZBGHFRXT9XQPZELHSGNXSBPOQCVEGVORFWDSPWGFBUMBJKCRULCFNJRKSDGQALGFUQ9HIMUPYDUAKBFNJQVXGSCWUQGQOITBMEUZMLDAXPQQOVDSCDCGPQGHT9FTQTEFBVRLYFJTIKJYRLSXDWJIBLXGH9RYTVBL9HAXKKWESYF9UTAJ9YPJCTIPDEFEVRCUFUPCQHTQPTLNVXSGEKXIVDLMIAJLSMDLPNIBOEKPGWDI99IZBFNK9LTYLBVNQIMESUKUAOIOEOWENGMODTEIDKLTCEMXTTNLDCMOJYUABCDIMDLRXAIUCHVNQOLMLTSXUOTUXJUNWVJSAOQZQLEUVQMDDTKAIU9HTTVMQIFCIMZZZDSIPK9PF9BTISIJEGFLORFBCAVAJJPOMOSVFRXMJXWHAJTFCDFKHAKKBOOAPOBGVYZYMKZQZVNMLAVJPKQYJDDWRS9OFRBPJXTDFEJBZMTGOMXLNPUYVOUK9ARBSLQBZVHCFEOPSXTTQF9SXQNFKSGWRHJRUZVYAHTOIGJDIEVMCWJ9VCNUOQMYOGSQEZE9OGGWFXDXLUVTGMSWWALGXSWK9MYCVKITQJRAQYUVLOJFEUUEXKKGFUCDFT9SOWDGBYXHMCNTEZHRPEDVMPVTIVKZYDCHLALTJFIJ9PACHQOHXRKEGVQJTWKPMSBUXVVL99RTNLQJQUPHIHUHXIJYJPZTNXDNNQWNHWWVGS9EHTDDOKNJDMINYOOJXYSYMKQ9SZQSDIR9ZJSGN9V9TBP9MUAGCZLEAXNFG9NMWCUWDFQGBDFJFNUYGDULYZQZ9ZMTGOX9ZNQNHNGUEGGRYBNLBDEYZQVUWJEPPYVRUNOLHYQNRKTIFBLSBMMMOX9LFLZAAXIOADZNWTMHREEJLYZUDNXIJMPIEWUJSACE9OSVKKFDTQVFLNFNJSDRXOFYJ9XP9OPDYAUPWZJJYTZVVUXJUA9MLJLYZTFGUMKMKJRIIXRLE9SDVZROKNCNFVBYCJXNIXRYUCRRGLBGMFNCISFWQEYHXGZDR9RJTZLTZLDFXNMLKRYTTHTOGJMBYCTZSXFIV9JGPAGMUKONQEGRXJYUZVJLBNEJHHSUWHFHLACBMVOOAGQJQGBQSYZZPMQWVM9JDUYSPRJGZ9SN9LGOCUVA9AJODRLRQYXQVUYNLAZFLGSJF9TYBFQWKDQ9EY9RVZSJMUSDRTDWXFNTNVPSJQCLGPGIMFFQHYLPEUSO9LVCVYARAZRBRIPXPQEQINYSZSMYQ9XFZLGSPMZZSGPYLNQUEZQDSJKQJCBPPCHDTNZZMAMTJGPBRWJLKFQMWROCUDSYFYCPCXLWRXJEHNDS9EIEHHGB9YXPHAVAOUME9UXDQPNVRNXNZSWBCIDEYPVQNUXQUJUYSTQNFPCHPDBBBXQKHUQSREUMWHWXNWJNRSZEFBFUNHZGLKLYUGRTFNPQDSECRAPLHMXUUMIMQCMDPISEGOTKKUSUWKUAJDWWBBWYLAJRYBWVHQQ9OFYGZNLYATIYYZAXEY9QIVSWORYVGPOGZELBRLMGGEGQAEVLZCBYDWAAHGFWUTYJSARXHUNKEQWSIFUZKHWLYHPUZXESJHW9S9YUUJFKWNZKRPBDQOLSMXEHNXQRJALCHGYLYLNRONDAZQRYCKDQENEWQNQUSWTOJRPMXDRXRDPKQNXERLTIMROY9MIUYVGCDDIDDQBIYWRKW",
            "IHFCXF9LBMPZEJNGKGFJONQLUHUXUSQNFFKWZKCMCALGHUZRHZUOGEMQNQYRVCHBVUWUEPSAONHGJB9EPJWWGJU9NAXYCVRHBIYXSNMGKH9LONGEGOJTLWZGLAIGHCBLVDUWCBINUQNIBU9GRVSKADSCOOZAUWUNVCURCPDKMJVODMAMDNQCVSMZFOVJUYHMUYLHWJJWDEWZATFWFPMIRBIT9NBUYGIZH9FGJVNXCDSTCQFPSLALABDQVFOIZUBIJSKIGDKGRZXTAXDKL99HLSB9ZDHRIZLXZPEWKHIBMD9RMNKKFCJITCGOTFDVRBXPADWTDXNLBDHJXFSNNSTUPAZK9RWPXOKJWPX9HGESDFRZIVKJYQZPFUJWCARTLROIGJ9ZTSBXV9ZUKHNGXZEVXEBHAIL9TPUBZOQQHEYTPPTIFWJBHTLGCWXHOFG9MCYBCTHNAZVHWHEHWISGYDMMENFBG9MUQWCULFUHCJ9AYOHOMRWQTEXITJFXIQYYAEKY9PKXAISSBZLKONHMHTSDCXITLLBUKYZJNKJYOVTW9BAG9X9TTXZNERIGPJRHRBQOBMTENLSLXLTROCUMWRTZOBXQYIYNEQBBNJHPEQUKONISCCRPCPNNFXHCMXCNAKOVAHJGFSEKATVIBWFKAGRYHPMVVHVOOSDRZ9HIQWCHGFGIXJTPIYUPKT9GHCFAUWSEWDLWBGWWADHZFBGGQCECVYDQYQ9ZFKMEJCSIHYV9XNMQUONGBROYZEMWCEOJIYHWNGEAFMKFBUJOOJJFKFOYIVZWGKBTEJMY9CIJUBONZLYYFZIKJTUFTWJKYMUOJKFHEHRI9OQNYNACTFYZAXI9ZVPIVFJDJMVTYYHDENRDVUPMXN9TYQGSEIWKNXVYXNZRZTLJCBDKFCUUTSPGASK9ZQ9HHFQQJWMDPGDZLTRPDUBVVLW9FOZXMYLQSMQ9NLAIPLMMKTCOZDYWSPHUVRZBOEDZXRZ9FKWGTJIYPKWHTSZNZMPDJXOVAGYREBIGCUFH9NTUUHZOMPYIWKASBHVCVLHUYIELMDDRFSSN9VWBZCG9QQMWADYP9MCLXPCQSUZWETNMUFQWBJWCBCHG99BQCVUAEMKYWUUCVEEUTXPYQLUBBXWIUGBVI9MAIGNZGLUZBJ9SZDXJKWEVSTFWXBNAMKUD9GKBNGJWKQPNUDQCAJV9VESGNAUZJEUDVNRKIMSUALHVKXVPUNOZLINYGUJJPTJOFSKZJKSBHINWLAMG9GKKCVVXYKFAJENPEBKSEGPEMFQJVWBMJM9WUTMXL9AJKFALVTHPVQCRLQTIPZUNUYPPWOO9RKICOMHO9XTMRQME9EDLBQDSLTGYDFNGTAJANHTKYWATLKXSDINNLERJIPGJBCXZKNJOXWGVVRPQZOQAVSGBTLSCLIYWYEDKWNLUKCGSUUDMKBXT9UAWGTOVLAQ9TPFLZHXDYPM9SKPMSBMUPILUGOFPEPG9YQUQCTQHRCEPHFODRGNROGOKSACBV9XKXRAHL9XNPDTPGXWLDOJ9GAIRGBXUM9TKCNEBQIPMYDLKJABTOAXNKLGM9SIXKGYEGYXCDTSNSKSLIGSRV9OTJHXQXBMDUDHAFYRISORFGIQMRUBIZKVIED9SKTWXYSCQUDJXNQHPPBOPUCMGPNCURFOKGTLSJHWSTFJGUKLYLIJEVZZVEKUDYYIQMTGZHMW9WJTDKBSQEZAJVRHLEACAC9XFCPPTPJJQPGNDDHDZGBHIGGJYEQQXBTHYEVE99IWQHPTOBCJVGRUFHNRJGNTVQXLPWAHTPZXZ9CPRHVXMNYDWLAYOKSRDZFQUGGYZEDKAGLKF9WGMHLUDBTDRETNGXENONDBDRI9WLAYZRIUKFNVAXCAIPXXIZLDWGUTAEGTH9GFXQVRVHERZJYPKUMTBLHQ9RJZAHGBHNSTZUDOIGFJWFNDTCKY9TWRTXDQOGWNVPOXAYGGWXLDRUIWKKNNTSOYNOVJSDNWGUWB9HDOJZTSEWRDUMMKEQDUVNYCEJASZZIPWFZVBDCMZUSC9XTEGDZVAEIYCVGFPO9MLYSGSTFONCZ9UHEWVCAQERPKUPRLNRIUXDJEYPBOUMLNSWNMPAAPILRIHRUVG9VOUAYMPRJZGPLVRBHABUVFJUXVLRNSZMEHLZRWYCTVUI9JCYHRUQNXLKVNWXBP",
        ),
        (
            "DDDRYVOGWEDNJAOMAWNYEAKXUJZAONJVZRHUUILMZSCILHAYH9SDORTPZALMSZWYVAEBAPFANWFQPULIIBBBWDOLCPBUEYUQLTZFCOZWNUKGSEKZGBBONG9XNJXZWBZDGQVKIOPWXSNHRNIKI9ADLIHSWP9ADXE9NCNXDZ9MVUYXPGDT9EYCQACZZSAFC9VDULYDDBORIZNEPSPVZNVQXMVPLVBEQJAOIMOPIJHZ9YBYOZZKMEOGHGNLNODJ9DFHWIUMGAMHNWTKV9BFSFJKUFUBAE9OHYWHEAFFVOCTJLACLF9IWLHJOOINBJVHSNVKATLOSZLARHCSDIEDINQLFJERUWHZNJRBOFQZCZPEYJMJ9LQ9SIZOZGOZLKHCJDIDIRFVGKQK9IASNBYYKETNTMOKTLMWQXOROVNYFDLZQO9UETBYOKMJGMSGGGEIUWVRBXPRXBCUUZFUOBJLUQEHZROHXVOHKPTNMQPZGOPOYPXWBJMQLBJHK99RCMROARKLCOKIFEXYRVRBWZSKVCCEIZUPTCPI9VFTYJOJRMQIGMQABZD9MYHBSGYTLKDZM99BMHWQPPZKGCBOJBKX9AUYDMKAVGLYUHJHPCYHETYBCVHRVMGNMZTPCNDGWURKQJKZQZVIBPTAGO9WFPQMPMZGLXUYQUNLQVCKWCDVLPKSFJCDYOJNNJCZHNWSGGAVGQP9CMU9HKIKUAATDB9BCQBDNWCOVFBKVBUWGGZCJJNSLVRXBNYXQZRPBLTBZ9H9DNOYCJXAXZZLNQYWMPHMQBVHJUBXCHJKLKAVAXUAKXAQCAKVILHQBAZQ9ZJJPZPAKQXATPXMMRSDIXZNXNLGK9BYVIYXWKUY9RZTRVQANQSPBF9VECFZFKU9HJIVZUOWXMFHEXEWRQNFMEO9PZUTNEKMILXEZZSYQLIOCLOJPCQYMDCETSYNLIPTHCSNOLNFEAOKOFFRCJRYPQIWVQTCTGCRAFPKEKCU9PROPIHDBH9FVLBFADARAZPJSUBJWN9JZBRTOFDXPZGCKKENROUKLHYJCQOMPRPPNVDSQIFI9FKTWLPJ9MJMZZBXQAUMDYRPMNSDVXISRBCXAEURAXIEQJNIVZZDF9UYEZNAQABOZRJFTZIZTDTMJPUXOVLJCNCGOVEWRBFPCJMKAHDAHMINHCOYEZJXNDFRFNFFQFMOQVXJFXRYFLFHMRKXSEBAGXYSQ9ZJSWRGAPFBVOYV9VNLALQXPORKOAOXJ9LVWVCUNUSBYYCFMAFPSUASQUFNVSKSPSEYISRNGKVVXIXKXOQJCTIPUYMLVBOC9HHJZZQRBIPAKDARQVUGBEM9AJRBWATTTSYXPXHXJOJXYW9PQIWEEGU9GBUNUQYSZODPKFRQHNVGRJBDFCNNQQAGYGRRFZTGGBANJBD9XTDYEAYBQDEWRGYZNZOFVE9N9RMFVTVEQMXDKBPPLHKW9GPGURYQFYHLLHKJPDDEDXNNIJBCDDXJIPMHHDQPGT9OSPWCJZCVEGRUHWIGTMCCFR9APUROMY99PTZWVPSISTWTSBU9H9GPUXDLVVIAXBFGLIBZVQJLUXHSDKLMVKJFWYAZGTJPPOBPUXYSZIRBFLYMZXWG9EPLNX9ZOWSNEBIPWK9DTNRENJMGDEFMYFXLYFRLYJWPHDDKHEQMRBQVOPBLYRIELXLMVPZXPKLRAVYFEDHGHU9WUI9ACEQPVCSLIEXTKZGJXVBCKILKLAKOTCLNXYZNSLSWZYSVZCBHZYMMHPKSOAUPZPUOWZBVFRGCDUAVAHUVWEBDKFQTRTPMAAUHOJENJYJOFGCMPDNZKOUHRADBJV9P9KEPITQGELGKXKROGOOWKBDIVIMJYLBBSVDWJNOQEJP9XGNUBWYUYPGYNFQS9LUFXCKVJEYYHLL9BPBBICPEHCXDBSQVMCEETDIVOZIPFGMOSZCESCCMCTAIKKYQDTMORNCWLWQENVNTRZKVKDVQ9GEGIKIYYCITWGKDSVUEKCFNRRYUZTWKLXECAWFNKFHNPUDUF9AFOYRSUVLPJE9RCWJNQWSZDG9LFUQNPGAGZOFZUJGIKCJZDYBBGHXZTYJHSGQBCGGTUTRNFOCDCUHHPWLOZXQSPLJJEWWQZT9UKFAMNLOMPUGVUY99WCLGZYQLPIBASGPUSADYEZFSDAVXFCENAL9VPZWYMCWTLGD",
            "CSC9HPBEGOQLTLUBFCETMAGM9XHISYVSWRI9DNAILRHXASJR9JWTVKICGNJQAGUABIIUYJKJMUIBFRIAWTTICTDIXHOJBEKWKOBQKNPMNVDLAQFROLJHCPSH9IDVLLRZNKHTNIGXVUZAOYKGMKMRHV99LJEQGREDEYKYVPWLTDQMPFOWJQPBALNVUTTGOBID9NZIXKVRJOOZ9AJL9UBE9SSEEEIWRJNC9LGXRNXBVMXXSUBATQXKTBVDEDWWZEDJYRZLCLXQJDNDDFHFKOXYZLGNMKYULQQGCHMCPUDC9SLIEHEBSECNYNHPDZIGRMXDIB99OQTQJCTT9BRXVKOIV9PFJEHRRDSELECCECSEHMRUSO9YEARXFJIWNHCT9NPLRVPQXUVCQGQTHWYIVQP9WAFTJUWFHRWSTUIQXURUUXSKFE9LBUKGVQPNIXIPBJKVWJKIIS9LFFKTADGDLPXCMJFKCRAXSMZLVGRXBDNH9BDQXPPLVYHZQFPNFORFONR9ENQDJCDAWUDNGPUFKBBXCT9VGKPSFQTTQEJGVDMGJEFKPDEFKQOZD9D99LDWNYWLUOMNGXBUHZTCBRHYJKX9IYVLAQUNHJSFOZYFFXYJNXWQIPAZDSXXLUQXAUSDYGYQGNXZXXQDEYZJHJMYWJGFGMINQINECCFSWPCQY9BWUNSPZJWAYZSAMOBMTJAJDPQFYNCYYCNEAQLDRV9HEQRKXYDIWTNJPRJDKYPOOPZPKXLVUSRXLRSLVN9XRPYNDUVTEUDPNQWGHNLFIOPOXXTKITKBBZFHIWODAOKEFFDRYCIOYFN9LACLMZGGWSOBXRLLNL9ECOJ9ULZKCAYRWAYNZLGTSSORZHQVJEHLNKIXPWZNOIDNFLWYVICHWEDPEDSJVJGYGERMKDDERBGAWJGJCTSQSE9CWR9VSIGKPJXDGCWPV9XJITF9QXZQKYFXJEILSKZHPCYWLLYBGJH9UHXEEKNM9WEZMTZOAP9DYEQVDEMDJNCGZJZQVBNULRARFBJPY9UKGKINHYETWWYMUYWKFRQEBTVJDBPKYEUQAQF9MMXPQZTRHEPMZLHW9YPXRJY9CSUZJVCBRQWEPJFODKDSDQSTLTMVXAMKVENCZLOOYZWYUDQRYMBWHVN9KABTDWLNMIWJGMHPXVQ9OOQSWJSUZHNOPYKHRLDMQDNKSIWLUNZFQGQN9WAFTOBNDVXWBWCGFULYKALOTCEXUUYFSKYXVRVATBGZTFODZXVCRKBWVIVZXVOYCYPSAOBIRFFCENSYIDJUTLAJQOMVSVLDHATPFHOPLNMWOFNKQASTYUIPYRRDKMCRTLGDGNFZKMJCBFUHZHIIVUH9BQQ9AQQQNBPJKKSWQWZYFXVICTRCVUBVXUIEJHKAHRTTFWEQFHRSFCQJI9PZKVMQBGCGFOAQSU9CZVQKEXAIJF9ZIELDRZHCWOW99ELUMZEGGWJFPIAEOEJZQQBDRRWXYGEMGAEXXIRZ9CWREIKRVDMMKZHSELFOCTULYHUYN9SKTIY9I9NYSEGQWOAPQUVFQMCTFIUIZOCMECWJDYLERN9LQ9IYGF9W9JEEGXAEF9AYPJAKAYBLFYKTKFFKEHXWRYKYMJHAQDJBAMUBDHLCAGBHXHXLUNIKACDUNVU9DOJKY9NTOTIDSZTQPVYLJZPONKVOFLA9TCSTXUGE9DAVMSJEJWCWXZGLILZXKF9OXSZWNCSZJLIFIVJSMBHPDPYFIALOPCDXDHNYZWGNWOOCUTWSLSGFPHBV9GAUOYGXUQIFICVUONDJNPXLMKIOLKFUKAC9TNZKDPMYSXAMFDEFFEAEFTNFVKMVLEJIFFXOEGKCHJXDZLNKFJSGQMDCWQDTIRTZUOBZLMICFQGINEIWL9ZGSWTJBICINJWXDRTDDXJOBBNCWZGIZHVUNBWWIDMPXILXWESHPAVPPYQDDFXCCFJRASNECHLUHRJTROHHDXOEDGMNMYHCFTEYMUPZAAI9IA9VYTVJQCHDCNYFV9PKWRUMAUPVVNJKWGBPZVMLEOBAVNXVQIYWIGYOWDXCWZUPJZZBGWZMXITT9NOULJPZJQJGNUVAFZCAWKZOTOVTPZJ9GFAPOWICQEOPILTLPEZZZDAPBBGBJDEXXKHEFXXWXIBCLQTRRLZRJVDHIAJPFTZUKJMHTN9NYMXTIZGJSFJZXCC",
            "NRJQACAZPIPVQIOPCGXYJGAJXGPSQZSGLGYUQUB9WYAEPAQRPXHAQXLULIKATAWPSLSJSKWHLJLDAEJNWPLSFOBTRIJBAYKJRQDWZZADO9R9ESRXGKKOXXQYICZFGDBELIGFLLXJUKWHQXDUMEALLCNXAJWBVQCVWLXQBBIQO9QHKPTIGPYCRYUMDDDBLBOUPQTPFGUBMIYXDHVQSXWTWOTIRSXTELWNRLWZUFKEQQNCPXPWSRLAKX9IYXIKCYFCSXCYEZPTXTTNQQIZYSSDVZQPCBWYVTYPPEXRCAPWPTUVCXJ9APQXEEVITANLS9DMWQKHTVYLFJRYSL9BEHPNUQLIHYGWNVYAGTLQPDR9JJNCBKEYW9ZSFOVMCGSSHWIBCZBQVKTLGWUODUYSRYHUX9GBHTQAEVSXWHCMXQINZVTK9LJOHHIKNRMAGACDUEFLQ9VLCZVFZCLYSILXZYKFH9FPXDOWTMHYKJENSYVWXXHSDQMWTFSPLAUQNSZFMCHHSDANAYGGIDILFPSWANGMNKZ9XMNL9YTFJPAVGVJXGYGYMPFKSEKJGITCPEARHISR9L9TQF9WIWPTNHBWQBOQDJZZZWZFVUSFLIKPGNXCJZWCAKGGIPVJVLOCMESK9XGMIXQETXGZSXEZETQUCIOOQBWYJVXYXXHAGIPDWOSHW9QJHW99EINXSNQL9JPAHBKDVWFSULNQYTIXTIJCZCXJEAUNQTTDCGLHGFYP9S9PMJVTQCLOZTJMGIYHXISIMUWYPEYVOVYAXWASSQEMZWYIMASCYBB9QQMQWPLXPZDHOWJ9PMTLKDBCCSOEQE9MIFRVNAARZWZSEGUCWRK9Q9GNAPMBVTISZLCROC9NRYWFRBYKNLECVSSGUENGYPPZRZNZJMYZS9ZCSABUABWRBDNGQSPJOEAXTWCTKZFXJVUWQKTTNHTN9CAEFI99ASXCQWRUWHYIIGPM9QEFRYKOEQEAJCFFIV9QTU9GBPTGNFNCQXSH9Q9MFTMTJAMHDPPTPAN9ZGSTWAZXVDLCDSQIUGELGNAWDKPQBAEYBIJCZQHJNDFR99IEFSFUKSLPHVXJRDIWDSENQSPVN9KGWZRMOZWAQRZGYOHHKUAROIAVBPEWNPPYHUYWUIOCF9ZSFBDNPARJTN9EJVPTWH9RZT9YNGYNRTNXZVAFWJUZNYHHLBXNSGPAMRSZSQM9RFBKRIFQHQQFHHHTEOFSDMNMTMDRDHHENZRLGEXFLCYXWFUXHJROEQDKPEQPPXNWZKMRGGEAVAXLMHRRMVAWFEASNRLBHGCXVTCBTU9VMOYVBMXMVGQRF9JFXDHOZGC9KFACBFJRGBJTIFAXNHDASENRCOKFHFZH9IPJN9PNQHBTWGDDPBSCICSKACXGCBEOVGTEHKKPTYDKMQNRBZBRJLKHJABSOZNTWUAHDQ9MAKIN9DDKRRUGVUTYVINGYTVUPOPUQK9ESBOBAN9NCDVNJCYUNMGDHYFWKWBDLTJQWZXMB9WUPNWCICGDZXELBLLLNXQKNJWYIJCNVCQRTORZGHBTCEWYIMJNJLWATEOBGRTSLLPZXRIXXJSCNOCCUQRFLTNRVZSGGGCCOQ9TXYBLRFECPCC9DOFMW9UMBGR9VXVTSACBGGGCLAZNKHPRCRKQCNHABJKCQVAWIIGSLTPEMTCMCZQNSZCBBWFMMSLBRABSWOQZLDZSIYQZNBBUFYYAZHVCTTPWVYPPXBLPFGBLDBLYF9WYUDBUKP9KR9VIKEVVYNUWRTGUPZMKXSKKLQQVOVERYBUKGB9XXDH9DDSYLBXBZWHGWRLHMBWWQYQKGSGLYAQPKOYLYKCJPVAB9LAZEWUGROORWJOUREWH9NETPOCSJWRBVYVJTI9HJZQAOQZBDGRJBN9FXZJIYTGOKPWQIEGVWJNXPQHVWR9GFWYUYQZVVXJRKCBSBFXCWFXLUPYBY9VXSTRNMGZITWQFAUEPRVACMIITUGBACW9WKKPELWKTLZ9K9ZAUHSLMEFFBEHEAKZTHKFGLOCKMB9OQHFNWNSYUWUIOCKNUURTGQQHEMVCVLVSDPBAZUZRDIREZLNLWNDBYVCFGMLONQOZHEQFYGCOUMHUY9VGPPBZUBRRCUVDFSCVEJG9HONOGCTMHMXOXDGSPPBMFQWDLBQGWGVQFRHUMQEYUIQP9FVOKTVUTAQX",
            "TNNUBROQPIJTUKARMOGKYHBVEVXHZGJEHWDEIYIYSPDSASXKSAOZRCUWWLDJTLDJ9QXBDQPROADWNUR99WKFNZNXQWWJVSVVONCQKOJDIHYBNZWGGPVALYKKGDTPMUCZQ9ZVFQCOLDCLS9ZQOBGYVZPIWIMSPPKJY9OVZRRLEJFIDTKLP9C9ADOERAFIUIUCWHLGDGLIV9PDWKCYNSLK9CHAYHOEPOBEDTMEPQICBQZAXCMRLNEEJUTYWXYRSZSLNQD9GMVENZVLWELILXHBRBLFQXXZMTZB9WKCBUETTVLQTCRLADDCUGXRHGQKEJBKMJYJDEQMSLQYQV9PU9MRBIXUFFKBEIRIBTZLYUWNUHG9XJSLNOTUSQFIBPSEQWPNLPZUWAOOU9KQKLNIHQZLYDVQ9NRRXIDKEOKNQRQXHYKGBNIZ9GQSQOZRVVOSKMGAMTHGCFUHQH9NRVWIOTDUDYSYIWVNDYRDTKQLSBOYXTXNMQQZWNEBOKHXKAN99UPHLQY9SQIHYLUTHPFDKJMRVEFZBIBEBLIRFIHPGXIPXMJSW9PVWPQFJHKI9TE9VBDKCYBSSUUDAWKIY9QELIJAZDNLIAMUMWQMQPEAMHGQTOBHMJNXVTBQHUHAUDXFAKBBSDRY9SKHNHOAQZ9YKTMBKWAAPNH9EGZKZKSTGUGIDIVLIVHAW9IMGZTNFUWGTXNPJNPURFEBZTIAJWZJZRMTJNTASOUUCNRRROSSOJGDMIKUODWJEHIYXQWAAPO9ELXTTANEVUWNM9XPRXMSNJBFXGOKHJSPRZXLHRTYKQTSDDDXXWWUJ9LMOKUKKKAYLPPBJLDVRDMSNYDX9WRMGEURBYURBTJHFWJLHAVLCOLS9NAB9MVSGMDUFSAABZSUGAKKGUJMIAFIODFJCANWJMMROTIZFMTPQKYZFWMGODDHIDXMGMGBFURGJZC9EUHSOGAKGXQOBEWYKKFHRZEAMNCESEDEBTRGNTLLEXYL9JIGTJYXABIKOOQGIXFGUJCFRKYHYJKVVOUXUTBJUZSSQVOYHFZF9UKZNVABCACAARWXPOKQZKCFIQM9GHGFR9AZNVZVPUSMKZEKMAWBHMGSEYZZPGQQWCFIOMAXSHGJBLUPSAQORCZADKI9SPTFOIDVWUIGEHGCMPJPHGJHQXVQWQSSAOTGXYVBKILT9I9NLTEMU9NSZFDOTLXMMMJCUZYW9WOZOGRRSLADFMYLZBS9MESFJDCEEMQDDVUHDLHJWBDU9OGYQREYVOIPQBQMEL9O9EWNBFGLFZQOWJRGFWSQFJMGGZEJFQTETFCEZGIUPIIMLAQXJWHCWUXRCKMPUHLJBRFYNTBYYZGLFGU9HMYYQNFKITLMVPRQUHSYNAZJMDSEVWIFDZQPIGEMQDBYGW9MNZZVJIYTBJIRKSBGLWCWPMT9IFTENIQYNKAVZIEOPWNQLNHMLOSN9TBCHPCEPSMVGXWXYFJGTRTXFZSYQMNNPEAZAUUNPRASYFMRGDSBAZFSESNJCJHEXOCHNIEOVYHRCHUIXWYHJFDPPYWTBWZPLQDL9TYSTMXPWNCJFPZIXLWFYAUZXRPLRLHSKWJIPHTNMWVWJZKCKBEXPAGYG9HKSFA9KJIRQFHHUQFKOYHZFFQIXCGUBMZRFPCQSK9GVCDXJYZX9UVYKBTPSKPHSDPLXUCCZNDCSMGNLGTAQTQWJA9PKHKGRGKHZKMTVNIWDQFPHYCCFWIZVDROYCXPPRSHA9FRLKYCGRJAHOLG9HPJTPZKNGQPZBNSPLYFQCVNKCDHC9PAQWAMFSMBQQNQ9JSZSGEPDVQDXNQASUDBGOCB9LUOMDVWBEPYYGKJWJFOQNKTRDPMBNJFIBTOAFTWBBWQFLSXNCUEKKEMMUEIEWNJGJPQMDFIBABUPVMOIHHGAPKCIXGNGRXTXH9D9BOP9DJHIUGB9PVRVYRQOVQDWUKPQWQDBCPWAJDYKQOKRS9JPTEEXHUFLRTKXZFISJITVUIUWCYJYPWBWGCIFFHGDJ9XENGNLTGLCUSQUIVJKZEUMNHMLNOMTIWXMVZCPAUJHBBXKEPOSTANZTIKWUMMKPQH9BQCI9LTTMODQFRFOTPSFZYXLCF9YLQXI9UTQFHEKPANUVLPKJOKUMGVGEIXQITGLKDLMIVYVYEVQQFMXXHUHCB9NQQJORYQNXSS9YL",
        ),
        (
            "W9ECPBPMON9LVAMZAK9LSIJKBRBFRW9QRPMSNDZXCHRNGCHDFZCZCVGRQYY9JNQCYFMYMXTWQVXRLHHDNPTKTSXLSAKVSEJQKBUKMSRRZIUMIZSRDXHRWHMFFYGHDPHXGYMAUKEGWODVHXSNKFDJZMDTCSPZCIP9PHTMC9MYWM9PEYTUWZKTRBIVCIDBFSEUSLGOYEHAGOPWLWBPFP9LJHAPWWJVFOMTMZPWDSNSPHYXKTCQEJ9UOQVFDIJDXJBFFBU9IPXEGYE9LJCLTSMZV9PBFRBWNMRUSTSOJAKHMHGVLUCSK9LHHXWPHHPJXHKXPUCSUJEPWAYJKADEQNA9CJMHP9DILAUBPHQECMYWVBAOCOCCTQIXPOPBJCEYCWGSIIKNIGNCLDDLYSBDXRUTQXMVPIJQFDTIU9JWQLAWVOKIJXPWC9XVYMHFSAETJHBUCBKNIY9HCTNCPL9TK9XEZIPIXQYYCOTMBCKNKZBMJYLNXTO9DWHEJGRFBASPOLHAKCBMIVQHSQFAGFQLNGFWWQGSKROAEIPZXGIYPEMCBLUWFBHAFHPDCDXJ9N9IKCXAZPBLAAYKBCRIWZITPNTVUVHOKUIEDEXBPEYZJWGJYTYWGHGQNLAPLXREDVGUI9F9KRVBXMYHZKWATYUIIMBSKEHHTUNUKCVNCARBTONHTVMJDQGWRIV9VQHIWCTYWHAVNCPXINGWYSMFJMJJMYOXGHVCBXSERMWUPRIVNSDTTGGKPY9AVZTIDNWIHUQ9CQRNOYJCOZDWQXWKSLAYGGTOU9IZYPGNIJZMAULCPKZHLOJKCKVTYGLPNJM9GJFPGWNUWUJSJ9PXTWGUHAHEYODNFJQMSY9O9XKHVKZOHYRZVUVERKYAFKTLJPNCK9CI9QLEZFFJXRVPFGVXAIGWT9KSXHNRKLNBGFFCPQSRQ9QJYQHQNRAPW9VDLUAKJLUBSLDJDFLGSKFQHUJDFFCWVQMVTARAYBXK9I9FVRYNJTQKZOCVAIGRWKTHXSWGLMJFNL9ZTRKNRJ9AUC9TR9QTHMMMJCIFRCAG9RCIMWIJKJJUWJQEWNT9VPUICKLEIGKUV9FHFPQYLJUBZZKEWMBFWNTOI9VHZUMIRVGCWTK99DFUMPUUZKIWYOARDWGNVODUXTKQKVYDPYSBWXVBYRAGUMFOAUSOVFT99EUCKESQEGQRMQNKCTD9LIUNSSBJODLLY9LBLKIIDEOITSJHJHXNRHTPGOSHKPVVJ9IXZFMPEWJZYZ9IIHQZHDFD9VW9FKLQBSMDRLGAVWFNYXOHANCJGAAYTK9MDROLJLO9P9SDZEAVHWXGQXCBDBHCSRNMVBHUODEORZEXMMHCIPHTKHOFVHASALJLKRMGT9NQWHVZGJCVAVNRLVITZVTE9NJS9PGVAWCDDISDVNPGIEHQLBFOUZUKWWVRPJMAAHTAGOFWGIVXOYTEVWWBZCPXUA9ROBRBCVWRLDONVZUDPSCQ9MB9QSRLYRHIOYVTFNWMRYEIZURTFETLYGGBOMSLYCOIXNQLKWKGRWCSJUGQJMOZIVYCCJZEGGXEDGAKHALJSXGXKGNPFFNDWSUB9UDNDVJLSWKSWKUBJVQFZSR9BKSPAMKYTGKWNCPSGBKMYGBEIHNGTYSHXEWYDKHMJTROXFMKYLMELPSRDOX9JI9TEOW9TMVRGYGV9OBSWGPBSAIXOA9HHXGYAIXAMNEBCJGJVOCEF9YCJSJCWGJYZNREIGM9MYAZ9XHAWXNUWBUWCFQVFFVKTYLIVJKBKUBMNDEAUPUTUPLXKUNYEVCPFAXWDILIKUEFLB9WUQKLRHDKVANQPWXNOUGZPUATJZTXVM9THBBVDXCFRHATHPKKYSVMVSJCZH9ZCKHQQGDTKXTTPCOZVHNKBGUVTULJZCMAKXHV9CMQN9P9XO9ZOPZJEANZRQZNOEFYSOKAZOFCCCESSNRFZBROBKPOBLVHYOBWKTCVWDEVR99HZRQDQTXKKFRYIPGH9TSASBEVSMXRDNH9BEJATDDNUWMDQSYTJU9SZKIFIWFTCACMFPDMYGJZWWOHVXBC9WQDWXJGXXRAAOBZEAGHKVQCSGARRLZIVROHCTTGGLWRDNUD9SQUNJZRNH9TOWTFCZGI9YCHITCHSTV9DYPULHOLLOTAUJGZSHFGOTFGHBMUEFSVNVXZVJ9PQMRGHHE",
            "UIHGKSJUKRYAQLAYDZZT9GMD9XCNWBOATLVAXVAMEPSIWCUDHZJVCFNUPHOSVIMWQCYTACJLEPZIYZAAWKTNSCETUHULUBSCSMSMVMEMOKBZ9TAHTHHM9GKYMJYZDKHOQLSYSBPHSCIZKVZZRE9IZWOS9KXZJP9VZDQEZTPLSXFAIIE9ARAWDRIYJOEBVK99UEJXMACJCGYIERGWSRDEUWLKYNHZSRKOR9SUWS9HD9KBSZMFZOAFQAWBHZA9RZWTWWTOSGDBJIPCGLLQVFANFUHCZMHKUNTTWRUSO9GGKPMACQQAYJCEEHIODHQXBTEPNBMBJUCB9BWUTIWIJPGWBTCKDTBZNWVYMYZRJHNZYLFCFBPANLIAQYPBBMWTBSSCWKRNZBS9AFVJUQRQRQIZDJVRXZWWMHOHNDKXAYEMPLHVVEDIEZDHLUOIMAUYQIVXXDTJTVEZTYTPMKGPODAHPEWZYJBRVU9EILJCE9GCEOKFEQYYQNOLENNWUQCBOVSILQWFQJMHXYNAKNTGJIEXOIQVRHLBVKCZPWZF9NMTCNGDWSHRAGLDPFYWXCLSMO9WBFBUMNCPOTMQCLRNBAZLUAUJEPQQFTKPGNIRTYKUCTQNDMNPKSGSFREEYOZVJMXTLTDNMHDCEXULRY9PORYTDELO9HQHEHIPILNQSDFIJUAIZBMCSPZHQANAMTNRDCPSCUXKYZHKMCKYOIQIHVO9LKKVXKG9TWOSKFCDVADLWUPQY9GSPCWGDJEWSEKIQXGGZNQGGFGR9NCLKTY9DLKZWCWIRVCGTOCNDYBRXEMKJZQKO9E9PTXXSWDUMPBNGNITUFSDANLUEL9YASFLGQRLPLJIQJVMLCVLRGUAVPUJYITCAK9ZVUCRENRKRKCVGBBYAIPQFAVYIXMBXP9NFJIHCCGAJODRIS9MNCWIAGAFRZPYJCAWRWUNULXMLECATY9LGBCJ9DXYSYKCZBEASMJJCCYIMWWIIKICARPJBYBKHJWIQGJOZGSYUHBO9IUUZKXUNKPNKCGBRQHJPQDFA9XLVVKUF9TL9AFEUYMIOPEFMKOSWFVDYYE9FOPJOGFJQJVBACOYNAUTSNKBHA9XHP9IBVANKWCBI9FEKESXFYCSFPLTPDHZQQEXINCGTYQPMPNMZGLDKUWXPPC9NGPAUINPCQXIRNILZRMTDQXPKEFFOKSJIQSDXLINZPH9TWMXEXXU9ZM9DOYRXCHULQN9RMNQGIUXHWKVNLHGYQCALHFDHUW9AGNNAHASEYPOOALAX9ZL9HVBKKFRYRRSUOUBKAXBNVKBGADNPGKIKYAPN9FMQQHKDROHNNAGAPNPEGJWABKHYJIOMFRBXZAZUZVFEOQDTBUVAIEJKIASDKHLIHUKDMBNQITMIZYUYXOWSAN9FUGSCWDFBAYTMLYCWYLDQVKPVMYPOKA9GWEHKQPONQFZZYYTR9JLQDVVPBBGRGKBZFMHFCXBDYEFMOTXEJT9WXIJBVJIIWYPJZVNOHGQAO9LEXATFMZWAAPWBZPQRZHOAYSHKECUTSWIRQOLQTFKNBMZPCNMVSIGNNOMPZPJXYCHOQUQXEWKPAZCHRDDQRPOPLAATYMKUTMFLPSYGIKLTCKBNIKVJGDLTDXCRESNFRAUTXUA9XKIG9WFGOPYGXEPETBENGSTYWYMUPPXKZJXBFU9FGEUQAFSXCACJXACZACJ9QZSYRFSJIJMBTLFGZDJYTDFKLDCZJVKCUQPSJRQLGMCXQFBOUNHDFYJMLFCDFNCBMVI9GPVQOOOJAJQXZGCKFCGQBLHAMPEBHUURHPOIVXLMYUBEVQWRUOTDZGKBLYFP9UMYDQZYWKVOGHDBDWHTHAAPIKLVSXZOYLSWAWOCO9SDSZDWQEXHHBOXDHDNOGHGQVS9JKLWAVRUSEFEIIBSHBKXC9CXRZRZADASNBGASTLTI9YSJWICCTVDRTESDHUNKPUHNXEIZKJJRBCNJRGA9VHXBWMAHUXCJTSMNICQJMKCUSWDAHIXLUZQDIITEWFCLFLEVOVQQRKZTSUGCDTEQPEONILDAIDTMKTTZ9FROJJUGXGBLVJ9PYC9WNH9RYABMXMRPGZRGCBHFKIC9YBVXMELNAOBGRFJMLEVOCXSLMYCCNKJQHPY9PDKZSBFOEUIXLOEIBHEEEOPGWPTNUVAGWZHVIVOMSZTZD",
            "INEFRUDDSBRDHFBIYEBK9RODIPJKSJJVYPNF9VAGR9WKEPKZFFEITVMNEGHGAIGTCYMOAVYDGXHFVSSSNPEKVZOSQIDYKTPJRYGEDPOXUCMPWOVPBGJZOTSCYWONWPKTZPNMJIYTTVISIIKUFR9CUKOBNCZTIYFVQAUPBDGXQTIRALJYRKPCMROOM9CTQJFRZJLKZLITUZKGFGSHRFSJWWUCJXATEKFHHQMJPYOTNNLVJGPOAIDYQEVQTFPVKGIFGAPQOZPC9GUPAOXEKI99NDCEWTDZKRVOGOZKAYRISNYJHZHVIOEFTMYWGNMZYBZWVXJBZMRFFXRGLYEFQXGTYJMTUZNQDEUEEAEWAYLKCXIWJGGABUPWZJJVMWYSVLFGCRQUCIDRZIGKWLYVYCD9FHEHKRIVLSOFWVGEXGVQKMGTAA9VJMTUGYGYTFXSNTVUPCRKCLWRPQUOPXCXYLDQJKPCTR9EWQZXYPZTPIPAVXORTPAMM9SVEEELP9YDJCAGDKJYQJEHOUJUTDJNVPNKOKITBOGOOHQUOINESQZEZZI9IDNSVBXSMJ9WDS9K9GEAMLGZBYYHZKYRUQZFZAIJRBZDVHJGOSSVQUPDIUSYXMXFOYOFWIOWFKASKJMMHOVQYZGZQBY9KJNWIKRMYIG9CVPXVSOZCBBD9THEEDUPHNIGGSHRJ9LAIPWDZQBYJFDR9VQE9BKYBJMUZJIQEKXVMTJ9BHMNF9OTQOFJGUBXWSOATXGVUBLJXNMZAGTD9SONGKIBJUFFXVMJLRRM9YTHDHIHTXJPBOSWMUTKOP9ZKGZPYBBHRG9JTI9A9FTWUBVHEBOYYRJYEABAQRFXMRDKGPGFSSAIJASZXKCGXAMLDDJWDMUZIMDDRKGEAGJZEEBHOIOKIMDMCKW9WDBYCKEOOANVUCEJZZWMKBVBUTVQVTYCKJAYH9YENFSFYQWLUDO9EOQAXD9VYJCKWMEOBCIXQPIRQIC9RCHDOLAM9VWZXEJQYGASFCJ9MAXLYURGKYZVMXQTYDFGRCJAOMNZGYMIYK9BVIIQHPZJWBMWHWPPTGMVWLW9WN9PRBMOXKQIDTLCWRLHL9ULDPIQXPHFJXLAQCZBSKWCGZNAVATNZHQYP9YPGAXKUJWVIXETI9QMUPVHDQOKGWIFL9ILXHJYHFCI9GPDYTZQKFRHORJDDRLDNX9VLRO9I9VKBZCQCSYGRCTFQYAEERTYNJBCFVMSXQKUDNTU9OPZUCRMLUPTMDWDYGNSZSEELTXF9XWFUDIYQIEEFMWBRBZALCRXIVNRGVRXFOAKBI9OLQZAMNRMWFZSNVLCTIIQXGPXHMAJAVELALBSPIHNFBQSOUALKZGRQULYCJYRWHNWWQVXJCOYJR9BLRLXZLYWYMXCRGZHAZBX9HLQWPUUAMEVNONGLRRDD9YLYCZUHTIMJZWSQVS9MW9ALQKSLFUGDZ9HJQHOHKAJVXUEHTBVWI9HKZYHOHFM9RZ9PFYVUMGNTLPDGTDRXJGANYPZDJACTZNSEKLUXVHQGWDDGURLIEE9PUXCDDCQXBPRGGY9FVXPNJHNOBHIKLBKHIAZUYZSDVWZJBIIYVN9KNKIRALPYCGGMBASDRFMPZBCOBLMYCXMNKJHAFU9KTYW9BRUYIZNTSODUXJH9VRY9YKXZCIPZPHYDBGLQWPDNLIRGCCEIMAXLUJCATXRNSHLNBEBNZYSEARCYXLHVHRVEEXNQA9PWF99MDQPGQKMOXOYNSTTR9UZUADEN9QQCTJXGEPJHRROASU9FEYWFEUNWIAEDX9TDIZLUVVPYDGUZCMFISIROVZGHMSF9AZHLNDLEREPYNHLNGIMGMROKVAXEIZPLGFPMUM9UGMT99UGVBECAVPTE9JQGQMIRABOWUDNJDSURDUODPZYXAQDHHTFGJXVHACAKCBTLTCXGKGBQQEPPEZJKQESVQNHEJZH9PVXKHSATGDRGGSYM9NGEHNQJBPETBGBBUWJUAETTCIRPDEBEDEJZGQ9JNQBXILQRPTBYAE9MWEITKGVECGKKYISMZLSJZUKNILPYVPUYMAQZMWZPYWXLRZYVEEZIZLVWNYOKVZYLTYPSHUGUI9XKGMRQSJRSMGCAZQUWMZXN9HHLIICRXYLTIZCWDAEYCCZPQABN9RAIZJBUMXEPNSHUOWTEOQBHBZEISSWDHN",
            "HLHFGNWNELEV9BCDFAAZIRTINBDOADVAFOTIJQSQNMEZEW9NXXQGTILUZRUMXDYAZALIAMQHFRWWHKVVQXTEXUTKOMLWSSUFS9DLMNAXLOKCTNAKSESMWAJLQCALXBM9RSATCBTSEQLQWR9XRIMBGDEP9RCTQKQLKLQQQLIOMIOZE9TCPLNKBKWFDGCXOLTLFPMGHJAPSEPPIPWLRO9ZSIKCMYPEIIOCXSPWKCSNBYTSTK99APAHOCVXMDOWJNJFIXDCXRKPFCEVAEOGWRFTLPNDYAY9ZCUIKJGNFYMSGVJGVL9QEUYSXXHHAZLZSWHAWLPDKOBRWPRFSJWS9PLKIWDNXXR9CTER9NVLXOKVSIVZ9JILXLXWTOAOFBNHMVOCJHEPBOOGWHPOIZDJYITRKJEBQBTL9RZQLE9CG9O9JXE9TJWXWZSXBIDOEOLWFFKIWMARPCFWRMEIPMZSPXIFCUBKBLSRC9BSAKTZCYUXMMIWTKGJLGJCVDDZTEMYQPAXAAHKMIUMSBFJCEPXEVQEKGPNMQQEH9UHTCBPJDPBXE9X9BZP9JP9POMZQLBQKAOCHWUZZMHXIFTGFLBOLSLIZULQXNTNXNXWWXDD9YEMMJNHFTJLAUBJIAHLKPSUZDUAUPCDLLLJOADKGLRIJQONOAAAG9VBDV9EZERTIKZI9GKLTISZHXCVPLXOUM9BISVYKLYWOORAQ9QFWW9JXNZY9GXAQMDVTYLZJOGICAXKMHCXGLYQEFFLGDHSOBKCSYYBJJJABDAIQ9IMGFWOJNHKOQWCXRASIZNYPRQLBWOGYIP9OSAJMAAYLLFSSM9MLPZFCUSVLGNUGMZDBDNEZZDCIUAXIOLNQSLIKWBC9BWSJMSGOINSLRE99MIPRAFABUYDXGGEHRJTZIDBUDYFRDXNKRYGKLUKXKYHUKZIAXJBRN9XKUVLNYUDPNPMDI9SNTVGAWLHWDSGRLAPZLE9NJLFQATSUZDAHEDELIPLAUQ9NZHETII9SZSNDCUMEZRXYLUOMOLMDINIBCQUJL9PZUMXLONARQMKAKVKDBIL9EUXAHBEDZJLR99V9DVMDAAOKVUTNFBOTLPVLMKUMVEWMTIDXZOP9ICETBHHVJONRPRBXMEXKHVCFNSTWLCFHOCZGEMUBXQHDWEQYSQVVHYAXPPVJEYSBQTYBDZBRDLCQLPDGUUHUOWZOCMELORBOUFPFCURHTZUVLMEERLXQNIPI9JCYYVIPOWWGLGCGMHCCYVDGIUBLQIMDBFYKKODWSKLCTVWLQKMPC9CAAMTVCHHLPJL9OYXSTKBXAIHNISIHVU9VXBHVZGECCJ9Z9S9RXLAGSEBOBNAGIONMWPGVGDS9SUDBEZDTMNAOLKSRAKOCIZEXBYRBQIBVC9DPPRFAAVIOVWQ9J9ZOVCLDVAJDPWUERZQHBHRKNMUZJQFFBQPPUTMJAXLFLEAELWXOQVYFHAYFEYJAYYQJVUPZXFIBENCRYNJSONZOEYQPXQYUHJARYKT9HMCLGOCIADNXFEVVIGMOJJRDFGSTQOYJ9IINCWETDGNHHFQVKYIAHRWVZHPFLFNGZMYHBZGMUTDMMFJDZWNIYGVZLIXKGEVLVKUPGRAPXPX9EXCSNEBOQSFWMTOEOILQYMFWLBDGCKR9JSHTOUGKFMCACZECEGEZCUWNHUFIJFLVBUAAHABDCHLXLFGMGLVGLQQUOMZZKBTTJIADNXNVEYWNWZVTCLXHIIACSNFDJHZVPNBWAHBSYOMVIGDWPCKLEOCGZYOAEJVMWHJGKWFHOSJHGUHMGWS99EKHKBFKI99NXRWVWSTEHHFBJHNEVRO9PNCFYSRRNPGZSSCAMVNHVMWVIG9MTNTPROT9RIKPMUABOSPWZTGJOKTM9UIPDQNROVYSJYOZNBBVBNEJDPAQWEBZAHBTFE9ZCZOT9GKVRYJJLYCPVEUSYTSHITIWBIRM9YXESWOXOFHEXI9TLWHCFCCYRZKWFLTCQREWVPPYHONUOVDVWLMNCRZZUUJRMUUIDMQXDYUBUXLHLUFSBMN9QEKYSXUFZNVLDQCILDUGWHLNKJLF9WPTL9WXWMFDXTCPADPKILKDLUGTBO9UVCYJLKA9ANRCPDQZXKQUBZPEYHGHZSHHTLAIHTI9ZOJRDFPVOWKUPJXVAKBAEMHDPAEX9VGPACAVEWEHSD",
        ),
    ];

    for test in tests.iter() {
        match sponge_type {
            SpongeKind::Kerl => sponge_generic_digest_into::<Kerl>(test.0, test.1),
            SpongeKind::CurlP27 => sponge_generic_digest_into::<CurlP27>(test.0, test.2),
            SpongeKind::CurlP81 => sponge_generic_digest_into::<CurlP81>(test.0, test.3),
            SpongeKind::UnrolledCurlP81 => sponge_generic_digest_into::<UnrolledCurlP81>(test.0, test.3),
        }
    }
}

#[test]
fn kerl_input_6561_output_6561() {
    sponge_input_6561_output_6561(SpongeKind::Kerl);
}

#[test]
fn curlp27_input_6561_output_6561() {
    sponge_input_6561_output_6561(SpongeKind::CurlP27);
}

#[test]
fn curlp81_input_6561_output_6561() {
    sponge_input_6561_output_6561(SpongeKind::CurlP81);
    sponge_input_6561_output_6561(SpongeKind::UnrolledCurlP81);
}

fn sponge_input_6561_output_243(sponge_type: SpongeKind) {
    let tests = [
        (
            "CIVIZMYHVFYZCXTXLDTPY9DMZKEEFMEABECNS9RHMIKQMHMUXSAQXLGLSYTRQCZWTQOGIQFFDWVBOCXXTVMRRCWQRVMCTBEIINDFFLXRIBJMBRQUCBAMDIDCAL9ICXFKOIBGJWKENILISRCZZU9WWPBTPQXOGYOFLWYISNYVHCOQQSKXBOOXESJQLZOHZAFRXOCGQRL9HUZFXYGUVRALGELOTEWNGYEZWCZRRITFYHDLWEZXPJOM9HSHMEUXJ9UCKDRYBZUIRWOSCNXAMGUTFUUPLTEYURVFROXZGGA9EFWROQMH9SZSXGNCIPXUDCCXS9UARJFJYDEEKNFSATRVNELTFXVX9UENWHXBQOMIBV9MUI99B9C9SSOFJYGBZCAHKHC9VIQRD9OHBQ9AEI9HRGQM9DDCJSPRQBBZRLGXJSKARRJTZWTHUVEUVPFVMUIAMDBRLOTKLMXSCPKQIULZ9TVKPRHXPFVAFQTDMOCHJ9DOFIYDWMKQXKLIZVXRRRSCGGJKOXOJH9RWYCLGLQR99STVPNGFOVZCJAJRNUCSWLZLXOEFHNDPHIMWXNENZZGYFFAQSXQPSZLBRSZR9OHIKBLMHQTOCLCQRQYEYGQEORKEXQN9LGZ9Q9QAEQOFTWADRSLZTOWK9SSDXOUJTIHYTHNYWRRJIHKPRLEK9FOSCMVVBAPBWDMBWIE9UAIJYDFPZEHSDIHOWTZGAHPLHULBFYJSACTIWJQUHTFESUFURCRLUURILTCOJ9JQVKTDA9RPMFVQH9HTIDGZPSRWTPUOQZUKQ9FVDFSCTQEEKTGGDXQUDVXKCJBMUCD9JTCYNNYTXDZYZEHQM9FYVGCCTJUARNKJUBL9EPLGRKYGBIDGVHUDGMDMHAAGNXQCXCRGTKL9NVNADJXIINSZVZNJVUOGISRECSUDFMNWBERUOSVSSZOLFYGOQTRMVJYQ9FDNOGSWSWYZHMRRGCVDKSLYSMKPLNLLVBQVPIVWVUQKSP9BCNVWJVSDUOBCSGPNRDQJTXPOVQSCFIKENKSG9AVFYFURXSZGYQZXPO9LMFDS9JQQUKUYXOANJAXJZWUUUSSWVZ9KJDZFXOSITHTQJYVRQXOCLLLSCUWN9DNFDGJ9ITECMYUJJPNK9IRBLRBDTSC9CVGFSKJPERC9BKRBLQLBXDEUNGCWBYYDYRWYR9TRCIQMOGNQGKWSZSCICTDUJHYOEYV9TNHLZWMDABDZCYHVMPLBAZXVFW9UKMFPHZ9ORQEFRFXXGOPTJBXEAFTBVRGATWOEZJRUWETAKLYOUHWZMTN9ABLMRLXHBSCVEWABNCYMOMMVDA9E9BWSNTVLZNJHPHC9JTJMQXZIQQLMBPPXTUXMYEVYLYERVWGQXSOO9LD9BRBDHQ9GMEKIIGCMSVXZFAHBZIM9ROGJGE9YTGSUGSIUYDNABCVZUHBJSKC9GW9SXK9CTKPKH9DFQJKMXWFKWD9IVNOONUEYPJTBNFEZPADBEIOLWZLSMXNEZSNFHEOXYJDMPQ9IKTEKCFSGVQDJYLRXHYMWFOWTB9EWDXKPGEMZWFLIDLZTAHIZ9IFHACVBXCXDZDJXLKYSDU9BMOST9HERRLKRV9UCKXFPSZSEBIZNYIDMQDFUSNTXNUJASXEXRHQMHOUWD9OACKQLSHVUMKCFMGDDUJIMCLDRWJCLX9WOGHXFXDMWUFPIXYWZIGZCXX9ZQ9XVTDWI9FRRKUGRUTSVVMGVPLAFOXGOGSMSNRURINKPTKYNNLHHYCWANODIPVCPMVYVLWFTOOVQECXNYYDVFZOMGAOQ9AARCXXIEELVCAQIMWLZNKAWH9AQMLCHGSKSRTTVGLK9MKFEMBNMHHDHCXWMJGEBKMIPRWYFMNJFBPGOKLSIFSTOCHX9ZKOMLXJBHZYRKLYWI9AQNCZGHCPOHJCNUETDXVELQQAGAEXPRQTJKZUARPKYFDUOZPPLAU9ZPJQMZOJYONLOPBFAKADDXBJTCGNMEYZMRINLBXHAK9PRWV9KPUVCMVUFLVOVTSQBYZ9LIJYQUFYJP9SZ9XMMTPH99CQMKTSSWOFJPDBRYMRZCOUHVXX9VJWLGUYXWUAFHBJZJHJWBDMRZYADWNVYJKQ9GOOMLRICCWXZJNDRSETOZWODRMKDYVXHNTTJBDQQSCGCQS9YLPRRWKSXYYORCOBCYUOTDMN",
            "BQGLZPUNVNISXVUWK9NQOOHY9CQKZNILIPVNGAWGKTKBJBTLYCFSNBSNZICOSOYRGYYMXYMLUNKGWG9W9",
            "RWZZQEPHKSCORFZ99VFPVZTUFRBL9IXTLHDFOQHRKKABSECSNXPYTBRVPCXLBKT9BOSGALAEKPTZCHKUG",
            "YBL9CJCGS9NGJQZMH99WEGZCGYLCYWPTGZHHKMTUESYFORWFCPBGJTBJP9WGXUKSJZWHWJUQEAPKRANKP",
        ),
        (
            "JIGHBTOHJYTSYGJX9DHSGDXTXIMJMBHOCG9FLESYXIG9GWIRTHWKERSNJSPCUSUMHOQJZ9EEEDILOYDWIEDPLSPOBLUYZNUXFPZZLQMQVZFL9OPPDFACDGHFVUUO9H9LRSNFRLPVIWEBMYA9DOYIVMYIHVZBZVAYNNGGNFONZAOFFGCUXVLLMEHSJRSWENOMSVTOCMJN9PFPNWWPEEGMCNIIMGWAEYBCVORKWEYSFGPRMCVDFBGRXULAKCW9YNLAMKWCRTWFDMOEHHQ9BRZEED9TAFEHXSPFCMMSTFKEGEHNLMHUYFUYFZRGJ9XHDVJXZZBZHTYJJCLIFXQ9GDSPHQBD99HCF9QLWCWCE9SGSXLVXJEPPFNCJWKUEJRLAZJHHTKJUJM99GMKOYFYPTBGICICNCMH9ARQRLDYMVIBLW9JKWCQKDTIONJDBHZTRJWHEVOU9UDVBFKUHHSPCCLPEOCIXRBZRLACDHBWMEPPWNBIJLVMUKCNDOLGSCNRQERDRWSBMKDOOHDVYHAMKLFIZLYONTGFYOWWJAMGXTSTIVMGNEONLLHYF9JHEGYMVADDYWMDIZLQAKS9ZNSYIVYZPSCPF9QBXAZZBWNSDHGFFMDG9WLE9JQPYMEVRGAFIHYBXZSGDSQII9D9ONFSDTTPQLKQGCDM9VSGMMJAUKQGVCNUBIDXAJIHEPJVZMTAOMXLYXXHB9WTYH9VTYEDPLTLMLUCKOPSWBTQUFLUJOFBJQP9LK9U9UYCWZVESLQPDOBAEJLTZ9GMKZSINTDYSYKXFDSPSCHAGGWGJOXFLADDDIMBVJFWOX9WXPLMLKNKALPZBPGBGDGEALKVXYHAULVUBNPLEHMATZPBCWBQRWY9VLNGTJOOZMXWWSVE99PDPBXCQFLOJYQFDCOAGTOH9NLWUHUQSBZNUBEGDCTYVPRUCIGGQUNCUQDCVOLKZOPVTQLFCUFBCLLQ9TSJLYLQNFIBPC9LJEWRIAVOUGFOGIQGQKSKUWUNZWJUHBH9BR9VGLFVDZRHJHADOXVPDCRCKDQSLRGNVSUJ9AAZETJSLLDYITPCIUBGEXRNIV9LKKX9ZTRPLYLQBIYIFTMVOPHKKJLDPOBCNJDDLVIACGAGCTFJL9WUWDSILEOE9ITCJLLDOQJCLXFDOEMJQKYRAELHLPVMVUNUGQKMGDUHCZLRKOCDYJIOAKOXHQOEBUKJBVTWPZBCDYQWQBVFGLBRYMKVNRFJHNYFSVZGF9PXKNLBONCMKUIXGKIN9JEK9WDKIXIULOWBRLEWWOCKSBFUX9YVWIMXLNZXHIDLFXUEKKNYSKMGGVKFCEVCYKJVYWEMMBVEZQOGIVEPRGQXMQRP9VEYIWWGTFKYRRSXQ9OB9OEJKIMMPAGKCJZEPXELRRBN9VPPWCWWEIULKZRJILEFRNFWFXAZJIBMDECYLMQCRHKBFSQBDDKCGAA9ZMRMMHAAAWAYBKTEAEFGHWPLHATOAKCMTGWFJDBYFLNACSOYWRSGIM9VGGBGRLAMXTVQHSUYUSYRBBKYIJSBUM9RNVYKTIXE9FIFPYSZ9GHVMQMJZFFVKUMWUEISBVLCGLASIIYDHHZBZWFEMGWTMN99BWCVVVXYQFISUUB9VRRFLDTZTYYQHZAKOMTEHHKAUZMYW9DKUXBZXRJXXYZOZ9ASDEWTRHXAQI9LJYSVP9NSFQENUUGDZIMZUBCZMYUVFNOZAQUMDZETBPWFKSCZTYHVVSJGDRHMZKIASOYVJGLNOMCUIEGKCZFJEEQPTSJFMBZGXQUAX9XHJRQG9CBR9J9MGMLUSDXEOMFKWYEXFGBDPXXEPE9PS9HBDLUMXVC9ORPYKCAUXQNZKIQJF9LOWALCSSIVPCGTUIQXHXJUVATRDZOSPSEUMNSKNECANWSYTYPNCGWNDPWBPSONPGUKQUOCYHQKQEEYW9CUQXBTAUBSFKPBKMVWIUHTTOPTPWPFOJHVQKQCIJMMMGXEXGACSWDRLKFHTENNBECZQXZPFZXHOWITD9U9RPFESNUOO9YQLUNVE9KMNDGVPHCQMMVU9EINF9UGEPMIKGSRVBEHBPKMTJETUVIAUIDLPZJNCZZZCQTBOOBTHAGUNESLMLGPUDNUHWSYXRDTGNVRCCPDPQWYZUUEHTKHELGDKKIT9IR9ZDSNNAGQJZLZTSIRIPSQYUTXMRC",
            "ZMCLCLTJGNROLPYCCLXTYHBWSENAPWZNXOXRFOVKMMTMKUGBVTCNITZHAPSXDMYYORFJHSGEFABNWG9RW",
            "LPIPCFMVJUOKFBFWBBAEWXWXGFYST9NTXVTMQAYJCOGY9PPRNCTHOOIALRYYMHEYW9LWDDCEGU9GFJQCV",
            "PTOVNK9AMATMSBKPDVYUUFDTQBTJDPAVZ9GXVNHTTICVKFTBNHXKMXUFJQEEOGEMKDHQJMFWSXTJFPLOC",
        ),
        (
            "LDKRQAZHPFWGLHNC9CYXDAF9XIA9OVFPNTENKYNXIFHBYTMFF9DLCVZHQRYSDIATYYPNRRICX9WOKZRQHKOZVWZMXYHWKLKYNUCCMVCULMMRZIMPFVMPTNITZVAKMWKJHPNIQNTBLDSITDKLC9FILJBMVFRTIKWIYMTLDSEVELRQZQZZVE9QEMDDABCQGYQ99PSJBTCHHR9ZXATVVELBDVBCUDMGFMTTEXZJQMGOCBWTGTJAAFGLKERNBYWHCCLWEWDCXPLTIFBWGUL9JPHPYWFBDBAHMODAFFAVNDMEFPLJNCTCTNRPSTVXVVKWGFNGMYCTXXTOONZEAQBAWOLVILBCWKAFFSOFFDZYAWKZACUNKZHZZTYNNDIRYTMJJFZIFIO9JJRFWYTDEEHMSVPBBYCVPISTNUFCWDPFQJREURJLWJRQFNULLEZRBSAMRSJMDTUTK9JPBGZWNZDP9NLWHOTTOHRZAV9LONZSNOZBT9UFP9JWAQILJKAHCPWJXZCIIBYLQYAKLZYJGUZNXAZDMAIROJ9YSWRNBRPQ9SXJUGMGSDSWTVWWHTMUBRLCWXSOJIELFXFPP9TRZBOYFDZXNBWLBNSDFOFEXOLVGWFUXFHRKMPBGQMCWEEVZMFHU9KVKCYRXN9XHUOOHGEQOJJGYGY9NZLWOAILMHSOUQTLCUEWLRNVCJMELXUJJKTBGMBGZTFBXBTCHZJEUQCVOKSDGFOGRH9UXSRXJKBYLWYKTUPIWFVBFGWSRDOCJNWCNRQXEZMLHHY9BJPYARTLEEAFXGSEEWZBDYTGCPQBNY9VDPDUT9VY9SIQRVQRBKDKVGZH9NJYGDFAV9EUDCCU9VIDCZQLER9ICESYGMXQPRKPLLEHARNQKIRMR9XNORMSDCLNFSIJMIIGZSARPRPIBHHE9IHVDNADFWJRTZKTCFQRTFJXANDQWBFVGWPMAMRUKWOBQQEY9RMFPPRFMFFLKIBZNWLKBHUNPMEISFQJIRIDRSFZMOLPJNB9AZ9EQFUQQCYSMVATQCLILTTDHBISW9UILDWUGLUNBIUZHMPC9NUXRLNBAKQKYLHYXGXKU9CIRFZ9ISEGGBOOIIGTIBOR9UAX9MV9VC9JSORWZGFSXRMEFEHSLKZNZNCBNHRJZBZNDRAEIKHQZEUS9HAYIIWISOGPQLKKTABEG9DBBHLYGUB9CWDTYDKXEPCEGSPNAETB9JOCPHRJZAOVUJLIJOJHYYOWXWGSVUNQZZIYHMSVYBVIMTPLMMCVIYYNRTKYGQLOUGVWGGDQTSVDARALLSSWJUXQH9GESKLCNIRXMIGTUUTDPBELUUNGSCXEXBOFVTCJBFEQADIDPLVFVZVMDULSNTUWSUCLEXIDBTYUBVFRZLOOKWDLCNTUHGDTWYIGMUGKCYZKBFGDVNKTNYIN9OSTVQDCGKTBLTNERURBCMACVRSJZW9YAFTWXIOGNZAQHOJTOBGZNNZSGFNQFPIFQJRTCKUZDMPZRPOORDKYEZHTMREQIPQIHRC9RIEIVPCHJNAAJPIMYZZF9XNMKVCHR9IBUBKTAWQFSLWQZMPTVOBVGRSRBLDZO9ZGTKLQYVNMHOEWQJFDIPTDNEANL9OJAHMJIHVLCCXQZJRRTKCDZMTXWD9IFCSTFNEDKKNJAWCFEN9LU9ELUTXCQFLBHWLIHNPEOKCONQWGBXNIGWRARUSZGATOSR9EKMDMQEPNRWOLSHXBAVUNZVRQDCX9ONETNFWEXGFJGHBHSXHKFOQWNENERDLIZM9UZPQTLY9GEZBUKSOCRPTCZYZRBIMOCZFCGYBQLNXYVG99OLDXHCUUXLOTWYZSICIRGF99999XHULVOCTGWAVSFZNJRCCFSVTHBYFLTXBTFZUGBSFBEUZCIZVCZHMIKCTOCSTYNECJEOFQHXBALDAESMVZWKKRQGYVIYXPWPYTRIYFQWGTRINFCNYYZLGA9WCUWJZEHGQS9TEOSOGCTTNRYEUX9VEQCZKIRXUBNLPJWOJXUYWSDSKQPOZFRLQOFQDYORZOXJIVHRZZHDILQNCFJF99XIOMEJUMYUBKAY9IMVYQPTJPCYUULYYPMDNHVKPNTVA9JGBLJMXLSEOTPISFCHCSPACNJQRXJXONEFTEDHZOPBP9BBNOONXBGGMQNTJYVD9ALWHYWTKBTGTYKHUGHJ9PPELKTIK",
            "JZPY9NZBOOFV9VUQWVMNNAJKMZWLIJBYCZP9NZEIGAMABBHMEQHSMIKJVKOWXES9MAYEMOXEEYJIPKLYW",
            "ZOYHJWFWUCDFLYAGQYIKBWVOXTARSQHWATFKVBOBPIYAPRTHBKSTTFBXHOPYIRPDXGDUSKGICNBFSVTIF",
            "JNVWXQBMHBOETSDTEHGNNQXUN9THKIBCXNFHAXCRZRZAAFXFVKAKI9J9CZPFCMJFOHFHERRNVUIDXOSHF",
        ),
        (
            "PINSICEGKCWYOSNIEWJZDA9VRRHPVFMSZEUBZJQYK9JS9VPFTZQOGWPRVLSWLYALUSGKBEQQECANNWSBBYGPDILJKBV9JOZMSCMFSSOFXNUQXUJPQLEKYUEVUEGCIZXPYGTB9GHYNMEJDOSZGGZPGQESNNJU9PEWIXQBJKLBUSNRKJZLWC9FSZAOCETTYDYTDXDSYNJYUALJSMJ9VZR9AQIELALGNBDHNBFNIQFARCZBJDA9UQYVLAHLKAKKREXDONJSUIOEXEZYEQLYPVXFPUQDYZNOGLVLD9PONRXGIPLWJVOUSBCLKJCYQYSJOIPEBZWWIZCJPQPGGYJUQVABSFDILWPYACDHTOAVBYENHTINM9MLTDV9KCYNFJIIEEOLLXCDYTLZQOXTIKFSWMTFVZWHDPYO9TUZRQRNVUHQPQCJECEGSIPNPRHRLC9NYQ9ZUOWZV9HBLCFSBVCH9ZJOMFBKW9ARQRTUSQQF9UWUBAGRFXTG9WAXVOKUSST9SNIDSJQNFCWIKLTMCQTURZNICDKKIPYJDMSVFZEBOVKOEMCOHPFHWHYPNI9QGNMGPDPUUODZUPEALPAOEUBTSPTHIVSCYPYKAE9HOMSOHYJVIGVZVYY9CWBOSTQLAEP9UPINWIKSVFZHAYGXRBUDAEWJATLEVNNLMPSKOANBJNGANLHKZSWEMVVEJSOSNRJFIKILOQWNFPLQRCJVZXETNTDSMYPAPH9TPGIQKOQ9GJUXDEZIULINJSDROYTYMBXHADCWHJE9LAX9YOUDDSJPPLFR9MQWFXKE9TJFMLYPMLTFYCKT9FHICS9ZPNXNSGGXJZRGLNPSZC9IWTJQSB9PHZMBJBJTGBYRHTNNSOESFKTDQFQPQNNRDAR9SRJXD9YTASZEBXEC9GLAFNDLIXLI9PEIY9HSWWHOPCIBVETTICZ9ZGKIYHRTUL9HZUUAOO9EBTCSUZNWFJLMXFKXPVBLVWJAKCOVPZJMKA9YGARA9GRAFAZJHTCKMXHTBTNOWFYVMHRRDJGLXDOOMUAQVZJTX9RUBDQBAYOMP9FZAEWRSJCMRFQSWSIEFBXMUJKCVDBBKQFFKTSWQLEEXEKNNBUWJETJPIUTFS9DDKAXON9GTTIRP9Y9CCOVFTF9JYGVFQDKGDMHQVWJYMVIFNUPABDVDOMSWKUFIXKGELGXRKVCWWELHACQOVDXTGGQBCKDWU99TITSZOTLSD9XQFBSWC9CUEHTVFW9VHGXQMQJOHJERNCIPBZUFBESSODWQOMRB9UVBTKASWYVRJG9I9EWUDFIOWPGSWYKTJEFGIARRMIQQZGXGIUWYUDSRSPKZE9D9VBLKZNBOJAKXBXSORFRNSIRXCHPUWGJJJH9JY9AIXYLSSY9T9DYJVMGJQVOIGE9GJURRDUUSWXTE9EBZRT9PUAKWQFFOBIJQHDLMDCNAMRWHQOFYDWMTGNF9ETWYMXEQOKJASOZHQRPDDYKVVVTGMMQGQ9FTKXYPRWYBUDGFZKWDHIBOOTXCIVUERLTVRZAFEONTXLGEURHSNYMKLGLDVIEMYNNRCKRJVAD9GVVGEUQMTWSPXYUAZXELO9GGZNTKQSR9JROBPIKIPIWFKKTNNZWGZLSZWGOTGCYRIZC9HLALGQRMBPRWWDIAGAYDXWWAFISSNAUTDQORXKFOARNMFX9VQAQLEFPSBAFEIRKXVERUVRKJLRLYCCFMPRQTMPQNYNW9LJHYMIVZKEIUU9WAQMIHZ9VNTMSNBTRYATNTIZLC9DTCEORO9MSXQXOZJKSYXCJZMJBNHP9FJQHV9MBBMNEMIVJBNCBCNKSNTAXOETBIPRMIVKZDEZVWGBHLDVAGHSOLZUXANMYTMQLJALAFXBQUQDGLSPOJ9RQGNOXJBYKTG9XTQNNIZFWNFJIQADVIRMWBODHRIYLARPIQTBXYMOPZU9QLAMNGUCXBUHWNNBDFDDOUAUTPKOYUNBTEDSLFCAASQUMEYWQDQGUWAMSS9XHI9BLCODEEKPHHJLAGWJBAEL9QJYHQGNMKKAFEQXFZBQXYEKWHCMUHNHSBVFCCJQKXYLN9LD9CBZCXPCRSKJNKGZSHFZTIHNBIU9JMYMMWZNPHUTVICMCWDQBVRGQNYNTHOGPJXAZRLMPSXBONOZHMBRQHZEEAXKGKYVOZLJCFCUPSEDLELQMXXPCZNZ",
            "CUVOLENGLSCEFWMZRI99EJASHPXGKBCATXBRFOEKYXJEWNXNC9QWMBUNRKQDLRISGFBEKJTXJDTQKJSLW",
            "QHFLJRK9UJBHLSOZMIOWPPRTWKFY9LO9WWU9GXIYWUDLCQOEANOCOIASHYWJJREOJCDRFBEROSTRLLCMG",
            "VWHBMKRCOQIKXHVXOJDFODMCGYYSYHCM9GJUILNTCPVGDMIRMISKR9VZVLKMRRGOLUAUDKGWFHYYQFKYO",
        ),
        (
            "ANPXL9GPCQUZJUICKQWAHSKKWSTPHLXZTFXKVEUVCLIQ9AKOVWKNEQLRGQGSRTZHUNSFBNQWVWQGAGTFHJGFNGFJUWKCMXRFYAICXKKK99EGPCQT99UPJTCWDBNBY9YOOIAVYWZXGNVKERTILEZIKT9WGPQUPVWUZYCFBCSJVZKLITY9BLWCOEBFPMQVRJWKUFNE9YBHCMMQOHBGTSUDAFNGSNVUBWMUQKPUGEBPAHOWTEFX9XKMCVNHAKSAAVCZLCVTZDGDXNEUVYOVDUBALFNEPX9HKOOWLMSMJOKLPXYYSJZCTGUITZKRXZFOTINPOTYVAVHVZZZJJSMBZCOFZXTDHDISCMQE9DMMHSXNVBDLPVFKPPZ9BU99VFDUFSX9RFIWTBRGWTVQDBYKNVVPQYEEVRL9CSCAYIDFSZAIIMLZSRJMKCVQMEYZTRJBEWRRZLTGCSNZQJ9PYSECLAEKKIIMCRCHVJHYCRUNKQXXZJGRSERSXPLBXKDYEAVOJZOKNEWJWOULEIQOYMZHZTDDZZIP9F9EPJVCKTFN9U9BDBHNQ9KCPKWJQIRDETZDLUTFAEJAALGQMMNASIFKZHR9ZEWJHMUBWV9RD9NGHBLBHUKRTAHAZ9XZYOYBQGKNYQELNZEJNRXKMOMYBTREIGZJXBAJYOXOZQMROQQQOZ999ZELTYF9YMP9ZMUAOXXLZTUES9BH9ZQDWYKOVBAIDSPDMHSKBCLSQKSMEOTSCEM9GAYDOBAAQQHZEIZTDSLSUXNLFXCIME9EMXJBBJJXXDHAADNFNBFVHEUSPGDCDRPGXZGJBOCGGZVQFPCJHEWL9RPHIQ9VCQYBDQHKVYWYZJNUIMILDKCLIXJQ9KBJANULYTXHOPDJHHEAF9LJFGVCYOLBTJBOGEDLUUWBSCUBKYIJRZSKEUWHFXKZCECVTFHZHTKK9KRESLWYWDHFFNZPNICDZSDSKJJLYUV9KSCFZVKODRAFOJSQTHSDXBWDQOUDDG9AUKYYUXK9MXURRUNBPTFIRFOZDOKYJTSDUNUKARRRHKNHKOZPAIGSZTC9HPQYXWBSRREYZRONJVEJIXTUP9NDBR9YTDFXKGTHXDPOBBPRIK9YHGKTI9HPJE9Y9LYHCKRSPFGDJVDRNHVPCKAPCGERSBI9RDLGZOJSLAVOWLD9UDQZAVYMMEOSWKAHLWFMZMMYYQVSSZIJFXONGMZRBCNKWMIYYA9QCDDPGTWGQZXBEUJIACDBWWTH9GGGWIB9DCJZVYBIB9XEWGVQKHNYIEZBRQIWB9JRBEEVVUVXZULKFGABHUC9UPXLKJWHJXONGFFDBMCYYTAZWEELOTGXMFGETMFJLMFVBGJVXAKEKSRSWRYIBQCPJXRGOXTHRBVWNYVKVOW9SWBLGCPRAXFVBPKPTNJDGPWWVCHQQORCEDLIFOPFJVFORAYM9JXBNHNOGSCWPXOVGF99KTN9NEPISMPMAXMZTRBLUQAYUSRPLIDUAQK9IUBGQUMYDGCMFYXBM9TWWYDIJVFYK9PJLZKFVBAWHBLVHQAYDTQTXSCFMMEIPMQ9VTFRDGQDDKFYAVYTIKLDGFTWEMFLP9PKSCULZARTKN99DIHCM9ZKTWLJIMOERNAPGMQLSWEDHOOTEANJP9SMYOUXMUHMO9QBOXLZZXRCPESUSV9HXBUJMZ9ILNCLHMKCCRYLNHWXHPRNJRQMEHMTYWAPHFLUXDAYTMWEOBECFQRJRAOJVABSUUPJUJBLIDCOQUNUFCUPOHVMNXGXXFOMWEORXBRLSHRBCKYARZZSJPZXRMWODUUTDSAGNKZ9FROMQSTINHYVNEYNKYD9T9CROKSTKUWJTIEDMBIATIBVCGNRLDUIWUOBFQU9VVBOHMKYXLGPNSSIGSRRNMXYARTFKUP9SYFIEUGSMHRG9GAJMTXXWFULL9QKVFKZKJAJJLTXCLNWIX9UKJBONETTUTIORBGYFDCSUQHPOXVOKEL9H9GVHCTZGCAOY9POZC9W9LPJGQ9HSXMTYONJW9VZGBRYUZXGMIKEUYTHSNCMGJJEVYHWFPJ9DEZUWQQNBJUHQECUMXWBTEGJWPJARHIHLXGCNYTAIESQF9ELGDDOKBOE9IJWUWGGRJKSG9JMLNUOVNREKBOFUEDALFMZ9VKCLUEEDXOJXMRPZDOQ9ESMQXSNIAKPCHACJRY",
            "DAEGYEPGLTOSORGOQNNRHPHARMUWKOZBUOCVPWXIDMIQSMAXXTZYFVXVTIBKCOUXNDIUJWSUSJDXWCZOW",
            "UAMONEJYHBIQJFUWEMWBDJS9CQNLGTQOUJUCEFYSSNZNCMAIGXTAXZFCE9XT9MHRM9UQVQUCYWKPKAYMY",
            "ILJUAYJUGVM9PTGYPLWHSLFKNASNEBDILZDSVBFJXASFCOJJKOUBQMTWVAGSJCMLCTQQDEFNWWJQAYGWD",
        ),
    ];

    for test in tests.iter() {
        match sponge_type {
            SpongeKind::Kerl => sponge_generic_digest_into::<Kerl>(test.0, test.1),
            SpongeKind::CurlP27 => sponge_generic_digest_into::<CurlP27>(test.0, test.2),
            SpongeKind::CurlP81 => sponge_generic_digest_into::<CurlP81>(test.0, test.3),
            SpongeKind::UnrolledCurlP81 => sponge_generic_digest_into::<UnrolledCurlP81>(test.0, test.3),
        }
    }
}

#[test]
fn kerl_input_6561_output_243() {
    sponge_input_6561_output_243(SpongeKind::Kerl);
}

#[test]
fn curlp27_input_6561_output_243() {
    sponge_input_6561_output_243(SpongeKind::CurlP27);
}

#[test]
fn curlp81_input_6561_output_243() {
    sponge_input_6561_output_243(SpongeKind::CurlP81);
    sponge_input_6561_output_243(SpongeKind::UnrolledCurlP81);
}

#[test]
fn kerl_input_negative_byte() {
    sponge_generic_digest::<Kerl>(
        "DJ9WGAKRZOMH9KVRCHGCDCREXZVDKY9FXAXVSLELYADXHQCQQSMQYAEEBTEIWTQDUZIOFSFLBQQA9RUPX",
        "XRZCRWFXU9UYRKFQRKWROIRGEVGTUGUBKDYGPWDTUXXOFVXWRTQBRRGGUSIEMPAISTUEYEZJXXEPUTY9D",
    );
}