<?php

declare(strict_types=1);

/*
 * AIP-56 Human Recovery Key reference implementation.
 * Copyright (c) 2026 AKADATA LIMITED.
 * Released under the MIT License; see LICENSE.md.
 */

namespace Akadata\Aip56;

use InvalidArgumentException;
use JsonException;
use RuntimeException;

final class Aip56
{
    private const LETTERS = 'abcdefghijklmnopqrstuvwxyz';
    /* BEGIN GENERATED AIP56 PAYLOAD */
    private const WORDLIST = [
        'version' => 'AIP-56-WORDLIST-CHUNKS-1',
        'created_at' => '2026-07-18T20:10:52+00:00',
        'word_length' => 5,
        'token_width' => 7,
        'encoding' => 'base64-standard-trim-final-equals',
        'codec' => 'deflate-base64',
        'selection' => [
            'pick_per_letter' => 2,
            'candidate_count' => 52,
            'final_count' => 15,
            'case_sensitive' => true,
            'case_entropy_bits' => 75,
        ],
        'chunks' => [
            'a' => [
                'count' => 521,
                'raw_length' => 3647,
                'words' => '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',
                'checksum' => 'b612a14a1554e6f50172fca68e2e182c1c497e9a04dc97405286ef84c67357b6',
            ],
            'b' => [
                'count' => 667,
                'raw_length' => 4669,
                'words' => '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',
                'checksum' => 'e816cb5954ec2ef00016c4edd7598f518228d58c06b3ed46c39aecf55ded7138',
            ],
            'c' => [
                'count' => 700,
                'raw_length' => 4900,
                'words' => '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',
                'checksum' => '1a9a1b70a84befb60b031564da9db09ac6cdc2a1f3d4ac8da3d52a257d56296d',
            ],
            'd' => [
                'count' => 483,
                'raw_length' => 3381,
                'words' => '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',
                'checksum' => 'fdb7eb76eea6f303471145a9c70bd83d53002e1bbd6f960ab44f696ffc78d60e',
            ],
            'e' => [
                'count' => 198,
                'raw_length' => 1386,
                'words' => 'LVTLbuMwEPsly1kDu8cGaNI1UAM10EjWzbKKKvUjbtH6ka/fIWdPgiyJwyE59rbKGvviXTL+/OrdcXl76r0tMu/+yjIE++hd9cXdlsIoN4ehOzzLg9QcXrw97fH87u2fe2t/YRemZzxv5Z3dBl4xH96+ejtz58rdSz275cB0aQly5tLq7eqdH7qpFxJzIxVsbZpc3plr4+RjaSKgpQIIbnMUunbriXIyLXrAc1DKPLgUPyHvAN04OavuQLHDV8hxlpTLwqbTGlDvdCdYmTop66os5M/ADILp6gN7KPqIZZjaJz7nzTTHJ7lZ3xr0UN/eZLH15J1gmm+P6mlscSY83YOn5CsUDA5CrvGMnQmCKRVIYpjD2EHBYHsqQbpzk4uscVLp1njolTUKUTrsoMTJoIJIFw6dflwhnSrPj25IsNEWphv/iwyLBy+Y7nIPuTzYFppqrrT/lPN5PZNL/dGeYZUKCZUAtnSjJMfPGo0pwCOz0CpzjeDpR6IUech7sEakaCqU+GAKjkuTv4sBO/wT8qquSCfPN0Owy94yNnM468Ie5k5IuDhwSXMHZlWmpuY0oNzDAeruLTqKE5s2a5RICWtCiwE6D92oTcMjnxAUW15VwaVj2YwqmQRo+62OFSM0Q3oOD3JlYPhK08HbjWeIBiXoaY7QhViD+p6ybnzEAypYZDR142xiGjEI1RWYtrhCAlvdkF132bkkykMJ0NHSYoAqtconiuxnLGKO+j6ot6pS0gGKyePm8QaxxHCKfJR4v2uuoaeO9jz7828dZtj/GZDIjYa7owk4K5LKem9xZlTBQpj1nIAnBoWYR53Gmh3Zy2eLNuPOARIuOVJ3ay3CUPC/VO864QvDV8rSM1koVPxEy79Gw2DeObdRlTdJ/y/8u3FENROWIULcpGkPBcspMOw3bfqHbQ49CW7a2DaT9cwM4ufIejujUSuYWdqx/wc=',
                'checksum' => 'cc0dbdfad4be71739452379f5f3e139d04bb0538d0d843ae9dadbf46d4e14137',
            ],
            'f' => [
                'count' => 438,
                'raw_length' => 3066,
                'words' => 'PVbLbuM4EPwlS06C6LgLhHYMzCGH0BZvehhRbEojjGyt5K/fripmToJskeyuVzMMh7nMpzAcxnr3X+jjUzi92+NeHu1tycLpGnq/8i0+qr29FWu1/YW3ko+u3dvDZSH/sl2eudxd8bCt6/4Dm9WDrYvXkH/a8rHGgrg2W/y3qfs3OyhyXbG2xw2X46A4ldxzPA+/7cexwS5Fx+VOmy1ZvbV1/lKdbDO3afM3nMcC3Sac7LGMdd/YYw74cbme9/jyT8U615o/jvpyxgmDX3nCklVbnDezP/vk+GH/TfjPStLbd4ldlrnOP7jZzkry301/xSftHlWvpdVpe7a7L1QWuNnc8tiuQg9u0+SvoR9jvbNdihtqGfxNgDwadORv9fETgAgeowPnvQQ+1nJLsPQ2BL5dqj22XqrjF+BJbNanf+xtoy/HekAR8bx7BVXnHuSsZ9ARVwLiIskppuqIpmf2YARAE0sH2dixNb/ccjODQJBDGsOha/Dw94D+3B8pq+fpxVpSWeLI3oD8ISONSywJwQPcEsgPLceesTxOQL5Bm+6O3u0EEg6qrhQtyDlIUk5yc32Aekwo2GzpiOeSNTngmSRhoypthi8j1/mOMnUZkTBloVwvlRvvEF98OVM2j5BYYZ1ju4OuM5bk5AB/A5B9TBxFCnqcG5jElIUF/p70QikexlK2CFIdITd9cjOTBu2EAkFO/mQ/GqkfhJwLYkOL9n9NSdWdie5QHV8pRfldxV/ph/j940YI2ixKN4pb9yT+Jv5olsECv2nFGLv1EVoa4kbLzQ9UVjCd2ZeQohVYCzPS6E1g2POpIiuRbS4jWYnpx46WKXS6+6bViljtntgDei/uWEAePgk5AZHj7HQ4wD20553B4l8kvimhK1K7854hAFKRIdRSV3H5LTmu6SHolW/+RgRhkld6mv2ZfT/kIwGJPQ8zkTCUdnIV3THQmy5vRU45yA8weswTY8qzkf5zF2xt3P4NTrHCx0VhZQdBSx15+PfRKM8ULCuNbg4YeHrNbi+K9El5FnkCfEsIkqtY2UINDpgIRF5i7+reGHOTkv3CViysdl+ClZ+c6RwaFmySlUncPksoMsLSNaQ/0pt4S03z9IbyHiQ3zgCoHJ/ElJ8r0sY6YhGmeXAU//Bhm6F3m0eMNbk4KpoX9YBoZrcsqXhS8ZodGHxXEXdV079U2bs4IljJFnJq1xBkBgSkr1aq4xvzjJVdKg4NQQdA8N8z63SrGFNc+DFQ0FMrNxK64iI7vUDz0ATHUhoMF0XQXEovhNyvPCGqlmLWqBulkFFNr/KRZqNTFrihRg7aCAFK1opiW4q8Ex4Lf6o8TZmcVwDs8s78pK6ZWQzHL1J1Qvwy64xwOtzPoS/hBw32TZWIY4FdK5BpGZ9EpKzzHcXgZdHlx8ycVY4zlXcb4tkSunsAPHHARMC0OCrnd/QtS8KV45cmnmxIM2/T9YAjxDFwMX1pGR3k0wyY9d9dMUNFQjY8PePWJtqeotV8T+l2UbAoTd2kOqefsEJHsZdoZ91tnktesO4S9KTeIzPEacpECQxzGlrKyjSLCUjK8kxYZxU5msVYHkwviC5OSquT0m8oFAnTggWMLQkJRWyRaRA9hHyfBkPQXbHeJ6dSbph4Jm8OWqvFVG4KSSEQjmniAdYtG/OZCLd1CLkrRWQ3nXRvzd8YOrpgBUbsRqPgRjF4RYlfNdXUO0T0qTsDRwjjHpNLOU8lX5LtNZ0yID+kW0Kh+xIuQ1eGKuCxFKZQFDPFHHTtle1jGHQ12qEkBYRhxpuALguYzFQWIDcj0A8G+YlF6MaSblaTXDXrqrL+EMCp1rU8Lxd0qVuM8v8B',
                'checksum' => '837e8393ca1ceb30d91483f8a3acb47fd9b76a8a33964ba3b1c62a095333a02a',
            ],
            'g' => [
                'count' => 431,
                'raw_length' => 3017,
                'words' => 'NVbLcqs6EPwlQHEqLLMITlLlhRcBox0CV+SL8KGKh8Fff6d7lBUlocdMd0+PbFY87OXLZnlo7yebFa8cFTd3/LHZlnafMrmtNf+l9rOXlYm9YDLlJ5clPZa0WBlutjpbE2ZbPWSU2epF9j1aLknxD/fhkw96bdynG4q9Ht4waS+yocg4WS4u+7CmnB0mD74zJ7nh0Rqc6RuGOznzbs33yMO20Q0vsiTjRWVozRkrO1lpvldu72TJj4w8IsPkRaIuR3vEZNpmv/IJ9eXMxO5c0sq+rPRAyZSLzQSecq8rrEztUOMwoCT7NM3VIRZJhdtHLilHwlpM2Md/JwICIIvRYRSerhIIioNDZHLR8UNGM5bIKQ6pyPbLL5bUAo9c6yqc+Vozv9F+IsCJt4ekqRIE6O5AQhEsUjKd9xb5FU8AaUrl6OCRu8RC3r0HdLjhztw1wMVe3hGSYr3arCWNpGN1Ge7zFvflB94uSX8S3Va4lX8dQC4n3perwKAsRP3sjrKkTHhYkV7v+AyWkB8097uqZ7kCs3J3F+5reNhyhXoEM04uDU+ZwW0W9RKIiwm74rm6StDNPcEqFlvVMpqpwWLvjr/MiCu9G8gDEJT7FLMd0gBmA7Qr+5Qq0m94u+ACoXjPNPNdUUotqfIt5ebd5Z0azMhmN6Dw5MwfZMQiKZfuwqidibFQmJrYDqFkYcANUAi5nTiZTwqdrzPJaAu1VKMgr4qU+16ILi4Kk2WAt7gEWkL5Qi9bQFmg8LRSSVxhCAHK4p8E+OxoFywSUypjcgOOFh4qkuOymgZB82AZkr+eGqSWKDChv4Pm85m5h4dDnOHewAty/Sc1zfpbOuFPkq4xCreOmlgsi1ly4JkqoiQWEL0gPNXWgk6Gq4bkKkq4JvK91p+G9L3SC8KkIHvKpkicgffMDUwuT1rQH1Q24ZVVvHl1lGBBALz1RLOK5CCIMjTEbGfh5eJLLX2QSIxIk7aGHA4qm7Glh9xqJAaOlPcj1cMz/co0gfwLJ1lxsuRMW4PzialSBYEOvR1aRJ3rmcUO06E+f9VKerpbph2Bh4kvcbJTd2s/ofm+gfl/q8/7tQNjomTDCtfPbFlACZsGcscn6egokwWbImgQLjJle1HV+QPzk2tZVTvtd6Nf80wUycrbYSwn+gSxTuE9UoYEWbIFR/kaSbUMSYVZKh0+RH2yoZRSjbLhsNJiQ3T9Z5u9UfrHKG/tR7QucfYfllpsL9qWVG4pExMp0iCmjq1Okk5oLJBU6Nlh5Uxagr9SijvFnu+1tkg3EPkreU8te8DIOoIXMDHlfWTU4j3Qbp4qZmvN+xTdjd5DZ0hoZPcvbIiyQdMwaJ8UGLHOJdsP7UAnraov2nZsu3B98UFsl0LAkhBPeXbaXmg6edoOZ555Z3vhfVJq2vtV1zODx/Og1yDYw9WljJrc3WYfbMJDhByjWcEyNV8eKRHc1tjKORLzZw9YSFWQl07PFgnI5QnA7do+y6XWB8ifGbNSlSr9kGLmruSYWMw8pVia4YNdJktUkV8QiqPz/deoJ6sYlBx5EMQ3A1WQEGQROzvejfuKGNms3XCklWwisH+kn1apVrLRfk2so3K1+qBTS2cxS5zKUabGkvKVJzKt8G8mD1K+pGP6M1UcHfSxAOn/0OcZ9aOuJmSkxaWniAYHfUEwFdlQsyj5HFECNu+iGOSfiQ9IvMje2TRAKoyak5ZONDbqRCxfIDhpWzoRAlVrR+s66GEHboBRqwmol6utrSqUqUZVBVFINIheeX9D6wHW7Js0JHJUPGMBscd5qdRemxtaVnyHTI2+BGJzo/ikB2Ay3DuC7FEI8tB16tddfIcYglXzKb3Xf4/gRGvlQXJYK/qMgem0/wM=',
                'checksum' => '507f742f17ebce1bf526f305c5452da2178effbeb70e87db1021668de72aa86e',
            ],
            'h' => [
                'count' => 345,
                'raw_length' => 2415,
                'words' => 'NVbBcqM6EPwlB7Kp8AER5JBXta/KYLgJ2IqzyKxjwF7563e6Wz5RAkkz093Tgy+L1Td7X7qtyz98Wdy6w7sv69hnz7a6dAe8PPenwVe17fxpO2PX7Oyx9DhQL32Fx3EsP30Ztq7SS567jNgZJt7pbuPBAhV33FnVi88n+7a0/LZLYXk83PrKvtXrgJW7tc2EeOPpzR6nscLxmQeK355JbP082cv7wDuVtYtD9mkvt9YeJZJHSquix2FGhMB4xcYD9bFDWBSNeLcBK5cJglvH2l8UdtVKgf7/O8zYsgiz43AiSi1qr89DjtXUNjfLTOm6pw6ZhWmwiqr65RcKC1sLeOzO5o14oszAsIZ8nwOliWEtUPlqj8g7i+vIGo4DIdi4Csq61k538WQsqpTfIx4h8jKADCSmDtCBnHcdf7fosT18Kt6bCNgjJY9VcRVKS8faZ6rHsgasxdw2QOIJuFSPJFaWWURyZLjgXB3H6g92ApDS3UW4VGBXk6pEnIAMO7JZ5N2pBSB8WVx8vocKSKrLCXLx1ZJiJV+sPVReH0Xq5E9Mnto16dvLKkjl4U4aXaL4OmBnkXOnVcTVlXlakzDBU4dAYfbckndkeiHIbiFHJhti/dzyzrUHdMXGDrADJMB0jVXG4+7aNwKZd8aeIP9o1Y1DtoeE1STP0sSGoqFrA8Q4Ym9C7FDron7IcQ68s9VyKSuOal+ItgpWNGq3lgFY323zDgIGtLa1E8GShMPjm5iOXbln8rx68Q0IP/eU8JWuYdDhzuLcZgvS1bmrsp56SuM+lmwECfouAs5ik4XBIKRk+ksIAy1Bd9ZHOdEy0CCiVqnf78Aa2iXIW4dABh3xvIqHRfHoYFYY+TPppwMNYRWQlueegFBudxIHk8O3s4xlBe9VnTQYW/K3khW3pC6WVeqW4kvfJO9AP6Ns2OF86aLMY21PrxDYQ7sZ2141rGxKAzK5MA98U+zAE9xe6Evu5A9/0PYUu4GVy21oxgvF53Snm72kKCSu6vcoLSmXOpNn0SDYCOjUb5JTB/GQZsCiRxweYn/m0MjUmzPNUYXlQmnHsDCrPXfSdK495Rbl+skSNl395Q8/tZo0ZVDYygbCYIA+GY99KzwJ8r1LnXqQf7JhOWxIqsZENsnEJwlzr+aalDyKvg3wunB7mCoKs+Gmtm+p1h9chUsP4sKs2iOF4jT4bAtp5C1VCOwOJ78OiRVBZ2CVO4hdWtrJgmxgLpoIHxLKpOGWGoEgQ8IGT6tZnDrH0+6lcgOLBIjboNFqgxYjK5iCULuQt8HwsG2KvdcAG+SYPaYh5gqToEJg6VDdma4fNJbQje9SMle/SAdnKiflKyczIVjG9AOC5P87AwnzkJEgP/XgwWnm1DKykObmTu105KjDLwfhUfLfXsMmObtcY8bOKo1It6rDsz77oH/SW4+a7y/JBzllXJZULiPbOLzNZrK3fw==',
                'checksum' => 'cb16ec4dd964694308c276b150df35b461e5e03f8eed418a55f9ceb47afa9ba6',
            ],
            'i' => [
                'count' => 121,
                'raw_length' => 847,
                'words' => 'LVLRbqMwEPwlSOIqeT2plzQSSEGKbPxmG6luiCkKAdJ+/e2M72kF3tmdmR2n1dSa3ml168yH0/VoUVQR0l7KPZwuztSTNRe0+E1wurm3epUy+u2FLYOUcrTHq8ALvr2kpcJPn67OxCWkd07Rl/wmLQfZWTlzjh1xD65t7h7DbLJ6h87OyBQ18w0b9iDok5BQZUg7Z5qbO/XOWGEtw+q5xQaVnPkUQLSbvWxY/CC7yrWlsD4kAcSZokFwjzd/wteTuG7ygtNPwZEghamHZ5G2K0Z3uhC6E9bqQ9GivEaKBuBdOrNntuDa10iAWjsa+eW3nxDm8AUnRG38adHy99mSYMF94jVHT/kqEX5qNdD584/TEwFDdonaHyx1AXeFbge66mbFcrjElpkamsWfKnRmkwu21L8EiMk0ZAXA1JkLvtYclIrn30DRb8BV5FQgX34BDsvJk0c141sLmfW33yJg2daa1hm7BBxHFFFtToiS0TuMhoOm+f6vHVGUoOQ7SGgD9pHgn5WAZ+ygSCXG7bw4nBFByaMZsN4d86Uh8zAzg2MMibHJLcofV6h1kFlGD55n2moknzSrtwiKeMZgSs6y6KH6Bw==',
                'checksum' => 'afcf11c35e7a463e88a698fe0351510e70c0ad902cda1655d425a1a561324a90',
            ],
            'j' => [
                'count' => 131,
                'raw_length' => 917,
                'words' => 'NVNBcqMwEPwSRpuUdcwhOHvwIQcLpJsErooN0nqNiYu8fqd72JNKaKa7p3uI2VbDxxiLG5M5xjzVof2M2a2Rx5z4Voa2irl5hu633FbfPuVYohmlJIdO+ppH6kaWSF9xj177UCkfffsrZntLRTDtdyTRRSvr2J6kZP1Pize3SVqGw3vML18py9FckkFDRT63pAK+O28CpsoC+GQGaJkuXvqo88hRDntp2FGEM6AtSpTtC9mb1zMw0Y6JCjBzMw847C4d0PB32N4MBD58BiadEAc9tWxvz1RjaAosbg7dm9BOfVGTKffhCT1TxLSEWsDcZuSV1tl1+ADflV5PS8p4m5PZ+gB983gTIjr4lcDQ1Gq5SWi3u95gvh/6Ym96u+NWnPbZnfItOvsckIoz6mcO8MVeNbjXcwtbV4poRm2/q1ksASYzurC9MZr04mW+4q66Z2uo3zXiPcfEgllKyk3FkkbcxWrMHtYh4iMtKGAYYbJAc0z3Q5cst5V7xqEDUaoe2+PWntnSM0HRnVAGW3lmtPoOOhUMq7+J2PMAJvYTKJoR4jhRS33Sv0PjwM398VwpXVPkoA4iYjudOQpL+K+A6KZ8o6D8Aw==',
                'checksum' => 'cddb9ee4ef514128043b62c589420ff3526c6ee5063f0ce248be21f6d383e3e1',
            ],
            'k' => [
                'count' => 223,
                'raw_length' => 1561,
                'words' => 'LVVBkuIwDPwS2JstcpzDGmaq9sCBBPtmJ1MbJiakyCSQef2qW5yo2JbU6m6JaHLX2FM05ezrKdqPrj0fo+m6z2sfTTW3e7nLJpzf5eeejBzmKdY3uTOhfkTzHL2ZonFrMjsJX9L1j9yt0SJ8CjXu+nj+K3FzkB+pEIZjtMjyS+6mZi8BefVDj7JRKuDu/E8O+3BAvU0ECKlgJUu3RFRwP6kG6gsPy5+ILM9tMPqyBogi1EfU88BZrWkAiK+IgGolePfQ6hvtb+VdMYYrUk9MnWfFOUcQ8lyS8dGGnPYSXmRmKRfG5VeyiYWKhUS6KRkJr3JzAM61RTJ5gq/cpWsjh11CXDG2fCIBAP/dHI5A1oKC8trySfY1D9EYKqCs097lC4XKgd3mHy+FrFJnc0eNRI7zmzIv/RUdINlqZWp3SeZdvvqk9HiStYmAVAlc9L59Kd2AiWLhk5JN24/cknnjobR7JL78rZ7oSEj1oAvcwAqu4E+xNPYNWSIoL8bG/ANZScnyNQop+PzTwFJu2wwn9eBGv+Czi6/fSStyPrft4QYvhT0CCvjadGNzgKgbrb56EcdW9xYVqo1HWTBIslryMgW2uW2uD94BkrP+fAI9LJutdjSyAhTjyDCZM581zRDOPc1nmZMvi65lt4s2VniOxdjQREuDu7y2Z49D+EwYjPCSyEhLLWqwzHEKHePKm1pq1nmYqEOhiskc1TtYMdYeccz5arrSWSmlTbhu0h7WRBAzs1S3lq3MAT3IhNNnKmqXAwdvoZMlNUzrvuhICYA1qv6Tis2vIUn2SNcBfJtpffcduScmD8rLB7eGhNN82hGQMZyQZNQEp+hHK4piNN+dckDiRuWgvRMklu0mIGw16NjPhFSObLMUnDvdDOw9DHRIIzjNR6ELcFL5t6xXfiOZuJwTXt7VUrI/T4q6142ianLwMsgSJlry2XNL5Yuuw0VBqBxuDjL9MqKJHW31cOJLuAerRDcYds9Rae2VVo6MqrkQZ3WNWGvVq787IYk/4QLsLE4xF1mnaroN/wrEL/vdfw==',
                'checksum' => '3fcad2f6d44d7cafc7e9425f1965a92835d9a33ce53db057c2fdae85a69cd1c3',
            ],
            'l' => [
                'count' => 409,
                'raw_length' => 2863,
                'words' => 'NVZLc7M4EPxLGPKlrOMeFrOHHHyIbLjx2AoYQVIOmMW/fqe75RMFSKOZfsyoOblHm342hX92xdic3LO6bM0prNX1wx5zM302p3wtUzwG/sv3qrB/bsSSwt/qzPblc3V5s8dSXc72uFfXf+yR8M1l7YwlSc19tn1sirDXF5wQOhzk+uZqH/3Ij77vZrzdWpxuKTGXscnwb+tOfzPB0xHHljz2u8R59pHn9c2MzHT6f31zsQ15304jQlczgm01/oWF2/3GdMMTSJzcpvOSEg8fkZi0ZGgnC+ZWvrlHEws7Yd9DSCRl+mX75vp6xkP7FsKDUrDvIEAMOgudH5gEgn3wH4L5vi1Qw1phiUu1b1N9th2ZvdVMMOPDzcpzQJmFn0XOrjJ70ZhyiVew/Kc7faHM7gLef5uCkGsDYbU3xVy0r28zVHQrVSaiFP63vCCz0LIUQ2Ik8tiQj0i3CM8a9YWthcD8dwc63A0rERNIhIjEDwsLq6SYdKDYlqTMs0SeppcJah14ApagsHubIuahg8B8YEzTGZPXQcHyxFusfaipiXfKxk6YUO1K4tyDUYAZdCb+nHjwQdymNIL7JnF2whVlanswzOCAd1IVEko4ZFq5UsII3cIW0q6pblTMTzKWKeviLK8Al0zw3GQu23CUDUfakOqJRoiMrd0VpWQi9U1gPUriEh2QVqR4o//CLrEvzQV47iUFtkpZqVQnyPOVKVm1sm/F5iF555K3pauUBPLChw+sAf4baQuIyGIitJ9IeHg2kn48oSKpe8mGtJSkY4Et4OnpSGVR5b16SCaqbgLZRAuZHiqwYlJkZgsLMzZhdJ/WL8zwb+8uCR92kLXDStLoJgEiaTQ877cTElBdEUzCZ0KXItjQZDIXkZcGjSM2lhtLySVaHz/OcoeldGQLYo981ODB9bQobDFS8+TBjPClBqFeoATZe1xaQop+U8yJSs53bg/RD2Iz3JXZCx4i79Qgcmq+6EIt95fAGvPhg/vYMXuxOVSvJSD1yZUhQRMHLtOZkF/VyCRM8h4Ce13+JuQPInxRxxx4QuAkMawbAnLj7IA+oYI4iP6IIynS95EjeWWsoiZYbUqUvA0GmrKG3PKM3duCUTb7a0iRFQXLudJolLVXOi5P6ZVcTkUUvklScrgxNrHzqS9JyZiGgG7SvN3jYChnwcPtcXZoLLlBSv4l8m4oqYInkw+L/s3sE2F8zT9O0YWdFmyClaUjyKsmwlTRR/ea7tc4C+puIc6HVX036a5/cZxBbpHNQBVYYVr50Fx5F7f36D+58dlyTNxFXA99YlpcS0qYS4boI2m3jzTyehDnJtwPMYzsIXZVia5i15BsMIhIThwhFDRuCUd+JJAaL65Xx9QgyjdOexMDVropzhxq3q4xxHNTngeutFsQJlCuFmT0c+WmUZDp6pCAFSRPpz7Ur3dZOw5MtVgfvTk3aQLka4p9YmvGxMN5B901XgfV8YIVGzyaFdx45uQiWIrpNh0UJSzb+1h0vEg81GYSEuCf/7JD89rE8fkhXD7Z0llDvPf86I4y85pmKUVrY4CFeCf6wyZnaqXqOJ2gl9e1kEaP7m+o5KB5pOtPvLjYrQS3PEf3g/As6lqNBQayUYDmaORkKoxGX+Pw1g1p1L5I/0zL4Obxqbsi3Dgr3b4hyGpyLnawH87p/C4RHaza/wE=',
                'checksum' => 'b098f2d1be5e7eb3bcc4604962aa9268bdd6bd33d93c657f0dd96e54119bf029',
            ],
            'm' => [
                'count' => 502,
                'raw_length' => 3514,
                'words' => 'PVfJcqNKEPwlBLJDfMC05ImYgw5ulhvLhDWihTxC4IGvf5WZ7XdSAN21ZGVlldrC7brb0BZu69IfbeGTuvzVFnnSH9/bImz9yb75rcFP/qcuznZy7XHEbXX5Zi/X7oZ7r79vdiFPeT1MTQYrQ10k9pT0JzwtVfphJyc8lX6DsdLvdeHZFLD5UsFKGGnTPVr8wKY5cnN/xMtdNSKWhCG5a4s486mmzbUqvuxp1x/hKOClee9g0937AtefFU2P8Ff6qS7NSnitiz0DHHFh67IB31pc90vPVKYKQfhXwTPW2cDICMhLm70xafNQ+msDYy7t+TNXuOAZfBmWFkHku/aEe38bXn/q5drCe34hWH5lYijHm9A92Ld7bfmVfqxZqrVFZC5tSuauWK7N0U66z5Y1GlWqARAY5MzBJahD6Z8tcs+XDm7dTYAMjR2xbx2CcGJBPgNP88CihqlDHXIlZo6I2cRYgsJ1//qCNSIuZpO1tQtn3KvTg2hzYDloZSae7pOlyp8y9qSxMHTZGUiotqOSXkna/Ev1ezD3fKfCXRsam+sC15ltkT9qoUQP/qkyyp8zLtFmnb6TE0A3v/f4CatO3nviMgu6yJBHfxyYO6+TGmWIuPBI4S8qarzwBDVKb3WfgIRSmbsUSWfkfL6w/D8/W/DFzwipCHPDJhn4BLr9Es9IlPr4rpMId2xOalGG9KhiHVJQURR2U8+mtF65o0UJq7tWZUcPETr6S+jWxyMPvRS6YVSau57MutVsyoXZguwHAFllZ7KVSGQ1EZSUWCwIwn02KU4mUUp6cneuAI8bWp60hsXLVWVcCJa76sKuvZ0ZLupgnBhZfnIe0gXkM1EjIVE8j7CZgaCoESaRdmUZg/rIykjkN2G9stJOFcsNOlUFT35rSaKRXewTkX1tSKK04cl9FNXfLPFOOhh1yRpWelZUAERCJt11A1HKp54KrWxz9a0P0olJJ0UU91SaFzFyio1XR2VnYhsTyyWH+UKNdPtvglHnE9ikOJK74tKkl1tDQLYoFySt5UctvwqQhPCYnrH7rQPU2ujin59S9q+qRLjRmPXYh1hA0Yn6SU22pE+SmeMXdUkdTtO5/FnUJINk1EaIdJfsCddKOXTpQSVGLPeWYD3YD/kkouzErJkzxwQCYFlXSQf1ZEImfeHTVIsFVfFBWSN3154cXCVBFtKBcXJypUpsrRj13LADEiq7FYBPO9LG3LLj1o6cjzwzR2eGi+YKJmT49vdbC+j9VWTfItnFs00siGlaSIj60mOShKWTwEtGtQLkqrtd4NMfUhg05aAlgn6K2lNpUkoVk+8JFAcmcgiz3G6aJIuIMqmdHmqnL9XvQe9ujQtBp4lQUwe1azhFZpMZehYeUcTVAau4O/YcE3/ab1U8IAidnBmSiQB1fpOQafTk/7fhKZ7UrIKVcAH5wAIpGDMKCgkgD9x0wJ6fL1qbZnC+FDUMlyZqedyJmMoX5ztE9Y0lJp6TNpYp6hLEEWrKpK8NlcGUFlZeNSLFT/Q71zTNHJN7Il8JQclaEtVb/ZdwMFic2ZsmJQidtZHsBEuTy0m6MNzeiDzdrlqwZlYM6NIK8bS257BR0mHTirM27M24Ul1YMfDsrLELeLQkur/apTa2k78ov7Upz2KBpjakxKqSvYs91FatRktcRxR1nAGEwMSqllQylhBHVqYCDOw420qQmFM5nIZGWNW3tnmctdqKNkwsaTnqNgJis/EUh81ZQypCro2MHcAV1dqXKOU7HdnH+adUFg4pF++xRqVtgCN3DWWUaFKucQJpnOmCrU0QHZd0GbgbCb0wdzCSGwQRzCMngjBbNZ3mSGFtHqKbj1N01x7PojB1PpqmwGOcca8jkP4S4/wemKW2NVpZsNtAADmI7O/HniCTu1r9vJDwn5odsYsTcfdVVZlJovDQy7jMxta+xXHdlIp6FM/iuAbyL0E6KJ3H/4dB2+EP6TwDjKs791YX21DbGn4+GCdR2vextmSdBp+LW4JWTYxBrhV9XKK+1VRAspp37Vnxz9Zeunvheg7M2Mz8l+WQw38=',
                'checksum' => 'cc58eb2b069823e97d990859e4de57177a32e5d2fb3a47150de943a81fdc83a6',
            ],
            'n' => [
                'count' => 212,
                'raw_length' => 1484,
                'words' => 'NVRBkqMwDPwSY7Jb4weEZA57mEMM9g3D1iTBeKiEhCGvX3WLPbkwltTqbimOdvb1Zxytaev3OKYimp18vUIzxOyKrhziWK2h+SOXt794UpW+/og53fVl0deFXD68Ocnx8vWCuP4ocXZua8Rd4kH+pWtb4muOONyuP8pRDW3zIV8r4kb3wmV2s894cu5wpGvAEwGBADsppGt7AJbVG6CeOybTsu4t1sBiQtMBEi+rqR8BYhfQbcotA4xn9SHgSRp6tOm0UEoMsA/2nr5bALQDcaaCkNwUzBfKeh43pM5uaFE9zX4EBfyX0zke9nL524Msq/WEM7QiWdBm9cYs/Zk6uKQgBuUze8mZnTS9R06V4y0izpJ54SzUOwWPnGUg3Es8qoxgqdK4KgcyOMUjSe5BZBpVsV++OVEcVij1svQ0w8VnsDQGHEIdKlRLd1BaGfBsm09Wp2IzD/ESKHeLXhYaNyuWpSNc1cjeCSld6ch0IxaR8X+hPQSniaprRzUfyJlF/sMXrBGZTA3WP2O9V1/vlU+gXrSsZEG9LbXp2dgQYGH7HctOuv3pIaMttMI5jB4BvoE/B5V/jQamXdW0Gi4eFD6FLJa1G2fbPEwdn/ym56vB025PypjUZzAtwIsqiPvhqLmVcVb9KZ4vGdCj6bSj3TCw+PdqGae0ihxsc40UZyWk6kIrWnVISpxbWQJbYwwQLJ/sncLp3KaXVs+xFPC9hJ+09285tv4GnZWHboYtTkYNyRbqLgxyOnIwmIeiG2F2Qz7Tox1xuTnrrtVLzDspp8FIlkvsyGVCmp+dge53yi9tEufU5c2YXB68TItSXqpRzmRQXo4bFu2I9r5EA+ZvgbzcNgvT3tWkG7PQ2dRhBtfcbhxD+6RiwgTll7k90fPMYnS4VlaXJcdN9Oghjrw8YofoIFRbeNEybuVCkjUDuK7U/XmjPyXg8P4P',
                'checksum' => '3bbf9d49e08e21a2f18ee73b2102ca749a8baf2aed5d5779a47a863dbfed59a9',
            ],
            'o' => [
                'count' => 189,
                'raw_length' => 1323,
                'words' => 'PVTbbqMwEP0lsJto81ikkBZpkYpUEvsN46okmBSFXAhfv3OOq32ybDyecxucLk7N/sWp9NgOn04XnRtap21w579Ol6M9vDtddY3+dGpzbXffTtePZic7P9n9h1Pz1Oylrn5ykXKpk0PUqWL0b/JKnVj1Rw5Hp2VX3JoDrgS01fXNqM+4k29d+JJXVJm6Xe/U9Wlw06btIOWrBFfU3KOR8sEe8NhoBrlpB2DRtnPST1X3FiB8BFH+cOnuTvipVXBvvdQ9SHq+W80dqZQXss3YSI9rNqpPHiDSKEg32h1oTk6/Sj/BSdI+LkYeUxsphy4BbNX8MNDFj5BVhVuDw83aUoLeAkS1wiuqlEboHtphK9Ld+XSVGICfH2RbngyvRJr5BeW6OzotjmULGeUL1NVBuIsgpRxu5UpCYuIDJV/b/UOwRP/sZPZSXlx5xd4JvroDi0pHA7j5kzfzxaBu80Oti2M8vMRdF5VY02LbtWdRokwMvtXsjn5Y/OiRs4yC6HoBFnmsEbhqtRB18SSHLGEHCR9CVJwNwFd0E1qrb8S0PcO4BHUSN74C36XARwlsNCcb/T5Bv99E+t0WC5MFrQVuHlUCMlAZv3ClGCmW/zFSrlaTObwiUuRnB0PwgTTHGDAxFTTzqLW//cJ15JA0O+lX9cigSEdI2YMpDydEQ3dTgw55QtJlQv/qhFGcKZ3AZXpWo1MvUWRZVie2TY9xYKPk3ZUjgyvg8GRdKW5KwKqA7qqKughOaH3tWlFCMsiwWyohh18HasbJsSIWNAvQTBf9/2R9YDoccAILJ5wd8iVO6sR5qKI8MgEcWCqv63PzBvsvGDWaCpyBhuOPAm9Di/9EEYglYyZU6CGPdICpCj5IJvzCqUr571E2ibuuVXDzZCIVCw7zxF3xxADBVPheRs3gdPyxUNZg1fYf',
                'checksum' => '74b9cb6a77c05aa423398846830bc85bed6a56a4b04ec432129d93e748440a91',
            ],
            'p' => [
                'count' => 616,
                'raw_length' => 4312,
                'words' => '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',
                'checksum' => 'a34bde7449c959b39d0eaaf0c76e72ec16048fc6428836e86c2d655996a1661d',
            ],
            'q' => [
                'count' => 63,
                'raw_length' => 441,
                'words' => 'PVG7DsIwDPwllIIEH1Bahg4M4KRbYxBGJCgSAtS/Jz4D06nO+R4u+2PhfmB/fJ26g0FbQSa/Y33LOizxvlcYc6iQRlJ4TV6HwvmhELsF9pqbUmL3xgKkZaI3mO6ib3wHhd2aaXub/ABN84s9jL7r3Kv79WeEEOlEiDR+hw5iZ6jM6kCbOVILFYSvcZf6Zf0KN1DhvETO3KJKpdD2GaompVXwltrBPYBSgntAxRrZJcq/uzJFKZSu0S5op0vmJ9GO/CtmmtaonrymTrOdR8bGHLCQAsKL9RP7D8LN8AE=',
                'checksum' => '58e56f99b53d050cc64da9bde220688f8251ad5f040e3f4972d04a762eabd7ec',
            ],
            'r' => [
                'count' => 434,
                'raw_length' => 3038,
                'words' => 'PVZNd6M4EPxLGNbzouMcIk8OPswhwnADPC8YCcaJjb3xr9+uKnlPeqCv7qrqag2zn/ryn2EOS1vfhyVc29q+fNke9vbzdDz8tuE8VDakqePclhv81FW2xK9N+T7M7oG5JRRcksbj7tW+zv082Pairz5sydj+sg2u0NHcYEf3C07ZtjUuunYHWzmmBkv81B7eGAvm0qlhLPe2tjOdfoaZG8Kp49d3wyCu/SFiGHYvSKyvXznsLE5/RmRzKhvLdvaxq6PNpR6R+R9C4pEvYoC4CNnyzNmfuC9cuhqpnHrg4tcWF/miw9HuRlzc5sgz/x5xgyt0dBKQl3wf8wtTU+Hox0AghXyaNXduS2Q0t/M7ohZ0sf+FqC3HCKxx2BJOzC+M/a4AVdi+hLVFLEbcL2aEcA2XZkacY1N+IGoNkUD6RbBuGAuufSEu1RvTRJxB/LkLB78hyD4TkFqwmS48xTJinJeGHMUjBreIVMP6hcEv2Fdxg7vn/HTDScM4UCHfioxRg1sgmB7SoIkois0Xm2NkS3jqsy1flRgysjlEFltifSNHllFdkNsZ4T64JEwUiq+I9ZhaCro44sviZH6FhtP/ehGpTGXTz2C6+MPIVu7z26amWpv6DcG3Uuuwa4QSllwRJ3OwJW7bsCinjtqV3MKdKwEWw2UOaW15Q5TOpB6I/UNVDCArLoE0qHlWY8jVv0qtnyq8h8R36yD2dOugF/+lnyXgWUxnMwDR7V76BCDYcFfwUrk5CumfGhJujFHsgm4Rxd+Ah4dFih2Ej+kIVtxZp8hYzDXI31UZ3XjYuOmBJzSIlRUzchuKz2TDqMeG0E00qxS5crxxX5gGVIevuDJFqtzd5CESGG5ncUl1PxoVl9RzbRhZpMlZDjSdsd3hvsiysLql29xJY/giAW7TlsLl8JNykxfIcKX5MfW89sTt41ZfsyC4UJiwizcJbE/eKb7lWJMOqg7S2DMVfj26HX+yws3WCNbjWXHcLj9D0q+UYg3Coy66dtTnStcIObGzDltZVV7VkWSq5mCL5EazKp4ORl+a6VlJVpIWeUhBW4PPS0t04X+ZUYjCejxSbpP2UZGQdy0z5sqJPCRpCdoljXSiNMkgliaTSk9+WgI2YI5BGCB7OiZdn0Aa8nK+St0we9baHgZ2PNwXShGgokyziuQysBqvHQsou5vpDENszbqMYppOODfZnnZqDATy+0gkCkLgVGPGilxRXe2qWNgRkBEZK+CK8Hnk4KRyM1yKSM0t2MSLVPCbbipvVRUXNH8TOy2ooIStuSEVSPhdlsefBBKwQhMZM7UXt0GlLiAVGx5SXSVuq3yYeo6Z3E8ITJYu6NxJz4olxwL1oP5QOTDxKKz3guCNHY9NWGIPshnoM6qvMDF5nRTpRRykGFWwiCy3kE/Z9trl1wVd6qqmqEZklk5L+FbuZwll7Xi0nlRuJNN4E134k1hnq7SKA4I6zMeGOVxyR5ezr3Iie5wMlBu6mlPTd6vMUQ8sv+RnhdSzaKUM1+Cpc63c9Xb7UCuIrHA6StU8c49ysFcZCxrRqh6nsg+VAIm69ktSTDL4Uq+nQi+du0r7rmZqEKBPZ9O5DXyVnFhxhtKidlZlct6I7pxV984HAXSGxgCqbrn/CZ6/bK0h/mFpJ/pE0tFJVpnyy1F0OOP2Qu9hD1BxeUVmZU9rHoe50Gttr3rAfVvJ21orol7Z3Mw86LSrbjg/XYpfqzZ8dvXAJbwhSaZFJ3tiGeKZRqF0pdo1iVNIKWYlE0931XtXrwsDktX4pRpDtv8B',
                'checksum' => 'ed730847ba9e6636331717b53cdd8f9af450514101c327b3b0614f46cb655504',
            ],
            's' => [
                'count' => 1091,
                'raw_length' => 7637,
                'words' => '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',
                'checksum' => 'bd8a6e07e749ba4ddd402c97e18d25cd6c17c985eab9dcd65dde7a8a41922869',
            ],
            't' => [
                'count' => 557,
                'raw_length' => 3899,
                'words' => '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',
                'checksum' => '890f788a94f0e0e6cce00ed876ed66e6e7982721d0a1c8a0fabae55c62b7be19',
            ],
            'u' => [
                'count' => 119,
                'raw_length' => 833,
                'words' => 'NVPbiuMwDP2leLJd5nUCQzqFBloolv1mx8s490BSkvbrV0dun0RsnYuOnKAPczh2QR8mn1+4tIHOgapoP278NViNw8zpjcvD6TrQta8HBqjZ6CXQaUQLnXo/fPNhY7mTiszST9Ah+hLUT0tgaXz+y2W2Y8cssy9v3Pm6yx0Xqu5Wf6PFf/yBF593SR1eNqdxuBjC4d1SzWV1xJwqes2c1SSycTHojKoeGaceRkM21kMWyCpfQuHpMfSe1YPoheM5+URnZqQsafbNYuhTI5wHBsFLLneKJwJuEBNst8Td5BBIEf/xKJyL02d0QoiK7RWWQZ7XTuxyZijMiSTUmuw+HH2ldVzEGWTVlpL4m+6eksTee8lsctI5G1ncInle0x4OrRHABBxVsx8wUW/LT8llRJ4sC7hYIpsMIhB0Pt07CY5gb4Vzvxs6C/wouNTSGMCLLuXSOolgFM6CX8hFIhBLq3lv85ct9fXIr+4UAxJcY40ZWEGmbUFGFW/zKwllcBb0Dw7F574lshzvE9sEyx69qL+EmmRwtfLOFIYWZ5Cd07Qj/gD+8sMNXt4mxC5nXSc4Spcy471f/gM=',
                'checksum' => '500a738522fa67eeaf5a499767863fca95822c0dc93a9f440443dfef6d801ebe',
            ],
            'v' => [
                'count' => 170,
                'raw_length' => 1190,
                'words' => 'NVTBspswDPwlApk39QfEoZ3JIYeYwM3Gb5oS4ckrOBS+vtKKd9LYeKXVrkQczdTdL3G0S9dc40hbGE8cpnB+xtEVbfmbwxFP3BrHm4S+vOnlzziaAoGeXfODL18hCS4BYJJvbnrJJ1rbZuFCfz2H9Osd7z1ffniGJwZUwAFAWzwzCfcINV9S0eIyK3ztGiRDPRpaVP+DejQppUoprUri0AldeSLJnp+NpM6xvoCZhH/vrhL4Ayc7hUrgbz0dIIE9hBrytKoEcrrsmyPqiXR27gVApZeTGVTWKTYqllyKdKIS9SKImZREjtpfqEAX9czTlydREN/4pQhij3ubQU5maiFdEUUlO8EVyp+iklQQPaeu1kLnG7iIfzZ/c4HTK+g6ldyynsB5iMysjyI5cIZPnNq8WhT6UJUKZOEKEtzWg9nQNuLD7O9X9W9REsJzxYBZbYzmvYIXV+ymc8aaFeKtKviFCnaGPOxDUrowJysgtZKFMnAuwxxboAcupDkxKOYVRAkzf88uZn7QwKaeYqJXGGUwV+CoVMMJrEXPK0YDYq3+LqOhC0QLcjodU55W8Y8ogvW+KxSkTVIDSMlTocrn7gw7Yn1T3FOF5F1xu7prX12xAcAlD6cztsMufl9fuJL8Xkib7nSu5QkvXigLyYLGZHYXEFQ4HGMFMclJk80w1S442SFqaqjr1lYm2W7w1ukC0ab7kFSJcl+ETlLzS5lWt7f5CONV/yEXzNld4fsPSfVkuv8B',
                'checksum' => '0bb0b28b23728fb397fb3197b28a89056479fca43ec3d87a11a2007610b1463b',
            ],
            'w' => [
                'count' => 304,
                'raw_length' => 2128,
                'words' => 'NVVNU6NAFPxLCGrJ0YOTuFV7yMFJ4BYg5SgDUhJwya/f193j6dUkM++ju1/T5b6v87cuj323e+9yt3X7viv+rDyFqdnNOtmVcjkXfy1cqxFhrfcIW1sc7MqUQjO0uNkML5ZsbnDFbS1vrpcRqaeOp+/uZCGE7vRs1T+Veq6R2soi+KkdDjqxJaW+1sd7e7DVeO6Wxtq1oJPexdjs7J2znHgXq+PMPi1L7j/q0yvKMlkcKyQLa5NX9uB2RrJ4Y7vxhzddrvBdscJWHw+sxzCxXUtNBLd0k/9Fa4mdoYk8DjzFuc5f+F+hCkdg9sB3pXhwX03+ZGFUnyt7sQaJUt8U1rUPhDXOBNJPdf7O1GypJxIxq/CjPR/x49jkGDO2wxtn5ygjH5Qbszi1WwZCZw2ilzC1+cwwYrBFxC2aITtDEz6K99DuD4IOWWayYv+JftazQpIUHhhYLRRSFr9gASVjGjd9wloiKleRmpEc9y9BTvEZOZxBD3xo8Z/rz3x+Lzp6BZUNJo0M9Si3EKklb/y9U5hU+ZWa8EI39rxiTfC0VDmHxgbYA1b3mtZ4RyG/EHnbDvZCsRf+/nx8kZagSInPyAHT5UbIg9YCGwfkbwyYgYUq8BCVOkrs5dAdf/CgHipxxB1ryXuQbKKqm66RbBB/1wsnkjBdan5Q8xGrZosAJGxziJk1gQdoPgmFN0mAz/g85urzgSfAys4u4xdO1elAfYojTRsvJ6ErE2gxgw22/yJ03AfKzZog/S7JdG52NBbZhVkQ8SQ8fpFPTKlBUTxRmBaGH7wjY7ZOxTP9hcoSBPFK7YY7rpqxAqr8Jgjmevck3qHrWbMLT/fwK2FKcU1bRSVHGSDUmrxALYEj+ARg3Zgz3rS339Su/+CPkBROs/QZuEB+lsCC7Hel90DXs2bQxhGzTB5invxGKSKY3YP3UsaCleklRUr/srsX4Zgok7wjcTFHoWw+KzJ9Rwn7RU0oZxwVHjlYmH4taJA5KllCgh5SJiDlNubXtNHlwnZv5x312UETToWitGsOxu0w+32jkdGQBlXoKT6XVXRMGQS+Mq9o8AwxuEyrFps9mLZRDtIgICArRZrd9Ml2k9s80ppj1lEoE0M0Op5kEKIxiYEVJEwnV4ya1vYBDeLzIhdmuOpruGow+5JgEXJ5z10yCO20qeBFm6PvA3TtA7mNtzQfkXdqHsp6VU59Ign5TV6wUZG2lCN9ouUHU+YBOjDt0ki0NEcM1msi7qbm69Onx/z6Pw==',
                'checksum' => '98ac0ae4ea2fd8f5c6afe652466d9814a02bffc475603b7c7ee561e24bc7270e',
            ],
            'x' => [
                'count' => 12,
                'raw_length' => 84,
                'words' => 'S3UPq0yJ8E31yCmOCjdIdQ8rTTIyAfFSw8tT3S0zknJdgYKZUeG+ILnEcBCvMjEcpKEqxd0VpDIyHKwhyagcIpgNAA==',
                'checksum' => '971bf398f0f97f4e9bd1d1f44ab9f4120c9742ff5638195388a3a130c9410079',
            ],
            'y' => [
                'count' => 85,
                'raw_length' => 595,
                'words' => 'PVHLbsIwEPwlElMJPqAJHKjEoX7dbBM1kIRWSVAUvr4za9rTar2z81g3Rj8u9Xtj9vdgT42pilif0a2e3X4KqsOjincUPcUDIatn0bdw4GyTBqxXVyeQmyu/0C1JZmNUCSyjN+CsMCNyieVEFlfuMFOZ8+EVSt9T3f5RK9nTUwLE6swJn4adkFk9ObOVBfrUm5wBdgkZ5XFfXGpY6kdJpNs0bPmYyk8g58zZebOgXN2ww94cLdW7YDY0GAyQenWMySgL7QYlJgIzgFPxZkUckqiL3TmaHUOHwzmHpuxPHCS7t8ecAc50kY+80jXWmZYG79muPK7OTDk7WKrvSNlqDLynfv5/lax7MT97QV6z6y7WyNAvgoQlMb9e5Bvb8NKTu0gwCDlBvrFY3YozzMxJTmBf5diYD3wA8z2TqLdY+AU=',
                'checksum' => '89782208ab86f512c0e8efe6e9ee9402160514f935293ed8d72599a9a1d831a5',
            ],
            'z' => [
                'count' => 53,
                'raw_length' => 371,
                'words' => 'NY9BcsIwDEWvlIbCkAPUgUUWLGxj7RzHQzKxGAZIUvf0leR2pdHXk/5XRJXh3kU0C7THiN/rcJojNouzW0T1dNcLdSPYL+oeATXP/K6Ld3PwtqJu9ZaQROJM4hZaIs0EtmPRkShFOrBnWsheTr+93NyC+BVbM/anQvKCmYYrlebtkK8U0vyUgDtvtbgz2SwgZPpPbW8iSrJqaP/2CFEz8Hp6Bn66yaHWErA+FlueTcBPp+zkP7qpJTU7qL23nyKK39oXEVrNcQPy77nnSOoATJpKyPRyNUUaPyLefgE=',
                'checksum' => 'eef42c4656e353ffbaa62cf320e4fec299d5ce55f455c57ab60fb1f8b8b791d6',
            ],
        ],
        'total_words' => 9074,
        'checksum' => '5cc1bcbebbd28f9278e1e887e031e0db982cfd2e0092b5f5ce5cacdcb1875ab5',
    ];
    private const WORDLIST_SIGNATURE_BASE64 = 'iQIzBAABCgAdFiEEeRWwgx3yC6/0IY80fYjFs3TmXZAFAmpb5gcACgkQfYjFs3TmXZCUVg//by7oszsa+28N913FadvzUtCSSq83MWM0yi6EnH64wNh4z5z4G+5M3LfKCcrCi7At9P6bXtbIKTdQ1hWA+h3+4Bn8RbCcTtlH4YEvIUWo2I6fnR/UI1sbimI54UvjSDwk9LyXKIrkopLoeU024ifQqjfDLHIzKLVtt7x3QWT7+OWAb4XiIztby10i4F5v8EQ2xyDg89I3lrTzJSK4ktZI5gmwfx89KY1ualfA13S4rP8GuTaiKk8dz6oTQUzCSjSCK2D1T2w7N5MD3hvHnSuomSDFMsvXyl3qrBF2RarKzaUC318P3ujsC5AkRL31YkWPyryWAzdByIT0KJ2Js6JCYAQo/827qcorK5MtppJw8oCvBgnMUdycJBSdAndwZ+fJtR421Nb2LTSRiPEyU5DR47hKVFSMHYetfd6XiQpbCQvYJgDcPW7J9UXxRU+9/ifgV3+QTQh4Q5WWaPtEKYD9KAoLmg+CPK4VwAYA7i/zzcAsDIQJuYi/VkzB/v7dpGqgDdgJyIYC6oCOBxdJX357WOE+yf7otlMpkQaHlKWcBa5jwjoJV2jc0vHlXrS8hRbnl/l0Fm05B/ViBSSonWKVGsMRc+aOfYRnKFL3QSWeFJa9HZbgwjQ/tGI368vFnSYGWqQe8oG3Q0jvE8LXdznR3nA7DtnXFyFjazsccPMekzo=';
    private const CANONICAL_JSON_SHA256 = 'ea0be8d452c422f154358b386c0c5bfc1f4e8e0670f9cd4ddf1a662cb3c96ec8';
    /* END GENERATED AIP56 PAYLOAD */

