/*
 * @(#)TigerTest.java   1.8 2004-03-01
 * This file was freely contributed to the LimeWire project  and is covered
 * by its existing GPL licence, but it may be used individually as a public
 * domain implementation of a published algorithm (see below for references).
 * It was also freely contributed to the Bitzi public domain sources.
 * @author  Philippe Verdy
 */

package com.limegroup.gnutella.security;


import junit.framework.Test;

public class TigerTest extends com.limegroup.gnutella.util.LimeTestCase {
    
    public TigerTest(String name) {
        super(name);
    }
    
    public static Test suite() {
        return buildTestSuite(TigerTest.class);
    }
    
    public static void main(String[] args) {
        junit.textui.TestRunner.run(suite());
    }              

// http://www.cs.technion.ac.il/~biham/Reports/Tiger/testresults.html    
    public void testBasicVectors() throws Exception {
        tst(0, 1,
            "",
            "3293ac630c13f0245f92bbb1766e16167a4e58492dde73f3");
        tst(0, 2,
            "abc",
            "2aab1484e8c158f2bfb8c5ff41b57a525129131c957b5f93");
        tst(0, 3,
            "Tiger",
            "dd00230799f5009fec6debc838bb6a27df2b9d6f110c7937");
        tst(0, 4,
            "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
            "f71c8583902afb879edfe610f82c0d4786a3a534504486B5");
        tst(0, 5,
            "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789",
            "48ceeb6308b87d46e95d656112cdf18d97915f9765658957");
        tst(0, 6,
            "Tiger - A Fast New Hash Function, by Ross Anderson and Eli Biham",
            "8a866829040a410c729ad23f5ada711603b3cdd357e4c15e");
        tst(0, 7,
            "Tiger - A Fast New Hash Function, by Ross Anderson and Eli Biham"+
            ", proceedings of Fast Software Encryption 3, Cambridge.",
            "ce55a6afd591f5ebac547ff84f89227f9331dab0b611c889");
        tst(0, 8,
            "Tiger - A Fast New Hash Function, by Ross Anderson and Eli Biham"+
            ", proceedings of Fast Software Encryption 3, Cambridge, 1996.",
            "631abdd103eb9a3d245b6dfd4d77b257fc7439501d1568dd");
        tst(0, 9,
            "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-"+
            "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
            "c54034e5b43eb8005848a7e0ae6aac76e4ff590ae715fd25");
        {
            //System.out.print("Set " + 0 + ", vector# " + 10 + ": ");
            byte[] input = new byte[65536];
            for (int i = 65536; --i >= 0; )
                input[i] = (byte)i;
            tiger.engineUpdate(input, 0, input.length);
            tstResult("FDF4F5B35139F48E710E421BE5AF411DE1A8AAC333F26204");
        }
        //System.out.println();
    }
    
 // http://www.cs.technion.ac.il/~biham/Reports/Tiger/test-vectors-nessie-format.dat
    public void testVectorsForNESSIE()  throws Exception {
        //System.out.println("Test vectors -- set 1");
        tst(1, 0,
            "",
            "3293AC630C13F0245F92BBB1766E16167A4E58492DDE73F3");
        tst(1, 1,
            "a",
            "77BEFBEF2E7EF8AB2EC8F93BF587A7FC613E247F5F247809");
        tst(1, 2,
            "abc",
            "2AAB1484E8C158F2BFB8C5FF41B57A525129131C957B5F93");
        tst(1, 3,
            "message digest",
            "D981F8CB78201A950DCF3048751E441C517FCA1AA55A29F6");
        tst(1, 4,
            "abcdefghijklmnopqrstuvwxyz",
            "1714A472EEE57D30040412BFCC55032A0B11602FF37BEEE9");
        tst(1, 5,
            "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
            "0F7BF9A19B9C58F2B7610DF7E84F0AC3A71C631E7B53F78E");
        tst(1, 6,
            "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
            "abcdefghijklmnopqrstuvwxyz" +
            "0123456789",
            "8DCEA680A17583EE502BA38A3C368651890FFBCCDC49A8CC");
        tst(1, 7,
            8, "1234567890",
            "1C14795529FD9F207A958F84C52F11E887FA0CABDFD91BFD");
        tst(1, 8,
            1000000, "a",
            "6DB0E2729CBEAD93D715C6A7D36302E9B3CEE0D2BC314B41");

        //System.out.println("Test vectors -- set 2");
        //System.out.println("Message digests of strings of 0-bits and variable length:");
        // only test vectors with lengths multiple of 8 bits will be tested here
        tst(2,    0,   0, "\u0000", "3293AC630C13F0245F92BBB1766E16167A4E58492DDE73F3");
        tst(2,    8,   1, "\u0000", "5D9ED00A030E638BDB753A6A24FB900E5A63B8E73E6C25B6");
        tst(2,   16,   2, "\u0000", "AABBCCA084ACECD0511D1F6232A17BFAEFA441B2982E5548");
        tst(2,   24,   3, "\u0000", "7F7A8CE9580077EB6FD53BE8BB3E70650E2FDD8DBB44F5C7");
        tst(2,   32,   4, "\u0000", "605D1B8C132BF5D16F1A8BC2451733F7F0FF57FD5F49E298");
        tst(2,   40,   5, "\u0000", "7F3A0954A5C374566C72370D1D97C2AC8FA9B1E3CB216E31");
        tst(2,   48,   6, "\u0000", "B333735AFDAB30B4B597CCD137AC1AD2B30D4A047BAD0127");
        tst(2,   56,   7, "\u0000", "1F27BB5926F35CF5D52A24817BF56CD17D79BB65ABE85785");
        tst(2,   64,   8, "\u0000", "5229DC51A494B913F8E04C4C729C93CB8B260CA4EE8EA9D7");
        tst(2,   72,   9, "\u0000", "5DFE02959A64534E0E679937B712F7DDE2C7B982597D315D");
        tst(2,   80,  10, "\u0000", "654D00C774FBE74CFE4C0A6DEA5917823A6B20070CD0CCCB");
        tst(2,   88,  11, "\u0000", "C82A6419844FC7028B52CAC8186D63B85121AAACBA622A87");
        tst(2,   96,  12, "\u0000", "06F6D65EF081AFE892AC0946F275DBAB9D3B6D9C55E517C9");
        tst(2,  104,  13, "\u0000", "42C40537A876D69DF84FF36FBA3127901B112B9E96688012");
        tst(2,  112,  14, "\u0000", "6FA00EB82505EBC4707F675B0A72A9F9795F647B550F155D");
        tst(2,  120,  15, "\u0000", "239549439CCE539F304CB7A95160A033529B228CA406EFF9");
        tst(2,  128,  16, "\u0000", "464B87921CCDAEDBC0D6941610D1EB19E536036096403F32");
        // note that not all test vectors with lengths multiple of 8 bits are tested
        tst(2,  192,  24, "\u0000", "CDDDCACFEA7B70B485655BA3DC3F60DEE4F6B8F861069E33");
        tst(2,  256,  32, "\u0000", "739414BD4CD6AB967CD46A1D943412757D858B24D1C4ECF7");
        tst(2,  384,  48, "\u0000", "10DD94B66BA6AE0498C9C7754844662E5D8B62E27D2C4D26");
        tst(2,  512,  64, "\u0000", "33FF9966DDD692427A9BC4D611F3C74CF629A0544A1A7ED7");
        tst(2,  768,  96, "\u0000", "05D2A28308C44536C591DF21B02AB542AF982B81A4C5E129");
        tst(2, 1016, 127, "\u0000", "00A569CCADB17662483CA36230BCC6956BA5C1D5595C044A");

        //System.out.println("Test vectors -- set 3");
        //System.out.println("Message digests of all 512-bit strings S containing a single 1-bit:");
        {
            byte[] input = new byte[64];
            for (int i = 512; --i >= 0; ) {
                //System.out.print("Set " + 3 + ", vector# " + i + ": ");
                input[i >> 3] = (byte)(1 << (7 - (i & 7)));
                tiger.engineUpdate(input, 0, input.length);
                tstResult(set3[i]);
                input[i >> 3] = (byte)0x00;
            }
        }

        //System.out.println("Test vectors -- set 4");
        tst(2,  192,  24, "\u0000", "CDDDCACFEA7B70B485655BA3DC3F60DEE4F6B8F861069E33");
//        {
//            final int ITERATIONS = 16000;
//            final int BLOCKSIZE = 65536;
//            byte[] input = new byte[BLOCKSIZE];
//            for (int i = BLOCKSIZE; --i >= 0; )
//                input[i] = (byte)i;
//
//            long t0 = System.currentTimeMillis();
//            for (int i = ITERATIONS; --i >= 0; );
//            long t1 = System.currentTimeMillis();
//            for (int i = ITERATIONS; --i >= 0; )
//                tiger.engineUpdate(input, 0, BLOCKSIZE);
//            long t2 = System.currentTimeMillis();
//
//            tiger.engineReset();
//            double rate = 1000.0 * ITERATIONS * BLOCKSIZE
//                        / ((t2 - t1) - (t1 - t0));
//            //System.out.println("rate = " + (float)(rate * 8) + " bits/s = " +
//            //                   (float)(rate / (1024 * 1024)) + " MB/s");
//            //Java 1.5 beta-b32c, on Athlon XP 1800+: 34.98 MegaBytes/second.
//        }
    }
    