    private array $wordlist;

    private array $decodedChunks = [];

    private function __construct(array $wordlist)
    {
        $this->wordlist = $wordlist;
        $this->validate();
    }

    public static function selfContained(): self
    {
        $signature = base64_decode(self::WORDLIST_SIGNATURE_BASE64, true);
        if ($signature === false || $signature === '') {
            throw new RuntimeException('Invalid embedded AIP-56 signature');
        }

        $canonicalJson = self::canonicalJson(self::WORDLIST);
        if (!hash_equals(self::CANONICAL_JSON_SHA256, hash('sha256', $canonicalJson))) {
            throw new RuntimeException('AIP-56 canonical JSON reconstruction mismatch');
        }

        return self::fromArray(self::WORDLIST);
    }

    public static function fromArray(array $wordlist): self
    {
        return new self(self::normalizeWordlist($wordlist));
    }

    public static function fromJson(string $json): self
    {
        try {
            $wordlist = json_decode($json, true, 512, JSON_THROW_ON_ERROR);
        } catch (JsonException $exception) {
            throw new InvalidArgumentException(
                'Invalid AIP-56 wordlist JSON',
                0,
                $exception
            );
        }

        if (!is_array($wordlist)) {
            throw new InvalidArgumentException('Invalid AIP-56 wordlist JSON structure');
        }

        return self::fromArray($wordlist);
    }

    public static function fromFile(string $wordlistPath): self
    {
        if ($wordlistPath === '') {
            throw new InvalidArgumentException('The AIP-56 wordlist path cannot be empty');
        }

        $json = @file_get_contents($wordlistPath);

        if ($json === false) {
            throw new RuntimeException("Unable to read AIP-56 wordlist: {$wordlistPath}");
        }

        return self::fromJson($json);
    }

    public function validate(): void
    {
        if (($this->wordlist['version'] ?? null) !== 'AIP-56-WORDLIST-CHUNKS-1') {
            throw new RuntimeException('Invalid AIP-56 wordlist version');
        }

        if (($this->wordlist['word_length'] ?? null) !== 5) {
            throw new RuntimeException('Invalid AIP-56 word length');
        }

        if (($this->wordlist['token_width'] ?? null) !== 7) {
            throw new RuntimeException('Invalid AIP-56 token width');
        }

        if (($this->wordlist['encoding'] ?? null) !== 'base64-standard-trim-final-equals') {
            throw new RuntimeException('Invalid AIP-56 token encoding');
        }

        if (($this->wordlist['codec'] ?? null) !== 'deflate-base64') {
            throw new RuntimeException('Invalid AIP-56 wordlist codec');
        }

        $this->validateSelection();
        $chunks = $this->wordlist['chunks'] ?? null;

        if (!is_array($chunks) || count($chunks) !== 26) {
            throw new RuntimeException('Invalid AIP-56 chunks structure');
        }

        $decodedChunks = [];
        $globalMaterial = '';
        $totalWords = 0;

        foreach (str_split(self::LETTERS) as $letter) {
            $entry = $chunks[$letter] ?? null;

            if (!is_array($entry)) {
                throw new RuntimeException("Missing AIP-56 chunk for {$letter}");
            }

            $decodedChunks[$letter] = $this->validateChunk($letter, $entry);
            $count = $entry['count'];
            $checksum = $entry['checksum'];
            $totalWords += $count;
            $globalMaterial .= "{$letter}:{$count}:{$checksum}\n";
        }

        if (($this->wordlist['total_words'] ?? null) !== $totalWords) {
            throw new RuntimeException('AIP-56 total word count mismatch');
        }

        $expectedGlobalChecksum = $this->wordlist['checksum'] ?? null;
        $actualGlobalChecksum = hash('sha256', $globalMaterial);

        if (!is_string($expectedGlobalChecksum)
            || !preg_match('/^[a-f0-9]{64}$/', $expectedGlobalChecksum)
            || !hash_equals($expectedGlobalChecksum, $actualGlobalChecksum)) {
            throw new RuntimeException('AIP-56 global checksum mismatch');
        }

        $this->decodedChunks = $decodedChunks;
    }