    private static final void tst(final int set, final int vector,
                                     final String source,
                                     final String expect) throws Exception {
        //System.out.print("Set " + set + ", vector# " + vector + ": ");
        byte[] input = new byte[source.length()];
        for (int i = 0; i < input.length; i++)
            input[i] = (byte)source.charAt(i);
        tiger.engineUpdate(input, 0, input.length);
        tstResult(expect);
    }

    private static final void tst(final int set, final int vector,
                                     final int times, final String source,
                                     final String expect) throws Exception {
        //System.out.print("Set " + set + ", vector# " + vector + ": ");
        byte[] input = new byte[source.length()];
        for (int i = 0; i < input.length; i++)
            input[i] = (byte)source.charAt(i);
        for (int i = 0; i < times; i++)
            tiger.engineUpdate(input, 0, input.length);
        tstResult(expect);
    }

    private static final void tstResult(final String expect) throws Exception {
        final String result = toHex(tiger.engineDigest());
        assertEquals(expect.toUpperCase(), result);
    }

    private static final String toHex(final byte[] bytes) {
        StringBuffer buf = new StringBuffer(bytes.length * 2);
        for (int i = 0; i < bytes.length; i++) {
            buf.append(HEX.charAt((bytes[i] >> 4) & 0xF))
               .append(HEX.charAt( bytes[i]       & 0xF));
        }
        return buf.toString();
    }