    public function generate(): string
    {
        $pool = [];

        foreach (str_split(self::LETTERS) as $letter) {
            foreach ($this->pickDistinctWords($this->decodedChunks[$letter]) as $word) {
                $pool[] = $word;
            }
        }

        if (count($pool) !== 52) {
            throw new RuntimeException('Invalid AIP-56 candidate pool');
        }

        $pool = $this->secureShuffle($pool);
        $selected = array_slice($pool, 0, 15);
        $mixedCaseWords = [];

        foreach ($selected as $word) {
            $mixedCaseWords[] = $this->randomCaseWord($word);
        }

        return implode(' ', $mixedCaseWords);
    }

    public function wordCount(): int
    {
        return $this->wordlist['total_words'];
    }

    public function chunkCount(): int
    {
        return count($this->decodedChunks);
    }

    private function validateSelection(): void
    {
        $selection = $this->wordlist['selection'] ?? null;

        if (!is_array($selection)
            || count($selection) !== 5
            || ($selection['pick_per_letter'] ?? null) !== 2
            || ($selection['candidate_count'] ?? null) !== 52
            || ($selection['final_count'] ?? null) !== 15
            || ($selection['case_sensitive'] ?? null) !== true
            || ($selection['case_entropy_bits'] ?? null) !== 75) {
            throw new RuntimeException('Invalid AIP-56 selection parameters');
        }
    }

    private function validateChunk(string $letter, array $entry): array
    {
        $count = $entry['count'] ?? null;
        $rawLength = $entry['raw_length'] ?? null;
        $encodedWords = $entry['words'] ?? null;
        $checksum = $entry['checksum'] ?? null;

        if (!is_int($count) || $count < 2
            || !is_int($rawLength) || $rawLength < 1
            || !is_string($encodedWords)
            || !is_string($checksum)
            || !preg_match('/^[a-f0-9]{64}$/', $checksum)) {
            throw new RuntimeException("Invalid AIP-56 chunk metadata for {$letter}");
        }

        $compressed = base64_decode($encodedWords, true);

        if ($compressed === false) {
            throw new RuntimeException("Invalid compressed AIP-56 chunk for {$letter}");
        }

        $tokenStream = @gzinflate($compressed);

        if ($tokenStream === false) {
            throw new RuntimeException("Failed to decompress AIP-56 chunk {$letter}");
        }

        if (strlen($tokenStream) !== $rawLength) {
            throw new RuntimeException("AIP-56 raw length mismatch for {$letter}");
        }

        if (strlen($tokenStream) % 7 !== 0 || intdiv(strlen($tokenStream), 7) !== $count) {
            throw new RuntimeException("AIP-56 count mismatch for {$letter}");
        }

        if (!hash_equals($checksum, hash('sha256', $tokenStream))) {
            throw new RuntimeException("AIP-56 checksum mismatch for {$letter}");
        }

        $words = [];

        for ($offset = 0; $offset < strlen($tokenStream); $offset += 7) {
            $token = substr($tokenStream, $offset, 7);
            $word = base64_decode($token . '=', true);

            if ($word === false || !preg_match('/^[a-z]{5}$/', $word)) {
                throw new RuntimeException("Invalid decoded word in chunk {$letter}");
            }

            $words[] = $word;
        }

        return $words;
    }