    private static final String[] set3 = new String[/*512*/] {
        "B99F2BEFF1E64861ECB3D91B04C9BA4BE6FC0FE7CE9653F3",
        "FBDD470EE15111676B477532D293019EB182CE9EF17C0B59",
        "D68BC840B64746A212810784CAB2BBDFCC49FDC743AFF5D4",
        "D6B280F151C286E2B8A78B3C80F181E192BEEC0A339F0453",
        "02FDBD79A641FDB807DD80699019BC97DA69D692104FBFCB",
        "E30F39FBB7BB8C191E2CD9A970EC806EA64825E4CCE782D7",
        "0521BC64D5C188320CB9AE9D2A89BE291352F77C3E44772B",
        "60224F0B05145D00FB3C09E78522FE17FB7C64AC90AF4BE0",
        "3104BE53E8A19ED90BB03DA1FC5FBD052EE7D80B4AB31AF2",
        "ECE34E9D1BBA44EBAAF18254812DA74E1B250D874049471F",
        "7FBEF692D8F3DB59912960E1C4F255D65CFA93E64CDA00B3",
        "180C2B906440036CB48ED7DBD670CDD06054734CA9E3E531",
        "EC1C85F1C4361CCC979FA94565CE47BA766B26C03E0155ED",
        "0CB103FE2F16046BCF473C0EF5F30510094B327A811303AC",
        "35E499F9FCCE1B0CFE442FE493333763C8E5F956A255DDBE",
        "E8CFB0B7651DCF73891553FE1AD3DC0F1BF5CA89E2243771",
        "9F375EFC406EDB4DC7008C6ADF57CE7BC6072BD39593651A",
        "C40960EE520A3F6E38938C4D774695FAB9AA99ED98724686",
        "C925142A228B90DC4EEE8D740480095B72EEF71717AF230D",
        "49F67D2EE9E5E07754EB3FB587A5DFC9A5A5F1AF952ABB90",
        "8EA4A53FB597B8612B751B25B4D67A3211BD9B55810830FB",
        "7F8A9779678C20D7B26126CE54CF40D586D639038E0D898A",
        "45B2D2247DF2BE8762F7C2BFB1D282DB99686B8C61F12DC2",
        "5AF3F43A65A123F25318B108322F1422FBDD4E2088B3FCC5",
        "255BA44E43BB186AC95A8BA873F27C17D4209A7CDA0743E8",
        "6CC1C5FE50A6A3E1A8C9151E529627B7825E797CA2996763",
        "4C8E2574514F1908500775D706E66CB5E098A07763CB29A8",
        "80E15B5D7DD082786B73BFA7C11ABE846CC08992D82082EF",
        "9AAEDC20A2B5C9B3AC1FEAB011E0BC63C3F14A77716745B4",
        "20FDDFC28496F4B7C474D1DC0D2556B71A0BBE0008FBCA74",
        "6C5437A6A7ACD3882300183FBE7B474CB7C0E45DF4BF126E",
        "3220E4DE2B99FD792057CA379EC8E0FB9277B2B0AFCAF7E1",
        "5605262344AED0F46F6AA94AAE288A936B3783D7B0C96EBB",
        "79FE05ED00EA9FBE5C5A411B7BE9D0AB7E95FCAC4944FB5A",
        "5632B77A86B06F60FB38F6F8D7B8ACB076610CDB17C45F3B",
        "6F1C90B7CE7D352A1EAF908EAAEB69DE70CFEA924FA1F322",
        "B0582D1882AC0B5C534293ABB751072EACFCBCCD7760B739",
        "D56CC1F5522E00EF7F25DA7C524CFBEF639E04ED232FDA74",
        "FDD3E72BD41951FF6CA729207F9EE320F277C240C5ABA6CE",
        "25C341EFBF8E0197DD7AA0D098BE9C262EA24A5ABF1956DC",
        "3D8E11219C1F4A655DE818DD5BAE94724292D1FC1F2C0451",
        "78D0C2AEAAB13E6957111303BCE092987F38B125654AEB06",
        "76CE1A38D5408FCF5C60F231F8624D22EBE4F3C2A77833CA",
        "A1478F92ACD8AFBF1383F566E8074249C576C6C01573C816",
        "EEF978C6730A5A51E0C67CA0CD591718F48E586924DACAC3",
        "D244E12581769DF1260AD3B9BADFEAACAEC10F08D0BC20B8",
        "6C88A229FF9769C257AE208427684E2BD2F2616FB11DC61E",
        "F9AA7D877F5B192A751D6956225FBB166E70BB5373EA03B5",
        "8E5FC1110E41E417B771F4860BD7180A8771EC8BE3F51371",
        "16A04075744A70693EDC2823E6D3F53F8BD7DA82F61C988A",
        "DAA5DCE2246AA0B16DFCB5A6DE1148A4667CF130CB0FE57A",
        "7935C3EAC77062032E4DA41CFE266DB7B1CEAD6A92F36531",
        "12FAFE2DD9FE0F928585DBFFDF2FC940329F4CA2C428FFA2",
        "B5AF46B22173E04EC7C73D201D230E76AFF7E25E7C64C9A1",
        "04A39346609CC870A34BFE4BC381391E5096EECC0420CBE0",
        "8E30346B3CF6A33A5DF960349E79E318A559177A10132AE5",
        "E010FE9A2A139AF552D7A22D5D04D59ABE9F26099565B139",
        "7E3A17F0489C5D1CF249BDFD6D839D17797E5F91655061DF",
        "DB0EDCB6F326FFC5EC6C23A9B23630110BCF3EF1623090C7",
        "0E878D8D2984F9A638DFF1A309EA4B436D24FA40B3BC5F4D",
        "AE09F204A5E6EEA22BADD0042D00D48E60643343C951C79D",
        "5411134E8112EBD21A89CA726D6C3293BAF1522031BFED57",
        "1CC1D5B8489F213F6A0519811867CA70AAB68B93768B2EAB",
        "A16D7299661CC6978AE949CF9F607E286913CA0615E12CEB",
        "9A2A8EE8963BE88DF83D5761D490FFB0450E9C450542CB08",
        "FAC9C5FB38BF7CE0902DC3E447D3D4D6DD369DBE94A8AB67",
        "C430CAA3FD05B674624BB549B3A565C9F1A93D8E4AE429E0",
        "D03C16013ACB204439B0B84C5EC0507C07EAD360114BB6D7",
        "44F6F5EFA89F2302B9E4B6710EFA1BD79F2589575F57B7A0",
        "C392AF0E93D619A0FAAC3FC2EE960DE9464DF3F3B87728D6",
        "BF1C5CF1B59A39C9EFD3D46F9144E7E7CC75F53C83BE87AB",
        "F4DEAFA84B6859F0B32D04DA3CF8DED931870EB8EBA086B6",
        "68B3511E9A930CC1E465DDADD3813E79E5235690E279A53A",
        "D98B1C76BF4216804783DD2A082F5722AE7049717AC6BEE4",
        "8FE146611B75E5E6527F0E2516F09090FABE1AE0F51D9965",
        "B6F4518C9B5A082BA4951EEFEE8991D2605395D04FFD9784",
        "0C4C268E0243354A31C576B053FCECCD320D864892DD4452",
        "4FCBCA86DAAD5EE31427339F45DB698C56F4EF5977C62346",
        "D63400C91F46CEB1F73427A1DD61920E5D98250CD7B21D61",
        "2002BE33AA6783F40109E747E27231C652FC90B304F91218",
        "A8FEDBD8A393C41857EA09B457FDB42078049B3F269C1431",
        "D2C06B7D56774863AB6F3A9F8FFD79FB56FF130906B16596",
        "5D8339715D342E8DDCB7CF18F4878D2221BB05FC4B2563BD",
        "06DEF00E4151BBFA011D87096B16C09A955B1059EBA03393",
        "36386BE0645E7577BFF63BAAC50532912EBB7026B120E472",
        "8E4CAC8FE8C09463A5726B0FD3335A09E8971B498CCFC14E",
        "45EA2AE4AD4B1E0C6958FABC69939E1A19300E28946638E8",
        "7C97246A7834ECF7074DCAD08A8B4BF3E8A68157889B97E4",
        "0F040C8CB0C777EE04086DDEAC53751D037FC41A62DF3D64",
        "011A9D0417A070DA0D425E835F03C68D0BD8762A7174C0A6",
        "76B90E3049F98281369B0ACD1D2193EF2F63A25F75D9FEA1",
        "733DBC18BB0821CD1B33210BD9018F2EAF405E0A281328B4",
        "4C3B42FEA3DA2B23AE3C723B22522AECC84BB1D5CD2F9E51",
        "77396616E87FDEEBDB6276B30422B04C2098F85F0085371D",
        "6BD882666B2089F5A3904F91E26B34263BEF463456486ECA",
        "1AA8BC49C40EEADA030EE802C336D83D75C3EEECDF365AB2",
        "6E9615A0291AEB33D37FFF3BDDAF628178009820457F0737",
        "F78CB6642756E3253A46FC55E5C852B5D209CB886F1953D4",
        "3D900B55C9CD9E821512415B734B06A28B8EFB0488F9EB4E",
        "1D534936BE6E2831E83661E0568B170EF52712899E2F8A8C",
        "68D08DCA280F71F6E33FE81F56BF5D98BB498B720F8294F4",
        "D4D1339C8797918AEB4000CE0B75EB741EEA852B7E5FEF35",
        "F6204099D4C1B7F82BF0A1364A6322C3578A46F354A68622",
        "FC94F4DFB37B4674843E0CD9DAFDE149D89667915DEFAEFA",
        "F64C25ED176B388E022A3AA4622975F1CEC7A9A359D1D28A",
        "CE3230D5A7B57E82F92D8A36485B0EF70B3A8430391907F8",
        "D9AC7B94226A60FC7D99CD796FD5B6EA36AE798047E1B53D",
        "8A9F12D8D9DF81E43E9DC038FBA927A3A0A0D6FA43749D2D",
        "CCAE282196A07B02E896FDDBC71616298BBBC436BED3D424",
        "09503A7A95B31206D16FC3A3A6730CB379F413C255B0916A",
        "0D799B12AF89A92E0E91237F37236BA484B5192B468F92B4",
        "04A3597758A82EE3EAA34F5B0FB1198A1177B3B3B8DD583C",
        "BAC0B8BE5A41BB8186CABAD7A32F17559DB8579D2A32ED35",
        "96B5AD3931A54DF4C0754FFD17E2ED27EEDBA480D7DEC700",
        "4A3E600FE13F444B31E03CFA0863F9E316F83F68F16D509D",
        "B5DA026AE3BFBFAC6D2AB00A16ECFBA40130E1817E26E6FD",
        "635799A28E0E31EF6DA157BE71327548E1EBBE93D39A40CE",
        "00A7C94AC7D6DA73AF3537816D7535F6501C81E9D0B70C30",
        "CEA02CEB43D209ABA6217234278931ECB509813A516C8770",
        "460F8608C1CE8A7ED701C8D46D800E5097DD421321A595BF",
        "595B7A837EA74AE2A9C2A4DD9915C684E4003A78C908EB34",
        "40A34377B74D9C7404E69898DA030F47C7B4F5125379799C",
        "011A1626ACDE5490D40D6D3B212E4296DBCFAA310C0D0A7D",
        "0C38A676E739B11BF2B5F305DFC38C1194B67D5BD9ABDD3B",
        "B2BDB49CBB6A27D90DC43CAEF626531E3794B02A4B557363",
        "925F73F9BF011425B3C855EB93FF2B3702994957C90A6E71",
        "C5438E4F6F20FA52579EA70DBE976E8ED0CD0CA79F0FF667",
        "9C19CE6E144C81EDBEFA42762CCE7687D82D90C80E6E4DD7",
        "F6F514983734179B56A2DB5810D2FEF9FBAAE792DF757EE6",
        "47EA4D78437E145E56490DD5C47788BEC899AB249A782AF1",
        "751FCB36A8B567673E9571B4F359CB7452913DE68458233B",
        "6B86FAA0426879F9C1A6F4A9F26FF19DADCD0BA2C34273F2",
        "8ABD32BED2814C6428812B67CB7228BF02AC80EC80C5771C",
        "026EE4B31888E474E20F1627B30475FFEE90BAFA2E214CE2",
        "6EA00649517124D6598C2CBB109B8F8AC445771A9550263D",
        "9029BD1306510D7BFCEF39B7E3E6F3A62993A810141919A4",
        "802BE35C1D0356AA8D7E7830C1426AA9789CF9B1B75C7145",
        "78D1FE031819E727172B1FB5A0EC87AC33C494C1E37C222E",
        "E87A76683F7B6D8CA2B47C8C41F346764053D8841FBE610E",
        "E3E18819D97CD24E6C82AF5212876375134D9401E1CFB25B",
        "528D81D4D77B3C9360D1CCB3D8D906FAD4BAEEB8C417AF8E",
        "940509DDE91065297F51C95D6D61196BCADDFFBFE43A0490",
        "1F745AD4161EE006A4260D7249E0B68B0453B01819EB2A14",
        "B1AA443FAA0B47E51A307ECAC7FAF07CA8732E715513C738",
        "CB30A43A2DE29002ECE22BD0CA7FA5C40E0F1EE3C9784249",
        "A5B6D8400303E5118489CE082241808027945C143D1200AC",
        "FFB82281B7B2CDFF2E83440CFEC036D03C26BD5133AA56C8",
        "08F21816D77A3D5F7DFFFC5477C4EB78AF660D7C32B1B6F0",
        "286FC4EA0BA3EE25CA28CD635DA1077BA00B7BBE1D319C9C",
        "ABD221DECE666C1E0ADE89ED127001B1AE8B37A3249BC237",
        "EFD037EAD7168C5B48E18DBB0BFE94E7A7337ED9F9DC0B60",
        "17A915BB90D878000A07BBF2F7C29605541CCBB2BA33BA9B",
        "EDBA011909174DACC7276FB748DA3D72037688E09B471CDB",
        "18646AB2DFAC64E3D1B8298F9DA48F8ACD3EC8E9B6C091D2",
        "5BB55C940C48C5F173356ED2F76F135BB33C49C6FF401CE8",
        "444CCFDECBBCAAC55FD538C84FECE4AD05E1F86CA2183046",
        "0DD2986EBE58B62051C5F8558B33B2150E2162273A21D2D6",
        "BBD0BE785D950FEE7272A6A42E20EEF9FCC96DA0862A9D4F",
        "C6EE3736BED22F09A3082957D5D2D9939E926DE56B23E540",
        "F272AA5CC30126CA15ACF94904EA44A28068BD3B3ED74BDB",
        "24713F450026D6D9717475558F33A84CEC5B8EC74367A1F4",
        "021A9ECFC35A18BC91568F76A06EA7B6F068B1B45E725F2C",
        "54027E9B61191C3ADE350615D809EC6A4BF7FE926946F93B",
        "27C362B26734609E760ED30E492273A2EC0786CECE1B62F7",
        "C56A7C83A9F780DBFC564564D60B110894B3462BF202B31B",
        "E46DAE97BF1D1433B91E7C4B30A3D11189BD1959F363C8AA",
        "DFFFD3EE84CE33EDBD6CCBDF9FDBC4C6CD9F6C3663AB3124",
        "CA9D313C0A9D62198C2528B856627BC9C70DD1C6523AA09D",
        "DAB676CBA9ABC9799E4416E703CD4C89348F3513D93BCE58",
        "383C379EE484CB248AF0008F339F2B76C25DB122ABE46C2B",
        "466C5466009BFF5B4D9639CC2DDFFBEC31663189A11A3F06",
        "5C2457FB54624D291D0223FDCA7CE3EAFB85B6D492408A9D",
        "FE593DC31045C782EC6B52216FC64B35FD33EE3904BA9966",
        "D7174534437E6168C2EF60B0EA9DC61ADD8098C0694539EF",
        "75FDFFFAF4F1D44DD610CEDDB215E16593340EDE583C875A",
        "36EAA91B577FB20178B0F06FBF369D07FBCE8445BB36774D",
        "9068E188528160BC3B2C2036B4B6140BFCBC98A031847132",
        "42E86596DB6EA0724CE131CC379F5A3F37646C87026DFB87",
        "733642DD7D4F08A2303B7517974AC6D9E6EC65FBED56CB05",
        "92ABCE48F750C364C5FC649E3E2168E5BE83F6176A2DC552",
        "BB841126EBD38F36A63FDA47FD5971DFF6D9CF0432811535",
        "1A5F8B7F34376121B1BA35FB19DD2DE6A1FFE55D22703940",
        "A4705AA774708F6D6AEABD6B527C973DD3B955E144812BC5",
        "ADA04C7993477041403A144C15BBFEE889A6F835B9F968DF",
        "2F4179071804EC9280CD2EA6E265AD77633F5196CF8EDB32",
        "4378BD6082B465ADB4007CBDC5F764C402ADCBEE4347C08F",
        "F75B2A3267B96CA1EE4191B99CE78B079333F10EF184D91A",
        "C3891913D02202A3DFD2BFE70EDB992275744136452C566F",
        "07B465A5110B6F1D8CC50B4716A5B5CE9985CD0A7A857EAE",
        "AA3E818EDB7190F12AD58D9A4A9DAB53209AEE83F5B3C554",
        "C570CAD73E05B2F8283A26726F07BAA339EE78ED7CA42F62",
        "B48EC775851C9AE303F05AC8E51E62FF169C175792C2627A",
        "1E3047A18CCBA9F21D1E58F90FC2F8100D94227E29DF84A0",
        "5CA88D9C7D388BCF7877FE0F8CDD5EC767DEC73783B60195",
        "F0AFF7784660E13949EEBC8A817DB227D7DC2248EB0F659B",
        "9B5D9AB548CE2CB1B4F121B5BCACB724A02A655E56650014",
        "DA5D70AC87DB9AB9A19D7E79FA3820B9A6855F148A662E9E",
        "0DA0AA0A4187C2AC05B220AB88498FC244FCEF7FCC59692A",
        "DEFC6E4E0FF252A652CAD76C06429D7D902F80D0C132EC2C",
        "FB8EA1191F9272038017D3D10B0F901514490B119C3C086F",
        "A0F433C8EF9F86EC52989CC77B999EA02827EA0D57F00766",
        "73C51E27F033BDCF09E29C19740AC05676C7DA219C83F019",
        "C1A41E1999A6E7ED8D2407005608A44999C0918F009F12BB",
        "C1DE2FB59A6A6CC45D3E1A9A502F0327E4E0582692882E01",
        "FA371922F657875B03268090C91EF8A7D968486EFCBE853D",
        "D7786FFE8F9411E982D591C63A364483A733A005D8DD4F52",
        "EA71A84A2AE43700E2D6CBF9705809F38EB01E3AA3500981",
        "AEE84693BEA5105467DFFF30E694772F31148CCECA362D0B",
        "02C9565A480DFE315479D62BFFFF915768411199596D0067",
        "0EA5DA49521F8C298EB3A65B157D3B0E42E0BDA0EED10EB3",
        "A8F8E5533E0025DDF4421EA099D9C553736B86626649BFAC",
        "76D357BCB224F3B59DD6286A3EA0D4C2D09699E68ED7D4E3",
        "202794850A8B2A8D611473C84F18835F322D32E04214502F",
        "1BED2B5DAA818E27EACA9EA5BC6B5D88FF7605CBC529C423",
        "6FCEF79BBB8B556D597071E6E86815575C36955DB95FF0C9",
        "5C76AF9054B56A78EE4BAE2F69E54EB4A4DCCA9251EC323F",
        "8645904A860B9227CC2EBE31269BCB033D12626D4E7B1E07",
        "5CCAA2D96A4B90DD33CA1A8F63D9A32785FCE91FE9D261FE",
        "644AEF13CA34442715AF3B71F6F40863B9FE5B68D9AEA69D",
        "BB8F2FCECA6DBE2233D94CC9617C0C924251503E15ECBEFD",
        "C0CE5B9858DCAC7C2A7FD41EAD46C1D1F4A55C612EB87095",
        "C3209B535B1893D292F24AA705A54AC6893F5C34DFC0B89B",
        "4A9362D913330BE01F8AA9A40621CF2BAE0AEE998182BFD8",
        "6757B6725238FDF3AA6E92CE05242DC7A138F55A8A2B8CDF",
        "9C1EFCC39E943DB17478F55C2E8F5AABE665A257A74E7CC7",
        "9E48EA08AF2BC00367D950D2A0BE14D0F26B71FBF3997B10",
        "A6BBD6177AF40DDDCCF8CC8B8218833B8A89D6BE122E12AA",
        "F7BAE51827F6C16F31508A28D362DE9BA4984E47C88DC037",
        "65DD7FF5BB8CE8D5F84480BF5A0E35127CD736A1CDE7BC12",
        "E8531E2C7329ED60B7246E6246B1FEE13B1B70F1A119CE54",
        "7B26F57EF6D56F8966AFB3AF6C9BCE1C1948396CE4FFB1F2",
        "D6EFC3AD5E62E9055C414D01E11E0EC9374B5F4486AF92D9",
        "B4000A22B7ECE2B3BC2695A2E98A9F4FC981DE2F44A80CA3",
        "30F506642345E45D1116318D8F9849A640B13C27291F5B83",
        "E02C8DBAAA96F301081E0F6F6FF3163D11B0340C5154E06D",
        "4D176A285408CA3E69FAA2F90B980CD10BED31F3B7C31F15",
        "8BBECF1AAD25FDC805039E0B0AE53C72B2D598400FAD8A0F",
        "68213C2CB2C200AE8E130125F0DA1A81AF46DEA7A32564B0",
        "B65CAE529F4F5640EC8E61D7B18DCABF5C42D09D16638E02",
        "6D9BDF35483F61B8B41DF2BB3DAB479CE960916A91768BA9",
        "C7065FCFBD627402B557D08EE245E4B792079CBA32E7E956",
        "FA7CAC5FC22F2AF0FF1E052D28817A65966B2B0C1C2F8792",
        "204A233E044B2C07EBBD2C529A8D578A07B21BB674EE4D64",
        "5D64C8D0554606505D54BDF395D6608AE15D23144284C05F",
        "C90A9B1D92220CA0F3F4A8E65155FE0E1D152C89213E96D9",
        "3C8673A6ED62C5FFC880D24A000053ED7042329424181DFF",
        "732D68C9AAEF89D27676A87AEA0F975BC31E9B7184AABE49",
        "61D3540EF01107CBEDCA147F615B0DA929474344FA8DAB0D",
        "FBF56E336FF510ADA9A801F84E4792FD8E9B1C3B44B4D666",
        "FD5EB3F4BF2E475CA451C856B2F576FCE1CAC3B700348176",
        "E5D6F6AF3BB3D2D22975AB500DA24B5783E651C1AFADBCC1",
        "22C7EFD25977630807C1D0FD7DC220FF426D589BEBF3F818",
        "38C0B8ED87706F4A7C2DC5EADCD01C72193261CF37C196EF",
        "CAA17EB9893A85EBE650736A0B56FDCC9DDF6916707D1B99",
        "1FC43409C387A59F2702D1120CA69AE1EB8BCC072AEBCC89",
        "9D5CAD387705F97F784279C85B5C09D3A8216C3151BB8BB5",
        "DC1EBB94F3E0E6703DAA5715A7E826554DB9EDE756B2EED2",
        "5E626E0FBB4CAE926AC717EC009CAEE23B5CD3062359E20A",
        "F348BF048DB8D98D0BD0666B520AB255B12CA6047B3166AF",
        "8F929C79DDE5DE2794998170EFCABCE511637A29810ABF47",
        "FE4661EE9DD9FD928D2AF9B5898EAEAB617E88369457DD67",
        "6E0C9BCE677EA50439E02731B301300511643AC1FE00125D",
        "4589434D3BE9D44EF45DF1ED91AA97D812ED55DD869B9067",
        "0C0DC9DAAD3351B7CE17F8D1F6DBDA62F91FCF6C93019C45",
        "07FD597941C0A30A137256D65E5D2430EBA2C6EF24979E00",
        "EEFC74ECC53C334768D59EEB02B49A462A976CAD32FA9F4C",
        "292EE351E25622EF85A07C0C161FC0FBC09229C176998D35",
        "7ED81D7B5AD71E60F04E388D2E29E044EE253D701D213ED1",
        "56A2F7E6F85975BFCE0705A124AE4CBF7C3015690304521D",
        "B07EA50183596A2430F3DEC13F96845D1070A3D32F5EC066",
        "526F6BBF1EBE525ECF7EFBE693A06B746307726F2011529C",
        "89EBE9219A9AC412BEC88BA321030B4AAA257B6410F7719B",
        "ABD5FE2E6DA870D5B894B35E72E41D590A01E40303524335",
        "1E3D537D9580A74F2D7FC71EE241923AB3848D11A1A5644C",
        "F580664AB99A6B50BFA21019261D91B3A1238FB129B0797A",
        "2DB79D2513802F939D4608E4FFE38D1CD5FFE7B667CE3EEC",
        "13B1F534DACAC2836C67B4B410151AE550AFF9C977B6A3D5",
        "86ABFE6988DFE9D6C9A884942946BE74115987EA3C6AF477",
        "9FB58A6C6822D1F7BF3AC52BD210132FD6DD1E823D3CE95C",
        "1F5E0C29EBE8A28B934E7932C0D120F2F01CFA87DC089E0C",
        "BEA84869592DF1FD12127F891CA9DAFEE767226868F878DB",
        "6FC0DF95D191F492399AFC32C4F536F43C14E189DA93396C",
        "33E9415EA0EDB2BAC1DD210B9CC2F5D7F46B5B07C5EFCC3F",
        "CD933BE80058AFBBC9FFD6590CA2F53B3696E7F86CBDE8CD",
        "15F89B44FF00A4CB930233FADB49A824F0AB540636A0E8A5",
        "33C345BFFA20C8F0B92AC6F3F063E477F1CDA525C35E68AB",
        "617EE74C600A5B9D5C591984222DC000642FA97ECAF6948F",
        "E50FF576A78A5FF73038F307740FFB190F405AAF65909C7B",
        "10F16B3B9BE9762F603DC156A2626D0A92C49D6788433292",
        "65C75607C3085EE0DF99AC88FCB71FEEA3E95D1995027B90",
        "A95A236CEAA6FE6A33DBD6B2FF2CC61DCD06B576D34D8BF9",
        "94701D90637F543B83AC736D448D915AB56ACF688AA2A9BF",
        "C005D8C2069CB7F291C7214165383ECC418999FADF197ED3",
        "F02715BA20879FE16CA382F3F33B35DA09273F524A832CE0",
        "925F4C6B45F07D01F1033AE426E554FE30AD5664F89EB521",
        "DA89E876647B2B17B726DABF0620B5791B8D910CB9E7323D",
        "A3817AEC34558CE5C4554B4BB652D52E0FB834D66173B40A",
        "EC4599DB388F66C10AF7C24987AAAB6D02CF431602C321D3",
        "D7BBCCC448440CD6BFF93D8CA1DC309BE47E51C823B85EBB",
        "2CAB4F11BE0BB64B4F16F707DF30F465A279C6972FBCD7D9",
        "12E4D1EF75CBCA5369EB440776F117EDA8B536A35C26F139",
        "17444B27596CBC519FBC8F2B90D68D05BCF51608ACC3D304",
        "D76A8B2E986EB16CD6121CED58295F0CF5EB02DEB60F98CC",
        "164E3829B70E59570D2A5B24A0F1C67A974DFFF1EF5BF2EA",
        "0EE8B5DD7E5A285EBE11965B574517B949C3487937453B2B",
        "E3639D864D20ECB48D8C2B8F892D97A7FECF83937C48C2DC",
        "4434C996B25FE43CA24746396E50C157139C57787675CE17",
        "6D1693269BBA7630B6C083EA6D8AA16F0512F07C214251A9",
        "A1D5C7ABDDF9FA51FB5C9AE0008FA953EA83063C93E49319",
        "9BAC4A7FFF14B34F32F10EB2B6A3A61A13C255DB176D6FCB",
        "C6BD779EE2F9FF6A4ACCDA2E33FD0C62D641733E414D5B36",
        "F0D656506DE265EC28F1781DACB76D1C7575DC55C15A40DC",
        "0E95FD14633037441CD9AFE78391FFE73AAFEFE532B8F7D6",
        "AFA01B52D549FF4C8B6DC71BBA6CFA27E8EA03046B95F6EF",
        "9E63417D3DF651A3353FB6573FFAED9DF4ABD7F68AAAA051",
        "CE51254F812107B91727838B619D5C4F17FC2C3C9A95233A",
        "89F63C422BB85635F432D4A6DC9F940D79E0B5E111A24F4E",
        "999534C4B3B25F32FFF05B893F4E26CF8F1819FCB5B908C1",
        "7FAACB92FEFD12045C77B4180EA95EE7E1775703E7BB4C3E",
        "2BFEAD2B7E1C6BB0F47AEFB9909E3ED961EFB39A29794515",
        "A52AE6D0221773E42FB042B7830D28A73A590562C38C802B",
        "5B3007DFB62B78955620A0F17F58B6FE55B360C0F7A9F4C3",
        "77883951F130BA75FED13621DC61BB766E475DB7751B0D3B",
        "297DEB90367720058318C994C0382B83D182110797A29A53",
        "0BA968080D4608C3BFBE43682CBBD63F246F866AB0A0070C",
        "328F20CDFFD905862A11F70B6FDB4803133CCE8ABB8D2B73",
        "74AC023139CF3557F49E2F8A674AD0857AEEB9EBA3C1985C",
        "BD588F19DC358DC37450A6689E4D7DA413206159F3DD2A4D",
        "DB626F5040AF44803156FF86860A1367B1B644B021C15460",
        "ADE8785F2F65B67ED1740F8693C5A1CB3BFEE9E3B211B83D",
        "D08599E7444393A3C5FF2493E1B6647B297708919163E05B",
        "8AA57D3CCCB899CC92A44ACE801F54A13E60A45BFDFE7D30",
        "3415A0699A0D14DBBBB2280A9C8E3C91B954B769CE606362",
        "EAD03B5ACC5C86FC8672AE14330BF93A9489A5017D3B9354",
        "7ABE3B7FD5804A23B937C0EF5ADD8869188BF842F68D21F5",
        "739004F8FC7577D0BA954187F300E441F4A99F62E0F3C367",
        "30D99CB386570F45B8F0EB75868E8EA9EC7DBB04C26D8FEA",
        "7278F6E780965FB5C02AC4AC24BD2020D2439623EEB901C8",
        "93E7E84B803152CE17491B9B9DC6502041DA4D56C636B4A7",
        "32D63F3C642173BDE55C2A7E8BB6C942420C309DB2E7210A",
        "CECC92727AAEE2FA74B90AA728F0D3F0FC5E8A42DF283713",
        "51437CED5761BC3FCF29FDE5877675B5DCCABC85BC2279B8",
        "F6A494D7241543CBFE2BB3C68F2DA9FD9915BF0A14BF82F4",
        "DD8BE4ED5FFCF836C977352ECD2CF689BD94F9CF0EB66EB4",
        "1EF1B22652B07E0039DC257B30E88A2FA5D3FC64C79C741C",
        "775E4B0447AFD1C960320C042EF2AB6C879088956435872E",
        "A40FB52C188AAC639CF9ECE72B978C812CA7991997CCC3D0",
        "F6F305D3ACA46CEFDA5FCF420B49C9C13F14C3247E4214AB",
        "2A5611447591A609BEDB9B99AF030D1548C25C1090FB7252",
        "6BB8BF7CF510DF644EA1771146EC6E943E26598734BB2022",
        "8508F80824415D97E468B19EA305B0473A915B996DC83A31",
        "8814EE7A02164290EB431E70D50490DC2313BD30EB479857",
        "EFD4A311C5F5093AB23F2C775577EEEE230643A75F7938C6",
        "6FA980DE170E4708F4F59BA46DE0EA340BC61C540B0D12BD",
        "C699821C7E342804278CA77879FFB9332F274530C673385F",
        "FCFA7BA4FE1736CA672914AC98905FCF235CB82F10BE9981",
        "BB1DC4CAA892B46D15C44125DEDF64C63EC4DE5B807F93DF",
        "520F25FEEC8D698D31C164D291A54B906564A75B7B693239",
        "772CB58B4086454862B813AB25EA5E33BE530D3DF48F8BD5",
        "CBDBBF709ADE1701ABDA7A258528D675B505678E6B643FDD",
        "A16CEC411677F88C1F751442BCDBC9F013AA1F4E829CFCA8",
        "9DA04A1EF52DDF86660B9EA7D8AF385BBE6369B10AF2F3B3",
        "049F7036F40FB51260E4B8CB0696EA03D375B401CED3E2C7",
        "EEB8208784C4C65DA497729C948063BD9F51FE5C026CBC8B",
        "F39BA71DFAD235C2E0CC8BBAE4CD8D5D1EEE9247086ECAEE",
        "8372D7953F7697BE48661E3718196082B06EB448EDF3D839",
        "D41785ADE9E2FFCAA5B9D44613CD23CD9C3A519CD9C89BED",
        "620D6396A467CB957740B85D5D51E53279DF78D56D6CE8B6",
        "89905029EF0112631ED9DFDEB63BA26235B822022B686D59",
        "51AD7F7D9611ED7C24A84525832A2F8CFAB80F907C02533E",
        "C645E4CF66DA4B343FC0E9221B4616E8CAE1E65E50195E64",
        "38EB1AAA6CEBBE8A21EBBB9C0976D29F4089EE47ED1D1F4E",
        "EDF66F50CD0F54FB3094E3412E28177A53B1CE56D0FDE4E8",
        "11CD219A1E03532D2D4D61F1563C2AAA8A1586736FEB5CA0",
        "01D50B226A3517A3DCE79495FE1410E7AB6FEEAF8FA24BB7",
        "F981D517F259B363A945D2D19447378649E597A37641B911",
        "B36A8BB7E4018ADB5DC72B4961501F9A5AD5931F5E97A6D6",
        "D78D1E9D4682A0777A6EC0D8C2F165CAB925966650937F89",
        "2F6D9783D5BF5976DCC31C7F00B9FCD04B6C16BE92417C9B",
        "22B9F7C41FCE5A4638D6E6C61265B58D18C2D5FBBE33E9F4",
        "37B7BA6658F835D817CB114D06C197D23C47708352EAC551",
        "D8E97C4A5F14A1F595C041D0ED59C4D4631E7AB673484824",
        "AC782146178A613B3FEA97DBF2018A6C7E1EE3789BBE2A51",
        "11FD098F69CA3BE809474769C7DC6664A37AA26358A1EF08",
        "93856CBBE6404B2EF9D4240556810833C73D6D049FCA47BB",
        "C8466665EA45CE4CFD88F819D5C639777640B84D3D60C4BF",
        "9B4834F18ED69D519D497AD84204BCB9D749F122A86206F1",
        "7571A4B267EB04E445803700DB6A72242E1DE16B1677C410",
        "2A6518AF7D1C26F81852CABD90366371783BE49E94BEA42F",
        "AEBDEE389CEE275743FD1DFE10716DA734049874700D55C1",
        "8EF1808D19882CCB413F4B432918984BFE61D3419999642E",
        "26B8CC222AA5C53969D3DB6DA64743B71063AE978E1F5899",
        "2B8FA32B543ED0E1A8EED1165806602675D21D4A330AACD5",
        "7BBD8EB068F2EFB116AC6EF6FE80BFB0E8023702D17EFA6E",
        "344265DD1FEEE145A37F268EF0877581998CF323CFECECCA",
        "9B606437205BD1DB249D3566D7AEE9D289C9CFD0D57FD058",
        "C28D239C59BD76719345840E7C491748FAE7FCBC5EEA6C51",
        "BD1EFD0CFD6283ACD2A95B1DAE33ACC47A14D21AE3A74DF1",
        "B0EEE8E5A9256A73A98B641F3D29092D2F1F1B75509F5455",
        "C46B3EB0F3B3C6D61CF0E5A263D4499A91D68055B1EB4996",
        "C14215E03D57E2D109D88F48500F0D2332A819F1716D8885",
        "DD38ABA719EEB2B7B78DD4455AB2DF07A5DA8608BC8250EC",
        "1175351A36F8F2769BA8A206185C10B241189FA4D6220C83",
        "208DC327BC1BE3B55EFDEFEF89776DA5EA979CA479CC970C",
        "AD80043313C929A421495430561C49F0613C195D3578B518",
        "8384691A0DCADD919AB610D69A4C478A582525D5C48B7F17",
        "2FF93D872E9E6AE1783C0EF5B1AB9510050F0276563BA02F",
        "D3C7B2D23986E191D95B19810843B63360578024F3272DA9",
        "29F56FA57392FF312289DF4A88C718FA56D2C3357FE6D0D8",
        "175884C528D5584EF0E0AAB61660EB9684242F00F6911A24",
        "F5D5EE0BFBF2186BD6CE3C63A9E19852EFF62D39E8215068",
        "6712197F2D9E424139C93292E9B684A11579BAD5546A9F99",
        "EDAFE550B5634A040E23A008DD3B15C476907B3CD596725B",
        "230EC8B2DDCE48BB1ED8928509CE6659981DB303813C7031",
        "02371A2CA23F8781DCCBA0672C979EBF0EA8F17F4CAAB443",
        "E0EFB4CE4025CD25C760F9E822F954D6B38319E71ABED25E",
        "2030785CC6D18999182F7B6A9BCA9F72F86829F89B306C37",
        "3490EBCD433D9FDA74EAAD97469345846E190540C6D82642",
        "A9C3E5AB60F1666619A899B8F3AC2370A5BF2298B99BADBB",
        "804320365682196340806665DC55299041D3BD85728BA0F2",
        "53A2DF8B0C83C7120BE2A9608F1B5A4528BEFEC9D7970487",
        "2BCD607D529B39E1429F0C54B94ED78F826389086C7739C8",
        "0C466A6ACFA584D239367547536323A32715D0DBB5867B0E",
        "2FC3EA605A33AC26E78D8CA19F98CE7B5827E62961D89212",
        "8761107DC3785DBF710BBBEDE5FEABAB6F175A5ECFA961B3",
        "F123F30881EC794674403328E3CE7C80BC95DAC12D7B360B",
        "341C9DADB601F2781F6ABEB933B73AAD103A81E8D96F6730",
        "38E53597534CCF0E60DA817C62924453E193D61861043244",
        "3DF84CC5EDC3D732948BE841302B9AB708F5AF33DC537A31",
        "B546891818224B14E90827757DE18BABD71449E57F8FCFF1",
        "A7D6E7A48C1C14CD8DC58D7EFCD4FC8D407F15A1D4AA41D5",
        "0B178B35A97C06D9D4D2A5838AA867BFDBDB36D674AF33D0",
        "8C22DFD72E5ECBA3D0E0B54985D01223032939E7B7B33697",
        "A52E67BE70E116BDF6EB61EF225DB94DF06966203DFA2E31",
        "4AB1B7BAD46AF64C8B6203A8889CF56A079F18F688790896",
        "65D1A4BF8DBA94C9752913A4C15FCFB7F18CCF257D48DED6",
        "090CFB92322D482D9D8AAFF716F10FDB491BE0FAF50C784F",
        "94F1F66FB01D719F04D36CA30287F7E534DC31B0D91CE1FE",
        "D8689D811424A59B870F84D11BFA1D202BF57896154405B6",
        "D7F2171F5B7523C54B4D1A81BB6048C99CED1E15087A9C49",
        "94DC8F6AAAD2A07CA81191B613291EB06EEC66A1B628F9CC",
        "534D75114EB28DFE082BBA4285ED30E55CBE4864278FF182",
        "F5971C8523421B68BC3D9FCA5ADC5D2C76CD0C3797232950",
        "D274B834360952A27265C12C2B70623CDCB69C4815B8AD9E",
        "D25074898E465F024B7D5AA542575176B885998694BFF162",
        "100B09B1A2778E07F0DEE2E6DFB28D032FA35D7EBAB2E87A",
        "96FE586BD7D472FFA884C5724561D517C1126957FB190096",
        "45EE36AF320341688173D7C41A7615BCCD0A431F834EFD18",
        "F73847AEB45D714CC5756DBDEE00A9E580EF91101AC8FE64",
        "30A56E8B8CDAD753A854A1BE4B61DB04F303B6CFD0D76522",
        "1BADACF65A1F790B448DF08A100E66CDB8B404DDC7865016",
        "D0DA13AA2AFC006A97C537541B505B96CE798BDDC07B9D6D",
        "FB4170AA2DBAA3844FD8485D4325BE987E2E589B58AB3B80",
        "50A0FE8090A0AA2EA503CD40DBE894004852584FDE11E3E2",
        "F6311445087C56C3CA179EF211FD32762134EDC910D9270B",
        "A292F008A7BDF88E61FF866269A6D6F6AC9A81F706D57C27",
        "700C29CF917F3634215C58B9B3B9C147FC0AEA52C05B2841",
        "2071C5313B0EA39ECC258AC29ED6E6CA8E0511C726A528A9",
        "AC6F08712123FF72E9C04D1C5C343BC2A356DBEE9223B8E8",
        "01F46A7935579B7A7F5CDD00B5E7F1D62C37726F4216DC1D",
        "820320BBB243E30FE35395FBFAF46A5C8C0CA41E4B48A80B",
        "4B3365B4AF9E0C1AB703F297ECB82F9DB6ED44819DBC72F8",
        "DF69D9A819C4E27ED1B7D66678FDEBD8BBD1747F892D2B55",
        "C0F17FAF958767C65EBA2F68EE245205CB1BB73290AACAB6",
        "D62C3EBC661115CDE4F4BD646D745ADB7225304D2712837D",
        "37E9A837E07B12281F4740D8353DD6008A077F6EF51978B9",
        "9826470A5ABEE6EE66BB799C9A9206703174AB77AA6223A4",
        "506C60EAC24C18D955364759BD8CD522157AD658C7B1652E",
        "110923F8A4E154057211F273FDAF0F565AAD0A0962C4E08D",
        "30CE0B97A6578CE2398BF04E63F78B2CAB5DC97A140426CE",
        "3AE75A6039177B44B18B2C02EE148388F93E6EB96A989D3D",
        "0DE8D7C180C5FB4E90ECF4165EECEDE97316170B7B00D681",
        "A1BA31195FF34A411C5D9A72A84C83C7BD7C6C777FC7DA4A",
        "1D7295FE7B297D4B752159B7DD71483D53C7799FF82054E4",
        "F0210F4416BE56B157EDC9A76684D1F1653EFA6B7D06079B",
        "311229D7C5AADF9CAA0DF39E441D4E119D0B3887194B9751",
        "7E5E875547284EE4952C250DA3BB4E3BBE59086FA638CAAE",
        "890371D12AF03062698C2F4F5F2D7272DF652EE99C4233B3",
        "BD3F48F09AB50132242F762A61904E945CD3628A925A8B82",
        "6401C4DDCDD7441581AFF57D13C1198FC2347D886D319FDA",
        "2446A367AABBDEBA9EFD1F8CAA9805EC1A9B45200A90E2C1",
        "37C1C64324D78E1F7549E6169FA66D492184F3A5A524810F",
        "91A620E120AB9C4949C6D3E27A856F079F76DA00D56C3A22",
        "575C19C550408D8454650AF1739812870E371BA8F34B6861",
        "5AB6FF5B263ACFAB2013C3068C03A82979EA6DB287A3ECDD",
        "BB40E88E5DA7D4B12356124D9ED74BA5283C502FC68B5A1B",
        "CFEC678B1CD75F4249D536C9399F11C12CE9938EE8CADCFF",
        "8A26E3715E0471DD3616A9E505F4C73722BB42FB233BF641",
        "ED38E1AA4B73AF6024471252F8102E77ECBF4BC315DB1C31",
        "4D5E37A37AFC8C7DBBC25AF2C6670ED2DAFB56B5376E2550",
        "958603BDA98C29A87AEDB0C1C8F559D161EA4FCBE9EED392",
        "A7F58251627E2C4C82ED1AFADB2FFF3B3483CDC279117E1E",
        "4B003F86DA13C24E10041F934DC02EAA9E86C4200550DE8F",
        "6139AB107BCD192E8419E869F77738D2624BA81FD774828F",
        "15E286064681AB50343CDFD1E178F6DAD9071E3727997DA1",
        "95A26E99BFFBB5D0027B380688D3E5C567454F4F2F283C41",
        "45326511C3070AD878172A7DA38D17ED65D17BFFB0298058",
        "C127E412181EF4734360466A38245409E44B2B208FFF4D67",
        "4C9A55B7BC50B8D7343F1FF351F13A89CA53E8AD2F056559",
        "9B93DF18074112C26FBEB1EA277070EF4D5A1778376DC12C",
        "79CE5EFD59A9A0ADBC3661F278B3C540A0332A9E8FA30E07",
        "886F0AD49176EAF30EA422CDA7D1061AF2D62DA67C672407",
        "54C7674DC49D49E63DD7296241C3F2F0B022BCC0451400F0",
        "9DFC07C61179B9DEEA1D452D3073C2A12CB0342EC8FA25C1",
        "E9C6E911956A0D7C3958F4E0252A4DF98FAE33AFC834EA10",
        "9DB1556485B4C5C67FC532C4C6937AFA3A889FDB09B055A7",
        "5875A1A391DEDD84155F3805A81EF68AD288A9E77DEB4324",
        "5DA3FCD577895036D0AB8D6BC654C59E76C0312C81F3A374",
        "3DB3B9731E66FEF6039A2723C7CD7814F2A5F8ED20807361",
        "C784C70B8F431D8AEA3F5ADF2BA55AB4BEC9C580558CD0BD",
        "B256AA37A7DA84F3599B338E2B853B92ECBA5FDE6901B620",
        "1CDEC1D10BD749090B1F491A4FC8E2F8B150D64F3215CE8F"};

    private static final Tiger tiger = new Tiger();
    private static final String HEX = "0123456789ABCDEF";
}