    private function pickDistinctWords(array $words): array
    {
        $first = random_int(0, count($words) - 1);

        do {
            $second = random_int(0, count($words) - 1);
        } while ($second === $first);

        return [$words[$first], $words[$second]];
    }

    private function secureShuffle(array $items): array
    {
        for ($index = count($items) - 1; $index > 0; $index--) {
            $other = random_int(0, $index);

            [$items[$index], $items[$other]] = [$items[$other], $items[$index]];
        }

        return $items;
    }

    private function randomCaseWord(string $word): string
    {
        $mixed = '';

        for ($index = 0; $index < 5; $index++) {
            $mixed .= random_int(0, 1) === 1 ? strtoupper($word[$index]) : $word[$index];
        }

        return $mixed;
    }

    private static function canonicalJson(array $wordlist): string
    {
        $codec = $wordlist['codec'] ?? null;
        if ($codec !== 'deflate-base64') {
            throw new RuntimeException('Invalid AIP-56 wordlist codec');
        }

        $canonical = $wordlist;
        unset($canonical['codec']);

        foreach (str_split(self::LETTERS) as $letter) {
            $entry = $wordlist['chunks'][$letter] ?? null;
            if (!is_array($entry)) {
                throw new RuntimeException("Missing AIP-56 chunk for {$letter}");
            }

            $canonical['chunks'][$letter] = [
                'count' => $entry['count'] ?? null,
                'codec' => $codec,
                'raw_length' => $entry['raw_length'] ?? null,
                'words' => $entry['words'] ?? null,
                'checksum' => $entry['checksum'] ?? null,
            ];
        }

        return json_encode(
            $canonical,
            JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_THROW_ON_ERROR
        ) . "\n";
    }

    private static function normalizeWordlist(array $wordlist): array
    {
        if (isset($wordlist['codec'])) {
            return $wordlist;
        }

        $chunks = $wordlist['chunks'] ?? null;
        if (!is_array($chunks)) {
            return $wordlist;
        }

        foreach (str_split(self::LETTERS) as $letter) {
            $entry = $chunks[$letter] ?? null;
            if (!is_array($entry) || ($entry['codec'] ?? null) !== 'deflate-base64') {
                return $wordlist;
            }
            unset($entry['codec']);
            $chunks[$letter] = $entry;
        }

        $wordlist['codec'] = 'deflate-base64';
        $wordlist['chunks'] = $chunks;

        return $wordlist;
    }
}
