diff -r 9fec29d2ead2 -r 821cfbe8efcc mozilla-bmo1491289.patch --- a/mozilla-bmo1491289.patch Tue Dec 11 08:48:38 2018 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24896 +0,0 @@ -diff --git a/third_party/prio/LICENSE b/third_party/prio/LICENSE -deleted file mode 100644 ---- a/third_party/prio/LICENSE -+++ /dev/null -@@ -1,373 +0,0 @@ --Mozilla Public License Version 2.0 --================================== -- --1. Definitions ---------------- -- --1.1. "Contributor" -- means each individual or legal entity that creates, contributes to -- the creation of, or owns Covered Software. -- --1.2. "Contributor Version" -- means the combination of the Contributions of others (if any) used -- by a Contributor and that particular Contributor's Contribution. -- --1.3. "Contribution" -- means Covered Software of a particular Contributor. -- --1.4. "Covered Software" -- means Source Code Form to which the initial Contributor has attached -- the notice in Exhibit A, the Executable Form of such Source Code -- Form, and Modifications of such Source Code Form, in each case -- including portions thereof. -- --1.5. "Incompatible With Secondary Licenses" -- means -- -- (a) that the initial Contributor has attached the notice described -- in Exhibit B to the Covered Software; or -- -- (b) that the Covered Software was made available under the terms of -- version 1.1 or earlier of the License, but not also under the -- terms of a Secondary License. -- --1.6. "Executable Form" -- means any form of the work other than Source Code Form. -- --1.7. "Larger Work" -- means a work that combines Covered Software with other material, in -- a separate file or files, that is not Covered Software. -- --1.8. "License" -- means this document. -- --1.9. "Licensable" -- means having the right to grant, to the maximum extent possible, -- whether at the time of the initial grant or subsequently, any and -- all of the rights conveyed by this License. -- --1.10. "Modifications" -- means any of the following: -- -- (a) any file in Source Code Form that results from an addition to, -- deletion from, or modification of the contents of Covered -- Software; or -- -- (b) any new file in Source Code Form that contains any Covered -- Software. -- --1.11. "Patent Claims" of a Contributor -- means any patent claim(s), including without limitation, method, -- process, and apparatus claims, in any patent Licensable by such -- Contributor that would be infringed, but for the grant of the -- License, by the making, using, selling, offering for sale, having -- made, import, or transfer of either its Contributions or its -- Contributor Version. -- --1.12. "Secondary License" -- means either the GNU General Public License, Version 2.0, the GNU -- Lesser General Public License, Version 2.1, the GNU Affero General -- Public License, Version 3.0, or any later versions of those -- licenses. -- --1.13. "Source Code Form" -- means the form of the work preferred for making modifications. -- --1.14. "You" (or "Your") -- means an individual or a legal entity exercising rights under this -- License. For legal entities, "You" includes any entity that -- controls, is controlled by, or is under common control with You. For -- purposes of this definition, "control" means (a) the power, direct -- or indirect, to cause the direction or management of such entity, -- whether by contract or otherwise, or (b) ownership of more than -- fifty percent (50%) of the outstanding shares or beneficial -- ownership of such entity. -- --2. License Grants and Conditions ---------------------------------- -- --2.1. Grants -- --Each Contributor hereby grants You a world-wide, royalty-free, --non-exclusive license: -- --(a) under intellectual property rights (other than patent or trademark) -- Licensable by such Contributor to use, reproduce, make available, -- modify, display, perform, distribute, and otherwise exploit its -- Contributions, either on an unmodified basis, with Modifications, or -- as part of a Larger Work; and -- --(b) under Patent Claims of such Contributor to make, use, sell, offer -- for sale, have made, import, and otherwise transfer either its -- Contributions or its Contributor Version. -- --2.2. Effective Date -- --The licenses granted in Section 2.1 with respect to any Contribution --become effective for each Contribution on the date the Contributor first --distributes such Contribution. -- --2.3. Limitations on Grant Scope -- --The licenses granted in this Section 2 are the only rights granted under --this License. No additional rights or licenses will be implied from the --distribution or licensing of Covered Software under this License. --Notwithstanding Section 2.1(b) above, no patent license is granted by a --Contributor: -- --(a) for any code that a Contributor has removed from Covered Software; -- or -- --(b) for infringements caused by: (i) Your and any other third party's -- modifications of Covered Software, or (ii) the combination of its -- Contributions with other software (except as part of its Contributor -- Version); or -- --(c) under Patent Claims infringed by Covered Software in the absence of -- its Contributions. -- --This License does not grant any rights in the trademarks, service marks, --or logos of any Contributor (except as may be necessary to comply with --the notice requirements in Section 3.4). -- --2.4. Subsequent Licenses -- --No Contributor makes additional grants as a result of Your choice to --distribute the Covered Software under a subsequent version of this --License (see Section 10.2) or under the terms of a Secondary License (if --permitted under the terms of Section 3.3). -- --2.5. Representation -- --Each Contributor represents that the Contributor believes its --Contributions are its original creation(s) or it has sufficient rights --to grant the rights to its Contributions conveyed by this License. -- --2.6. Fair Use -- --This License is not intended to limit any rights You have under --applicable copyright doctrines of fair use, fair dealing, or other --equivalents. -- --2.7. Conditions -- --Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted --in Section 2.1. -- --3. Responsibilities --------------------- -- --3.1. Distribution of Source Form -- --All distribution of Covered Software in Source Code Form, including any --Modifications that You create or to which You contribute, must be under --the terms of this License. You must inform recipients that the Source --Code Form of the Covered Software is governed by the terms of this --License, and how they can obtain a copy of this License. You may not --attempt to alter or restrict the recipients' rights in the Source Code --Form. -- --3.2. Distribution of Executable Form -- --If You distribute Covered Software in Executable Form then: -- --(a) such Covered Software must also be made available in Source Code -- Form, as described in Section 3.1, and You must inform recipients of -- the Executable Form how they can obtain a copy of such Source Code -- Form by reasonable means in a timely manner, at a charge no more -- than the cost of distribution to the recipient; and -- --(b) You may distribute such Executable Form under the terms of this -- License, or sublicense it under different terms, provided that the -- license for the Executable Form does not attempt to limit or alter -- the recipients' rights in the Source Code Form under this License. -- --3.3. Distribution of a Larger Work -- --You may create and distribute a Larger Work under terms of Your choice, --provided that You also comply with the requirements of this License for --the Covered Software. If the Larger Work is a combination of Covered --Software with a work governed by one or more Secondary Licenses, and the --Covered Software is not Incompatible With Secondary Licenses, this --License permits You to additionally distribute such Covered Software --under the terms of such Secondary License(s), so that the recipient of --the Larger Work may, at their option, further distribute the Covered --Software under the terms of either this License or such Secondary --License(s). -- --3.4. Notices -- --You may not remove or alter the substance of any license notices --(including copyright notices, patent notices, disclaimers of warranty, --or limitations of liability) contained within the Source Code Form of --the Covered Software, except that You may alter any license notices to --the extent required to remedy known factual inaccuracies. -- --3.5. Application of Additional Terms -- --You may choose to offer, and to charge a fee for, warranty, support, --indemnity or liability obligations to one or more recipients of Covered --Software. However, You may do so only on Your own behalf, and not on --behalf of any Contributor. You must make it absolutely clear that any --such warranty, support, indemnity, or liability obligation is offered by --You alone, and You hereby agree to indemnify every Contributor for any --liability incurred by such Contributor as a result of warranty, support, --indemnity or liability terms You offer. You may include additional --disclaimers of warranty and limitations of liability specific to any --jurisdiction. -- --4. Inability to Comply Due to Statute or Regulation ----------------------------------------------------- -- --If it is impossible for You to comply with any of the terms of this --License with respect to some or all of the Covered Software due to --statute, judicial order, or regulation then You must: (a) comply with --the terms of this License to the maximum extent possible; and (b) --describe the limitations and the code they affect. Such description must --be placed in a text file included with all distributions of the Covered --Software under this License. Except to the extent prohibited by statute --or regulation, such description must be sufficiently detailed for a --recipient of ordinary skill to be able to understand it. -- --5. Termination ---------------- -- --5.1. The rights granted under this License will terminate automatically --if You fail to comply with any of its terms. However, if You become --compliant, then the rights granted under this License from a particular --Contributor are reinstated (a) provisionally, unless and until such --Contributor explicitly and finally terminates Your grants, and (b) on an --ongoing basis, if such Contributor fails to notify You of the --non-compliance by some reasonable means prior to 60 days after You have --come back into compliance. Moreover, Your grants from a particular --Contributor are reinstated on an ongoing basis if such Contributor --notifies You of the non-compliance by some reasonable means, this is the --first time You have received notice of non-compliance with this License --from such Contributor, and You become compliant prior to 30 days after --Your receipt of the notice. -- --5.2. If You initiate litigation against any entity by asserting a patent --infringement claim (excluding declaratory judgment actions, --counter-claims, and cross-claims) alleging that a Contributor Version --directly or indirectly infringes any patent, then the rights granted to --You by any and all Contributors for the Covered Software under Section --2.1 of this License shall terminate. -- --5.3. In the event of termination under Sections 5.1 or 5.2 above, all --end user license agreements (excluding distributors and resellers) which --have been validly granted by You or Your distributors under this License --prior to termination shall survive termination. -- --************************************************************************ --* * --* 6. Disclaimer of Warranty * --* ------------------------- * --* * --* Covered Software is provided under this License on an "as is" * --* basis, without warranty of any kind, either expressed, implied, or * --* statutory, including, without limitation, warranties that the * --* Covered Software is free of defects, merchantable, fit for a * --* particular purpose or non-infringing. The entire risk as to the * --* quality and performance of the Covered Software is with You. * --* Should any Covered Software prove defective in any respect, You * --* (not any Contributor) assume the cost of any necessary servicing, * --* repair, or correction. This disclaimer of warranty constitutes an * --* essential part of this License. No use of any Covered Software is * --* authorized under this License except under this disclaimer. * --* * --************************************************************************ -- --************************************************************************ --* * --* 7. Limitation of Liability * --* -------------------------- * --* * --* Under no circumstances and under no legal theory, whether tort * --* (including negligence), contract, or otherwise, shall any * --* Contributor, or anyone who distributes Covered Software as * --* permitted above, be liable to You for any direct, indirect, * --* special, incidental, or consequential damages of any character * --* including, without limitation, damages for lost profits, loss of * --* goodwill, work stoppage, computer failure or malfunction, or any * --* and all other commercial damages or losses, even if such party * --* shall have been informed of the possibility of such damages. This * --* limitation of liability shall not apply to liability for death or * --* personal injury resulting from such party's negligence to the * --* extent applicable law prohibits such limitation. Some * --* jurisdictions do not allow the exclusion or limitation of * --* incidental or consequential damages, so this exclusion and * --* limitation may not apply to You. * --* * --************************************************************************ -- --8. Litigation --------------- -- --Any litigation relating to this License may be brought only in the --courts of a jurisdiction where the defendant maintains its principal --place of business and such litigation shall be governed by laws of that --jurisdiction, without reference to its conflict-of-law provisions. --Nothing in this Section shall prevent a party's ability to bring --cross-claims or counter-claims. -- --9. Miscellaneous ------------------ -- --This License represents the complete agreement concerning the subject --matter hereof. If any provision of this License is held to be --unenforceable, such provision shall be reformed only to the extent --necessary to make it enforceable. Any law or regulation which provides --that the language of a contract shall be construed against the drafter --shall not be used to construe this License against a Contributor. -- --10. Versions of the License ----------------------------- -- --10.1. New Versions -- --Mozilla Foundation is the license steward. Except as provided in Section --10.3, no one other than the license steward has the right to modify or --publish new versions of this License. Each version will be given a --distinguishing version number. -- --10.2. Effect of New Versions -- --You may distribute the Covered Software under the terms of the version --of the License under which You originally received the Covered Software, --or under the terms of any subsequent version published by the license --steward. -- --10.3. Modified Versions -- --If you create software not governed by this License, and you want to --create a new license for such software, you may create and use a --modified version of this License if you rename the license and remove --any references to the name of the license steward (except to note that --such modified license differs from this License). -- --10.4. Distributing Source Code Form that is Incompatible With Secondary --Licenses -- --If You choose to distribute Source Code Form that is Incompatible With --Secondary Licenses under the terms of this version of the License, the --notice described in Exhibit B of this License must be attached. -- --Exhibit A - Source Code Form License Notice --------------------------------------------- -- -- This Source Code Form is subject to the terms of the Mozilla Public -- License, v. 2.0. If a copy of the MPL was not distributed with this -- file, You can obtain one at http://mozilla.org/MPL/2.0/. -- --If it is not possible or desirable to put the notice in a particular --file, then You may include the notice in a location (such as a LICENSE --file in a relevant directory) where a recipient would be likely to look --for such a notice. -- --You may add additional accurate notices of copyright ownership. -- --Exhibit B - "Incompatible With Secondary Licenses" Notice ----------------------------------------------------------- -- -- This Source Code Form is "Incompatible With Secondary Licenses", as -- defined by the Mozilla Public License, v. 2.0. -diff --git a/third_party/prio/README-mozilla b/third_party/prio/README-mozilla ---- a/third_party/prio/README-mozilla -+++ b/third_party/prio/README-mozilla -@@ -1,7 +1,7 @@ - This directory contains the Prio source from the upstream repo: - https://github.com/mozilla/libprio - --Current version: 1.0 [commit bfbcf1f95001047c61f4a29c3e68499b2f0c9f3b] -+Current version: 1.1 [commit 488da2d729d73f18ed45add59edd18b257e1ceaa] - - UPDATING: - -@@ -14,4 +14,4 @@ - from within the third_party/libprio directory. - - If the collection of source files changes, manual updates to moz.build may be --needed as we don't use the upstream makefiles. -\ No newline at end of file -+needed as we don't use the upstream makefiles. -diff --git a/third_party/prio/README.md b/third_party/prio/README.md -deleted file mode 100644 ---- a/third_party/prio/README.md -+++ /dev/null -@@ -1,136 +0,0 @@ --# libprio - A Prio library in C using NSS -- --**Warning:** --We do our best to write bug-free code, but I have no doubt --that there are scary bugs, side-channel attacks, and memory leaks --lurking herein. -- --**Important:** --We have not yet implemented the items --described in the "Security-Critical TODOs" section below. --Without these features, do not use the code in a production environment. -- -- --## Overview -- --This is an implementation of the core cryptographic routines --for the [Prio system](https://crypto.stanford.edu/prio/) --for the private computation of aggregate statistics: --> "Prio: Private, Robust, and Scalable Computation of Aggregate Statistics"
--> by Henry Corrigan-Gibbs and Dan Boneh
--> USENIX Symposium on Networked Systems Design and Implementation
--> March 2017 --> --> Available online at: --> https://crypto.stanford.edu/prio/ -- --**Usage scenario.** --The library implements the cryptographic routines necessary --for the following application scenario: --Each client holds a vector of boolean values. --Each client uses the library to encode her private vector into two --encoded packets—one for server A and one for server B. -- --After receiving shares from a client, the servers can use the routines --implemented here to check whether the client-provided packets are --well formed. --(Without this check, a single malicious client can corrupt the --output of the computation.) -- --After collecting data packets from many clients, the servers --can combine their state to learn how many clients had the --*i*th bit of their data vector set to `true` and how many --clients had the *i*th bit of their data vector set to `false`. --As long as at least one of the two servers is honest --(i.e., runs the correct code), --the servers learn *nothing else* about the clients' data, --under standard cryptographic assumptions. -- --For example, the *i*th bit of the data vector could indicate --whether the client ever visited the *i*th-ranked website --in the Alexa Top 500. --The servers would learn how many clients visited each of the --Top 500 websites *without learning* which clients visited --which websites. -- --**Efficiency considerations.** --The code makes no use of public-key crypto, so it should --be relatively fast. --When each a data packet is of length *N*, --all arithmetic is modulo a prime *p* (we use an 87-bit prime by default), --and "elements" are integers modulo *p*, --the dominant costs of the system are: --* **Client compute:** O(*N* log *N*) multiplications --* **Client-to-server communication:** 2*N* + O(1) elements
--* **Server compute:** O(*N* log *N*) multiplications to check each packet
-- (NOTE: Using an optimization we haven't yet implemented, we can -- drop this cost to O(*N*) multiplications per packet.) --* **Server-to-server communication:** O(1) elements --* **Server storage:** O(*N*) elements -- --## Running the code -- --You must first install --[NSS/NSPR](https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS), --[scons](http://scons.org/), and --[msgpack-c](https://github.com/msgpack/msgpack-c) version 2.1.5 (or newer?). --On Ubuntu, you can instal NSS and scons with: -- -- $ sudo apt install scons libnspr4-dev libnss3-dev -- --and you will have to download [msgpack-c 2.1.5 or newer here](https://github.com/msgpack/msgpack-c/releases), --since the Ubuntu packages for msgpack are far out of date. -- --For macOS using Homebrew: -- $ brew install nss nspr scons msgpack -- -- $ export LDFLAGS="-L/usr/local/opt/nss/lib" -- $ export CPPFLAGS="-I/usr/local/opt/nss/include -I/usr/local/opt/nspr/include/nspr" -- --To compile the code, run: -- -- $ scons -- --To run the test suite, execute: -- -- $ build/ptest/ptest -v -- --To print debug messages while compiling: -- -- $ scons VERBOSE=1 -- --To compile with debug symbols, run: -- -- $ scons BUILDTYPE=DEBUG -- --To clean up the object and binary files, run: -- -- $ scons -c -- --The files in this directory are: --```` --/build - Binaries, object files, etc. --/include - Exported header files -- (Note: The public header is since -- NSPR already has a file called .) --/mpi - NSS MPI bignum library --/pclient - Example code that uses the Prio library --/prio - Prio library core code --/ptest - Tests and test runner --```` -- --## Optimizations and features not yet implemented --* **Server compute.** -- By using a fast polynomial interpolation-and-evaluation -- routine, we can reduce the cost of checking a single client -- request from O(*N* log *N*) multiplications down to O(*N*) -- multiplications, for a data packet of *N* items. --* **Differential privacy.** -- It would be very straightforward to add some small amount of -- noise to the final statistics to provide differential privacy. -- If this would be useful, I can add it. --* **Misc.** -- There are TODO notes scattered throughout code indicating -- places for potential performance optimizations. -- -- -diff --git a/third_party/prio/SConstruct b/third_party/prio/SConstruct -deleted file mode 100644 ---- a/third_party/prio/SConstruct -+++ /dev/null -@@ -1,41 +0,0 @@ --# This Source Code Form is subject to the terms of the Mozilla Public --# License, v. 2.0. If a copy of the MPL was not distributed with this --# file, You can obtain one at http://mozilla.org/MPL/2.0/. -- --import os --import SCons -- --opts = Variables() --opts.AddVariables( -- BoolVariable("DEBUG", "Make debug build", 1), -- BoolVariable("VERBOSE", "Show full build information", 0)) -- --env = Environment(options = opts, -- ENV = os.environ) --if "CFLAGS" in os.environ: -- env.Append(CFLAGS = SCons.Util.CLVar(os.getenv("CFLAGS"))) --if "CPPFLAGS" in os.environ: -- env.Append(CPPFLAGS = SCons.Util.CLVar(os.getenv("CPPFLAGS"))) --if "CXXFLAGS" in os.environ: -- env.Append(CXXFLAGS = SCons.Util.CLVar(os.getenv("CXXFLAGS"))) --if "LDFLAGS" in os.environ: -- env.Append(LINKFLAGS = SCons.Util.CLVar(os.getenv("LDFLAGS"))) -- --if env["DEBUG"]: -- print "DEBUG MODE!" -- env.Append(CPPFLAGS = [ "-g", "-DDEBUG"]) -- --env.Append(LIBS = ["mprio", "mpi", "nss3", "nspr4"], \ -- LIBPATH = ['#build/prio', "#build/mpi"], -- CFLAGS = [ "-Wall", "-Werror", "-Wextra", "-O3", "-std=c99", -- "-I/usr/include/nspr", "-Impi", "-DDO_PR_CLEANUP"]) -- --env.Append(CPPPATH = ["#include", "#."]) --Export('env') -- --SConscript('browser-test/SConscript', variant_dir='build/browser-test') --SConscript('mpi/SConscript', variant_dir='build/mpi') --SConscript('pclient/SConscript', variant_dir='build/pclient') --SConscript('prio/SConscript', variant_dir='build/prio') --SConscript('ptest/SConscript', variant_dir='build/ptest') -- -diff --git a/third_party/prio/browser-test/SConscript b/third_party/prio/browser-test/SConscript -deleted file mode 100644 ---- a/third_party/prio/browser-test/SConscript -+++ /dev/null -@@ -1,19 +0,0 @@ --import sys -- --Import('env') -- --prio_env = env.Clone() -- --src = [ -- "main.c", --] -- --libs = [ -- "mprio", -- "msgpackc", --] -- --prio_env.Append(LIBS = libs) --prio_env.Install("encode-once.js") --prio_env.Program("browser-test", src) -- -diff --git a/third_party/prio/browser-test/encode-once.js b/third_party/prio/browser-test/encode-once.js -deleted file mode 100644 ---- a/third_party/prio/browser-test/encode-once.js -+++ /dev/null -@@ -1,45 +0,0 @@ --/* -- * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -- * This Source Code Form is subject to the terms of the Mozilla Public -- * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -- */ -- --ChromeUtils.import('resource://gre/modules/Services.jsm'); -- --let [publicKeyA, publicKeyB, batchID, param1, param2, param3] = arguments; -- --Services.prefs.setStringPref('prio.publicKeyA', publicKeyA); --Services.prefs.setStringPref('prio.publicKeyB', publicKeyB); -- --async function test() { -- let params = { -- 'startupCrashDetected': Number(param1), -- 'safeModeUsage': Number(param2), -- 'browserIsUserDefault': Number(param3) -- }; -- -- try { -- let result = await PrioEncoder.encode(batchID, params); -- -- const toTypedArray = byteString => { -- let u8Array = new Uint8Array(byteString.length); -- for (let i in byteString) { -- u8Array[i] = byteString.charCodeAt(i); -- } -- return u8Array; -- } -- -- const toHexString = bytes => -- bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, '0') + ',', ''); -- -- console.log(toHexString(result.a) + '$' + toHexString(result.b)); -- console.log(''); -- } catch(e) { -- console.log('Failure.', e); -- console.log(v); -- } --} -- --test().then(); -diff --git a/third_party/prio/browser-test/main.c b/third_party/prio/browser-test/main.c -deleted file mode 100644 ---- a/third_party/prio/browser-test/main.c -+++ /dev/null -@@ -1,320 +0,0 @@ --/* -- * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -- * This Source Code Form is subject to the terms of the Mozilla Public -- * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -- */ -- --#define _GNU_SOURCE -- --#include --#include --#include --#include --#include -- --#include "prio/encrypt.h" --#include "prio/util.h" -- --static void --init_data (bool *data, int datalen) --{ -- // The client's data submission is an arbitrary boolean vector. -- for (int i=0; i < datalen; i++) { -- // Arbitrary data -- data[i] = rand () % 2; -- } --} -- --static SECStatus --read_string_from_hex (unsigned char **str_out, unsigned int *strLen, -- const char *input, const char **new_input) --{ -- SECStatus rv = SECSuccess; -- *strLen = 0; -- int read = 0; -- int outCount = 0; -- const char *inp = input; -- -- while (true) { -- unsigned char byte = '\0'; -- const int retval = sscanf(inp, "%02hhx,%n", &byte, &read); -- if (retval < 1 || read != 3) { -- break; -- } -- -- inp += read; -- (*str_out)[outCount] = byte; -- outCount++; -- *strLen = *strLen + 1; -- } -- -- if (new_input) -- *new_input = inp + 1; -- -- return rv; --} -- --static SECStatus --read_browser_reply (FILE *infile, -- unsigned char **for_server_a, unsigned int *aLen, -- unsigned char **for_server_b, unsigned int *bLen) --{ -- SECStatus rv = SECFailure; -- char *raw_input = NULL; -- size_t rawLen = 0; -- -- puts ("Getting line of input."); -- P_CHECKCB (getline (&raw_input, &rawLen, infile) > 0); -- puts ("Got line of input."); -- -- P_CHECKA (*for_server_a = malloc (rawLen * sizeof (unsigned char))); -- P_CHECKA (*for_server_b = malloc (rawLen * sizeof (unsigned char))); -- -- *aLen = 0; -- *bLen = 0; -- -- P_CHECKCB (rawLen > 14); -- -- // Header is 14 chars long -- const char *new_input; -- puts ("Reading string A"); -- P_CHECKC (read_string_from_hex (for_server_a, aLen, raw_input + 14, &new_input)); -- puts ("Read string A"); -- -- // Skip over for_server_a string and one-char delimeter -- puts ("Reading string B"); -- P_CHECKC (read_string_from_hex (for_server_b, bLen, new_input, NULL)); -- puts ("Read string B"); -- --cleanup: -- if (raw_input) free (raw_input); -- return rv; --} -- --static int --verify_full (const char *path_to_xpcshell, int pathlen) --{ -- SECStatus rv = SECSuccess; -- -- PublicKey pkA = NULL; -- PublicKey pkB = NULL; -- PrivateKey skA = NULL; -- PrivateKey skB = NULL; -- -- PrioConfig cfg = NULL; -- PrioServer sA = NULL; -- PrioServer sB = NULL; -- PrioVerifier vA = NULL; -- PrioVerifier vB = NULL; -- PrioPacketVerify1 p1A = NULL; -- PrioPacketVerify1 p1B = NULL; -- PrioPacketVerify2 p2A = NULL; -- PrioPacketVerify2 p2B = NULL; -- PrioTotalShare tA = NULL; -- PrioTotalShare tB = NULL; -- -- FILE *shell = NULL; -- int cmdlen = pathlen + 2*CURVE25519_KEY_LEN_HEX + 128; -- char cmd[cmdlen]; -- memset (cmd, 0, cmdlen); -- -- unsigned char *for_server_a = NULL; -- unsigned char *for_server_b = NULL; -- -- const int seed = time (NULL); -- srand (seed); -- printf ("Using srand seed %d\n", seed); -- -- // Number of different boolean data fields we collect. -- const int ndata = 3; -- -- //unsigned char batch_id_str[] = "abcde"; -- unsigned char batch_id_str[32]; -- memset (batch_id_str, 0, sizeof batch_id_str); -- snprintf ((char *)batch_id_str, sizeof batch_id_str, "%d", rand()); -- -- bool data_items[ndata]; -- unsigned long output[ndata]; -- init_data (data_items, ndata); -- -- // Initialize NSS random number generator. -- P_CHECKC (Prio_init ()); -- -- // Generate keypairs for servers -- P_CHECKC (Keypair_new (&skA, &pkA)); -- P_CHECKC (Keypair_new (&skB, &pkB)); -- -- // Export public keys to hex and print to stdout -- unsigned char pk_hexA[CURVE25519_KEY_LEN_HEX+1]; -- unsigned char pk_hexB[CURVE25519_KEY_LEN_HEX+1]; -- P_CHECKC (PublicKey_export_hex (pkA, pk_hexA)); -- P_CHECKC (PublicKey_export_hex (pkB, pk_hexB)); -- -- snprintf (cmd, cmdlen, "%s %s %s %s %s %d %d %d", -- path_to_xpcshell, "encode-once.js", -- pk_hexA, pk_hexB, batch_id_str, -- data_items[0], data_items[1], data_items[2]); -- -- printf ("> %s\n", cmd); -- P_CHECKA (shell = popen(cmd, "r")); -- puts("Ran command."); -- -- // Use the default configuration parameters. -- P_CHECKA (cfg = PrioConfig_new (ndata, pkA, pkB, batch_id_str, -- strlen ((char *)batch_id_str))); -- -- PrioPRGSeed server_secret; -- P_CHECKC (PrioPRGSeed_randomize (&server_secret)); -- -- // Initialize two server objects. The role of the servers need not -- // be symmetric. In a deployment, we envision that: -- // * Server A is the main telemetry server that is always online. -- // Clients send their encrypted data packets to Server A and -- // Server A stores them. -- // * Server B only comes online when the two servers want to compute -- // the final aggregate statistics. -- P_CHECKA (sA = PrioServer_new (cfg, PRIO_SERVER_A, skA, server_secret)); -- P_CHECKA (sB = PrioServer_new (cfg, PRIO_SERVER_B, skB, server_secret)); -- -- // Initialize empty verifier objects -- P_CHECKA (vA = PrioVerifier_new (sA)); -- P_CHECKA (vB = PrioVerifier_new (sB)); -- -- // Initialize shares of final aggregate statistics -- P_CHECKA (tA = PrioTotalShare_new ()); -- P_CHECKA (tB = PrioTotalShare_new ()); -- -- // Initialize shares of verification packets -- P_CHECKA (p1A = PrioPacketVerify1_new ()); -- P_CHECKA (p1B = PrioPacketVerify1_new ()); -- P_CHECKA (p2A = PrioPacketVerify2_new ()); -- P_CHECKA (p2B = PrioPacketVerify2_new ()); -- -- // I. CLIENT DATA SUBMISSION. -- // -- // Read in the client data packets -- unsigned int aLen = 0, bLen = 0; -- -- puts ("Reading..."); -- P_CHECKC (read_browser_reply (shell, &for_server_a, &aLen, &for_server_b, &bLen)); -- printf ("Read reply from browser. LenA: %u, LenB: %u\n", aLen, bLen); -- -- // II. VALIDATION PROTOCOL. (at servers) -- // -- // The servers now run a short 2-step protocol to check each -- // client's packet: -- // 1) Servers A and B broadcast one message (PrioPacketVerify1) -- // to each other. -- // 2) Servers A and B broadcast another message (PrioPacketVerify2) -- // to each other. -- // 3) Servers A and B can both determine whether the client's data -- // submission is well-formed (in which case they add it to their -- // running total of aggregate statistics) or ill-formed -- // (in which case they ignore it). -- // These messages must be sent over an authenticated channel, so -- // that each server is assured that every received message came -- // from its peer. -- -- // Set up a Prio verifier object. -- P_CHECKC (PrioVerifier_set_data (vA, for_server_a, aLen)); -- P_CHECKC (PrioVerifier_set_data (vB, for_server_b, bLen)); -- puts("Imported data."); -- -- // Both servers produce a packet1. Server A sends p1A to Server B -- // and vice versa. -- P_CHECKC (PrioPacketVerify1_set_data (p1A, vA)); -- P_CHECKC (PrioPacketVerify1_set_data (p1B, vB)); -- puts("Set data."); -- -- // Both servers produce a packet2. Server A sends p2A to Server B -- // and vice versa. -- P_CHECKC (PrioPacketVerify2_set_data(p2A, vA, p1A, p1B)); -- P_CHECKC (PrioPacketVerify2_set_data(p2B, vB, p1A, p1B)); -- -- // Using p2A and p2B, the servers can determine whether the request -- // is valid. (In fact, only Server A needs to perform this -- // check, since Server A can just tell Server B whether the check -- // succeeded or failed.) -- puts ("Checking validity."); -- P_CHECKC (PrioVerifier_isValid (vA, p2A, p2B)); -- P_CHECKC (PrioVerifier_isValid (vB, p2A, p2B)); -- puts ("Are valid."); -- -- // If we get here, the client packet is valid, so add it to the aggregate -- // statistic counter for both servers. -- P_CHECKC (PrioServer_aggregate (sA, vA)); -- P_CHECKC (PrioServer_aggregate (sB, vB)); -- -- // The servers repeat the steps above for each client submission. -- -- // III. PRODUCTION OF AGGREGATE STATISTICS. -- // -- // After collecting aggregates from MANY clients, the servers can compute -- // their shares of the aggregate statistics. -- // -- // Server B can send tB to Server A. -- P_CHECKC (PrioTotalShare_set_data (tA, sA)); -- P_CHECKC (PrioTotalShare_set_data (tB, sB)); -- -- // Once Server A has tA and tB, it can learn the aggregate statistics -- // in the clear. -- P_CHECKC (PrioTotalShare_final (cfg, output, tA, tB)); -- -- for (int i=0; i < ndata; i++) { -- //printf("output[%d] = %lu\n", i, output[i]); -- //printf("data[%d] = %d\n", i, (int)data_items[i]); -- P_CHECKCB (output[i] == data_items[i]); -- } -- -- puts ("Success!"); -- --cleanup: -- if (rv != SECSuccess) { -- fprintf (stderr, "Warning: unexpected failure.\n"); -- } -- -- if (for_server_a) free (for_server_a); -- if (for_server_b) free (for_server_b); -- -- PrioTotalShare_clear (tA); -- PrioTotalShare_clear (tB); -- -- PrioPacketVerify2_clear (p2A); -- PrioPacketVerify2_clear (p2B); -- -- PrioPacketVerify1_clear (p1A); -- PrioPacketVerify1_clear (p1B); -- -- PrioVerifier_clear (vA); -- PrioVerifier_clear (vB); -- -- PrioServer_clear (sA); -- PrioServer_clear (sB); -- PrioConfig_clear (cfg); -- -- PublicKey_clear (pkA); -- PublicKey_clear (pkB); -- -- PrivateKey_clear (skA); -- PrivateKey_clear (skB); -- -- Prio_clear (); -- -- return !(rv == SECSuccess); --} -- --int --main (int argc, char **argv) --{ -- puts("== Prio browser test utility. =="); -- puts("(Note: Expects to be run in the same directory as encode-once.js.)"); -- if (argc != 2) { -- fprintf (stderr, "Usage ./%s \n", argv[0]); -- return 1; -- } -- -- return verify_full (argv[1], strlen (argv[1])); --} -- -diff --git a/third_party/prio/include/mprio.h b/third_party/prio/include/mprio.h ---- a/third_party/prio/include/mprio.h -+++ b/third_party/prio/include/mprio.h -@@ -1,6 +1,6 @@ - /* - * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -+ * - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this -@@ -13,10 +13,10 @@ - extern "C" { - #endif - -+#include - #include --#include --#include --#include -+#include -+#include - #include - #include - -@@ -33,47 +33,44 @@ - /* - * Type for each of the two servers. - */ --typedef enum { -- PRIO_SERVER_A, -- PRIO_SERVER_B --} PrioServerId; -+typedef enum { PRIO_SERVER_A, PRIO_SERVER_B } PrioServerId; - - /* - * Opaque types - */ --typedef struct prio_config *PrioConfig; --typedef const struct prio_config *const_PrioConfig; -+typedef struct prio_config* PrioConfig; -+typedef const struct prio_config* const_PrioConfig; - --typedef struct prio_server *PrioServer; --typedef const struct prio_server *const_PrioServer; -+typedef struct prio_server* PrioServer; -+typedef const struct prio_server* const_PrioServer; - --typedef struct prio_verifier *PrioVerifier; --typedef const struct prio_verifier *const_PrioVerifier; -+typedef struct prio_verifier* PrioVerifier; -+typedef const struct prio_verifier* const_PrioVerifier; - --typedef struct prio_packet_verify1 *PrioPacketVerify1; --typedef const struct prio_packet_verify1 *const_PrioPacketVerify1; -+typedef struct prio_packet_verify1* PrioPacketVerify1; -+typedef const struct prio_packet_verify1* const_PrioPacketVerify1; - --typedef struct prio_packet_verify2 *PrioPacketVerify2; --typedef const struct prio_packet_verify2 *const_PrioPacketVerify2; -+typedef struct prio_packet_verify2* PrioPacketVerify2; -+typedef const struct prio_packet_verify2* const_PrioPacketVerify2; - --typedef struct prio_total_share *PrioTotalShare; --typedef const struct prio_total_share *const_PrioTotalShare; -+typedef struct prio_total_share* PrioTotalShare; -+typedef const struct prio_total_share* const_PrioTotalShare; - --typedef SECKEYPublicKey *PublicKey; --typedef const SECKEYPublicKey *const_PublicKey; -+typedef SECKEYPublicKey* PublicKey; -+typedef const SECKEYPublicKey* const_PublicKey; - --typedef SECKEYPrivateKey *PrivateKey; --typedef const SECKEYPrivateKey *const_PrivateKey; -+typedef SECKEYPrivateKey* PrivateKey; -+typedef const SECKEYPrivateKey* const_PrivateKey; - --/* -+/* - * Initialize and clear random number generator state. - * You must call Prio_init() before using the library. - * To avoid memory leaks, call Prio_clear() afterwards. - */ --SECStatus Prio_init (); -+SECStatus Prio_init(); - void Prio_clear(); - --/* -+/* - * PrioConfig holds the system parameters. The two relevant things determined - * by the config object are: - * (1) the number of data fields we are collecting, and -@@ -87,35 +84,37 @@ - * Each set of aggregate statistics should use a different `batch_id`. - * - * `PrioConfig_new` does not keep a pointer to the `batch_id` string that the -- * caller passes in, so you may free the `batch_id` string as soon as -+ * caller passes in, so you may free the `batch_id` string as soon as - * `PrioConfig_new` returns. - */ --PrioConfig PrioConfig_new (int n_fields, PublicKey server_a, PublicKey server_b, -- const unsigned char *batch_id, unsigned int batch_id_len); --void PrioConfig_clear (PrioConfig cfg); --int PrioConfig_numDataFields (const_PrioConfig cfg); -+PrioConfig PrioConfig_new(int n_fields, PublicKey server_a, PublicKey server_b, -+ const unsigned char* batch_id, -+ unsigned int batch_id_len); -+void PrioConfig_clear(PrioConfig cfg); -+int PrioConfig_numDataFields(const_PrioConfig cfg); - - /* -- * Create a PrioConfig object with no encryption keys. This routine is -+ * Create a PrioConfig object with no encryption keys. This routine is - * useful for testing, but PrioClient_encode() will always fail when used with - * this config. - */ --PrioConfig PrioConfig_newTest (int n_fields); -+PrioConfig PrioConfig_newTest(int n_fields); - -- --/* -+/* - * We use the PublicKey and PrivateKey objects for public-key encryption. Each - * Prio server has an associated public key, and the clients use these keys to - * encrypt messages to the servers. - */ --SECStatus Keypair_new (PrivateKey *pvtkey, PublicKey *pubkey); -+SECStatus Keypair_new(PrivateKey* pvtkey, PublicKey* pubkey); - - /* -- * Import a new curve25519 public key from the raw bytes given. The key passed in -+ * Import a new curve25519 public key from the raw bytes given. The key passed -+ * in - * as `data` should be of length `CURVE25519_KEY_LEN`. This function allocates - * a new PublicKey object, which the caller must free using `PublicKey_clear`. - */ --SECStatus PublicKey_import (PublicKey *pk, const unsigned char *data, unsigned int dataLen); -+SECStatus PublicKey_import(PublicKey* pk, const unsigned char* data, -+ unsigned int dataLen); - - /* - * Import a new curve25519 public key from a hex string that contains only the -@@ -123,138 +122,136 @@ - * length `CURVE25519_KEY_LEN_HEX`. This function allocates a new PublicKey - * object, which the caller must free using `PublicKey_clear`. - */ --SECStatus PublicKey_import_hex (PublicKey *pk, const unsigned char *hex_data, -- unsigned int dataLen); -+SECStatus PublicKey_import_hex(PublicKey* pk, const unsigned char* hex_data, -+ unsigned int dataLen); - - /* - * Export a curve25519 public key as a raw byte-array. - */ --SECStatus PublicKey_export (const_PublicKey pk, unsigned char data[CURVE25519_KEY_LEN]); -+SECStatus PublicKey_export(const_PublicKey pk, -+ unsigned char data[CURVE25519_KEY_LEN]); - - /* - * Export a curve25519 public key as a NULL-terminated hex string. - */ --SECStatus PublicKey_export_hex (const_PublicKey pk, -- unsigned char data[CURVE25519_KEY_LEN_HEX+1]); -- -+SECStatus PublicKey_export_hex(const_PublicKey pk, -+ unsigned char data[CURVE25519_KEY_LEN_HEX + 1]); - --void PublicKey_clear (PublicKey pubkey); --void PrivateKey_clear (PrivateKey pvtkey); -- -+void PublicKey_clear(PublicKey pubkey); -+void PrivateKey_clear(PrivateKey pvtkey); - - /* - * PrioPacketClient_encode - * -- * Takes as input a pointer to an array (`data_in`) of boolean values -- * whose length is equal to the number of data fields specified in -+ * Takes as input a pointer to an array (`data_in`) of boolean values -+ * whose length is equal to the number of data fields specified in - * the config. It then encodes the data for servers A and B into a -- * string. -+ * string. - * - * NOTE: The caller must free() the strings `for_server_a` and - * `for_server_b` to avoid memory leaks. - */ --SECStatus --PrioClient_encode (const_PrioConfig cfg, const bool *data_in, -- unsigned char **for_server_a, unsigned int *aLen, -- unsigned char **for_server_b, unsigned int *bLen); -+SECStatus PrioClient_encode(const_PrioConfig cfg, const bool* data_in, -+ unsigned char** for_server_a, unsigned int* aLen, -+ unsigned char** for_server_b, unsigned int* bLen); - - /* - * Generate a new PRG seed using the NSS global randomness source. - * Use this routine to initialize the secret that the two Prio servers - * share. - */ --SECStatus PrioPRGSeed_randomize (PrioPRGSeed *seed); -+SECStatus PrioPRGSeed_randomize(PrioPRGSeed* seed); - - /* - * The PrioServer object holds the state of the Prio servers. - * Pass in the _same_ secret PRGSeed when initializing the two servers. - * The PRGSeed must remain secret to the two servers. - */ --PrioServer PrioServer_new (const_PrioConfig cfg, PrioServerId server_idx, -- PrivateKey server_priv, const PrioPRGSeed server_shared_secret); --void PrioServer_clear (PrioServer s); -+PrioServer PrioServer_new(const_PrioConfig cfg, PrioServerId server_idx, -+ PrivateKey server_priv, -+ const PrioPRGSeed server_shared_secret); -+void PrioServer_clear(PrioServer s); - -- --/* -+/* - * After receiving a client packet, each of the servers generate - * a PrioVerifier object that they use to check whether the client's - * encoded packet is well formed. - */ --PrioVerifier PrioVerifier_new (PrioServer s); --void PrioVerifier_clear (PrioVerifier v); -+PrioVerifier PrioVerifier_new(PrioServer s); -+void PrioVerifier_clear(PrioVerifier v); - --/* -+/* - * Read in encrypted data from the client, decrypt it, and prepare to check the - * request for validity. - */ --SECStatus PrioVerifier_set_data (PrioVerifier v, -- unsigned char *data, unsigned int dataLen); -+SECStatus PrioVerifier_set_data(PrioVerifier v, unsigned char* data, -+ unsigned int dataLen); - - /* - * Generate the first packet that servers need to exchange to verify the - * client's submission. This should be sent over a TLS connection between the - * servers. - */ --PrioPacketVerify1 PrioPacketVerify1_new (void); --void PrioPacketVerify1_clear (PrioPacketVerify1 p1); -+PrioPacketVerify1 PrioPacketVerify1_new(void); -+void PrioPacketVerify1_clear(PrioPacketVerify1 p1); - --SECStatus PrioPacketVerify1_set_data (PrioPacketVerify1 p1, -- const_PrioVerifier v); -+SECStatus PrioPacketVerify1_set_data(PrioPacketVerify1 p1, -+ const_PrioVerifier v); - --SECStatus PrioPacketVerify1_write (const_PrioPacketVerify1 p, -- msgpack_packer *pk); --SECStatus PrioPacketVerify1_read (PrioPacketVerify1 p, -- msgpack_unpacker *upk, const_PrioConfig cfg); -+SECStatus PrioPacketVerify1_write(const_PrioPacketVerify1 p, -+ msgpack_packer* pk); -+SECStatus PrioPacketVerify1_read(PrioPacketVerify1 p, msgpack_unpacker* upk, -+ const_PrioConfig cfg); - --/* -+/* - * Generate the second packet that the servers need to exchange to verify the - * client's submission. The routine takes as input the PrioPacketVerify1 - * packets from both server A and server B. - * - * This should be sent over a TLS connection between the servers. - */ --PrioPacketVerify2 PrioPacketVerify2_new (void); --void PrioPacketVerify2_clear (PrioPacketVerify2 p); -+PrioPacketVerify2 PrioPacketVerify2_new(void); -+void PrioPacketVerify2_clear(PrioPacketVerify2 p); - --SECStatus PrioPacketVerify2_set_data (PrioPacketVerify2 p2, const_PrioVerifier v, -- const_PrioPacketVerify1 p1A, const_PrioPacketVerify1 p1B); -+SECStatus PrioPacketVerify2_set_data(PrioPacketVerify2 p2, const_PrioVerifier v, -+ const_PrioPacketVerify1 p1A, -+ const_PrioPacketVerify1 p1B); - --SECStatus PrioPacketVerify2_write (const_PrioPacketVerify2 p, -- msgpack_packer *pk); --SECStatus PrioPacketVerify2_read (PrioPacketVerify2 p, -- msgpack_unpacker *upk, const_PrioConfig cfg); -+SECStatus PrioPacketVerify2_write(const_PrioPacketVerify2 p, -+ msgpack_packer* pk); -+SECStatus PrioPacketVerify2_read(PrioPacketVerify2 p, msgpack_unpacker* upk, -+ const_PrioConfig cfg); - --/* -+/* - * Use the PrioPacketVerify2s from both servers to check whether - * the client's submission is well formed. - */ --SECStatus PrioVerifier_isValid (const_PrioVerifier v, -- const_PrioPacketVerify2 pA, const_PrioPacketVerify2 pB); -+SECStatus PrioVerifier_isValid(const_PrioVerifier v, const_PrioPacketVerify2 pA, -+ const_PrioPacketVerify2 pB); - - /* - * Each of the two servers calls this routine to aggregate the data - * submission from a client that is included in the PrioVerifier object. - * - * IMPORTANT: This routine does *not* check the validity of the client's -- * data packet. The servers must execute the verification checks -+ * data packet. The servers must execute the verification checks - * above before aggregating any client data. - */ --SECStatus PrioServer_aggregate (PrioServer s, PrioVerifier v); -+SECStatus PrioServer_aggregate(PrioServer s, PrioVerifier v); - --/* -+/* - * After the servers have aggregated data packets from "enough" clients - * (this determines the anonymity set size), each server runs this routine -- * to get a share of the aggregate statistics. -+ * to get a share of the aggregate statistics. - */ --PrioTotalShare PrioTotalShare_new (void); --void PrioTotalShare_clear (PrioTotalShare t); -+PrioTotalShare PrioTotalShare_new(void); -+void PrioTotalShare_clear(PrioTotalShare t); - --SECStatus PrioTotalShare_set_data (PrioTotalShare t, const_PrioServer s); -+SECStatus PrioTotalShare_set_data(PrioTotalShare t, const_PrioServer s); - --SECStatus PrioTotalShare_write (const_PrioTotalShare t, -- msgpack_packer *pk); --SECStatus PrioTotalShare_read (PrioTotalShare t, -- msgpack_unpacker *upk, const_PrioConfig cfg); -+SECStatus PrioTotalShare_write(const_PrioTotalShare t, msgpack_packer* pk); -+SECStatus PrioTotalShare_read(PrioTotalShare t, msgpack_unpacker* upk, -+ const_PrioConfig cfg); - - /* - * Read the output data into an array of unsigned longs. You should -@@ -262,9 +259,9 @@ - * the pointer `output` points to a buffer large enough to store - * one long per data field. - */ --SECStatus PrioTotalShare_final (const_PrioConfig cfg, unsigned long *output, -- const_PrioTotalShare tA, const_PrioTotalShare tB); -- -+SECStatus PrioTotalShare_final(const_PrioConfig cfg, unsigned long* output, -+ const_PrioTotalShare tA, -+ const_PrioTotalShare tB); - - #endif /* __PRIO_H__ */ - -diff --git a/third_party/prio/pclient/SConscript b/third_party/prio/pclient/SConscript -deleted file mode 100644 ---- a/third_party/prio/pclient/SConscript -+++ /dev/null -@@ -1,18 +0,0 @@ --import sys -- --Import('env') -- --prio_env = env.Clone() -- --src = [ -- "main.c", --] -- --libs = [ -- "mprio", -- "msgpackc", --] -- --prio_env.Append(LIBS = libs) --prio_env.Program("pclient", src) -- -diff --git a/third_party/prio/pclient/main.c b/third_party/prio/pclient/main.c -deleted file mode 100644 ---- a/third_party/prio/pclient/main.c -+++ /dev/null -@@ -1,229 +0,0 @@ --/* -- * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -- * This Source Code Form is subject to the terms of the Mozilla Public -- * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -- */ -- --#include --#include --#include -- --#include "prio/util.h" -- --int --verify_full (void) --{ -- SECStatus rv = SECSuccess; -- -- PublicKey pkA = NULL; -- PublicKey pkB = NULL; -- PrivateKey skA = NULL; -- PrivateKey skB = NULL; -- -- PrioConfig cfg = NULL; -- PrioServer sA = NULL; -- PrioServer sB = NULL; -- PrioVerifier vA = NULL; -- PrioVerifier vB = NULL; -- PrioPacketVerify1 p1A = NULL; -- PrioPacketVerify1 p1B = NULL; -- PrioPacketVerify2 p2A = NULL; -- PrioPacketVerify2 p2B = NULL; -- PrioTotalShare tA = NULL; -- PrioTotalShare tB = NULL; -- -- unsigned char *for_server_a = NULL; -- unsigned char *for_server_b = NULL; -- -- const unsigned char *batch_id = (unsigned char *)"prio_batch_2018-04-17"; -- const unsigned int batch_id_len = strlen ((char *)batch_id); -- -- // Initialize NSS random number generator. -- P_CHECKC (Prio_init ()); -- -- // Number of different boolean data fields we collect. -- const int ndata = 100; -- -- // Number of clients to simulate. -- const int nclients = 10; -- -- -- // New scope to avoid goto weirdness -- { -- bool data_items[ndata]; -- -- // Generate keypairs for servers -- P_CHECKC (Keypair_new (&skA, &pkA)); -- P_CHECKC (Keypair_new (&skB, &pkB)); -- -- // Use the default configuration parameters. -- P_CHECKA (cfg = PrioConfig_new (ndata, pkA, pkB, batch_id, batch_id_len)); -- -- PrioPRGSeed server_secret; -- P_CHECKC (PrioPRGSeed_randomize (&server_secret)); -- -- // Initialize two server objects. The role of the servers need not -- // be symmetric. In a deployment, we envision that: -- // * Server A is the main telemetry server that is always online. -- // Clients send their encrypted data packets to Server A and -- // Server A stores them. -- // * Server B only comes online when the two servers want to compute -- // the final aggregate statistics. -- P_CHECKA (sA = PrioServer_new (cfg, PRIO_SERVER_A, skA, server_secret)); -- P_CHECKA (sB = PrioServer_new (cfg, PRIO_SERVER_B, skB, server_secret)); -- -- // Initialize empty verifier objects -- P_CHECKA (vA = PrioVerifier_new (sA)); -- P_CHECKA (vB = PrioVerifier_new (sB)); -- -- // Initialize shares of final aggregate statistics -- P_CHECKA (tA = PrioTotalShare_new ()); -- P_CHECKA (tB = PrioTotalShare_new ()); -- -- // Initialize shares of verification packets -- P_CHECKA (p1A = PrioPacketVerify1_new ()); -- P_CHECKA (p1B = PrioPacketVerify1_new ()); -- P_CHECKA (p2A = PrioPacketVerify2_new ()); -- P_CHECKA (p2B = PrioPacketVerify2_new ()); -- -- // Generate client data packets. -- for (int c=0; c < nclients; c++) { -- -- // The client's data submission is an arbitrary boolean vector. -- for (int i=0; i < ndata; i++) { -- // Arbitrary data -- data_items[i] = (i % 3 == 1) || (c % 5 == 3); -- } -- -- // I. CLIENT DATA SUBMISSION. -- // -- // Construct the client data packets. -- unsigned int aLen, bLen; -- P_CHECKC (PrioClient_encode (cfg, data_items, -- &for_server_a, &aLen, &for_server_b, &bLen)); -- -- // The Prio servers A and B can come online later (e.g., at the end of -- // each day) to download the encrypted telemetry packets from the -- // telemetry server and run the protocol that computes the aggregate -- // statistics. In this way, the client only needs to send a -- // single message (the pair of encrypted ClientPacketData packets) -- // to a single server (the telemetry-data-collection server). -- -- // THE CLIENT'S JOB IS DONE. The rest of the processing just takes place -- // between the two servers A and B. -- -- -- // II. VALIDATION PROTOCOL. (at servers) -- // -- // The servers now run a short 2-step protocol to check each -- // client's packet: -- // 1) Servers A and B broadcast one message (PrioPacketVerify1) -- // to each other. -- // 2) Servers A and B broadcast another message (PrioPacketVerify2) -- // to each other. -- // 3) Servers A and B can both determine whether the client's data -- // submission is well-formed (in which case they add it to their -- // running total of aggregate statistics) or ill-formed -- // (in which case they ignore it). -- // These messages must be sent over an authenticated channel, so -- // that each server is assured that every received message came -- // from its peer. -- -- // Set up a Prio verifier object. -- P_CHECKC (PrioVerifier_set_data (vA, for_server_a, aLen)); -- P_CHECKC (PrioVerifier_set_data (vB, for_server_b, bLen)); -- -- // Both servers produce a packet1. Server A sends p1A to Server B -- // and vice versa. -- P_CHECKC (PrioPacketVerify1_set_data (p1A, vA)); -- P_CHECKC (PrioPacketVerify1_set_data (p1B, vB)); -- -- // Both servers produce a packet2. Server A sends p2A to Server B -- // and vice versa. -- P_CHECKC (PrioPacketVerify2_set_data(p2A, vA, p1A, p1B)); -- P_CHECKC (PrioPacketVerify2_set_data(p2B, vB, p1A, p1B)); -- -- // Using p2A and p2B, the servers can determine whether the request -- // is valid. (In fact, only Server A needs to perform this -- // check, since Server A can just tell Server B whether the check -- // succeeded or failed.) -- P_CHECKC (PrioVerifier_isValid (vA, p2A, p2B)); -- P_CHECKC (PrioVerifier_isValid (vB, p2A, p2B)); -- -- // If we get here, the client packet is valid, so add it to the aggregate -- // statistic counter for both servers. -- P_CHECKC (PrioServer_aggregate (sA, vA)); -- P_CHECKC (PrioServer_aggregate (sB, vB)); -- -- free (for_server_a); -- free (for_server_b); -- for_server_a = NULL; -- for_server_b = NULL; -- } -- -- // The servers repeat the steps above for each client submission. -- -- // III. PRODUCTION OF AGGREGATE STATISTICS. -- // -- // After collecting aggregates from MANY clients, the servers can compute -- // their shares of the aggregate statistics. -- // -- // Server B can send tB to Server A. -- P_CHECKC (PrioTotalShare_set_data (tA, sA)); -- P_CHECKC (PrioTotalShare_set_data (tB, sB)); -- -- // Once Server A has tA and tB, it can learn the aggregate statistics -- // in the clear. -- unsigned long output[ndata]; -- P_CHECKC (PrioTotalShare_final (cfg, output, tA, tB)); -- -- // Now the output[i] contains a counter that indicates how many clients -- // submitted TRUE for data value i. We print out this data. -- for (int i=0; i < ndata; i++) -- printf("output[%d] = %lu\n", i, output[i]); -- } -- --cleanup: -- if (rv != SECSuccess) { -- fprintf (stderr, "Warning: unexpected failure.\n"); -- } -- -- if (for_server_a) free (for_server_a); -- if (for_server_b) free (for_server_b); -- -- PrioTotalShare_clear (tA); -- PrioTotalShare_clear (tB); -- -- PrioPacketVerify2_clear (p2A); -- PrioPacketVerify2_clear (p2B); -- -- PrioPacketVerify1_clear (p1A); -- PrioPacketVerify1_clear (p1B); -- -- PrioVerifier_clear (vA); -- PrioVerifier_clear (vB); -- -- PrioServer_clear (sA); -- PrioServer_clear (sB); -- PrioConfig_clear (cfg); -- -- PublicKey_clear (pkA); -- PublicKey_clear (pkB); -- -- PrivateKey_clear (skA); -- PrivateKey_clear (skB); -- -- Prio_clear (); -- -- return !(rv == SECSuccess); --} -- --int --main (void) --{ -- puts ("This utility demonstrates how to invoke the Prio API."); -- return verify_full (); --} -- -diff --git a/third_party/prio/prio/SConscript b/third_party/prio/prio/SConscript ---- a/third_party/prio/prio/SConscript -+++ b/third_party/prio/prio/SConscript -@@ -21,9 +21,6 @@ - "msgpackc" - ] - --# Enable mp_print() --penv.Append(CFLAGS = ['-DMP_IOFUNC']) -- - penv.Append(LIBS = libs) - penv.StaticLibrary("mprio", src) - -diff --git a/third_party/prio/prio/client.h b/third_party/prio/prio/client.h ---- a/third_party/prio/prio/client.h -+++ b/third_party/prio/prio/client.h -@@ -1,9 +1,9 @@ - /* - * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -+ * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - - #ifndef __CLIENT_H__ -@@ -13,23 +13,24 @@ - #include "prg.h" - #include "share.h" - -- - /* - * The PrioPacketClient object holds the encoded client data. - * The client sends one packet to server A and one packet to - * server B. The `for_server` parameter determines which server - * the packet is for. - */ --typedef struct prio_packet_client *PrioPacketClient; --typedef const struct prio_packet_client *const_PrioPacketClient; -+typedef struct prio_packet_client* PrioPacketClient; -+typedef const struct prio_packet_client* const_PrioPacketClient; - --struct server_a_data { -+struct server_a_data -+{ - // These values are only set for server A. - MPArray data_shares; - MPArray h_points; - }; - --struct server_b_data { -+struct server_b_data -+{ - // This value is only used for server B. - // - // We use a pseudo-random generator to compress the secret-shared data -@@ -39,9 +40,10 @@ - }; - - /* -- * The data that a Prio client sends to each server. -+ * The data that a Prio client sends to each server. - */ --struct prio_packet_client { -+struct prio_packet_client -+{ - // TODO: Can also use a PRG to avoid need for sending Beaver triple shares. - // Since this optimization only saves ~30 bytes of communication, we haven't - // bothered implementing it yet. -@@ -50,25 +52,26 @@ - mp_int f0_share, g0_share, h0_share; - PrioServerId for_server; - -- union { -+ union -+ { - struct server_a_data A; - struct server_b_data B; - } shares; - }; - -- --PrioPacketClient PrioPacketClient_new (const_PrioConfig cfg, PrioServerId for_server); --void PrioPacketClient_clear (PrioPacketClient p); --SECStatus PrioPacketClient_set_data (const_PrioConfig cfg, const bool *data_in, -- PrioPacketClient for_server_a, PrioPacketClient for_server_b); -+PrioPacketClient PrioPacketClient_new(const_PrioConfig cfg, -+ PrioServerId for_server); -+void PrioPacketClient_clear(PrioPacketClient p); -+SECStatus PrioPacketClient_set_data(const_PrioConfig cfg, const bool* data_in, -+ PrioPacketClient for_server_a, -+ PrioPacketClient for_server_b); - --SECStatus PrioPacketClient_decrypt (PrioPacketClient p, -- const_PrioConfig cfg, PrivateKey server_priv, -- const unsigned char *data_in, unsigned int data_len); -+SECStatus PrioPacketClient_decrypt(PrioPacketClient p, const_PrioConfig cfg, -+ PrivateKey server_priv, -+ const unsigned char* data_in, -+ unsigned int data_len); - --bool PrioPacketClient_areEqual (const_PrioPacketClient p1, -- const_PrioPacketClient p2); -- -+bool PrioPacketClient_areEqual(const_PrioPacketClient p1, -+ const_PrioPacketClient p2); - - #endif /* __CLIENT_H__ */ -- -diff --git a/third_party/prio/prio/client.c b/third_party/prio/prio/client.c ---- a/third_party/prio/prio/client.c -+++ b/third_party/prio/prio/client.c -@@ -1,6 +1,6 @@ - /* - * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -+ * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -@@ -21,7 +21,7 @@ - #include "util.h" - - // Let the points of data_in be [x1, x2, x3, ... ]. --// We construct the polynomial f such that -+// We construct the polynomial f such that - // (a) f(0) = random, - // (b) f(i) = x_i for all i >= 1, - // (c) degree(f)+1 is a power of two. -@@ -30,10 +30,10 @@ - // and we return f(0) as `const_term`. - static SECStatus - data_polynomial_evals(const_PrioConfig cfg, const_MPArray data_in, -- MPArray evals_out, mp_int *const_term) -+ MPArray evals_out, mp_int* const_term) - { - SECStatus rv = SECSuccess; -- const mp_int *mod = &cfg->modulus; -+ const mp_int* mod = &cfg->modulus; - MPArray points_f = NULL; - MPArray poly_f = NULL; - -@@ -43,88 +43,87 @@ - // Little n is the number of points on the polynomials. - // The constant term is randomized, so it's (mul_gates + 1). - const int n = mul_gates + 1; -- -+ - // Big N is n rounded up to a power of two. -- const int N = next_power_of_two (n); -+ const int N = next_power_of_two(n); - -- P_CHECKA (points_f = MPArray_new (N)); -- P_CHECKA (poly_f = MPArray_new (N)); -+ P_CHECKA(points_f = MPArray_new(N)); -+ P_CHECKA(poly_f = MPArray_new(N)); - - // Set constant term f(0) to random -- P_CHECKC (rand_int (&points_f->data[0], mod)); -- MP_CHECKC (mp_copy (&points_f->data[0], const_term)); -+ P_CHECKC(rand_int(&points_f->data[0], mod)); -+ MP_CHECKC(mp_copy(&points_f->data[0], const_term)); - - // Set other values of f(x) -- for (int i=1; idata[i-1], &points_f->data[i])); -+ for (int i = 1; i < n; i++) { -+ MP_CHECKC(mp_copy(&data_in->data[i - 1], &points_f->data[i])); - } - - // Interpolate through the Nth roots of unity -- P_CHECKC (poly_fft(poly_f, points_f, cfg, true)); -+ P_CHECKC(poly_fft(poly_f, points_f, cfg, true)); - -- // Evaluate at all 2N-th roots of unity. -+ // Evaluate at all 2N-th roots of unity. - // To do so, first resize the eval arrays and fill upper - // values with zeros. -- P_CHECKC (MPArray_resize (poly_f, 2*N)); -- P_CHECKC (MPArray_resize (evals_out, 2*N)); -- -+ P_CHECKC(MPArray_resize(poly_f, 2 * N)); -+ P_CHECKC(MPArray_resize(evals_out, 2 * N)); -+ - // Evaluate at the 2N-th roots of unity -- P_CHECKC (poly_fft(evals_out, poly_f, cfg, false)); -+ P_CHECKC(poly_fft(evals_out, poly_f, cfg, false)); - - cleanup: -- MPArray_clear (points_f); -- MPArray_clear (poly_f); -+ MPArray_clear(points_f); -+ MPArray_clear(poly_f); - - return rv; - } - -- - static SECStatus --share_polynomials (const_PrioConfig cfg, const_MPArray data_in, -- PrioPacketClient pA, PrioPacketClient pB, PRG prgB) -+share_polynomials(const_PrioConfig cfg, const_MPArray data_in, -+ PrioPacketClient pA, PrioPacketClient pB, PRG prgB) - { - SECStatus rv = SECSuccess; -- const mp_int *mod = &cfg->modulus; -+ const mp_int* mod = &cfg->modulus; - const_MPArray points_f = data_in; - - mp_int f0, g0; -- MP_DIGITS (&f0) = NULL; -- MP_DIGITS (&g0) = NULL; -+ MP_DIGITS(&f0) = NULL; -+ MP_DIGITS(&g0) = NULL; - - MPArray points_g = NULL; - MPArray evals_f_2N = NULL; - MPArray evals_g_2N = NULL; - -- P_CHECKA (points_g = MPArray_dup (points_f)); -- P_CHECKA (evals_f_2N = MPArray_new (0)); -- P_CHECKA (evals_g_2N = MPArray_new (0)); -- MP_CHECKC (mp_init (&f0)); -- MP_CHECKC (mp_init (&g0)); -+ P_CHECKA(points_g = MPArray_dup(points_f)); -+ P_CHECKA(evals_f_2N = MPArray_new(0)); -+ P_CHECKA(evals_g_2N = MPArray_new(0)); -+ MP_CHECKC(mp_init(&f0)); -+ MP_CHECKC(mp_init(&g0)); - -- for (int i=0; ilen; i++) { -+ for (int i = 0; i < points_f->len; i++) { - // For each input value x_i, we compute x_i * (x_i-1). - // f(i) = x_i - // g(i) = x_i - 1 -- MP_CHECKC (mp_sub_d (&points_g->data[i], 1, &points_g->data[i])); -- MP_CHECKC (mp_mod (&points_g->data[i], mod, &points_g->data[i])); -+ MP_CHECKC(mp_sub_d(&points_g->data[i], 1, &points_g->data[i])); -+ MP_CHECKC(mp_mod(&points_g->data[i], mod, &points_g->data[i])); - } - -- P_CHECKC (data_polynomial_evals(cfg, points_f, evals_f_2N, &f0)); -- P_CHECKC (data_polynomial_evals(cfg, points_g, evals_g_2N, &g0)); -+ P_CHECKC(data_polynomial_evals(cfg, points_f, evals_f_2N, &f0)); -+ P_CHECKC(data_polynomial_evals(cfg, points_g, evals_g_2N, &g0)); - - // The values f(0) and g(0) are set to random values. - // We must send to each server a share of the points - // f(0), g(0), and h(0) = f(0)*g(0) -- P_CHECKC (share_int (cfg, &f0, &pA->f0_share, &pB->f0_share)); -- P_CHECKC (share_int (cfg, &g0, &pA->g0_share, &pB->g0_share)); -+ P_CHECKC(share_int(cfg, &f0, &pA->f0_share, &pB->f0_share)); -+ P_CHECKC(share_int(cfg, &g0, &pA->g0_share, &pB->g0_share)); - - // Compute h(0) = f(0)*g(0). -- MP_CHECKC (mp_mulmod (&f0, &g0, mod, &f0)); -+ MP_CHECKC(mp_mulmod(&f0, &g0, mod, &f0)); - // Give one share of h(0) to each server. -- P_CHECKC (share_int (cfg, &f0, &pA->h0_share, &pB->h0_share)); -+ P_CHECKC(share_int(cfg, &f0, &pA->h0_share, &pB->h0_share)); - -- //const int lenN = (evals_f_2N->len/2); -- //P_CHECKC (MPArray_resize (pA->shares.A.h_points, lenN)); -+ // const int lenN = (evals_f_2N->len/2); -+ // P_CHECKC (MPArray_resize (pA->shares.A.h_points, lenN)); - - // We need to send to the servers the evaluations of - // f(r) * g(r) -@@ -135,34 +134,35 @@ - // send a share of this value to each server. - int j = 0; - for (int i = 1; i < evals_f_2N->len; i += 2) { -- MP_CHECKC (mp_mulmod (&evals_f_2N->data[i], &evals_g_2N->data[i], mod, &f0)); -- P_CHECKC (PRG_share_int (prgB, &pA->shares.A.h_points->data[j], &f0, cfg)); -+ MP_CHECKC(mp_mulmod(&evals_f_2N->data[i], &evals_g_2N->data[i], mod, &f0)); -+ P_CHECKC(PRG_share_int(prgB, &pA->shares.A.h_points->data[j], &f0, cfg)); - j++; - } - - cleanup: -- MPArray_clear (evals_f_2N); -- MPArray_clear (evals_g_2N); -- MPArray_clear (points_g); -- mp_clear (&f0); -- mp_clear (&g0); -+ MPArray_clear(evals_f_2N); -+ MPArray_clear(evals_g_2N); -+ MPArray_clear(points_g); -+ mp_clear(&f0); -+ mp_clear(&g0); - return rv; - } - - PrioPacketClient --PrioPacketClient_new (const_PrioConfig cfg, PrioServerId for_server) -+PrioPacketClient_new(const_PrioConfig cfg, PrioServerId for_server) - { -- SECStatus rv = SECSuccess; -+ SECStatus rv = SECSuccess; - const int data_len = cfg->num_data_fields; - PrioPacketClient p = NULL; -- p = malloc (sizeof (*p)); -- if (!p) return NULL; -+ p = malloc(sizeof(*p)); -+ if (!p) -+ return NULL; - - p->for_server = for_server; - p->triple = NULL; -- MP_DIGITS (&p->f0_share) = NULL; -- MP_DIGITS (&p->g0_share) = NULL; -- MP_DIGITS (&p->h0_share) = NULL; -+ MP_DIGITS(&p->f0_share) = NULL; -+ MP_DIGITS(&p->g0_share) = NULL; -+ MP_DIGITS(&p->h0_share) = NULL; - - switch (p->for_server) { - case PRIO_SERVER_A: -@@ -170,7 +170,7 @@ - p->shares.A.h_points = NULL; - break; - case PRIO_SERVER_B: -- memset (p->shares.B.seed, 0, PRG_SEED_LENGTH); -+ memset(p->shares.B.seed, 0, PRG_SEED_LENGTH); - break; - default: - // Should never get here -@@ -178,20 +178,20 @@ - goto cleanup; - } - -- MP_CHECKC (mp_init (&p->f0_share)); -- MP_CHECKC (mp_init (&p->g0_share)); -- MP_CHECKC (mp_init (&p->h0_share)); -- P_CHECKA (p->triple = BeaverTriple_new ()); -+ MP_CHECKC(mp_init(&p->f0_share)); -+ MP_CHECKC(mp_init(&p->g0_share)); -+ MP_CHECKC(mp_init(&p->h0_share)); -+ P_CHECKA(p->triple = BeaverTriple_new()); - - if (p->for_server == PRIO_SERVER_A) { -- const int num_h_points = PrioConfig_hPoints (cfg); -- P_CHECKA (p->shares.A.data_shares = MPArray_new (data_len)); -- P_CHECKA (p->shares.A.h_points = MPArray_new (num_h_points)); -+ const int num_h_points = PrioConfig_hPoints(cfg); -+ P_CHECKA(p->shares.A.data_shares = MPArray_new(data_len)); -+ P_CHECKA(p->shares.A.h_points = MPArray_new(num_h_points)); - } - - cleanup: - if (rv != SECSuccess) { -- PrioPacketClient_clear (p); -+ PrioPacketClient_clear(p); - return NULL; - } - -@@ -199,69 +199,74 @@ - } - - SECStatus --PrioPacketClient_set_data (const_PrioConfig cfg, const bool *data_in, -- PrioPacketClient pA, PrioPacketClient pB) -+PrioPacketClient_set_data(const_PrioConfig cfg, const bool* data_in, -+ PrioPacketClient pA, PrioPacketClient pB) - { - MPArray client_data = NULL; - PRG prgB = NULL; - SECStatus rv = SECSuccess; - const int data_len = cfg->num_data_fields; - -- if (!data_in) return SECFailure; -- -- P_CHECKC (PrioPRGSeed_randomize (&pB->shares.B.seed)); -- P_CHECKA (prgB = PRG_new (pB->shares.B.seed)); -+ if (!data_in) -+ return SECFailure; - -- P_CHECKC (BeaverTriple_set_rand (cfg, pA->triple, pB->triple)); -- P_CHECKA (client_data = MPArray_new_bool (data_len, data_in)); -- P_CHECKC (PRG_share_array (prgB, pA->shares.A.data_shares, -- client_data, cfg)); -- P_CHECKC (share_polynomials (cfg, client_data, pA, pB, prgB)); -+ P_CHECKC(PrioPRGSeed_randomize(&pB->shares.B.seed)); -+ P_CHECKA(prgB = PRG_new(pB->shares.B.seed)); -+ -+ P_CHECKC(BeaverTriple_set_rand(cfg, pA->triple, pB->triple)); -+ P_CHECKA(client_data = MPArray_new_bool(data_len, data_in)); -+ P_CHECKC(PRG_share_array(prgB, pA->shares.A.data_shares, client_data, cfg)); -+ P_CHECKC(share_polynomials(cfg, client_data, pA, pB, prgB)); - - cleanup: -- MPArray_clear (client_data); -- PRG_clear (prgB); -+ MPArray_clear(client_data); -+ PRG_clear(prgB); - - return rv; - } - - void --PrioPacketClient_clear (PrioPacketClient p) -+PrioPacketClient_clear(PrioPacketClient p) - { -- if (p == NULL) return; -+ if (p == NULL) -+ return; - - if (p->for_server == PRIO_SERVER_A) { -- MPArray_clear (p->shares.A.h_points); -- MPArray_clear (p->shares.A.data_shares); -+ MPArray_clear(p->shares.A.h_points); -+ MPArray_clear(p->shares.A.data_shares); - } - -- BeaverTriple_clear (p->triple); -- mp_clear (&p->f0_share); -- mp_clear (&p->g0_share); -- mp_clear (&p->h0_share); -- free (p); -+ BeaverTriple_clear(p->triple); -+ mp_clear(&p->f0_share); -+ mp_clear(&p->g0_share); -+ mp_clear(&p->h0_share); -+ free(p); - } - --bool --PrioPacketClient_areEqual (const_PrioPacketClient p1, -- const_PrioPacketClient p2) -+bool -+PrioPacketClient_areEqual(const_PrioPacketClient p1, const_PrioPacketClient p2) - { -- if (!BeaverTriple_areEqual (p1->triple, p2->triple)) return false; -- if (mp_cmp (&p1->f0_share, &p2->f0_share)) return false; -- if (mp_cmp (&p1->g0_share, &p2->g0_share)) return false; -- if (mp_cmp (&p1->h0_share, &p2->h0_share)) return false; -- if (p1->for_server != p2->for_server) return false; -+ if (!BeaverTriple_areEqual(p1->triple, p2->triple)) -+ return false; -+ if (mp_cmp(&p1->f0_share, &p2->f0_share)) -+ return false; -+ if (mp_cmp(&p1->g0_share, &p2->g0_share)) -+ return false; -+ if (mp_cmp(&p1->h0_share, &p2->h0_share)) -+ return false; -+ if (p1->for_server != p2->for_server) -+ return false; - - switch (p1->for_server) { - case PRIO_SERVER_A: -- if (!MPArray_areEqual (p1->shares.A.data_shares, -- p2->shares.A.data_shares)) return false; -- if (!MPArray_areEqual (p1->shares.A.h_points, -- p2->shares.A.h_points)) return false; -- break; -+ if (!MPArray_areEqual(p1->shares.A.data_shares, p2->shares.A.data_shares)) -+ return false; -+ if (!MPArray_areEqual(p1->shares.A.h_points, p2->shares.A.h_points)) -+ return false; -+ break; - case PRIO_SERVER_B: -- if (memcmp (p1->shares.B.seed, p2->shares.B.seed, -- PRG_SEED_LENGTH)) return false; -+ if (memcmp(p1->shares.B.seed, p2->shares.B.seed, PRG_SEED_LENGTH)) -+ return false; - break; - default: - // Should never get here. -@@ -271,83 +276,85 @@ - return true; - } - --SECStatus --PrioClient_encode (const_PrioConfig cfg, const bool *data_in, -- unsigned char **for_server_a, unsigned int *aLen, -- unsigned char **for_server_b, unsigned int *bLen) -+SECStatus -+PrioClient_encode(const_PrioConfig cfg, const bool* data_in, -+ unsigned char** for_server_a, unsigned int* aLen, -+ unsigned char** for_server_b, unsigned int* bLen) - { - SECStatus rv = SECSuccess; - PrioPacketClient pA = NULL; - PrioPacketClient pB = NULL; - *for_server_a = NULL; - *for_server_b = NULL; -- -- P_CHECKA (pA = PrioPacketClient_new (cfg, PRIO_SERVER_A)); -- P_CHECKA (pB = PrioPacketClient_new (cfg, PRIO_SERVER_B)); -+ -+ P_CHECKA(pA = PrioPacketClient_new(cfg, PRIO_SERVER_A)); -+ P_CHECKA(pB = PrioPacketClient_new(cfg, PRIO_SERVER_B)); - - msgpack_sbuffer sbufA, sbufB; - msgpack_packer packerA, packerB; - -- msgpack_sbuffer_init (&sbufA); -- msgpack_sbuffer_init (&sbufB); -- msgpack_packer_init (&packerA, &sbufA, msgpack_sbuffer_write); -- msgpack_packer_init (&packerB, &sbufB, msgpack_sbuffer_write); -+ msgpack_sbuffer_init(&sbufA); -+ msgpack_sbuffer_init(&sbufB); -+ msgpack_packer_init(&packerA, &sbufA, msgpack_sbuffer_write); -+ msgpack_packer_init(&packerB, &sbufB, msgpack_sbuffer_write); - -- P_CHECKC (PrioPacketClient_set_data (cfg, data_in, pA, pB)); -- P_CHECKC (serial_write_packet_client (&packerA, pA, cfg)); -- P_CHECKC (serial_write_packet_client (&packerB, pB, cfg)); -+ P_CHECKC(PrioPacketClient_set_data(cfg, data_in, pA, pB)); -+ P_CHECKC(serial_write_packet_client(&packerA, pA, cfg)); -+ P_CHECKC(serial_write_packet_client(&packerB, pB, cfg)); - -- P_CHECKC (PublicKey_encryptSize (sbufA.size, aLen)); -- P_CHECKC (PublicKey_encryptSize (sbufB.size, bLen)); -+ P_CHECKC(PublicKey_encryptSize(sbufA.size, aLen)); -+ P_CHECKC(PublicKey_encryptSize(sbufB.size, bLen)); - -- P_CHECKA (*for_server_a = malloc (*aLen)); -- P_CHECKA (*for_server_b = malloc (*bLen)); -+ P_CHECKA(*for_server_a = malloc(*aLen)); -+ P_CHECKA(*for_server_b = malloc(*bLen)); - - unsigned int writtenA; - unsigned int writtenB; -- P_CHECKC (PublicKey_encrypt (cfg->server_a_pub, *for_server_a, &writtenA, *aLen, -- (unsigned char *)sbufA.data, sbufA.size)); -- P_CHECKC (PublicKey_encrypt (cfg->server_b_pub, *for_server_b, &writtenB, *bLen, -- (unsigned char *)sbufB.data, sbufB.size)); -+ P_CHECKC(PublicKey_encrypt(cfg->server_a_pub, *for_server_a, &writtenA, *aLen, -+ (unsigned char*)sbufA.data, sbufA.size)); -+ P_CHECKC(PublicKey_encrypt(cfg->server_b_pub, *for_server_b, &writtenB, *bLen, -+ (unsigned char*)sbufB.data, sbufB.size)); - -- P_CHECKCB (writtenA == *aLen); -- P_CHECKCB (writtenB == *bLen); -+ P_CHECKCB(writtenA == *aLen); -+ P_CHECKCB(writtenB == *bLen); - - cleanup: - if (rv != SECSuccess) { -- if (*for_server_a) free (*for_server_a); -- if (*for_server_b) free (*for_server_b); -+ if (*for_server_a) -+ free(*for_server_a); -+ if (*for_server_b) -+ free(*for_server_b); - *for_server_a = NULL; - *for_server_b = NULL; - } - -- PrioPacketClient_clear (pA); -- PrioPacketClient_clear (pB); -- msgpack_sbuffer_destroy (&sbufA); -- msgpack_sbuffer_destroy (&sbufB); -- -+ PrioPacketClient_clear(pA); -+ PrioPacketClient_clear(pB); -+ msgpack_sbuffer_destroy(&sbufA); -+ msgpack_sbuffer_destroy(&sbufB); -+ - return rv; - } - --SECStatus --PrioPacketClient_decrypt (PrioPacketClient p, const_PrioConfig cfg, -- PrivateKey server_priv, const unsigned char *data_in, unsigned int data_len) -+SECStatus -+PrioPacketClient_decrypt(PrioPacketClient p, const_PrioConfig cfg, -+ PrivateKey server_priv, const unsigned char* data_in, -+ unsigned int data_len) - { - SECStatus rv = SECSuccess; - msgpack_unpacker upk; -- P_CHECKCB (msgpack_unpacker_init (&upk, data_len)); -+ P_CHECKCB(msgpack_unpacker_init(&upk, data_len)); - - // Decrypt the ciphertext into dec_buf - unsigned int bytes_decrypted; -- P_CHECKC (PrivateKey_decrypt (server_priv, -- (unsigned char *)msgpack_unpacker_buffer (&upk), &bytes_decrypted, -- data_len, data_in, data_len)); -- msgpack_unpacker_buffer_consumed (&upk, bytes_decrypted); -+ P_CHECKC(PrivateKey_decrypt(server_priv, -+ (unsigned char*)msgpack_unpacker_buffer(&upk), -+ &bytes_decrypted, data_len, data_in, data_len)); -+ msgpack_unpacker_buffer_consumed(&upk, bytes_decrypted); - -- P_CHECKC (serial_read_packet_client (&upk, p, cfg)); -+ P_CHECKC(serial_read_packet_client(&upk, p, cfg)); - - cleanup: -- msgpack_unpacker_destroy (&upk); -+ msgpack_unpacker_destroy(&upk); - return rv; - } -- -diff --git a/third_party/prio/prio/config.h b/third_party/prio/prio/config.h ---- a/third_party/prio/prio/config.h -+++ b/third_party/prio/prio/config.h -@@ -1,9 +1,9 @@ - /* - * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -+ * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - - #ifndef __CONFIG_H__ -@@ -13,12 +13,12 @@ - - #include "mparray.h" - --struct prio_config { -+struct prio_config -+{ - int num_data_fields; -- unsigned char *batch_id; -+ unsigned char* batch_id; - unsigned int batch_id_len; - -- - PublicKey server_a_pub; - PublicKey server_b_pub; - -@@ -30,7 +30,6 @@ - MPArray rootsInv; - }; - --int PrioConfig_hPoints (const_PrioConfig cfg); -+int PrioConfig_hPoints(const_PrioConfig cfg); - - #endif /* __CONFIG_H__ */ -- -diff --git a/third_party/prio/prio/config.c b/third_party/prio/prio/config.c ---- a/third_party/prio/prio/config.c -+++ b/third_party/prio/prio/config.c -@@ -1,47 +1,47 @@ - /* - * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -+ * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - - #include - #include - - #include "config.h" -+#include "mparray.h" - #include "params.h" --#include "mparray.h" - #include "rand.h" - #include "util.h" - - // The PrioConfig object stores "2^k-th roots of unity" modulo --// the prime modulus we use for all arithmetic. We use --// these roots to perform fast FFT-style polynomial -+// the prime modulus we use for all arithmetic. We use -+// these roots to perform fast FFT-style polynomial - // interpolation and evaluation. - // --// In particular, we use a prime modulus p such that -+// In particular, we use a prime modulus p such that - // p = (2^k)q + 1. - // The roots are integers such that r^{2^k} = 1 mod p. - static SECStatus --initialize_roots (MPArray arr, const char *values[]) -+initialize_roots(MPArray arr, const char* values[]) - { - // TODO: Read in only the number of roots of unity we need. - // Right now we read in all 4096 roots whether or not we use - // them all. -- for (int i=0; i < arr->len; i++) { -- MP_CHECK (mp_read_radix (&arr->data[i], values[i], 16)); -+ for (int i = 0; i < arr->len; i++) { -+ MP_CHECK(mp_read_radix(&arr->data[i], values[i], 16)); - } -- -+ - return SECSuccess; - } - --PrioConfig --PrioConfig_new (int n_fields, PublicKey server_a, PublicKey server_b, -- const unsigned char *batch_id, unsigned int batch_id_len) -+PrioConfig -+PrioConfig_new(int n_fields, PublicKey server_a, PublicKey server_b, -+ const unsigned char* batch_id, unsigned int batch_id_len) - { - SECStatus rv = SECSuccess; -- PrioConfig cfg = malloc (sizeof (*cfg)); -+ PrioConfig cfg = malloc(sizeof(*cfg)); - if (!cfg) - return NULL; - -@@ -61,72 +61,73 @@ - goto cleanup; - } - -- P_CHECKA (cfg->batch_id = malloc (batch_id_len)); -- strncpy ((char *)cfg->batch_id, (char *)batch_id, batch_id_len); -+ P_CHECKA(cfg->batch_id = malloc(batch_id_len)); -+ strncpy((char*)cfg->batch_id, (char*)batch_id, batch_id_len); - -- MP_CHECKC (mp_init (&cfg->modulus)); -- MP_CHECKC (mp_read_radix (&cfg->modulus, Modulus, 16)); -+ MP_CHECKC(mp_init(&cfg->modulus)); -+ MP_CHECKC(mp_read_radix(&cfg->modulus, Modulus, 16)); - - // Compute 2^{-1} modulo M -- MP_CHECKC (mp_init (&cfg->inv2)); -- mp_set (&cfg->inv2, 2); -- MP_CHECKC (mp_invmod (&cfg->inv2, &cfg->modulus, &cfg->inv2)); -+ MP_CHECKC(mp_init(&cfg->inv2)); -+ mp_set(&cfg->inv2, 2); -+ MP_CHECKC(mp_invmod(&cfg->inv2, &cfg->modulus, &cfg->inv2)); - -- P_CHECKA (cfg->roots = MPArray_new (cfg->n_roots)); -- P_CHECKA (cfg->rootsInv = MPArray_new (cfg->n_roots)); -- MP_CHECKC (initialize_roots (cfg->roots, Roots)); -- MP_CHECKC (initialize_roots (cfg->rootsInv, RootsInv)); -+ P_CHECKA(cfg->roots = MPArray_new(cfg->n_roots)); -+ P_CHECKA(cfg->rootsInv = MPArray_new(cfg->n_roots)); -+ MP_CHECKC(initialize_roots(cfg->roots, Roots)); -+ MP_CHECKC(initialize_roots(cfg->rootsInv, RootsInv)); - - cleanup: - if (rv != SECSuccess) { -- PrioConfig_clear (cfg); -+ PrioConfig_clear(cfg); - return NULL; - } - - return cfg; - } - --PrioConfig --PrioConfig_newTest (int nFields) --{ -- return PrioConfig_new (nFields, NULL, NULL, -- (unsigned char *)"testBatch", 9); --} -- --void --PrioConfig_clear (PrioConfig cfg) -+PrioConfig -+PrioConfig_newTest(int nFields) - { -- if (!cfg) return; -- if (cfg->batch_id) free (cfg->batch_id); -- MPArray_clear (cfg->roots); -- MPArray_clear (cfg->rootsInv); -- mp_clear (&cfg->modulus); -- mp_clear (&cfg->inv2); -- free (cfg); --} -- --int --PrioConfig_numDataFields (const_PrioConfig cfg) --{ -- return cfg->num_data_fields; -- --} -- --SECStatus --Prio_init (void) --{ -- return rand_init (); -+ return PrioConfig_new(nFields, NULL, NULL, (unsigned char*)"testBatch", 9); - } - - void --Prio_clear (void) -+PrioConfig_clear(PrioConfig cfg) - { -- rand_clear (); -+ if (!cfg) -+ return; -+ if (cfg->batch_id) -+ free(cfg->batch_id); -+ MPArray_clear(cfg->roots); -+ MPArray_clear(cfg->rootsInv); -+ mp_clear(&cfg->modulus); -+ mp_clear(&cfg->inv2); -+ free(cfg); -+} -+ -+int -+PrioConfig_numDataFields(const_PrioConfig cfg) -+{ -+ return cfg->num_data_fields; - } - --int PrioConfig_hPoints (const_PrioConfig cfg) -+SECStatus -+Prio_init(void) -+{ -+ return rand_init(); -+} -+ -+void -+Prio_clear(void) -+{ -+ rand_clear(); -+} -+ -+int -+PrioConfig_hPoints(const_PrioConfig cfg) - { - const int mul_gates = cfg->num_data_fields + 1; -- const int N = next_power_of_two (mul_gates); -+ const int N = next_power_of_two(mul_gates); - return N; - } -diff --git a/third_party/prio/prio/debug.h b/third_party/prio/prio/debug.h ---- a/third_party/prio/prio/debug.h -+++ b/third_party/prio/prio/debug.h -@@ -1,9 +1,9 @@ - /* - * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -+ * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - - #ifndef __DEBUG_H__ -@@ -12,10 +12,12 @@ - #include - - #ifdef DEBUG --#define PRIO_DEBUG(msg) do { fprintf(stderr, "Error: %s\n", msg); } while(false); -+#define PRIO_DEBUG(msg) \ -+ do { \ -+ fprintf(stderr, "Error: %s\n", msg); \ -+ } while (false); - #else - #define PRIO_DEBUG(msg) ; - #endif - - #endif /* __DEBUG_H__ */ -- -diff --git a/third_party/prio/prio/encrypt.h b/third_party/prio/prio/encrypt.h ---- a/third_party/prio/prio/encrypt.h -+++ b/third_party/prio/prio/encrypt.h -@@ -1,12 +1,11 @@ - /* - * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -+ * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -- - #ifndef __ENCRYPT_H__ - #define __ENCRYPT_H__ - -@@ -15,7 +14,7 @@ - - /******* - * These functions attempt to implement CCA-secure public-key encryption using -- * the NSS library. We use hashed-ElGamal encryption with Curve25519 as the -+ * the NSS library. We use hashed-ElGamal encryption with Curve25519 as the - * underlying group and AES128-GCM as the bulk encryption mode of operation. - * - * I make no guarantees that I am using NSS correctly or that this encryption -@@ -25,7 +24,7 @@ - * to implement these functions. - */ - --/* -+/* - * Messages encrypted using this library must be smaller than MAX_ENCRYPT_LEN. - * Enforcing this length limit helps avoid integer overflow. - */ -@@ -38,12 +37,12 @@ - * is too large (larger than `MAX_ENCRYPT_LEN`), this function returns - * an error. - */ --SECStatus PublicKey_encryptSize (unsigned int inputLen, unsigned int *outputLen); -+SECStatus PublicKey_encryptSize(unsigned int inputLen, unsigned int* outputLen); - - /* - * Generate a new keypair for public-key encryption. - */ --SECStatus Keypair_new (PrivateKey *pvtkey, PublicKey *pubkey); -+SECStatus Keypair_new(PrivateKey* pvtkey, PublicKey* pubkey); - - /* - * Encrypt an arbitrary bitstring to the specified public key. The buffer -@@ -53,22 +52,17 @@ - * - * The value `inputLen` must be smaller than `MAX_ENCRYPT_LEN`. - */ --SECStatus PublicKey_encrypt (PublicKey pubkey, -- unsigned char *output, -- unsigned int *outputLen, -- unsigned int maxOutputLen, -- const unsigned char *input, unsigned int inputLen); -+SECStatus PublicKey_encrypt(PublicKey pubkey, unsigned char* output, -+ unsigned int* outputLen, unsigned int maxOutputLen, -+ const unsigned char* input, unsigned int inputLen); - - /* - * Decrypt an arbitrary bitstring using the specified private key. The output - * buffer should be at least 16 bytes larger than the plaintext you expect. If - * `outputLen` >= `inputLen`, you should be safe. - */ --SECStatus PrivateKey_decrypt (PrivateKey privkey, -- unsigned char *output, -- unsigned int *outputLen, -- unsigned int maxOutputLen, -- const unsigned char *input, unsigned int inputLen); -+SECStatus PrivateKey_decrypt(PrivateKey privkey, unsigned char* output, -+ unsigned int* outputLen, unsigned int maxOutputLen, -+ const unsigned char* input, unsigned int inputLen); - - #endif /* __ENCRYPT_H__ */ -- -diff --git a/third_party/prio/prio/encrypt.c b/third_party/prio/prio/encrypt.c ---- a/third_party/prio/prio/encrypt.c -+++ b/third_party/prio/prio/encrypt.c -@@ -1,14 +1,14 @@ - /* - * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -+ * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - --#include --#include --#include -+#include -+#include -+#include - #include - - #include "encrypt.h" -@@ -24,222 +24,251 @@ - #define GCM_TAG_LEN_BYTES 16 - - #define PRIO_TAG "PrioPacket" --#define AAD_LEN (strlen (PRIO_TAG) + CURVE25519_KEY_LEN + GCM_IV_LEN_BYTES) -+#define AAD_LEN (strlen(PRIO_TAG) + CURVE25519_KEY_LEN + GCM_IV_LEN_BYTES) - - // The all-zeros curve25519 public key, as DER-encoded SKPI blob. - static const uint8_t curve25519_spki_zeros[] = { -- 0x30, 0x39, 0x30, 0x14, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x09, 0x2b, -- 0x06, 0x01, 0x04, 0x01, 0xda, 0x47, 0x0f, 0x01, 0x03, 0x21, -- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -- 0x00, -+ 0x30, 0x39, 0x30, 0x14, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, -+ 0x01, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xda, 0x47, 0x0f, 0x01, -+ 0x03, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - -+// Note that we do not use isxdigit because it is locale-dependent -+// See: https://github.com/mozilla/libprio/issues/20 -+static inline char -+is_hex_digit(char c) -+{ -+ return ('0' <= c && c <= '9') || ('a' <= c && c <= 'f') || -+ ('A' <= c && c <= 'F'); -+} -+ -+// Note that we do not use toupper because it is locale-dependent -+// See: https://github.com/mozilla/libprio/issues/20 -+static inline char -+to_upper(char c) -+{ -+ if (c >= 'a' && c <= 'z') { -+ return c - 0x20; -+ } else { -+ return c; -+ } -+} -+ - static inline uint8_t --hex_to_int (char h) -+hex_to_int(char h) - { -- return (h > '9') ? toupper (h) - 'A' + 10 : (h - '0'); -+ return (h > '9') ? to_upper(h) - 'A' + 10 : (h - '0'); - } - --static inline unsigned char --int_to_hex (uint8_t i) -+static inline unsigned char -+int_to_hex(uint8_t i) - { - return (i > 0x09) ? ((i - 10) + 'A') : i + '0'; - } - -- --static SECStatus --derive_dh_secret (PK11SymKey **shared_secret, PrivateKey priv, PublicKey pub) -+static SECStatus -+derive_dh_secret(PK11SymKey** shared_secret, PrivateKey priv, PublicKey pub) - { -- if (priv == NULL) return SECFailure; -- if (pub == NULL) return SECFailure; -- if (shared_secret == NULL) return SECFailure; -+ if (priv == NULL) -+ return SECFailure; -+ if (pub == NULL) -+ return SECFailure; -+ if (shared_secret == NULL) -+ return SECFailure; - - SECStatus rv = SECSuccess; - *shared_secret = NULL; - -- P_CHECKA (*shared_secret = PK11_PubDeriveWithKDF (priv, pub, PR_FALSE, -- NULL, NULL, CKM_ECDH1_DERIVE, CKM_AES_GCM, -- CKA_ENCRYPT | CKA_DECRYPT, 16, -- CKD_SHA256_KDF, NULL, NULL)); -+ P_CHECKA(*shared_secret = PK11_PubDeriveWithKDF( -+ priv, pub, PR_FALSE, NULL, NULL, CKM_ECDH1_DERIVE, CKM_AES_GCM, -+ CKA_ENCRYPT | CKA_DECRYPT, 16, CKD_SHA256_KDF, NULL, NULL)); - - cleanup: - return rv; - } - - SECStatus --PublicKey_import (PublicKey *pk, const unsigned char *data, unsigned int dataLen) -+PublicKey_import(PublicKey* pk, const unsigned char* data, unsigned int dataLen) - { - SECStatus rv = SECSuccess; -- CERTSubjectPublicKeyInfo *pkinfo = NULL; -+ CERTSubjectPublicKeyInfo* pkinfo = NULL; - *pk = NULL; - - if (dataLen != CURVE25519_KEY_LEN) - return SECFailure; - - unsigned char key_bytes[dataLen]; -- memcpy (key_bytes, data, dataLen); -+ memcpy(key_bytes, data, dataLen); - -- const int spki_len = sizeof (curve25519_spki_zeros); -+ const int spki_len = sizeof(curve25519_spki_zeros); - uint8_t spki_data[spki_len]; -- memcpy (spki_data, curve25519_spki_zeros, spki_len); -+ memcpy(spki_data, curve25519_spki_zeros, spki_len); - SECItem spki_item = { siBuffer, spki_data, spki_len }; - -- // Import the all-zeros curve25519 public key. -- P_CHECKA (pkinfo = SECKEY_DecodeDERSubjectPublicKeyInfo (&spki_item)); -- P_CHECKA (*pk = SECKEY_ExtractPublicKey (pkinfo)); -+ // Import the all-zeros curve25519 public key. -+ P_CHECKA(pkinfo = SECKEY_DecodeDERSubjectPublicKeyInfo(&spki_item)); -+ P_CHECKA(*pk = SECKEY_ExtractPublicKey(pkinfo)); - - // Overwrite the all-zeros public key with the 32-byte curve25519 public key - // given as input. -- memcpy ((*pk)->u.ec.publicValue.data, data, CURVE25519_KEY_LEN); -+ memcpy((*pk)->u.ec.publicValue.data, data, CURVE25519_KEY_LEN); - - cleanup: -- if (pkinfo) -- SECKEY_DestroySubjectPublicKeyInfo (pkinfo); -+ if (pkinfo) -+ SECKEY_DestroySubjectPublicKeyInfo(pkinfo); - - if (rv != SECSuccess) -- PublicKey_clear (*pk); -+ PublicKey_clear(*pk); - return rv; - } - - SECStatus --PublicKey_import_hex (PublicKey *pk, const unsigned char *hex_data, unsigned int dataLen) -+PublicKey_import_hex(PublicKey* pk, const unsigned char* hex_data, -+ unsigned int dataLen) - { - unsigned char raw_bytes[CURVE25519_KEY_LEN]; - - if (dataLen != CURVE25519_KEY_LEN_HEX) - return SECFailure; - -- for (unsigned int i=0; iu.ec.publicValue.data, CURVE25519_KEY_LEN); -+ memcpy(data, pk->u.ec.publicValue.data, CURVE25519_KEY_LEN); - - return SECSuccess; - } - --SECStatus --PublicKey_export_hex (const_PublicKey pk, unsigned char data[(2*CURVE25519_KEY_LEN)+1]) -+SECStatus -+PublicKey_export_hex(const_PublicKey pk, -+ unsigned char data[(2 * CURVE25519_KEY_LEN) + 1]) - { - unsigned char raw_data[CURVE25519_KEY_LEN]; -- if (PublicKey_export (pk, raw_data) != SECSuccess) -+ if (PublicKey_export(pk, raw_data) != SECSuccess) - return SECFailure; - -- const unsigned char *p = raw_data; -- for (unsigned int i=0; i> 4; -- data[2*i] = int_to_hex (byteu); -- data[2*i + 1] = int_to_hex (bytel); -+ data[2 * i] = int_to_hex(byteu); -+ data[2 * i + 1] = int_to_hex(bytel); - p++; - } - -- data[2*CURVE25519_KEY_LEN] = '\0'; -+ data[2 * CURVE25519_KEY_LEN] = '\0'; - return SECSuccess; - } - --SECStatus --Keypair_new (PrivateKey *pvtkey, PublicKey *pubkey) -+SECStatus -+Keypair_new(PrivateKey* pvtkey, PublicKey* pubkey) - { -- if (pvtkey == NULL) return SECFailure; -- if (pubkey == NULL) return SECFailure; -+ if (pvtkey == NULL) -+ return SECFailure; -+ if (pubkey == NULL) -+ return SECFailure; - - SECStatus rv = SECSuccess; -- SECOidData *oid_data = NULL; -+ SECOidData* oid_data = NULL; - *pubkey = NULL; - *pvtkey = NULL; - - SECKEYECParams ecp; - ecp.data = NULL; -- PK11SlotInfo *slot = NULL; -+ PK11SlotInfo* slot = NULL; - -- P_CHECKA (oid_data = SECOID_FindOIDByTag (CURVE_OID_TAG)); -+ P_CHECKA(oid_data = SECOID_FindOIDByTag(CURVE_OID_TAG)); - const int oid_struct_len = 2 + oid_data->oid.len; - -- P_CHECKA (ecp.data = malloc (oid_struct_len)); -+ P_CHECKA(ecp.data = malloc(oid_struct_len)); - ecp.len = oid_struct_len; -- -+ - ecp.type = siDEROID; - - ecp.data[0] = SEC_ASN1_OBJECT_ID; - ecp.data[1] = oid_data->oid.len; -- memcpy (&ecp.data[2], oid_data->oid.data, oid_data->oid.len); -+ memcpy(&ecp.data[2], oid_data->oid.data, oid_data->oid.len); - -- P_CHECKA (slot = PK11_GetInternalSlot ()); -- P_CHECKA (*pvtkey = PK11_GenerateKeyPair(slot, CKM_EC_KEY_PAIR_GEN, &ecp, -- (SECKEYPublicKey **)pubkey, PR_FALSE, PR_FALSE, NULL)); -- PK11_FreeSlot (slot); -+ P_CHECKA(slot = PK11_GetInternalSlot()); -+ P_CHECKA(*pvtkey = PK11_GenerateKeyPair(slot, CKM_EC_KEY_PAIR_GEN, &ecp, -+ (SECKEYPublicKey**)pubkey, PR_FALSE, -+ PR_FALSE, NULL)); -+ PK11_FreeSlot(slot); - - cleanup: - if (ecp.data) -- free (ecp.data); -+ free(ecp.data); - if (rv != SECSuccess) { -- PublicKey_clear (*pubkey); -- PrivateKey_clear (*pvtkey); -+ PublicKey_clear(*pubkey); -+ PrivateKey_clear(*pvtkey); - } - return rv; - } - --void --PublicKey_clear (PublicKey pubkey) -+void -+PublicKey_clear(PublicKey pubkey) - { -- if (pubkey) -+ if (pubkey) - SECKEY_DestroyPublicKey(pubkey); - } - --void --PrivateKey_clear (PrivateKey pvtkey) -+void -+PrivateKey_clear(PrivateKey pvtkey) - { -- if (pvtkey) -- SECKEY_DestroyPrivateKey(pvtkey); -+ if (pvtkey) -+ SECKEY_DestroyPrivateKey(pvtkey); - } - --const SECItem * --PublicKey_toBytes (const_PublicKey pubkey) -+const SECItem* -+PublicKey_toBytes(const_PublicKey pubkey) - { - return &pubkey->u.ec.publicValue; - } - - SECStatus --PublicKey_encryptSize (unsigned int inputLen, unsigned int *outputLen) -+PublicKey_encryptSize(unsigned int inputLen, unsigned int* outputLen) - { - if (outputLen == NULL || inputLen >= MAX_ENCRYPT_LEN) - return SECFailure; - - // public key, IV, tag, and input -- *outputLen = CURVE25519_KEY_LEN + GCM_IV_LEN_BYTES + GCM_TAG_LEN_BYTES + inputLen; -+ *outputLen = -+ CURVE25519_KEY_LEN + GCM_IV_LEN_BYTES + GCM_TAG_LEN_BYTES + inputLen; - return SECSuccess; - } - --static void --set_gcm_params (SECItem *paramItem, CK_GCM_PARAMS *param, unsigned char *nonce, -- const_PublicKey pubkey, unsigned char *aadBuf) -+static void -+set_gcm_params(SECItem* paramItem, CK_GCM_PARAMS* param, unsigned char* nonce, -+ const_PublicKey pubkey, unsigned char* aadBuf) - { - int offset = 0; -- memcpy (aadBuf, PRIO_TAG, strlen (PRIO_TAG)); -- offset += strlen (PRIO_TAG); -- memcpy (aadBuf + offset, PublicKey_toBytes (pubkey)->data, CURVE25519_KEY_LEN); -+ memcpy(aadBuf, PRIO_TAG, strlen(PRIO_TAG)); -+ offset += strlen(PRIO_TAG); -+ memcpy(aadBuf + offset, PublicKey_toBytes(pubkey)->data, CURVE25519_KEY_LEN); - offset += CURVE25519_KEY_LEN; -- memcpy (aadBuf + offset, nonce, GCM_IV_LEN_BYTES); -- -+ memcpy(aadBuf + offset, nonce, GCM_IV_LEN_BYTES); -+ - param->pIv = nonce; - param->ulIvLen = GCM_IV_LEN_BYTES; - param->pAAD = aadBuf; -@@ -247,17 +276,14 @@ - param->ulTagBits = GCM_TAG_LEN_BYTES * 8; - - paramItem->type = siBuffer; -- paramItem->data = (void *)param; -- paramItem->len = sizeof (*param); -- -+ paramItem->data = (void*)param; -+ paramItem->len = sizeof(*param); - } - --SECStatus --PublicKey_encrypt (PublicKey pubkey, -- unsigned char *output, -- unsigned int *outputLen, -- unsigned int maxOutputLen, -- const unsigned char *input, unsigned int inputLen) -+SECStatus -+PublicKey_encrypt(PublicKey pubkey, unsigned char* output, -+ unsigned int* outputLen, unsigned int maxOutputLen, -+ const unsigned char* input, unsigned int inputLen) - { - if (pubkey == NULL) - return SECFailure; -@@ -266,55 +292,53 @@ - return SECFailure; - - unsigned int needLen; -- if (PublicKey_encryptSize (inputLen, &needLen) != SECSuccess) -+ if (PublicKey_encryptSize(inputLen, &needLen) != SECSuccess) - return SECFailure; - -- if (maxOutputLen < needLen) -+ if (maxOutputLen < needLen) - return SECFailure; - - SECStatus rv = SECSuccess; -- PublicKey eph_pub = NULL; -- PrivateKey eph_priv = NULL; -- PK11SymKey *aes_key = NULL; -+ PublicKey eph_pub = NULL; -+ PrivateKey eph_priv = NULL; -+ PK11SymKey* aes_key = NULL; - - unsigned char nonce[GCM_IV_LEN_BYTES]; - unsigned char aadBuf[AAD_LEN]; -- P_CHECKC (rand_bytes (nonce, GCM_IV_LEN_BYTES)); -+ P_CHECKC(rand_bytes(nonce, GCM_IV_LEN_BYTES)); - -- P_CHECKC (Keypair_new (&eph_priv, &eph_pub)); -- P_CHECKC (derive_dh_secret (&aes_key, eph_priv, pubkey)); -+ P_CHECKC(Keypair_new(&eph_priv, &eph_pub)); -+ P_CHECKC(derive_dh_secret(&aes_key, eph_priv, pubkey)); - - CK_GCM_PARAMS param; - SECItem paramItem; -- set_gcm_params (¶mItem, ¶m, nonce, eph_pub, aadBuf); -+ set_gcm_params(¶mItem, ¶m, nonce, eph_pub, aadBuf); - -- const SECItem *pk = PublicKey_toBytes (eph_pub); -- P_CHECKCB (pk->len == CURVE25519_KEY_LEN); -- memcpy (output, pk->data, pk->len); -- memcpy (output + CURVE25519_KEY_LEN, param.pIv, param.ulIvLen); -+ const SECItem* pk = PublicKey_toBytes(eph_pub); -+ P_CHECKCB(pk->len == CURVE25519_KEY_LEN); -+ memcpy(output, pk->data, pk->len); -+ memcpy(output + CURVE25519_KEY_LEN, param.pIv, param.ulIvLen); - - const int offset = CURVE25519_KEY_LEN + param.ulIvLen; -- P_CHECKC (PK11_Encrypt (aes_key, CKM_AES_GCM, ¶mItem, output + offset, -- outputLen, maxOutputLen - offset, input, inputLen)); -+ P_CHECKC(PK11_Encrypt(aes_key, CKM_AES_GCM, ¶mItem, output + offset, -+ outputLen, maxOutputLen - offset, input, inputLen)); - *outputLen = *outputLen + CURVE25519_KEY_LEN + GCM_IV_LEN_BYTES; - - cleanup: -- PublicKey_clear (eph_pub); -- PrivateKey_clear (eph_priv); -- if (aes_key) -- PK11_FreeSymKey (aes_key); -+ PublicKey_clear(eph_pub); -+ PrivateKey_clear(eph_priv); -+ if (aes_key) -+ PK11_FreeSymKey(aes_key); - - return rv; - } - --SECStatus --PrivateKey_decrypt (PrivateKey privkey, -- unsigned char *output, -- unsigned int *outputLen, -- unsigned int maxOutputLen, -- const unsigned char *input, unsigned int inputLen) -+SECStatus -+PrivateKey_decrypt(PrivateKey privkey, unsigned char* output, -+ unsigned int* outputLen, unsigned int maxOutputLen, -+ const unsigned char* input, unsigned int inputLen) - { -- PK11SymKey *aes_key = NULL; -+ PK11SymKey* aes_key = NULL; - PublicKey eph_pub = NULL; - unsigned char aad_buf[AAD_LEN]; - -@@ -323,34 +347,33 @@ - - SECStatus rv = SECSuccess; - unsigned int headerLen; -- if (PublicKey_encryptSize (0, &headerLen) != SECSuccess) -+ if (PublicKey_encryptSize(0, &headerLen) != SECSuccess) - return SECFailure; - -- if (inputLen < headerLen) -+ if (inputLen < headerLen) - return SECFailure; - - const unsigned int msglen = inputLen - headerLen; - if (maxOutputLen < msglen || msglen >= MAX_ENCRYPT_LEN) - return SECFailure; - -- P_CHECKC (PublicKey_import (&eph_pub, input, CURVE25519_KEY_LEN)); -+ P_CHECKC(PublicKey_import(&eph_pub, input, CURVE25519_KEY_LEN)); - unsigned char nonce[GCM_IV_LEN_BYTES]; -- memcpy (nonce, input + CURVE25519_KEY_LEN, GCM_IV_LEN_BYTES); -+ memcpy(nonce, input + CURVE25519_KEY_LEN, GCM_IV_LEN_BYTES); - - SECItem paramItem; - CK_GCM_PARAMS param; -- set_gcm_params (¶mItem, ¶m, nonce, eph_pub, aad_buf); -- -- P_CHECKC (derive_dh_secret (&aes_key, privkey, eph_pub)); -+ set_gcm_params(¶mItem, ¶m, nonce, eph_pub, aad_buf); -+ -+ P_CHECKC(derive_dh_secret(&aes_key, privkey, eph_pub)); - - const int offset = CURVE25519_KEY_LEN + GCM_IV_LEN_BYTES; -- P_CHECKC (PK11_Decrypt (aes_key, CKM_AES_GCM, ¶mItem, output, -- outputLen, maxOutputLen, input + offset, inputLen - offset)); -+ P_CHECKC(PK11_Decrypt(aes_key, CKM_AES_GCM, ¶mItem, output, outputLen, -+ maxOutputLen, input + offset, inputLen - offset)); - - cleanup: -- PublicKey_clear (eph_pub); -- if (aes_key) -- PK11_FreeSymKey (aes_key); -+ PublicKey_clear(eph_pub); -+ if (aes_key) -+ PK11_FreeSymKey(aes_key); - return rv; - } -- -diff --git a/third_party/prio/prio/mparray.h b/third_party/prio/prio/mparray.h ---- a/third_party/prio/prio/mparray.h -+++ b/third_party/prio/prio/mparray.h -@@ -1,9 +1,9 @@ - /* - * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -+ * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - - #ifndef __MPARRAY_H__ -@@ -12,60 +12,59 @@ - #include - #include - --struct mparray { -+struct mparray -+{ - int len; -- mp_int *data; -+ mp_int* data; - }; - --typedef struct mparray *MPArray; --typedef const struct mparray *const_MPArray; -+typedef struct mparray* MPArray; -+typedef const struct mparray* const_MPArray; - - /* - * Initialize an array of `mp_int`s of the given length. - */ --MPArray MPArray_new (int len); --void MPArray_clear (MPArray arr); -+MPArray MPArray_new(int len); -+void MPArray_clear(MPArray arr); - --/* -+/* - * Copies secret sharing of data from src into arrays - * arrA and arrB. The lengths of the three input arrays - * must be identical. - */ --SECStatus MPArray_set_share (MPArray arrA, MPArray arrB, -- const_MPArray src, const_PrioConfig cfg); -+SECStatus MPArray_set_share(MPArray arrA, MPArray arrB, const_MPArray src, -+ const_PrioConfig cfg); - --/* -+/* - * Initializes array with 0/1 values specified in boolean array `data_in` - */ --MPArray MPArray_new_bool (int len, const bool *data_in); -+MPArray MPArray_new_bool(int len, const bool* data_in); - --/* -+/* - * Expands or shrinks the MPArray to the desired size. If shrinking, - * will clear the values on the end of array. - */ --SECStatus MPArray_resize (MPArray arr, int newlen); -+SECStatus MPArray_resize(MPArray arr, int newlen); - - /* -- * Initializes dst and creates a duplicate of the array in src. -+ * Initializes dst and creates a duplicate of the array in src. - */ --MPArray MPArray_dup (const_MPArray src); -+MPArray MPArray_dup(const_MPArray src); - - /* - * Copies array from src to dst. Arrays must have the same length. - */ --SECStatus MPArray_copy (MPArray dst, const_MPArray src); -+SECStatus MPArray_copy(MPArray dst, const_MPArray src); - - /* For each index i into the array, set: - * dst[i] = dst[i] + to_add[i] (modulo mod) - */ --SECStatus MPArray_addmod (MPArray dst, const_MPArray to_add, -- const mp_int *mod); -+SECStatus MPArray_addmod(MPArray dst, const_MPArray to_add, const mp_int* mod); - - /* - * Return true iff the two arrays are equal in length - * and contents. This comparison is NOT constant time. - */ --bool MPArray_areEqual (const_MPArray arr1, const_MPArray arr2); -+bool MPArray_areEqual(const_MPArray arr1, const_MPArray arr2); - - #endif /* __MPARRAY_H__ */ -- -diff --git a/third_party/prio/prio/mparray.c b/third_party/prio/prio/mparray.c ---- a/third_party/prio/prio/mparray.c -+++ b/third_party/prio/prio/mparray.c -@@ -1,9 +1,9 @@ - /* - * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -+ * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - - #include -@@ -15,31 +15,31 @@ - #include "util.h" - - MPArray --MPArray_new (int len) -+MPArray_new(int len) - { - SECStatus rv = SECSuccess; -- MPArray arr = malloc (sizeof *arr); -- if (!arr) -+ MPArray arr = malloc(sizeof *arr); -+ if (!arr) - return NULL; - - arr->data = NULL; - arr->len = len; - -- P_CHECKA(arr->data = calloc (len, sizeof (mp_int))); -+ P_CHECKA(arr->data = calloc(len, sizeof(mp_int))); - - // Initialize these to NULL so that we can figure - // out which allocations failed (if any) -- for (int i=0; idata[i]) = NULL; -+ for (int i = 0; i < len; i++) { -+ MP_DIGITS(&arr->data[i]) = NULL; - } - -- for (int i=0; idata[i])); -+ for (int i = 0; i < len; i++) { -+ MP_CHECKC(mp_init(&arr->data[i])); - } - - cleanup: - if (rv != SECSuccess) { -- MPArray_clear (arr); -+ MPArray_clear(arr); - return NULL; - } - -@@ -47,87 +47,89 @@ - } - - MPArray --MPArray_new_bool (int len, const bool *data_in) -+MPArray_new_bool(int len, const bool* data_in) - { -- MPArray arr = MPArray_new (len); -- if (arr == NULL) return NULL; -+ MPArray arr = MPArray_new(len); -+ if (arr == NULL) -+ return NULL; - -- for (int i=0; idata[i], data_in[i]); -+ for (int i = 0; i < len; i++) { -+ mp_set(&arr->data[i], data_in[i]); - } -- -+ - return arr; - } - - SECStatus --MPArray_resize (MPArray arr, int newlen) -+MPArray_resize(MPArray arr, int newlen) - { - SECStatus rv = SECSuccess; - const int oldlen = arr->len; - - if (oldlen == newlen) -- return rv; -+ return rv; - - // TODO: Use realloc for this? -- mp_int *newdata = calloc (newlen, sizeof (mp_int)); -+ mp_int* newdata = calloc(newlen, sizeof(mp_int)); - if (newdata == NULL) - return SECFailure; - - for (int i = 0; i < newlen; i++) { -- MP_DIGITS (&newdata[i]) = NULL; -+ MP_DIGITS(&newdata[i]) = NULL; - } - - // Initialize new array - for (int i = 0; i < newlen; i++) { -- MP_CHECKC (mp_init (&newdata[i])); -+ MP_CHECKC(mp_init(&newdata[i])); - } - - // Copy old data into new array - for (int i = 0; i < newlen && i < oldlen; i++) { -- MP_CHECKC (mp_copy (&arr->data[i], &newdata[i])); -+ MP_CHECKC(mp_copy(&arr->data[i], &newdata[i])); - } - - // Free old data - for (int i = 0; i < oldlen; i++) { -- mp_clear (&arr->data[i]); -+ mp_clear(&arr->data[i]); - } -- free (arr->data); -+ free(arr->data); - arr->data = newdata; - arr->len = newlen; - - cleanup: - if (rv != SECSuccess) { -- for (int i=0; i < newlen; i++) { -- mp_clear (&newdata[i]); -+ for (int i = 0; i < newlen; i++) { -+ mp_clear(&newdata[i]); - } -- free (newdata); -+ free(newdata); - } - - return rv; - } - - MPArray --MPArray_dup (const_MPArray src) -+MPArray_dup(const_MPArray src) - { -- MPArray dst = MPArray_new (src->len); -- if (!dst) return NULL; -+ MPArray dst = MPArray_new(src->len); -+ if (!dst) -+ return NULL; - -- SECStatus rv = MPArray_copy (dst, src); -+ SECStatus rv = MPArray_copy(dst, src); - if (rv == SECSuccess) { - return dst; - } else { -- MPArray_clear (dst); -+ MPArray_clear(dst); - return NULL; - } - } - - SECStatus --MPArray_copy (MPArray dst, const_MPArray src) -+MPArray_copy(MPArray dst, const_MPArray src) - { - if (dst->len != src->len) - return SECFailure; - -- for (int i=0; ilen; i++) { -+ for (int i = 0; i < src->len; i++) { - if (mp_copy(&src->data[i], &dst->data[i]) != MP_OKAY) { - return SECFailure; - } -@@ -136,10 +138,9 @@ - return SECSuccess; - } - -- - SECStatus --MPArray_set_share (MPArray arrA, MPArray arrB, -- const_MPArray src, const_PrioConfig cfg) -+MPArray_set_share(MPArray arrA, MPArray arrB, const_MPArray src, -+ const_PrioConfig cfg) - { - SECStatus rv = SECSuccess; - if (arrA->len != src->len || arrB->len != src->len) -@@ -147,48 +148,49 @@ - - const int len = src->len; - -- for (int i=0; i < len; i++) { -- P_CHECK(share_int (cfg, &src->data[i], &arrA->data[i], &arrB->data[i])); -+ for (int i = 0; i < len; i++) { -+ P_CHECK(share_int(cfg, &src->data[i], &arrA->data[i], &arrB->data[i])); - } - - return rv; - } - -- --void --MPArray_clear (MPArray arr) -+void -+MPArray_clear(MPArray arr) - { -- if (arr == NULL) return; -+ if (arr == NULL) -+ return; - - if (arr->data != NULL) { -- for (int i=0; ilen; i++) { -+ for (int i = 0; i < arr->len; i++) { - mp_clear(&arr->data[i]); - } -- free (arr->data); -+ free(arr->data); - } -- free (arr); -+ free(arr); - } - - SECStatus --MPArray_addmod (MPArray dst, const_MPArray to_add, const mp_int *mod) -+MPArray_addmod(MPArray dst, const_MPArray to_add, const mp_int* mod) - { - if (dst->len != to_add->len) - return SECFailure; - -- for (int i=0; ilen; i++) { -- MP_CHECK (mp_addmod (&dst->data[i], &to_add->data[i], mod, &dst->data[i])); -+ for (int i = 0; i < dst->len; i++) { -+ MP_CHECK(mp_addmod(&dst->data[i], &to_add->data[i], mod, &dst->data[i])); - } - - return SECSuccess; - } - --bool --MPArray_areEqual (const_MPArray arr1, const_MPArray arr2) -+bool -+MPArray_areEqual(const_MPArray arr1, const_MPArray arr2) - { -- if (arr1->len != arr2->len) return false; -+ if (arr1->len != arr2->len) -+ return false; - -- for (int i=0; ilen; i++) { -- if (mp_cmp (&arr1->data[i], &arr2->data[i])) -+ for (int i = 0; i < arr1->len; i++) { -+ if (mp_cmp(&arr1->data[i], &arr2->data[i])) - return false; - } - -diff --git a/third_party/prio/prio/params.h b/third_party/prio/prio/params.h ---- a/third_party/prio/prio/params.h -+++ b/third_party/prio/prio/params.h -@@ -1,9 +1,9 @@ - /* - * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -+ * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - - /**** -@@ -15,7 +15,7 @@ - #define __PARAMS_H__ - - // A prime modulus p. --static const char *Modulus = "8000000000000000080001"; -+static const char* Modulus = "8000000000000000080001"; - - // A generator g of a subgroup of Z*_p. - // static const char *Generator = "5569560418e73ff9db709"; -@@ -24,8203 +24,8198 @@ - // order 2^Generator2Order in Z*_p. - static const int Generator2Order = 12; - --static const char *Roots[] = { -- "1", -- "5569560418e73ff9db709", -- "5bf795c6d548a19b6ac340", -- "760df490123f6613b0a970", -- "7cec29d14a0eefb222bde7", -- "3c70a3f0e9c5b206031a33", -- "1cec8c96472b84936bbc22", -- "3315173915ca23d8c1b814", -- "39a0c4e1da321f1bc126f4", -- "760f3656c1130b21d369d9", -- "452231c3bcde7b7b5b0af8", -- "6fe27c77d57e2feb8cbcbf", -- "3a7a488015e75feec809f8", -- "c16d15fea9d61c8df5121", -- "5a8a9b5c659b71e837ea18", -- "506d84c9f4d4bc400fdd25", -- "4d7566cd294f75be6620f3", -- "5f80095f2580ec4cf13b51", -- "34eea7a66e8ff3dcc8988e", -- "899b1ac6f72ffff8aedfc", -- "3cb5a124ce563c3967dbc3", -- "16d5205447831696c5d6a0", -- "414e761d40341e7f97c304", -- "498104aa12355244a9b0d6", -- "3a8c5a9525f5d62cea294d", -- "1c90fea5f39d8ac4dfc2a3", -- "6a716dae106b9aeff2133e", -- "735cfad9acf49090fb7037", -- "5f4e7c70ff55ff2f888f05", -- "2f39a2788d5c2a24e16acc", -- "38d9d05f9463a537f470b2", -- "72b5d8f8e65cb7509a93d8", -- "75066462fdbbc7301e209b", -- "55afbc51e7c2cc748942ac", -- "47a1f466100bf70dd5689", -- "57d88b5e0b434eb1a0dc08", -- "27ec8c6636679988dd1267", -- "4818e9ef0ea7625cfc3d0", -- "68fa3ecc3845db5d523ad9", -- "4c95bed884bd87ec1d5e70", -- "7136b3dd116ed121aab68", -- "60617400353c1eb8e8832b", -- "19772e34181f57b670bf9", -- "2f58f2df794a35875efc99", -- "690aa96130f8c533d77ce4", -- "df261ad3b5157a525bb81", -- "6a437e22c95fc6c6a4449d", -- "1cc2526113f2bae9b540c1", -- "7fc2bcc524b4326eb8303d", -- "751e9eb348bc8239d6e118", -- "2fb170a11f1aecdf586d25", -- "32aafc640e8c99bda8faa7", -- "552aca5af025ea1e84aadb", -- "30a3461d63ca9807464dd6", -- "3f68fa1a9ab7772758d0ba", -- "6ba1300374acd487b23577", -- "35865b2ca16d3453781f41", -- "3d1155c4a53835d991a0f", -- "74bb588b5553c2b2d4ac78", -- "3778fd3a46ffde4755b6ce", -- "1d2b9ca2f44294070d4e86", -- "38596ed050f14596adc07f", -- "2015aa6fc7e48fa3bc5ab5", -- "2ad2546b270547fc24541b", -- "1dd1b432dc809fe4c879b3", -- "149e6a0b6c6543ae895e07", -- "7851b3168b92e5daed021f", -- "2bee268df09cc40864a917", -- "76c2f0ba37187112ee4d4d", -- "53016aa1427381b9f28ea5", -- "397f144a181805e1a097c9", -- "634478b621f7f0a455c48c", -- "7cc0116bd0bc164835ee72", -- "310e395e429c4494a5f850", -- "63e0dbdfb13b4fbb46f00c", -- "4a9e2e5d8ad0e2e82aa7de", -- "7d0578a8908ba294259bd", -- "17276a59aa9630c1141c17", -- "393fe0be8f011593a7e1ef", -- "475e84f70334cc0bc8292", -- "1ccd174e9aa4e58e7414bc", -- "19b666810d736e639b51f2", -- "2a48d89ce122dfa7deba2f", -- "6520599b30ba3568ad0f09", -- "4b35e35e82bffb49d0d830", -- "3943e926fbe3d426004ea9", -- "4e501beb4617be0f02deb4", -- "343dad4f059acb87d3b0e2", -- "7bb4f9d707b4ee3a20e779", -- "7de4927696bdd6d3b718", -- "6da3828f2d4926651f7a27", -- "3601174a7dc823bf4dc3a6", -- "223160cdd1bfa322ca3e6c", -- "31a504d1dcc251075e4436", -- "1b1ca5d6c688c4cf99448d", -- "4309c1c59a581af63d922d", -- "6077a88144957827c07205", -- "22e321253c3e0fb875c4df", -- "6b4728ee168cd23e2fe47c", -- "1c35e13f8ffb7c470fa61c", -- "4bacbc68650c41520d312c", -- "455c9131bfa1c33274be37", -- "23c82ae839bf5380a55acf", -- "171e59c89024b148534f1b", -- "165ff53589519199fc1846", -- "69bb33c18017fddf18d091", -- "2797689917c95a9d4073ae", -- "527c4b155e3708972293d1", -- "6e007172a16a9c673e635d", -- "1921f3262afb2f3766f357", -- "70a2d453b688803716fdbf", -- "4fbc987e428ed0ce9cb76c", -- "58320debe89492ceee77e", -- "1b0c27c7452322264822f3", -- "66ffe80af410522139e92f", -- "5e56a7d976f1a3334f57c3", -- "536a736ad3a37793dd9f54", -- "407333b3b6a3bed3ef8920", -- "76fed7d89907843db9af52", -- "18019c176b4c9453028db8", -- "4a54d9b3589d5340a01e23", -- "1a4e5bc143bf00e8928403", -- "61f4a55b140e767495cd59", -- "25cab751e23d8e69bb5048", -- "591bac661062f64b8e3f2c", -- "7006ef130d31e12bc44c5a", -- "6a23876a8c802d81d83d29", -- "7cf9338ca9bcab73862b81", -- "e941ecc714605cea72177", -- "4839c6454f97ececa9969f", -- "672d7083ec424e5d883cec", -- "3722a55f27f2c02b34eddc", -- "4f72850630f6f8c1a68862", -- "1a63315aa52cb254b65ce0", -- "5a0c2602dcbbbf468b67e0", -- "23f219093e9b0bb3b5217d", -- "4f6d8c8b0b9b376d42c4b1", -- "7abf68b2e4cc9e3a3b2c5f", -- "75f4eb6de0d35eeaa16cf8", -- "6a81a8d913b71671629ad5", -- "3afeb7cc8f8e5bb8770da", -- "2b0fed7a534d25697e5c7b", -- "2964973c288dced7dae8fc", -- "a6c54d0ec55adb4911efd", -- "7e958697030784ae5ddf86", -- "7fd4ee663460087b793a80", -- "5cafa83a10f929b5076c60", -- "452d3dfff11e24bf680356", -- "39242760b51f2f93fd4721", -- "18ec20d19a478746123b", -- "30f4f5617cc73435ce74c2", -- "1851e925707895d37a37f2", -- "6400e87749e3bcbd750d89", -- "6c8879d694e1a0b99f8e42", -- "3ecf9d05cd62341c4f7784", -- "7895b432001edf846b7b3e", -- "7c6b359299af5c59043711", -- "13f13f9f2c877cb73ba5c", -- "2193bc73ac4b40415c95b5", -- "6351b2a5f477112f552683", -- "48eaf0293f956717b8f048", -- "21a363ab0e08a4336f2e44", -- "d8c34dffd92c1a20d6a9a", -- "7dc98aa964908b313939a9", -- "327b2b8d0b75e0d83a5b04", -- "2d1b2f087facf1fbfc7e69", -- "6e97dd298eaee757a3cec1", -- "504d29ae2e5a021d2bb278", -- "5344962f90f45cfaeb1bce", -- "767dc9d34c09b03db4a0e9", -- "731a7b89f357bfb855a5b2", -- "42cd59499a0ef57d6b0009", -- "5d711409f3faa9ea87abfc", -- "352389083277fbbbe66ac3", -- "30a77107da1d91a699e9f5", -- "39bf9c3f1f0a1a15264530", -- "5ce5e0595ad07c8855357b", -- "4499c1c16fec3546d5903c", -- "5b8e9d8b290e89e5d9afc3", -- "214f18ae0c9aa7a1b8c02e", -- "639c2fcec8b9dfcc987387", -- "1536906705870049755028", -- "e0800809dbab6d41345b4", -- "39489c7fdb445490d498cd", -- "52c4d1c2ad153a3f70bc0a", -- "540f5a33d5aeafadcad19d", -- "6081e77fedf3898fd66607", -- "584b7d6f0b43ddd0b397e4", -- "7d8b341c82b019a8d56c92", -- "2478db790ed59756cef964", -- "93cbb2483673e4e0dda30", -- "18ba9d869c489f11ce52e7", -- "52cfcbd15dfc6c476cfc76", -- "7ae1d007cf030664c6b815", -- "9bea90a26f9e93743a998", -- "7e62c15038abb8244531b4", -- "3cb748f77d638122329dca", -- "1fa330f6dd5f3ca09176ce", -- "779559a53e6b62275896e9", -- "51a9b0945a0908b1d40d24", -- "2b13e041339df4d5a521ce", -- "7256923d608836710a659c", -- "48a999a2dc1a23a934a6fc", -- "ef75fc5d77fc146e975f7", -- "a058b3353ac6290d9f864", -- "290ac68bec8aa8955b7e97", -- "754ffe6bc2e7525e892fe", -- "5d7c2a1d1267b7a252da1", -- "35714b90920ce6fe1f850", -- "456138a50c3717947be48e", -- "1e2093f76475f58a2dfd79", -- "4d8859f357a36792b7211f", -- "3505fcb3eb2690f88b3be3", -- "2735b2e6f5f08a9e9418bb", -- "4c1f6b587fd26654ea69e1", -- "351c5a0b997e45ec21b614", -- "1c960c994194a1366a2222", -- "352a4a136ebd7ef294f370", -- "2df28a1b78b46f16aaf53b", -- "29bbe5fdf14e69065cb80c", -- "30eff32d49c10f325b8e9c", -- "628d18e095a8dbcb9f43bf", -- "1efd2b46d4a8724e929fd9", -- "13221a23af3045ec5cea35", -- "15d4218f4bbf0c95cd9649", -- "3f5027ce278d444a4dd243", -- "2d5e8f78718c2d4660cc69", -- "49cb6ac7a2bfdc54300006", -- "a134915353ce113eb72dd", -- "479e7025ae3fdc2bbcbe22", -- "64ed03e382c11a32e34cf4", -- "3d73fd3c3744e9ec5d2d04", -- "116da33e19c8b80384fe28", -- "68ee183b2208228da8bab7", -- "1abc0d15793c655cee4a9c", -- "307727bd97c5db086074b3", -- "1d6812727d8421d0e03a6f", -- "5b39ddb704fa58142076d", -- "2f78c0f7e7a90558573941", -- "35a3ab4773c5054a30c44d", -- "76c132264ad2a774a55164", -- "620084c5da2910137e2b10", -- "31541f24753a28cc5b51d8", -- "52f5adde99e4501e4d1c61", -- "779eb73caa637aa28db87c", -- "3a89578d6ca992f91249be", -- "536be2b3e3829710aec51b", -- "53c95b2787b88db0682132", -- "4a0fb16cc4d1bdfbb239c", -- "8b462e0f7448b549fd688", -- "783e0229f219bc18b705e4", -- "17dd6e40297f1d32786291", -- "4f2cc1f6f7aba8c20a670c", -- "479fc9912c9c81152eb474", -- "117480f169f81bb3e8609c", -- "df7ae04689867c9ad97d8", -- "70a1107bc42bfb598164ea", -- "557361125249092a7bf932", -- "5cd319aa7906a96d2f6c7e", -- "72a7ca4a8dc56f9c652281", -- "dce90e419e8d3f96eb5b4", -- "15bb5d9b44eebb27a1e60e", -- "2baeaedf76503008b9e428", -- "7aa81a94a5a230cf59a0b9", -- "55d7bf2f5724b5dd0a04ae", -- "e1ef803b3674bf39884ae", -- "1738ee1c8e104064e07249", -- "7ce4bd3337a7333159cb2c", -- "38110b962a169200cc9f0a", -- "1ddeaa1e583e9146210f69", -- "cfc86f804a481df48868e", -- "55a41153a33cb4649703a5", -- "5eb4d93a33b2d2e2c2adad", -- "4cd904fd9401eac5ad7f1c", -- "502c6a2df8916b18106088", -- "6259df76b87ab2eff6659f", -- "2f85e68dfb9aea66d7f07c", -- "1f1eea8231315133cde938", -- "6863984d7793407587e8e2", -- "7b5272bdeb1b01fe56bc29", -- "26b7df388a02a8279b0652", -- "7fe76cd2c5affa913c2b41", -- "733b81816da25936e81af1", -- "235baa54adcc67af92d06d", -- "4e6cb8ec1b00e2f28b3a7e", -- "88b8371baafc87a9713f4", -- "3b0283be973d59ebf4242f", -- "587cce1cbd0dee8b98f262", -- "6cfdd09fe2bd66b85c2e00", -- "12a3196afc09a79694eb31", -- "4feae15528510f186aa1fa", -- "449ccc3923e92a0bd2e3ba", -- "4f74e7ee01738298062093", -- "6ce98c831091728c0e73bb", -- "4bfd93fb985a44ed0569f4", -- "3c8b04f81e14e10396b582", -- "6cf76079225189eb2608ce", -- "76e87d4d2740e137511b26", -- "c62790b24bc842a717e31", -- "516640d56302eb15061b25", -- "60c8d2e958387c0d0627a8", -- "402c7149b20bce787c7e83", -- "64c275af1abda385c2af0b", -- "5088a2317aa34dd5bb1b4d", -- "67a9131aabd5255bdce732", -- "d452f805a2c35e686e107", -- "5ef5512b3384aa1243daa6", -- "6c1076c01e9e44fb047889", -- "46bdbd32d31b2a36e04e0a", -- "527456447c2748239033cf", -- "356211f56936e183312837", -- "449d4feccb40da2e122aa1", -- "43ee4b35cb3cdc84d1d5db", -- "7651ee2e0f4d348cbe95bd", -- "2ef2be0f7e33ace73bab4", -- "4b8968b5c5a93dbb4b2b55", -- "7d2db742721c9ba686ff30", -- "48e4926c40cd6ab5e92ffc", -- "506e6a05e8de5c9198ae69", -- "74a156e77589342bbef3d5", -- "798019b397419c8d54fda1", -- "5a7d2dd2aa2028d4da8f42", -- "5ebb44d93cb77417b61c4f", -- "1630a212afc84f038374d9", -- "3ae30b1b5931eb630bbf6c", -- "37ba1e609c7b12a8e32733", -- "238de3e1606bc0e1c33adb", -- "149d706db4fce00c71da76", -- "524b77666e02692a642407", -- "ac6c9987de6c73f2259d9", -- "51c819b9ec191b60920096", -- "a961f7b95836d3a578170", -- "2bb1db818cfd733dcce0b0", -- "51eb043d3564fa91215f1b", -- "23693b4063cf0fa20dad42", -- "4fbaae68fdb253d715d528", -- "69a784edece7c38bcf7297", -- "1d595362f3a1b4c77729e7", -- "22f18c95264f1fb742c348", -- "5637e5d4438a119a23f043", -- "75a7fc26a6faacf109b345", -- "3a051daeeae9770973713e", -- "4b21ef5da2b744139c3cf1", -- "471eec9edf3f5af18be6bf", -- "341851bd5e48e20f0a412f", -- "f125d56d3c0c2aaf7ad05", -- "c91beeecaf54c95dc1b37", -- "38e1e6200860f4072a8a1d", -- "3b3a5f854ba249c04d075", -- "4170c011864f5582d6a738", -- "17fc45b2690c315a5249e8", -- "1bab6e088abbb7a786ff3d", -- "1b388caec4f8538425d93c", -- "6df80f50564e811e245eb5", -- "65a5c9fe061a38a8c6c2e0", -- "18e5cae7f3bd61293a8c2b", -- "408e6268fcd75479c3bece", -- "514d622fcdfc26212b5d14", -- "435abcd28c0cfc9f321db0", -- "710608c33a517ea5d5359e", -- "96cf28ae783cd1e477aa5", -- "5685392e26e4e637394c54", -- "32f953543bd07093a29e5f", -- "6806f2889f5316f4c57e07", -- "668c0767178119bd41ac3", -- "6e885e79f7b5fe77214da5", -- "3915c8d33da94da27c1249", -- "762f2aec62b91b262cc99f", -- "7ce0b194ba3e31249ab36d", -- "5dd52a5a11350a9b7572fc", -- "404ae85658f9b08174632", -- "7772e0b990ccdc614c11c3", -- "573747456cbe53c844796c", -- "3cf5810d8c38a097a7561f", -- "269c017af27ad44e6b201e", -- "2835e7f4b39073c5a451bb", -- "ba07dcfdd701f16f45aca", -- "1b6a00fcabec41d4b43ba2", -- "67da5d093fc207176dbdb2", -- "311601fec45703953f2b91", -- "483ca240f22946b37af3c", -- "758f193f192584a42ebc31", -- "16fb077509115b4c0ee442", -- "2334ccde40867fa1d0bc15", -- "3f0177714af6ab07d870c0", -- "697c3f9accda8d3543f182", -- "59a5901c521b74864c8fb2", -- "17961b8be9d0332a213177", -- "69defadcac1e44c7a1c0bd", -- "2df92a33b308b4efdcaee3", -- "3a603b28f5e57fbfd764b9", -- "65c75439faa2303912b32e", -- "121daf29269045f5bdd20b", -- "7adedaa3d8ff64ef5910ed", -- "7b59158d38abcc0653e41", -- "63bd657552fcd47a1fea3b", -- "3951fc47c9cf417968c09a", -- "7b97dd845f9509d060f296", -- "67cd089f73cfc8807dd840", -- "b17adb15bd895ea825438", -- "3860f5646a470f19d720f1", -- "1365575dcf06e2b1987b3f", -- "5fdf7c6cf80f5f4d619b9c", -- "1e86f8d9f30e1c9ee2f741", -- "2f4da63191088795366c81", -- "1f527bd93add787e619f2f", -- "1bf7de225f0abb4eae1da2", -- "7eede9c7d2fd05759ff0d5", -- "7c4ebd51c09994a5c2702b", -- "2f27f9f5b37e53f26a3367", -- "1a91f5500bd170effa0820", -- "14e76412c1e117fa60f762", -- "27869ae6bfa80052e928d4", -- "36e5208ae458480078d5d", -- "193c88995f60dbabf1ee79", -- "55509fd3a52bd88fe29e11", -- "60188d16e528a5d2e06d3d", -- "3cd40ccabd157073f9e356", -- "6f7417b6bfc27461fd2524", -- "60f671cf9f662680d04313", -- "6a1b97013fc782623a1d18", -- "4a5a912df871eba16ca2bf", -- "4bafb874450e24655961f3", -- "7fa7e63240bd502dd4b06b", -- "3ac9b63dfc3067c1c4627d", -- "11978ed9a01677cec42ee0", -- "6b488f646fce9835d43f44", -- "2449f6a2ba5fdac5a9c1d4", -- "1fb4d17ac6ee317ce5a547", -- "230119c3b2a6b1bafca00", -- "5ba00e958e1473bae28031", -- "2e0a934adfe422dd136191", -- "64af53c3c0ad963e3055c1", -- "173ee21e60a88ae566e166", -- "c25f982adccb58e81ce02", -- "1c0d48f6283945e321fdac", -- "15b86ea9fb5f9d46bb9d95", -- "12ea1cc2026e4f5211a159", -- "4948e72d6c06974bcf7212", -- "474d5e705efa51e5e97d39", -- "3a928b86dc180342e1f053", -- "68570d0c5fc94ab3c18486", -- "33294a38a5c8a431b3624c", -- "7f5271355a686a4df7e516", -- "2176005ea62a7fae1a0ec5", -- "7b7ba8150a404335a3e978", -- "7ee167869f16d0f3096184", -- "37b012fbed4994b5319766", -- "5a9897a2da0299756dfdb3", -- "22c922d5b0fc736e5f1adc", -- "7c793c0d415e26d57ec92", -- "11326e189db8b15b0744ff", -- "39f2517276288f74c45e3a", -- "47b94fbc156b869e9d16b9", -- "4a27b941aa4c6ad1e07548", -- "796842dd6bfad2f98912a6", -- "561331256e1d21664a1287", -- "4d3db82b9d6efaedc42576", -- "26293d249066a3014c3338", -- "29d711357943b0afaa5b59", -- "3baf4fa4e9f273acdf732c", -- "22f4901fc0a8b24cf62fe4", -- "fa65751eb4d84785986bf", -- "1c89d8520ef104ebd20ee", -- "3251a62ebf3abdb7c9ed58", -- "59db917020bf7253782d5c", -- "52c455dad0b267d43552f0", -- "599102d1f2500d61d762c9", -- "77024358b3e776b2c5e1af", -- "3248d851d401112b750bc", -- "36f20d7e24da8778ce35f5", -- "4dbcbf0e0833361017aadd", -- "7a6a150f8921047e15edcb", -- "5d53571a7cc3688e6944b0", -- "3de0a5abf20a4845d76439", -- "330bf157841f4554c8f5de", -- "7faf5fb28aa48ff83cc07", -- "ff765fa35889a47189d5c", -- "1bb928a5ce5b6a93e4a6be", -- "443f4b4ed3b1f2c8fe8ce8", -- "159314ac561f7431a71dd2", -- "2ad8da8cd83b1521d7659a", -- "2e6c1f41a9866f4d867e01", -- "2bf095a2fbcdb3391aec69", -- "7286bedeaa0c2687819d8a", -- "1a1cfff05adf1a427c023e", -- "7677202d8f05f9287a6047", -- "144036e909f39a00a79653", -- "5d5d0b6bedf48b96c5eb79", -- "2aeb5606838c910769daa9", -- "36b57535eb2f884ec435f1", -- "26639427b4cd468207f354", -- "567c07ffdf5609acdc57cd", -- "46c6a4606b83331dd733e4", -- "214ab6242649bf5f0673b5", -- "456b75b7118ddbd9c05113", -- "23f47a79fc10179e2f1aad", -- "6750d083991451ddf24ddc", -- "9a91d432ec896438ac971", -- "62cba5cd6ece1fcc005653", -- "146e2b3f7404eaa2825f64", -- "73a1489a18b0815a03faf8", -- "4b81add44caab6287f5254", -- "43da9e4b9fc98c3225df02", -- "73c9485e5e5379f878695", -- "4b0e392a6b94b0716bcb0f", -- "627d01094a2553e7bdde46", -- "6e1c49a1adf3346b270d76", -- "2c11fd859f539479044b3d", -- "5ad56a9a03d1277384501c", -- "538b76dc0991647c99d6ab", -- "2fe38c447768175651bb27", -- "2d8207ca3331c2f27a3943", -- "ac1c0028dc3aa005da816", -- "5830e5e1c9294904118c10", -- "4fc1aa30a26bf05e1cf79e", -- "37ca6d3b30cb2687e44f7a", -- "3fbae766d352bf62d71ec9", -- "5b8558cbc60eeb5d4d1e0c", -- "3c0ef922648f93834d2bac", -- "1f216750a4d1686b3b2227", -- "54449f7dccf77fd8f14fff", -- "25b4f424465c145a893505", -- "1533a8f5ee81c2d4352c6", -- "747f5812283a8ba1a43af4", -- "42d3b2e606813eb48865e1", -- "771e23d6155cbd6574be92", -- "6937a623eafb54374944c3", -- "7ebd8ffb86035ffa249a5c", -- "65a59676f2a0f7f5358513", -- "4cc1b8f60c7b3b604dd7f3", -- "8c1b60a22d754654b3b0e", -- "3542a00727cde7902f64", -- "46dbb8e8c99f2d8cf603ab", -- "449f89bc8e75ebc93c06c2", -- "42fe3f1413aec51428fb64", -- "6ea50d7820cf1c46cfdea8", -- "5e81e2ee54fa1c8e9216bf", -- "3cdbf096f176a11d399e68", -- "1b8c58018b9ec962054ab0", -- "292e4d75da1a76fa4eb730", -- "23f737b6f1527cfce0303e", -- "1f2e34fd7020d08b01b7f2", -- "1103bc87eb4e4e572c882c", -- "4796fc52e00fbc5d65fc02", -- "6ecdfc4db1fa1b0104403a", -- "5d780dd5bc1f62ed520130", -- "403ccf27d3ff3c3686d654", -- "7a42533b0f16560c421482", -- "3c52f4c6c583d5b2a18105", -- "32e84128c0dfcdebdcfc5e", -- "db6d45038525122246c3a", -- "7e9e8be590540d41cb48b7", -- "4dac5ec68e30db33d790b3", -- "4a9951c3005ac4b7d775a5", -- "8d7ac16a6c7fb5dcaf362", -- "7a7267a5eeee00421b1bd7", -- "14b9cf8ea7c2a2aef663e9", -- "7a75465db2452d11dbf6bf", -- "49da4e6814895f7566132", -- "6ac2b95852f2b3848657c4", -- "29f43cc681e11325bf172b", -- "41d82e9988854950bdb48c", -- "6f5834f39b940405114e26", -- "754181ae9689816d4fae85", -- "394398fcb25e82a48b8d32", -- "693e564c43456862d84db1", -- "5fa8c4e879ae9ef5c6f178", -- "3937d6181e67f43d9bec08", -- "4bd73bb75df0b9c8f31e93", -- "417a5a771b0fe4694065d", -- "47ddc74fced651c57b4d1f", -- "7746c161815ab2091d9e21", -- "72216a00ebfc9de1e963c8", -- "74c5b771dcd8c4719355d3", -- "450dcdc45566039112cb21", -- "1ffc37c5751a51bd676a97", -- "553adfba4c4a6d20491557", -- "d65fa4e9fad0f9180af7", -- "6151a60a864edd0e7c7b30", -- "57a6c26c5e5dea61f133ee", -- "39f0a0674e65b2cad4a706", -- "29105da153f2a098ad094b", -- "c16242d78c3d8fbfddea4", -- "235bf7672a2cda1ab01fb3", -- "3faddb5ddd2bdc683de72f", -- "75964f1abb3f7cc93e9f96", -- "62019722b2962f2ad1787f", -- "67427f6921fbdb98c3e375", -- "2a0c42a5cba7fe55a006e5", -- "2bcf3f6e0be988750bc0c3", -- "31cc33f2d92bb3dc73372f", -- "553e86c66c2fba13b95f56", -- "75f53c77a2d34dd51c6882", -- "6f8c0ef46d2275dfe7e84f", -- "5c1c9591ed7cecac5be504", -- "e0fd267f226bcb77b4105", -- "1aa73126a375b6cf5e8b5", -- "5e4eaaa44cce4760757194", -- "a15cce75efaba6c1b571b", -- "7f779a7314dbb8bea5c652", -- "2359b0102f9a1f774278d", -- "20bd84ec27cae248ea38a3", -- "38a3fd25a6d9f4f7c85efc", -- "2117da386a0ba848e04619", -- "6db55a7581d577d97e45ef", -- "68437c168764f9b52e36f", -- "5574ce6446f5f9b2cb3ade", -- "2a8fc7a338bd0e95e61238", -- "6dd1e30b456df046e42f20", -- "360136af955e5fa1edc1", -- "403c97fd7a8e612b101803", -- "e8a31983f38b3bc04d83f", -- "2fc4119b8d9484cd86a0bd", -- "23b23c226ec7148e9ecfd4", -- "40f14f4642441c80c723a2", -- "255da48e767df6db73178f", -- "5f4ee2c7a7d447e781b997", -- "4945531dd0d285dff322e3", -- "58de9434dcaeb21007cf50", -- "4eb92d6051c08bfec28d32", -- "46777bd089a8dc8c44ba66", -- "155305c9e80b8231f3fea7", -- "27e0d5b6d5b01b974468e6", -- "3337445fe49877ddd94c8c", -- "23ff36317f41cdc69b5f8c", -- "5798f45a6d32a5d9e220c4", -- "6b1b87bf69d8ba16154459", -- "d959366c9d2eed9c988e", -- "7914f6f164e20860badddb", -- "fca586b3bb595a8d4101", -- "68bf1a165a85b17f192a39", -- "7b94e69ecfb1ba4bdf42b9", -- "363177aa4ad204478f4d2e", -- "4ec109ed0d029a0c6bd1c3", -- "ccd4be560162041ae08e2", -- "3e7a71b985de5c6c7a9f57", -- "1dcb001f06c75da3270a59", -- "7feefa2c38e3a6212b4cc2", -- "58a47971604afebfc2dfe", -- "175182c7cd2ce431b0150e", -- "1ff2197a0e5b3d0b65c928", -- "497b40c11c5d479cab5f20", -- "5448bba652328fd63e3ca2", -- "748cb85b7df9ca5a82d4a0", -- "5b60aca7fe85259aa048ba", -- "68bba5659f4f20356a0cad", -- "16a2f9f4e53133020d693f", -- "75df623177a9cc914a680f", -- "dfa61531c98e389318ffc", -- "12502410f917e813c566e4", -- "385c720d2080ae9544a074", -- "15c5021e3387b5104eda39", -- "6ed402123cbfe00df8030b", -- "4e9e415c8033fbf3989b6d", -- "1ead4bf29c5aa1e11118b1", -- "3eed8387e5a22f84995caa", -- "6207f87b59fc321d1fa8c5", -- "5527388c03206dff6a464b", -- "232706fb395f1e37b2683d", -- "5eacde9e13242553f24977", -- "257f0dc17de9e402db5577", -- "26c8838f41263334d39302", -- "5ed2c798bc4d3df9693b4a", -- "59048c7bc400c1b2f055f1", -- "60ea199093a4e9f80613b6", -- "3fdb397b831af56c0902f1", -- "47be6483decbcd32c50b44", -- "715687651f6925a41a3bf1", -- "5c585a64ca68d89750e9da", -- "1f5e885344b51456b2195b", -- "5d2602e9c7bafe79929bee", -- "25b65fbcf4deba1535165c", -- "4bba04cb6f7dfe33e4bd", -- "4e1dab19fafdbf4d11123", -- "3b79806e60c6443e5b75ae", -- "28390f3626b1fdadbcbfd8", -- "2ac5b705311ca0e8e6bcda", -- "21cbfd5db5cf856bb6980a", -- "31340daa6bee66dc702e47", -- "4520d49550bf0a2328020f", -- "6a91ca9f24a59bd3f77cce", -- "590c069f4d458da38448fb", -- "4eca5fbd35a4778cd18f80", -- "288723d0eb9a25150c0772", -- "6bd55e81cea4df6934b8f5", -- "684e96f56360b04576ab1f", -- "10c2f27dd2e5d8f77a071d", -- "78b61404bffa36b135773d", -- "9b13c11e290284a86caf", -- "415d623b63f929b3ef879f", -- "4dd2e16c6f9989907671be", -- "72e3a111047449df428c07", -- "27c4576460764aabe86ca", -- "509ca3fe7eae200044712a", -- "1488492f946cb788d721d6", -- "5fd2fb0300581c5f59fa7c", -- "cae1cd222ac38b9a89a19", -- "62a4fc7a9af2d27e92b08f", -- "2dd86ec9cb242b4e68016c", -- "615326e14c6c74c717def2", -- "454b67d8b7470679eeda79", -- "359b739ee10f4c4f24e721", -- "6714be0beb22d71708c5e6", -- "571cc10547604b09ba9b69", -- "64981a92737099a91d3794", -- "58b898760417610a09ff41", -- "5e1c654c63269bdc77fee1", -- "37e704706a7967491e3628", -- "76a279212b584d95ed2cd0", -- "64d1d7c43b00bfc99b8bb2", -- "524919eb6636c6c6c14a82", -- "4176799b704bfacae7d897", -- "2113e1a93f5d2f1cba0377", -- "47626057be8af9d92cef74", -- "31fcd9e9b87aae6bf32f83", -- "2cf0b3c6e55d4f6c794d8f", -- "2f36ea2bf51461b1407878", -- "2840ecdbeaf847ed4e56fd", -- "4dba440f7f398ce0198b25", -- "6ef7e0b470470f565c088f", -- "58a41d74e16c1b1fb6cbf", -- "68b020f430372f0b20817e", -- "396792f2585d3e823623df", -- "171772c43b172c6f59b4ee", -- "35da7f1fc27e6edf7e2774", -- "5fe19870cf156902f09ea2", -- "4a99080981fd90fd8f202c", -- "4fb7ac8e103e64af4c501b", -- "32124e45d595b542218cca", -- "4cbbf282cb8d5b492509da", -- "26e8b6fae1b81184be307f", -- "4019e2ed5f4f686e75a334", -- "aebf119c49f1f5d4fa77", -- "214de8b9e305b92a9ebc6a", -- "155503fef8a8a42650f8de", -- "4cfa062853643ca21aa8e4", -- "210804240b673797c1da0b", -- "4499b6e3311b7fe5b9c98e", -- "904098cdbfd4389279e30", -- "575c81fbd5408f583cec84", -- "2cb3e5c4dae6b173319195", -- "411254ef95bca10cdc61b9", -- "14266a10ce4302dd32d262", -- "14a25dabe8f8f9bd2745b5", -- "7c2bf4a989b0889ab6c2ee", -- "7bb42f21df6b474c926cab", -- "4edae7063e31e196fbffc4", -- "706df4fd50e1c42994aed3", -- "312ecee1519b0617d31186", -- "32f8a36cc1b46c25cdcc28", -- "6cc9f90d012be002904668", -- "69498de156a0aa10a4e2dc", -- "6bf558bed09b770ac7b7db", -- "45166035762ea541feeea1", -- "2bcddd9fb0f98505c98aa9", -- "56b71258283af76e7bcfab", -- "3349dac2077bfdf6a12d86", -- "39450177cdd3980c4efafa", -- "4ebe9580f66ecfa62bdae4", -- "2d2c322dac49b5fc4277a6", -- "63a2efcfe030b5eb3fd526", -- "2327087d544749f348c909", -- "3d49c943bed92220933501", -- "2501ea3eadb12569e01e7e", -- "7c2fed1746d715eb95529", -- "3adbdefe2bc4d894d3eea5", -- "574f9294e066c8fdb761b7", -- "69527863032c1ba7d7e238", -- "78778c448d7d69eeff19c7", -- "63a482d47b34384d6c0abf", -- "37120883f03d674fbee3d7", -- "46789b05c1e88afd58b2c6", -- "62e55ea318373ea102e458", -- "7bfe5c12baaa86c60d8117", -- "6c065cf636d6bc65762095", -- "45109475272b0ee96581b7", -- "1b4e22a54398ec5712c2f5", -- "c0bc8c55f3b95e521ebf8", -- "614224558d52e5d4eb23b8", -- "532cc2e0afe1d979c42a70", -- "6e48887c0bee3ba8386f63", -- "726d30610282ed39d8f203", -- "53a902325a9087232d64a1", -- "6e72d626e97997cb842159", -- "1fa48382ab305e0404adc", -- "3d3a2d2ef7d22dc8adb10e", -- "59aab11c164124e5cdf604", -- "7529b300b4b89c580a5f62", -- "206a9c38358f291b01e407", -- "47267802b4baf11a616d7b", -- "1d50b663f8750fc777a8a9", -- "4113025c4b26d50d501a53", -- "21e6a33067365b1e718020", -- "1e3f1f00ee5c87d8bcc6a5", -- "37902c15fea70cc2588984", -- "330554538efb3452d928d9", -- "eb12a34ffd8e97426aebf", -- "7f53a40fb6d59c55fc0a6a", -- "2ccc62a5fe0c2d164b78ac", -- "3a82f64175d5b3caec9c53", -- "676d8d92a92b0706da21e1", -- "5c91f707bee21c71c33c34", -- "2ab6145578df975521753c", -- "6e20ab59697e8bf608ee9d", -- "96afde4db924db62eec7", -- "2d980e097ecb2ab91b9b92", -- "352a1b67a355f38121c462", -- "7c3ad9d6ed54817d082b65", -- "65e071aa89e8e9caa17f", -- "4e4d1094ae9ce9f42b1d71", -- "6d82429df8c04f3e8cbdea", -- "201a5f031183f9e3136174", -- "4b31d20ed3a1f68f117d30", -- "309eb70bbb47b20185134f", -- "bf1c05f166718be1c6836", -- "29dc0e371f2a3ea6cf4d60", -- "610a799f5f9443dd8f333", -- "7ca0b74cff2de67657aaa1", -- "31018337a926110b0a5b91", -- "3c066553be4fa2a741db4d", -- "194fc13ec819c9e2289cea", -- "3c7d066200b6ae5892048a", -- "768b4e15703c2b99a95ee7", -- "66673b06f4474ab9ac84e3", -- "75b60c74c3f4835e0ba3f1", -- "282bde17894173789173e7", -- "6b386c8a9795cf0b45e160", -- "1984882a708094eb26643e", -- "7e84a589b79843d0f09d89", -- "7f30d40bb0193bcc3bff38", -- "1e9e640158c2d5ef405818", -- "46f7147d837df6469c39be", -- "717a62d953937ab8d63ef4", -- "29d27ddd5f46b0a514ec85", -- "7f5d5abee4ea627ca346c", -- "1ba30d22d8ca0e3412c0e7", -- "1b892a6bc6d106036dc210", -- "78208a8be2c33504df2573", -- "2d92e146c92e5c2141114e", -- "65ccc844f43d7740c3bb83", -- "6cbec7ee27571943d99309", -- "7ab8d7968452d732fc3362", -- "51e871e33b066886db1e57", -- "70cc62d0a35cccb85972ee", -- "7db23dcfd5b48847b2da44", -- "38863908f348e0ff24d2ea", -- "5f7998cdc984bda089a530", -- "593ba411e3481cff090a6e", -- "30c01b8abdb9d98a7941dd", -- "46861d4c2ab5de181f3e32", -- "2f44e6e7eed452c1b02ade", -- "31e4383d0d65d0adfc3084", -- "44b51755bfc5410d6cfad6", -- "2b89a454954d4c6b2e2120", -- "7a1817cf8f21c4f863437a", -- "1ece2489d9c16fd0d7c093", -- "7fd049d0f5d16bca84fbf0", -- "284cbec8937114a1728cdb", -- "2a6ced30aaeaaa3957eaf", -- "41ec16a5c725c7d32d3a8d", -- "2c1cf6d476ed98aad97b90", -- "715fb02624875de3ce495c", -- "3d325eede75d0a573042e2", -- "4550a8c9126d63e137546e", -- "116c396589d81e0684d5a0", -- "48ad93093caf03d61b0aa8", -- "29bfa87365d098b3fe8377", -- "3e14120ed24ebae50e64ef", -- "1924697a3681efc60e8e70", -- "1e1de465daadd9547d63fe", -- "32c9397c9adff65d943965", -- "41ff1be99bebe99b10f273", -- "cb351e8f1a28278af3af8", -- "5939fc19fad9c14c8917a9", -- "634af4f8ff5eecb70f9b3b", -- "14b126e3c0b0f4dae2ddfb", -- "39bc9fe63b4ca1891dbe7f", -- "3b77afb6ec85d92608bbc9", -- "6308b8f5574126f70ec3cf", -- "2928531ef291fb90d243e3", -- "7d43897c9a717ea4ffaf53", -- "542f3c6130072ffd145c0a", -- "57b79cb347145bcbe43bcf", -- "68855602ae559673b8a2dc", -- "77f657453333dfbed3c7e5", -- "1fb7c568bdffd12b767330", -- "abbcfb2e4c3da6b090978", -- "36224c16a9190272a21e14", -- "47df2e03e1548a16e223be", -- "f6c4daf384fb3d39aa985", -- "6978fb86dcb4ccc82a3738", -- "670c6449f82194e5367c1d", -- "75a29d53450973ae07e5b6", -- "1a0cc5d78d1da3759fd0fb", -- "319945f43efa75c6d6fbd6", -- "4a8154e2948099e7b7c4c5", -- "2353c3f920ce7af530f96d", -- "781973046ae51aa956a060", -- "21789b3595bc366315af2", -- "4d63e68650d056d4e2cca2", -- "6eceb600a9b81fd3aa7175", -- "2021e0329a909a39851fe3", -- "45d43d697cb8503c85839a", -- "7489fd5407cd56abfcfc49", -- "57bcb68e1f52791794bf4b", -- "71db6b9125d5ab5b3e7493", -- "4e72dcffc8f26eb136b7c7", -- "890072ab6d3eb608d30ea", -- "2f1b9eb8c8ceec3aba8c3f", -- "269ad3cfbd18bd255786fd", -- "7e18b1dc04cb3af247aa31", -- "43cebcc2f248fc1fcbd6b4", -- "1b9995439565d095eb8a8c", -- "66e2564796168c2d0a015a", -- "13c9d1e81de8cbb64a1797", -- "657128352843035ba5fee1", -- "58c411222783451febdf82", -- "2970c6e86dd017c5341ddc", -- "7bb1913bf745fa526f18a8", -- "4d0a046c7ec4f54117f367", -- "36f24af02e5318171bea53", -- "9cf05f6855d4068390948", -- "1107ffccdffb2932659325", -- "2ae1383e51812f870ebf41", -- "3aa6d80b7b4477df65330a", -- "6cc6a998d40d1bad211cd", -- "7d58cee39bf1830f1b3ec0", -- "dbd1bb9693e65c5eeef4a", -- "4385d494a7bdb154810c4d", -- "4a64cce2fc4633dbb63e09", -- "3e9654e3940c0f541b93cd", -- "1207aa2a4ea7c882b5e76f", -- "43bc8bffd5b4fa12491d7c", -- "7df66ef2eea696dbe6ad95", -- "4e203019ba4b94cd691d60", -- "61978b574cf8f6d53118d6", -- "14816e04a6b799d1ce9e1e", -- "5c699bfc1a98ced38d7c88", -- "509dfa92ab81408672391b", -- "2025bd13134bf0ca69b0f6", -- "675948e6670907b03227ed", -- "90bd6d6fef2e358a664bf", -- "2f1dd3930a2948f2187f86", -- "6336954989b8a716380f64", -- "2655fc5da8cafdc10e8c6c", -- "be26e79f27c2fffd5718b", -- "7568ac37df7da28c47bab9", -- "3128342c1cd21185c739db", -- "1318f3d7743d8ee4ecfdb2", -- "26102582959271955d45bb", -- "1118a89d656497538996f2", -- "4d74065738715d35d47743", -- "2644cda468b716b53c99d1", -- "2aec8efef6c41604b67a83", -- "76393b1564fa2cd841480e", -- "87eada956963224c06418", -- "44f34a642236b1e7e4c8fe", -- "5edc4541d1854504d071a", -- "4a292844d7aa26520c09b1", -- "1526a67a2f54717285cebc", -- "7decc101d84d7378c8efe2", -- "1f8889a7c0321f5279b37a", -- "71d26320321cdb1dc925e0", -- "b8385ec48f904d72393ba", -- "4a2cef4e3606d1b9422334", -- "db7255fca12f37c452ffa", -- "4374a87512bdcb27925ebe", -- "99539a5120bf06fd3edb8", -- "4f7806a65676c896ee7db9", -- "365cb247c96e7933341e76", -- "7964fb4049b23d750b6f0e", -- "48cd6ee15c4874d342b21f", -- "221728332d3142e3346be", -- "198d839621f761dde4f853", -- "259839d29faddb791e3548", -- "15324434e27844cc4fba51", -- "60e351e7834b181d30a00c", -- "6337453f9c180b8ddb37c4", -- "608a29bc043b54adde90b0", -- "4cb0c7462e90f28fa251d", -- "b5f14620587f1e8ed5a45", -- "3c994e655edabd5cfbe8b8", -- "35ebfb3fd5a71979daee0c", -- "2a1abd32897155b55014be", -- "67d12b5d61741b8623f378", -- "21469f9c49fb4d2fb54baa", -- "728aa131a37012e184c2b6", -- "6f085a8f46a66e79fe4f92", -- "1a95aa2ba56c053acf7e56", -- "1f1c7eef9d0f99e1e209db", -- "5b57bc12988f27dd0ed418", -- "5e9464fbce6027257d92c6", -- "41be4715ccf6dde8b12086", -- "25ff556cf1afefe2cd2ba9", -- "59f67a0c66d5e9744004c6", -- "23c20aae79c2ffaa75a36c", -- "574f95a475dce62a3071ca", -- "4a98326f880a44e2d6ea5e", -- "39f7a72e1daced6411b1a6", -- "37a4477749686070e7e049", -- "51524048af5a6750b1955", -- "43012f86bfa02bf0033ee9", -- "4253e27061630b9343ddfd", -- "520db901eb8309582e12a2", -- "656f70349417ef562616d7", -- "13cc5c5fa7afb2b7468106", -- "1916345f1ad90cf48c6472", -- "a80defe299bf7c4d81738", -- "673a9bc1330de8c0b0abe1", -- "226f7d490aa9d47314570", -- "4762e175d924ca1dff7d06", -- "79ae8d3a65221805ed59d3", -- "65838019d10030d2edd34c", -- "46d2651ce40dd1fdd11e69", -- "4277911fa0e430960db091", -- "5370ef9f2399e3c803b5a6", -- "69110081782c350722756f", -- "be2266f15dfa6e02e4a02", -- "7c64411c354fca180b974e", -- "3669075c083d3a0547d7ee", -- "49212e86ec70f1b328e11a", -- "70628248b6cda7311de5ca", -- "5593dc730a3a85d6ce77d2", -- "4a2416a8cf412f996e9654", -- "56f01f51a5be66f649b1d6", -- "1c7c6456335bb722881302", -- "4f571e68d11ba0c201ec2c", -- "2f615de4e96f8f9837947f", -- "9cc0a7524feb44aafa989", -- "13705ad9594243161047cf", -- "358734094106c4c77371f8", -- "48384f03b178aecb456dbb", -- "336699d6c6f15f6ab914e2", -- "5dd2532249188dbe3d2539", -- "520d412f22645bfa3f3a33", -- "45838fc0d9bd4e814df398", -- "5d172643cb569d9b2ab357", -- "34470b1eee2f871c42ba71", -- "16103ea0d454ef686ebf4d", -- "31e4aec6d42e52c762e301", -- "217d231f2ea4bf28c97e44", -- "15bef1b795296c7e8862d0", -- "225461e731f47cbf2cbf5f", -- "520f0b6932233966b7bdb1", -- "6db3eec1da4e57eacd7cf4", -- "5728f13fbf1367c5292a3a", -- "7856c391e8828b90a94afe", -- "6b36296c1bd668243e920e", -- "2f8aa359ac5538f4834ed7", -- "208dfefbc938eb8f166f28", -- "6506edb4005521bcb61671", -- "202377a9328fcb8f661a5d", -- "6f4a829757301eb1143585", -- "5baffc06fe51f5caa49a4c", -- "1c24006c67392d350aebe9", -- "a3d31a1daca53878fe695", -- "6a3f78db4e25085a772f7a", -- "423813f9eb92bfadf14d9a", -- "60548a10984139e59f5d8a", -- "ee2c219af9300476a7d41", -- "6a4862d59f8198b4ea0fd5", -- "76d72d56a09f253d257f0e", -- "52492b4a4856d777ca0682", -- "2dd44a6d1765874cf1dbb4", -- "73040349f8459e94069012", -- "6c290f053f3f46327ee8ec", -- "6d575f1601945a3ca29eb8", -- "3aac1aff3b6e14d31a91e7", -- "4972dfe88d7e4fb02ffe72", -- "5a86321f172c81fbf185ef", -- "50b37142bd10ca63ad3866", -- "50148cebf8644fa7375aa", -- "322164812a5696cb2322b0", -- "4303859a49916073987344", -- "bac1f8bfa0e63045ec3ea", -- "67b770c97867478cc69b37", -- "2cd2d00d4262f35754bb13", -- "678fb8bf7f6342c5764339", -- "656e5b10b9da085176e0e4", -- "59dbf0c177e94a664cfe3b", -- "1f8b63c5fea99ffd6a5348", -- "4debfa77d5d5f3fa106f86", -- "147a0d7fc26817e7251ada", -- "3f26224827d27901ba392a", -- "24364b397921eedc03333e", -- "361de61b4e6057d1cb2274", -- "14b5583a83133add54d368", -- "6ead11e0936e4bb4e855e1", -- "30e484fb4ce5927a937373", -- "571513666bf5e4e0b1c7c0", -- "4be11f1cd60954626093b7", -- "775bde6bde2d0aa4187fe7", -- "5a1b57c203d09cc8a22696", -- "5d5e844e1fd78c36c3341e", -- "33b05c78a18798e4462d45", -- "624f69e6f91d2b9574cb8", -- "172e3a20b269ac416b7186", -- "1f08599df3ce28d2e2a99", -- "3d50a612150493864e2df9", -- "42e82d8613957e0acb2b09", -- "50e45902fe1a308ec88670", -- "23db937264552bf6dc2858", -- "6395a035a6a5e009dcf586", -- "23931a4d64503bc81a5a33", -- "f6074b1e17e08713a2a46", -- "1e604eea4a6fb7804d131c", -- "246e8276fd64f7af18402a", -- "7fdefc35775213402acc91", -- "31f0df7953457ce90524a8", -- "731437b69ca76a93992caf", -- "3559d5470cc8be88bbee52", -- "2a6da3e3f6425cc4caf185", -- "384ac895940651e4b3df31", -- "20cfa0c6bfbdce5e399a70", -- "72f290cf9ea470dcec1318", -- "77ae05c9ad4bb1a82ee6f6", -- "33f6606f82062475e2caf5", -- "373211f704832f37df113f", -- "c663e7994203d116af45d", -- "25b286320c27c0f91c388", -- "2219a8eabaec2cc4da44cf", -- "3fa82c77c11ef3ce373a08", -- "6c65a41601a28b4854db0b", -- "398768a52710b109c92dcd", -- "45e67b0777cb6facf28d74", -- "21ac3ebe991cfe1bade37d", -- "6db9060a2078f4de4b4e1b", -- "1f6a141f6eb54cb95d54af", -- "68c1092ddd7cea180b7a8a", -- "e5d22d0ba9e3194e2337d", -- "68075aa010a2a7afcb2078", -- "577a2773ebc9e2412cb050", -- "1634b76faeb97237505ef4", -- "1aadb770481974ec7ba970", -- "42a1f9791054781a203d9b", -- "7a520385f587099a8da6a1", -- "1a88cb781abea4a70cdfa7", -- "655b44d3a92231714b14c8", -- "651be8b59b15d629ab774a", -- "550e4c9178e5dead2f815e", -- "ee736adb9b9c1860d483b", -- "ceff6274c7b15ae86dcc", -- "214d49f3e2681b232cf62e", -- "2330589e6c22439bef95d1", -- "7e1ce3bec1e98dd35947ed", -- "72118d192add3aa4c1e0b6", -- "67daf6ba4dc4d74236df77", -- "d16f53a28b7042d305524", -- "6f52ff1c7f6dba719401b2", -- "6ebb0dee9291bd90cd2215", -- "78dfe864170ab14a408743", -- "601b382825c1515525a19c", -- "2e5ffe59b5dd3843fa4c17", -- "2bf32012cc6354c709ad2", -- "669f3588d7a4ca7ee3dd1f", -- "3de21ce46f7c8be3bab3b9", -- "432c0a15a9dc31696b79c7", -- "349470b19ee7a8cf922b33", -- "3c53d6131f8c41d5d7317b", -- "5e83dc6dedd0679793feca", -- "54c245a123767ef7f22e33", -- "563e208513fb23ff9ca7d", -- "b512df0270e6ffe2d4a9f", -- "b0715d55fe0c1edd9613b", -- "c0ecef4f88f5957d4b1b", -- "c8806bb60205886d4ff9d", -- "32c2902887e1700cd5dddb", -- "49d6a78a88159326775c2e", -- "56359d56dcb06ea3ab68ec", -- "2d794034e6ae324ba7041c", -- "64f201a4086e40b2a3a19d", -- "7eaf34148ada80711a86fe", -- "2142584bb5cff6c1e5011e", -- "15060a6e69612092d45768", -- "4de3353d33028c5f557394", -- "70594464b46de9acc11f02", -- "1fc064c4398ccf6bf7b1de", -- "51cf9e84f5414c7907e79a", -- "71be60f1312db2fcc7f045", -- "5fa826fd6352f83c34bb5e", -- "62baea1b89700a3953e872", -- "4a266217d4534cc588119", -- "7bc0acaa724475da5a8a83", -- "3d9a1023138b0e9cbe7d70", -- "388d8c3c958b6abcbf6aba", -- "98079c36403a029b3f0bd", -- "72716051b13a2c1876c8ef", -- "515a0593d1e619118d226b", -- "2a035934ba5fafe2ebaf47", -- "316bc661e89aeb9e7e20a6", -- "25330fc3e5df50eee77cd4", -- "6c8071fad8933706efff6c", -- "3669984e1ddcb753afb878", -- "4781781ebc739ed9d4e35", -- "3915c71f3b447b64ce4513", -- "726dd56f61c4c5016201f9", -- "7b8ff43621b7fb13c3edd2", -- "2bfe7376e8ab62fafbff59", -- "207cf80fa76e8708f88dc9", -- "3a4a4ac73bb38c0c48aea2", -- "52e6bde0fed2ecd82f7bf", -- "523ee7b96bbc2b0977b4f", -- "551b691726c66f9ec1f9e8", -- "361fe28e640ec02ae49613", -- "71e1aa5a9aacb38b66f605", -- "d427f0f9d14ecf4c54fbd", -- "629e9c894bbbebf06d3299", -- "37f7d323d5bf332eed1bcd", -- "7fcd5bd9328b9f06223a1a", -- "744db8f7e25f69bc47f2cb", -- "4b0d1ff6297b378945b906", -- "7c1d3420db42a6ffd37cef", -- "2f8592e02ef759cdd34c72", -- "4dac1ce4b87e60431b8a4d", -- "451e904c04882b739d233e", -- "5bb2eece8c95a515d2e2ea", -- "797d4c38129f52836fa5c7", -- "5d29345f097e1dc041bc7f", -- "6b25878a1ec102b9e883f1", -- "610d07557d991d9db3dea7", -- "5d3293ca54de6a3aa06b08", -- "62e4e44df51bf11734aafc", -- "1945686d70d9df98093dd1", -- "2c16632a312edfedcc7f72", -- "19675db116558d90bb4f6", -- "620c14b60053b660420c4b", -- "39a26bf8336439ba9968b4", -- "376c7a8d0fa0abf4c0bb7c", -- "7f2209419e3163fbb4cd8a", -- "6aece787aae5251b57b3ae", -- "6b380bf5d71fe523ad1e4d", -- "2306ed04565a9cf9fa84c2", -- "7e37a126be9507ba4c717f", -- "67ae2ace35fde529154a8f", -- "352d204330140b3786230b", -- "6927c4b12865ac8f053dcb", -- "7e61e3317d07a1009894dd", -- "2768a7a783d9baa4e5cce3", -- "260213253056e29f0ac6e3", -- "61539cf7b388689e7a260a", -- "3d9131aa5802e27a83eb61", -- "5f87453deb48ed6c9a1afa", -- "418b73330a3b4d1a80474f", -- "5cd3a1cc8bf78e4c7e3747", -- "784bdef1566f244d4ff44d", -- "2c4bac0a0cf06ff50ff71e", -- "3608208e4497b40a62b3a0", -- "6e8b2732511303a48ef731", -- "1ef9edb1f958cdf81fb9d8", -- "4bdbd2765933e2b1d70563", -- "b2687172956319218655e", -- "4f787847feba11bfcbc764", -- "49ede33966bc3f0dc8757c", -- "12a2fa8c4d06a694b748c6", -- "2146fc84389596cf6fa8ca", -- "536bfe32ac8da07b253be0", -- "773a63e6b7c9e3bec91272", -- "6bc6acd592c0200b749e07", -- "3d28e1c12f9c60e500dce7", -- "5687a42dcd55b43227f657", -- "36b36922114363ceb85a26", -- "51e267e9a5a7684ebfd343", -- "5b4aec35da23a27808974", -- "2e684b7951a2526d838fd7", -- "62b2e70d411eb11bf0a695", -- "6473dbfbe4a3f63d08e3f2", -- "661787ba011711628186b7", -- "7234cde8ecc6673caf864a", -- "1e39f05dac576881e6c295", -- "420c1c0074adbe0616df4b", -- "177f43e8d62e87c66b9da", -- "10fafca3d5f71faff8f1a", -- "43dcb4450a256b9a0eb673", -- "460372cf36a22fb6b9641e", -- "a4d6bd96f61637d730c9c", -- "1754f51aa79c3b0803bf00", -- "65fe3a22c7d35ad3f875e7", -- "150c29ddf5483fb74be06", -- "716991a2a17f536244885f", -- "475131d01f3e6dc3b169fe", -- "569bfe59efe21364bf57e7", -- "75ac7a48082d5afa148e7a", -- "63f5fe049f46d509d141d8", -- "2b90f954efc9f58a07a363", -- "39c167fbee27f65e96cc7e", -- "1db83df0a168bac450e4f8", -- "127118c35aaf80dac2a57", -- "20601a054af9d51633fab1", -- "728cea43531fbac95263a5", -- "ff53eda132c9a3cfecc65", -- "786d54b4d5ce74ddde20a8", -- "1175d70c2c07855db37245", -- "2cfcb08879a9aecacf316e", -- "ecef39a1ef4b4d1e8c6dd", -- "70357dabf2c34c8309c723", -- "4db4f1a602cec485019670", -- "735a03f218370f8bd85ee7", -- "3c9ecb18a83b901f901704", -- "4c7d0db8193430b75f41f5", -- "28eb082844c0ed277d2520", -- "a3cfbf8b779e15bf28c99", -- "624d49c04a48d42d76c466", -- "221bb5afe07669d916e136", -- "358d745e0bc4be1c3f4586", -- "1ce2a05bccecd36df96b64", -- "362261ed7c97591714ea9c", -- "20f6e36fbf07174b587397", -- "12413ef53ba7fc6fb5cd35", -- "3dd366ce71f1fed428c326", -- "b66201b62ddf6d13c5534", -- "3164747c95104338a78b5e", -- "5ca6e41b81529e38a59f6d", -- "3834a1b7acb0f05d9e53ca", -- "3a2f442f3b3a9a2af00b28", -- "270dae1c5ccafaa07ae8ff", -- "71e916ff79204bdad49695", -- "4d43f85ff03e3cd18ef302", -- "2a2b13112979d27489208e", -- "442eb4a36ab0287728c1d2", -- "4dd985f2fef5c539fa6a96", -- "522619b83283553c71de74", -- "794294f26a938e1caf3c0", -- "25d1c185377c3cd8e704a2", -- "3e7db1002a9116a5e20032", -- "720aa7a7bdeaa025a23a54", -- "70f2550983dbddb8957b2d", -- "57aede4ca861e5051b15ea", -- "52f87910ef7e6dde1f16dc", -- "79c75783449d733d93b4a7", -- "5186a4a6ce8351b40466bb", -- "1208a98ea1dd68a01d3ec8", -- "3d66483aa6674adb6569c3", -- "728caa6061cb6ff29e6b21", -- "3ca90695aca0fd32b28871", -- "18eecc5a940548e7c51e57", -- "cb8a50376e8204b8b5ea9", -- "7731327e4c6ae66c8e47a1", -- "16f732c5fac8192629ddb6", -- "13b16e69e645c1703bf7c2", -- "789addf402241ff646d77d", -- "169566a480e42dcc8863ac", -- "5ca4bcb81d4d03018b177", -- "8ea7f70a71ad46c0c260d", -- "4a67b54dcc404423e6b631", -- "7b609aae44a59cf088c570", -- "59fdfd7775c9750e48d811", -- "5738f30e5cb40b4ed83e60", -- "78b5c76a3ee8c2ef071fa1", -- "2ff21a8761b9bce5f34f74", -- "71af54a2496a076b559a6a", -- "11f2c34fc87060adca2837", -- "4476f33d15e77d3ea6c712", -- "1dc0a99973375f6c4a4583", -- "5cee3684d600afc7804db0", -- "20fe6d6e332154329f831c", -- "1b9850e5f0f8fec4d967b8", -- "6b5617e9152db554d999bc", -- "144303d93b170584849f6c", -- "8a006b686db9c86eb0756", -- "1d9a776cbeec9f5dec9407", -- "503f8d64438b7a99b8de08", -- "7b084b907f4fc0301dbd5", -- "dea3527d089eceb4c22e3", -- "38a39ada5dac01b5c2adf0", -- "4cfeaacecd47507ead712a", -- "3ff99310762f37d685ca95", -- "492683ece46681328f9912", -- "27c1b7b41af947101d694d", -- "39a95d47cf87d7d7d6bc8e", -- "48b438b41e1bc7e58e6ef2", -- "7b0ba619013363524f168a", -- "557bc3fd4a1a6866c5d19c", -- "46ef25878ebd3ab0b864d2", -- "70044b2b283269e2d14166", -- "47226da695602ab6e77894", -- "142fa830b7ba88d08608e3", -- "3019d2c9a4a70055fade00", -- "6bd645b33c041537bb5186", -- "3fc3e580d2ad754a34bc48", -- "5e8a5f959be2a17534c9bb", -- "5a2cdb29cc6790b45d1f04", -- "1c28b93f693054a06fb391", -- "242cca5b643a5f97a01a20", -- "48a0fd415822566b2ecfbd", -- "308ab3a2c4d7f4df4b6a31", -- "4566810f52dbdc6e52d908", -- "53cf166384d9f967e4ee4a", -- "32a9d4d4f421cf83f9237a", -- "7f4b55a70795b9d26512fa", -- "7222af7c6bff611029c53a", -- "718c4a4aea9ee0da236930", -- "71b31c9be0276caacd1146", -- "4d89a145aa9c4acc9cbc8c", -- "26b549a59dc35ee5ea7b82", -- "59308e5db85655d5ae0c4", -- "2f63eb0fae8122aa717440", -- "4346fce81f02878bbc28d6", -- "3a0c64739838b20476e0bd", -- "389f7a523536bc08e2c52e", -- "1a756f67d7e3e663369a04", -- "732b807455afe5538cf678", -- "421e7c19466e0847ffaea1", -- "75aa7d0184dbe8ff376045", -- "178e61138a7396d55d224e", -- "2a07033e306623cf4e37d", -- "25d293607604db30df2e4e", -- "1e6b9387cb8fb6494ace9", -- "524a00dd634d2f57ac7c6e", -- "106fdb273227296116f40a", -- "47efddee37fa0ef6a72a47", -- "2a17c7297a08a3839ca0e1", -- "4c60164f9602341914167c", -- "656c647508629462e9a821", -- "54e5b2458bb84fd7d4433c", -- "15a3be22e80e0f6f498608", -- "152b3e507f8b7898991275", -- "10cc6c74c4f9fcc9428f7f", -- "7e185faaca849a7f135848", -- "62ae26dfe2273af99c4830", -- "7255e6805e164cf9788cce", -- "49b4801e9a2a64a27691d2", -- "3fd90efbd4f0a4e173f589", -- "4afedaa595cb8c309d3fbf", -- "c57749387141da5f8fd27", -- "1ba28761d3577e14d38b38", -- "10a61010d82426d21109af", -- "4d23f5ec809ab5057c2705", -- "31e9d0607a42f7e54a8c81", -- "37107b083cae132372e4d4", -- "16eaf321bf41ee635d6d46", -- "44bf623ac807d4c96747f7", -- "b720b9f07a6b1f41654e1", -- "68705a826f80224f09c337", -- "798b816a4dea5ab964c64a", -- "2adb843a58d472c17edcb6", -- "17c5a39deb46d102235506", -- "70c9c69419338ba44d6b8e", -- "858c45884b129dd66817a", -- "7ffd3daf76b1e818134f24", -- "5b509a0106f1d06627c353", -- "4d6d3f3602597781bd2ea0", -- "4fb33de912dd8d2f8b8081", -- "2b7758dc0945a30687fabe", -- "38271b1467ee062bfe15c1", -- "1d41ed28d87d24620da24", -- "5b80c6e1a5c4dcb3166335", -- "560e1e8aafcab315236068", -- "31204f9f1e25342bbe28db", -- "35d63c19d36b85b5e96648", -- "38aafca45b266dbeef6fc5", -- "426b930b670412d271a091", -- "59f2c50a64b0c2a3e77442", -- "7cb4b7b324b314195807c8", -- "4a1381ccb93c34dc44cab", -- "14da57f8c43c94d5133d50", -- "499a1abb2a1381278175e6", -- "6334fc3ff70d17dd837781", -- "6717c0177a36454aef446a", -- "7bd177160999a650655c6e", -- "2acc282877d9cac38e38c3", -- "18b021fe09fa8bdc44e567", -- "45638582a87d07b0339df2", -- "664ad54353749f2ad36105", -- "5c53790457f0f66baaae2f", -- "1edb6eab35de11d4922150", -- "38c3b4008c9d0442e7b602", -- "76dcede51c5087d374b20d", -- "1901320882ec0093fcda5d", -- "68f5ab17da1cc5dda22c36", -- "4e4199871aec7ec1f99895", -- "68d4b88b77dfae0da7a5d", -- "a4f6b861d9a460f5b65a6", -- "f7cdb22a187815c33c5e0", -- "7b398d970ad745817bcb61", -- "2e061928a5c3ad9bd6d9be", -- "5be7c40d96f7c97153eaba", -- "21887a11425a371d17db86", -- "2cc7417260782c0d2394d3", -- "6b421c0667b336723fc0a1", -- "1d78f3d7e887debfa04bf3", -- "1d165ccd9ac1e4efca4a32", -- "163690a8fd51b113410cc0", -- "419d9a35dec3e5f421baef", -- "215c7e9a1d796b37a56336", -- "541a69af40655a83e366ca", -- "3f98705d2cf6346bf00972", -- "4ba668ebddeaa069043875", -- "2aad9e8261535baeb20b71", -- "6766e290c73bba54bcc710", -- "65118f1b7c366a8bbffcb8", -- "7d88a8aadc667bc60fcb2e", -- "16d8ad198832545831c93f", -- "567508a3d2a7b4fe3b395b", -- "3282cc1545c9e77ce08abd", -- "57d0cd94e03404b9cc57cb", -- "14f23f2aade2de50fb350d", -- "280bf57e6ab95037683d33", -- "15db077682cfbf170ce259", -- "2e1709b850c77f2d508334", -- "34ddcae84938327a3cbc30", -- "ba357a389bca1484d7e54", -- "bc149e667cbe5a17ed77d", -- "25032025485a4979b90394", -- "467db4fe225847525ef33f", -- "54112eabbed42ad31637c5", -- "14b68001dbf2f798322812", -- "7146b897c3d924725bd0cb", -- "6a76e3eb445dada83ceb12", -- "30abf45ef025352e681192", -- "2f687a83227d2d20f3b227", -- "186605e063004c7e4a9375", -- "21ba4c5acd17d59fca0ed6", -- "2cad73640590abfa319b6a", -- "5db729c46c687ddd7690e6", -- "73673685484b4f3492976d", -- "282a80b8de04941c547168", -- "4b53718060040e8179d82", -- "5d50e00035655b4d4ddcb7", -- "546ec9785ee72a2a72d886", -- "4328d17f00529ea0fead97", -- "71faf2ef0654e97e0c23fb", -- "49374e550d8b335cb151d2", -- "42772160e3ea402851c9c6", -- "c1fd8fe80d24243e7b5eb", -- "111d6b945ff69be530cfca", -- "2dd21df4dbce295378bd06", -- "3d8509040aa8739f034dac", -- "68d439e82561e55cbf1eed", -- "65a1f7025bafea5088145c", -- "5f70485b00138272e9a41b", -- "48ede8d4a9a88f7613388e", -- "1de402b5c6118ec8861aad", -- "50f371336a648ade74999b", -- "17da7c01f870089371d6df", -- "2f64ac4f819f8343111866", -- "648ea8b083a9828f8af17f", -- "28d6cf3e20845dc7283634", -- "7dfd6cbe22024260a179ef", -- "65ab167d8e02a8df26439e", -- "79d07c6a6298d34020dfe7", -- "55407685456c2cb8311d26", -- "413278937e6487a988805d", -- "168ebadbade1cbc44496d4", -- "7d6f33ec4a123fa281cabb", -- "59bc93698864451646a053", -- "4d1a8b95ded29dc79fd401", -- "21b466e3230d809af7aa6b", -- "35fa1fca985387fb7fcd19", -- "1a789636807476ba5bd789", -- "7b115c7c405c6e4356bac1", -- "378ef780c4d32c3f15b3c3", -- "23dfbd70bcc040f36d4c8d", -- "6a545ca829ed278f6ee7f4", -- "c06cc01bfe2a9b427102e", -- "126dab6c2bfc9b83475847", -- "15bf0eb485af1135b0e453", -- "3b929cf6fdabeb45375120", -- "11c773ac555182d789142c", -- "444a50dba1a2bf390bea1e", -- "1976a9fa25af6d21cad47a", -- "2f88b1c87d7d02f6c2614d", -- "7fa540fb3906a29b513bed", -- "2b23443976252ed21088d1", -- "5d9383670de64bf15eb49b", -- "1540f88099c93111d6c8cd", -- "2c33c53227ef5693d69f36", -- "2648a635c5981b8daca07d", -- "7b71ed8d456ee35292c960", -- "62c36a3627b9d2b3c18de1", -- "3e985c35adacaa90f5715b", -- "7401d0da6ddc33225bec4e", -- "740f62900b9523de37b6b0", -- "3aaa2c73e60edc333c904d", -- "35accc5a1e3fb474285daa", -- "1d85b86a2f3f20e2832ec7", -- "6dddda58fac4e8afe0c9e7", -- "2fd82a7276af1cf8b372ed", -- "9377e0e5c8d0de1856f6c", -- "75266a81bf7f77865e6f", -- "1de1227159008ec9b59ac1", -- "1b5200adee3adf189b056e", -- "4d8b0cd0d3401fd04e351", -- "438e5a19094bce43b5b5ae", -- "6f339aa4d977875b1f1f80", -- "297ac1b2d19eb1e6e32d87", -- "638d0229863032ef249643", -- "65c9be7a29bf45e5992a7e", -- "7dcf3e6b7d3d02033c946d", -- "6565aab9eaab16f7430411", -- "374a0e75bc76f0adac7af5", -- "8649a3995ad114bb4d72f", -- "45f5960a9db06a62821bf0", -- "36735381ceff20a76e32eb", -- "1416e580fa8bcb421dc6ae", -- "64f00973a0eb117b548182", -- "7507998b275e3c9bd4e10e", -- "305213c4b30a9e8be153ce", -- "233860a2ed2d566e131431", -- "235809998758cf7e4acb1c", -- "2102dede4011c5cfefb7eb", -- "79486109c44990eca52723", -- "43b23b71c3202b31d91018", -- "63606d420b8e8397875647", -- "697396e6df9539532709dc", -- "581eb843dc9919f85a6644", -- "3b98704f287b0ee4e659aa", -- "3886dff828cc76dd830466", -- "1c9f86b8742e14b6caf79b", -- "bafe681e7e52073b86d32", -- "1a5853834033d093c63d55", -- "736d05572fd4ef85eca2b1", -- "61170002cc409ddc34946c", -- "5fc3c4b7f7ad5deab829bf", -- "4597c1546c899a3656689", -- "6667dbaf666f92bd61da79", -- "a2e07f9d73c5e3effd370", -- "63942ffcaaae948e9056c4", -- "6a7db7fb47d3a18b620d6", -- "58b95d74eb4e654735bebc", -- "78a4c0445f77f31209ed17", -- "7203cc213679d179eabc35", -- "22884c181cdc222cad8e5c", -- "7f8bc7233e2784039454db", -- "aa2cbd696160321682a6c", -- "4356ada1ada2921353892", -- "72f7dab0b2d2a35e62478a", -- "32e5682bfa3fd95762512b", -- "77da1b5a2124b6c9e11847", -- "593c091517fff61973996a", -- "264e4b26d39119bcdc0985", -- "fa33fcce55fe6a32e0915", -- "127c199cd032273073f003", -- "169665894aa2b356779b61", -- "9dfe57d1a9a3265476d14", -- "364f70dfdbb439b78e5236", -- "54fb5f18b6d001ef7be401", -- "321e3fdbb0b890caadc570", -- "64532524c99ecb3c365a41", -- "aa480c5cc76379e0cd2de", -- "6ac2b70efaf88fd42c4044", -- "6810dd5945e01cd2c90841", -- "10aab6ed7d1b631aa4b45b", -- "19537a8ee281cd28d6388e", -- "5ba2a8023e5bb50b06e03", -- "646ce329dbe03b0b8312de", -- "4f0024b5b5580d91de0338", -- "2b4b238bbabe3c70748eff", -- "3bec30574a99903f587887", -- "24e71c2d01e956269446cd", -- "68c4a816c641b5b1090781", -- "6fd170c2ab312a1f05d814", -- "64d8389dc8d1b8910fc0a", -- "4807e0d9a38d358d8e14c5", -- "14ee39af97cd5a57b0e17c", -- "24974593a8d59a89588659", -- "59a7f220e101601c1d1b21", -- "43fea0cf26a3e256438525", -- "2b3c80a17ef583b6205fd4", -- "44741cea6d95eb07e7f01d", -- "2ccb45ece6ec9abb9396c7", -- "5ba0eb3a703d0e42cf4094", -- "400f76e25d392f347d4911", -- "419e79b02e607a42e6e091", -- "36c0bf9a937fe6ca772d0d", -- "2244b09bebeaafafb0c481", -- "1501743c447af65014399b", -- "2791e42c7f90ab8d4e7fbc", -- "150365cfcc4a012a673c13", -- "7869636f37e63a4ffff7cd", -- "211dcdb529a6bab73ad8a6", -- "239309f551f303d0037140", -- "3f1e6a84c6b836f245c178", -- "27b94ffb61590cd0bcd89f", -- "61ade8e7a0bcc40ee4c2a8", -- "750f475708a1369e3fcc26", -- "30bed73f7a94de9252a38c", -- "3e26ac2b23b8b913845e11", -- "42aa10dc273607be680d72", -- "65a0cb312051f321a95f5d", -- "1ae82d51e4845bef8c5d14", -- "37c6007c4a0d223bec9e13", -- "4f140e806dac75cc67fa3c", -- "78acf4423afa2cfe1a6fc1", -- "3915d17a2935e69936525d", -- "7fdd8bd273e4a717226cc", -- "15da282cec1859a9591ab9", -- "75d3c5c33e5a2023adfd4a", -- "51890cd139740ee3c35339", -- "2b514798a553e5bdcd8ec1", -- "722f9dc13384479d1c4455", -- "1e2bd3f41ae5c299bb720f", -- "5ab5c85d4bf835440ff962", -- "178cb915d7350e37948956", -- "184e317201ff0ac25eb6e6", -- "37755ea728b820f0ab2bdf", -- "5e147628ce9e9a9493f495", -- "79790e81fd0d2b63f9d1b9", -- "7252d249ce8cd4fb010950", -- "d165a455f92b5083e0627", -- "6354a865e088a0488f2701", -- "43c2ec8afca87567ee9294", -- "55744f373c8b8520d62370", -- "63069f756c8115e5fc4c52", -- "3f5c0a52d2b564cc250982", -- "6b828169b3ba13bbcddb05", -- "46a78cc83c010019e8b2b", -- "27c6ad85e824da21b1cf9d", -- "6e9f47f009d809f84a56da", -- "255358696f5e9ddbfa467c", -- "738abcc274fbdc4ab5efd7", -- "70b9ea82f6a6c02939510c", -- "5f24e71937dd097c0e8678", -- "41e1bc8a63d042ba714c97", -- "6da26efc24e2d57c26c090", -- "575d4696bb0e4edef99446", -- "4c028ddef259fa2c7d4868", -- "33525d5afa91fda7d5fea5", -- "49a3641c16382337f3c777", -- "760b4f231686ca10ea6ea9", -- "547264d2566596f18bbb5a", -- "703a6cf857e651748dc09a", -- "298200a0909b55e97005f2", -- "5ccbc128a5721a5dd853eb", -- "33d5a814c00e980600811f", -- "5d66f0d9dde7339dbcd24", -- "5ef30e941639d08bff19c4", -- "363a65fc59f4a8184d3d78", -- "366546b3844bf45b7527a5", -- "18bc8168956ccd63ac68a1", -- "83bfa3efcf5b970ad41cd", -- "4bc9c371d07d4a025a739b", -- "4636e2935765905adcc41b", -- "4d08f00a99d95d0043cc4", -- "3e94b32e50da81bb5afc03", -- "48a13c03c03191471f1164", -- "3018be3223f82c7f0c9ebe", -- "185254fa056de9af1a6bd2", -- "1fe069b8c57a9fbe5f6009", -- "6c03f094dfe48c9743be89", -- "1086eae159340e441fa0a4", -- "222ea07afe042cf765ce5f", -- "7754a6a5fe6be54c00f4c8", -- "152dc9fc63d3c1eb6c335f", -- "3f3aeb0a1df198d9c95768", -- "7ef4c5361ca08ac1cb6216", -- "527e969f4f6eefe6289ece", -- "6b105359a1a68d94862411", -- "2674d42d16e97493518d2", -- "369c62fe5aafda2a550912", -- "51eb860c87e1e5b70bb623", -- "29f3402339c3128a1e2c1", -- "413f256a64feb56e242e90", -- "11ea8c21342ce42ebbf9ec", -- "5517c01ca3bd4da9aef0ad", -- "5d2972b12e50e727a2721d", -- "4eac7fa0d6b168c3bec4e3", -- "5cd8f5f9eb6806f67db613", -- "412ae12837a29724832877", -- "770b83b55e13465063e5a", -- "76201f5e0110544f41d9be", -- "c8918a059fa77676f0587", -- "287593985c21589f72c821", -- "6b923e02dfb1da62f37204", -- "2600c04d980b2307982b22", -- "25f7e1ac0d4153b6365c1c", -- "484281d930b8ee32f366f0", -- "3827eb26c007235c46c676", -- "6cd2d14ecc5fc7c2c1b52f", -- "4f0841f63a0c64aad5232e", -- "77c4b593ec648025df03f6", -- "81dc886feeee4945edceb", -- "522afb743f67b3ca56b20", -- "5505b22d0ddba48ae2020b", -- "2f3b362f4b742eb82f8a34", -- "1c7831e5dec267ccb26741", -- "2ddac7db8be22e88618b58", -- "4e6a2eb425fbd18fb02cb2", -- "147b65e0e829ca30fd88c2", -- "36304be3f0777300703af", -- "215dcfa076749277897e0", -- "3c2f54ef99be42fe30d32d", -- "62a01fb38e5c88098fbcc9", -- "5f84ae1685459ae7e24bf2", -- "3ecd8205beb790946eaa8f", -- "5ba344fee845769c2c86d8", -- "36a92b305c21171dd5a616", -- "3650c22d9c1072238cfcfe", -- "9225712405a5bd9ade58d", -- "594ae94ad86b9a719f54a7", -- "59f0f5465ff1e16be9bfb2", -- "4c6a0f6de7e50ac450c0c3", -- "685afb7cdd699d5a8f020e", -- "4f1c406e243fb2af67cd42", -- "2dac9d433ff98cf24eae81", -- "1167717f2d3d6238b3d21d", -- "381012de4c9a82f9ef1d72", -- "7047a4510b8c2107737ece", -- "185033e62f44aa85a7799b", -- "41e135572f9ce788481248", -- "4759751a101953dd340d89", -- "34d59de432c0dbb24ae55b", -- "5bcd4418d37c976110b37c", -- "6545cb112ea4be72bc80f7", -- "52d104741cfa5fa49fa55e", -- "7322c20a545b3845b54b34", -- "783c78a9025283e7188a8b", -- "3c81a9658bae42644c317a", -- "1eb56fdccfc12b22db2048", -- "3c3f770d148b4692e25b59", -- "4f75e255d88657b2ba4755", -- "260d6ba9444df4b85dfb92", -- "34f0f61d6d8d062b6b9d9b", -- "74fc1bfd19b3cbc9867bff", -- "3f0d18b1efb7248950daeb", -- "65b7b50446c767e6fa72fe", -- "1124cfa0e070cf6fe3c638", -- "2d127e6ce6bd0f1872b1", -- "3fdb99cce8884ed923271f", -- "2d2a15867cf9361defac4f", -- "9a39acfeb3a1b4c2bc79c", -- "7adeede80a05e40854e6e", -- "4431184365a358de692057", -- "1e4fdc54209c2229d7ffcb", -- "50cfa48cfb994ab2b77aa3", -- "1f4b918e0e0d47c89aa2d8", -- "78ba33e419cbc7f177437f", -- "5f7482c17a568566c785c9", -- "6fff35974d5f0b86faa46a", -- "5106bba99e6268d7bef3e4", -- "67cb80a136db30b9d60d6f", -- "594a3b6273b1ed2b542eaa", -- "6a1d554c48496d8d543eac", -- "9d8d18a72607c311d6f76", -- "7047889925ed18a885358a", -- "283508a2ed137e839b2207", -- "65fb4589487aa5a16bd767", -- "1a14d5b10cbcbb9ad3216", -- "4a469bacdcaf5434109262", -- "40ebb7bac65bd815945e49", -- "7b2ef1bbf74c4989ed5ddc", -- "5ca51c82df4def8b1588cf", -- "3b22ed42f28069f29c280b", -- "669e7a28f7a7c30460a80a", -- "2071c913edfd4fd6daa6bc", -- "3828df7e9ab6753fb83dc1", -- "4cd15a66ba5a2f18c8823c", -- "1ac96b01993da8677b2fd7", -- "4f9634be1ae125361bd4c2", -- "681fcdfe60f23e3be083f6", -- "2d5bb2b553d4ed5bc0795d", -- "4c4424602626193266d943", -- "2df30214a49a31c21380ef", -- "48b920d23514d06befaf52", -- "4b4c7f0a822537ff62cdcd", -- "ee9d6b69f13ec8f385e6f", -- "793fd256b009d961487499", -- "2d70f946f2915679b314e6", -- "1bc4e87c1100a2d26aeff3", -- "6b1cbac9279eaab9b503c4", -- "5725842b7246179896a39d", -- "4dcc6ee20983f0020ad69", -- "57dbda5c8b230a87030357", -- "78c437adc3b6ce946cdd", -- "20ea7b335b7621642b29a6", -- "179d4134709978c75bf6d2", -- "36a3336f56c91232544e8c", -- "e243f28e043030ee3a43f", -- "2d678e77df571d7ac4859d", -- "5566a844e8b1c572f69612", -- "27244290f774a00786ca95", -- "1812bd60b720f8920fe80d", -- "7f45c48d28fd31ceeb3fd7", -- "1bea5758655f1400515db4", -- "249b7a4d080be0f548cabd", -- "71215d6fd5e662d930a424", -- "7684536a92d49a5af59f1a", -- "74d39a89d87bdaa449438c", -- "3e4e77e268fb6e7602e96c", -- "46c6313b3914ecd376b959", -- "31b9dd76b9ed5f88dd4609", -- "46734211b970f8a6448a60", -- "7a6d5b1013830761b58026", -- "6157a651f2640a73f1f90", -- "38793daa7aa086d5e70798", -- "58d7de0f8254a81b5d0f5a", -- "5a1fe9fffdaa20f4ab7eae", -- "7e8fbf173741aea1b95c93", -- "4bee7e482b290b1d3869be", -- "c075fe6224a62c1010fb8", -- "7340d7daed67bcc5cd4391", -- "2e12097225e5783b545083", -- "518711fe03b241cfb95160", -- "4956721f6a2ced1fc736fe", -- "636b15a893c301ff23f5f5", -- "5696a96208101739ec4ba0", -- "54fc920cc0125e53a92499", -- "7c2e242ec2b95580a9b3bf", -- "4d0e82bdf34ff4cb3a603e", -- "786571b85b2768309c8ed2", -- "1418facce22bf24a5e6a51", -- "681a88fafe4e6f0620910", -- "5e263af53ea065e044720d", -- "1c614cf9a9d87d69154c21", -- "346f2a2b086e1b35095d7e", -- "4b6ed31d0715952774511", -- "67a3f20bb5e980364816b9", -- "339dd42a42d94342bf8399", -- "3b55da90ad9a162be1756", -- "1c07c875b3a9cdedf7611d", -- "33567e972c90754c86a5ff", -- "3ee5a2cc90e335867f0ce8", -- "4b3a8d22fdb2c83abba9b9", -- "5b6b96beb19fb0dbada937", -- "5169af1cd74986160450d0", -- "724f8bcd40bfc9f1ca0c68", -- "51603bcc8667777e664f9d", -- "78aded63d2f85ac948c449", -- "73862de61086c1fd5e0678", -- "5efbbe073364ace07f02c7", -- "144a6c20d0a8d5dce2b12b", -- "2aead0dac004faa8ab67e4", -- "3f8cb5eb229acba822b48d", -- "34c50fc58872b7325366", -- "3c1fd5d9a6223b2ce7b02a", -- "554f5cfd133bac2188241d", -- "559752d946b02da4c2f657", -- "3950591be73642bfa23264", -- "2e8edc0b6dfcfb2392ce87", -- "4c3c570182916f32a6f96c", -- "65cf5014ab215afd17cef7", -- "54ad7fa69dfd0b4c19f7ed", -- "f4af5a6143d8f44e48afc", -- "1a08e273719d3411178252", -- "668b9e16f3948f582a5b94", -- "3fac097802d8f5fb376d58", -- "3c2dca32abbdc029f4a212", -- "753f0795048443573283b2", -- "622b540293b1275c5a9446", -- "5a2c8ca58cb488822e9f49", -- "295932427e10aface718fb", -- "43e36b6d5a937387b49f6c", -- "4e1162d634d0d5811a2441", -- "19915afea85d27cf8df109", -- "7eb8dfe838ec5ef9d3ee21", -- "2c18c59d95a21961c42f21", -- "7233f4136f3ace41bedb12", -- "142c59f31fc82fb58a7dd5", -- "452816c1b54aa2bfddcc17", -- "6f24ffc802a08273be511b", -- "32d68fc9b8a9c17b315382", -- "5aaabbd40fa78dd417edf5", -- "51d8b3e6fa0afa106abc40", -- "394faf6069c716fcf8a76c", -- "3f7d2ee6cb32c6bbeee194", -- "4354f51efc9392bcd6e51d", -- "5e73615c65ae9e74eb1ef3", -- "761e42e1c908c2f09e096a", -- "25df9f831698604e15991c", -- "351db0dca5d74808f36d33", -- "aef2488954588af921ab8", -- "296a247b4b36d5c2a1884f", -- "b1fe15d9ac88348f41a87", -- "97342eefdbc78b9689120", -- "1e47a4330f0bce93db13fd", -- "7511506751237c1959933c", -- "31e8a39712fb3a7a11f909", -- "6116bef6a79fb2fc15f0e2", -- "6d849a39e47370e473a913", -- "42a81f5e10b5435180e643", -- "17715e6c96cbe096c4f9c2", -- "606e14eaa7d60eb7ea925a", -- "30cb89652c8629b5e0dcc3", -- "2625096534f2cf10d83a26", -- "61036fcac29b84e5ca02ad", -- "4669a41d4e444c1284d024", -- "2b81c6e67e55aeb6e93a", -- "23564d97f447b0091e74ce", -- "494807a247f7ffab73a644", -- "692eeb4ff69b42372517d7", -- "3eda92314bf1d09cb5b08", -- "24b22771f303ef742b8ce1", -- "5c616b0d1a7bc591e70e46", -- "4aad58987821ba8f33d96e", -- "10d0aa100248920b9cab77", -- "1ead89a48b89a75ebaa7d8", -- "7fe887d8c5fb53af79cbd6", -- "ab8e1dd4d27b02d09fe48", -- "2294095a6b77aaa416cbd7", -- "69fecb55ba6da700789d7c", -- "681750fd18618072db2068", -- "30a18088f5b2af396bbfd9", -- "2e03d3c0794703b9605de0", -- "f26a2dc235ace7b34f4b6", -- "356497a9675898bccf4e79", -- "3286bf159405584d85567c", -- "464550e0adf269403f3e22", -- "3f603c7b410b4c2db2c8e2", -- "445381f98a1f5669880827", -- "23eabb9cc5f4086c74bc31", -- "4628eb872cffa1868b96ee", -- "6ac77b7cb23565518aa2d4", -- "1cfd8f0d12bcce21589c11", -- "39cdc5e6675ab081ffe60b", -- "1e378fb7157cdaa6fc3a50", -- "669f4c5ec3934953500b78", -- "46a91d898168488fd5ac51", -- "64add9cabf8efdd5f7b57b", -- "45813314ca1d165bcf242c", -- "6f37e3a85128974cdfaa69", -- "7f42b66317d26c3f938805", -- "181ee17c34ab8aea52c900", -- "68e8a818d524954278bbf6", -- "7a6ffa939b86786a779a44", -- "31d809b078cdefaaf45266", -- "7f216769148f0e997c7805", -- "3a82369bb1a4da519bbd70", -- "25920b5c96127e9d8ab05e", -- "29702fc1f57fddc3369967", -- "616dbeafd6aa623c1a7d7e", -- "634d2540fd670a82f219a5", -- "3d9abe3ec82d9602d9dd6b", -- "665bc65420c0b0a151c97e", -- "37d50d7838efaf03049cd7", -- "385f7f48a7be6b46d108ef", -- "5f2bc99aad2f27cdee05f4", -- "3b6b43619a3730d5995ae4", -- "5eb76c6301d8a849a1903f", -- "38910d873da8dfd237e8f0", -- "41558cae58d4f9a9001b87", -- "58fc1b58696f8c22cfe344", -- "64520e4823f48c1f48749a", -- "3827b84269040363e5e02d", -- "6c9c81ea487986867245b8", -- "217bd444ac8e9808b3ae5a", -- "44dd70b9323f17568e4ba3", -- "50226b4aa22a0465ceea0c", -- "6335fb7682400180e10d15", -- "1857324131e535b1b2458f", -- "3845bd22f959dda9197376", -- "4d7797e0b2f77a7ffee785", -- "16bed27a9c005817ccf111", -- "5bf1d1c71be0c49ad75d9a", -- "6d16d10feb1728044f2dc3", -- "3abbf8af06f889daf59c4d", -- "45769a307f5593bbf72056", -- "2a640efe463008db4ed634", -- "57f0f7ecb2d7dad43748ee", -- "8000000000000000080000", -- "7aa96a9fbe718c006a48f8", -- "24086a392ab75e649d3cc1", -- "9f20b6fedc099ec575691", -- "313d62eb5f1104de5421a", -- "438f5c0f163a4dfa04e5ce", -- "63137369b8d47b6c9c43df", -- "4ceae8c6ea35dc274647ed", -- "465f3b1e25cde0e446d90d", -- "9f0c9a93eecf4de349628", -- "3addce3c43218484acf509", -- "101d83882a81d0147b4342", -- "4585b77fea18a0113ff609", -- "73e92ea015629e3728aee0", -- "257564a39a648e17d015e9", -- "2f927b360b2b43bff822dc", -- "328a9932d6b08a41a1df0e", -- "207ff6a0da7f13b316c4b0", -- "4b11585991700c233f6773", -- "77664e53908d00007d1205", -- "434a5edb31a9c3c6a0243e", -- "692adfabb87ce969422961", -- "3eb189e2bfcbe180703cfd", -- "367efb55edcaadbb5e4f2b", -- "4573a56ada0a29d31dd6b4", -- "636f015a0c62753b283d5e", -- "158e9251ef94651015ecc3", -- "ca30526530b6f6f0c8fca", -- "20b1838f00aa00d07f70fc", -- "50c65d8772a3d5db269535", -- "47262fa06b9c5ac8138f4f", -- "d4a270719a348af6d6c29", -- "af99b9d024438cfe9df66", -- "2a5043ae183d338b7ebd55", -- "7b85e0b99eff408f2aa978", -- "282774a1f4bcb14e6723f9", -- "58137399c99866772aed9a", -- "7b7e71610f1589da383c31", -- "1705c133c7ba24a2b5c528", -- "336a41277b427813eaa191", -- "78ec94c22ee912eded5499", -- "1f9e8bffcac3e1471f7cd6", -- "7e688d1cbe7e0a84a0f408", -- "50a70d2086b5ca78a90368", -- "16f5569ecf073acc30831d", -- "720d9e52c4aea85ae24480", -- "15bc81dd36a0393963bb64", -- "633dad9eec0d451652bf40", -- "3d433adb4bcd914fcfc4", -- "ae1614cb7437dc6311ee9", -- "504e8f5ee0e51320af92dc", -- "4d55039bf17366425f055a", -- "2ad535a50fda15e1835526", -- "4f5cb9e29c3567f8c1b22b", -- "409705e5654888d8af2f47", -- "145ecffc8b532b7855ca8a", -- "4a79a4d35e92cbac8fe0c0", -- "7c2eeaa3b5ac7ca26ee5f2", -- "b44a774aaac3d4d335389", -- "488702c5b90021b8b24933", -- "62d4635d0bbd6bf8fab17b", -- "47a6912faf0eba695a3f82", -- "5fea5590381b705c4ba54c", -- "552dab94d8fab803e3abe6", -- "622e4bcd237f601b3f864e", -- "6b6195f4939abc517ea1fa", -- "7ae4ce9746d1a251afde2", -- "5411d9720f633bf7a356ea", -- "93d0f45c8e78eed19b2b4", -- "2cfe955ebd8c7e4615715c", -- "4680ebb5e7e7fa1e676838", -- "1cbb8749de080f5bb23b75", -- "33fee942f43e9b7d2118f", -- "4ef1c6a1bd63bb6b6207b1", -- "1c1f24204ec4b044c10ff5", -- "3561d1a2752f1d17dd5823", -- "782fa87576f745d6c5a644", -- "68d895a65569cf3ef3e3ea", -- "46c01f4170feea6c601e12", -- "7b8a17b08fccb33f4b7d6f", -- "6332e8b1655b1a7193eb45", -- "6649997ef28c919c6cae0f", -- "55b727631edd20582945d2", -- "1adfa664cf45ca975af0f8", -- "34ca1ca17d4004b63727d1", -- "46bc16d9041c2bda07b158", -- "31afe414b9e841f105214d", -- "4bc252b0fa653478344f1f", -- "44b0628f84b11c5e71888", -- "7f821b6d896942293448e9", -- "125c7d70d2b6d99ae885da", -- "49fee8b58237dc40ba3c5b", -- "5dce9f322e405cdd3dc195", -- "4e5afb2e233daef8a9bbcb", -- "64e35a2939773b306ebb74", -- "3cf63e3a65a7e509ca6dd4", -- "1f88577ebb6a87d8478dfc", -- "5d1cdedac3c1f047923b22", -- "14b8d711e9732dc1d81b85", -- "63ca1ec0700483b8f859e5", -- "345343979af3beadfaced5", -- "3aa36ece405e3ccd9341ca", -- "5c37d517c640ac7f62a532", -- "68e1a6376fdb4eb7b4b0e6", -- "69a00aca76ae6e660be7bb", -- "1644cc3e7fe80220ef2f70", -- "58689766e836a562c78c53", -- "2d83b4eaa1c8f768e56c30", -- "11ff8e8d5e956398c99ca4", -- "66de0cd9d504d0c8a10caa", -- "f5d2bac49777fc8f10242", -- "30436781bd712f316b4895", -- "7a7cdf214176b6d3191883", -- "64f3d838badcddd9bfdd0e", -- "190017f50befaddece16d2", -- "21a95826890e5cccb8a83e", -- "2c958c952c5c886c2a60ad", -- "3f8ccc4c495c412c1876e1", -- "901282766f87bc24e50af", -- "67fe63e894b36bad057249", -- "35ab264ca762acbf67e1de", -- "65b1a43ebc40ff17757bfe", -- "1e0b5aa4ebf1898b7232a8", -- "5a3548ae1dc271964cafb9", -- "26e45399ef9d09b479c0d5", -- "ff910ecf2ce1ed443b3a7", -- "15dc7895737fd27e2fc2d8", -- "306cc735643548c81d480", -- "716be1338eb9fa3160de8a", -- "37c639bab06813135e6962", -- "18d28f7c13bdb1a27fc315", -- "48dd5aa0d80d3fd4d31225", -- "308d7af9cf09073e61779f", -- "659ccea55ad34dab51a321", -- "25f3d9fd234440b97c9821", -- "5c0de6f6c164f44c52de84", -- "30927374f464c892c53b50", -- "540974d1b3361c5ccd3a2", -- "a0b14921f2ca115669309", -- "157e5726ec48e98ea5652c", -- "7c50148337071a44808f27", -- "54f01285acb2da9689a386", -- "569b68c3d77231282d1705", -- "7593ab2f13aa524b76e104", -- "16a7968fcf87b51aa207b", -- "2b1199cb9ff7848ec581", -- "235057c5ef06d64b0093a1", -- "3ad2c2000ee1db409ffcab", -- "46dbd89f4ae0d06c0ab8e0", -- "7fe713df2e65b878c1edc6", -- "4f0b0a9e8338cbca398b3f", -- "67ae16da8f876a2c8dc80f", -- "1bff1788b61c434292f278", -- "137786296b1e5f466871bf", -- "413062fa329dcbe3b8887d", -- "76a4bcdffe1207b9c84c3", -- "394ca6d6650a3a703c8f0", -- "7ec0ec060d3788349445a5", -- "5e6c438c53b4bfbeab6a4c", -- "1cae4d5a0b88eed0b2d97e", -- "37150fd6c06a98e84f0fb9", -- "5e5c9c54f1f75bcc98d1bd", -- "7273cb20026d3e5dfa9567", -- "23675569b6f74cecec658", -- "4d84d472f48a1f27cda4fd", -- "52e4d0f780530e040b8198", -- "116822d6715118a8643140", -- "2fb2d651d1a5fde2dc4d89", -- "2cbb69d06f0ba3051ce433", -- "982362cb3f64fc2535f18", -- "ce584760ca84047b25a4f", -- "3d32a6b665f10a829cfff8", -- "228eebf60c055615805405", -- "4adc76f7cd88044421953e", -- "4f588ef825e26e596e160c", -- "464063c0e0f5e5eae1bad1", -- "231a1fa6a52f8377b2ca86", -- "3b663e3e9013cab9326fc5", -- "24716274d6f1761a2e503e", -- "5eb0e751f365585e4f3fd3", -- "1c63d031374620336f8c7a", -- "6ac96f98fa78ffb692afd9", -- "71f7ff7f6245492bf4ba4d", -- "46b7638024bbab6f336734", -- "2d3b2e3d52eac5c09743f7", -- "2bf0a5cc2a5150523d2e64", -- "1f7e1880120c76703199fa", -- "27b48290f4bc222f54681d", -- "274cbe37d4fe65732936f", -- "5b872486f12a68a939069d", -- "76c344db7c98c1b1fa25d1", -- "6745627963b760ee39ad1a", -- "2d30342ea20393b89b038b", -- "51e2ff830fcf99b4147ec", -- "764156f5d90616c8c45669", -- "19d3eafc75447dbc2ce4d", -- "4348b708829c7eddd56237", -- "605ccf0922a0c35f768933", -- "86aa65ac1949dd8af6918", -- "2e564f6ba5f6f74e33f2dd", -- "54ec1fbecc620b2a62de33", -- "da96dc29f77c98efd9a65", -- "3756665d23e5dc56d35905", -- "7108a03a28803eb91e8a0a", -- "75fa74ccac539d6f2e079d", -- "56f539741375576aac816a", -- "78ab001943d18ada1f6d03", -- "7a283d5e2ed98485e2d260", -- "7ca8eb46f6df31902607b1", -- "3a9ec75af3c8e86b8c1b73", -- "61df6c089b8a0a75da0288", -- "3277a60ca85c986d50dee2", -- "4afa034c14d96f077cc41e", -- "58ca4d190a0f756173e746", -- "33e094a7802d99ab1d9620", -- "4ae3a5f46681ba13e649ed", -- "6369f366be6b5ec99ddddf", -- "4ad5b5ec9142810d730c91", -- "520d75e4874b90e95d0ac6", -- "56441a020eb196f9ab47f5", -- "4f100cd2b63ef0cdac7165", -- "1d72e71f6a57243468bc42", -- "6102d4b92b578db1756028", -- "6cdde5dc50cfba13ab15cc", -- "6a2bde70b440f36a3a69b8", -- "40afd831d872bbb5ba2dbe", -- "52a170878e73d2b9a73398", -- "363495385d4023abd7fffb", -- "75ecb6eacac31eec1c8d24", -- "38618fda51c023d44b41df", -- "1b12fc1c7d3ee5cd24b30d", -- "428c02c3c8bb1613aad2fd", -- "6e925cc1e63747fc8301d9", -- "1711e7c4ddf7dd725f454a", -- "6543f2ea86c39aa319b565", -- "4f88d842683a24f7a78b4e", -- "6297ed8d827bde2f27c592", -- "7a4c62248fb05a7ec5f894", -- "50873f081856faa7b0c6c0", -- "4a5c54b88c3afab5d73bb4", -- "93ecdd9b52d588b62ae9d", -- "1dff7b3a25d6efec89d4f1", -- "4eabe0db8ac5d733acae29", -- "2d0a5221661bafe1bae3a0", -- "86148c3559c855d7a4785", -- "4576a87293566d06f5b643", -- "2c941d4c1c7d68ef593ae6", -- "2c36a4d87847724f9fdecf", -- "7b5f04e933b2e4204cdc65", -- "774b9d1f08bb74ab682979", -- "7c1fdd60de643e750fa1d", -- "682291bfd680e2cd8f9d70", -- "30d33e090854573dfd98f5", -- "3860366ed3637eead94b8d", -- "6e8b7f0e9607e44c1f9f65", -- "720851fb976798365a6829", -- "f5eef843bd404a6869b17", -- "2a8c9eedadb6f6d58c06cf", -- "232ce65586f95692d89383", -- "d5835b5723a9063a2dd80", -- "72316f1be6172c06994a4d", -- "6a44a264bb1144d86619f3", -- "5451512089afcff74e1bd9", -- "557e56b5a5dcf30ae5f48", -- "2a2840d0a8db4a22fdfb53", -- "71e107fc4c98b40c6f7b53", -- "68c711e371efbf9b278db8", -- "31b42ccc858ccceae34d5", -- "47eef469d5e96dff3b60f7", -- "622155e1a7c16eb9e6f098", -- "73037907fb5b7e20bf7973", -- "2a5beeac5cc34b9b70fc5c", -- "214b26c5cc4d2d1d455254", -- "3326fb026bfe153a5a80e5", -- "2fd395d2076e94e7f79f79", -- "1da6208947854d10119a62", -- "507a197204651599300f85", -- "60e1157dceceaecc3a16c9", -- "179c67b2886cbf8a80171f", -- "4ad8d4214e4fe01b143d8", -- "594820c775fd57d86cf9af", -- "18932d3a50056ecbd4c0", -- "cc47e7e925da6c91fe510", -- "5ca455ab52339850752f94", -- "31934713e4ff1d0d7cc583", -- "77747c8e4550378570ec0d", -- "44fd7c4168c2a61413dbd2", -- "278331e342f211746f0d9f", -- "13022f601d429947abd201", -- "6d5ce69503f658697314d0", -- "30151eaad7aef0e79d5e07", -- "3b6333c6dc16d5f4351c47", -- "308b1811fe8c7d6801df6e", -- "1316737cef6e8d73f98c46", -- "34026c0467a5bb1302960d", -- "4374fb07e1eb1efc714a7f", -- "13089f86ddae7614e1f733", -- "91782b2d8bf1ec8b6e4db", -- "739d86f4db437bd59681d0", -- "2e99bf2a9cfd14eb01e4dc", -- "1f372d16a7c783f301d859", -- "3fd38eb64df431878b817e", -- "1b3d8a50e5425c7a4550f6", -- "2f775dce855cb22a4ce4b4", -- "1856ece5542adaa42b18cf", -- "72bad07fa5d3ca19811efa", -- "210aaed4cc7b55edc4255b", -- "13ef893fe161bb05038778", -- "394242cd2ce4d5c927b1f7", -- "2d8ba9bb83d8b7dc77cc32", -- "4a9dee0a96c91e7cd6d7ca", -- "3b62b01334bf25d1f5d560", -- "3c11b4ca34c3237b362a26", -- "9ae11d1f0b2cb73496a44", -- "7d10d41f081cc53194454d", -- "3476974a3a56c244bcd4ac", -- "2d248bd8de364598100d1", -- "371b6d93bf32954a1ed005", -- "2f9195fa1721a36e6f5198", -- "b5ea9188a76cbd4490c2c", -- "67fe64c68be6372b30260", -- "2582d22d55dfd72b2d70bf", -- "2144bb26c3488be851e3b2", -- "69cf5ded5037b0fc848b28", -- "451cf4e4a6ce149cfc4095", -- "4845e19f6384ed5724d8ce", -- "5c721c1e9f943f1e44c526", -- "6b628f924b031ff396258b", -- "2db4889991fd96d5a3dbfa", -- "75393667821938c0e5a628", -- "2e37e64613e6e49f75ff6b", -- "7569e0846a7c92c5b07e91", -- "544e247e73028cc23b1f51", -- "2e14fbc2ca9b056ee6a0e6", -- "5c96c4bf9c30f05dfa52bf", -- "30455197024dac28f22ad9", -- "16587b1213183c74388d6a", -- "62a6ac9d0c5e4b3890d61a", -- "5d0e736ad9b0e048c53cb9", -- "29c81a2bbc75ee65e40fbe", -- "a5803d95905530efe4cbc", -- "45fae251151688f6948ec3", -- "34de10a25d48bbec6bc310", -- "38e1136120c0a50e7c1942", -- "4be7ae42a1b71df0fdbed2", -- "70eda2a92c3f3d551052fc", -- "736e4111350ab36a2be4ca", -- "471e19dff79f0bf8dd75e4", -- "7c4c5a07ab45db64032f8c", -- "3e8f3fee79b0aa7d3158c9", -- "6803ba4d96f3cea5b5b619", -- "645491f7754448588100c4", -- "64c773513b07ac7be226c5", -- "1207f0afa9b17ee1e3a14c", -- "1a5a3601f9e5c757413d21", -- "671a35180c429ed6cd73d6", -- "3f719d970328ab86444133", -- "2eb29dd03203d9dedca2ed", -- "3ca5432d73f30360d5e251", -- "ef9f73cc5ae815a32ca63", -- "76930d75187c32e1c0855c", -- "297ac6d1d91b19c8ceb3ad", -- "4d06acabc42f8f6c6561a2", -- "17f90d7760ace90b4281fa", -- "79973f898e87ee6433e53e", -- "1177a186084a0188e6b25c", -- "46ea372cc256b25d8bedb8", -- "9d0d5139d46e4d9db3662", -- "31f4e6b45c1cedb6d4c94", -- "222ad5a5eecaf564928d05", -- "7bfb517a9a7064f7f0b9cf", -- "88d1f466f33239ebbee3e", -- "28c8b8ba9341ac37c38695", -- "430a7ef273c75f6860a9e2", -- "5963fe850d852bb19cdfe3", -- "57ca180b4c6f8c3a63ae46", -- "745f8230228fe0e913a537", -- "6495ff035413be2b53c45f", -- "1825a2f6c03df8e89a424f", -- "4ee9fe013ba8fc6ac8d470", -- "7b7c35dbf0dd6b94d050c5", -- "a70e6c0e6da7b5bd943d0", -- "6904f88af6eea4b3f91bbf", -- "5ccb3321bf79805e3743ec", -- "40fe888eb50954f82f8f41", -- "1683c065332572cac40e7f", -- "265a6fe3ade48b79bb704f", -- "6869e474162fccd5e6ce8a", -- "1621052353e1bb38663f44", -- "5206d5cc4cf74b102b511e", -- "459fc4d70a1a8040309b48", -- "1a38abc6055dcfc6f54cd3", -- "6de250d6d96fba0a4a2df6", -- "521255c27009b10aeef14", -- "784a6ea72c75433fa2c1c0", -- "1c429a8aad032b85e815c6", -- "46ae03b83630be869f3f67", -- "468227ba06af62fa70d6b", -- "1832f7608c30377f8a27c1", -- "74e8524ea4276a1585abc9", -- "479f0a9b95b8f0e630df10", -- "6c9aa8a230f91d4e6f84c2", -- "2020839307f0a0b2a66465", -- "617907260cf1e3612508c0", -- "50b259ce6ef7786ad19380", -- "60ad8426c5228781a660d2", -- "640821dda0f544b159e25f", -- "11216382d02fa8a680f2c", -- "3b142ae3f666b5a458fd6", -- "50d8060a4c81ac0d9dcc9a", -- "656e0aaff42e8f100df7e1", -- "6b189bed3e1ee805a7089f", -- "587965194057ffad1ed72d", -- "7c91adf751ba7b800072a4", -- "66c37766a09f2454161188", -- "2aaf602c5ad427702561f0", -- "1fe772e91ad75a2d2792c4", -- "432bf33542ea8f8c0e1cab", -- "108be849403d8b9e0adadd", -- "1f098e306099d97f37bcee", -- "15e468fec0387d9dcde2e9", -- "35a56ed2078e145e9b5d42", -- "3450478bbaf1db9aae9e0e", -- "5819cdbf42afd2334f96", -- "453649c203cf983e439d84", -- "6e6871265fe9883143d121", -- "14b7709b903167ca33c0bd", -- "5bb6095d45a0253a5e3e2d", -- "604b2e853911ce83225aba", -- "7dcfee63c4d594e4583601", -- "245ff16a71eb8c45257fd0", -- "51f56cb5201bdd22f49e70", -- "1b50ac3c3f5269c1d7aa40", -- "68c11de19f57751aa11e9b", -- "73da067d52334a718631ff", -- "63f2b709d7c6ba1ce60255", -- "6a47915604a062b94c626c", -- "6d15e33dfd91b0adf65ea8", -- "36b718d293f968b4388def", -- "38b2a18fa105ae1a1e82c8", -- "456d747923e7fcbd260fae", -- "17a8f2f3a036b54c467b7b", -- "4cd6b5c75a375bce549db5", -- "ad8ecaa59795b2101aeb", -- "5e89ffa159d58051edf13c", -- "48457eaf5bfbcca641689", -- "11e987960e92f0cfe9e7d", -- "484fed0412b66b4ad6689b", -- "2567685d25fd668a9a024e", -- "5d36dd2a4f038c91a8e525", -- "78386c3f2bea1d92b0136f", -- "6ecd91e762474ea500bb02", -- "460dae8d89d7708b43a1c7", -- "3846b043ea9479616ae948", -- "35d846be55b3952e278ab9", -- "697bd2294052d067eed5b", -- "29ecceda91e2de99bded7a", -- "32c247d46291051243da8b", -- "59d6c2db6f995cfebbccc9", -- "5628eeca86bc4f505da4a8", -- "4450b05b160d8c53288cd5", -- "5d0b6fe03f574db311d01d", -- "7059a8ae14b27b87ae7942", -- "7e37627adf10efb14adf13", -- "4dae59d140c542483e12a9", -- "26246e8fdf408dac8fd2a5", -- "2d3baa252f4d982bd2ad11", -- "266efd2e0daff29e309d38", -- "8fdbca74c18894d421e52", -- "7cdb727ae2bfeeed50af45", -- "490df281db25788739ca0c", -- "324340f1f7ccc9eff05524", -- "595eaf076defb81f21236", -- "22aca8e5833c97719ebb51", -- "421f5a540df5b7ba309bc8", -- "4cf40ea87be0baab3f0a23", -- "78050a04d755b7008433fa", -- "70089a05ca7765b8ef62a5", -- "6446d75a31a4956c235943", -- "3bc0b4b12c4e0d37097319", -- "6a6ceb53a9e08bce60e22f", -- "5527257327c4eade309a67", -- "5193e0be567990b2818200", -- "540f6a5d04324cc6ed1398", -- "d79412155f3d978866277", -- "65e3000fa520e5bd8bfdc3", -- "988dfd270fa06d78d9fba", -- "6bbfc916f60c65ff6069ae", -- "22a2f494120b7469421488", -- "5514a9f97c736ef89e2558", -- "494a8aca14d077b143ca10", -- "599c6bd84b32b97e000cad", -- "2983f80020a9f6532ba834", -- "39395b9f947ccce230cc1d", -- "5eb549dbd9b640a1018c4c", -- "3a948a48ee72242647aeee", -- "5c0b858603efe861d8e554", -- "18af2f7c66ebae2215b225", -- "7656e2bcd13769bc7d3690", -- "1d345a329131e03407a9ae", -- "6b91d4c08bfb155d85a09d", -- "c5eb765e74f7ea6040509", -- "347e522bb35549d788adad", -- "3c2561b4603673cde220ff", -- "78c36b7a1a1ac86080796c", -- "34f1c6d5946b4f8e9c34f2", -- "1d82fef6b5daac184a21bb", -- "11e3b65e520ccb94e0f28b", -- "53ee027a60ac6b8703b4c4", -- "252a9565fc2ed88c83afe5", -- "2c748923f66e9b836e2956", -- "501c73bb8897e8a9b644da", -- "527df835ccce3d0d8dc6be", -- "753e3ffd723c55ffaa57eb", -- "27cf1a1e36d6b6fbf673f1", -- "303e55cf5d940fa1eb0863", -- "483592c4cf34d97823b087", -- "404518992cad409d30e138", -- "247aa73439f114a2bae1f5", -- "43f106dd9b706c7cbad455", -- "60de98af5b2e9794ccddda", -- "2bbb60823308802716b002", -- "5a4b0bdbb9a3eba57ecafc", -- "7eacc570a117e3d2c4ad3b", -- "b80a7edd7c5745e63c50d", -- "3d2c4d19f97ec14b7f9a20", -- "8e1dc29eaa3429a93416f", -- "16c859dc1504abc8bebb3e", -- "142700479fca005e365a5", -- "1a5a69890d5f080ad27aee", -- "333e4709f384c49fba280e", -- "773e49f5dd28ab9abcc4f3", -- "7fcabd5ff8d8321877d09d", -- "392447173660d27311fc56", -- "3b607643718a1436cbf93f", -- "3d01c0ebec513aebdf049d", -- "115af287df30e3b9382159", -- "217e1d11ab05e37175e942", -- "43240f690e895ee2ce6199", -- "6473a7fe7461369e02b551", -- "56d1b28a25e58905b948d1", -- "5c08c8490ead830327cfc3", -- "60d1cb028fdf2f7506480f", -- "6efc437814b1b1a8db77d5", -- "386903ad1ff043a2a203ff", -- "113203b24e05e4ff03bfc7", -- "2287f22a43e09d12b5fed1", -- "3fc330d82c00c3c98129ad", -- "5bdacc4f0e9a9f3c5eb7f", -- "43ad0b393a7c2a4d667efc", -- "4d17bed73f2032142b03a3", -- "72492bafc7adaedde393c7", -- "161741a6fabf2be3cb74a", -- "3253a13971cf24cc306f4e", -- "3566ae3cffa53b48308a5c", -- "772853e9593804a23d0c9f", -- "58d985a1111ffbdece42a", -- "6b463071583d5d51119c18", -- "58ab9a24dbad2ee2c0942", -- "7b625b197eb76a08b19ecf", -- "153d46a7ad0d4c7b81a83d", -- "560bc3397e1eecda48e8d6", -- "3e27d166777ab6af4a4b75", -- "10a7cb0c646bfbfaf6b1db", -- "abe7e5169767e92b8517c", -- "46bc67034da17d5b7c72cf", -- "16c1a9b3bcba979d2fb250", -- "20573b178651610a410e89", -- "46c829e7e1980bc26c13f9", -- "3428c448a20f463714e16e", -- "7be85a588e4f01b973f9a4", -- "382238b03129ae3a8cb2e2", -- "8b93e9e7ea54df6ea61e0", -- "dde95ff1403621e1e9c39", -- "b3a488e23273b8e74aa2e", -- "3af2323baa99fc6ef534e0", -- "6003c83a8ae5ae42a0956a", -- "2ac52045b3b592dfbeeaaa", -- "7f29a05b16052f06eff50a", -- "1eae59f579b122f18b84d1", -- "28593d93a1a2159e16cc13", -- "460f5f98b19a4d353358fb", -- "56efa25eac0d5f675af6b6", -- "73e9dbd2873c27040a215d", -- "5ca40898d5d325e557e04e", -- "405224a222d42397ca18d2", -- "a69b0e544c08336c9606b", -- "1dfe68dd4d69d0d5368782", -- "18bd8096de042467441c8c", -- "55f3bd5a345801aa67f91c", -- "5430c091f416778afc3f3e", -- "4e33cc0d26d44c2394c8d2", -- "2ac1793993d045ec4ea0ab", -- "a0ac3885d2cb22aeb977f", -- "1073f10b92dd8a202017b2", -- "23e36a6e12831353ac1afd", -- "71f02d980dd943488cbefc", -- "7e558ced95c8a49312174c", -- "21b1555bb331b89f928e6d", -- "75ea3318a1054593eca8e6", -- "88658ceb2447416239af", -- "7dca64fefd065e0893d874", -- "5f427b13d8351db71dc75e", -- "475c02da59260b083fa105", -- "5ee825c795f457b727b9e8", -- "124aa58a7e2a882689ba12", -- "797bc83e9789b064b51c92", -- "2a8b319bb90a064d3cc523", -- "5570385cc742f16a21edc9", -- "122e1cf4ba920fb923d0e1", -- "7fc9fec9506aa1a0661240", -- "3fc3680285719ed4f7e7fe", -- "7175ce67c0c74c440327c2", -- "503bee64726b7b32815f44", -- "5c4dc3dd9138eb7169302d", -- "3f0eb0b9bdbbe37f40dc5f", -- "5aa25b718982092494e872", -- "20b11d38582bb81886466a", -- "36baace22f2d7a2014dd1e", -- "27216bcb23514df00030b1", -- "3146d29fae3f74014572cf", -- "3988842f76572373c3459b", -- "6aacfa3617f47dce14015a", -- "581f2a492a4fe468c3971b", -- "4cc8bba01b6788222eb375", -- "5c00c9ce80be32396ca075", -- "28670ba592cd5a2625df3d", -- "14e47840962745e9f2bba8", -- "7f26a6c99362d1126b6773", -- "6eb090e9b1df79f4d2226", -- "7f035a794c44a6a57abf00", -- "1740e5e9a57a4e80eed5c8", -- "46b1961304e45b428bd48", -- "49ce8855b52dfbb878b2d3", -- "313ef612f2fd65f39c2e3e", -- "7332b41a9fe9dfbe59f71f", -- "41858e467a21a3938d60aa", -- "6234ffe0f938a25ce0f5a8", -- "1105d3c71c59dedcb33f", -- "7a75b868e9fb50140bd203", -- "68ae7d3832d31bce57eaf3", -- "600de685f1a4c2f4a236d9", -- "3684bf3ee3a2b8635ca0e1", -- "2bb74459adcd7029c9c35f", -- "b7347a4820635a5852b61", -- "249f5358017ada6567b747", -- "17445a9a60b0dfca9df354", -- "695d060b1aceccfdfa96c2", -- "a209dce8856336ebd97f2", -- "72059eace3671c76d67005", -- "6dafdbef06e817ec42991d", -- "47a38df2df7f516ac35f8d", -- "6a3afde1cc784aefb925c8", -- "112bfdedc3401ff20ffcf6", -- "3161bea37fcc040c6f6494", -- "6152b40d63a55e1ef6e750", -- "41127c781a5dd07b6ea357", -- "1df80784a603cde2e8573c", -- "2ad8c773fcdf92009db9b6", -- "5cd8f904c6a0e1c85597c4", -- "21532161ecdbdaac15b68a", -- "5a80f23e82161bfd2caa8a", -- "59377c70bed9cccb346cff", -- "212d386743b2c2069ec4b7", -- "26fb73843bff3e4d17aa10", -- "1f15e66f6c5b160801ec4b", -- "4024c6847ce50a93fefd10", -- "38419b7c213432cd42f4bd", -- "ea9789ae096da5bedc410", -- "23a7a59b35972768b71627", -- "60a177acbb4aeba955e6a6", -- "22d9fd1638450186756413", -- "5a49a0430b2145ead2e9a5", -- "7fb445fb34908201d41b44", -- "7b1e254e6050240b36eede", -- "44867f919f39bbc1ac8a53", -- "57c6f0c9d94e02524b4029", -- "553a48facee35f17214327", -- "5e3402a24a307a945167f7", -- "4ecbf2559411992397d1ba", -- "3adf2b6aaf40f5dcdffdf2", -- "156e3560db5a642c108333", -- "26f3f960b2ba725c83b706", -- "3135a042ca5b8873367081", -- "5778dc2f1465daeafbf88f", -- "142aa17e315b2096d3470c", -- "17b1690a9c9f4fba9154e2", -- "6f3d0d822d1a27088df8e4", -- "749ebfb4005c94ed288c4", -- "7f64ec3ee1d6fd7b5f9352", -- "3ea29dc49c06d64c187862", -- "322d1e939066766f918e43", -- "d1c5eeefb8bb620c573fa", -- "7d83ba89b9f89b55497937", -- "2f635c018151dfffc38ed7", -- "6b77b6d06b93487730de2b", -- "202d04fcffa7e3a0ae0585", -- "7351e32ddd53c7465f65e8", -- "1d5b0385650d2d81754f72", -- "5227913634dbd4b19ffe95", -- "1eacd91eb3938b38f0210f", -- "3ab4982748b8f986192588", -- "4a648c611ef0b3b0e318e0", -- "18eb41f414dd28e8ff3a1b", -- "28e33efab89fb4f64d6498", -- "1b67e56d8c8f6656eac86d", -- "27476789fbe89ef5fe00c0", -- "21e39ab39cd96423900120", -- "4818fb8f958698b6e9c9d9", -- "95d86ded4a7b26a1ad331", -- "1b2e283bc4ff40366c744f", -- "2db6e61499c9393946b57f", -- "3e8986648fb4053520276a", -- "5eec1e56c0a2d0e34dfc8a", -- "389d9fa841750626db108d", -- "4e0326164785519414d07e", -- "530f4c391aa2b0938eb272", -- "50c915d40aeb9e4ec78789", -- "57bf13241507b812b9a904", -- "3245bbf080c6731fee74dc", -- "11081f4b8fb8f0a9abf772", -- "7a75be28b1e93e4e0c9342", -- "174fdf0bcfc8d0f4e77e83", -- "46986d0da7a2c17dd1dc22", -- "68e88d3bc4e8d390ae4b13", -- "4a2580e03d81912089d88d", -- "201e678f30ea96fd17615f", -- "3566f7f67e026f0278dfd5", -- "30485371efc19b50bbafe6", -- "4dedb1ba2a6a4abde67337", -- "33440d7d3472a4b6e2f627", -- "591749051e47ee7b49cf82", -- "3fe61d12a0b09791925ccd", -- "7f5140ee63b60e0a33058a", -- "5eb217461cfa46d5694397", -- "6aaafc0107575bd9b70723", -- "3305f9d7ac9bc35ded571d", -- "5ef7fbdbf498c8684625f6", -- "3b66491ccee4801a4e3673", -- "76fbf6732402bc76e061d1", -- "28a37e042abf70a7cb137d", -- "534c1a3b25194e8cd66e6c", -- "3eedab106a435ef32b9e48", -- "6bd995ef31bcfd22d52d9f", -- "6b5da25417070642e0ba4c", -- "3d40b56764f7765513d13", -- "44bd0de2094b8b3759356", -- "312518f9c1ce1e690c003d", -- "f920b02af1e3bd673512e", -- "4ed1311eae64f9e834ee7b", -- "4d075c933e4b93da3a33d9", -- "133606f2fed41ffd77b999", -- "16b6721ea95f55ef631d25", -- "140aa7412f6488f5404826", -- "3ae99fca89d15abe091160", -- "543222604f067afa3e7558", -- "2948eda7d7c508918c3056", -- "4cb6253df884020966d27b", -- "46bafe88322c67f3b90507", -- "31416a7f09913059dc251d", -- "52d3cdd253b64a03c5885b", -- "1c5d10301fcf4a14c82adb", -- "5cd8f782abb8b60cbf36f8", -- "42b636bc4126dddf74cb00", -- "5afe15c1524eda9627e183", -- "783d012e8b928ea14eaad8", -- "45242101d43b276b34115c", -- "28b06d6b1f993702509e4a", -- "16ad879cfcd3e458301dc9", -- "78873bb7282961108e63a", -- "1c5b7d2b84cbc7b29bf542", -- "48edf77c0fc298b0491c2a", -- "398764fa3e177502af4d3b", -- "1d1aa15ce7c8c15f051ba9", -- "401a3ed45557939fa7eea", -- "13f9a309c929439a91df6c", -- "3aef6b8ad8d4f116a27e4a", -- "64b1dd5abc6713a8f53d0c", -- "73f4373aa0c46a1ae61409", -- "1ebddbaa72ad1a2b1cdc49", -- "2cd33d1f501e268643d591", -- "11b77783f411c457cf909e", -- "d92cf9efd7d12c62f0dfe", -- "2c56fdcda56f78dcda9b60", -- "118d29d91686683483dea8", -- "7e05b7c7d54cfa1fc7b525", -- "42c5d2d1082dd2375a4ef3", -- "26554ee3e9bedb1a3a09fd", -- "ad64cff4b4763a7fda09f", -- "5f9563c7ca70d6e5061bfa", -- "38d987fd4b450ee5a69286", -- "62af499c078af038905758", -- "3eecfda3b4d92af2b7e5ae", -- "5e195ccf98c9a4e1967fe1", -- "61c0e0ff11a378274b395c", -- "486fd3ea0158f33daf767d", -- "4cfaabac7104cbad2ed728", -- "714ed5cb0027168be15142", -- "ac5bf0492a63aa0bf597", -- "53339d5a01f3d2e9bc8755", -- "457d09be8a2a4c351b63ae", -- "1892726d56d4f8f92dde20", -- "236e08f8411de38e44c3cd", -- "5549ebaa872068aae68ac5", -- "11df54a696817409ff1164", -- "7f695021b246db24a5113a", -- "5267f1f68134d546ec646f", -- "4ad5e4985caa0c7ee63b9f", -- "3c5262912ab7e82ffd49c", -- "7f9a1f8e557617163d5e82", -- "31b2ef6b5163160bdce290", -- "127dbd62073fb0c17b4217", -- "5fe5a0fcee7c061cf49e8d", -- "34ce2df12c5e0970f682d1", -- "4f6148f444b84dfe82ecb2", -- "740e3fa0e998e741eb97cb", -- "5623f1c8e0d5c15938b2a1", -- "79ef58660a06bbc22f0cce", -- "35f48b300d21989b05560", -- "4efe7cc856d9eef4fda470", -- "43f99aac41b05d58c624b4", -- "66b03ec137e6361ddf6317", -- "4382f99dff4951a775fb77", -- "974b1ea8fc3d4665ea11a", -- "1998c4f90bb8b5465b7b1e", -- "a49f38b3c0b7ca1fc5c10", -- "57d421e876be8c87768c1a", -- "14c79375686a30f4c21ea1", -- "667b77d58f7f6b14e19bc3", -- "17b5a764867bc2f176278", -- "cf2bf44fe6c433cc00c9", -- "61619bfea73d2a10c7a7e9", -- "3908eb827c8209b96bc643", -- "e859d26ac6c854731c10d", -- "562d8222a0b94f5af3137c", -- "780a2a5411b159d83dcb95", -- "645cf2dd2735f1cbf53f1a", -- "6476d594392ef9fc9a3df1", -- "7df75741d3ccafb28da8e", -- "526d1eb936d1a3dec6eeb3", -- "1a3337bb0bc288bf44447e", -- "13413811d8a8e6bc2e6cf8", -- "54728697bad28cd0bcc9f", -- "2e178e1cc4f997792ce1aa", -- "f339d2f5ca33347ae8d13", -- "24dc2302a4b77b85525bd", -- "4779c6f70cb71f00e32d17", -- "20866732367b425f7e5ad1", -- "26c45bee1cb7e300fef593", -- "4f3fe475424626758ebe24", -- "3979e2b3d54a21e7e8c1cf", -- "50bb1918112bad3e57d523", -- "4e1bc7c2f29a2f520bcf7d", -- "3b4ae8aa403abef29b052b", -- "54765bab6ab2b394d9dee1", -- "5e7e83070de3b07a4bc87", -- "6131db76263e902f303f6e", -- "2fb62f0a2e9435830411", -- "57b341376c8eeb5e957326", -- "7d59312cf551555c728152", -- "3e13e95a38da382cdac574", -- "53e3092b891267552e8471", -- "ea04fd9db78a21c39b6a5", -- "42cda11218a2f5a8d7bd1f", -- "3aaf5736ed929c1ed0ab93", -- "6e93c69a7627e1f9832a61", -- "37526cf6c350fc29ecf559", -- "5640578c9a2f674c097c8a", -- "41ebedf12db1451af99b12", -- "66db9685c97e1039f97191", -- "61e21b9a255226ab8a9c03", -- "4d36c683652009a273c69c", -- "3e00e41664141664f70d8e", -- "734cae170e5d7d8758c509", -- "26c603e605263eb37ee858", -- "1cb50b0700a11348f864c6", -- "6b4ed91c3f4f0b25252206", -- "46436019c4b35e76ea4182", -- "44885049137a26d9ff4438", -- "1cf7470aa8bed908f93c32", -- "56d7ace10d6e046f35bc1e", -- "2bc7683658e815b0850ae", -- "2bd0c39ecff8d002f3a3f7", -- "2848634cb8eba43423c432", -- "177aa9fd51aa698c4f5d25", -- "809a8bacccc204134381c", -- "60483a9742002ed4918cd1", -- "7544304d1b3c2594fef689", -- "49ddb3e956e6fd8d65e1ed", -- "3820d1fc1eab75e925dc43", -- "7093b250c7b04c2c6d567c", -- "16870479234b3337ddc8c9", -- "18f39bb607de6b1ad183e4", -- "a5d62acbaf68c52001a4b", -- "65f33a2872e25c8a682f06", -- "4e66ba0bc1058a3931042b", -- "357eab1d6b7f6618503b3c", -- "5cac3c06df31850ad70694", -- "7e68cfb951ae556b15fa1", -- "7de8764ca6a43c99d6a50f", -- "329c1979af2fa92b25335f", -- "113149ff5647e02c5d8e8c", -- "5fde1fcd656f65c682e01e", -- "3a2bc2968347afc3827c67", -- "b7602abf832a9540b03b8", -- "28434971e0ad86e87340b6", -- "e24946eda2a54a4c98b6e", -- "318d2300370d914ed1483a", -- "776ff8d5492c149f7acf17", -- "50e46147373113c54d73c2", -- "59652c3042e742dab07904", -- "1e74e23fb34c50dc055d0", -- "3c31433d0db703e03c294d", -- "64666abc6a9a2f6a1c7575", -- "191da9b869e973d2fdfea7", -- "6c362e17e2173449bde86a", -- "1a8ed7cad7bcfca4620120", -- "273beeddd87cbae01c207f", -- "568f3917922fe83ad3e225", -- "44e6ec408ba05ad98e759", -- "32f5fb93813b0abef00c9a", -- "490db50fd1ace7e8ec15ae", -- "7630fa097aa2bf97cef6b9", -- "6ef800332004d6cda26cdc", -- "551ec7c1ae7ed078f940c0", -- "455927f484bb8820a2ccf7", -- "7933956672bf2e4535ee34", -- "2a7311c640e7cf0ecc141", -- "7242e44696c19a3a1910b7", -- "3c7a2b6b58424eab86f3b4", -- "359b331d03b9cc2451c1f8", -- "4169ab1c6bf3f0abec6c34", -- "6df855d5b158377d521892", -- "3c4374002a4b05edbee285", -- "209910d1159692421526c", -- "31dfcfe645b46b329ee2a1", -- "1e6874a8b307092ad6e72b", -- "6b7e91fb5948662e3961e3", -- "23966403e567312c7a8379", -- "2f62056d547ebf7995c6e6", -- "5fda42ececb40f359e4f0b", -- "18a6b71998f6f84fd5d814", -- "76f42929010d1ca7619b42", -- "50e22c6cf5d6b70def807b", -- "1cc96ab6764758e9cff09d", -- "59aa03a25735023ef97395", -- "741d91860d83d000328e76", -- "a9753c820825d73c04548", -- "4ed7cbd3e32dee7a40c626", -- "6ce70c288bc2711b1b024f", -- "59efda7d6a6d8e6aaaba46", -- "6ee757629a9b68ac7e690f", -- "328bf9a8c78ea2ca3388be", -- "59bb325b9748e94acb6630", -- "55137101093be9fb51857e", -- "9c6c4ea9b05d327c6b7f3", -- "77815256a969cddb479be9", -- "3b0cb59bddc94e18233703", -- "7a123babe2e7abafbaf8e7", -- "35d6d7bb2855d9adfbf650", -- "6ad95985d0ab8e8d823145", -- "2133efe27b28c873f101f", -- "607776583fcde0ad8e4c87", -- "e2d9cdfcde324e23eda21", -- "747c7a13b706fb28e46c47", -- "35d310b1c9f92e46c5dccd", -- "7248daa035ed0c83c2d007", -- "3c8b578aed4234d875a143", -- "766ac65aedf40f90341249", -- "3087f959a9893769198248", -- "49a34db8369186ccd3e18b", -- "69b04bfb64dc28afc90f3", -- "3732911ea3b78b2cc54de2", -- "7dde8d7ccd2cebd1d4b943", -- "66727c69de089e222307ae", -- "5a67c62d60522486e9cab9", -- "6acdbbcb1d87bb33b845b0", -- "1f1cae187cb4e7e2d75ff5", -- "1cc8bac063e7f4722cc83d", -- "1f75d643fbc4ab52296f51", -- "7b34f38b9d16f0d70ddae4", -- "74a0eb9dfa780e171aa5bc", -- "4366b19aa12542a30c1749", -- "4a1404c02a58e6862d11f5", -- "55e542cd768eaa4ab7eb43", -- "182ed4a29e8be479e40c89", -- "5eb96063b604b2d052b457", -- "d755ece5c8fed1e833d4b", -- "10f7a570b959918609b06f", -- "656a55d45a93fac53881ab", -- "60e3811062f0661e25f626", -- "24a843ed6770d822f92be9", -- "216b9b04319fd8da8a6d3b", -- "3e41b8ea3309221756df7b", -- "5a00aa930e50101d3ad458", -- "260985f3992a168bc7fb3b", -- "5c3df551863d0055925c95", -- "28b06a5b8a2319d5d78e37", -- "3567cd9077f5bb1d3115a3", -- "460858d1e253129bf64e5b", -- "485bb888b6979f8f201fb8", -- "7aeadbfb750a598afce6ac", -- "3cfed079405fd41004c118", -- "3dac1d8f9e9cf46cc42204", -- "2df246fe147cf6a7d9ed5f", -- "1a908fcb6be810a9e1e92a", -- "6c33a3a058504d48c17efb", -- "66e9cba0e526f30b7b9b8f", -- "757f2101d664083b2fe8c9", -- "18c5643eccf2173f575420", -- "7dd9082b6f5562b8d6ba91", -- "389d1e8a26db35e20882fb", -- "65172c59adde7fa1aa62e", -- "1a7c7fe62effcf2d1a2cb5", -- "392d9ae31bf22e0236e198", -- "3d886ee05f1bcf69fa4f70", -- "2c8f1060dc661c38044a5b", -- "16eeff7e87d3caf8e58a92", -- "741dd990ea20591fd9b5ff", -- "39bbee3cab035e7fc68b3", -- "4996f8a3f7c2c5fac02813", -- "36ded179138f0e4cdf1ee7", -- "f9d7db7493258ceea1a37", -- "2a6c238cf5c57a2939882f", -- "35dbe95730bed0669969ad", -- "290fe0ae5a419909be4e2b", -- "63839ba9cca448dd7fecff", -- "30a8e1972ee45f3e0613d5", -- "509ea21b16907067d06b82", -- "7633f58adb014bb5585678", -- "6c8fa526a6bdbce9f7b832", -- "4a78cbf6bef93b38948e09", -- "37c7b0fc4e875134c29246", -- "4c996629390ea0954eeb1f", -- "222dacddb6e77241cadac8", -- "2df2bed0dd9ba405c8c5ce", -- "3a7c703f2642b17eba0c69", -- "22e8d9bc34a96264dd4caa", -- "4bb8f4e111d078e3c54590", -- "69efc15f2bab10979940b4", -- "4e1b51392bd1ad38a51d00", -- "5e82dce0d15b40d73e81bd", -- "6a410e486ad693817f9d31", -- "5dab9e18ce0b8340db40a2", -- "2df0f496cddcc699504250", -- "124c113e25b1a8153a830d", -- "28d70ec040ec983aded5c7", -- "7a93c6e177d746f5eb503", -- "14c9d693e42997dbc96df3", -- "50755ca653aac70b84b12a", -- "5f72010436c71470f190d9", -- "1af9124bffaade4351e990", -- "5fdc8856cd703470a1e5a4", -- "10b57d68a8cfe14ef3ca7c", -- "245003f901ae0a356365b5", -- "63dbff9398c6d2cafd1418", -- "75c2ce5e2535ac7878196c", -- "15c08724b1daf7a590d087", -- "3dc7ec06146d405216b267", -- "1fab75ef67bec61a68a277", -- "711d3de6506cffb89d82c0", -- "15b79d2a607e674b1df02c", -- "928d2a95f60dac2e280f3", -- "2db6d4b5b7a928883df97f", -- "522bb592e89a78b316244d", -- "cfbfcb607ba616c016fef", -- "13d6f0fac0c0b9cd891715", -- "12a8a0e9fe6ba5c3656149", -- "4553e500c491eb2ced6e1a", -- "368d20177281b04fd8018f", -- "2579cde0e8d37e04167a12", -- "2f4c8ebd42ef359c5ac79b", -- "7afeb7314079bb05948a57", -- "4dde9b7ed5a96934e4dd51", -- "3cfc7a65b66e9f8c6f8cbd", -- "7453e07405f19cfba93c17", -- "18488f368798b8734164ca", -- "532d2ff2bd9d0ca8b344ee", -- "18704740809cbd3a91bcc8", -- "1a91a4ef4625f7ae911f1d", -- "26240f3e8816b599bb01c6", -- "60749c3a015660029dacb9", -- "321405882a2a0c05f7907b", -- "6b85f2803d97e818e2e527", -- "40d9ddb7d82d86fe4dc6d7", -- "5bc9b4c686de112404ccc3", -- "49e219e4b19fa82e3cdd8d", -- "6b4aa7c57cecc522b32c99", -- "1152ee1f6c91b44b1faa20", -- "4f1b7b04b31a6d85748c8e", -- "28eaec99940a1b1f563841", -- "341ee0e329f6ab9da76c4a", -- "8a4219421d2f55bef801a", -- "25e4a83dfc2f633765d96b", -- "22a17bb1e02873c944cbe3", -- "4c4fa3875e78671bc1d2bc", -- "79db0961906e2d46b0b349", -- "68d1c5df4d9653be9c8e7b", -- "7e0f7a6620c31d72d9d568", -- "42af59edeafb6c79b9d208", -- "3d17d279ec6a81f53cd4f8", -- "2f1ba6fd01e5cf713f7991", -- "5c246c8d9baad4092bd7a9", -- "1c6a5fca595a1ff62b0a7b", -- "5c6ce5b29bafc437eda5ce", -- "709f8b4e1e81f78ecdd5bb", -- "619fb115b590487fbaece5", -- "5b917d89029b0850efbfd7", -- "2103ca88adecbfdd3370", -- "4e0f2086acba831702db59", -- "cebc8496358956c6ed352", -- "4aa62ab8f33741774c11af", -- "55925c1c09bda33b3d0e7c", -- "47b5376a6bf9ae1b5420d0", -- "5f305f39404231a1ce6591", -- "d0d6f30615b8f231bece9", -- "851fa3652b44e57d9190b", -- "4c099f907df9db8a25350c", -- "48cdee08fb7cd0c828eec2", -- "7399c1866bdfc2ee9d0ba4", -- "7da4d79cdf3d83f0763c79", -- "5de657154513d33b2dbb32", -- "4057d3883ee10c31d0c5f9", -- "139a5be9fe5d74b7b324f6", -- "4678975ad8ef4ef63ed234", -- "3a1984f88834905315728d", -- "5e53c14166e301e45a1c84", -- "1246f9f5df870b21bcb1e6", -- "6095ebe0914ab346aaab52", -- "173ef6d2228315e7fc8577", -- "71a2dd2f4561ce6b25cc84", -- "17f8a55fef5d58503cdf89", -- "2885d88c14361dbedb4fb1", -- "69cb489051468dc8b7a10d", -- "6552488fb7e68b138c5691", -- "3d5e0686efab87e5e7c266", -- "5adfc7a0a78f6657a5960", -- "65773487e5415b58fb205a", -- "1aa4bb2c56ddce8ebceb39", -- "1ae4174a64ea29d65c88b7", -- "2af1b36e871a2152d87ea3", -- "7118c95246463e79fab7c6", -- "7f31009d8b384ea51f9235", -- "5eb2b60c1d97e4dcdb09d3", -- "5ccfa76193ddbc64186a30", -- "1e31c413e16722caeb814", -- "dee72e6d522c55b461f4b", -- "18250945b23b28bdd1208a", -- "72e90ac5d748fbd2d7aadd", -- "10ad00e38092458e73fe4f", -- "1144f2116d6e426f3addec", -- "720179be8f54eb5c778be", -- "1fe4c7d7da3eaeaae25e65", -- "51a001a64a22c7bc0db3ea", -- "7d40cdfed339cab397652f", -- "1960ca77285b35812422e2", -- "421de31b9083741c4d4c48", -- "3cd3f5ea5623ce969c863a", -- "4b6b8f4e6118573075d4ce", -- "43ac29ece073be2a30ce86", -- "217c2392122f9868740137", -- "2b3dba5edc89810815d1ce", -- "7a9c1df7aec04dc00e3584", -- "74aed20fd8f19001dab562", -- "74f8ea2aa01f3e122e9ec6", -- "7f3f1310b0770a6a8ab4e6", -- "7377f9449fdfa779330064", -- "4d3d6fd7781e8ff3322226", -- "3629587577ea6cd990a3d3", -- "29ca62a9234f915c5c9715", -- "5286bfcb1951cdb460fbe5", -- "1b0dfe5bf791bf4d645e64", -- "150cbeb75257f8eed7903", -- "5ebda7b44a30093e22fee3", -- "6af9f591969edf6d33a899", -- "321ccac2ccfd73a0b28c6d", -- "fa6bb9b4b92165346e0ff", -- "603f9b3bc6733094104e23", -- "2e30617b0abeb387001867", -- "e419f0eced24d03400fbc", -- "2057d9029cad07c3d344a3", -- "1d4515e4768ff5c6b4178f", -- "7b5d99de82bacb33af7ee8", -- "43f53558dbb8a25ad757e", -- "4265efdcec74f163498291", -- "477273c36a749543489547", -- "767f863c9bfc5fd6540f44", -- "d8e9fae4ec5d3e7913712", -- "2ea5fa6c2e19e6ee7add96", -- "55fca6cb45a0501d1c50ba", -- "4e94399e1765146189df5b", -- "5accf03c1a20af1120832d", -- "137f8e05276cc8f9180095", -- "499667b1e22348ac584789", -- "7b87e87e1438c6126ab1cc", -- "46ea38e0c4bb849b39baee", -- "d922a909e3b3afea5fe08", -- "4700bc9de4804ec44122f", -- "54018c8917549d050c00a8", -- "5f8307f0589178f70f7238", -- "45b5b538c44c73f3bf515f", -- "7ad19421f012d132850842", -- "7adc118469443d4f7084b2", -- "2ae496e8d9399061460619", -- "49e01d719bf13fd52369ee", -- "e1e55a565534c74a109fc", -- "72bd80f062eb130b42b044", -- "1d616376b444140f9acd68", -- "48082cdc2a40ccd11ae434", -- "32a426cd7460f9e5c5e7", -- "bb247081da09643c00d36", -- "34f2e009d684c876c246fb", -- "3e2cbdf24bd5900348312", -- "507a6d1fd108a63234b38f", -- "3253e31b47819fbcec75b4", -- "3ae16fb3fb77d48c6adcc3", -- "244d1131736a5aea351d17", -- "682b3c7ed60ad7c985a3a", -- "22d6cba0f681e23fc64382", -- "14da7875e13efd461f7c10", -- "1ef2f8aa8266e26254215a", -- "22cd6c35ab2195c56794f9", -- "1d1b1bb20ae40ee8d35505", -- "66ba97928f262067fec230", -- "53e99cd5ced120123b808f", -- "7e698a24ee9aa726fc4b0b", -- "1df3eb49ffac499fc5f3b6", -- "465d9407cc9bc6456e974d", -- "48938572f05f540b474485", -- "ddf6be61ce9c04533277", -- "15131878551adae4b04c53", -- "14c7f40a28e01adc5ae1b4", -- "5cf912fba9a563060d7b3f", -- "1c85ed9416af845bb8e82", -- "1851d531ca021ad6f2b572", -- "4ad2dfbccfebf4c881dcf6", -- "16d83b4ed79a537102c236", -- "19e1cce82f85eff6f6b24", -- "589758587c26455b22331e", -- "59fdecdacfa91d60fd391e", -- "1eac63084c7797618dd9f7", -- "426ece55a7fd1d858414a0", -- "2078bac214b712936de507", -- "3e748cccf5c4b2e587b8b2", -- "232c5e33740871b389c8ba", -- "7b4210ea990dbb2b80bb4", -- "53b453f5f30f900af808e3", -- "49f7df71bb684bf5a54c61", -- "1174d8cdaeecfc5b7908d0", -- "6106124e06a73207e84629", -- "34242d89a6cc1d4e30fa9e", -- "74d978e8d6a9ce6def9aa3", -- "308787b80145ee403c389d", -- "36121cc69943c0f23f8a85", -- "6d5d0573b2f9596b50b73b", -- "5eb9037bc76a6930985737", -- "2c9401cd53725f84e2c421", -- "8c59c1948361c413eed8f", -- "1439532a6d3fdff49361fa", -- "42d71e3ed0639f1b07231a", -- "29785bd232aa4bcde009aa", -- "494c96ddeebc9c314fa5db", -- "2e1d98165a5897b1482cbe", -- "7a4b513ca25dc5d887768d", -- "5197b486ae5dad9284702a", -- "1d4d18f2bee14ee417596c", -- "1b8c24041b5c09c2ff1c0f", -- "19e87845fee8ee9d86794a", -- "dcb3217133998c35879b7", -- "61c60fa253a8977e213d6c", -- "3df3e3ff8b5241f9f120b6", -- "7e880bc1729d1783a14627", -- "7ef05035c2a08e050870e7", -- "3c234bbaf5da9465f9498e", -- "39fc8d30c95dd0494e9be3", -- "75b29426909e9c8294f365", -- "68ab0ae55863c4f8044101", -- "1a01c5dd382ca52c0f8a1a", -- "7eaf3d6220ab7c049341fb", -- "e966e5d5e80ac9dc377a2", -- "38aece2fe0c1923c569603", -- "296401a6101dec9b48a81a", -- "a5385b7f7d2a505f37187", -- "1c0a01fb60b92af636be29", -- "546f06ab10360a76005c9e", -- "463e980411d809a1713383", -- "6247c20f5e97453bb71b09", -- "7ed8ee73ca5507f25bd5aa", -- "5f9fe5fab5062ae9d40550", -- "d7315bcace04536b59c5c", -- "700ac125ecd365c309339c", -- "792ab4b2a318b2229df59", -- "6e8a28f3d3f87aa2548dbc", -- "53034f778656513538ce93", -- "71310c65e10b4b2e1f3924", -- "fca82540d3cb37cfe38de", -- "324b0e59fd313b7b066991", -- "ca5fc0de7c8f0742fa11a", -- "436134e757c46fe077e8fd", -- "3382f247e6cbcf48a8be0c", -- "5714f7d7bb3f12d88adae1", -- "75c3040748861ea4157368", -- "1db2b63fb5b72bd2913b9b", -- "5de44a501f899626f11ecb", -- "4a728ba1f43b41e3c8ba7b", -- "631d5fa433132c920e949d", -- "49dd9e128368a6e8f31565", -- "5f091c9040f8e8b4af8c6a", -- "6dbec10ac45803905232cc", -- "422c99318e0e012bdf3cdb", -- "7499dfe49d22092ecbaacd", -- "4e9b8b836aefbcc76074a3", -- "23591be47ead61c7626094", -- "47cb5e48534f0fa269ac37", -- "45d0bbd0c4c565d517f4d9", -- "58f251e3a335055f8d1702", -- "e16e90086dfb42533696c", -- "32bc07a00fc1c32e790cff", -- "55d4eceed6862d8b7edf73", -- "3bd14b5c954fd788df3e2f", -- "32267a0d010a3ac60d956b", -- "2dd9e647cd7caac396218d", -- "786bd6b0d956c71e3d0c41", -- "5a2e3e7ac883c32720fb5f", -- "41824effd56ee95a25ffcf", -- "df5585842155fda65c5ad", -- "f0daaf67c2422477284d4", -- "285121b3579e1afaecea17", -- "2d0786ef10819221e8e925", -- "638a87cbb628cc2744b5a", -- "2e795b59317cae4c039946", -- "6df756715e22975feac139", -- "4299b7c55998b524a2963e", -- "d73559f9e34900d6994e0", -- "4356f96a535f02cd557790", -- "671133a56bfab71842e1aa", -- "73475afc8917dfb47ca158", -- "8cecd81b395199379b860", -- "6908cd3a0537e6d9de224b", -- "6c4e919619ba3e8fcc083f", -- "765220bfddbe009c12884", -- "696a995b7f1bd2337f9c55", -- "7a35b4347e2b2fcfef4e8a", -- "7715808f58e52b93fbd9f4", -- "35984ab233bfbbdc2149d0", -- "49f6551bb5a630f7f3a91", -- "260202888a368af1bf27f0", -- "28c70cf1a34bf4b12fc1a1", -- "74a3895c1173d1100e060", -- "500de5789e46431a14b08d", -- "e50ab5db695f894b26597", -- "6e0d3cb0378f9f523dd7ca", -- "3b890cc2ea1882c16138ef", -- "623f56668cc8a093bdba7e", -- "2311c97b29ff503887b251", -- "5f019291ccdeabcd687ce5", -- "6467af1a0f07013b2e9849", -- "14a9e816ead24aab2e6645", -- "6bbcfc26c4e8fa7b836095", -- "775ff949792463791cf8ab", -- "62658893411360a21b6bfa", -- "2fc0729bbc7485664f21f9", -- "784f7b46f80b03fd06242c", -- "7215cad82f761314bbdd1e", -- "475c6525a253fe4a455211", -- "3301553132b8af815a8ed7", -- "40066cef89d0c82982356c", -- "36d97c131b997ecd7866ef", -- "583e484be506b8efea96b4", -- "4656a2b830782828314373", -- "374bc74be1e4381a79910f", -- "4f459e6fecc9cadb8e977", -- "2a843c02b5e59799422e65", -- "3910da787142c54f4f9b2f", -- "ffbb4d4d7cd961d36be9b", -- "38dd92596a9fd54920876d", -- "6bd057cf4845772f81f71e", -- "4fe62d365b58ffaa0d2201", -- "1429ba4cc3fbeac84cae7b", -- "403c1a7f2d528ab5d343b9", -- "2175a06a641d5e8ad33646", -- "25d324d633986f4baae0fd", -- "63d746c096cfab5f984c70", -- "5bd335a49bc5a06867e5e1", -- "375f02bea7dda994d93044", -- "4f754c5d3b280b20bc95d0", -- "3a997ef0ad242391b526f9", -- "2c30e99c7b2606982311b7", -- "4d562b2b0bde307c0edc87", -- "b4aa58f86a462da2ed07", -- "ddd508394009eefde3ac7", -- "e73b5b515611f25e496d1", -- "e4ce3641fd893553aeebb", -- "32765eba5563b5336b4375", -- "594ab65a623ca11a1d847f", -- "7a6cf71a247a9aa2ad1f3d", -- "509c14f0517edd55968bc1", -- "3cb90317e0fd78744bd72b", -- "45f39b8c67c74dfb911f44", -- "476085adcac943f7253ad3", -- "658a9098281c199cd165fd", -- "cd47f8baa501aac7b0989", -- "3de183e6b991f7b8085160", -- "a5582fe7b241700d09fbc", -- "68719eec758c692aaaddb3", -- "7d5f8fcc1cf99dc3131c84", -- "5a2d6c9f89fb24cf28d1b3", -- "7e1946c78347049b735318", -- "2db5ff229cb2d0a85b8393", -- "6f9024d8cdd8d69ef10bf7", -- "38102211c805f10960d5ba", -- "55e838d685f75c7c6b5f20", -- "339fe9b069fdcbe6f3e985", -- "1a939b8af79d6b9d1e57e0", -- "2b1a4dba7447b02833bcc5", -- "6a5c41dd17f1f090be79f9", -- "6ad4c1af807487676eed8c", -- "6f33938b3b060336c57082", -- "1e7a055357b6580f4a7b9", -- "1d51d9201dd8c5066bb7d1", -- "daa197fa1e9b3068f7333", -- "364b7fe165d59b5d916e2f", -- "4026f1042b0f5b1e940a78", -- "3501255a6a3473cf6ac042", -- "73a88b6c78ebe25a0f02da", -- "645d789e2ca881eb3474c9", -- "6f59efef27dbd92df6f652", -- "32dc0a137f654afa8bd8fc", -- "4e162f9f85bd081abd7380", -- "48ef84f7c351ecdc951b2d", -- "69150cde40be119caa92bb", -- "3b409dc537f82b36a0b80a", -- "748df460f8594e0bf1ab20", -- "178fa57d907fddb0fe3cca", -- "6747e95b215a546a339b7", -- "55247bc5a72b8d3e89234b", -- "683a5c6214b92efde4aafb", -- "f36396be6cc745bba9473", -- "77a73ba77b4ed622a17e87", -- "2c250894e17e7f4b0dd", -- "24af65fef90e2f99e03cae", -- "3292c0c9fda6887e4ad161", -- "304cc216ed2272d07c7f80", -- "5488a723f6ba5cf9800543", -- "47d8e4eb9811f9d409ea40", -- "7e2be12d72782db9e725dd", -- "247f391e5a3b234cf19ccc", -- "29f1e17550354ceae49f99", -- "4edfb060e1dacbd449d726", -- "4a29c3e62c947a4a1e99b9", -- "4755035ba4d9924118903c", -- "3d946cf498fbed2d965f70", -- "260d3af59b4f3d5c208bbf", -- "34b484cdb4cebe6aff839", -- "7b5ec7e3346c3cb243b356", -- "6b25a8073bc36b2af4c2b1", -- "3665e544d5ec7ed8868a1b", -- "1ccb03c008f2e822848880", -- "18e83fe885c9bab518bb97", -- "42e88e9f66659afa2a393", -- "5533d7d78826353c79c73e", -- "674fde01f6057423c31a9a", -- "3a9c7a7d5782f84fd4620f", -- "19b52abcac8b60d5349efc", -- "23ac86fba80f09945d51d2", -- "61249154ca21ee2b75deb1", -- "473c4bff7362fbbd2049ff", -- "923121ae3af782c934df4", -- "66fecdf77d13ff6c0b25a4", -- "170a54e825e33a2265d3cb", -- "31be6678e513813e0e676c", -- "7972b4774882051f2d85a4", -- "75b09479e265b9f0ac9a5b", -- "708324dd5e787ea3d43a21", -- "4c67268f528ba7e8c34a0", -- "51f9e6d75a3c5264312643", -- "24183bf26908368eb41547", -- "5e7785eebda5c8e2f0247b", -- "5338be8d9f87d3f2e46b2e", -- "14bde3f9984cc98dc83f60", -- "62870c281778214067b40e", -- "62e9a332653e1b103db5cf", -- "69c96f5702ae4eecc6f341", -- "3e6265ca213c1a0be64512", -- "5ea38165e28694c8629ccb", -- "2be59650bf9aa57c249937", -- "40678fa2d309cb9417f68f", -- "3459971422155f9703c78c", -- "5552617d9eaca45155f490", -- "18991d6f38c445ab4b38f1", -- "1aee70e483c99574480349", -- "277575523998439f834d3", -- "692752e677cdaba7d636c2", -- "298af75c2d584b01ccc6a6", -- "4d7d33eaba361883277544", -- "282f326b1fcbfb463ba836", -- "6b0dc0d5521d21af0ccaf4", -- "57f40a819546afc89fc2ce", -- "6a24f8897d3040e8fb1da8", -- "51e8f647af3880d2b77ccd", -- "4b223517b6c7cd85cb43d1", -- "745ca85c76435eb7ba81ad", -- "743eb61998341a5e892884", -- "5afcdfdab7a5b6864efc6d", -- "39824b01dda7b8ada90cc2", -- "2beed154412bd52cf1c83c", -- "6b497ffe240d0867d5d7ef", -- "eb947683c26db8dac2f36", -- "15891c14bba25257cb14ef", -- "4f540ba10fdacad19fee6f", -- "5097857cdd82d2df144dda", -- "6799fa1f9cffb381bd6c8c", -- "5e45b3a532e82a603df12b", -- "53528c9bfa6f5405d66497", -- "2248d63b93978222916f1b", -- "c98c97ab7b4b0cb756894", -- "57d57f4721fb6be3b38e99", -- "7b4ac8e7f9ffbf17f0627f", -- "22af1fffca9aa4b2ba234a", -- "2b913687a118d5d595277b", -- "3cd72e80ffad615f09526a", -- "e050d10f9ab1681fbdc06", -- "36c8b1aaf274cca356ae2f", -- "3d88de9f1c15bfd7b6363b", -- "73e027017f2dbdbc204a16", -- "6ee2946ba009641ad73037", -- "522de20b2431d6ac8f42fb", -- "427af6fbf5578c6104b255", -- "172bc617da9e1aa348e114", -- "1a5e08fda45015af7feba5", -- "208fb7a4ffec7d8d1e5be6", -- "3712172b56577089f4c773", -- "621bfd4a39ee713781e554", -- "2f0c8ecc959b7521936666", -- "682583fe078ff76c962922", -- "509b53b07e607cbcf6e79b", -- "1b71574f7c567d707d0e82", -- "572930c1df7ba238dfc9cd", -- "2029341ddfdbd9f668612", -- "1a54e98271fd5720e1bc63", -- "62f83959d672cbfe7201a", -- "2abf897aba93d347d6e2db", -- "3ecd876c819b78567f7fa4", -- "69714524521e343bc3692d", -- "290cc13b5edc05d863546", -- "26436c96779bbae9c15fae", -- "32e5746a212d6238682c00", -- "5e4b991cdcf27f65105596", -- "4a05e03567ac78048832e8", -- "658769c97f8b8945ac2878", -- "4eea383bfa391bcb14540", -- "4871087f3b2cd3c0f24c3e", -- "5c20428f433fbf0c9ab374", -- "15aba357d612d87099180d", -- "73f933fe401d564be0efd3", -- "6d925493d403647cc0a7ba", -- "6a40f14b7a50eeca571bae", -- "446d6309025414bad0aee1", -- "6e388c53aaae7d287eebd5", -- "3bb5af245e5d40c6fc15e3", -- "66895605da5092de3d2b87", -- "50774e378282fd09459eb4", -- "5abf04c6f95d64b6c414", -- "54dcbbc689dad12df77730", -- "226c7c98f219b40ea94b66", -- "6abf077f6636ceee313734", -- "53cc3acdd810a96c3160cb", -- "59b759ca3a67e4725b5f84", -- "48e1272ba911cad7536a1", -- "1d3c95c9d8462d4c467220", -- "4167a3ca5253556f128ea6", -- "bfe2f259223ccddac13b3", -- "bf09d6ff46adc21d04951", -- "4555d38c19f123cccb6fb4", -- "4a5333a5e1c04b8bdfa257", -- "627a4795d0c0df1d84d13a", -- "122225a7053b175027361a", -- "5027d58d8950e307548d14", -- "76c881f1a372f21e829095", -- "7f8ad9957e40808881a192", -- "621edd8ea6ff7136526540", -- "64adff5211c520e76cfa93", -- "7b274f32f2cbfe03031cb0", -- "3c71a5e6f6b431bc524a53", -- "10cc655b268878a4e8e081", -- "56853e4d2e614e1924d27a", -- "1c72fdd679cfcd10e369be", -- "1a364185d640ba1a6ed583", -- "230c19482c2fdfccb6b94", -- "1a9a55461554e908c4fbf0", -- "48b5f18a43890f525b850c", -- "779b65c66a52eeb45328d2", -- "3a0a69f5624f959d85e411", -- "498cac7e3100df5899cd16", -- "6be91a7f057434bdea3953", -- "1b0ff68c5f14ee84b37e7f", -- "af86674d8a1c364331ef3", -- "4fadec3b4cf5617426ac33", -- "5cc79f5d12d2a991f4ebd0", -- "5ca7f66678a73081bd34e5", -- "5efd2121bfee3a30184816", -- "6b79ef63bb66f1362d8de", -- "3c4dc48e3cdfd4ce2eefe9", -- "1c9f92bdf4717c6880a9ba", -- "168c6919206ac6ace0f625", -- "27e147bc2366e607ad99bd", -- "44678fb0d784f11b21a657", -- "47792007d733892284fb9b", -- "636079478bd1eb493d0866", -- "7450197e181adf8c4f92cf", -- "65a7ac7cbfcc2f6c41c2ac", -- "c92faa8d02b107a1b5d50", -- "1ee8fffd33bf6223d36b95", -- "203c3b480852a2154fd642", -- "7ba683eab937665ca29978", -- "1998245099906d42a62588", -- "75d1f80628c3a1c1082c91", -- "1c6bd00355516b7177a93d", -- "795824804b82c5e751df2b", -- "2746a28b14b19ab8d24145", -- "75b3fbba0880cedfe12ea", -- "dfc33dec9862e861d43cc", -- "5d77b3e7e323ddd35a71a5", -- "7438dcc1d87bfc73ab26", -- "755d342969e9fcde9fd595", -- "7bca9525e525d6ded2c76f", -- "d08254f4d2d5ca1a5b877", -- "4d1a97d405c026a8a5aed6", -- "825e4a5dedb493626e7ba", -- "26c3f6eae80009e6946697", -- "59b1b4d92c6ee6432bf67c", -- "705cc0331aa0195cd9f6ec", -- "6d83e6632fcdd8cf940ffe", -- "69699a76b55d4ca99064a0", -- "76201a82e565cd9ac092ed", -- "49b08f20244bc64879adcb", -- "2b04a0e7492ffe108c1c00", -- "4de1c0244f476f355a3a91", -- "1bacdadb366134c3d1a5c0", -- "755b7f3a3389c861fb2d23", -- "153d48f10507702bdbbfbd", -- "17ef22a6ba1fe32d3ef7c0", -- "6f55491282e49ce5634ba6", -- "66ac85711d7e32d731c773", -- "7a45d57fdc1a44af5791fe", -- "1b931cd6241fc4f484ed23", -- "30ffdb4a4aa7f26e29fcc9", -- "54b4dc744541c38f937102", -- "4413cfa8b5666fc0af877a", -- "5b18e3d2fe16a9d973b934", -- "173b57e939be4a4efef880", -- "102e8f3d54ced5e10227ed", -- "79b27c762372e476f703f7", -- "37f81f265c72ca7279eb3c", -- "6b11c6506832a5a8571e85", -- "5b68ba6c572a6576af79a8", -- "26580ddf1efe9fe3eae4e0", -- "3c015f30d95c1da9c47adc", -- "54c37f5e810a7c49e7a02d", -- "3b8be315926a14f8200fe4", -- "5334ba131913654474693a", -- "245f14c58fc2f1bd38bf6d", -- "3ff0891da2c6d0cb8ab6f0", -- "3e61864fd19f85bd211f70", -- "493f40656c80193590d2f4", -- "5dbb4f6414155050573b80", -- "6afe8bc3bb8509aff3c666", -- "586e1bd3806f5472b98045", -- "6afc9a3033b5fed5a0c3ee", -- "7969c90c819c5b0080834", -- "5ee2324ad6594548cd275b", -- "5c6cf60aae0cfc30048ec1", -- "40e1957b3947c90dc23e89", -- "5846b0049ea6f32f4b2762", -- "1e5217185f433bf1233d59", -- "af0b8a8f75ec961c833db", -- "4f4128c0856b216db55c75", -- "41d953d4dc4746ec83a1f0", -- "3d55ef23d8c9f8419ff28f", -- "1a5f34cedfae0cde5ea0a4", -- "6517d2ae1b7ba4107ba2ed", -- "4839ff83b5f2ddc41b61ee", -- "30ebf17f92538a33a005c5", -- "7530bbdc505d301ed9040", -- "46ea2e85d6ca1966d1ada4", -- "78022742d8c1b58e95d935", -- "6a25d7d313e7a656aee548", -- "a2c3a3cc1a5dfdc5a02b7", -- "2e76f32ec68bf11c44acc8", -- "54aeb8675aac1a423a7140", -- "dd0623ecc7bb862ebbbac", -- "61d42c0be51a3d664c8df2", -- "254a37a2b407cabbf8069f", -- "687346ea28caf1c87376ab", -- "67b1ce8dfe00f53da9491b", -- "488aa158d747df0f5cd422", -- "21eb89d73161656b740b6c", -- "686f17e02f2d49c0e2e48", -- "dad2db631732b0506f6b1", -- "72e9a5baa06d4af7c9f9da", -- "1cab579a1f775fb778d900", -- "3c3d137503578a98196d6d", -- "2a8bb0c8c3747adf31dc91", -- "1cf9608a937eea1a0bb3af", -- "40a3f5ad2d4a9b33e2f67f", -- "147d7e964c45ec443a24fc", -- "7b9587337c3feffe6974d6", -- "5839527a17db25de563064", -- "1160b80ff627f607bda927", -- "5aaca79690a162240db985", -- "c75433d8b0423b552102a", -- "f46157d09593fd6ceaef5", -- "20db18e6c822f683f97989", -- "3e1e43759c2fbd4596b36a", -- "125d9103db1d2a83e13f71", -- "28a2b96944f1b1210e6bbb", -- "33fd72210da605d38ab799", -- "4cada2a5056e025832015c", -- "365c9be3e9c7dcc814388a", -- "9f4b0dce97935ef1d9158", -- "2b8d9b2da99a690e7c44a7", -- "fc59307a819ae8b7a3f67", -- "567dff5f6f64aa1697fa0f", -- "23343ed75a8de5a22fac16", -- "4c2a57eb3ff167fa077ee2", -- "7a2990f262218cc62c32dd", -- "210cf16be9c62f7408e63d", -- "49c59a03a60b57e7bac289", -- "499ab94c7bb40ba492d85c", -- "67437e976a93329c5b9760", -- "77c405c1030a468f5abe34", -- "34363c8e2f82b5fdad8c66", -- "39c91d6ca89a6fa52b3be6", -- "7b2f70ff56626a3003c33d", -- "416b4cd1af257e44ad03fe", -- "375ec3fc3fce6eb8e8ee9d", -- "4fe741cddc07d380fb6143", -- "67adab05fa921650ed942f", -- "601f96473a856041a89ff8", -- "13fc0f6b201b7368c44178", -- "6f79151ea6cbf1bbe85f5d", -- "5dd15f8501fbd308a231a2", -- "8ab595a01941ab4070b39", -- "6ad236039c2c3e149bcca2", -- "40c514f5e20e67263ea899", -- "10b3ac9e35f753e3c9deb", -- "2d816960b0911019df6133", -- "14efaca65e59726b81dbf0", -- "7d98b2bd2e9168b6d2e72f", -- "49639d01a55025d5b2f6ef", -- "2e1479f3781e1a48fc49de", -- "7d60cbfdcc63ced7661d40", -- "3ec0da959b014a91e3d171", -- "6e1573decbd31bd14c0615", -- "2ae83fe35c42b256590f54", -- "22d68d4ed1af18d8658de4", -- "3153805f294e973c493b1e", -- "23270a061497f9098a49ee", -- "3ed51ed7c85d68db84d78a", -- "788f47c4aa1ecb9b01c1a7", -- "9dfe0a1feefabb0c62643", -- "7376e75fa605889898fa7a", -- "578a6c67a3dea7609537e0", -- "146dc1fd204e259d148dfd", -- "59ff3fb267f4dcf86fd4df", -- "5a081e53f2beac49d1a3e5", -- "37bd7e26cf4711cd149911", -- "47d814d93ff8dca3c1398b", -- "132d2eb133a0383d464ad2", -- "30f7be09c5f39b5532dcd3", -- "83b4a6c139b7fda28fc0b", -- "77e2377901111b6ba92316", -- "7add5048bc0984c36294e1", -- "2afa4dd2f2245b7525fdf6", -- "50c4c9d0b48bd147d875cd", -- "6387ce1a213d98335598c0", -- "52253824741dd177a674a9", -- "3195d14bda042e7057d34f", -- "6b849a1f17d635cf0a773f", -- "7c9cfb41c0f888d000fc52", -- "7dea2305f898b6d88f6821", -- "43d0ab106641bd01d72cd4", -- "1d5fe04c71a377f6784338", -- "207b51e97aba651825b40f", -- "41327dfa41486f6b995572", -- "245cbb0117ba8963db7929", -- "4956d4cfa3dee8e23259eb", -- "49af3dd263ef8ddc7b0303", -- "76dda8edbfa5a4265a1a74", -- "26b516b52794658e68ab5a", -- "260f0ab9a00e1e941e404f", -- "3395f092181af53bb73f3e", -- "17a50483229662a578fdf3", -- "30e3bf91dbc04d50a032bf", -- "525362bcc006730db95180", -- "6e988e80d2c29dc7542de4", -- "47efed21b3657d0618e28f", -- "fb85baef473def8948133", -- "67afcc19d0bb557a608666", -- "3e1ecaa8d0631877bfedb9", -- "38a68ae5efe6ac22d3f278", -- "4b2a621bcd3f244dbd1aa6", -- "2432bbe72c83689ef74c85", -- "1aba34eed15b418d4b7f0a", -- "2d2efb8be305a05b685aa3", -- "cdd3df5aba4c7ba52b4cd", -- "7c38756fdad7c18ef7576", -- "437e569a7451bd9bbbce87", -- "614a9023303ed4dd2cdfb9", -- "43c088f2eb74b96d25a4a8", -- "308a1daa2779a84d4db8ac", -- "59f29456bbb20b47aa046f", -- "4b0f09e29272f9d49c6266", -- "b03e402e64c3436818402", -- "40f2e74e1048db76b72516", -- "1a484afbb93898190d8d03", -- "6edb305f1f8f30902439c9", -- "7fd2ed81931942f0ef8d50", -- "402466331777b126e4d8e2", -- "52d5ea798306c9e21853b2", -- "765c653014c5e4b3dc3865", -- "785211217f5fa1bf82b193", -- "3bcee7bc9a5ca7219edfaa", -- "61b023abdf63ddd6300036", -- "2f305b730466b54d50855e", -- "60b46e71f1f2b8376d5d29", -- "745cc1be634380e90bc82", -- "208b7d3e85a97a99407a38", -- "1000ca68b2a0f4790d5b97", -- "2ef94456619d9728490c1d", -- "18347f5ec924cf4631f292", -- "26b5c49d8c4e12d4b3d157", -- "15e2aab3b7b69272b3c155", -- "76272e758d9f83ceea908b", -- "fb87766da12e75782ca77", -- "57caf75d12ec817c6cddfa", -- "1a04ba76b7855a5e9c289a", -- "7e5eb2a4ef3434465acdeb", -- "35b964532350abcbf76d9f", -- "3f14484539a427ea73a1b8", -- "4d10e4408b3b6761aa225", -- "235ae37d20b21074f27732", -- "44dd12bd0d7f960d6bd7f6", -- "196185d708583cfba757f7", -- "5f8e36ec1202b0292d5945", -- "47d7208165498ac04fc240", -- "332ea59945a5d0e73f7dc5", -- "653694fe66c257988cd02a", -- "3069cb41e51edac9ec2b3f", -- "17e032019f0dc1c4277c0b", -- "52a44d4aac2b12a44786a4", -- "33bbdb9fd9d9e6cda126be", -- "520cfdeb5b65ce3df47f12", -- "3746df2dcaeb2f941850af", -- "34b380f57ddac800a53234", -- "7116294960ec1370cfa192", -- "6c02da94ff6269ebf8b68", -- "528f06b90d6ea98654eb1b", -- "643b1783eeff5d2d9d100e", -- "14e34536d861554652fc3d", -- "28da7bd48db9e867715c64", -- "7b233911df67c0ffe75298", -- "282425a374dcf57904fcaa", -- "7f873bc8523c4931739324", -- "5f1584cca489de9bdcd65b", -- "6862becb8f668738ac092f", -- "495ccc90a936edcdb3b175", -- "71dbc0d71fbcfcf1245bc2", -- "5298718820a8e285437a64", -- "2a9957bb174e3a8d1169ef", -- "58dbbd6f088b5ff881356c", -- "67ed429f48df076df817f4", -- "ba3b72d702ce311cc02a", -- "6415a8a79aa0ebffb6a24d", -- "5b6485b2f7f41f0abf3544", -- "edea2902a199d26d75bdd", -- "97bac956d2b65a51260e7", -- "b2c65762784255bbebc75", -- "41b1881d9704918a051695", -- "3939cec4c6eb132c9146a8", -- "4e4622894612a0772ab9f8", -- "398cbdee468f0759c375a1", -- "592a4efec7cf89e527fdb", -- "79ea859ae0d9bf58c8e071", -- "4786c255855f792a20f869", -- "272821f07dab57e4aaf0a7", -- "25e016000255df0b5c8153", -- "17040e8c8be515e4ea36e", -- "341181b7d4d6f4e2cf9643", -- "73f8a019ddb59d3f06f049", -- "cbf28251298433a3abc70", -- "51edf68dda1a87c4b3af7e", -- "2e78ee01fc4dbe304eaea1", -- "36a98de095d312e040c903", -- "1c94ea576c3cfe00e40a0c", -- "2969569df7efe8c61bb461", -- "2b036df33feda1ac5edb68", -- "3d1dbd13d46aa7f5e4c42", -- "32f17d420cb00b34cd9fc3", -- "79a8e47a4d897cf6b712f", -- "6be705331dd40db5a995b0", -- "797e5770501b190fa5f6f1", -- "21d9c50ac15f9a1fc38df4", -- "639eb30656278296f2b3e0", -- "4b90d5d4f791e4cafea283", -- "7b4912ce2f8ea6ad90baf0", -- "185c0df44a167fc9bfe948", -- "4c622bd5bd26bcbd487c68", -- "7c4aa256f5265e9d49e8ab", -- "63f8378a4c563212109ee4", -- "4ca98168d36f8ab3815a02", -- "411a5d336f1cca7988f319", -- "34c572dd024d37c54c5648", -- "249469414e604f245a56ca", -- "2e9650e328b679ea03af31", -- "db07432bf40360e3df399", -- "2e9fc43379988881a1b064", -- "752129c2d07a536bf3bb8", -- "c79d219ef793e02a9f989", -- "210441f8cc9b531f88fd3a", -- "6bb593df2f572a23254ed6", -- "55152f253ffb05575c981d", -- "40734a14dd653457e54b74", -- "7fcb3af03a778d48d5ac9b", -- "43e02a2659ddc4d3204fd7", -- "2ab0a302ecc453de7fdbe4", -- "2a68ad26b94fd25b4509aa", -- "46afa6e418c9bd4065cd9d", -- "517123f4920304dc75317a", -- "33c3a8fe7d6e90cd610695", -- "1a30afeb54dea502f0310a", -- "2b5280596202f4b3ee0814", -- "70b50a59ebc270bb237505", -- "65f71d8c8e62cbeef07daf", -- "197461e90c6b70a7dda46d", -- "4053f687fd270a04d092a9", -- "43d235cd54423fd6135def", -- "ac0f86afb7bbca8d57c4f", -- "1dd4abfd6c4ed8a3ad6bbb", -- "25d3735a734b777dd960b8", -- "56a6cdbd81ef505320e706", -- "3c1c9492a56c8c78536095", -- "31ee9d29cb2f2a7eeddbc0", -- "666ea50157a2d8307a0ef8", -- "1472017c713a1063411e0", -- "53e73a626a5de69e43d0e0", -- "dcc0bec90c531be4924ef", -- "6bd3a60ce037d04a7d822c", -- "3ad7e93e4ab55d402a33ea", -- "10db0037fd5f7d8c49aee6", -- "4d29703647563e84d6ac7f", -- "2555442bf058722bf0120c", -- "2e274c1905f505ef9d43c1", -- "46b0509f9638e9030f5895", -- "4082d11934cd3944191e6d", -- "3cab0ae1036c6d43311ae4", -- "218c9ea39a51618b1ce10e", -- "9e1bd1e36f73d0f69f697", -- "5a20607ce9679fb1f266e5", -- "4ae24f235a28b7f71492ce", -- "7510db776aba775075e549", -- "5695db84b4c92a3d6677b2", -- "74e01ea265377cb713e57a", -- "768cbd11024387469f6ee1", -- "61b85bccf0f4316c2cec04", -- "aeeaf98aedc83e6ae6cc5", -- "4e175c68ed04c585f606f8", -- "1ee9410958604d03f20f1f", -- "127b65c61b8c8f1b9456ee", -- "3d57e0a1ef4abcae8719be", -- "688ea19369341f6943063f", -- "1f91eb155829f1481d6da7", -- "4f34769ad379d64a27233e", -- "59daf69acb0d30ef2fc5db", -- "1efc90353d647b1a3dfd54", -- "39965be2b1bbb3ed832fdd", -- "7fd47e391981aa515116c7", -- "5ca9b2680bb84ff6e98b33", -- "36b7f85db80800549459bd", -- "16d114b00964bdc8e2e82a", -- "7c1256dceb40e2f63ca4f9", -- "5b4dd88e0cfc108bdc7320", -- "239e94f2e5843a6e20f1bb", -- "3552a76787de4570d42693", -- "6f2f55effdb76df46b548a", -- "6152765b747658a14d5829", -- "1778273a04ac508e342b", -- "75471e22b2d84fd2fe01b9", -- "5d6bf6a59488555bf1342a", -- "160134aa459258ff8f6285", -- "17e8af02e79e7f8d2cdf99", -- "4f5e7f770a4d50c69c4028", -- "51fc2c3f86b8fc46a7a221", -- "70d95d23dca53184d30b4b", -- "4a9b685698a7674338b188", -- "4d7940ea6bfaa7b282a985", -- "39baaf1f520d96bfc8c1df", -- "409fc384bef4b3d255371f", -- "3bac7e0675e0a9967ff7da", -- "5c1544633a0bf7939343d0", -- "39d71478d3005e797c6913", -- "153884834dca9aae7d5d2d", -- "630270f2ed4331deaf63f0", -- "46323a1998a54f7e0819f6", -- "61c87048ea8325590bc5b1", -- "1960b3a13c6cb6acb7f489", -- "3956e2767e97b7703253b0", -- "1b5226354071022a104a86", -- "3a7ecceb35e2e9a438dbd5", -- "10c81c57aed768b3285598", -- "bd499ce82d93c07477fc", -- "67e11e83cb547515b53701", -- "171757e72adb6abd8f440b", -- "590056c647987959065bd", -- "4e27f64f8732105513ad9b", -- "de9896eb70f1668b87fc", -- "457dc9644e5b25ae6c4291", -- "5a6df4a369ed81627d4fa3", -- "568fd03e0a80223cd1669a", -- "1e92415029559dc3ed8283", -- "1cb2dabf0298f57d15e65c", -- "426541c137d269fd2e2296", -- "19a439abdf3f4f5eb63683", -- "482af287c71050fd03632a", -- "47a080b7584194b936f712", -- "20d4366552d0d83219fa0d", -- "4494bc9e65c8cf2a6ea51d", -- "2148939cfe2757b6666fc2", -- "476ef278c257202dd01711", -- "3eaa7351a72b065707e47a", -- "2703e4a7969073dd381cbd", -- "1badf1b7dc0b73e0bf8b67", -- "47d847bd96fbfc9c221fd4", -- "13637e15b786797995ba49", -- "5e842bbb537167f75451a7", -- "3b228f46cdc0e8a979b45e", -- "2fdd94b55dd5fb9a3915f5", -- "1cca04897dbffe7f26f2ec", -- "67a8cdbece1aca4e55ba72", -- "47ba42dd06a62256ee8c8b", -- "3288681f4d08858009187c", -- "69412d8563ffa7e83b0ef0", -- "240e2e38e41f3b6530a267", -- "12e92ef014e8d7fbb8d23e", -- "45440750f90776251263b4", -- "3a8965cf80aa6c4410dfab", -- "559bf101b9cff724b929cd", -- "280f08134d28252bd0b713" --}; -+static const char* Roots[] = { "1", -+ "5569560418e73ff9db709", -+ "5bf795c6d548a19b6ac340", -+ "760df490123f6613b0a970", -+ "7cec29d14a0eefb222bde7", -+ "3c70a3f0e9c5b206031a33", -+ "1cec8c96472b84936bbc22", -+ "3315173915ca23d8c1b814", -+ "39a0c4e1da321f1bc126f4", -+ "760f3656c1130b21d369d9", -+ "452231c3bcde7b7b5b0af8", -+ "6fe27c77d57e2feb8cbcbf", -+ "3a7a488015e75feec809f8", -+ "c16d15fea9d61c8df5121", -+ "5a8a9b5c659b71e837ea18", -+ "506d84c9f4d4bc400fdd25", -+ "4d7566cd294f75be6620f3", -+ "5f80095f2580ec4cf13b51", -+ "34eea7a66e8ff3dcc8988e", -+ "899b1ac6f72ffff8aedfc", -+ "3cb5a124ce563c3967dbc3", -+ "16d5205447831696c5d6a0", -+ "414e761d40341e7f97c304", -+ "498104aa12355244a9b0d6", -+ "3a8c5a9525f5d62cea294d", -+ "1c90fea5f39d8ac4dfc2a3", -+ "6a716dae106b9aeff2133e", -+ "735cfad9acf49090fb7037", -+ "5f4e7c70ff55ff2f888f05", -+ "2f39a2788d5c2a24e16acc", -+ "38d9d05f9463a537f470b2", -+ "72b5d8f8e65cb7509a93d8", -+ "75066462fdbbc7301e209b", -+ "55afbc51e7c2cc748942ac", -+ "47a1f466100bf70dd5689", -+ "57d88b5e0b434eb1a0dc08", -+ "27ec8c6636679988dd1267", -+ "4818e9ef0ea7625cfc3d0", -+ "68fa3ecc3845db5d523ad9", -+ "4c95bed884bd87ec1d5e70", -+ "7136b3dd116ed121aab68", -+ "60617400353c1eb8e8832b", -+ "19772e34181f57b670bf9", -+ "2f58f2df794a35875efc99", -+ "690aa96130f8c533d77ce4", -+ "df261ad3b5157a525bb81", -+ "6a437e22c95fc6c6a4449d", -+ "1cc2526113f2bae9b540c1", -+ "7fc2bcc524b4326eb8303d", -+ "751e9eb348bc8239d6e118", -+ "2fb170a11f1aecdf586d25", -+ "32aafc640e8c99bda8faa7", -+ "552aca5af025ea1e84aadb", -+ "30a3461d63ca9807464dd6", -+ "3f68fa1a9ab7772758d0ba", -+ "6ba1300374acd487b23577", -+ "35865b2ca16d3453781f41", -+ "3d1155c4a53835d991a0f", -+ "74bb588b5553c2b2d4ac78", -+ "3778fd3a46ffde4755b6ce", -+ "1d2b9ca2f44294070d4e86", -+ "38596ed050f14596adc07f", -+ "2015aa6fc7e48fa3bc5ab5", -+ "2ad2546b270547fc24541b", -+ "1dd1b432dc809fe4c879b3", -+ "149e6a0b6c6543ae895e07", -+ "7851b3168b92e5daed021f", -+ "2bee268df09cc40864a917", -+ "76c2f0ba37187112ee4d4d", -+ "53016aa1427381b9f28ea5", -+ "397f144a181805e1a097c9", -+ "634478b621f7f0a455c48c", -+ "7cc0116bd0bc164835ee72", -+ "310e395e429c4494a5f850", -+ "63e0dbdfb13b4fbb46f00c", -+ "4a9e2e5d8ad0e2e82aa7de", -+ "7d0578a8908ba294259bd", -+ "17276a59aa9630c1141c17", -+ "393fe0be8f011593a7e1ef", -+ "475e84f70334cc0bc8292", -+ "1ccd174e9aa4e58e7414bc", -+ "19b666810d736e639b51f2", -+ "2a48d89ce122dfa7deba2f", -+ "6520599b30ba3568ad0f09", -+ "4b35e35e82bffb49d0d830", -+ "3943e926fbe3d426004ea9", -+ "4e501beb4617be0f02deb4", -+ "343dad4f059acb87d3b0e2", -+ "7bb4f9d707b4ee3a20e779", -+ "7de4927696bdd6d3b718", -+ "6da3828f2d4926651f7a27", -+ "3601174a7dc823bf4dc3a6", -+ "223160cdd1bfa322ca3e6c", -+ "31a504d1dcc251075e4436", -+ "1b1ca5d6c688c4cf99448d", -+ "4309c1c59a581af63d922d", -+ "6077a88144957827c07205", -+ "22e321253c3e0fb875c4df", -+ "6b4728ee168cd23e2fe47c", -+ "1c35e13f8ffb7c470fa61c", -+ "4bacbc68650c41520d312c", -+ "455c9131bfa1c33274be37", -+ "23c82ae839bf5380a55acf", -+ "171e59c89024b148534f1b", -+ "165ff53589519199fc1846", -+ "69bb33c18017fddf18d091", -+ "2797689917c95a9d4073ae", -+ "527c4b155e3708972293d1", -+ "6e007172a16a9c673e635d", -+ "1921f3262afb2f3766f357", -+ "70a2d453b688803716fdbf", -+ "4fbc987e428ed0ce9cb76c", -+ "58320debe89492ceee77e", -+ "1b0c27c7452322264822f3", -+ "66ffe80af410522139e92f", -+ "5e56a7d976f1a3334f57c3", -+ "536a736ad3a37793dd9f54", -+ "407333b3b6a3bed3ef8920", -+ "76fed7d89907843db9af52", -+ "18019c176b4c9453028db8", -+ "4a54d9b3589d5340a01e23", -+ "1a4e5bc143bf00e8928403", -+ "61f4a55b140e767495cd59", -+ "25cab751e23d8e69bb5048", -+ "591bac661062f64b8e3f2c", -+ "7006ef130d31e12bc44c5a", -+ "6a23876a8c802d81d83d29", -+ "7cf9338ca9bcab73862b81", -+ "e941ecc714605cea72177", -+ "4839c6454f97ececa9969f", -+ "672d7083ec424e5d883cec", -+ "3722a55f27f2c02b34eddc", -+ "4f72850630f6f8c1a68862", -+ "1a63315aa52cb254b65ce0", -+ "5a0c2602dcbbbf468b67e0", -+ "23f219093e9b0bb3b5217d", -+ "4f6d8c8b0b9b376d42c4b1", -+ "7abf68b2e4cc9e3a3b2c5f", -+ "75f4eb6de0d35eeaa16cf8", -+ "6a81a8d913b71671629ad5", -+ "3afeb7cc8f8e5bb8770da", -+ "2b0fed7a534d25697e5c7b", -+ "2964973c288dced7dae8fc", -+ "a6c54d0ec55adb4911efd", -+ "7e958697030784ae5ddf86", -+ "7fd4ee663460087b793a80", -+ "5cafa83a10f929b5076c60", -+ "452d3dfff11e24bf680356", -+ "39242760b51f2f93fd4721", -+ "18ec20d19a478746123b", -+ "30f4f5617cc73435ce74c2", -+ "1851e925707895d37a37f2", -+ "6400e87749e3bcbd750d89", -+ "6c8879d694e1a0b99f8e42", -+ "3ecf9d05cd62341c4f7784", -+ "7895b432001edf846b7b3e", -+ "7c6b359299af5c59043711", -+ "13f13f9f2c877cb73ba5c", -+ "2193bc73ac4b40415c95b5", -+ "6351b2a5f477112f552683", -+ "48eaf0293f956717b8f048", -+ "21a363ab0e08a4336f2e44", -+ "d8c34dffd92c1a20d6a9a", -+ "7dc98aa964908b313939a9", -+ "327b2b8d0b75e0d83a5b04", -+ "2d1b2f087facf1fbfc7e69", -+ "6e97dd298eaee757a3cec1", -+ "504d29ae2e5a021d2bb278", -+ "5344962f90f45cfaeb1bce", -+ "767dc9d34c09b03db4a0e9", -+ "731a7b89f357bfb855a5b2", -+ "42cd59499a0ef57d6b0009", -+ "5d711409f3faa9ea87abfc", -+ "352389083277fbbbe66ac3", -+ "30a77107da1d91a699e9f5", -+ "39bf9c3f1f0a1a15264530", -+ "5ce5e0595ad07c8855357b", -+ "4499c1c16fec3546d5903c", -+ "5b8e9d8b290e89e5d9afc3", -+ "214f18ae0c9aa7a1b8c02e", -+ "639c2fcec8b9dfcc987387", -+ "1536906705870049755028", -+ "e0800809dbab6d41345b4", -+ "39489c7fdb445490d498cd", -+ "52c4d1c2ad153a3f70bc0a", -+ "540f5a33d5aeafadcad19d", -+ "6081e77fedf3898fd66607", -+ "584b7d6f0b43ddd0b397e4", -+ "7d8b341c82b019a8d56c92", -+ "2478db790ed59756cef964", -+ "93cbb2483673e4e0dda30", -+ "18ba9d869c489f11ce52e7", -+ "52cfcbd15dfc6c476cfc76", -+ "7ae1d007cf030664c6b815", -+ "9bea90a26f9e93743a998", -+ "7e62c15038abb8244531b4", -+ "3cb748f77d638122329dca", -+ "1fa330f6dd5f3ca09176ce", -+ "779559a53e6b62275896e9", -+ "51a9b0945a0908b1d40d24", -+ "2b13e041339df4d5a521ce", -+ "7256923d608836710a659c", -+ "48a999a2dc1a23a934a6fc", -+ "ef75fc5d77fc146e975f7", -+ "a058b3353ac6290d9f864", -+ "290ac68bec8aa8955b7e97", -+ "754ffe6bc2e7525e892fe", -+ "5d7c2a1d1267b7a252da1", -+ "35714b90920ce6fe1f850", -+ "456138a50c3717947be48e", -+ "1e2093f76475f58a2dfd79", -+ "4d8859f357a36792b7211f", -+ "3505fcb3eb2690f88b3be3", -+ "2735b2e6f5f08a9e9418bb", -+ "4c1f6b587fd26654ea69e1", -+ "351c5a0b997e45ec21b614", -+ "1c960c994194a1366a2222", -+ "352a4a136ebd7ef294f370", -+ "2df28a1b78b46f16aaf53b", -+ "29bbe5fdf14e69065cb80c", -+ "30eff32d49c10f325b8e9c", -+ "628d18e095a8dbcb9f43bf", -+ "1efd2b46d4a8724e929fd9", -+ "13221a23af3045ec5cea35", -+ "15d4218f4bbf0c95cd9649", -+ "3f5027ce278d444a4dd243", -+ "2d5e8f78718c2d4660cc69", -+ "49cb6ac7a2bfdc54300006", -+ "a134915353ce113eb72dd", -+ "479e7025ae3fdc2bbcbe22", -+ "64ed03e382c11a32e34cf4", -+ "3d73fd3c3744e9ec5d2d04", -+ "116da33e19c8b80384fe28", -+ "68ee183b2208228da8bab7", -+ "1abc0d15793c655cee4a9c", -+ "307727bd97c5db086074b3", -+ "1d6812727d8421d0e03a6f", -+ "5b39ddb704fa58142076d", -+ "2f78c0f7e7a90558573941", -+ "35a3ab4773c5054a30c44d", -+ "76c132264ad2a774a55164", -+ "620084c5da2910137e2b10", -+ "31541f24753a28cc5b51d8", -+ "52f5adde99e4501e4d1c61", -+ "779eb73caa637aa28db87c", -+ "3a89578d6ca992f91249be", -+ "536be2b3e3829710aec51b", -+ "53c95b2787b88db0682132", -+ "4a0fb16cc4d1bdfbb239c", -+ "8b462e0f7448b549fd688", -+ "783e0229f219bc18b705e4", -+ "17dd6e40297f1d32786291", -+ "4f2cc1f6f7aba8c20a670c", -+ "479fc9912c9c81152eb474", -+ "117480f169f81bb3e8609c", -+ "df7ae04689867c9ad97d8", -+ "70a1107bc42bfb598164ea", -+ "557361125249092a7bf932", -+ "5cd319aa7906a96d2f6c7e", -+ "72a7ca4a8dc56f9c652281", -+ "dce90e419e8d3f96eb5b4", -+ "15bb5d9b44eebb27a1e60e", -+ "2baeaedf76503008b9e428", -+ "7aa81a94a5a230cf59a0b9", -+ "55d7bf2f5724b5dd0a04ae", -+ "e1ef803b3674bf39884ae", -+ "1738ee1c8e104064e07249", -+ "7ce4bd3337a7333159cb2c", -+ "38110b962a169200cc9f0a", -+ "1ddeaa1e583e9146210f69", -+ "cfc86f804a481df48868e", -+ "55a41153a33cb4649703a5", -+ "5eb4d93a33b2d2e2c2adad", -+ "4cd904fd9401eac5ad7f1c", -+ "502c6a2df8916b18106088", -+ "6259df76b87ab2eff6659f", -+ "2f85e68dfb9aea66d7f07c", -+ "1f1eea8231315133cde938", -+ "6863984d7793407587e8e2", -+ "7b5272bdeb1b01fe56bc29", -+ "26b7df388a02a8279b0652", -+ "7fe76cd2c5affa913c2b41", -+ "733b81816da25936e81af1", -+ "235baa54adcc67af92d06d", -+ "4e6cb8ec1b00e2f28b3a7e", -+ "88b8371baafc87a9713f4", -+ "3b0283be973d59ebf4242f", -+ "587cce1cbd0dee8b98f262", -+ "6cfdd09fe2bd66b85c2e00", -+ "12a3196afc09a79694eb31", -+ "4feae15528510f186aa1fa", -+ "449ccc3923e92a0bd2e3ba", -+ "4f74e7ee01738298062093", -+ "6ce98c831091728c0e73bb", -+ "4bfd93fb985a44ed0569f4", -+ "3c8b04f81e14e10396b582", -+ "6cf76079225189eb2608ce", -+ "76e87d4d2740e137511b26", -+ "c62790b24bc842a717e31", -+ "516640d56302eb15061b25", -+ "60c8d2e958387c0d0627a8", -+ "402c7149b20bce787c7e83", -+ "64c275af1abda385c2af0b", -+ "5088a2317aa34dd5bb1b4d", -+ "67a9131aabd5255bdce732", -+ "d452f805a2c35e686e107", -+ "5ef5512b3384aa1243daa6", -+ "6c1076c01e9e44fb047889", -+ "46bdbd32d31b2a36e04e0a", -+ "527456447c2748239033cf", -+ "356211f56936e183312837", -+ "449d4feccb40da2e122aa1", -+ "43ee4b35cb3cdc84d1d5db", -+ "7651ee2e0f4d348cbe95bd", -+ "2ef2be0f7e33ace73bab4", -+ "4b8968b5c5a93dbb4b2b55", -+ "7d2db742721c9ba686ff30", -+ "48e4926c40cd6ab5e92ffc", -+ "506e6a05e8de5c9198ae69", -+ "74a156e77589342bbef3d5", -+ "798019b397419c8d54fda1", -+ "5a7d2dd2aa2028d4da8f42", -+ "5ebb44d93cb77417b61c4f", -+ "1630a212afc84f038374d9", -+ "3ae30b1b5931eb630bbf6c", -+ "37ba1e609c7b12a8e32733", -+ "238de3e1606bc0e1c33adb", -+ "149d706db4fce00c71da76", -+ "524b77666e02692a642407", -+ "ac6c9987de6c73f2259d9", -+ "51c819b9ec191b60920096", -+ "a961f7b95836d3a578170", -+ "2bb1db818cfd733dcce0b0", -+ "51eb043d3564fa91215f1b", -+ "23693b4063cf0fa20dad42", -+ "4fbaae68fdb253d715d528", -+ "69a784edece7c38bcf7297", -+ "1d595362f3a1b4c77729e7", -+ "22f18c95264f1fb742c348", -+ "5637e5d4438a119a23f043", -+ "75a7fc26a6faacf109b345", -+ "3a051daeeae9770973713e", -+ "4b21ef5da2b744139c3cf1", -+ "471eec9edf3f5af18be6bf", -+ "341851bd5e48e20f0a412f", -+ "f125d56d3c0c2aaf7ad05", -+ "c91beeecaf54c95dc1b37", -+ "38e1e6200860f4072a8a1d", -+ "3b3a5f854ba249c04d075", -+ "4170c011864f5582d6a738", -+ "17fc45b2690c315a5249e8", -+ "1bab6e088abbb7a786ff3d", -+ "1b388caec4f8538425d93c", -+ "6df80f50564e811e245eb5", -+ "65a5c9fe061a38a8c6c2e0", -+ "18e5cae7f3bd61293a8c2b", -+ "408e6268fcd75479c3bece", -+ "514d622fcdfc26212b5d14", -+ "435abcd28c0cfc9f321db0", -+ "710608c33a517ea5d5359e", -+ "96cf28ae783cd1e477aa5", -+ "5685392e26e4e637394c54", -+ "32f953543bd07093a29e5f", -+ "6806f2889f5316f4c57e07", -+ "668c0767178119bd41ac3", -+ "6e885e79f7b5fe77214da5", -+ "3915c8d33da94da27c1249", -+ "762f2aec62b91b262cc99f", -+ "7ce0b194ba3e31249ab36d", -+ "5dd52a5a11350a9b7572fc", -+ "404ae85658f9b08174632", -+ "7772e0b990ccdc614c11c3", -+ "573747456cbe53c844796c", -+ "3cf5810d8c38a097a7561f", -+ "269c017af27ad44e6b201e", -+ "2835e7f4b39073c5a451bb", -+ "ba07dcfdd701f16f45aca", -+ "1b6a00fcabec41d4b43ba2", -+ "67da5d093fc207176dbdb2", -+ "311601fec45703953f2b91", -+ "483ca240f22946b37af3c", -+ "758f193f192584a42ebc31", -+ "16fb077509115b4c0ee442", -+ "2334ccde40867fa1d0bc15", -+ "3f0177714af6ab07d870c0", -+ "697c3f9accda8d3543f182", -+ "59a5901c521b74864c8fb2", -+ "17961b8be9d0332a213177", -+ "69defadcac1e44c7a1c0bd", -+ "2df92a33b308b4efdcaee3", -+ "3a603b28f5e57fbfd764b9", -+ "65c75439faa2303912b32e", -+ "121daf29269045f5bdd20b", -+ "7adedaa3d8ff64ef5910ed", -+ "7b59158d38abcc0653e41", -+ "63bd657552fcd47a1fea3b", -+ "3951fc47c9cf417968c09a", -+ "7b97dd845f9509d060f296", -+ "67cd089f73cfc8807dd840", -+ "b17adb15bd895ea825438", -+ "3860f5646a470f19d720f1", -+ "1365575dcf06e2b1987b3f", -+ "5fdf7c6cf80f5f4d619b9c", -+ "1e86f8d9f30e1c9ee2f741", -+ "2f4da63191088795366c81", -+ "1f527bd93add787e619f2f", -+ "1bf7de225f0abb4eae1da2", -+ "7eede9c7d2fd05759ff0d5", -+ "7c4ebd51c09994a5c2702b", -+ "2f27f9f5b37e53f26a3367", -+ "1a91f5500bd170effa0820", -+ "14e76412c1e117fa60f762", -+ "27869ae6bfa80052e928d4", -+ "36e5208ae458480078d5d", -+ "193c88995f60dbabf1ee79", -+ "55509fd3a52bd88fe29e11", -+ "60188d16e528a5d2e06d3d", -+ "3cd40ccabd157073f9e356", -+ "6f7417b6bfc27461fd2524", -+ "60f671cf9f662680d04313", -+ "6a1b97013fc782623a1d18", -+ "4a5a912df871eba16ca2bf", -+ "4bafb874450e24655961f3", -+ "7fa7e63240bd502dd4b06b", -+ "3ac9b63dfc3067c1c4627d", -+ "11978ed9a01677cec42ee0", -+ "6b488f646fce9835d43f44", -+ "2449f6a2ba5fdac5a9c1d4", -+ "1fb4d17ac6ee317ce5a547", -+ "230119c3b2a6b1bafca00", -+ "5ba00e958e1473bae28031", -+ "2e0a934adfe422dd136191", -+ "64af53c3c0ad963e3055c1", -+ "173ee21e60a88ae566e166", -+ "c25f982adccb58e81ce02", -+ "1c0d48f6283945e321fdac", -+ "15b86ea9fb5f9d46bb9d95", -+ "12ea1cc2026e4f5211a159", -+ "4948e72d6c06974bcf7212", -+ "474d5e705efa51e5e97d39", -+ "3a928b86dc180342e1f053", -+ "68570d0c5fc94ab3c18486", -+ "33294a38a5c8a431b3624c", -+ "7f5271355a686a4df7e516", -+ "2176005ea62a7fae1a0ec5", -+ "7b7ba8150a404335a3e978", -+ "7ee167869f16d0f3096184", -+ "37b012fbed4994b5319766", -+ "5a9897a2da0299756dfdb3", -+ "22c922d5b0fc736e5f1adc", -+ "7c793c0d415e26d57ec92", -+ "11326e189db8b15b0744ff", -+ "39f2517276288f74c45e3a", -+ "47b94fbc156b869e9d16b9", -+ "4a27b941aa4c6ad1e07548", -+ "796842dd6bfad2f98912a6", -+ "561331256e1d21664a1287", -+ "4d3db82b9d6efaedc42576", -+ "26293d249066a3014c3338", -+ "29d711357943b0afaa5b59", -+ "3baf4fa4e9f273acdf732c", -+ "22f4901fc0a8b24cf62fe4", -+ "fa65751eb4d84785986bf", -+ "1c89d8520ef104ebd20ee", -+ "3251a62ebf3abdb7c9ed58", -+ "59db917020bf7253782d5c", -+ "52c455dad0b267d43552f0", -+ "599102d1f2500d61d762c9", -+ "77024358b3e776b2c5e1af", -+ "3248d851d401112b750bc", -+ "36f20d7e24da8778ce35f5", -+ "4dbcbf0e0833361017aadd", -+ "7a6a150f8921047e15edcb", -+ "5d53571a7cc3688e6944b0", -+ "3de0a5abf20a4845d76439", -+ "330bf157841f4554c8f5de", -+ "7faf5fb28aa48ff83cc07", -+ "ff765fa35889a47189d5c", -+ "1bb928a5ce5b6a93e4a6be", -+ "443f4b4ed3b1f2c8fe8ce8", -+ "159314ac561f7431a71dd2", -+ "2ad8da8cd83b1521d7659a", -+ "2e6c1f41a9866f4d867e01", -+ "2bf095a2fbcdb3391aec69", -+ "7286bedeaa0c2687819d8a", -+ "1a1cfff05adf1a427c023e", -+ "7677202d8f05f9287a6047", -+ "144036e909f39a00a79653", -+ "5d5d0b6bedf48b96c5eb79", -+ "2aeb5606838c910769daa9", -+ "36b57535eb2f884ec435f1", -+ "26639427b4cd468207f354", -+ "567c07ffdf5609acdc57cd", -+ "46c6a4606b83331dd733e4", -+ "214ab6242649bf5f0673b5", -+ "456b75b7118ddbd9c05113", -+ "23f47a79fc10179e2f1aad", -+ "6750d083991451ddf24ddc", -+ "9a91d432ec896438ac971", -+ "62cba5cd6ece1fcc005653", -+ "146e2b3f7404eaa2825f64", -+ "73a1489a18b0815a03faf8", -+ "4b81add44caab6287f5254", -+ "43da9e4b9fc98c3225df02", -+ "73c9485e5e5379f878695", -+ "4b0e392a6b94b0716bcb0f", -+ "627d01094a2553e7bdde46", -+ "6e1c49a1adf3346b270d76", -+ "2c11fd859f539479044b3d", -+ "5ad56a9a03d1277384501c", -+ "538b76dc0991647c99d6ab", -+ "2fe38c447768175651bb27", -+ "2d8207ca3331c2f27a3943", -+ "ac1c0028dc3aa005da816", -+ "5830e5e1c9294904118c10", -+ "4fc1aa30a26bf05e1cf79e", -+ "37ca6d3b30cb2687e44f7a", -+ "3fbae766d352bf62d71ec9", -+ "5b8558cbc60eeb5d4d1e0c", -+ "3c0ef922648f93834d2bac", -+ "1f216750a4d1686b3b2227", -+ "54449f7dccf77fd8f14fff", -+ "25b4f424465c145a893505", -+ "1533a8f5ee81c2d4352c6", -+ "747f5812283a8ba1a43af4", -+ "42d3b2e606813eb48865e1", -+ "771e23d6155cbd6574be92", -+ "6937a623eafb54374944c3", -+ "7ebd8ffb86035ffa249a5c", -+ "65a59676f2a0f7f5358513", -+ "4cc1b8f60c7b3b604dd7f3", -+ "8c1b60a22d754654b3b0e", -+ "3542a00727cde7902f64", -+ "46dbb8e8c99f2d8cf603ab", -+ "449f89bc8e75ebc93c06c2", -+ "42fe3f1413aec51428fb64", -+ "6ea50d7820cf1c46cfdea8", -+ "5e81e2ee54fa1c8e9216bf", -+ "3cdbf096f176a11d399e68", -+ "1b8c58018b9ec962054ab0", -+ "292e4d75da1a76fa4eb730", -+ "23f737b6f1527cfce0303e", -+ "1f2e34fd7020d08b01b7f2", -+ "1103bc87eb4e4e572c882c", -+ "4796fc52e00fbc5d65fc02", -+ "6ecdfc4db1fa1b0104403a", -+ "5d780dd5bc1f62ed520130", -+ "403ccf27d3ff3c3686d654", -+ "7a42533b0f16560c421482", -+ "3c52f4c6c583d5b2a18105", -+ "32e84128c0dfcdebdcfc5e", -+ "db6d45038525122246c3a", -+ "7e9e8be590540d41cb48b7", -+ "4dac5ec68e30db33d790b3", -+ "4a9951c3005ac4b7d775a5", -+ "8d7ac16a6c7fb5dcaf362", -+ "7a7267a5eeee00421b1bd7", -+ "14b9cf8ea7c2a2aef663e9", -+ "7a75465db2452d11dbf6bf", -+ "49da4e6814895f7566132", -+ "6ac2b95852f2b3848657c4", -+ "29f43cc681e11325bf172b", -+ "41d82e9988854950bdb48c", -+ "6f5834f39b940405114e26", -+ "754181ae9689816d4fae85", -+ "394398fcb25e82a48b8d32", -+ "693e564c43456862d84db1", -+ "5fa8c4e879ae9ef5c6f178", -+ "3937d6181e67f43d9bec08", -+ "4bd73bb75df0b9c8f31e93", -+ "417a5a771b0fe4694065d", -+ "47ddc74fced651c57b4d1f", -+ "7746c161815ab2091d9e21", -+ "72216a00ebfc9de1e963c8", -+ "74c5b771dcd8c4719355d3", -+ "450dcdc45566039112cb21", -+ "1ffc37c5751a51bd676a97", -+ "553adfba4c4a6d20491557", -+ "d65fa4e9fad0f9180af7", -+ "6151a60a864edd0e7c7b30", -+ "57a6c26c5e5dea61f133ee", -+ "39f0a0674e65b2cad4a706", -+ "29105da153f2a098ad094b", -+ "c16242d78c3d8fbfddea4", -+ "235bf7672a2cda1ab01fb3", -+ "3faddb5ddd2bdc683de72f", -+ "75964f1abb3f7cc93e9f96", -+ "62019722b2962f2ad1787f", -+ "67427f6921fbdb98c3e375", -+ "2a0c42a5cba7fe55a006e5", -+ "2bcf3f6e0be988750bc0c3", -+ "31cc33f2d92bb3dc73372f", -+ "553e86c66c2fba13b95f56", -+ "75f53c77a2d34dd51c6882", -+ "6f8c0ef46d2275dfe7e84f", -+ "5c1c9591ed7cecac5be504", -+ "e0fd267f226bcb77b4105", -+ "1aa73126a375b6cf5e8b5", -+ "5e4eaaa44cce4760757194", -+ "a15cce75efaba6c1b571b", -+ "7f779a7314dbb8bea5c652", -+ "2359b0102f9a1f774278d", -+ "20bd84ec27cae248ea38a3", -+ "38a3fd25a6d9f4f7c85efc", -+ "2117da386a0ba848e04619", -+ "6db55a7581d577d97e45ef", -+ "68437c168764f9b52e36f", -+ "5574ce6446f5f9b2cb3ade", -+ "2a8fc7a338bd0e95e61238", -+ "6dd1e30b456df046e42f20", -+ "360136af955e5fa1edc1", -+ "403c97fd7a8e612b101803", -+ "e8a31983f38b3bc04d83f", -+ "2fc4119b8d9484cd86a0bd", -+ "23b23c226ec7148e9ecfd4", -+ "40f14f4642441c80c723a2", -+ "255da48e767df6db73178f", -+ "5f4ee2c7a7d447e781b997", -+ "4945531dd0d285dff322e3", -+ "58de9434dcaeb21007cf50", -+ "4eb92d6051c08bfec28d32", -+ "46777bd089a8dc8c44ba66", -+ "155305c9e80b8231f3fea7", -+ "27e0d5b6d5b01b974468e6", -+ "3337445fe49877ddd94c8c", -+ "23ff36317f41cdc69b5f8c", -+ "5798f45a6d32a5d9e220c4", -+ "6b1b87bf69d8ba16154459", -+ "d959366c9d2eed9c988e", -+ "7914f6f164e20860badddb", -+ "fca586b3bb595a8d4101", -+ "68bf1a165a85b17f192a39", -+ "7b94e69ecfb1ba4bdf42b9", -+ "363177aa4ad204478f4d2e", -+ "4ec109ed0d029a0c6bd1c3", -+ "ccd4be560162041ae08e2", -+ "3e7a71b985de5c6c7a9f57", -+ "1dcb001f06c75da3270a59", -+ "7feefa2c38e3a6212b4cc2", -+ "58a47971604afebfc2dfe", -+ "175182c7cd2ce431b0150e", -+ "1ff2197a0e5b3d0b65c928", -+ "497b40c11c5d479cab5f20", -+ "5448bba652328fd63e3ca2", -+ "748cb85b7df9ca5a82d4a0", -+ "5b60aca7fe85259aa048ba", -+ "68bba5659f4f20356a0cad", -+ "16a2f9f4e53133020d693f", -+ "75df623177a9cc914a680f", -+ "dfa61531c98e389318ffc", -+ "12502410f917e813c566e4", -+ "385c720d2080ae9544a074", -+ "15c5021e3387b5104eda39", -+ "6ed402123cbfe00df8030b", -+ "4e9e415c8033fbf3989b6d", -+ "1ead4bf29c5aa1e11118b1", -+ "3eed8387e5a22f84995caa", -+ "6207f87b59fc321d1fa8c5", -+ "5527388c03206dff6a464b", -+ "232706fb395f1e37b2683d", -+ "5eacde9e13242553f24977", -+ "257f0dc17de9e402db5577", -+ "26c8838f41263334d39302", -+ "5ed2c798bc4d3df9693b4a", -+ "59048c7bc400c1b2f055f1", -+ "60ea199093a4e9f80613b6", -+ "3fdb397b831af56c0902f1", -+ "47be6483decbcd32c50b44", -+ "715687651f6925a41a3bf1", -+ "5c585a64ca68d89750e9da", -+ "1f5e885344b51456b2195b", -+ "5d2602e9c7bafe79929bee", -+ "25b65fbcf4deba1535165c", -+ "4bba04cb6f7dfe33e4bd", -+ "4e1dab19fafdbf4d11123", -+ "3b79806e60c6443e5b75ae", -+ "28390f3626b1fdadbcbfd8", -+ "2ac5b705311ca0e8e6bcda", -+ "21cbfd5db5cf856bb6980a", -+ "31340daa6bee66dc702e47", -+ "4520d49550bf0a2328020f", -+ "6a91ca9f24a59bd3f77cce", -+ "590c069f4d458da38448fb", -+ "4eca5fbd35a4778cd18f80", -+ "288723d0eb9a25150c0772", -+ "6bd55e81cea4df6934b8f5", -+ "684e96f56360b04576ab1f", -+ "10c2f27dd2e5d8f77a071d", -+ "78b61404bffa36b135773d", -+ "9b13c11e290284a86caf", -+ "415d623b63f929b3ef879f", -+ "4dd2e16c6f9989907671be", -+ "72e3a111047449df428c07", -+ "27c4576460764aabe86ca", -+ "509ca3fe7eae200044712a", -+ "1488492f946cb788d721d6", -+ "5fd2fb0300581c5f59fa7c", -+ "cae1cd222ac38b9a89a19", -+ "62a4fc7a9af2d27e92b08f", -+ "2dd86ec9cb242b4e68016c", -+ "615326e14c6c74c717def2", -+ "454b67d8b7470679eeda79", -+ "359b739ee10f4c4f24e721", -+ "6714be0beb22d71708c5e6", -+ "571cc10547604b09ba9b69", -+ "64981a92737099a91d3794", -+ "58b898760417610a09ff41", -+ "5e1c654c63269bdc77fee1", -+ "37e704706a7967491e3628", -+ "76a279212b584d95ed2cd0", -+ "64d1d7c43b00bfc99b8bb2", -+ "524919eb6636c6c6c14a82", -+ "4176799b704bfacae7d897", -+ "2113e1a93f5d2f1cba0377", -+ "47626057be8af9d92cef74", -+ "31fcd9e9b87aae6bf32f83", -+ "2cf0b3c6e55d4f6c794d8f", -+ "2f36ea2bf51461b1407878", -+ "2840ecdbeaf847ed4e56fd", -+ "4dba440f7f398ce0198b25", -+ "6ef7e0b470470f565c088f", -+ "58a41d74e16c1b1fb6cbf", -+ "68b020f430372f0b20817e", -+ "396792f2585d3e823623df", -+ "171772c43b172c6f59b4ee", -+ "35da7f1fc27e6edf7e2774", -+ "5fe19870cf156902f09ea2", -+ "4a99080981fd90fd8f202c", -+ "4fb7ac8e103e64af4c501b", -+ "32124e45d595b542218cca", -+ "4cbbf282cb8d5b492509da", -+ "26e8b6fae1b81184be307f", -+ "4019e2ed5f4f686e75a334", -+ "aebf119c49f1f5d4fa77", -+ "214de8b9e305b92a9ebc6a", -+ "155503fef8a8a42650f8de", -+ "4cfa062853643ca21aa8e4", -+ "210804240b673797c1da0b", -+ "4499b6e3311b7fe5b9c98e", -+ "904098cdbfd4389279e30", -+ "575c81fbd5408f583cec84", -+ "2cb3e5c4dae6b173319195", -+ "411254ef95bca10cdc61b9", -+ "14266a10ce4302dd32d262", -+ "14a25dabe8f8f9bd2745b5", -+ "7c2bf4a989b0889ab6c2ee", -+ "7bb42f21df6b474c926cab", -+ "4edae7063e31e196fbffc4", -+ "706df4fd50e1c42994aed3", -+ "312ecee1519b0617d31186", -+ "32f8a36cc1b46c25cdcc28", -+ "6cc9f90d012be002904668", -+ "69498de156a0aa10a4e2dc", -+ "6bf558bed09b770ac7b7db", -+ "45166035762ea541feeea1", -+ "2bcddd9fb0f98505c98aa9", -+ "56b71258283af76e7bcfab", -+ "3349dac2077bfdf6a12d86", -+ "39450177cdd3980c4efafa", -+ "4ebe9580f66ecfa62bdae4", -+ "2d2c322dac49b5fc4277a6", -+ "63a2efcfe030b5eb3fd526", -+ "2327087d544749f348c909", -+ "3d49c943bed92220933501", -+ "2501ea3eadb12569e01e7e", -+ "7c2fed1746d715eb95529", -+ "3adbdefe2bc4d894d3eea5", -+ "574f9294e066c8fdb761b7", -+ "69527863032c1ba7d7e238", -+ "78778c448d7d69eeff19c7", -+ "63a482d47b34384d6c0abf", -+ "37120883f03d674fbee3d7", -+ "46789b05c1e88afd58b2c6", -+ "62e55ea318373ea102e458", -+ "7bfe5c12baaa86c60d8117", -+ "6c065cf636d6bc65762095", -+ "45109475272b0ee96581b7", -+ "1b4e22a54398ec5712c2f5", -+ "c0bc8c55f3b95e521ebf8", -+ "614224558d52e5d4eb23b8", -+ "532cc2e0afe1d979c42a70", -+ "6e48887c0bee3ba8386f63", -+ "726d30610282ed39d8f203", -+ "53a902325a9087232d64a1", -+ "6e72d626e97997cb842159", -+ "1fa48382ab305e0404adc", -+ "3d3a2d2ef7d22dc8adb10e", -+ "59aab11c164124e5cdf604", -+ "7529b300b4b89c580a5f62", -+ "206a9c38358f291b01e407", -+ "47267802b4baf11a616d7b", -+ "1d50b663f8750fc777a8a9", -+ "4113025c4b26d50d501a53", -+ "21e6a33067365b1e718020", -+ "1e3f1f00ee5c87d8bcc6a5", -+ "37902c15fea70cc2588984", -+ "330554538efb3452d928d9", -+ "eb12a34ffd8e97426aebf", -+ "7f53a40fb6d59c55fc0a6a", -+ "2ccc62a5fe0c2d164b78ac", -+ "3a82f64175d5b3caec9c53", -+ "676d8d92a92b0706da21e1", -+ "5c91f707bee21c71c33c34", -+ "2ab6145578df975521753c", -+ "6e20ab59697e8bf608ee9d", -+ "96afde4db924db62eec7", -+ "2d980e097ecb2ab91b9b92", -+ "352a1b67a355f38121c462", -+ "7c3ad9d6ed54817d082b65", -+ "65e071aa89e8e9caa17f", -+ "4e4d1094ae9ce9f42b1d71", -+ "6d82429df8c04f3e8cbdea", -+ "201a5f031183f9e3136174", -+ "4b31d20ed3a1f68f117d30", -+ "309eb70bbb47b20185134f", -+ "bf1c05f166718be1c6836", -+ "29dc0e371f2a3ea6cf4d60", -+ "610a799f5f9443dd8f333", -+ "7ca0b74cff2de67657aaa1", -+ "31018337a926110b0a5b91", -+ "3c066553be4fa2a741db4d", -+ "194fc13ec819c9e2289cea", -+ "3c7d066200b6ae5892048a", -+ "768b4e15703c2b99a95ee7", -+ "66673b06f4474ab9ac84e3", -+ "75b60c74c3f4835e0ba3f1", -+ "282bde17894173789173e7", -+ "6b386c8a9795cf0b45e160", -+ "1984882a708094eb26643e", -+ "7e84a589b79843d0f09d89", -+ "7f30d40bb0193bcc3bff38", -+ "1e9e640158c2d5ef405818", -+ "46f7147d837df6469c39be", -+ "717a62d953937ab8d63ef4", -+ "29d27ddd5f46b0a514ec85", -+ "7f5d5abee4ea627ca346c", -+ "1ba30d22d8ca0e3412c0e7", -+ "1b892a6bc6d106036dc210", -+ "78208a8be2c33504df2573", -+ "2d92e146c92e5c2141114e", -+ "65ccc844f43d7740c3bb83", -+ "6cbec7ee27571943d99309", -+ "7ab8d7968452d732fc3362", -+ "51e871e33b066886db1e57", -+ "70cc62d0a35cccb85972ee", -+ "7db23dcfd5b48847b2da44", -+ "38863908f348e0ff24d2ea", -+ "5f7998cdc984bda089a530", -+ "593ba411e3481cff090a6e", -+ "30c01b8abdb9d98a7941dd", -+ "46861d4c2ab5de181f3e32", -+ "2f44e6e7eed452c1b02ade", -+ "31e4383d0d65d0adfc3084", -+ "44b51755bfc5410d6cfad6", -+ "2b89a454954d4c6b2e2120", -+ "7a1817cf8f21c4f863437a", -+ "1ece2489d9c16fd0d7c093", -+ "7fd049d0f5d16bca84fbf0", -+ "284cbec8937114a1728cdb", -+ "2a6ced30aaeaaa3957eaf", -+ "41ec16a5c725c7d32d3a8d", -+ "2c1cf6d476ed98aad97b90", -+ "715fb02624875de3ce495c", -+ "3d325eede75d0a573042e2", -+ "4550a8c9126d63e137546e", -+ "116c396589d81e0684d5a0", -+ "48ad93093caf03d61b0aa8", -+ "29bfa87365d098b3fe8377", -+ "3e14120ed24ebae50e64ef", -+ "1924697a3681efc60e8e70", -+ "1e1de465daadd9547d63fe", -+ "32c9397c9adff65d943965", -+ "41ff1be99bebe99b10f273", -+ "cb351e8f1a28278af3af8", -+ "5939fc19fad9c14c8917a9", -+ "634af4f8ff5eecb70f9b3b", -+ "14b126e3c0b0f4dae2ddfb", -+ "39bc9fe63b4ca1891dbe7f", -+ "3b77afb6ec85d92608bbc9", -+ "6308b8f5574126f70ec3cf", -+ "2928531ef291fb90d243e3", -+ "7d43897c9a717ea4ffaf53", -+ "542f3c6130072ffd145c0a", -+ "57b79cb347145bcbe43bcf", -+ "68855602ae559673b8a2dc", -+ "77f657453333dfbed3c7e5", -+ "1fb7c568bdffd12b767330", -+ "abbcfb2e4c3da6b090978", -+ "36224c16a9190272a21e14", -+ "47df2e03e1548a16e223be", -+ "f6c4daf384fb3d39aa985", -+ "6978fb86dcb4ccc82a3738", -+ "670c6449f82194e5367c1d", -+ "75a29d53450973ae07e5b6", -+ "1a0cc5d78d1da3759fd0fb", -+ "319945f43efa75c6d6fbd6", -+ "4a8154e2948099e7b7c4c5", -+ "2353c3f920ce7af530f96d", -+ "781973046ae51aa956a060", -+ "21789b3595bc366315af2", -+ "4d63e68650d056d4e2cca2", -+ "6eceb600a9b81fd3aa7175", -+ "2021e0329a909a39851fe3", -+ "45d43d697cb8503c85839a", -+ "7489fd5407cd56abfcfc49", -+ "57bcb68e1f52791794bf4b", -+ "71db6b9125d5ab5b3e7493", -+ "4e72dcffc8f26eb136b7c7", -+ "890072ab6d3eb608d30ea", -+ "2f1b9eb8c8ceec3aba8c3f", -+ "269ad3cfbd18bd255786fd", -+ "7e18b1dc04cb3af247aa31", -+ "43cebcc2f248fc1fcbd6b4", -+ "1b9995439565d095eb8a8c", -+ "66e2564796168c2d0a015a", -+ "13c9d1e81de8cbb64a1797", -+ "657128352843035ba5fee1", -+ "58c411222783451febdf82", -+ "2970c6e86dd017c5341ddc", -+ "7bb1913bf745fa526f18a8", -+ "4d0a046c7ec4f54117f367", -+ "36f24af02e5318171bea53", -+ "9cf05f6855d4068390948", -+ "1107ffccdffb2932659325", -+ "2ae1383e51812f870ebf41", -+ "3aa6d80b7b4477df65330a", -+ "6cc6a998d40d1bad211cd", -+ "7d58cee39bf1830f1b3ec0", -+ "dbd1bb9693e65c5eeef4a", -+ "4385d494a7bdb154810c4d", -+ "4a64cce2fc4633dbb63e09", -+ "3e9654e3940c0f541b93cd", -+ "1207aa2a4ea7c882b5e76f", -+ "43bc8bffd5b4fa12491d7c", -+ "7df66ef2eea696dbe6ad95", -+ "4e203019ba4b94cd691d60", -+ "61978b574cf8f6d53118d6", -+ "14816e04a6b799d1ce9e1e", -+ "5c699bfc1a98ced38d7c88", -+ "509dfa92ab81408672391b", -+ "2025bd13134bf0ca69b0f6", -+ "675948e6670907b03227ed", -+ "90bd6d6fef2e358a664bf", -+ "2f1dd3930a2948f2187f86", -+ "6336954989b8a716380f64", -+ "2655fc5da8cafdc10e8c6c", -+ "be26e79f27c2fffd5718b", -+ "7568ac37df7da28c47bab9", -+ "3128342c1cd21185c739db", -+ "1318f3d7743d8ee4ecfdb2", -+ "26102582959271955d45bb", -+ "1118a89d656497538996f2", -+ "4d74065738715d35d47743", -+ "2644cda468b716b53c99d1", -+ "2aec8efef6c41604b67a83", -+ "76393b1564fa2cd841480e", -+ "87eada956963224c06418", -+ "44f34a642236b1e7e4c8fe", -+ "5edc4541d1854504d071a", -+ "4a292844d7aa26520c09b1", -+ "1526a67a2f54717285cebc", -+ "7decc101d84d7378c8efe2", -+ "1f8889a7c0321f5279b37a", -+ "71d26320321cdb1dc925e0", -+ "b8385ec48f904d72393ba", -+ "4a2cef4e3606d1b9422334", -+ "db7255fca12f37c452ffa", -+ "4374a87512bdcb27925ebe", -+ "99539a5120bf06fd3edb8", -+ "4f7806a65676c896ee7db9", -+ "365cb247c96e7933341e76", -+ "7964fb4049b23d750b6f0e", -+ "48cd6ee15c4874d342b21f", -+ "221728332d3142e3346be", -+ "198d839621f761dde4f853", -+ "259839d29faddb791e3548", -+ "15324434e27844cc4fba51", -+ "60e351e7834b181d30a00c", -+ "6337453f9c180b8ddb37c4", -+ "608a29bc043b54adde90b0", -+ "4cb0c7462e90f28fa251d", -+ "b5f14620587f1e8ed5a45", -+ "3c994e655edabd5cfbe8b8", -+ "35ebfb3fd5a71979daee0c", -+ "2a1abd32897155b55014be", -+ "67d12b5d61741b8623f378", -+ "21469f9c49fb4d2fb54baa", -+ "728aa131a37012e184c2b6", -+ "6f085a8f46a66e79fe4f92", -+ "1a95aa2ba56c053acf7e56", -+ "1f1c7eef9d0f99e1e209db", -+ "5b57bc12988f27dd0ed418", -+ "5e9464fbce6027257d92c6", -+ "41be4715ccf6dde8b12086", -+ "25ff556cf1afefe2cd2ba9", -+ "59f67a0c66d5e9744004c6", -+ "23c20aae79c2ffaa75a36c", -+ "574f95a475dce62a3071ca", -+ "4a98326f880a44e2d6ea5e", -+ "39f7a72e1daced6411b1a6", -+ "37a4477749686070e7e049", -+ "51524048af5a6750b1955", -+ "43012f86bfa02bf0033ee9", -+ "4253e27061630b9343ddfd", -+ "520db901eb8309582e12a2", -+ "656f70349417ef562616d7", -+ "13cc5c5fa7afb2b7468106", -+ "1916345f1ad90cf48c6472", -+ "a80defe299bf7c4d81738", -+ "673a9bc1330de8c0b0abe1", -+ "226f7d490aa9d47314570", -+ "4762e175d924ca1dff7d06", -+ "79ae8d3a65221805ed59d3", -+ "65838019d10030d2edd34c", -+ "46d2651ce40dd1fdd11e69", -+ "4277911fa0e430960db091", -+ "5370ef9f2399e3c803b5a6", -+ "69110081782c350722756f", -+ "be2266f15dfa6e02e4a02", -+ "7c64411c354fca180b974e", -+ "3669075c083d3a0547d7ee", -+ "49212e86ec70f1b328e11a", -+ "70628248b6cda7311de5ca", -+ "5593dc730a3a85d6ce77d2", -+ "4a2416a8cf412f996e9654", -+ "56f01f51a5be66f649b1d6", -+ "1c7c6456335bb722881302", -+ "4f571e68d11ba0c201ec2c", -+ "2f615de4e96f8f9837947f", -+ "9cc0a7524feb44aafa989", -+ "13705ad9594243161047cf", -+ "358734094106c4c77371f8", -+ "48384f03b178aecb456dbb", -+ "336699d6c6f15f6ab914e2", -+ "5dd2532249188dbe3d2539", -+ "520d412f22645bfa3f3a33", -+ "45838fc0d9bd4e814df398", -+ "5d172643cb569d9b2ab357", -+ "34470b1eee2f871c42ba71", -+ "16103ea0d454ef686ebf4d", -+ "31e4aec6d42e52c762e301", -+ "217d231f2ea4bf28c97e44", -+ "15bef1b795296c7e8862d0", -+ "225461e731f47cbf2cbf5f", -+ "520f0b6932233966b7bdb1", -+ "6db3eec1da4e57eacd7cf4", -+ "5728f13fbf1367c5292a3a", -+ "7856c391e8828b90a94afe", -+ "6b36296c1bd668243e920e", -+ "2f8aa359ac5538f4834ed7", -+ "208dfefbc938eb8f166f28", -+ "6506edb4005521bcb61671", -+ "202377a9328fcb8f661a5d", -+ "6f4a829757301eb1143585", -+ "5baffc06fe51f5caa49a4c", -+ "1c24006c67392d350aebe9", -+ "a3d31a1daca53878fe695", -+ "6a3f78db4e25085a772f7a", -+ "423813f9eb92bfadf14d9a", -+ "60548a10984139e59f5d8a", -+ "ee2c219af9300476a7d41", -+ "6a4862d59f8198b4ea0fd5", -+ "76d72d56a09f253d257f0e", -+ "52492b4a4856d777ca0682", -+ "2dd44a6d1765874cf1dbb4", -+ "73040349f8459e94069012", -+ "6c290f053f3f46327ee8ec", -+ "6d575f1601945a3ca29eb8", -+ "3aac1aff3b6e14d31a91e7", -+ "4972dfe88d7e4fb02ffe72", -+ "5a86321f172c81fbf185ef", -+ "50b37142bd10ca63ad3866", -+ "50148cebf8644fa7375aa", -+ "322164812a5696cb2322b0", -+ "4303859a49916073987344", -+ "bac1f8bfa0e63045ec3ea", -+ "67b770c97867478cc69b37", -+ "2cd2d00d4262f35754bb13", -+ "678fb8bf7f6342c5764339", -+ "656e5b10b9da085176e0e4", -+ "59dbf0c177e94a664cfe3b", -+ "1f8b63c5fea99ffd6a5348", -+ "4debfa77d5d5f3fa106f86", -+ "147a0d7fc26817e7251ada", -+ "3f26224827d27901ba392a", -+ "24364b397921eedc03333e", -+ "361de61b4e6057d1cb2274", -+ "14b5583a83133add54d368", -+ "6ead11e0936e4bb4e855e1", -+ "30e484fb4ce5927a937373", -+ "571513666bf5e4e0b1c7c0", -+ "4be11f1cd60954626093b7", -+ "775bde6bde2d0aa4187fe7", -+ "5a1b57c203d09cc8a22696", -+ "5d5e844e1fd78c36c3341e", -+ "33b05c78a18798e4462d45", -+ "624f69e6f91d2b9574cb8", -+ "172e3a20b269ac416b7186", -+ "1f08599df3ce28d2e2a99", -+ "3d50a612150493864e2df9", -+ "42e82d8613957e0acb2b09", -+ "50e45902fe1a308ec88670", -+ "23db937264552bf6dc2858", -+ "6395a035a6a5e009dcf586", -+ "23931a4d64503bc81a5a33", -+ "f6074b1e17e08713a2a46", -+ "1e604eea4a6fb7804d131c", -+ "246e8276fd64f7af18402a", -+ "7fdefc35775213402acc91", -+ "31f0df7953457ce90524a8", -+ "731437b69ca76a93992caf", -+ "3559d5470cc8be88bbee52", -+ "2a6da3e3f6425cc4caf185", -+ "384ac895940651e4b3df31", -+ "20cfa0c6bfbdce5e399a70", -+ "72f290cf9ea470dcec1318", -+ "77ae05c9ad4bb1a82ee6f6", -+ "33f6606f82062475e2caf5", -+ "373211f704832f37df113f", -+ "c663e7994203d116af45d", -+ "25b286320c27c0f91c388", -+ "2219a8eabaec2cc4da44cf", -+ "3fa82c77c11ef3ce373a08", -+ "6c65a41601a28b4854db0b", -+ "398768a52710b109c92dcd", -+ "45e67b0777cb6facf28d74", -+ "21ac3ebe991cfe1bade37d", -+ "6db9060a2078f4de4b4e1b", -+ "1f6a141f6eb54cb95d54af", -+ "68c1092ddd7cea180b7a8a", -+ "e5d22d0ba9e3194e2337d", -+ "68075aa010a2a7afcb2078", -+ "577a2773ebc9e2412cb050", -+ "1634b76faeb97237505ef4", -+ "1aadb770481974ec7ba970", -+ "42a1f9791054781a203d9b", -+ "7a520385f587099a8da6a1", -+ "1a88cb781abea4a70cdfa7", -+ "655b44d3a92231714b14c8", -+ "651be8b59b15d629ab774a", -+ "550e4c9178e5dead2f815e", -+ "ee736adb9b9c1860d483b", -+ "ceff6274c7b15ae86dcc", -+ "214d49f3e2681b232cf62e", -+ "2330589e6c22439bef95d1", -+ "7e1ce3bec1e98dd35947ed", -+ "72118d192add3aa4c1e0b6", -+ "67daf6ba4dc4d74236df77", -+ "d16f53a28b7042d305524", -+ "6f52ff1c7f6dba719401b2", -+ "6ebb0dee9291bd90cd2215", -+ "78dfe864170ab14a408743", -+ "601b382825c1515525a19c", -+ "2e5ffe59b5dd3843fa4c17", -+ "2bf32012cc6354c709ad2", -+ "669f3588d7a4ca7ee3dd1f", -+ "3de21ce46f7c8be3bab3b9", -+ "432c0a15a9dc31696b79c7", -+ "349470b19ee7a8cf922b33", -+ "3c53d6131f8c41d5d7317b", -+ "5e83dc6dedd0679793feca", -+ "54c245a123767ef7f22e33", -+ "563e208513fb23ff9ca7d", -+ "b512df0270e6ffe2d4a9f", -+ "b0715d55fe0c1edd9613b", -+ "c0ecef4f88f5957d4b1b", -+ "c8806bb60205886d4ff9d", -+ "32c2902887e1700cd5dddb", -+ "49d6a78a88159326775c2e", -+ "56359d56dcb06ea3ab68ec", -+ "2d794034e6ae324ba7041c", -+ "64f201a4086e40b2a3a19d", -+ "7eaf34148ada80711a86fe", -+ "2142584bb5cff6c1e5011e", -+ "15060a6e69612092d45768", -+ "4de3353d33028c5f557394", -+ "70594464b46de9acc11f02", -+ "1fc064c4398ccf6bf7b1de", -+ "51cf9e84f5414c7907e79a", -+ "71be60f1312db2fcc7f045", -+ "5fa826fd6352f83c34bb5e", -+ "62baea1b89700a3953e872", -+ "4a266217d4534cc588119", -+ "7bc0acaa724475da5a8a83", -+ "3d9a1023138b0e9cbe7d70", -+ "388d8c3c958b6abcbf6aba", -+ "98079c36403a029b3f0bd", -+ "72716051b13a2c1876c8ef", -+ "515a0593d1e619118d226b", -+ "2a035934ba5fafe2ebaf47", -+ "316bc661e89aeb9e7e20a6", -+ "25330fc3e5df50eee77cd4", -+ "6c8071fad8933706efff6c", -+ "3669984e1ddcb753afb878", -+ "4781781ebc739ed9d4e35", -+ "3915c71f3b447b64ce4513", -+ "726dd56f61c4c5016201f9", -+ "7b8ff43621b7fb13c3edd2", -+ "2bfe7376e8ab62fafbff59", -+ "207cf80fa76e8708f88dc9", -+ "3a4a4ac73bb38c0c48aea2", -+ "52e6bde0fed2ecd82f7bf", -+ "523ee7b96bbc2b0977b4f", -+ "551b691726c66f9ec1f9e8", -+ "361fe28e640ec02ae49613", -+ "71e1aa5a9aacb38b66f605", -+ "d427f0f9d14ecf4c54fbd", -+ "629e9c894bbbebf06d3299", -+ "37f7d323d5bf332eed1bcd", -+ "7fcd5bd9328b9f06223a1a", -+ "744db8f7e25f69bc47f2cb", -+ "4b0d1ff6297b378945b906", -+ "7c1d3420db42a6ffd37cef", -+ "2f8592e02ef759cdd34c72", -+ "4dac1ce4b87e60431b8a4d", -+ "451e904c04882b739d233e", -+ "5bb2eece8c95a515d2e2ea", -+ "797d4c38129f52836fa5c7", -+ "5d29345f097e1dc041bc7f", -+ "6b25878a1ec102b9e883f1", -+ "610d07557d991d9db3dea7", -+ "5d3293ca54de6a3aa06b08", -+ "62e4e44df51bf11734aafc", -+ "1945686d70d9df98093dd1", -+ "2c16632a312edfedcc7f72", -+ "19675db116558d90bb4f6", -+ "620c14b60053b660420c4b", -+ "39a26bf8336439ba9968b4", -+ "376c7a8d0fa0abf4c0bb7c", -+ "7f2209419e3163fbb4cd8a", -+ "6aece787aae5251b57b3ae", -+ "6b380bf5d71fe523ad1e4d", -+ "2306ed04565a9cf9fa84c2", -+ "7e37a126be9507ba4c717f", -+ "67ae2ace35fde529154a8f", -+ "352d204330140b3786230b", -+ "6927c4b12865ac8f053dcb", -+ "7e61e3317d07a1009894dd", -+ "2768a7a783d9baa4e5cce3", -+ "260213253056e29f0ac6e3", -+ "61539cf7b388689e7a260a", -+ "3d9131aa5802e27a83eb61", -+ "5f87453deb48ed6c9a1afa", -+ "418b73330a3b4d1a80474f", -+ "5cd3a1cc8bf78e4c7e3747", -+ "784bdef1566f244d4ff44d", -+ "2c4bac0a0cf06ff50ff71e", -+ "3608208e4497b40a62b3a0", -+ "6e8b2732511303a48ef731", -+ "1ef9edb1f958cdf81fb9d8", -+ "4bdbd2765933e2b1d70563", -+ "b2687172956319218655e", -+ "4f787847feba11bfcbc764", -+ "49ede33966bc3f0dc8757c", -+ "12a2fa8c4d06a694b748c6", -+ "2146fc84389596cf6fa8ca", -+ "536bfe32ac8da07b253be0", -+ "773a63e6b7c9e3bec91272", -+ "6bc6acd592c0200b749e07", -+ "3d28e1c12f9c60e500dce7", -+ "5687a42dcd55b43227f657", -+ "36b36922114363ceb85a26", -+ "51e267e9a5a7684ebfd343", -+ "5b4aec35da23a27808974", -+ "2e684b7951a2526d838fd7", -+ "62b2e70d411eb11bf0a695", -+ "6473dbfbe4a3f63d08e3f2", -+ "661787ba011711628186b7", -+ "7234cde8ecc6673caf864a", -+ "1e39f05dac576881e6c295", -+ "420c1c0074adbe0616df4b", -+ "177f43e8d62e87c66b9da", -+ "10fafca3d5f71faff8f1a", -+ "43dcb4450a256b9a0eb673", -+ "460372cf36a22fb6b9641e", -+ "a4d6bd96f61637d730c9c", -+ "1754f51aa79c3b0803bf00", -+ "65fe3a22c7d35ad3f875e7", -+ "150c29ddf5483fb74be06", -+ "716991a2a17f536244885f", -+ "475131d01f3e6dc3b169fe", -+ "569bfe59efe21364bf57e7", -+ "75ac7a48082d5afa148e7a", -+ "63f5fe049f46d509d141d8", -+ "2b90f954efc9f58a07a363", -+ "39c167fbee27f65e96cc7e", -+ "1db83df0a168bac450e4f8", -+ "127118c35aaf80dac2a57", -+ "20601a054af9d51633fab1", -+ "728cea43531fbac95263a5", -+ "ff53eda132c9a3cfecc65", -+ "786d54b4d5ce74ddde20a8", -+ "1175d70c2c07855db37245", -+ "2cfcb08879a9aecacf316e", -+ "ecef39a1ef4b4d1e8c6dd", -+ "70357dabf2c34c8309c723", -+ "4db4f1a602cec485019670", -+ "735a03f218370f8bd85ee7", -+ "3c9ecb18a83b901f901704", -+ "4c7d0db8193430b75f41f5", -+ "28eb082844c0ed277d2520", -+ "a3cfbf8b779e15bf28c99", -+ "624d49c04a48d42d76c466", -+ "221bb5afe07669d916e136", -+ "358d745e0bc4be1c3f4586", -+ "1ce2a05bccecd36df96b64", -+ "362261ed7c97591714ea9c", -+ "20f6e36fbf07174b587397", -+ "12413ef53ba7fc6fb5cd35", -+ "3dd366ce71f1fed428c326", -+ "b66201b62ddf6d13c5534", -+ "3164747c95104338a78b5e", -+ "5ca6e41b81529e38a59f6d", -+ "3834a1b7acb0f05d9e53ca", -+ "3a2f442f3b3a9a2af00b28", -+ "270dae1c5ccafaa07ae8ff", -+ "71e916ff79204bdad49695", -+ "4d43f85ff03e3cd18ef302", -+ "2a2b13112979d27489208e", -+ "442eb4a36ab0287728c1d2", -+ "4dd985f2fef5c539fa6a96", -+ "522619b83283553c71de74", -+ "794294f26a938e1caf3c0", -+ "25d1c185377c3cd8e704a2", -+ "3e7db1002a9116a5e20032", -+ "720aa7a7bdeaa025a23a54", -+ "70f2550983dbddb8957b2d", -+ "57aede4ca861e5051b15ea", -+ "52f87910ef7e6dde1f16dc", -+ "79c75783449d733d93b4a7", -+ "5186a4a6ce8351b40466bb", -+ "1208a98ea1dd68a01d3ec8", -+ "3d66483aa6674adb6569c3", -+ "728caa6061cb6ff29e6b21", -+ "3ca90695aca0fd32b28871", -+ "18eecc5a940548e7c51e57", -+ "cb8a50376e8204b8b5ea9", -+ "7731327e4c6ae66c8e47a1", -+ "16f732c5fac8192629ddb6", -+ "13b16e69e645c1703bf7c2", -+ "789addf402241ff646d77d", -+ "169566a480e42dcc8863ac", -+ "5ca4bcb81d4d03018b177", -+ "8ea7f70a71ad46c0c260d", -+ "4a67b54dcc404423e6b631", -+ "7b609aae44a59cf088c570", -+ "59fdfd7775c9750e48d811", -+ "5738f30e5cb40b4ed83e60", -+ "78b5c76a3ee8c2ef071fa1", -+ "2ff21a8761b9bce5f34f74", -+ "71af54a2496a076b559a6a", -+ "11f2c34fc87060adca2837", -+ "4476f33d15e77d3ea6c712", -+ "1dc0a99973375f6c4a4583", -+ "5cee3684d600afc7804db0", -+ "20fe6d6e332154329f831c", -+ "1b9850e5f0f8fec4d967b8", -+ "6b5617e9152db554d999bc", -+ "144303d93b170584849f6c", -+ "8a006b686db9c86eb0756", -+ "1d9a776cbeec9f5dec9407", -+ "503f8d64438b7a99b8de08", -+ "7b084b907f4fc0301dbd5", -+ "dea3527d089eceb4c22e3", -+ "38a39ada5dac01b5c2adf0", -+ "4cfeaacecd47507ead712a", -+ "3ff99310762f37d685ca95", -+ "492683ece46681328f9912", -+ "27c1b7b41af947101d694d", -+ "39a95d47cf87d7d7d6bc8e", -+ "48b438b41e1bc7e58e6ef2", -+ "7b0ba619013363524f168a", -+ "557bc3fd4a1a6866c5d19c", -+ "46ef25878ebd3ab0b864d2", -+ "70044b2b283269e2d14166", -+ "47226da695602ab6e77894", -+ "142fa830b7ba88d08608e3", -+ "3019d2c9a4a70055fade00", -+ "6bd645b33c041537bb5186", -+ "3fc3e580d2ad754a34bc48", -+ "5e8a5f959be2a17534c9bb", -+ "5a2cdb29cc6790b45d1f04", -+ "1c28b93f693054a06fb391", -+ "242cca5b643a5f97a01a20", -+ "48a0fd415822566b2ecfbd", -+ "308ab3a2c4d7f4df4b6a31", -+ "4566810f52dbdc6e52d908", -+ "53cf166384d9f967e4ee4a", -+ "32a9d4d4f421cf83f9237a", -+ "7f4b55a70795b9d26512fa", -+ "7222af7c6bff611029c53a", -+ "718c4a4aea9ee0da236930", -+ "71b31c9be0276caacd1146", -+ "4d89a145aa9c4acc9cbc8c", -+ "26b549a59dc35ee5ea7b82", -+ "59308e5db85655d5ae0c4", -+ "2f63eb0fae8122aa717440", -+ "4346fce81f02878bbc28d6", -+ "3a0c64739838b20476e0bd", -+ "389f7a523536bc08e2c52e", -+ "1a756f67d7e3e663369a04", -+ "732b807455afe5538cf678", -+ "421e7c19466e0847ffaea1", -+ "75aa7d0184dbe8ff376045", -+ "178e61138a7396d55d224e", -+ "2a07033e306623cf4e37d", -+ "25d293607604db30df2e4e", -+ "1e6b9387cb8fb6494ace9", -+ "524a00dd634d2f57ac7c6e", -+ "106fdb273227296116f40a", -+ "47efddee37fa0ef6a72a47", -+ "2a17c7297a08a3839ca0e1", -+ "4c60164f9602341914167c", -+ "656c647508629462e9a821", -+ "54e5b2458bb84fd7d4433c", -+ "15a3be22e80e0f6f498608", -+ "152b3e507f8b7898991275", -+ "10cc6c74c4f9fcc9428f7f", -+ "7e185faaca849a7f135848", -+ "62ae26dfe2273af99c4830", -+ "7255e6805e164cf9788cce", -+ "49b4801e9a2a64a27691d2", -+ "3fd90efbd4f0a4e173f589", -+ "4afedaa595cb8c309d3fbf", -+ "c57749387141da5f8fd27", -+ "1ba28761d3577e14d38b38", -+ "10a61010d82426d21109af", -+ "4d23f5ec809ab5057c2705", -+ "31e9d0607a42f7e54a8c81", -+ "37107b083cae132372e4d4", -+ "16eaf321bf41ee635d6d46", -+ "44bf623ac807d4c96747f7", -+ "b720b9f07a6b1f41654e1", -+ "68705a826f80224f09c337", -+ "798b816a4dea5ab964c64a", -+ "2adb843a58d472c17edcb6", -+ "17c5a39deb46d102235506", -+ "70c9c69419338ba44d6b8e", -+ "858c45884b129dd66817a", -+ "7ffd3daf76b1e818134f24", -+ "5b509a0106f1d06627c353", -+ "4d6d3f3602597781bd2ea0", -+ "4fb33de912dd8d2f8b8081", -+ "2b7758dc0945a30687fabe", -+ "38271b1467ee062bfe15c1", -+ "1d41ed28d87d24620da24", -+ "5b80c6e1a5c4dcb3166335", -+ "560e1e8aafcab315236068", -+ "31204f9f1e25342bbe28db", -+ "35d63c19d36b85b5e96648", -+ "38aafca45b266dbeef6fc5", -+ "426b930b670412d271a091", -+ "59f2c50a64b0c2a3e77442", -+ "7cb4b7b324b314195807c8", -+ "4a1381ccb93c34dc44cab", -+ "14da57f8c43c94d5133d50", -+ "499a1abb2a1381278175e6", -+ "6334fc3ff70d17dd837781", -+ "6717c0177a36454aef446a", -+ "7bd177160999a650655c6e", -+ "2acc282877d9cac38e38c3", -+ "18b021fe09fa8bdc44e567", -+ "45638582a87d07b0339df2", -+ "664ad54353749f2ad36105", -+ "5c53790457f0f66baaae2f", -+ "1edb6eab35de11d4922150", -+ "38c3b4008c9d0442e7b602", -+ "76dcede51c5087d374b20d", -+ "1901320882ec0093fcda5d", -+ "68f5ab17da1cc5dda22c36", -+ "4e4199871aec7ec1f99895", -+ "68d4b88b77dfae0da7a5d", -+ "a4f6b861d9a460f5b65a6", -+ "f7cdb22a187815c33c5e0", -+ "7b398d970ad745817bcb61", -+ "2e061928a5c3ad9bd6d9be", -+ "5be7c40d96f7c97153eaba", -+ "21887a11425a371d17db86", -+ "2cc7417260782c0d2394d3", -+ "6b421c0667b336723fc0a1", -+ "1d78f3d7e887debfa04bf3", -+ "1d165ccd9ac1e4efca4a32", -+ "163690a8fd51b113410cc0", -+ "419d9a35dec3e5f421baef", -+ "215c7e9a1d796b37a56336", -+ "541a69af40655a83e366ca", -+ "3f98705d2cf6346bf00972", -+ "4ba668ebddeaa069043875", -+ "2aad9e8261535baeb20b71", -+ "6766e290c73bba54bcc710", -+ "65118f1b7c366a8bbffcb8", -+ "7d88a8aadc667bc60fcb2e", -+ "16d8ad198832545831c93f", -+ "567508a3d2a7b4fe3b395b", -+ "3282cc1545c9e77ce08abd", -+ "57d0cd94e03404b9cc57cb", -+ "14f23f2aade2de50fb350d", -+ "280bf57e6ab95037683d33", -+ "15db077682cfbf170ce259", -+ "2e1709b850c77f2d508334", -+ "34ddcae84938327a3cbc30", -+ "ba357a389bca1484d7e54", -+ "bc149e667cbe5a17ed77d", -+ "25032025485a4979b90394", -+ "467db4fe225847525ef33f", -+ "54112eabbed42ad31637c5", -+ "14b68001dbf2f798322812", -+ "7146b897c3d924725bd0cb", -+ "6a76e3eb445dada83ceb12", -+ "30abf45ef025352e681192", -+ "2f687a83227d2d20f3b227", -+ "186605e063004c7e4a9375", -+ "21ba4c5acd17d59fca0ed6", -+ "2cad73640590abfa319b6a", -+ "5db729c46c687ddd7690e6", -+ "73673685484b4f3492976d", -+ "282a80b8de04941c547168", -+ "4b53718060040e8179d82", -+ "5d50e00035655b4d4ddcb7", -+ "546ec9785ee72a2a72d886", -+ "4328d17f00529ea0fead97", -+ "71faf2ef0654e97e0c23fb", -+ "49374e550d8b335cb151d2", -+ "42772160e3ea402851c9c6", -+ "c1fd8fe80d24243e7b5eb", -+ "111d6b945ff69be530cfca", -+ "2dd21df4dbce295378bd06", -+ "3d8509040aa8739f034dac", -+ "68d439e82561e55cbf1eed", -+ "65a1f7025bafea5088145c", -+ "5f70485b00138272e9a41b", -+ "48ede8d4a9a88f7613388e", -+ "1de402b5c6118ec8861aad", -+ "50f371336a648ade74999b", -+ "17da7c01f870089371d6df", -+ "2f64ac4f819f8343111866", -+ "648ea8b083a9828f8af17f", -+ "28d6cf3e20845dc7283634", -+ "7dfd6cbe22024260a179ef", -+ "65ab167d8e02a8df26439e", -+ "79d07c6a6298d34020dfe7", -+ "55407685456c2cb8311d26", -+ "413278937e6487a988805d", -+ "168ebadbade1cbc44496d4", -+ "7d6f33ec4a123fa281cabb", -+ "59bc93698864451646a053", -+ "4d1a8b95ded29dc79fd401", -+ "21b466e3230d809af7aa6b", -+ "35fa1fca985387fb7fcd19", -+ "1a789636807476ba5bd789", -+ "7b115c7c405c6e4356bac1", -+ "378ef780c4d32c3f15b3c3", -+ "23dfbd70bcc040f36d4c8d", -+ "6a545ca829ed278f6ee7f4", -+ "c06cc01bfe2a9b427102e", -+ "126dab6c2bfc9b83475847", -+ "15bf0eb485af1135b0e453", -+ "3b929cf6fdabeb45375120", -+ "11c773ac555182d789142c", -+ "444a50dba1a2bf390bea1e", -+ "1976a9fa25af6d21cad47a", -+ "2f88b1c87d7d02f6c2614d", -+ "7fa540fb3906a29b513bed", -+ "2b23443976252ed21088d1", -+ "5d9383670de64bf15eb49b", -+ "1540f88099c93111d6c8cd", -+ "2c33c53227ef5693d69f36", -+ "2648a635c5981b8daca07d", -+ "7b71ed8d456ee35292c960", -+ "62c36a3627b9d2b3c18de1", -+ "3e985c35adacaa90f5715b", -+ "7401d0da6ddc33225bec4e", -+ "740f62900b9523de37b6b0", -+ "3aaa2c73e60edc333c904d", -+ "35accc5a1e3fb474285daa", -+ "1d85b86a2f3f20e2832ec7", -+ "6dddda58fac4e8afe0c9e7", -+ "2fd82a7276af1cf8b372ed", -+ "9377e0e5c8d0de1856f6c", -+ "75266a81bf7f77865e6f", -+ "1de1227159008ec9b59ac1", -+ "1b5200adee3adf189b056e", -+ "4d8b0cd0d3401fd04e351", -+ "438e5a19094bce43b5b5ae", -+ "6f339aa4d977875b1f1f80", -+ "297ac1b2d19eb1e6e32d87", -+ "638d0229863032ef249643", -+ "65c9be7a29bf45e5992a7e", -+ "7dcf3e6b7d3d02033c946d", -+ "6565aab9eaab16f7430411", -+ "374a0e75bc76f0adac7af5", -+ "8649a3995ad114bb4d72f", -+ "45f5960a9db06a62821bf0", -+ "36735381ceff20a76e32eb", -+ "1416e580fa8bcb421dc6ae", -+ "64f00973a0eb117b548182", -+ "7507998b275e3c9bd4e10e", -+ "305213c4b30a9e8be153ce", -+ "233860a2ed2d566e131431", -+ "235809998758cf7e4acb1c", -+ "2102dede4011c5cfefb7eb", -+ "79486109c44990eca52723", -+ "43b23b71c3202b31d91018", -+ "63606d420b8e8397875647", -+ "697396e6df9539532709dc", -+ "581eb843dc9919f85a6644", -+ "3b98704f287b0ee4e659aa", -+ "3886dff828cc76dd830466", -+ "1c9f86b8742e14b6caf79b", -+ "bafe681e7e52073b86d32", -+ "1a5853834033d093c63d55", -+ "736d05572fd4ef85eca2b1", -+ "61170002cc409ddc34946c", -+ "5fc3c4b7f7ad5deab829bf", -+ "4597c1546c899a3656689", -+ "6667dbaf666f92bd61da79", -+ "a2e07f9d73c5e3effd370", -+ "63942ffcaaae948e9056c4", -+ "6a7db7fb47d3a18b620d6", -+ "58b95d74eb4e654735bebc", -+ "78a4c0445f77f31209ed17", -+ "7203cc213679d179eabc35", -+ "22884c181cdc222cad8e5c", -+ "7f8bc7233e2784039454db", -+ "aa2cbd696160321682a6c", -+ "4356ada1ada2921353892", -+ "72f7dab0b2d2a35e62478a", -+ "32e5682bfa3fd95762512b", -+ "77da1b5a2124b6c9e11847", -+ "593c091517fff61973996a", -+ "264e4b26d39119bcdc0985", -+ "fa33fcce55fe6a32e0915", -+ "127c199cd032273073f003", -+ "169665894aa2b356779b61", -+ "9dfe57d1a9a3265476d14", -+ "364f70dfdbb439b78e5236", -+ "54fb5f18b6d001ef7be401", -+ "321e3fdbb0b890caadc570", -+ "64532524c99ecb3c365a41", -+ "aa480c5cc76379e0cd2de", -+ "6ac2b70efaf88fd42c4044", -+ "6810dd5945e01cd2c90841", -+ "10aab6ed7d1b631aa4b45b", -+ "19537a8ee281cd28d6388e", -+ "5ba2a8023e5bb50b06e03", -+ "646ce329dbe03b0b8312de", -+ "4f0024b5b5580d91de0338", -+ "2b4b238bbabe3c70748eff", -+ "3bec30574a99903f587887", -+ "24e71c2d01e956269446cd", -+ "68c4a816c641b5b1090781", -+ "6fd170c2ab312a1f05d814", -+ "64d8389dc8d1b8910fc0a", -+ "4807e0d9a38d358d8e14c5", -+ "14ee39af97cd5a57b0e17c", -+ "24974593a8d59a89588659", -+ "59a7f220e101601c1d1b21", -+ "43fea0cf26a3e256438525", -+ "2b3c80a17ef583b6205fd4", -+ "44741cea6d95eb07e7f01d", -+ "2ccb45ece6ec9abb9396c7", -+ "5ba0eb3a703d0e42cf4094", -+ "400f76e25d392f347d4911", -+ "419e79b02e607a42e6e091", -+ "36c0bf9a937fe6ca772d0d", -+ "2244b09bebeaafafb0c481", -+ "1501743c447af65014399b", -+ "2791e42c7f90ab8d4e7fbc", -+ "150365cfcc4a012a673c13", -+ "7869636f37e63a4ffff7cd", -+ "211dcdb529a6bab73ad8a6", -+ "239309f551f303d0037140", -+ "3f1e6a84c6b836f245c178", -+ "27b94ffb61590cd0bcd89f", -+ "61ade8e7a0bcc40ee4c2a8", -+ "750f475708a1369e3fcc26", -+ "30bed73f7a94de9252a38c", -+ "3e26ac2b23b8b913845e11", -+ "42aa10dc273607be680d72", -+ "65a0cb312051f321a95f5d", -+ "1ae82d51e4845bef8c5d14", -+ "37c6007c4a0d223bec9e13", -+ "4f140e806dac75cc67fa3c", -+ "78acf4423afa2cfe1a6fc1", -+ "3915d17a2935e69936525d", -+ "7fdd8bd273e4a717226cc", -+ "15da282cec1859a9591ab9", -+ "75d3c5c33e5a2023adfd4a", -+ "51890cd139740ee3c35339", -+ "2b514798a553e5bdcd8ec1", -+ "722f9dc13384479d1c4455", -+ "1e2bd3f41ae5c299bb720f", -+ "5ab5c85d4bf835440ff962", -+ "178cb915d7350e37948956", -+ "184e317201ff0ac25eb6e6", -+ "37755ea728b820f0ab2bdf", -+ "5e147628ce9e9a9493f495", -+ "79790e81fd0d2b63f9d1b9", -+ "7252d249ce8cd4fb010950", -+ "d165a455f92b5083e0627", -+ "6354a865e088a0488f2701", -+ "43c2ec8afca87567ee9294", -+ "55744f373c8b8520d62370", -+ "63069f756c8115e5fc4c52", -+ "3f5c0a52d2b564cc250982", -+ "6b828169b3ba13bbcddb05", -+ "46a78cc83c010019e8b2b", -+ "27c6ad85e824da21b1cf9d", -+ "6e9f47f009d809f84a56da", -+ "255358696f5e9ddbfa467c", -+ "738abcc274fbdc4ab5efd7", -+ "70b9ea82f6a6c02939510c", -+ "5f24e71937dd097c0e8678", -+ "41e1bc8a63d042ba714c97", -+ "6da26efc24e2d57c26c090", -+ "575d4696bb0e4edef99446", -+ "4c028ddef259fa2c7d4868", -+ "33525d5afa91fda7d5fea5", -+ "49a3641c16382337f3c777", -+ "760b4f231686ca10ea6ea9", -+ "547264d2566596f18bbb5a", -+ "703a6cf857e651748dc09a", -+ "298200a0909b55e97005f2", -+ "5ccbc128a5721a5dd853eb", -+ "33d5a814c00e980600811f", -+ "5d66f0d9dde7339dbcd24", -+ "5ef30e941639d08bff19c4", -+ "363a65fc59f4a8184d3d78", -+ "366546b3844bf45b7527a5", -+ "18bc8168956ccd63ac68a1", -+ "83bfa3efcf5b970ad41cd", -+ "4bc9c371d07d4a025a739b", -+ "4636e2935765905adcc41b", -+ "4d08f00a99d95d0043cc4", -+ "3e94b32e50da81bb5afc03", -+ "48a13c03c03191471f1164", -+ "3018be3223f82c7f0c9ebe", -+ "185254fa056de9af1a6bd2", -+ "1fe069b8c57a9fbe5f6009", -+ "6c03f094dfe48c9743be89", -+ "1086eae159340e441fa0a4", -+ "222ea07afe042cf765ce5f", -+ "7754a6a5fe6be54c00f4c8", -+ "152dc9fc63d3c1eb6c335f", -+ "3f3aeb0a1df198d9c95768", -+ "7ef4c5361ca08ac1cb6216", -+ "527e969f4f6eefe6289ece", -+ "6b105359a1a68d94862411", -+ "2674d42d16e97493518d2", -+ "369c62fe5aafda2a550912", -+ "51eb860c87e1e5b70bb623", -+ "29f3402339c3128a1e2c1", -+ "413f256a64feb56e242e90", -+ "11ea8c21342ce42ebbf9ec", -+ "5517c01ca3bd4da9aef0ad", -+ "5d2972b12e50e727a2721d", -+ "4eac7fa0d6b168c3bec4e3", -+ "5cd8f5f9eb6806f67db613", -+ "412ae12837a29724832877", -+ "770b83b55e13465063e5a", -+ "76201f5e0110544f41d9be", -+ "c8918a059fa77676f0587", -+ "287593985c21589f72c821", -+ "6b923e02dfb1da62f37204", -+ "2600c04d980b2307982b22", -+ "25f7e1ac0d4153b6365c1c", -+ "484281d930b8ee32f366f0", -+ "3827eb26c007235c46c676", -+ "6cd2d14ecc5fc7c2c1b52f", -+ "4f0841f63a0c64aad5232e", -+ "77c4b593ec648025df03f6", -+ "81dc886feeee4945edceb", -+ "522afb743f67b3ca56b20", -+ "5505b22d0ddba48ae2020b", -+ "2f3b362f4b742eb82f8a34", -+ "1c7831e5dec267ccb26741", -+ "2ddac7db8be22e88618b58", -+ "4e6a2eb425fbd18fb02cb2", -+ "147b65e0e829ca30fd88c2", -+ "36304be3f0777300703af", -+ "215dcfa076749277897e0", -+ "3c2f54ef99be42fe30d32d", -+ "62a01fb38e5c88098fbcc9", -+ "5f84ae1685459ae7e24bf2", -+ "3ecd8205beb790946eaa8f", -+ "5ba344fee845769c2c86d8", -+ "36a92b305c21171dd5a616", -+ "3650c22d9c1072238cfcfe", -+ "9225712405a5bd9ade58d", -+ "594ae94ad86b9a719f54a7", -+ "59f0f5465ff1e16be9bfb2", -+ "4c6a0f6de7e50ac450c0c3", -+ "685afb7cdd699d5a8f020e", -+ "4f1c406e243fb2af67cd42", -+ "2dac9d433ff98cf24eae81", -+ "1167717f2d3d6238b3d21d", -+ "381012de4c9a82f9ef1d72", -+ "7047a4510b8c2107737ece", -+ "185033e62f44aa85a7799b", -+ "41e135572f9ce788481248", -+ "4759751a101953dd340d89", -+ "34d59de432c0dbb24ae55b", -+ "5bcd4418d37c976110b37c", -+ "6545cb112ea4be72bc80f7", -+ "52d104741cfa5fa49fa55e", -+ "7322c20a545b3845b54b34", -+ "783c78a9025283e7188a8b", -+ "3c81a9658bae42644c317a", -+ "1eb56fdccfc12b22db2048", -+ "3c3f770d148b4692e25b59", -+ "4f75e255d88657b2ba4755", -+ "260d6ba9444df4b85dfb92", -+ "34f0f61d6d8d062b6b9d9b", -+ "74fc1bfd19b3cbc9867bff", -+ "3f0d18b1efb7248950daeb", -+ "65b7b50446c767e6fa72fe", -+ "1124cfa0e070cf6fe3c638", -+ "2d127e6ce6bd0f1872b1", -+ "3fdb99cce8884ed923271f", -+ "2d2a15867cf9361defac4f", -+ "9a39acfeb3a1b4c2bc79c", -+ "7adeede80a05e40854e6e", -+ "4431184365a358de692057", -+ "1e4fdc54209c2229d7ffcb", -+ "50cfa48cfb994ab2b77aa3", -+ "1f4b918e0e0d47c89aa2d8", -+ "78ba33e419cbc7f177437f", -+ "5f7482c17a568566c785c9", -+ "6fff35974d5f0b86faa46a", -+ "5106bba99e6268d7bef3e4", -+ "67cb80a136db30b9d60d6f", -+ "594a3b6273b1ed2b542eaa", -+ "6a1d554c48496d8d543eac", -+ "9d8d18a72607c311d6f76", -+ "7047889925ed18a885358a", -+ "283508a2ed137e839b2207", -+ "65fb4589487aa5a16bd767", -+ "1a14d5b10cbcbb9ad3216", -+ "4a469bacdcaf5434109262", -+ "40ebb7bac65bd815945e49", -+ "7b2ef1bbf74c4989ed5ddc", -+ "5ca51c82df4def8b1588cf", -+ "3b22ed42f28069f29c280b", -+ "669e7a28f7a7c30460a80a", -+ "2071c913edfd4fd6daa6bc", -+ "3828df7e9ab6753fb83dc1", -+ "4cd15a66ba5a2f18c8823c", -+ "1ac96b01993da8677b2fd7", -+ "4f9634be1ae125361bd4c2", -+ "681fcdfe60f23e3be083f6", -+ "2d5bb2b553d4ed5bc0795d", -+ "4c4424602626193266d943", -+ "2df30214a49a31c21380ef", -+ "48b920d23514d06befaf52", -+ "4b4c7f0a822537ff62cdcd", -+ "ee9d6b69f13ec8f385e6f", -+ "793fd256b009d961487499", -+ "2d70f946f2915679b314e6", -+ "1bc4e87c1100a2d26aeff3", -+ "6b1cbac9279eaab9b503c4", -+ "5725842b7246179896a39d", -+ "4dcc6ee20983f0020ad69", -+ "57dbda5c8b230a87030357", -+ "78c437adc3b6ce946cdd", -+ "20ea7b335b7621642b29a6", -+ "179d4134709978c75bf6d2", -+ "36a3336f56c91232544e8c", -+ "e243f28e043030ee3a43f", -+ "2d678e77df571d7ac4859d", -+ "5566a844e8b1c572f69612", -+ "27244290f774a00786ca95", -+ "1812bd60b720f8920fe80d", -+ "7f45c48d28fd31ceeb3fd7", -+ "1bea5758655f1400515db4", -+ "249b7a4d080be0f548cabd", -+ "71215d6fd5e662d930a424", -+ "7684536a92d49a5af59f1a", -+ "74d39a89d87bdaa449438c", -+ "3e4e77e268fb6e7602e96c", -+ "46c6313b3914ecd376b959", -+ "31b9dd76b9ed5f88dd4609", -+ "46734211b970f8a6448a60", -+ "7a6d5b1013830761b58026", -+ "6157a651f2640a73f1f90", -+ "38793daa7aa086d5e70798", -+ "58d7de0f8254a81b5d0f5a", -+ "5a1fe9fffdaa20f4ab7eae", -+ "7e8fbf173741aea1b95c93", -+ "4bee7e482b290b1d3869be", -+ "c075fe6224a62c1010fb8", -+ "7340d7daed67bcc5cd4391", -+ "2e12097225e5783b545083", -+ "518711fe03b241cfb95160", -+ "4956721f6a2ced1fc736fe", -+ "636b15a893c301ff23f5f5", -+ "5696a96208101739ec4ba0", -+ "54fc920cc0125e53a92499", -+ "7c2e242ec2b95580a9b3bf", -+ "4d0e82bdf34ff4cb3a603e", -+ "786571b85b2768309c8ed2", -+ "1418facce22bf24a5e6a51", -+ "681a88fafe4e6f0620910", -+ "5e263af53ea065e044720d", -+ "1c614cf9a9d87d69154c21", -+ "346f2a2b086e1b35095d7e", -+ "4b6ed31d0715952774511", -+ "67a3f20bb5e980364816b9", -+ "339dd42a42d94342bf8399", -+ "3b55da90ad9a162be1756", -+ "1c07c875b3a9cdedf7611d", -+ "33567e972c90754c86a5ff", -+ "3ee5a2cc90e335867f0ce8", -+ "4b3a8d22fdb2c83abba9b9", -+ "5b6b96beb19fb0dbada937", -+ "5169af1cd74986160450d0", -+ "724f8bcd40bfc9f1ca0c68", -+ "51603bcc8667777e664f9d", -+ "78aded63d2f85ac948c449", -+ "73862de61086c1fd5e0678", -+ "5efbbe073364ace07f02c7", -+ "144a6c20d0a8d5dce2b12b", -+ "2aead0dac004faa8ab67e4", -+ "3f8cb5eb229acba822b48d", -+ "34c50fc58872b7325366", -+ "3c1fd5d9a6223b2ce7b02a", -+ "554f5cfd133bac2188241d", -+ "559752d946b02da4c2f657", -+ "3950591be73642bfa23264", -+ "2e8edc0b6dfcfb2392ce87", -+ "4c3c570182916f32a6f96c", -+ "65cf5014ab215afd17cef7", -+ "54ad7fa69dfd0b4c19f7ed", -+ "f4af5a6143d8f44e48afc", -+ "1a08e273719d3411178252", -+ "668b9e16f3948f582a5b94", -+ "3fac097802d8f5fb376d58", -+ "3c2dca32abbdc029f4a212", -+ "753f0795048443573283b2", -+ "622b540293b1275c5a9446", -+ "5a2c8ca58cb488822e9f49", -+ "295932427e10aface718fb", -+ "43e36b6d5a937387b49f6c", -+ "4e1162d634d0d5811a2441", -+ "19915afea85d27cf8df109", -+ "7eb8dfe838ec5ef9d3ee21", -+ "2c18c59d95a21961c42f21", -+ "7233f4136f3ace41bedb12", -+ "142c59f31fc82fb58a7dd5", -+ "452816c1b54aa2bfddcc17", -+ "6f24ffc802a08273be511b", -+ "32d68fc9b8a9c17b315382", -+ "5aaabbd40fa78dd417edf5", -+ "51d8b3e6fa0afa106abc40", -+ "394faf6069c716fcf8a76c", -+ "3f7d2ee6cb32c6bbeee194", -+ "4354f51efc9392bcd6e51d", -+ "5e73615c65ae9e74eb1ef3", -+ "761e42e1c908c2f09e096a", -+ "25df9f831698604e15991c", -+ "351db0dca5d74808f36d33", -+ "aef2488954588af921ab8", -+ "296a247b4b36d5c2a1884f", -+ "b1fe15d9ac88348f41a87", -+ "97342eefdbc78b9689120", -+ "1e47a4330f0bce93db13fd", -+ "7511506751237c1959933c", -+ "31e8a39712fb3a7a11f909", -+ "6116bef6a79fb2fc15f0e2", -+ "6d849a39e47370e473a913", -+ "42a81f5e10b5435180e643", -+ "17715e6c96cbe096c4f9c2", -+ "606e14eaa7d60eb7ea925a", -+ "30cb89652c8629b5e0dcc3", -+ "2625096534f2cf10d83a26", -+ "61036fcac29b84e5ca02ad", -+ "4669a41d4e444c1284d024", -+ "2b81c6e67e55aeb6e93a", -+ "23564d97f447b0091e74ce", -+ "494807a247f7ffab73a644", -+ "692eeb4ff69b42372517d7", -+ "3eda92314bf1d09cb5b08", -+ "24b22771f303ef742b8ce1", -+ "5c616b0d1a7bc591e70e46", -+ "4aad58987821ba8f33d96e", -+ "10d0aa100248920b9cab77", -+ "1ead89a48b89a75ebaa7d8", -+ "7fe887d8c5fb53af79cbd6", -+ "ab8e1dd4d27b02d09fe48", -+ "2294095a6b77aaa416cbd7", -+ "69fecb55ba6da700789d7c", -+ "681750fd18618072db2068", -+ "30a18088f5b2af396bbfd9", -+ "2e03d3c0794703b9605de0", -+ "f26a2dc235ace7b34f4b6", -+ "356497a9675898bccf4e79", -+ "3286bf159405584d85567c", -+ "464550e0adf269403f3e22", -+ "3f603c7b410b4c2db2c8e2", -+ "445381f98a1f5669880827", -+ "23eabb9cc5f4086c74bc31", -+ "4628eb872cffa1868b96ee", -+ "6ac77b7cb23565518aa2d4", -+ "1cfd8f0d12bcce21589c11", -+ "39cdc5e6675ab081ffe60b", -+ "1e378fb7157cdaa6fc3a50", -+ "669f4c5ec3934953500b78", -+ "46a91d898168488fd5ac51", -+ "64add9cabf8efdd5f7b57b", -+ "45813314ca1d165bcf242c", -+ "6f37e3a85128974cdfaa69", -+ "7f42b66317d26c3f938805", -+ "181ee17c34ab8aea52c900", -+ "68e8a818d524954278bbf6", -+ "7a6ffa939b86786a779a44", -+ "31d809b078cdefaaf45266", -+ "7f216769148f0e997c7805", -+ "3a82369bb1a4da519bbd70", -+ "25920b5c96127e9d8ab05e", -+ "29702fc1f57fddc3369967", -+ "616dbeafd6aa623c1a7d7e", -+ "634d2540fd670a82f219a5", -+ "3d9abe3ec82d9602d9dd6b", -+ "665bc65420c0b0a151c97e", -+ "37d50d7838efaf03049cd7", -+ "385f7f48a7be6b46d108ef", -+ "5f2bc99aad2f27cdee05f4", -+ "3b6b43619a3730d5995ae4", -+ "5eb76c6301d8a849a1903f", -+ "38910d873da8dfd237e8f0", -+ "41558cae58d4f9a9001b87", -+ "58fc1b58696f8c22cfe344", -+ "64520e4823f48c1f48749a", -+ "3827b84269040363e5e02d", -+ "6c9c81ea487986867245b8", -+ "217bd444ac8e9808b3ae5a", -+ "44dd70b9323f17568e4ba3", -+ "50226b4aa22a0465ceea0c", -+ "6335fb7682400180e10d15", -+ "1857324131e535b1b2458f", -+ "3845bd22f959dda9197376", -+ "4d7797e0b2f77a7ffee785", -+ "16bed27a9c005817ccf111", -+ "5bf1d1c71be0c49ad75d9a", -+ "6d16d10feb1728044f2dc3", -+ "3abbf8af06f889daf59c4d", -+ "45769a307f5593bbf72056", -+ "2a640efe463008db4ed634", -+ "57f0f7ecb2d7dad43748ee", -+ "8000000000000000080000", -+ "7aa96a9fbe718c006a48f8", -+ "24086a392ab75e649d3cc1", -+ "9f20b6fedc099ec575691", -+ "313d62eb5f1104de5421a", -+ "438f5c0f163a4dfa04e5ce", -+ "63137369b8d47b6c9c43df", -+ "4ceae8c6ea35dc274647ed", -+ "465f3b1e25cde0e446d90d", -+ "9f0c9a93eecf4de349628", -+ "3addce3c43218484acf509", -+ "101d83882a81d0147b4342", -+ "4585b77fea18a0113ff609", -+ "73e92ea015629e3728aee0", -+ "257564a39a648e17d015e9", -+ "2f927b360b2b43bff822dc", -+ "328a9932d6b08a41a1df0e", -+ "207ff6a0da7f13b316c4b0", -+ "4b11585991700c233f6773", -+ "77664e53908d00007d1205", -+ "434a5edb31a9c3c6a0243e", -+ "692adfabb87ce969422961", -+ "3eb189e2bfcbe180703cfd", -+ "367efb55edcaadbb5e4f2b", -+ "4573a56ada0a29d31dd6b4", -+ "636f015a0c62753b283d5e", -+ "158e9251ef94651015ecc3", -+ "ca30526530b6f6f0c8fca", -+ "20b1838f00aa00d07f70fc", -+ "50c65d8772a3d5db269535", -+ "47262fa06b9c5ac8138f4f", -+ "d4a270719a348af6d6c29", -+ "af99b9d024438cfe9df66", -+ "2a5043ae183d338b7ebd55", -+ "7b85e0b99eff408f2aa978", -+ "282774a1f4bcb14e6723f9", -+ "58137399c99866772aed9a", -+ "7b7e71610f1589da383c31", -+ "1705c133c7ba24a2b5c528", -+ "336a41277b427813eaa191", -+ "78ec94c22ee912eded5499", -+ "1f9e8bffcac3e1471f7cd6", -+ "7e688d1cbe7e0a84a0f408", -+ "50a70d2086b5ca78a90368", -+ "16f5569ecf073acc30831d", -+ "720d9e52c4aea85ae24480", -+ "15bc81dd36a0393963bb64", -+ "633dad9eec0d451652bf40", -+ "3d433adb4bcd914fcfc4", -+ "ae1614cb7437dc6311ee9", -+ "504e8f5ee0e51320af92dc", -+ "4d55039bf17366425f055a", -+ "2ad535a50fda15e1835526", -+ "4f5cb9e29c3567f8c1b22b", -+ "409705e5654888d8af2f47", -+ "145ecffc8b532b7855ca8a", -+ "4a79a4d35e92cbac8fe0c0", -+ "7c2eeaa3b5ac7ca26ee5f2", -+ "b44a774aaac3d4d335389", -+ "488702c5b90021b8b24933", -+ "62d4635d0bbd6bf8fab17b", -+ "47a6912faf0eba695a3f82", -+ "5fea5590381b705c4ba54c", -+ "552dab94d8fab803e3abe6", -+ "622e4bcd237f601b3f864e", -+ "6b6195f4939abc517ea1fa", -+ "7ae4ce9746d1a251afde2", -+ "5411d9720f633bf7a356ea", -+ "93d0f45c8e78eed19b2b4", -+ "2cfe955ebd8c7e4615715c", -+ "4680ebb5e7e7fa1e676838", -+ "1cbb8749de080f5bb23b75", -+ "33fee942f43e9b7d2118f", -+ "4ef1c6a1bd63bb6b6207b1", -+ "1c1f24204ec4b044c10ff5", -+ "3561d1a2752f1d17dd5823", -+ "782fa87576f745d6c5a644", -+ "68d895a65569cf3ef3e3ea", -+ "46c01f4170feea6c601e12", -+ "7b8a17b08fccb33f4b7d6f", -+ "6332e8b1655b1a7193eb45", -+ "6649997ef28c919c6cae0f", -+ "55b727631edd20582945d2", -+ "1adfa664cf45ca975af0f8", -+ "34ca1ca17d4004b63727d1", -+ "46bc16d9041c2bda07b158", -+ "31afe414b9e841f105214d", -+ "4bc252b0fa653478344f1f", -+ "44b0628f84b11c5e71888", -+ "7f821b6d896942293448e9", -+ "125c7d70d2b6d99ae885da", -+ "49fee8b58237dc40ba3c5b", -+ "5dce9f322e405cdd3dc195", -+ "4e5afb2e233daef8a9bbcb", -+ "64e35a2939773b306ebb74", -+ "3cf63e3a65a7e509ca6dd4", -+ "1f88577ebb6a87d8478dfc", -+ "5d1cdedac3c1f047923b22", -+ "14b8d711e9732dc1d81b85", -+ "63ca1ec0700483b8f859e5", -+ "345343979af3beadfaced5", -+ "3aa36ece405e3ccd9341ca", -+ "5c37d517c640ac7f62a532", -+ "68e1a6376fdb4eb7b4b0e6", -+ "69a00aca76ae6e660be7bb", -+ "1644cc3e7fe80220ef2f70", -+ "58689766e836a562c78c53", -+ "2d83b4eaa1c8f768e56c30", -+ "11ff8e8d5e956398c99ca4", -+ "66de0cd9d504d0c8a10caa", -+ "f5d2bac49777fc8f10242", -+ "30436781bd712f316b4895", -+ "7a7cdf214176b6d3191883", -+ "64f3d838badcddd9bfdd0e", -+ "190017f50befaddece16d2", -+ "21a95826890e5cccb8a83e", -+ "2c958c952c5c886c2a60ad", -+ "3f8ccc4c495c412c1876e1", -+ "901282766f87bc24e50af", -+ "67fe63e894b36bad057249", -+ "35ab264ca762acbf67e1de", -+ "65b1a43ebc40ff17757bfe", -+ "1e0b5aa4ebf1898b7232a8", -+ "5a3548ae1dc271964cafb9", -+ "26e45399ef9d09b479c0d5", -+ "ff910ecf2ce1ed443b3a7", -+ "15dc7895737fd27e2fc2d8", -+ "306cc735643548c81d480", -+ "716be1338eb9fa3160de8a", -+ "37c639bab06813135e6962", -+ "18d28f7c13bdb1a27fc315", -+ "48dd5aa0d80d3fd4d31225", -+ "308d7af9cf09073e61779f", -+ "659ccea55ad34dab51a321", -+ "25f3d9fd234440b97c9821", -+ "5c0de6f6c164f44c52de84", -+ "30927374f464c892c53b50", -+ "540974d1b3361c5ccd3a2", -+ "a0b14921f2ca115669309", -+ "157e5726ec48e98ea5652c", -+ "7c50148337071a44808f27", -+ "54f01285acb2da9689a386", -+ "569b68c3d77231282d1705", -+ "7593ab2f13aa524b76e104", -+ "16a7968fcf87b51aa207b", -+ "2b1199cb9ff7848ec581", -+ "235057c5ef06d64b0093a1", -+ "3ad2c2000ee1db409ffcab", -+ "46dbd89f4ae0d06c0ab8e0", -+ "7fe713df2e65b878c1edc6", -+ "4f0b0a9e8338cbca398b3f", -+ "67ae16da8f876a2c8dc80f", -+ "1bff1788b61c434292f278", -+ "137786296b1e5f466871bf", -+ "413062fa329dcbe3b8887d", -+ "76a4bcdffe1207b9c84c3", -+ "394ca6d6650a3a703c8f0", -+ "7ec0ec060d3788349445a5", -+ "5e6c438c53b4bfbeab6a4c", -+ "1cae4d5a0b88eed0b2d97e", -+ "37150fd6c06a98e84f0fb9", -+ "5e5c9c54f1f75bcc98d1bd", -+ "7273cb20026d3e5dfa9567", -+ "23675569b6f74cecec658", -+ "4d84d472f48a1f27cda4fd", -+ "52e4d0f780530e040b8198", -+ "116822d6715118a8643140", -+ "2fb2d651d1a5fde2dc4d89", -+ "2cbb69d06f0ba3051ce433", -+ "982362cb3f64fc2535f18", -+ "ce584760ca84047b25a4f", -+ "3d32a6b665f10a829cfff8", -+ "228eebf60c055615805405", -+ "4adc76f7cd88044421953e", -+ "4f588ef825e26e596e160c", -+ "464063c0e0f5e5eae1bad1", -+ "231a1fa6a52f8377b2ca86", -+ "3b663e3e9013cab9326fc5", -+ "24716274d6f1761a2e503e", -+ "5eb0e751f365585e4f3fd3", -+ "1c63d031374620336f8c7a", -+ "6ac96f98fa78ffb692afd9", -+ "71f7ff7f6245492bf4ba4d", -+ "46b7638024bbab6f336734", -+ "2d3b2e3d52eac5c09743f7", -+ "2bf0a5cc2a5150523d2e64", -+ "1f7e1880120c76703199fa", -+ "27b48290f4bc222f54681d", -+ "274cbe37d4fe65732936f", -+ "5b872486f12a68a939069d", -+ "76c344db7c98c1b1fa25d1", -+ "6745627963b760ee39ad1a", -+ "2d30342ea20393b89b038b", -+ "51e2ff830fcf99b4147ec", -+ "764156f5d90616c8c45669", -+ "19d3eafc75447dbc2ce4d", -+ "4348b708829c7eddd56237", -+ "605ccf0922a0c35f768933", -+ "86aa65ac1949dd8af6918", -+ "2e564f6ba5f6f74e33f2dd", -+ "54ec1fbecc620b2a62de33", -+ "da96dc29f77c98efd9a65", -+ "3756665d23e5dc56d35905", -+ "7108a03a28803eb91e8a0a", -+ "75fa74ccac539d6f2e079d", -+ "56f539741375576aac816a", -+ "78ab001943d18ada1f6d03", -+ "7a283d5e2ed98485e2d260", -+ "7ca8eb46f6df31902607b1", -+ "3a9ec75af3c8e86b8c1b73", -+ "61df6c089b8a0a75da0288", -+ "3277a60ca85c986d50dee2", -+ "4afa034c14d96f077cc41e", -+ "58ca4d190a0f756173e746", -+ "33e094a7802d99ab1d9620", -+ "4ae3a5f46681ba13e649ed", -+ "6369f366be6b5ec99ddddf", -+ "4ad5b5ec9142810d730c91", -+ "520d75e4874b90e95d0ac6", -+ "56441a020eb196f9ab47f5", -+ "4f100cd2b63ef0cdac7165", -+ "1d72e71f6a57243468bc42", -+ "6102d4b92b578db1756028", -+ "6cdde5dc50cfba13ab15cc", -+ "6a2bde70b440f36a3a69b8", -+ "40afd831d872bbb5ba2dbe", -+ "52a170878e73d2b9a73398", -+ "363495385d4023abd7fffb", -+ "75ecb6eacac31eec1c8d24", -+ "38618fda51c023d44b41df", -+ "1b12fc1c7d3ee5cd24b30d", -+ "428c02c3c8bb1613aad2fd", -+ "6e925cc1e63747fc8301d9", -+ "1711e7c4ddf7dd725f454a", -+ "6543f2ea86c39aa319b565", -+ "4f88d842683a24f7a78b4e", -+ "6297ed8d827bde2f27c592", -+ "7a4c62248fb05a7ec5f894", -+ "50873f081856faa7b0c6c0", -+ "4a5c54b88c3afab5d73bb4", -+ "93ecdd9b52d588b62ae9d", -+ "1dff7b3a25d6efec89d4f1", -+ "4eabe0db8ac5d733acae29", -+ "2d0a5221661bafe1bae3a0", -+ "86148c3559c855d7a4785", -+ "4576a87293566d06f5b643", -+ "2c941d4c1c7d68ef593ae6", -+ "2c36a4d87847724f9fdecf", -+ "7b5f04e933b2e4204cdc65", -+ "774b9d1f08bb74ab682979", -+ "7c1fdd60de643e750fa1d", -+ "682291bfd680e2cd8f9d70", -+ "30d33e090854573dfd98f5", -+ "3860366ed3637eead94b8d", -+ "6e8b7f0e9607e44c1f9f65", -+ "720851fb976798365a6829", -+ "f5eef843bd404a6869b17", -+ "2a8c9eedadb6f6d58c06cf", -+ "232ce65586f95692d89383", -+ "d5835b5723a9063a2dd80", -+ "72316f1be6172c06994a4d", -+ "6a44a264bb1144d86619f3", -+ "5451512089afcff74e1bd9", -+ "557e56b5a5dcf30ae5f48", -+ "2a2840d0a8db4a22fdfb53", -+ "71e107fc4c98b40c6f7b53", -+ "68c711e371efbf9b278db8", -+ "31b42ccc858ccceae34d5", -+ "47eef469d5e96dff3b60f7", -+ "622155e1a7c16eb9e6f098", -+ "73037907fb5b7e20bf7973", -+ "2a5beeac5cc34b9b70fc5c", -+ "214b26c5cc4d2d1d455254", -+ "3326fb026bfe153a5a80e5", -+ "2fd395d2076e94e7f79f79", -+ "1da6208947854d10119a62", -+ "507a197204651599300f85", -+ "60e1157dceceaecc3a16c9", -+ "179c67b2886cbf8a80171f", -+ "4ad8d4214e4fe01b143d8", -+ "594820c775fd57d86cf9af", -+ "18932d3a50056ecbd4c0", -+ "cc47e7e925da6c91fe510", -+ "5ca455ab52339850752f94", -+ "31934713e4ff1d0d7cc583", -+ "77747c8e4550378570ec0d", -+ "44fd7c4168c2a61413dbd2", -+ "278331e342f211746f0d9f", -+ "13022f601d429947abd201", -+ "6d5ce69503f658697314d0", -+ "30151eaad7aef0e79d5e07", -+ "3b6333c6dc16d5f4351c47", -+ "308b1811fe8c7d6801df6e", -+ "1316737cef6e8d73f98c46", -+ "34026c0467a5bb1302960d", -+ "4374fb07e1eb1efc714a7f", -+ "13089f86ddae7614e1f733", -+ "91782b2d8bf1ec8b6e4db", -+ "739d86f4db437bd59681d0", -+ "2e99bf2a9cfd14eb01e4dc", -+ "1f372d16a7c783f301d859", -+ "3fd38eb64df431878b817e", -+ "1b3d8a50e5425c7a4550f6", -+ "2f775dce855cb22a4ce4b4", -+ "1856ece5542adaa42b18cf", -+ "72bad07fa5d3ca19811efa", -+ "210aaed4cc7b55edc4255b", -+ "13ef893fe161bb05038778", -+ "394242cd2ce4d5c927b1f7", -+ "2d8ba9bb83d8b7dc77cc32", -+ "4a9dee0a96c91e7cd6d7ca", -+ "3b62b01334bf25d1f5d560", -+ "3c11b4ca34c3237b362a26", -+ "9ae11d1f0b2cb73496a44", -+ "7d10d41f081cc53194454d", -+ "3476974a3a56c244bcd4ac", -+ "2d248bd8de364598100d1", -+ "371b6d93bf32954a1ed005", -+ "2f9195fa1721a36e6f5198", -+ "b5ea9188a76cbd4490c2c", -+ "67fe64c68be6372b30260", -+ "2582d22d55dfd72b2d70bf", -+ "2144bb26c3488be851e3b2", -+ "69cf5ded5037b0fc848b28", -+ "451cf4e4a6ce149cfc4095", -+ "4845e19f6384ed5724d8ce", -+ "5c721c1e9f943f1e44c526", -+ "6b628f924b031ff396258b", -+ "2db4889991fd96d5a3dbfa", -+ "75393667821938c0e5a628", -+ "2e37e64613e6e49f75ff6b", -+ "7569e0846a7c92c5b07e91", -+ "544e247e73028cc23b1f51", -+ "2e14fbc2ca9b056ee6a0e6", -+ "5c96c4bf9c30f05dfa52bf", -+ "30455197024dac28f22ad9", -+ "16587b1213183c74388d6a", -+ "62a6ac9d0c5e4b3890d61a", -+ "5d0e736ad9b0e048c53cb9", -+ "29c81a2bbc75ee65e40fbe", -+ "a5803d95905530efe4cbc", -+ "45fae251151688f6948ec3", -+ "34de10a25d48bbec6bc310", -+ "38e1136120c0a50e7c1942", -+ "4be7ae42a1b71df0fdbed2", -+ "70eda2a92c3f3d551052fc", -+ "736e4111350ab36a2be4ca", -+ "471e19dff79f0bf8dd75e4", -+ "7c4c5a07ab45db64032f8c", -+ "3e8f3fee79b0aa7d3158c9", -+ "6803ba4d96f3cea5b5b619", -+ "645491f7754448588100c4", -+ "64c773513b07ac7be226c5", -+ "1207f0afa9b17ee1e3a14c", -+ "1a5a3601f9e5c757413d21", -+ "671a35180c429ed6cd73d6", -+ "3f719d970328ab86444133", -+ "2eb29dd03203d9dedca2ed", -+ "3ca5432d73f30360d5e251", -+ "ef9f73cc5ae815a32ca63", -+ "76930d75187c32e1c0855c", -+ "297ac6d1d91b19c8ceb3ad", -+ "4d06acabc42f8f6c6561a2", -+ "17f90d7760ace90b4281fa", -+ "79973f898e87ee6433e53e", -+ "1177a186084a0188e6b25c", -+ "46ea372cc256b25d8bedb8", -+ "9d0d5139d46e4d9db3662", -+ "31f4e6b45c1cedb6d4c94", -+ "222ad5a5eecaf564928d05", -+ "7bfb517a9a7064f7f0b9cf", -+ "88d1f466f33239ebbee3e", -+ "28c8b8ba9341ac37c38695", -+ "430a7ef273c75f6860a9e2", -+ "5963fe850d852bb19cdfe3", -+ "57ca180b4c6f8c3a63ae46", -+ "745f8230228fe0e913a537", -+ "6495ff035413be2b53c45f", -+ "1825a2f6c03df8e89a424f", -+ "4ee9fe013ba8fc6ac8d470", -+ "7b7c35dbf0dd6b94d050c5", -+ "a70e6c0e6da7b5bd943d0", -+ "6904f88af6eea4b3f91bbf", -+ "5ccb3321bf79805e3743ec", -+ "40fe888eb50954f82f8f41", -+ "1683c065332572cac40e7f", -+ "265a6fe3ade48b79bb704f", -+ "6869e474162fccd5e6ce8a", -+ "1621052353e1bb38663f44", -+ "5206d5cc4cf74b102b511e", -+ "459fc4d70a1a8040309b48", -+ "1a38abc6055dcfc6f54cd3", -+ "6de250d6d96fba0a4a2df6", -+ "521255c27009b10aeef14", -+ "784a6ea72c75433fa2c1c0", -+ "1c429a8aad032b85e815c6", -+ "46ae03b83630be869f3f67", -+ "468227ba06af62fa70d6b", -+ "1832f7608c30377f8a27c1", -+ "74e8524ea4276a1585abc9", -+ "479f0a9b95b8f0e630df10", -+ "6c9aa8a230f91d4e6f84c2", -+ "2020839307f0a0b2a66465", -+ "617907260cf1e3612508c0", -+ "50b259ce6ef7786ad19380", -+ "60ad8426c5228781a660d2", -+ "640821dda0f544b159e25f", -+ "11216382d02fa8a680f2c", -+ "3b142ae3f666b5a458fd6", -+ "50d8060a4c81ac0d9dcc9a", -+ "656e0aaff42e8f100df7e1", -+ "6b189bed3e1ee805a7089f", -+ "587965194057ffad1ed72d", -+ "7c91adf751ba7b800072a4", -+ "66c37766a09f2454161188", -+ "2aaf602c5ad427702561f0", -+ "1fe772e91ad75a2d2792c4", -+ "432bf33542ea8f8c0e1cab", -+ "108be849403d8b9e0adadd", -+ "1f098e306099d97f37bcee", -+ "15e468fec0387d9dcde2e9", -+ "35a56ed2078e145e9b5d42", -+ "3450478bbaf1db9aae9e0e", -+ "5819cdbf42afd2334f96", -+ "453649c203cf983e439d84", -+ "6e6871265fe9883143d121", -+ "14b7709b903167ca33c0bd", -+ "5bb6095d45a0253a5e3e2d", -+ "604b2e853911ce83225aba", -+ "7dcfee63c4d594e4583601", -+ "245ff16a71eb8c45257fd0", -+ "51f56cb5201bdd22f49e70", -+ "1b50ac3c3f5269c1d7aa40", -+ "68c11de19f57751aa11e9b", -+ "73da067d52334a718631ff", -+ "63f2b709d7c6ba1ce60255", -+ "6a47915604a062b94c626c", -+ "6d15e33dfd91b0adf65ea8", -+ "36b718d293f968b4388def", -+ "38b2a18fa105ae1a1e82c8", -+ "456d747923e7fcbd260fae", -+ "17a8f2f3a036b54c467b7b", -+ "4cd6b5c75a375bce549db5", -+ "ad8ecaa59795b2101aeb", -+ "5e89ffa159d58051edf13c", -+ "48457eaf5bfbcca641689", -+ "11e987960e92f0cfe9e7d", -+ "484fed0412b66b4ad6689b", -+ "2567685d25fd668a9a024e", -+ "5d36dd2a4f038c91a8e525", -+ "78386c3f2bea1d92b0136f", -+ "6ecd91e762474ea500bb02", -+ "460dae8d89d7708b43a1c7", -+ "3846b043ea9479616ae948", -+ "35d846be55b3952e278ab9", -+ "697bd2294052d067eed5b", -+ "29ecceda91e2de99bded7a", -+ "32c247d46291051243da8b", -+ "59d6c2db6f995cfebbccc9", -+ "5628eeca86bc4f505da4a8", -+ "4450b05b160d8c53288cd5", -+ "5d0b6fe03f574db311d01d", -+ "7059a8ae14b27b87ae7942", -+ "7e37627adf10efb14adf13", -+ "4dae59d140c542483e12a9", -+ "26246e8fdf408dac8fd2a5", -+ "2d3baa252f4d982bd2ad11", -+ "266efd2e0daff29e309d38", -+ "8fdbca74c18894d421e52", -+ "7cdb727ae2bfeeed50af45", -+ "490df281db25788739ca0c", -+ "324340f1f7ccc9eff05524", -+ "595eaf076defb81f21236", -+ "22aca8e5833c97719ebb51", -+ "421f5a540df5b7ba309bc8", -+ "4cf40ea87be0baab3f0a23", -+ "78050a04d755b7008433fa", -+ "70089a05ca7765b8ef62a5", -+ "6446d75a31a4956c235943", -+ "3bc0b4b12c4e0d37097319", -+ "6a6ceb53a9e08bce60e22f", -+ "5527257327c4eade309a67", -+ "5193e0be567990b2818200", -+ "540f6a5d04324cc6ed1398", -+ "d79412155f3d978866277", -+ "65e3000fa520e5bd8bfdc3", -+ "988dfd270fa06d78d9fba", -+ "6bbfc916f60c65ff6069ae", -+ "22a2f494120b7469421488", -+ "5514a9f97c736ef89e2558", -+ "494a8aca14d077b143ca10", -+ "599c6bd84b32b97e000cad", -+ "2983f80020a9f6532ba834", -+ "39395b9f947ccce230cc1d", -+ "5eb549dbd9b640a1018c4c", -+ "3a948a48ee72242647aeee", -+ "5c0b858603efe861d8e554", -+ "18af2f7c66ebae2215b225", -+ "7656e2bcd13769bc7d3690", -+ "1d345a329131e03407a9ae", -+ "6b91d4c08bfb155d85a09d", -+ "c5eb765e74f7ea6040509", -+ "347e522bb35549d788adad", -+ "3c2561b4603673cde220ff", -+ "78c36b7a1a1ac86080796c", -+ "34f1c6d5946b4f8e9c34f2", -+ "1d82fef6b5daac184a21bb", -+ "11e3b65e520ccb94e0f28b", -+ "53ee027a60ac6b8703b4c4", -+ "252a9565fc2ed88c83afe5", -+ "2c748923f66e9b836e2956", -+ "501c73bb8897e8a9b644da", -+ "527df835ccce3d0d8dc6be", -+ "753e3ffd723c55ffaa57eb", -+ "27cf1a1e36d6b6fbf673f1", -+ "303e55cf5d940fa1eb0863", -+ "483592c4cf34d97823b087", -+ "404518992cad409d30e138", -+ "247aa73439f114a2bae1f5", -+ "43f106dd9b706c7cbad455", -+ "60de98af5b2e9794ccddda", -+ "2bbb60823308802716b002", -+ "5a4b0bdbb9a3eba57ecafc", -+ "7eacc570a117e3d2c4ad3b", -+ "b80a7edd7c5745e63c50d", -+ "3d2c4d19f97ec14b7f9a20", -+ "8e1dc29eaa3429a93416f", -+ "16c859dc1504abc8bebb3e", -+ "142700479fca005e365a5", -+ "1a5a69890d5f080ad27aee", -+ "333e4709f384c49fba280e", -+ "773e49f5dd28ab9abcc4f3", -+ "7fcabd5ff8d8321877d09d", -+ "392447173660d27311fc56", -+ "3b607643718a1436cbf93f", -+ "3d01c0ebec513aebdf049d", -+ "115af287df30e3b9382159", -+ "217e1d11ab05e37175e942", -+ "43240f690e895ee2ce6199", -+ "6473a7fe7461369e02b551", -+ "56d1b28a25e58905b948d1", -+ "5c08c8490ead830327cfc3", -+ "60d1cb028fdf2f7506480f", -+ "6efc437814b1b1a8db77d5", -+ "386903ad1ff043a2a203ff", -+ "113203b24e05e4ff03bfc7", -+ "2287f22a43e09d12b5fed1", -+ "3fc330d82c00c3c98129ad", -+ "5bdacc4f0e9a9f3c5eb7f", -+ "43ad0b393a7c2a4d667efc", -+ "4d17bed73f2032142b03a3", -+ "72492bafc7adaedde393c7", -+ "161741a6fabf2be3cb74a", -+ "3253a13971cf24cc306f4e", -+ "3566ae3cffa53b48308a5c", -+ "772853e9593804a23d0c9f", -+ "58d985a1111ffbdece42a", -+ "6b463071583d5d51119c18", -+ "58ab9a24dbad2ee2c0942", -+ "7b625b197eb76a08b19ecf", -+ "153d46a7ad0d4c7b81a83d", -+ "560bc3397e1eecda48e8d6", -+ "3e27d166777ab6af4a4b75", -+ "10a7cb0c646bfbfaf6b1db", -+ "abe7e5169767e92b8517c", -+ "46bc67034da17d5b7c72cf", -+ "16c1a9b3bcba979d2fb250", -+ "20573b178651610a410e89", -+ "46c829e7e1980bc26c13f9", -+ "3428c448a20f463714e16e", -+ "7be85a588e4f01b973f9a4", -+ "382238b03129ae3a8cb2e2", -+ "8b93e9e7ea54df6ea61e0", -+ "dde95ff1403621e1e9c39", -+ "b3a488e23273b8e74aa2e", -+ "3af2323baa99fc6ef534e0", -+ "6003c83a8ae5ae42a0956a", -+ "2ac52045b3b592dfbeeaaa", -+ "7f29a05b16052f06eff50a", -+ "1eae59f579b122f18b84d1", -+ "28593d93a1a2159e16cc13", -+ "460f5f98b19a4d353358fb", -+ "56efa25eac0d5f675af6b6", -+ "73e9dbd2873c27040a215d", -+ "5ca40898d5d325e557e04e", -+ "405224a222d42397ca18d2", -+ "a69b0e544c08336c9606b", -+ "1dfe68dd4d69d0d5368782", -+ "18bd8096de042467441c8c", -+ "55f3bd5a345801aa67f91c", -+ "5430c091f416778afc3f3e", -+ "4e33cc0d26d44c2394c8d2", -+ "2ac1793993d045ec4ea0ab", -+ "a0ac3885d2cb22aeb977f", -+ "1073f10b92dd8a202017b2", -+ "23e36a6e12831353ac1afd", -+ "71f02d980dd943488cbefc", -+ "7e558ced95c8a49312174c", -+ "21b1555bb331b89f928e6d", -+ "75ea3318a1054593eca8e6", -+ "88658ceb2447416239af", -+ "7dca64fefd065e0893d874", -+ "5f427b13d8351db71dc75e", -+ "475c02da59260b083fa105", -+ "5ee825c795f457b727b9e8", -+ "124aa58a7e2a882689ba12", -+ "797bc83e9789b064b51c92", -+ "2a8b319bb90a064d3cc523", -+ "5570385cc742f16a21edc9", -+ "122e1cf4ba920fb923d0e1", -+ "7fc9fec9506aa1a0661240", -+ "3fc3680285719ed4f7e7fe", -+ "7175ce67c0c74c440327c2", -+ "503bee64726b7b32815f44", -+ "5c4dc3dd9138eb7169302d", -+ "3f0eb0b9bdbbe37f40dc5f", -+ "5aa25b718982092494e872", -+ "20b11d38582bb81886466a", -+ "36baace22f2d7a2014dd1e", -+ "27216bcb23514df00030b1", -+ "3146d29fae3f74014572cf", -+ "3988842f76572373c3459b", -+ "6aacfa3617f47dce14015a", -+ "581f2a492a4fe468c3971b", -+ "4cc8bba01b6788222eb375", -+ "5c00c9ce80be32396ca075", -+ "28670ba592cd5a2625df3d", -+ "14e47840962745e9f2bba8", -+ "7f26a6c99362d1126b6773", -+ "6eb090e9b1df79f4d2226", -+ "7f035a794c44a6a57abf00", -+ "1740e5e9a57a4e80eed5c8", -+ "46b1961304e45b428bd48", -+ "49ce8855b52dfbb878b2d3", -+ "313ef612f2fd65f39c2e3e", -+ "7332b41a9fe9dfbe59f71f", -+ "41858e467a21a3938d60aa", -+ "6234ffe0f938a25ce0f5a8", -+ "1105d3c71c59dedcb33f", -+ "7a75b868e9fb50140bd203", -+ "68ae7d3832d31bce57eaf3", -+ "600de685f1a4c2f4a236d9", -+ "3684bf3ee3a2b8635ca0e1", -+ "2bb74459adcd7029c9c35f", -+ "b7347a4820635a5852b61", -+ "249f5358017ada6567b747", -+ "17445a9a60b0dfca9df354", -+ "695d060b1aceccfdfa96c2", -+ "a209dce8856336ebd97f2", -+ "72059eace3671c76d67005", -+ "6dafdbef06e817ec42991d", -+ "47a38df2df7f516ac35f8d", -+ "6a3afde1cc784aefb925c8", -+ "112bfdedc3401ff20ffcf6", -+ "3161bea37fcc040c6f6494", -+ "6152b40d63a55e1ef6e750", -+ "41127c781a5dd07b6ea357", -+ "1df80784a603cde2e8573c", -+ "2ad8c773fcdf92009db9b6", -+ "5cd8f904c6a0e1c85597c4", -+ "21532161ecdbdaac15b68a", -+ "5a80f23e82161bfd2caa8a", -+ "59377c70bed9cccb346cff", -+ "212d386743b2c2069ec4b7", -+ "26fb73843bff3e4d17aa10", -+ "1f15e66f6c5b160801ec4b", -+ "4024c6847ce50a93fefd10", -+ "38419b7c213432cd42f4bd", -+ "ea9789ae096da5bedc410", -+ "23a7a59b35972768b71627", -+ "60a177acbb4aeba955e6a6", -+ "22d9fd1638450186756413", -+ "5a49a0430b2145ead2e9a5", -+ "7fb445fb34908201d41b44", -+ "7b1e254e6050240b36eede", -+ "44867f919f39bbc1ac8a53", -+ "57c6f0c9d94e02524b4029", -+ "553a48facee35f17214327", -+ "5e3402a24a307a945167f7", -+ "4ecbf2559411992397d1ba", -+ "3adf2b6aaf40f5dcdffdf2", -+ "156e3560db5a642c108333", -+ "26f3f960b2ba725c83b706", -+ "3135a042ca5b8873367081", -+ "5778dc2f1465daeafbf88f", -+ "142aa17e315b2096d3470c", -+ "17b1690a9c9f4fba9154e2", -+ "6f3d0d822d1a27088df8e4", -+ "749ebfb4005c94ed288c4", -+ "7f64ec3ee1d6fd7b5f9352", -+ "3ea29dc49c06d64c187862", -+ "322d1e939066766f918e43", -+ "d1c5eeefb8bb620c573fa", -+ "7d83ba89b9f89b55497937", -+ "2f635c018151dfffc38ed7", -+ "6b77b6d06b93487730de2b", -+ "202d04fcffa7e3a0ae0585", -+ "7351e32ddd53c7465f65e8", -+ "1d5b0385650d2d81754f72", -+ "5227913634dbd4b19ffe95", -+ "1eacd91eb3938b38f0210f", -+ "3ab4982748b8f986192588", -+ "4a648c611ef0b3b0e318e0", -+ "18eb41f414dd28e8ff3a1b", -+ "28e33efab89fb4f64d6498", -+ "1b67e56d8c8f6656eac86d", -+ "27476789fbe89ef5fe00c0", -+ "21e39ab39cd96423900120", -+ "4818fb8f958698b6e9c9d9", -+ "95d86ded4a7b26a1ad331", -+ "1b2e283bc4ff40366c744f", -+ "2db6e61499c9393946b57f", -+ "3e8986648fb4053520276a", -+ "5eec1e56c0a2d0e34dfc8a", -+ "389d9fa841750626db108d", -+ "4e0326164785519414d07e", -+ "530f4c391aa2b0938eb272", -+ "50c915d40aeb9e4ec78789", -+ "57bf13241507b812b9a904", -+ "3245bbf080c6731fee74dc", -+ "11081f4b8fb8f0a9abf772", -+ "7a75be28b1e93e4e0c9342", -+ "174fdf0bcfc8d0f4e77e83", -+ "46986d0da7a2c17dd1dc22", -+ "68e88d3bc4e8d390ae4b13", -+ "4a2580e03d81912089d88d", -+ "201e678f30ea96fd17615f", -+ "3566f7f67e026f0278dfd5", -+ "30485371efc19b50bbafe6", -+ "4dedb1ba2a6a4abde67337", -+ "33440d7d3472a4b6e2f627", -+ "591749051e47ee7b49cf82", -+ "3fe61d12a0b09791925ccd", -+ "7f5140ee63b60e0a33058a", -+ "5eb217461cfa46d5694397", -+ "6aaafc0107575bd9b70723", -+ "3305f9d7ac9bc35ded571d", -+ "5ef7fbdbf498c8684625f6", -+ "3b66491ccee4801a4e3673", -+ "76fbf6732402bc76e061d1", -+ "28a37e042abf70a7cb137d", -+ "534c1a3b25194e8cd66e6c", -+ "3eedab106a435ef32b9e48", -+ "6bd995ef31bcfd22d52d9f", -+ "6b5da25417070642e0ba4c", -+ "3d40b56764f7765513d13", -+ "44bd0de2094b8b3759356", -+ "312518f9c1ce1e690c003d", -+ "f920b02af1e3bd673512e", -+ "4ed1311eae64f9e834ee7b", -+ "4d075c933e4b93da3a33d9", -+ "133606f2fed41ffd77b999", -+ "16b6721ea95f55ef631d25", -+ "140aa7412f6488f5404826", -+ "3ae99fca89d15abe091160", -+ "543222604f067afa3e7558", -+ "2948eda7d7c508918c3056", -+ "4cb6253df884020966d27b", -+ "46bafe88322c67f3b90507", -+ "31416a7f09913059dc251d", -+ "52d3cdd253b64a03c5885b", -+ "1c5d10301fcf4a14c82adb", -+ "5cd8f782abb8b60cbf36f8", -+ "42b636bc4126dddf74cb00", -+ "5afe15c1524eda9627e183", -+ "783d012e8b928ea14eaad8", -+ "45242101d43b276b34115c", -+ "28b06d6b1f993702509e4a", -+ "16ad879cfcd3e458301dc9", -+ "78873bb7282961108e63a", -+ "1c5b7d2b84cbc7b29bf542", -+ "48edf77c0fc298b0491c2a", -+ "398764fa3e177502af4d3b", -+ "1d1aa15ce7c8c15f051ba9", -+ "401a3ed45557939fa7eea", -+ "13f9a309c929439a91df6c", -+ "3aef6b8ad8d4f116a27e4a", -+ "64b1dd5abc6713a8f53d0c", -+ "73f4373aa0c46a1ae61409", -+ "1ebddbaa72ad1a2b1cdc49", -+ "2cd33d1f501e268643d591", -+ "11b77783f411c457cf909e", -+ "d92cf9efd7d12c62f0dfe", -+ "2c56fdcda56f78dcda9b60", -+ "118d29d91686683483dea8", -+ "7e05b7c7d54cfa1fc7b525", -+ "42c5d2d1082dd2375a4ef3", -+ "26554ee3e9bedb1a3a09fd", -+ "ad64cff4b4763a7fda09f", -+ "5f9563c7ca70d6e5061bfa", -+ "38d987fd4b450ee5a69286", -+ "62af499c078af038905758", -+ "3eecfda3b4d92af2b7e5ae", -+ "5e195ccf98c9a4e1967fe1", -+ "61c0e0ff11a378274b395c", -+ "486fd3ea0158f33daf767d", -+ "4cfaabac7104cbad2ed728", -+ "714ed5cb0027168be15142", -+ "ac5bf0492a63aa0bf597", -+ "53339d5a01f3d2e9bc8755", -+ "457d09be8a2a4c351b63ae", -+ "1892726d56d4f8f92dde20", -+ "236e08f8411de38e44c3cd", -+ "5549ebaa872068aae68ac5", -+ "11df54a696817409ff1164", -+ "7f695021b246db24a5113a", -+ "5267f1f68134d546ec646f", -+ "4ad5e4985caa0c7ee63b9f", -+ "3c5262912ab7e82ffd49c", -+ "7f9a1f8e557617163d5e82", -+ "31b2ef6b5163160bdce290", -+ "127dbd62073fb0c17b4217", -+ "5fe5a0fcee7c061cf49e8d", -+ "34ce2df12c5e0970f682d1", -+ "4f6148f444b84dfe82ecb2", -+ "740e3fa0e998e741eb97cb", -+ "5623f1c8e0d5c15938b2a1", -+ "79ef58660a06bbc22f0cce", -+ "35f48b300d21989b05560", -+ "4efe7cc856d9eef4fda470", -+ "43f99aac41b05d58c624b4", -+ "66b03ec137e6361ddf6317", -+ "4382f99dff4951a775fb77", -+ "974b1ea8fc3d4665ea11a", -+ "1998c4f90bb8b5465b7b1e", -+ "a49f38b3c0b7ca1fc5c10", -+ "57d421e876be8c87768c1a", -+ "14c79375686a30f4c21ea1", -+ "667b77d58f7f6b14e19bc3", -+ "17b5a764867bc2f176278", -+ "cf2bf44fe6c433cc00c9", -+ "61619bfea73d2a10c7a7e9", -+ "3908eb827c8209b96bc643", -+ "e859d26ac6c854731c10d", -+ "562d8222a0b94f5af3137c", -+ "780a2a5411b159d83dcb95", -+ "645cf2dd2735f1cbf53f1a", -+ "6476d594392ef9fc9a3df1", -+ "7df75741d3ccafb28da8e", -+ "526d1eb936d1a3dec6eeb3", -+ "1a3337bb0bc288bf44447e", -+ "13413811d8a8e6bc2e6cf8", -+ "54728697bad28cd0bcc9f", -+ "2e178e1cc4f997792ce1aa", -+ "f339d2f5ca33347ae8d13", -+ "24dc2302a4b77b85525bd", -+ "4779c6f70cb71f00e32d17", -+ "20866732367b425f7e5ad1", -+ "26c45bee1cb7e300fef593", -+ "4f3fe475424626758ebe24", -+ "3979e2b3d54a21e7e8c1cf", -+ "50bb1918112bad3e57d523", -+ "4e1bc7c2f29a2f520bcf7d", -+ "3b4ae8aa403abef29b052b", -+ "54765bab6ab2b394d9dee1", -+ "5e7e83070de3b07a4bc87", -+ "6131db76263e902f303f6e", -+ "2fb62f0a2e9435830411", -+ "57b341376c8eeb5e957326", -+ "7d59312cf551555c728152", -+ "3e13e95a38da382cdac574", -+ "53e3092b891267552e8471", -+ "ea04fd9db78a21c39b6a5", -+ "42cda11218a2f5a8d7bd1f", -+ "3aaf5736ed929c1ed0ab93", -+ "6e93c69a7627e1f9832a61", -+ "37526cf6c350fc29ecf559", -+ "5640578c9a2f674c097c8a", -+ "41ebedf12db1451af99b12", -+ "66db9685c97e1039f97191", -+ "61e21b9a255226ab8a9c03", -+ "4d36c683652009a273c69c", -+ "3e00e41664141664f70d8e", -+ "734cae170e5d7d8758c509", -+ "26c603e605263eb37ee858", -+ "1cb50b0700a11348f864c6", -+ "6b4ed91c3f4f0b25252206", -+ "46436019c4b35e76ea4182", -+ "44885049137a26d9ff4438", -+ "1cf7470aa8bed908f93c32", -+ "56d7ace10d6e046f35bc1e", -+ "2bc7683658e815b0850ae", -+ "2bd0c39ecff8d002f3a3f7", -+ "2848634cb8eba43423c432", -+ "177aa9fd51aa698c4f5d25", -+ "809a8bacccc204134381c", -+ "60483a9742002ed4918cd1", -+ "7544304d1b3c2594fef689", -+ "49ddb3e956e6fd8d65e1ed", -+ "3820d1fc1eab75e925dc43", -+ "7093b250c7b04c2c6d567c", -+ "16870479234b3337ddc8c9", -+ "18f39bb607de6b1ad183e4", -+ "a5d62acbaf68c52001a4b", -+ "65f33a2872e25c8a682f06", -+ "4e66ba0bc1058a3931042b", -+ "357eab1d6b7f6618503b3c", -+ "5cac3c06df31850ad70694", -+ "7e68cfb951ae556b15fa1", -+ "7de8764ca6a43c99d6a50f", -+ "329c1979af2fa92b25335f", -+ "113149ff5647e02c5d8e8c", -+ "5fde1fcd656f65c682e01e", -+ "3a2bc2968347afc3827c67", -+ "b7602abf832a9540b03b8", -+ "28434971e0ad86e87340b6", -+ "e24946eda2a54a4c98b6e", -+ "318d2300370d914ed1483a", -+ "776ff8d5492c149f7acf17", -+ "50e46147373113c54d73c2", -+ "59652c3042e742dab07904", -+ "1e74e23fb34c50dc055d0", -+ "3c31433d0db703e03c294d", -+ "64666abc6a9a2f6a1c7575", -+ "191da9b869e973d2fdfea7", -+ "6c362e17e2173449bde86a", -+ "1a8ed7cad7bcfca4620120", -+ "273beeddd87cbae01c207f", -+ "568f3917922fe83ad3e225", -+ "44e6ec408ba05ad98e759", -+ "32f5fb93813b0abef00c9a", -+ "490db50fd1ace7e8ec15ae", -+ "7630fa097aa2bf97cef6b9", -+ "6ef800332004d6cda26cdc", -+ "551ec7c1ae7ed078f940c0", -+ "455927f484bb8820a2ccf7", -+ "7933956672bf2e4535ee34", -+ "2a7311c640e7cf0ecc141", -+ "7242e44696c19a3a1910b7", -+ "3c7a2b6b58424eab86f3b4", -+ "359b331d03b9cc2451c1f8", -+ "4169ab1c6bf3f0abec6c34", -+ "6df855d5b158377d521892", -+ "3c4374002a4b05edbee285", -+ "209910d1159692421526c", -+ "31dfcfe645b46b329ee2a1", -+ "1e6874a8b307092ad6e72b", -+ "6b7e91fb5948662e3961e3", -+ "23966403e567312c7a8379", -+ "2f62056d547ebf7995c6e6", -+ "5fda42ececb40f359e4f0b", -+ "18a6b71998f6f84fd5d814", -+ "76f42929010d1ca7619b42", -+ "50e22c6cf5d6b70def807b", -+ "1cc96ab6764758e9cff09d", -+ "59aa03a25735023ef97395", -+ "741d91860d83d000328e76", -+ "a9753c820825d73c04548", -+ "4ed7cbd3e32dee7a40c626", -+ "6ce70c288bc2711b1b024f", -+ "59efda7d6a6d8e6aaaba46", -+ "6ee757629a9b68ac7e690f", -+ "328bf9a8c78ea2ca3388be", -+ "59bb325b9748e94acb6630", -+ "55137101093be9fb51857e", -+ "9c6c4ea9b05d327c6b7f3", -+ "77815256a969cddb479be9", -+ "3b0cb59bddc94e18233703", -+ "7a123babe2e7abafbaf8e7", -+ "35d6d7bb2855d9adfbf650", -+ "6ad95985d0ab8e8d823145", -+ "2133efe27b28c873f101f", -+ "607776583fcde0ad8e4c87", -+ "e2d9cdfcde324e23eda21", -+ "747c7a13b706fb28e46c47", -+ "35d310b1c9f92e46c5dccd", -+ "7248daa035ed0c83c2d007", -+ "3c8b578aed4234d875a143", -+ "766ac65aedf40f90341249", -+ "3087f959a9893769198248", -+ "49a34db8369186ccd3e18b", -+ "69b04bfb64dc28afc90f3", -+ "3732911ea3b78b2cc54de2", -+ "7dde8d7ccd2cebd1d4b943", -+ "66727c69de089e222307ae", -+ "5a67c62d60522486e9cab9", -+ "6acdbbcb1d87bb33b845b0", -+ "1f1cae187cb4e7e2d75ff5", -+ "1cc8bac063e7f4722cc83d", -+ "1f75d643fbc4ab52296f51", -+ "7b34f38b9d16f0d70ddae4", -+ "74a0eb9dfa780e171aa5bc", -+ "4366b19aa12542a30c1749", -+ "4a1404c02a58e6862d11f5", -+ "55e542cd768eaa4ab7eb43", -+ "182ed4a29e8be479e40c89", -+ "5eb96063b604b2d052b457", -+ "d755ece5c8fed1e833d4b", -+ "10f7a570b959918609b06f", -+ "656a55d45a93fac53881ab", -+ "60e3811062f0661e25f626", -+ "24a843ed6770d822f92be9", -+ "216b9b04319fd8da8a6d3b", -+ "3e41b8ea3309221756df7b", -+ "5a00aa930e50101d3ad458", -+ "260985f3992a168bc7fb3b", -+ "5c3df551863d0055925c95", -+ "28b06a5b8a2319d5d78e37", -+ "3567cd9077f5bb1d3115a3", -+ "460858d1e253129bf64e5b", -+ "485bb888b6979f8f201fb8", -+ "7aeadbfb750a598afce6ac", -+ "3cfed079405fd41004c118", -+ "3dac1d8f9e9cf46cc42204", -+ "2df246fe147cf6a7d9ed5f", -+ "1a908fcb6be810a9e1e92a", -+ "6c33a3a058504d48c17efb", -+ "66e9cba0e526f30b7b9b8f", -+ "757f2101d664083b2fe8c9", -+ "18c5643eccf2173f575420", -+ "7dd9082b6f5562b8d6ba91", -+ "389d1e8a26db35e20882fb", -+ "65172c59adde7fa1aa62e", -+ "1a7c7fe62effcf2d1a2cb5", -+ "392d9ae31bf22e0236e198", -+ "3d886ee05f1bcf69fa4f70", -+ "2c8f1060dc661c38044a5b", -+ "16eeff7e87d3caf8e58a92", -+ "741dd990ea20591fd9b5ff", -+ "39bbee3cab035e7fc68b3", -+ "4996f8a3f7c2c5fac02813", -+ "36ded179138f0e4cdf1ee7", -+ "f9d7db7493258ceea1a37", -+ "2a6c238cf5c57a2939882f", -+ "35dbe95730bed0669969ad", -+ "290fe0ae5a419909be4e2b", -+ "63839ba9cca448dd7fecff", -+ "30a8e1972ee45f3e0613d5", -+ "509ea21b16907067d06b82", -+ "7633f58adb014bb5585678", -+ "6c8fa526a6bdbce9f7b832", -+ "4a78cbf6bef93b38948e09", -+ "37c7b0fc4e875134c29246", -+ "4c996629390ea0954eeb1f", -+ "222dacddb6e77241cadac8", -+ "2df2bed0dd9ba405c8c5ce", -+ "3a7c703f2642b17eba0c69", -+ "22e8d9bc34a96264dd4caa", -+ "4bb8f4e111d078e3c54590", -+ "69efc15f2bab10979940b4", -+ "4e1b51392bd1ad38a51d00", -+ "5e82dce0d15b40d73e81bd", -+ "6a410e486ad693817f9d31", -+ "5dab9e18ce0b8340db40a2", -+ "2df0f496cddcc699504250", -+ "124c113e25b1a8153a830d", -+ "28d70ec040ec983aded5c7", -+ "7a93c6e177d746f5eb503", -+ "14c9d693e42997dbc96df3", -+ "50755ca653aac70b84b12a", -+ "5f72010436c71470f190d9", -+ "1af9124bffaade4351e990", -+ "5fdc8856cd703470a1e5a4", -+ "10b57d68a8cfe14ef3ca7c", -+ "245003f901ae0a356365b5", -+ "63dbff9398c6d2cafd1418", -+ "75c2ce5e2535ac7878196c", -+ "15c08724b1daf7a590d087", -+ "3dc7ec06146d405216b267", -+ "1fab75ef67bec61a68a277", -+ "711d3de6506cffb89d82c0", -+ "15b79d2a607e674b1df02c", -+ "928d2a95f60dac2e280f3", -+ "2db6d4b5b7a928883df97f", -+ "522bb592e89a78b316244d", -+ "cfbfcb607ba616c016fef", -+ "13d6f0fac0c0b9cd891715", -+ "12a8a0e9fe6ba5c3656149", -+ "4553e500c491eb2ced6e1a", -+ "368d20177281b04fd8018f", -+ "2579cde0e8d37e04167a12", -+ "2f4c8ebd42ef359c5ac79b", -+ "7afeb7314079bb05948a57", -+ "4dde9b7ed5a96934e4dd51", -+ "3cfc7a65b66e9f8c6f8cbd", -+ "7453e07405f19cfba93c17", -+ "18488f368798b8734164ca", -+ "532d2ff2bd9d0ca8b344ee", -+ "18704740809cbd3a91bcc8", -+ "1a91a4ef4625f7ae911f1d", -+ "26240f3e8816b599bb01c6", -+ "60749c3a015660029dacb9", -+ "321405882a2a0c05f7907b", -+ "6b85f2803d97e818e2e527", -+ "40d9ddb7d82d86fe4dc6d7", -+ "5bc9b4c686de112404ccc3", -+ "49e219e4b19fa82e3cdd8d", -+ "6b4aa7c57cecc522b32c99", -+ "1152ee1f6c91b44b1faa20", -+ "4f1b7b04b31a6d85748c8e", -+ "28eaec99940a1b1f563841", -+ "341ee0e329f6ab9da76c4a", -+ "8a4219421d2f55bef801a", -+ "25e4a83dfc2f633765d96b", -+ "22a17bb1e02873c944cbe3", -+ "4c4fa3875e78671bc1d2bc", -+ "79db0961906e2d46b0b349", -+ "68d1c5df4d9653be9c8e7b", -+ "7e0f7a6620c31d72d9d568", -+ "42af59edeafb6c79b9d208", -+ "3d17d279ec6a81f53cd4f8", -+ "2f1ba6fd01e5cf713f7991", -+ "5c246c8d9baad4092bd7a9", -+ "1c6a5fca595a1ff62b0a7b", -+ "5c6ce5b29bafc437eda5ce", -+ "709f8b4e1e81f78ecdd5bb", -+ "619fb115b590487fbaece5", -+ "5b917d89029b0850efbfd7", -+ "2103ca88adecbfdd3370", -+ "4e0f2086acba831702db59", -+ "cebc8496358956c6ed352", -+ "4aa62ab8f33741774c11af", -+ "55925c1c09bda33b3d0e7c", -+ "47b5376a6bf9ae1b5420d0", -+ "5f305f39404231a1ce6591", -+ "d0d6f30615b8f231bece9", -+ "851fa3652b44e57d9190b", -+ "4c099f907df9db8a25350c", -+ "48cdee08fb7cd0c828eec2", -+ "7399c1866bdfc2ee9d0ba4", -+ "7da4d79cdf3d83f0763c79", -+ "5de657154513d33b2dbb32", -+ "4057d3883ee10c31d0c5f9", -+ "139a5be9fe5d74b7b324f6", -+ "4678975ad8ef4ef63ed234", -+ "3a1984f88834905315728d", -+ "5e53c14166e301e45a1c84", -+ "1246f9f5df870b21bcb1e6", -+ "6095ebe0914ab346aaab52", -+ "173ef6d2228315e7fc8577", -+ "71a2dd2f4561ce6b25cc84", -+ "17f8a55fef5d58503cdf89", -+ "2885d88c14361dbedb4fb1", -+ "69cb489051468dc8b7a10d", -+ "6552488fb7e68b138c5691", -+ "3d5e0686efab87e5e7c266", -+ "5adfc7a0a78f6657a5960", -+ "65773487e5415b58fb205a", -+ "1aa4bb2c56ddce8ebceb39", -+ "1ae4174a64ea29d65c88b7", -+ "2af1b36e871a2152d87ea3", -+ "7118c95246463e79fab7c6", -+ "7f31009d8b384ea51f9235", -+ "5eb2b60c1d97e4dcdb09d3", -+ "5ccfa76193ddbc64186a30", -+ "1e31c413e16722caeb814", -+ "dee72e6d522c55b461f4b", -+ "18250945b23b28bdd1208a", -+ "72e90ac5d748fbd2d7aadd", -+ "10ad00e38092458e73fe4f", -+ "1144f2116d6e426f3addec", -+ "720179be8f54eb5c778be", -+ "1fe4c7d7da3eaeaae25e65", -+ "51a001a64a22c7bc0db3ea", -+ "7d40cdfed339cab397652f", -+ "1960ca77285b35812422e2", -+ "421de31b9083741c4d4c48", -+ "3cd3f5ea5623ce969c863a", -+ "4b6b8f4e6118573075d4ce", -+ "43ac29ece073be2a30ce86", -+ "217c2392122f9868740137", -+ "2b3dba5edc89810815d1ce", -+ "7a9c1df7aec04dc00e3584", -+ "74aed20fd8f19001dab562", -+ "74f8ea2aa01f3e122e9ec6", -+ "7f3f1310b0770a6a8ab4e6", -+ "7377f9449fdfa779330064", -+ "4d3d6fd7781e8ff3322226", -+ "3629587577ea6cd990a3d3", -+ "29ca62a9234f915c5c9715", -+ "5286bfcb1951cdb460fbe5", -+ "1b0dfe5bf791bf4d645e64", -+ "150cbeb75257f8eed7903", -+ "5ebda7b44a30093e22fee3", -+ "6af9f591969edf6d33a899", -+ "321ccac2ccfd73a0b28c6d", -+ "fa6bb9b4b92165346e0ff", -+ "603f9b3bc6733094104e23", -+ "2e30617b0abeb387001867", -+ "e419f0eced24d03400fbc", -+ "2057d9029cad07c3d344a3", -+ "1d4515e4768ff5c6b4178f", -+ "7b5d99de82bacb33af7ee8", -+ "43f53558dbb8a25ad757e", -+ "4265efdcec74f163498291", -+ "477273c36a749543489547", -+ "767f863c9bfc5fd6540f44", -+ "d8e9fae4ec5d3e7913712", -+ "2ea5fa6c2e19e6ee7add96", -+ "55fca6cb45a0501d1c50ba", -+ "4e94399e1765146189df5b", -+ "5accf03c1a20af1120832d", -+ "137f8e05276cc8f9180095", -+ "499667b1e22348ac584789", -+ "7b87e87e1438c6126ab1cc", -+ "46ea38e0c4bb849b39baee", -+ "d922a909e3b3afea5fe08", -+ "4700bc9de4804ec44122f", -+ "54018c8917549d050c00a8", -+ "5f8307f0589178f70f7238", -+ "45b5b538c44c73f3bf515f", -+ "7ad19421f012d132850842", -+ "7adc118469443d4f7084b2", -+ "2ae496e8d9399061460619", -+ "49e01d719bf13fd52369ee", -+ "e1e55a565534c74a109fc", -+ "72bd80f062eb130b42b044", -+ "1d616376b444140f9acd68", -+ "48082cdc2a40ccd11ae434", -+ "32a426cd7460f9e5c5e7", -+ "bb247081da09643c00d36", -+ "34f2e009d684c876c246fb", -+ "3e2cbdf24bd5900348312", -+ "507a6d1fd108a63234b38f", -+ "3253e31b47819fbcec75b4", -+ "3ae16fb3fb77d48c6adcc3", -+ "244d1131736a5aea351d17", -+ "682b3c7ed60ad7c985a3a", -+ "22d6cba0f681e23fc64382", -+ "14da7875e13efd461f7c10", -+ "1ef2f8aa8266e26254215a", -+ "22cd6c35ab2195c56794f9", -+ "1d1b1bb20ae40ee8d35505", -+ "66ba97928f262067fec230", -+ "53e99cd5ced120123b808f", -+ "7e698a24ee9aa726fc4b0b", -+ "1df3eb49ffac499fc5f3b6", -+ "465d9407cc9bc6456e974d", -+ "48938572f05f540b474485", -+ "ddf6be61ce9c04533277", -+ "15131878551adae4b04c53", -+ "14c7f40a28e01adc5ae1b4", -+ "5cf912fba9a563060d7b3f", -+ "1c85ed9416af845bb8e82", -+ "1851d531ca021ad6f2b572", -+ "4ad2dfbccfebf4c881dcf6", -+ "16d83b4ed79a537102c236", -+ "19e1cce82f85eff6f6b24", -+ "589758587c26455b22331e", -+ "59fdecdacfa91d60fd391e", -+ "1eac63084c7797618dd9f7", -+ "426ece55a7fd1d858414a0", -+ "2078bac214b712936de507", -+ "3e748cccf5c4b2e587b8b2", -+ "232c5e33740871b389c8ba", -+ "7b4210ea990dbb2b80bb4", -+ "53b453f5f30f900af808e3", -+ "49f7df71bb684bf5a54c61", -+ "1174d8cdaeecfc5b7908d0", -+ "6106124e06a73207e84629", -+ "34242d89a6cc1d4e30fa9e", -+ "74d978e8d6a9ce6def9aa3", -+ "308787b80145ee403c389d", -+ "36121cc69943c0f23f8a85", -+ "6d5d0573b2f9596b50b73b", -+ "5eb9037bc76a6930985737", -+ "2c9401cd53725f84e2c421", -+ "8c59c1948361c413eed8f", -+ "1439532a6d3fdff49361fa", -+ "42d71e3ed0639f1b07231a", -+ "29785bd232aa4bcde009aa", -+ "494c96ddeebc9c314fa5db", -+ "2e1d98165a5897b1482cbe", -+ "7a4b513ca25dc5d887768d", -+ "5197b486ae5dad9284702a", -+ "1d4d18f2bee14ee417596c", -+ "1b8c24041b5c09c2ff1c0f", -+ "19e87845fee8ee9d86794a", -+ "dcb3217133998c35879b7", -+ "61c60fa253a8977e213d6c", -+ "3df3e3ff8b5241f9f120b6", -+ "7e880bc1729d1783a14627", -+ "7ef05035c2a08e050870e7", -+ "3c234bbaf5da9465f9498e", -+ "39fc8d30c95dd0494e9be3", -+ "75b29426909e9c8294f365", -+ "68ab0ae55863c4f8044101", -+ "1a01c5dd382ca52c0f8a1a", -+ "7eaf3d6220ab7c049341fb", -+ "e966e5d5e80ac9dc377a2", -+ "38aece2fe0c1923c569603", -+ "296401a6101dec9b48a81a", -+ "a5385b7f7d2a505f37187", -+ "1c0a01fb60b92af636be29", -+ "546f06ab10360a76005c9e", -+ "463e980411d809a1713383", -+ "6247c20f5e97453bb71b09", -+ "7ed8ee73ca5507f25bd5aa", -+ "5f9fe5fab5062ae9d40550", -+ "d7315bcace04536b59c5c", -+ "700ac125ecd365c309339c", -+ "792ab4b2a318b2229df59", -+ "6e8a28f3d3f87aa2548dbc", -+ "53034f778656513538ce93", -+ "71310c65e10b4b2e1f3924", -+ "fca82540d3cb37cfe38de", -+ "324b0e59fd313b7b066991", -+ "ca5fc0de7c8f0742fa11a", -+ "436134e757c46fe077e8fd", -+ "3382f247e6cbcf48a8be0c", -+ "5714f7d7bb3f12d88adae1", -+ "75c3040748861ea4157368", -+ "1db2b63fb5b72bd2913b9b", -+ "5de44a501f899626f11ecb", -+ "4a728ba1f43b41e3c8ba7b", -+ "631d5fa433132c920e949d", -+ "49dd9e128368a6e8f31565", -+ "5f091c9040f8e8b4af8c6a", -+ "6dbec10ac45803905232cc", -+ "422c99318e0e012bdf3cdb", -+ "7499dfe49d22092ecbaacd", -+ "4e9b8b836aefbcc76074a3", -+ "23591be47ead61c7626094", -+ "47cb5e48534f0fa269ac37", -+ "45d0bbd0c4c565d517f4d9", -+ "58f251e3a335055f8d1702", -+ "e16e90086dfb42533696c", -+ "32bc07a00fc1c32e790cff", -+ "55d4eceed6862d8b7edf73", -+ "3bd14b5c954fd788df3e2f", -+ "32267a0d010a3ac60d956b", -+ "2dd9e647cd7caac396218d", -+ "786bd6b0d956c71e3d0c41", -+ "5a2e3e7ac883c32720fb5f", -+ "41824effd56ee95a25ffcf", -+ "df5585842155fda65c5ad", -+ "f0daaf67c2422477284d4", -+ "285121b3579e1afaecea17", -+ "2d0786ef10819221e8e925", -+ "638a87cbb628cc2744b5a", -+ "2e795b59317cae4c039946", -+ "6df756715e22975feac139", -+ "4299b7c55998b524a2963e", -+ "d73559f9e34900d6994e0", -+ "4356f96a535f02cd557790", -+ "671133a56bfab71842e1aa", -+ "73475afc8917dfb47ca158", -+ "8cecd81b395199379b860", -+ "6908cd3a0537e6d9de224b", -+ "6c4e919619ba3e8fcc083f", -+ "765220bfddbe009c12884", -+ "696a995b7f1bd2337f9c55", -+ "7a35b4347e2b2fcfef4e8a", -+ "7715808f58e52b93fbd9f4", -+ "35984ab233bfbbdc2149d0", -+ "49f6551bb5a630f7f3a91", -+ "260202888a368af1bf27f0", -+ "28c70cf1a34bf4b12fc1a1", -+ "74a3895c1173d1100e060", -+ "500de5789e46431a14b08d", -+ "e50ab5db695f894b26597", -+ "6e0d3cb0378f9f523dd7ca", -+ "3b890cc2ea1882c16138ef", -+ "623f56668cc8a093bdba7e", -+ "2311c97b29ff503887b251", -+ "5f019291ccdeabcd687ce5", -+ "6467af1a0f07013b2e9849", -+ "14a9e816ead24aab2e6645", -+ "6bbcfc26c4e8fa7b836095", -+ "775ff949792463791cf8ab", -+ "62658893411360a21b6bfa", -+ "2fc0729bbc7485664f21f9", -+ "784f7b46f80b03fd06242c", -+ "7215cad82f761314bbdd1e", -+ "475c6525a253fe4a455211", -+ "3301553132b8af815a8ed7", -+ "40066cef89d0c82982356c", -+ "36d97c131b997ecd7866ef", -+ "583e484be506b8efea96b4", -+ "4656a2b830782828314373", -+ "374bc74be1e4381a79910f", -+ "4f459e6fecc9cadb8e977", -+ "2a843c02b5e59799422e65", -+ "3910da787142c54f4f9b2f", -+ "ffbb4d4d7cd961d36be9b", -+ "38dd92596a9fd54920876d", -+ "6bd057cf4845772f81f71e", -+ "4fe62d365b58ffaa0d2201", -+ "1429ba4cc3fbeac84cae7b", -+ "403c1a7f2d528ab5d343b9", -+ "2175a06a641d5e8ad33646", -+ "25d324d633986f4baae0fd", -+ "63d746c096cfab5f984c70", -+ "5bd335a49bc5a06867e5e1", -+ "375f02bea7dda994d93044", -+ "4f754c5d3b280b20bc95d0", -+ "3a997ef0ad242391b526f9", -+ "2c30e99c7b2606982311b7", -+ "4d562b2b0bde307c0edc87", -+ "b4aa58f86a462da2ed07", -+ "ddd508394009eefde3ac7", -+ "e73b5b515611f25e496d1", -+ "e4ce3641fd893553aeebb", -+ "32765eba5563b5336b4375", -+ "594ab65a623ca11a1d847f", -+ "7a6cf71a247a9aa2ad1f3d", -+ "509c14f0517edd55968bc1", -+ "3cb90317e0fd78744bd72b", -+ "45f39b8c67c74dfb911f44", -+ "476085adcac943f7253ad3", -+ "658a9098281c199cd165fd", -+ "cd47f8baa501aac7b0989", -+ "3de183e6b991f7b8085160", -+ "a5582fe7b241700d09fbc", -+ "68719eec758c692aaaddb3", -+ "7d5f8fcc1cf99dc3131c84", -+ "5a2d6c9f89fb24cf28d1b3", -+ "7e1946c78347049b735318", -+ "2db5ff229cb2d0a85b8393", -+ "6f9024d8cdd8d69ef10bf7", -+ "38102211c805f10960d5ba", -+ "55e838d685f75c7c6b5f20", -+ "339fe9b069fdcbe6f3e985", -+ "1a939b8af79d6b9d1e57e0", -+ "2b1a4dba7447b02833bcc5", -+ "6a5c41dd17f1f090be79f9", -+ "6ad4c1af807487676eed8c", -+ "6f33938b3b060336c57082", -+ "1e7a055357b6580f4a7b9", -+ "1d51d9201dd8c5066bb7d1", -+ "daa197fa1e9b3068f7333", -+ "364b7fe165d59b5d916e2f", -+ "4026f1042b0f5b1e940a78", -+ "3501255a6a3473cf6ac042", -+ "73a88b6c78ebe25a0f02da", -+ "645d789e2ca881eb3474c9", -+ "6f59efef27dbd92df6f652", -+ "32dc0a137f654afa8bd8fc", -+ "4e162f9f85bd081abd7380", -+ "48ef84f7c351ecdc951b2d", -+ "69150cde40be119caa92bb", -+ "3b409dc537f82b36a0b80a", -+ "748df460f8594e0bf1ab20", -+ "178fa57d907fddb0fe3cca", -+ "6747e95b215a546a339b7", -+ "55247bc5a72b8d3e89234b", -+ "683a5c6214b92efde4aafb", -+ "f36396be6cc745bba9473", -+ "77a73ba77b4ed622a17e87", -+ "2c250894e17e7f4b0dd", -+ "24af65fef90e2f99e03cae", -+ "3292c0c9fda6887e4ad161", -+ "304cc216ed2272d07c7f80", -+ "5488a723f6ba5cf9800543", -+ "47d8e4eb9811f9d409ea40", -+ "7e2be12d72782db9e725dd", -+ "247f391e5a3b234cf19ccc", -+ "29f1e17550354ceae49f99", -+ "4edfb060e1dacbd449d726", -+ "4a29c3e62c947a4a1e99b9", -+ "4755035ba4d9924118903c", -+ "3d946cf498fbed2d965f70", -+ "260d3af59b4f3d5c208bbf", -+ "34b484cdb4cebe6aff839", -+ "7b5ec7e3346c3cb243b356", -+ "6b25a8073bc36b2af4c2b1", -+ "3665e544d5ec7ed8868a1b", -+ "1ccb03c008f2e822848880", -+ "18e83fe885c9bab518bb97", -+ "42e88e9f66659afa2a393", -+ "5533d7d78826353c79c73e", -+ "674fde01f6057423c31a9a", -+ "3a9c7a7d5782f84fd4620f", -+ "19b52abcac8b60d5349efc", -+ "23ac86fba80f09945d51d2", -+ "61249154ca21ee2b75deb1", -+ "473c4bff7362fbbd2049ff", -+ "923121ae3af782c934df4", -+ "66fecdf77d13ff6c0b25a4", -+ "170a54e825e33a2265d3cb", -+ "31be6678e513813e0e676c", -+ "7972b4774882051f2d85a4", -+ "75b09479e265b9f0ac9a5b", -+ "708324dd5e787ea3d43a21", -+ "4c67268f528ba7e8c34a0", -+ "51f9e6d75a3c5264312643", -+ "24183bf26908368eb41547", -+ "5e7785eebda5c8e2f0247b", -+ "5338be8d9f87d3f2e46b2e", -+ "14bde3f9984cc98dc83f60", -+ "62870c281778214067b40e", -+ "62e9a332653e1b103db5cf", -+ "69c96f5702ae4eecc6f341", -+ "3e6265ca213c1a0be64512", -+ "5ea38165e28694c8629ccb", -+ "2be59650bf9aa57c249937", -+ "40678fa2d309cb9417f68f", -+ "3459971422155f9703c78c", -+ "5552617d9eaca45155f490", -+ "18991d6f38c445ab4b38f1", -+ "1aee70e483c99574480349", -+ "277575523998439f834d3", -+ "692752e677cdaba7d636c2", -+ "298af75c2d584b01ccc6a6", -+ "4d7d33eaba361883277544", -+ "282f326b1fcbfb463ba836", -+ "6b0dc0d5521d21af0ccaf4", -+ "57f40a819546afc89fc2ce", -+ "6a24f8897d3040e8fb1da8", -+ "51e8f647af3880d2b77ccd", -+ "4b223517b6c7cd85cb43d1", -+ "745ca85c76435eb7ba81ad", -+ "743eb61998341a5e892884", -+ "5afcdfdab7a5b6864efc6d", -+ "39824b01dda7b8ada90cc2", -+ "2beed154412bd52cf1c83c", -+ "6b497ffe240d0867d5d7ef", -+ "eb947683c26db8dac2f36", -+ "15891c14bba25257cb14ef", -+ "4f540ba10fdacad19fee6f", -+ "5097857cdd82d2df144dda", -+ "6799fa1f9cffb381bd6c8c", -+ "5e45b3a532e82a603df12b", -+ "53528c9bfa6f5405d66497", -+ "2248d63b93978222916f1b", -+ "c98c97ab7b4b0cb756894", -+ "57d57f4721fb6be3b38e99", -+ "7b4ac8e7f9ffbf17f0627f", -+ "22af1fffca9aa4b2ba234a", -+ "2b913687a118d5d595277b", -+ "3cd72e80ffad615f09526a", -+ "e050d10f9ab1681fbdc06", -+ "36c8b1aaf274cca356ae2f", -+ "3d88de9f1c15bfd7b6363b", -+ "73e027017f2dbdbc204a16", -+ "6ee2946ba009641ad73037", -+ "522de20b2431d6ac8f42fb", -+ "427af6fbf5578c6104b255", -+ "172bc617da9e1aa348e114", -+ "1a5e08fda45015af7feba5", -+ "208fb7a4ffec7d8d1e5be6", -+ "3712172b56577089f4c773", -+ "621bfd4a39ee713781e554", -+ "2f0c8ecc959b7521936666", -+ "682583fe078ff76c962922", -+ "509b53b07e607cbcf6e79b", -+ "1b71574f7c567d707d0e82", -+ "572930c1df7ba238dfc9cd", -+ "2029341ddfdbd9f668612", -+ "1a54e98271fd5720e1bc63", -+ "62f83959d672cbfe7201a", -+ "2abf897aba93d347d6e2db", -+ "3ecd876c819b78567f7fa4", -+ "69714524521e343bc3692d", -+ "290cc13b5edc05d863546", -+ "26436c96779bbae9c15fae", -+ "32e5746a212d6238682c00", -+ "5e4b991cdcf27f65105596", -+ "4a05e03567ac78048832e8", -+ "658769c97f8b8945ac2878", -+ "4eea383bfa391bcb14540", -+ "4871087f3b2cd3c0f24c3e", -+ "5c20428f433fbf0c9ab374", -+ "15aba357d612d87099180d", -+ "73f933fe401d564be0efd3", -+ "6d925493d403647cc0a7ba", -+ "6a40f14b7a50eeca571bae", -+ "446d6309025414bad0aee1", -+ "6e388c53aaae7d287eebd5", -+ "3bb5af245e5d40c6fc15e3", -+ "66895605da5092de3d2b87", -+ "50774e378282fd09459eb4", -+ "5abf04c6f95d64b6c414", -+ "54dcbbc689dad12df77730", -+ "226c7c98f219b40ea94b66", -+ "6abf077f6636ceee313734", -+ "53cc3acdd810a96c3160cb", -+ "59b759ca3a67e4725b5f84", -+ "48e1272ba911cad7536a1", -+ "1d3c95c9d8462d4c467220", -+ "4167a3ca5253556f128ea6", -+ "bfe2f259223ccddac13b3", -+ "bf09d6ff46adc21d04951", -+ "4555d38c19f123cccb6fb4", -+ "4a5333a5e1c04b8bdfa257", -+ "627a4795d0c0df1d84d13a", -+ "122225a7053b175027361a", -+ "5027d58d8950e307548d14", -+ "76c881f1a372f21e829095", -+ "7f8ad9957e40808881a192", -+ "621edd8ea6ff7136526540", -+ "64adff5211c520e76cfa93", -+ "7b274f32f2cbfe03031cb0", -+ "3c71a5e6f6b431bc524a53", -+ "10cc655b268878a4e8e081", -+ "56853e4d2e614e1924d27a", -+ "1c72fdd679cfcd10e369be", -+ "1a364185d640ba1a6ed583", -+ "230c19482c2fdfccb6b94", -+ "1a9a55461554e908c4fbf0", -+ "48b5f18a43890f525b850c", -+ "779b65c66a52eeb45328d2", -+ "3a0a69f5624f959d85e411", -+ "498cac7e3100df5899cd16", -+ "6be91a7f057434bdea3953", -+ "1b0ff68c5f14ee84b37e7f", -+ "af86674d8a1c364331ef3", -+ "4fadec3b4cf5617426ac33", -+ "5cc79f5d12d2a991f4ebd0", -+ "5ca7f66678a73081bd34e5", -+ "5efd2121bfee3a30184816", -+ "6b79ef63bb66f1362d8de", -+ "3c4dc48e3cdfd4ce2eefe9", -+ "1c9f92bdf4717c6880a9ba", -+ "168c6919206ac6ace0f625", -+ "27e147bc2366e607ad99bd", -+ "44678fb0d784f11b21a657", -+ "47792007d733892284fb9b", -+ "636079478bd1eb493d0866", -+ "7450197e181adf8c4f92cf", -+ "65a7ac7cbfcc2f6c41c2ac", -+ "c92faa8d02b107a1b5d50", -+ "1ee8fffd33bf6223d36b95", -+ "203c3b480852a2154fd642", -+ "7ba683eab937665ca29978", -+ "1998245099906d42a62588", -+ "75d1f80628c3a1c1082c91", -+ "1c6bd00355516b7177a93d", -+ "795824804b82c5e751df2b", -+ "2746a28b14b19ab8d24145", -+ "75b3fbba0880cedfe12ea", -+ "dfc33dec9862e861d43cc", -+ "5d77b3e7e323ddd35a71a5", -+ "7438dcc1d87bfc73ab26", -+ "755d342969e9fcde9fd595", -+ "7bca9525e525d6ded2c76f", -+ "d08254f4d2d5ca1a5b877", -+ "4d1a97d405c026a8a5aed6", -+ "825e4a5dedb493626e7ba", -+ "26c3f6eae80009e6946697", -+ "59b1b4d92c6ee6432bf67c", -+ "705cc0331aa0195cd9f6ec", -+ "6d83e6632fcdd8cf940ffe", -+ "69699a76b55d4ca99064a0", -+ "76201a82e565cd9ac092ed", -+ "49b08f20244bc64879adcb", -+ "2b04a0e7492ffe108c1c00", -+ "4de1c0244f476f355a3a91", -+ "1bacdadb366134c3d1a5c0", -+ "755b7f3a3389c861fb2d23", -+ "153d48f10507702bdbbfbd", -+ "17ef22a6ba1fe32d3ef7c0", -+ "6f55491282e49ce5634ba6", -+ "66ac85711d7e32d731c773", -+ "7a45d57fdc1a44af5791fe", -+ "1b931cd6241fc4f484ed23", -+ "30ffdb4a4aa7f26e29fcc9", -+ "54b4dc744541c38f937102", -+ "4413cfa8b5666fc0af877a", -+ "5b18e3d2fe16a9d973b934", -+ "173b57e939be4a4efef880", -+ "102e8f3d54ced5e10227ed", -+ "79b27c762372e476f703f7", -+ "37f81f265c72ca7279eb3c", -+ "6b11c6506832a5a8571e85", -+ "5b68ba6c572a6576af79a8", -+ "26580ddf1efe9fe3eae4e0", -+ "3c015f30d95c1da9c47adc", -+ "54c37f5e810a7c49e7a02d", -+ "3b8be315926a14f8200fe4", -+ "5334ba131913654474693a", -+ "245f14c58fc2f1bd38bf6d", -+ "3ff0891da2c6d0cb8ab6f0", -+ "3e61864fd19f85bd211f70", -+ "493f40656c80193590d2f4", -+ "5dbb4f6414155050573b80", -+ "6afe8bc3bb8509aff3c666", -+ "586e1bd3806f5472b98045", -+ "6afc9a3033b5fed5a0c3ee", -+ "7969c90c819c5b0080834", -+ "5ee2324ad6594548cd275b", -+ "5c6cf60aae0cfc30048ec1", -+ "40e1957b3947c90dc23e89", -+ "5846b0049ea6f32f4b2762", -+ "1e5217185f433bf1233d59", -+ "af0b8a8f75ec961c833db", -+ "4f4128c0856b216db55c75", -+ "41d953d4dc4746ec83a1f0", -+ "3d55ef23d8c9f8419ff28f", -+ "1a5f34cedfae0cde5ea0a4", -+ "6517d2ae1b7ba4107ba2ed", -+ "4839ff83b5f2ddc41b61ee", -+ "30ebf17f92538a33a005c5", -+ "7530bbdc505d301ed9040", -+ "46ea2e85d6ca1966d1ada4", -+ "78022742d8c1b58e95d935", -+ "6a25d7d313e7a656aee548", -+ "a2c3a3cc1a5dfdc5a02b7", -+ "2e76f32ec68bf11c44acc8", -+ "54aeb8675aac1a423a7140", -+ "dd0623ecc7bb862ebbbac", -+ "61d42c0be51a3d664c8df2", -+ "254a37a2b407cabbf8069f", -+ "687346ea28caf1c87376ab", -+ "67b1ce8dfe00f53da9491b", -+ "488aa158d747df0f5cd422", -+ "21eb89d73161656b740b6c", -+ "686f17e02f2d49c0e2e48", -+ "dad2db631732b0506f6b1", -+ "72e9a5baa06d4af7c9f9da", -+ "1cab579a1f775fb778d900", -+ "3c3d137503578a98196d6d", -+ "2a8bb0c8c3747adf31dc91", -+ "1cf9608a937eea1a0bb3af", -+ "40a3f5ad2d4a9b33e2f67f", -+ "147d7e964c45ec443a24fc", -+ "7b9587337c3feffe6974d6", -+ "5839527a17db25de563064", -+ "1160b80ff627f607bda927", -+ "5aaca79690a162240db985", -+ "c75433d8b0423b552102a", -+ "f46157d09593fd6ceaef5", -+ "20db18e6c822f683f97989", -+ "3e1e43759c2fbd4596b36a", -+ "125d9103db1d2a83e13f71", -+ "28a2b96944f1b1210e6bbb", -+ "33fd72210da605d38ab799", -+ "4cada2a5056e025832015c", -+ "365c9be3e9c7dcc814388a", -+ "9f4b0dce97935ef1d9158", -+ "2b8d9b2da99a690e7c44a7", -+ "fc59307a819ae8b7a3f67", -+ "567dff5f6f64aa1697fa0f", -+ "23343ed75a8de5a22fac16", -+ "4c2a57eb3ff167fa077ee2", -+ "7a2990f262218cc62c32dd", -+ "210cf16be9c62f7408e63d", -+ "49c59a03a60b57e7bac289", -+ "499ab94c7bb40ba492d85c", -+ "67437e976a93329c5b9760", -+ "77c405c1030a468f5abe34", -+ "34363c8e2f82b5fdad8c66", -+ "39c91d6ca89a6fa52b3be6", -+ "7b2f70ff56626a3003c33d", -+ "416b4cd1af257e44ad03fe", -+ "375ec3fc3fce6eb8e8ee9d", -+ "4fe741cddc07d380fb6143", -+ "67adab05fa921650ed942f", -+ "601f96473a856041a89ff8", -+ "13fc0f6b201b7368c44178", -+ "6f79151ea6cbf1bbe85f5d", -+ "5dd15f8501fbd308a231a2", -+ "8ab595a01941ab4070b39", -+ "6ad236039c2c3e149bcca2", -+ "40c514f5e20e67263ea899", -+ "10b3ac9e35f753e3c9deb", -+ "2d816960b0911019df6133", -+ "14efaca65e59726b81dbf0", -+ "7d98b2bd2e9168b6d2e72f", -+ "49639d01a55025d5b2f6ef", -+ "2e1479f3781e1a48fc49de", -+ "7d60cbfdcc63ced7661d40", -+ "3ec0da959b014a91e3d171", -+ "6e1573decbd31bd14c0615", -+ "2ae83fe35c42b256590f54", -+ "22d68d4ed1af18d8658de4", -+ "3153805f294e973c493b1e", -+ "23270a061497f9098a49ee", -+ "3ed51ed7c85d68db84d78a", -+ "788f47c4aa1ecb9b01c1a7", -+ "9dfe0a1feefabb0c62643", -+ "7376e75fa605889898fa7a", -+ "578a6c67a3dea7609537e0", -+ "146dc1fd204e259d148dfd", -+ "59ff3fb267f4dcf86fd4df", -+ "5a081e53f2beac49d1a3e5", -+ "37bd7e26cf4711cd149911", -+ "47d814d93ff8dca3c1398b", -+ "132d2eb133a0383d464ad2", -+ "30f7be09c5f39b5532dcd3", -+ "83b4a6c139b7fda28fc0b", -+ "77e2377901111b6ba92316", -+ "7add5048bc0984c36294e1", -+ "2afa4dd2f2245b7525fdf6", -+ "50c4c9d0b48bd147d875cd", -+ "6387ce1a213d98335598c0", -+ "52253824741dd177a674a9", -+ "3195d14bda042e7057d34f", -+ "6b849a1f17d635cf0a773f", -+ "7c9cfb41c0f888d000fc52", -+ "7dea2305f898b6d88f6821", -+ "43d0ab106641bd01d72cd4", -+ "1d5fe04c71a377f6784338", -+ "207b51e97aba651825b40f", -+ "41327dfa41486f6b995572", -+ "245cbb0117ba8963db7929", -+ "4956d4cfa3dee8e23259eb", -+ "49af3dd263ef8ddc7b0303", -+ "76dda8edbfa5a4265a1a74", -+ "26b516b52794658e68ab5a", -+ "260f0ab9a00e1e941e404f", -+ "3395f092181af53bb73f3e", -+ "17a50483229662a578fdf3", -+ "30e3bf91dbc04d50a032bf", -+ "525362bcc006730db95180", -+ "6e988e80d2c29dc7542de4", -+ "47efed21b3657d0618e28f", -+ "fb85baef473def8948133", -+ "67afcc19d0bb557a608666", -+ "3e1ecaa8d0631877bfedb9", -+ "38a68ae5efe6ac22d3f278", -+ "4b2a621bcd3f244dbd1aa6", -+ "2432bbe72c83689ef74c85", -+ "1aba34eed15b418d4b7f0a", -+ "2d2efb8be305a05b685aa3", -+ "cdd3df5aba4c7ba52b4cd", -+ "7c38756fdad7c18ef7576", -+ "437e569a7451bd9bbbce87", -+ "614a9023303ed4dd2cdfb9", -+ "43c088f2eb74b96d25a4a8", -+ "308a1daa2779a84d4db8ac", -+ "59f29456bbb20b47aa046f", -+ "4b0f09e29272f9d49c6266", -+ "b03e402e64c3436818402", -+ "40f2e74e1048db76b72516", -+ "1a484afbb93898190d8d03", -+ "6edb305f1f8f30902439c9", -+ "7fd2ed81931942f0ef8d50", -+ "402466331777b126e4d8e2", -+ "52d5ea798306c9e21853b2", -+ "765c653014c5e4b3dc3865", -+ "785211217f5fa1bf82b193", -+ "3bcee7bc9a5ca7219edfaa", -+ "61b023abdf63ddd6300036", -+ "2f305b730466b54d50855e", -+ "60b46e71f1f2b8376d5d29", -+ "745cc1be634380e90bc82", -+ "208b7d3e85a97a99407a38", -+ "1000ca68b2a0f4790d5b97", -+ "2ef94456619d9728490c1d", -+ "18347f5ec924cf4631f292", -+ "26b5c49d8c4e12d4b3d157", -+ "15e2aab3b7b69272b3c155", -+ "76272e758d9f83ceea908b", -+ "fb87766da12e75782ca77", -+ "57caf75d12ec817c6cddfa", -+ "1a04ba76b7855a5e9c289a", -+ "7e5eb2a4ef3434465acdeb", -+ "35b964532350abcbf76d9f", -+ "3f14484539a427ea73a1b8", -+ "4d10e4408b3b6761aa225", -+ "235ae37d20b21074f27732", -+ "44dd12bd0d7f960d6bd7f6", -+ "196185d708583cfba757f7", -+ "5f8e36ec1202b0292d5945", -+ "47d7208165498ac04fc240", -+ "332ea59945a5d0e73f7dc5", -+ "653694fe66c257988cd02a", -+ "3069cb41e51edac9ec2b3f", -+ "17e032019f0dc1c4277c0b", -+ "52a44d4aac2b12a44786a4", -+ "33bbdb9fd9d9e6cda126be", -+ "520cfdeb5b65ce3df47f12", -+ "3746df2dcaeb2f941850af", -+ "34b380f57ddac800a53234", -+ "7116294960ec1370cfa192", -+ "6c02da94ff6269ebf8b68", -+ "528f06b90d6ea98654eb1b", -+ "643b1783eeff5d2d9d100e", -+ "14e34536d861554652fc3d", -+ "28da7bd48db9e867715c64", -+ "7b233911df67c0ffe75298", -+ "282425a374dcf57904fcaa", -+ "7f873bc8523c4931739324", -+ "5f1584cca489de9bdcd65b", -+ "6862becb8f668738ac092f", -+ "495ccc90a936edcdb3b175", -+ "71dbc0d71fbcfcf1245bc2", -+ "5298718820a8e285437a64", -+ "2a9957bb174e3a8d1169ef", -+ "58dbbd6f088b5ff881356c", -+ "67ed429f48df076df817f4", -+ "ba3b72d702ce311cc02a", -+ "6415a8a79aa0ebffb6a24d", -+ "5b6485b2f7f41f0abf3544", -+ "edea2902a199d26d75bdd", -+ "97bac956d2b65a51260e7", -+ "b2c65762784255bbebc75", -+ "41b1881d9704918a051695", -+ "3939cec4c6eb132c9146a8", -+ "4e4622894612a0772ab9f8", -+ "398cbdee468f0759c375a1", -+ "592a4efec7cf89e527fdb", -+ "79ea859ae0d9bf58c8e071", -+ "4786c255855f792a20f869", -+ "272821f07dab57e4aaf0a7", -+ "25e016000255df0b5c8153", -+ "17040e8c8be515e4ea36e", -+ "341181b7d4d6f4e2cf9643", -+ "73f8a019ddb59d3f06f049", -+ "cbf28251298433a3abc70", -+ "51edf68dda1a87c4b3af7e", -+ "2e78ee01fc4dbe304eaea1", -+ "36a98de095d312e040c903", -+ "1c94ea576c3cfe00e40a0c", -+ "2969569df7efe8c61bb461", -+ "2b036df33feda1ac5edb68", -+ "3d1dbd13d46aa7f5e4c42", -+ "32f17d420cb00b34cd9fc3", -+ "79a8e47a4d897cf6b712f", -+ "6be705331dd40db5a995b0", -+ "797e5770501b190fa5f6f1", -+ "21d9c50ac15f9a1fc38df4", -+ "639eb30656278296f2b3e0", -+ "4b90d5d4f791e4cafea283", -+ "7b4912ce2f8ea6ad90baf0", -+ "185c0df44a167fc9bfe948", -+ "4c622bd5bd26bcbd487c68", -+ "7c4aa256f5265e9d49e8ab", -+ "63f8378a4c563212109ee4", -+ "4ca98168d36f8ab3815a02", -+ "411a5d336f1cca7988f319", -+ "34c572dd024d37c54c5648", -+ "249469414e604f245a56ca", -+ "2e9650e328b679ea03af31", -+ "db07432bf40360e3df399", -+ "2e9fc43379988881a1b064", -+ "752129c2d07a536bf3bb8", -+ "c79d219ef793e02a9f989", -+ "210441f8cc9b531f88fd3a", -+ "6bb593df2f572a23254ed6", -+ "55152f253ffb05575c981d", -+ "40734a14dd653457e54b74", -+ "7fcb3af03a778d48d5ac9b", -+ "43e02a2659ddc4d3204fd7", -+ "2ab0a302ecc453de7fdbe4", -+ "2a68ad26b94fd25b4509aa", -+ "46afa6e418c9bd4065cd9d", -+ "517123f4920304dc75317a", -+ "33c3a8fe7d6e90cd610695", -+ "1a30afeb54dea502f0310a", -+ "2b5280596202f4b3ee0814", -+ "70b50a59ebc270bb237505", -+ "65f71d8c8e62cbeef07daf", -+ "197461e90c6b70a7dda46d", -+ "4053f687fd270a04d092a9", -+ "43d235cd54423fd6135def", -+ "ac0f86afb7bbca8d57c4f", -+ "1dd4abfd6c4ed8a3ad6bbb", -+ "25d3735a734b777dd960b8", -+ "56a6cdbd81ef505320e706", -+ "3c1c9492a56c8c78536095", -+ "31ee9d29cb2f2a7eeddbc0", -+ "666ea50157a2d8307a0ef8", -+ "1472017c713a1063411e0", -+ "53e73a626a5de69e43d0e0", -+ "dcc0bec90c531be4924ef", -+ "6bd3a60ce037d04a7d822c", -+ "3ad7e93e4ab55d402a33ea", -+ "10db0037fd5f7d8c49aee6", -+ "4d29703647563e84d6ac7f", -+ "2555442bf058722bf0120c", -+ "2e274c1905f505ef9d43c1", -+ "46b0509f9638e9030f5895", -+ "4082d11934cd3944191e6d", -+ "3cab0ae1036c6d43311ae4", -+ "218c9ea39a51618b1ce10e", -+ "9e1bd1e36f73d0f69f697", -+ "5a20607ce9679fb1f266e5", -+ "4ae24f235a28b7f71492ce", -+ "7510db776aba775075e549", -+ "5695db84b4c92a3d6677b2", -+ "74e01ea265377cb713e57a", -+ "768cbd11024387469f6ee1", -+ "61b85bccf0f4316c2cec04", -+ "aeeaf98aedc83e6ae6cc5", -+ "4e175c68ed04c585f606f8", -+ "1ee9410958604d03f20f1f", -+ "127b65c61b8c8f1b9456ee", -+ "3d57e0a1ef4abcae8719be", -+ "688ea19369341f6943063f", -+ "1f91eb155829f1481d6da7", -+ "4f34769ad379d64a27233e", -+ "59daf69acb0d30ef2fc5db", -+ "1efc90353d647b1a3dfd54", -+ "39965be2b1bbb3ed832fdd", -+ "7fd47e391981aa515116c7", -+ "5ca9b2680bb84ff6e98b33", -+ "36b7f85db80800549459bd", -+ "16d114b00964bdc8e2e82a", -+ "7c1256dceb40e2f63ca4f9", -+ "5b4dd88e0cfc108bdc7320", -+ "239e94f2e5843a6e20f1bb", -+ "3552a76787de4570d42693", -+ "6f2f55effdb76df46b548a", -+ "6152765b747658a14d5829", -+ "1778273a04ac508e342b", -+ "75471e22b2d84fd2fe01b9", -+ "5d6bf6a59488555bf1342a", -+ "160134aa459258ff8f6285", -+ "17e8af02e79e7f8d2cdf99", -+ "4f5e7f770a4d50c69c4028", -+ "51fc2c3f86b8fc46a7a221", -+ "70d95d23dca53184d30b4b", -+ "4a9b685698a7674338b188", -+ "4d7940ea6bfaa7b282a985", -+ "39baaf1f520d96bfc8c1df", -+ "409fc384bef4b3d255371f", -+ "3bac7e0675e0a9967ff7da", -+ "5c1544633a0bf7939343d0", -+ "39d71478d3005e797c6913", -+ "153884834dca9aae7d5d2d", -+ "630270f2ed4331deaf63f0", -+ "46323a1998a54f7e0819f6", -+ "61c87048ea8325590bc5b1", -+ "1960b3a13c6cb6acb7f489", -+ "3956e2767e97b7703253b0", -+ "1b5226354071022a104a86", -+ "3a7ecceb35e2e9a438dbd5", -+ "10c81c57aed768b3285598", -+ "bd499ce82d93c07477fc", -+ "67e11e83cb547515b53701", -+ "171757e72adb6abd8f440b", -+ "590056c647987959065bd", -+ "4e27f64f8732105513ad9b", -+ "de9896eb70f1668b87fc", -+ "457dc9644e5b25ae6c4291", -+ "5a6df4a369ed81627d4fa3", -+ "568fd03e0a80223cd1669a", -+ "1e92415029559dc3ed8283", -+ "1cb2dabf0298f57d15e65c", -+ "426541c137d269fd2e2296", -+ "19a439abdf3f4f5eb63683", -+ "482af287c71050fd03632a", -+ "47a080b7584194b936f712", -+ "20d4366552d0d83219fa0d", -+ "4494bc9e65c8cf2a6ea51d", -+ "2148939cfe2757b6666fc2", -+ "476ef278c257202dd01711", -+ "3eaa7351a72b065707e47a", -+ "2703e4a7969073dd381cbd", -+ "1badf1b7dc0b73e0bf8b67", -+ "47d847bd96fbfc9c221fd4", -+ "13637e15b786797995ba49", -+ "5e842bbb537167f75451a7", -+ "3b228f46cdc0e8a979b45e", -+ "2fdd94b55dd5fb9a3915f5", -+ "1cca04897dbffe7f26f2ec", -+ "67a8cdbece1aca4e55ba72", -+ "47ba42dd06a62256ee8c8b", -+ "3288681f4d08858009187c", -+ "69412d8563ffa7e83b0ef0", -+ "240e2e38e41f3b6530a267", -+ "12e92ef014e8d7fbb8d23e", -+ "45440750f90776251263b4", -+ "3a8965cf80aa6c4410dfab", -+ "559bf101b9cff724b929cd", -+ "280f08134d28252bd0b713" }; - --static const char *RootsInv[] = { -- "1", -- "280f08134d28252bd0b713", -- "559bf101b9cff724b929cd", -- "3a8965cf80aa6c4410dfab", -- "45440750f90776251263b4", -- "12e92ef014e8d7fbb8d23e", -- "240e2e38e41f3b6530a267", -- "69412d8563ffa7e83b0ef0", -- "3288681f4d08858009187c", -- "47ba42dd06a62256ee8c8b", -- "67a8cdbece1aca4e55ba72", -- "1cca04897dbffe7f26f2ec", -- "2fdd94b55dd5fb9a3915f5", -- "3b228f46cdc0e8a979b45e", -- "5e842bbb537167f75451a7", -- "13637e15b786797995ba49", -- "47d847bd96fbfc9c221fd4", -- "1badf1b7dc0b73e0bf8b67", -- "2703e4a7969073dd381cbd", -- "3eaa7351a72b065707e47a", -- "476ef278c257202dd01711", -- "2148939cfe2757b6666fc2", -- "4494bc9e65c8cf2a6ea51d", -- "20d4366552d0d83219fa0d", -- "47a080b7584194b936f712", -- "482af287c71050fd03632a", -- "19a439abdf3f4f5eb63683", -- "426541c137d269fd2e2296", -- "1cb2dabf0298f57d15e65c", -- "1e92415029559dc3ed8283", -- "568fd03e0a80223cd1669a", -- "5a6df4a369ed81627d4fa3", -- "457dc9644e5b25ae6c4291", -- "de9896eb70f1668b87fc", -- "4e27f64f8732105513ad9b", -- "590056c647987959065bd", -- "171757e72adb6abd8f440b", -- "67e11e83cb547515b53701", -- "bd499ce82d93c07477fc", -- "10c81c57aed768b3285598", -- "3a7ecceb35e2e9a438dbd5", -- "1b5226354071022a104a86", -- "3956e2767e97b7703253b0", -- "1960b3a13c6cb6acb7f489", -- "61c87048ea8325590bc5b1", -- "46323a1998a54f7e0819f6", -- "630270f2ed4331deaf63f0", -- "153884834dca9aae7d5d2d", -- "39d71478d3005e797c6913", -- "5c1544633a0bf7939343d0", -- "3bac7e0675e0a9967ff7da", -- "409fc384bef4b3d255371f", -- "39baaf1f520d96bfc8c1df", -- "4d7940ea6bfaa7b282a985", -- "4a9b685698a7674338b188", -- "70d95d23dca53184d30b4b", -- "51fc2c3f86b8fc46a7a221", -- "4f5e7f770a4d50c69c4028", -- "17e8af02e79e7f8d2cdf99", -- "160134aa459258ff8f6285", -- "5d6bf6a59488555bf1342a", -- "75471e22b2d84fd2fe01b9", -- "1778273a04ac508e342b", -- "6152765b747658a14d5829", -- "6f2f55effdb76df46b548a", -- "3552a76787de4570d42693", -- "239e94f2e5843a6e20f1bb", -- "5b4dd88e0cfc108bdc7320", -- "7c1256dceb40e2f63ca4f9", -- "16d114b00964bdc8e2e82a", -- "36b7f85db80800549459bd", -- "5ca9b2680bb84ff6e98b33", -- "7fd47e391981aa515116c7", -- "39965be2b1bbb3ed832fdd", -- "1efc90353d647b1a3dfd54", -- "59daf69acb0d30ef2fc5db", -- "4f34769ad379d64a27233e", -- "1f91eb155829f1481d6da7", -- "688ea19369341f6943063f", -- "3d57e0a1ef4abcae8719be", -- "127b65c61b8c8f1b9456ee", -- "1ee9410958604d03f20f1f", -- "4e175c68ed04c585f606f8", -- "aeeaf98aedc83e6ae6cc5", -- "61b85bccf0f4316c2cec04", -- "768cbd11024387469f6ee1", -- "74e01ea265377cb713e57a", -- "5695db84b4c92a3d6677b2", -- "7510db776aba775075e549", -- "4ae24f235a28b7f71492ce", -- "5a20607ce9679fb1f266e5", -- "9e1bd1e36f73d0f69f697", -- "218c9ea39a51618b1ce10e", -- "3cab0ae1036c6d43311ae4", -- "4082d11934cd3944191e6d", -- "46b0509f9638e9030f5895", -- "2e274c1905f505ef9d43c1", -- "2555442bf058722bf0120c", -- "4d29703647563e84d6ac7f", -- "10db0037fd5f7d8c49aee6", -- "3ad7e93e4ab55d402a33ea", -- "6bd3a60ce037d04a7d822c", -- "dcc0bec90c531be4924ef", -- "53e73a626a5de69e43d0e0", -- "1472017c713a1063411e0", -- "666ea50157a2d8307a0ef8", -- "31ee9d29cb2f2a7eeddbc0", -- "3c1c9492a56c8c78536095", -- "56a6cdbd81ef505320e706", -- "25d3735a734b777dd960b8", -- "1dd4abfd6c4ed8a3ad6bbb", -- "ac0f86afb7bbca8d57c4f", -- "43d235cd54423fd6135def", -- "4053f687fd270a04d092a9", -- "197461e90c6b70a7dda46d", -- "65f71d8c8e62cbeef07daf", -- "70b50a59ebc270bb237505", -- "2b5280596202f4b3ee0814", -- "1a30afeb54dea502f0310a", -- "33c3a8fe7d6e90cd610695", -- "517123f4920304dc75317a", -- "46afa6e418c9bd4065cd9d", -- "2a68ad26b94fd25b4509aa", -- "2ab0a302ecc453de7fdbe4", -- "43e02a2659ddc4d3204fd7", -- "7fcb3af03a778d48d5ac9b", -- "40734a14dd653457e54b74", -- "55152f253ffb05575c981d", -- "6bb593df2f572a23254ed6", -- "210441f8cc9b531f88fd3a", -- "c79d219ef793e02a9f989", -- "752129c2d07a536bf3bb8", -- "2e9fc43379988881a1b064", -- "db07432bf40360e3df399", -- "2e9650e328b679ea03af31", -- "249469414e604f245a56ca", -- "34c572dd024d37c54c5648", -- "411a5d336f1cca7988f319", -- "4ca98168d36f8ab3815a02", -- "63f8378a4c563212109ee4", -- "7c4aa256f5265e9d49e8ab", -- "4c622bd5bd26bcbd487c68", -- "185c0df44a167fc9bfe948", -- "7b4912ce2f8ea6ad90baf0", -- "4b90d5d4f791e4cafea283", -- "639eb30656278296f2b3e0", -- "21d9c50ac15f9a1fc38df4", -- "797e5770501b190fa5f6f1", -- "6be705331dd40db5a995b0", -- "79a8e47a4d897cf6b712f", -- "32f17d420cb00b34cd9fc3", -- "3d1dbd13d46aa7f5e4c42", -- "2b036df33feda1ac5edb68", -- "2969569df7efe8c61bb461", -- "1c94ea576c3cfe00e40a0c", -- "36a98de095d312e040c903", -- "2e78ee01fc4dbe304eaea1", -- "51edf68dda1a87c4b3af7e", -- "cbf28251298433a3abc70", -- "73f8a019ddb59d3f06f049", -- "341181b7d4d6f4e2cf9643", -- "17040e8c8be515e4ea36e", -- "25e016000255df0b5c8153", -- "272821f07dab57e4aaf0a7", -- "4786c255855f792a20f869", -- "79ea859ae0d9bf58c8e071", -- "592a4efec7cf89e527fdb", -- "398cbdee468f0759c375a1", -- "4e4622894612a0772ab9f8", -- "3939cec4c6eb132c9146a8", -- "41b1881d9704918a051695", -- "b2c65762784255bbebc75", -- "97bac956d2b65a51260e7", -- "edea2902a199d26d75bdd", -- "5b6485b2f7f41f0abf3544", -- "6415a8a79aa0ebffb6a24d", -- "ba3b72d702ce311cc02a", -- "67ed429f48df076df817f4", -- "58dbbd6f088b5ff881356c", -- "2a9957bb174e3a8d1169ef", -- "5298718820a8e285437a64", -- "71dbc0d71fbcfcf1245bc2", -- "495ccc90a936edcdb3b175", -- "6862becb8f668738ac092f", -- "5f1584cca489de9bdcd65b", -- "7f873bc8523c4931739324", -- "282425a374dcf57904fcaa", -- "7b233911df67c0ffe75298", -- "28da7bd48db9e867715c64", -- "14e34536d861554652fc3d", -- "643b1783eeff5d2d9d100e", -- "528f06b90d6ea98654eb1b", -- "6c02da94ff6269ebf8b68", -- "7116294960ec1370cfa192", -- "34b380f57ddac800a53234", -- "3746df2dcaeb2f941850af", -- "520cfdeb5b65ce3df47f12", -- "33bbdb9fd9d9e6cda126be", -- "52a44d4aac2b12a44786a4", -- "17e032019f0dc1c4277c0b", -- "3069cb41e51edac9ec2b3f", -- "653694fe66c257988cd02a", -- "332ea59945a5d0e73f7dc5", -- "47d7208165498ac04fc240", -- "5f8e36ec1202b0292d5945", -- "196185d708583cfba757f7", -- "44dd12bd0d7f960d6bd7f6", -- "235ae37d20b21074f27732", -- "4d10e4408b3b6761aa225", -- "3f14484539a427ea73a1b8", -- "35b964532350abcbf76d9f", -- "7e5eb2a4ef3434465acdeb", -- "1a04ba76b7855a5e9c289a", -- "57caf75d12ec817c6cddfa", -- "fb87766da12e75782ca77", -- "76272e758d9f83ceea908b", -- "15e2aab3b7b69272b3c155", -- "26b5c49d8c4e12d4b3d157", -- "18347f5ec924cf4631f292", -- "2ef94456619d9728490c1d", -- "1000ca68b2a0f4790d5b97", -- "208b7d3e85a97a99407a38", -- "745cc1be634380e90bc82", -- "60b46e71f1f2b8376d5d29", -- "2f305b730466b54d50855e", -- "61b023abdf63ddd6300036", -- "3bcee7bc9a5ca7219edfaa", -- "785211217f5fa1bf82b193", -- "765c653014c5e4b3dc3865", -- "52d5ea798306c9e21853b2", -- "402466331777b126e4d8e2", -- "7fd2ed81931942f0ef8d50", -- "6edb305f1f8f30902439c9", -- "1a484afbb93898190d8d03", -- "40f2e74e1048db76b72516", -- "b03e402e64c3436818402", -- "4b0f09e29272f9d49c6266", -- "59f29456bbb20b47aa046f", -- "308a1daa2779a84d4db8ac", -- "43c088f2eb74b96d25a4a8", -- "614a9023303ed4dd2cdfb9", -- "437e569a7451bd9bbbce87", -- "7c38756fdad7c18ef7576", -- "cdd3df5aba4c7ba52b4cd", -- "2d2efb8be305a05b685aa3", -- "1aba34eed15b418d4b7f0a", -- "2432bbe72c83689ef74c85", -- "4b2a621bcd3f244dbd1aa6", -- "38a68ae5efe6ac22d3f278", -- "3e1ecaa8d0631877bfedb9", -- "67afcc19d0bb557a608666", -- "fb85baef473def8948133", -- "47efed21b3657d0618e28f", -- "6e988e80d2c29dc7542de4", -- "525362bcc006730db95180", -- "30e3bf91dbc04d50a032bf", -- "17a50483229662a578fdf3", -- "3395f092181af53bb73f3e", -- "260f0ab9a00e1e941e404f", -- "26b516b52794658e68ab5a", -- "76dda8edbfa5a4265a1a74", -- "49af3dd263ef8ddc7b0303", -- "4956d4cfa3dee8e23259eb", -- "245cbb0117ba8963db7929", -- "41327dfa41486f6b995572", -- "207b51e97aba651825b40f", -- "1d5fe04c71a377f6784338", -- "43d0ab106641bd01d72cd4", -- "7dea2305f898b6d88f6821", -- "7c9cfb41c0f888d000fc52", -- "6b849a1f17d635cf0a773f", -- "3195d14bda042e7057d34f", -- "52253824741dd177a674a9", -- "6387ce1a213d98335598c0", -- "50c4c9d0b48bd147d875cd", -- "2afa4dd2f2245b7525fdf6", -- "7add5048bc0984c36294e1", -- "77e2377901111b6ba92316", -- "83b4a6c139b7fda28fc0b", -- "30f7be09c5f39b5532dcd3", -- "132d2eb133a0383d464ad2", -- "47d814d93ff8dca3c1398b", -- "37bd7e26cf4711cd149911", -- "5a081e53f2beac49d1a3e5", -- "59ff3fb267f4dcf86fd4df", -- "146dc1fd204e259d148dfd", -- "578a6c67a3dea7609537e0", -- "7376e75fa605889898fa7a", -- "9dfe0a1feefabb0c62643", -- "788f47c4aa1ecb9b01c1a7", -- "3ed51ed7c85d68db84d78a", -- "23270a061497f9098a49ee", -- "3153805f294e973c493b1e", -- "22d68d4ed1af18d8658de4", -- "2ae83fe35c42b256590f54", -- "6e1573decbd31bd14c0615", -- "3ec0da959b014a91e3d171", -- "7d60cbfdcc63ced7661d40", -- "2e1479f3781e1a48fc49de", -- "49639d01a55025d5b2f6ef", -- "7d98b2bd2e9168b6d2e72f", -- "14efaca65e59726b81dbf0", -- "2d816960b0911019df6133", -- "10b3ac9e35f753e3c9deb", -- "40c514f5e20e67263ea899", -- "6ad236039c2c3e149bcca2", -- "8ab595a01941ab4070b39", -- "5dd15f8501fbd308a231a2", -- "6f79151ea6cbf1bbe85f5d", -- "13fc0f6b201b7368c44178", -- "601f96473a856041a89ff8", -- "67adab05fa921650ed942f", -- "4fe741cddc07d380fb6143", -- "375ec3fc3fce6eb8e8ee9d", -- "416b4cd1af257e44ad03fe", -- "7b2f70ff56626a3003c33d", -- "39c91d6ca89a6fa52b3be6", -- "34363c8e2f82b5fdad8c66", -- "77c405c1030a468f5abe34", -- "67437e976a93329c5b9760", -- "499ab94c7bb40ba492d85c", -- "49c59a03a60b57e7bac289", -- "210cf16be9c62f7408e63d", -- "7a2990f262218cc62c32dd", -- "4c2a57eb3ff167fa077ee2", -- "23343ed75a8de5a22fac16", -- "567dff5f6f64aa1697fa0f", -- "fc59307a819ae8b7a3f67", -- "2b8d9b2da99a690e7c44a7", -- "9f4b0dce97935ef1d9158", -- "365c9be3e9c7dcc814388a", -- "4cada2a5056e025832015c", -- "33fd72210da605d38ab799", -- "28a2b96944f1b1210e6bbb", -- "125d9103db1d2a83e13f71", -- "3e1e43759c2fbd4596b36a", -- "20db18e6c822f683f97989", -- "f46157d09593fd6ceaef5", -- "c75433d8b0423b552102a", -- "5aaca79690a162240db985", -- "1160b80ff627f607bda927", -- "5839527a17db25de563064", -- "7b9587337c3feffe6974d6", -- "147d7e964c45ec443a24fc", -- "40a3f5ad2d4a9b33e2f67f", -- "1cf9608a937eea1a0bb3af", -- "2a8bb0c8c3747adf31dc91", -- "3c3d137503578a98196d6d", -- "1cab579a1f775fb778d900", -- "72e9a5baa06d4af7c9f9da", -- "dad2db631732b0506f6b1", -- "686f17e02f2d49c0e2e48", -- "21eb89d73161656b740b6c", -- "488aa158d747df0f5cd422", -- "67b1ce8dfe00f53da9491b", -- "687346ea28caf1c87376ab", -- "254a37a2b407cabbf8069f", -- "61d42c0be51a3d664c8df2", -- "dd0623ecc7bb862ebbbac", -- "54aeb8675aac1a423a7140", -- "2e76f32ec68bf11c44acc8", -- "a2c3a3cc1a5dfdc5a02b7", -- "6a25d7d313e7a656aee548", -- "78022742d8c1b58e95d935", -- "46ea2e85d6ca1966d1ada4", -- "7530bbdc505d301ed9040", -- "30ebf17f92538a33a005c5", -- "4839ff83b5f2ddc41b61ee", -- "6517d2ae1b7ba4107ba2ed", -- "1a5f34cedfae0cde5ea0a4", -- "3d55ef23d8c9f8419ff28f", -- "41d953d4dc4746ec83a1f0", -- "4f4128c0856b216db55c75", -- "af0b8a8f75ec961c833db", -- "1e5217185f433bf1233d59", -- "5846b0049ea6f32f4b2762", -- "40e1957b3947c90dc23e89", -- "5c6cf60aae0cfc30048ec1", -- "5ee2324ad6594548cd275b", -- "7969c90c819c5b0080834", -- "6afc9a3033b5fed5a0c3ee", -- "586e1bd3806f5472b98045", -- "6afe8bc3bb8509aff3c666", -- "5dbb4f6414155050573b80", -- "493f40656c80193590d2f4", -- "3e61864fd19f85bd211f70", -- "3ff0891da2c6d0cb8ab6f0", -- "245f14c58fc2f1bd38bf6d", -- "5334ba131913654474693a", -- "3b8be315926a14f8200fe4", -- "54c37f5e810a7c49e7a02d", -- "3c015f30d95c1da9c47adc", -- "26580ddf1efe9fe3eae4e0", -- "5b68ba6c572a6576af79a8", -- "6b11c6506832a5a8571e85", -- "37f81f265c72ca7279eb3c", -- "79b27c762372e476f703f7", -- "102e8f3d54ced5e10227ed", -- "173b57e939be4a4efef880", -- "5b18e3d2fe16a9d973b934", -- "4413cfa8b5666fc0af877a", -- "54b4dc744541c38f937102", -- "30ffdb4a4aa7f26e29fcc9", -- "1b931cd6241fc4f484ed23", -- "7a45d57fdc1a44af5791fe", -- "66ac85711d7e32d731c773", -- "6f55491282e49ce5634ba6", -- "17ef22a6ba1fe32d3ef7c0", -- "153d48f10507702bdbbfbd", -- "755b7f3a3389c861fb2d23", -- "1bacdadb366134c3d1a5c0", -- "4de1c0244f476f355a3a91", -- "2b04a0e7492ffe108c1c00", -- "49b08f20244bc64879adcb", -- "76201a82e565cd9ac092ed", -- "69699a76b55d4ca99064a0", -- "6d83e6632fcdd8cf940ffe", -- "705cc0331aa0195cd9f6ec", -- "59b1b4d92c6ee6432bf67c", -- "26c3f6eae80009e6946697", -- "825e4a5dedb493626e7ba", -- "4d1a97d405c026a8a5aed6", -- "d08254f4d2d5ca1a5b877", -- "7bca9525e525d6ded2c76f", -- "755d342969e9fcde9fd595", -- "7438dcc1d87bfc73ab26", -- "5d77b3e7e323ddd35a71a5", -- "dfc33dec9862e861d43cc", -- "75b3fbba0880cedfe12ea", -- "2746a28b14b19ab8d24145", -- "795824804b82c5e751df2b", -- "1c6bd00355516b7177a93d", -- "75d1f80628c3a1c1082c91", -- "1998245099906d42a62588", -- "7ba683eab937665ca29978", -- "203c3b480852a2154fd642", -- "1ee8fffd33bf6223d36b95", -- "c92faa8d02b107a1b5d50", -- "65a7ac7cbfcc2f6c41c2ac", -- "7450197e181adf8c4f92cf", -- "636079478bd1eb493d0866", -- "47792007d733892284fb9b", -- "44678fb0d784f11b21a657", -- "27e147bc2366e607ad99bd", -- "168c6919206ac6ace0f625", -- "1c9f92bdf4717c6880a9ba", -- "3c4dc48e3cdfd4ce2eefe9", -- "6b79ef63bb66f1362d8de", -- "5efd2121bfee3a30184816", -- "5ca7f66678a73081bd34e5", -- "5cc79f5d12d2a991f4ebd0", -- "4fadec3b4cf5617426ac33", -- "af86674d8a1c364331ef3", -- "1b0ff68c5f14ee84b37e7f", -- "6be91a7f057434bdea3953", -- "498cac7e3100df5899cd16", -- "3a0a69f5624f959d85e411", -- "779b65c66a52eeb45328d2", -- "48b5f18a43890f525b850c", -- "1a9a55461554e908c4fbf0", -- "230c19482c2fdfccb6b94", -- "1a364185d640ba1a6ed583", -- "1c72fdd679cfcd10e369be", -- "56853e4d2e614e1924d27a", -- "10cc655b268878a4e8e081", -- "3c71a5e6f6b431bc524a53", -- "7b274f32f2cbfe03031cb0", -- "64adff5211c520e76cfa93", -- "621edd8ea6ff7136526540", -- "7f8ad9957e40808881a192", -- "76c881f1a372f21e829095", -- "5027d58d8950e307548d14", -- "122225a7053b175027361a", -- "627a4795d0c0df1d84d13a", -- "4a5333a5e1c04b8bdfa257", -- "4555d38c19f123cccb6fb4", -- "bf09d6ff46adc21d04951", -- "bfe2f259223ccddac13b3", -- "4167a3ca5253556f128ea6", -- "1d3c95c9d8462d4c467220", -- "48e1272ba911cad7536a1", -- "59b759ca3a67e4725b5f84", -- "53cc3acdd810a96c3160cb", -- "6abf077f6636ceee313734", -- "226c7c98f219b40ea94b66", -- "54dcbbc689dad12df77730", -- "5abf04c6f95d64b6c414", -- "50774e378282fd09459eb4", -- "66895605da5092de3d2b87", -- "3bb5af245e5d40c6fc15e3", -- "6e388c53aaae7d287eebd5", -- "446d6309025414bad0aee1", -- "6a40f14b7a50eeca571bae", -- "6d925493d403647cc0a7ba", -- "73f933fe401d564be0efd3", -- "15aba357d612d87099180d", -- "5c20428f433fbf0c9ab374", -- "4871087f3b2cd3c0f24c3e", -- "4eea383bfa391bcb14540", -- "658769c97f8b8945ac2878", -- "4a05e03567ac78048832e8", -- "5e4b991cdcf27f65105596", -- "32e5746a212d6238682c00", -- "26436c96779bbae9c15fae", -- "290cc13b5edc05d863546", -- "69714524521e343bc3692d", -- "3ecd876c819b78567f7fa4", -- "2abf897aba93d347d6e2db", -- "62f83959d672cbfe7201a", -- "1a54e98271fd5720e1bc63", -- "2029341ddfdbd9f668612", -- "572930c1df7ba238dfc9cd", -- "1b71574f7c567d707d0e82", -- "509b53b07e607cbcf6e79b", -- "682583fe078ff76c962922", -- "2f0c8ecc959b7521936666", -- "621bfd4a39ee713781e554", -- "3712172b56577089f4c773", -- "208fb7a4ffec7d8d1e5be6", -- "1a5e08fda45015af7feba5", -- "172bc617da9e1aa348e114", -- "427af6fbf5578c6104b255", -- "522de20b2431d6ac8f42fb", -- "6ee2946ba009641ad73037", -- "73e027017f2dbdbc204a16", -- "3d88de9f1c15bfd7b6363b", -- "36c8b1aaf274cca356ae2f", -- "e050d10f9ab1681fbdc06", -- "3cd72e80ffad615f09526a", -- "2b913687a118d5d595277b", -- "22af1fffca9aa4b2ba234a", -- "7b4ac8e7f9ffbf17f0627f", -- "57d57f4721fb6be3b38e99", -- "c98c97ab7b4b0cb756894", -- "2248d63b93978222916f1b", -- "53528c9bfa6f5405d66497", -- "5e45b3a532e82a603df12b", -- "6799fa1f9cffb381bd6c8c", -- "5097857cdd82d2df144dda", -- "4f540ba10fdacad19fee6f", -- "15891c14bba25257cb14ef", -- "eb947683c26db8dac2f36", -- "6b497ffe240d0867d5d7ef", -- "2beed154412bd52cf1c83c", -- "39824b01dda7b8ada90cc2", -- "5afcdfdab7a5b6864efc6d", -- "743eb61998341a5e892884", -- "745ca85c76435eb7ba81ad", -- "4b223517b6c7cd85cb43d1", -- "51e8f647af3880d2b77ccd", -- "6a24f8897d3040e8fb1da8", -- "57f40a819546afc89fc2ce", -- "6b0dc0d5521d21af0ccaf4", -- "282f326b1fcbfb463ba836", -- "4d7d33eaba361883277544", -- "298af75c2d584b01ccc6a6", -- "692752e677cdaba7d636c2", -- "277575523998439f834d3", -- "1aee70e483c99574480349", -- "18991d6f38c445ab4b38f1", -- "5552617d9eaca45155f490", -- "3459971422155f9703c78c", -- "40678fa2d309cb9417f68f", -- "2be59650bf9aa57c249937", -- "5ea38165e28694c8629ccb", -- "3e6265ca213c1a0be64512", -- "69c96f5702ae4eecc6f341", -- "62e9a332653e1b103db5cf", -- "62870c281778214067b40e", -- "14bde3f9984cc98dc83f60", -- "5338be8d9f87d3f2e46b2e", -- "5e7785eebda5c8e2f0247b", -- "24183bf26908368eb41547", -- "51f9e6d75a3c5264312643", -- "4c67268f528ba7e8c34a0", -- "708324dd5e787ea3d43a21", -- "75b09479e265b9f0ac9a5b", -- "7972b4774882051f2d85a4", -- "31be6678e513813e0e676c", -- "170a54e825e33a2265d3cb", -- "66fecdf77d13ff6c0b25a4", -- "923121ae3af782c934df4", -- "473c4bff7362fbbd2049ff", -- "61249154ca21ee2b75deb1", -- "23ac86fba80f09945d51d2", -- "19b52abcac8b60d5349efc", -- "3a9c7a7d5782f84fd4620f", -- "674fde01f6057423c31a9a", -- "5533d7d78826353c79c73e", -- "42e88e9f66659afa2a393", -- "18e83fe885c9bab518bb97", -- "1ccb03c008f2e822848880", -- "3665e544d5ec7ed8868a1b", -- "6b25a8073bc36b2af4c2b1", -- "7b5ec7e3346c3cb243b356", -- "34b484cdb4cebe6aff839", -- "260d3af59b4f3d5c208bbf", -- "3d946cf498fbed2d965f70", -- "4755035ba4d9924118903c", -- "4a29c3e62c947a4a1e99b9", -- "4edfb060e1dacbd449d726", -- "29f1e17550354ceae49f99", -- "247f391e5a3b234cf19ccc", -- "7e2be12d72782db9e725dd", -- "47d8e4eb9811f9d409ea40", -- "5488a723f6ba5cf9800543", -- "304cc216ed2272d07c7f80", -- "3292c0c9fda6887e4ad161", -- "24af65fef90e2f99e03cae", -- "2c250894e17e7f4b0dd", -- "77a73ba77b4ed622a17e87", -- "f36396be6cc745bba9473", -- "683a5c6214b92efde4aafb", -- "55247bc5a72b8d3e89234b", -- "6747e95b215a546a339b7", -- "178fa57d907fddb0fe3cca", -- "748df460f8594e0bf1ab20", -- "3b409dc537f82b36a0b80a", -- "69150cde40be119caa92bb", -- "48ef84f7c351ecdc951b2d", -- "4e162f9f85bd081abd7380", -- "32dc0a137f654afa8bd8fc", -- "6f59efef27dbd92df6f652", -- "645d789e2ca881eb3474c9", -- "73a88b6c78ebe25a0f02da", -- "3501255a6a3473cf6ac042", -- "4026f1042b0f5b1e940a78", -- "364b7fe165d59b5d916e2f", -- "daa197fa1e9b3068f7333", -- "1d51d9201dd8c5066bb7d1", -- "1e7a055357b6580f4a7b9", -- "6f33938b3b060336c57082", -- "6ad4c1af807487676eed8c", -- "6a5c41dd17f1f090be79f9", -- "2b1a4dba7447b02833bcc5", -- "1a939b8af79d6b9d1e57e0", -- "339fe9b069fdcbe6f3e985", -- "55e838d685f75c7c6b5f20", -- "38102211c805f10960d5ba", -- "6f9024d8cdd8d69ef10bf7", -- "2db5ff229cb2d0a85b8393", -- "7e1946c78347049b735318", -- "5a2d6c9f89fb24cf28d1b3", -- "7d5f8fcc1cf99dc3131c84", -- "68719eec758c692aaaddb3", -- "a5582fe7b241700d09fbc", -- "3de183e6b991f7b8085160", -- "cd47f8baa501aac7b0989", -- "658a9098281c199cd165fd", -- "476085adcac943f7253ad3", -- "45f39b8c67c74dfb911f44", -- "3cb90317e0fd78744bd72b", -- "509c14f0517edd55968bc1", -- "7a6cf71a247a9aa2ad1f3d", -- "594ab65a623ca11a1d847f", -- "32765eba5563b5336b4375", -- "e4ce3641fd893553aeebb", -- "e73b5b515611f25e496d1", -- "ddd508394009eefde3ac7", -- "b4aa58f86a462da2ed07", -- "4d562b2b0bde307c0edc87", -- "2c30e99c7b2606982311b7", -- "3a997ef0ad242391b526f9", -- "4f754c5d3b280b20bc95d0", -- "375f02bea7dda994d93044", -- "5bd335a49bc5a06867e5e1", -- "63d746c096cfab5f984c70", -- "25d324d633986f4baae0fd", -- "2175a06a641d5e8ad33646", -- "403c1a7f2d528ab5d343b9", -- "1429ba4cc3fbeac84cae7b", -- "4fe62d365b58ffaa0d2201", -- "6bd057cf4845772f81f71e", -- "38dd92596a9fd54920876d", -- "ffbb4d4d7cd961d36be9b", -- "3910da787142c54f4f9b2f", -- "2a843c02b5e59799422e65", -- "4f459e6fecc9cadb8e977", -- "374bc74be1e4381a79910f", -- "4656a2b830782828314373", -- "583e484be506b8efea96b4", -- "36d97c131b997ecd7866ef", -- "40066cef89d0c82982356c", -- "3301553132b8af815a8ed7", -- "475c6525a253fe4a455211", -- "7215cad82f761314bbdd1e", -- "784f7b46f80b03fd06242c", -- "2fc0729bbc7485664f21f9", -- "62658893411360a21b6bfa", -- "775ff949792463791cf8ab", -- "6bbcfc26c4e8fa7b836095", -- "14a9e816ead24aab2e6645", -- "6467af1a0f07013b2e9849", -- "5f019291ccdeabcd687ce5", -- "2311c97b29ff503887b251", -- "623f56668cc8a093bdba7e", -- "3b890cc2ea1882c16138ef", -- "6e0d3cb0378f9f523dd7ca", -- "e50ab5db695f894b26597", -- "500de5789e46431a14b08d", -- "74a3895c1173d1100e060", -- "28c70cf1a34bf4b12fc1a1", -- "260202888a368af1bf27f0", -- "49f6551bb5a630f7f3a91", -- "35984ab233bfbbdc2149d0", -- "7715808f58e52b93fbd9f4", -- "7a35b4347e2b2fcfef4e8a", -- "696a995b7f1bd2337f9c55", -- "765220bfddbe009c12884", -- "6c4e919619ba3e8fcc083f", -- "6908cd3a0537e6d9de224b", -- "8cecd81b395199379b860", -- "73475afc8917dfb47ca158", -- "671133a56bfab71842e1aa", -- "4356f96a535f02cd557790", -- "d73559f9e34900d6994e0", -- "4299b7c55998b524a2963e", -- "6df756715e22975feac139", -- "2e795b59317cae4c039946", -- "638a87cbb628cc2744b5a", -- "2d0786ef10819221e8e925", -- "285121b3579e1afaecea17", -- "f0daaf67c2422477284d4", -- "df5585842155fda65c5ad", -- "41824effd56ee95a25ffcf", -- "5a2e3e7ac883c32720fb5f", -- "786bd6b0d956c71e3d0c41", -- "2dd9e647cd7caac396218d", -- "32267a0d010a3ac60d956b", -- "3bd14b5c954fd788df3e2f", -- "55d4eceed6862d8b7edf73", -- "32bc07a00fc1c32e790cff", -- "e16e90086dfb42533696c", -- "58f251e3a335055f8d1702", -- "45d0bbd0c4c565d517f4d9", -- "47cb5e48534f0fa269ac37", -- "23591be47ead61c7626094", -- "4e9b8b836aefbcc76074a3", -- "7499dfe49d22092ecbaacd", -- "422c99318e0e012bdf3cdb", -- "6dbec10ac45803905232cc", -- "5f091c9040f8e8b4af8c6a", -- "49dd9e128368a6e8f31565", -- "631d5fa433132c920e949d", -- "4a728ba1f43b41e3c8ba7b", -- "5de44a501f899626f11ecb", -- "1db2b63fb5b72bd2913b9b", -- "75c3040748861ea4157368", -- "5714f7d7bb3f12d88adae1", -- "3382f247e6cbcf48a8be0c", -- "436134e757c46fe077e8fd", -- "ca5fc0de7c8f0742fa11a", -- "324b0e59fd313b7b066991", -- "fca82540d3cb37cfe38de", -- "71310c65e10b4b2e1f3924", -- "53034f778656513538ce93", -- "6e8a28f3d3f87aa2548dbc", -- "792ab4b2a318b2229df59", -- "700ac125ecd365c309339c", -- "d7315bcace04536b59c5c", -- "5f9fe5fab5062ae9d40550", -- "7ed8ee73ca5507f25bd5aa", -- "6247c20f5e97453bb71b09", -- "463e980411d809a1713383", -- "546f06ab10360a76005c9e", -- "1c0a01fb60b92af636be29", -- "a5385b7f7d2a505f37187", -- "296401a6101dec9b48a81a", -- "38aece2fe0c1923c569603", -- "e966e5d5e80ac9dc377a2", -- "7eaf3d6220ab7c049341fb", -- "1a01c5dd382ca52c0f8a1a", -- "68ab0ae55863c4f8044101", -- "75b29426909e9c8294f365", -- "39fc8d30c95dd0494e9be3", -- "3c234bbaf5da9465f9498e", -- "7ef05035c2a08e050870e7", -- "7e880bc1729d1783a14627", -- "3df3e3ff8b5241f9f120b6", -- "61c60fa253a8977e213d6c", -- "dcb3217133998c35879b7", -- "19e87845fee8ee9d86794a", -- "1b8c24041b5c09c2ff1c0f", -- "1d4d18f2bee14ee417596c", -- "5197b486ae5dad9284702a", -- "7a4b513ca25dc5d887768d", -- "2e1d98165a5897b1482cbe", -- "494c96ddeebc9c314fa5db", -- "29785bd232aa4bcde009aa", -- "42d71e3ed0639f1b07231a", -- "1439532a6d3fdff49361fa", -- "8c59c1948361c413eed8f", -- "2c9401cd53725f84e2c421", -- "5eb9037bc76a6930985737", -- "6d5d0573b2f9596b50b73b", -- "36121cc69943c0f23f8a85", -- "308787b80145ee403c389d", -- "74d978e8d6a9ce6def9aa3", -- "34242d89a6cc1d4e30fa9e", -- "6106124e06a73207e84629", -- "1174d8cdaeecfc5b7908d0", -- "49f7df71bb684bf5a54c61", -- "53b453f5f30f900af808e3", -- "7b4210ea990dbb2b80bb4", -- "232c5e33740871b389c8ba", -- "3e748cccf5c4b2e587b8b2", -- "2078bac214b712936de507", -- "426ece55a7fd1d858414a0", -- "1eac63084c7797618dd9f7", -- "59fdecdacfa91d60fd391e", -- "589758587c26455b22331e", -- "19e1cce82f85eff6f6b24", -- "16d83b4ed79a537102c236", -- "4ad2dfbccfebf4c881dcf6", -- "1851d531ca021ad6f2b572", -- "1c85ed9416af845bb8e82", -- "5cf912fba9a563060d7b3f", -- "14c7f40a28e01adc5ae1b4", -- "15131878551adae4b04c53", -- "ddf6be61ce9c04533277", -- "48938572f05f540b474485", -- "465d9407cc9bc6456e974d", -- "1df3eb49ffac499fc5f3b6", -- "7e698a24ee9aa726fc4b0b", -- "53e99cd5ced120123b808f", -- "66ba97928f262067fec230", -- "1d1b1bb20ae40ee8d35505", -- "22cd6c35ab2195c56794f9", -- "1ef2f8aa8266e26254215a", -- "14da7875e13efd461f7c10", -- "22d6cba0f681e23fc64382", -- "682b3c7ed60ad7c985a3a", -- "244d1131736a5aea351d17", -- "3ae16fb3fb77d48c6adcc3", -- "3253e31b47819fbcec75b4", -- "507a6d1fd108a63234b38f", -- "3e2cbdf24bd5900348312", -- "34f2e009d684c876c246fb", -- "bb247081da09643c00d36", -- "32a426cd7460f9e5c5e7", -- "48082cdc2a40ccd11ae434", -- "1d616376b444140f9acd68", -- "72bd80f062eb130b42b044", -- "e1e55a565534c74a109fc", -- "49e01d719bf13fd52369ee", -- "2ae496e8d9399061460619", -- "7adc118469443d4f7084b2", -- "7ad19421f012d132850842", -- "45b5b538c44c73f3bf515f", -- "5f8307f0589178f70f7238", -- "54018c8917549d050c00a8", -- "4700bc9de4804ec44122f", -- "d922a909e3b3afea5fe08", -- "46ea38e0c4bb849b39baee", -- "7b87e87e1438c6126ab1cc", -- "499667b1e22348ac584789", -- "137f8e05276cc8f9180095", -- "5accf03c1a20af1120832d", -- "4e94399e1765146189df5b", -- "55fca6cb45a0501d1c50ba", -- "2ea5fa6c2e19e6ee7add96", -- "d8e9fae4ec5d3e7913712", -- "767f863c9bfc5fd6540f44", -- "477273c36a749543489547", -- "4265efdcec74f163498291", -- "43f53558dbb8a25ad757e", -- "7b5d99de82bacb33af7ee8", -- "1d4515e4768ff5c6b4178f", -- "2057d9029cad07c3d344a3", -- "e419f0eced24d03400fbc", -- "2e30617b0abeb387001867", -- "603f9b3bc6733094104e23", -- "fa6bb9b4b92165346e0ff", -- "321ccac2ccfd73a0b28c6d", -- "6af9f591969edf6d33a899", -- "5ebda7b44a30093e22fee3", -- "150cbeb75257f8eed7903", -- "1b0dfe5bf791bf4d645e64", -- "5286bfcb1951cdb460fbe5", -- "29ca62a9234f915c5c9715", -- "3629587577ea6cd990a3d3", -- "4d3d6fd7781e8ff3322226", -- "7377f9449fdfa779330064", -- "7f3f1310b0770a6a8ab4e6", -- "74f8ea2aa01f3e122e9ec6", -- "74aed20fd8f19001dab562", -- "7a9c1df7aec04dc00e3584", -- "2b3dba5edc89810815d1ce", -- "217c2392122f9868740137", -- "43ac29ece073be2a30ce86", -- "4b6b8f4e6118573075d4ce", -- "3cd3f5ea5623ce969c863a", -- "421de31b9083741c4d4c48", -- "1960ca77285b35812422e2", -- "7d40cdfed339cab397652f", -- "51a001a64a22c7bc0db3ea", -- "1fe4c7d7da3eaeaae25e65", -- "720179be8f54eb5c778be", -- "1144f2116d6e426f3addec", -- "10ad00e38092458e73fe4f", -- "72e90ac5d748fbd2d7aadd", -- "18250945b23b28bdd1208a", -- "dee72e6d522c55b461f4b", -- "1e31c413e16722caeb814", -- "5ccfa76193ddbc64186a30", -- "5eb2b60c1d97e4dcdb09d3", -- "7f31009d8b384ea51f9235", -- "7118c95246463e79fab7c6", -- "2af1b36e871a2152d87ea3", -- "1ae4174a64ea29d65c88b7", -- "1aa4bb2c56ddce8ebceb39", -- "65773487e5415b58fb205a", -- "5adfc7a0a78f6657a5960", -- "3d5e0686efab87e5e7c266", -- "6552488fb7e68b138c5691", -- "69cb489051468dc8b7a10d", -- "2885d88c14361dbedb4fb1", -- "17f8a55fef5d58503cdf89", -- "71a2dd2f4561ce6b25cc84", -- "173ef6d2228315e7fc8577", -- "6095ebe0914ab346aaab52", -- "1246f9f5df870b21bcb1e6", -- "5e53c14166e301e45a1c84", -- "3a1984f88834905315728d", -- "4678975ad8ef4ef63ed234", -- "139a5be9fe5d74b7b324f6", -- "4057d3883ee10c31d0c5f9", -- "5de657154513d33b2dbb32", -- "7da4d79cdf3d83f0763c79", -- "7399c1866bdfc2ee9d0ba4", -- "48cdee08fb7cd0c828eec2", -- "4c099f907df9db8a25350c", -- "851fa3652b44e57d9190b", -- "d0d6f30615b8f231bece9", -- "5f305f39404231a1ce6591", -- "47b5376a6bf9ae1b5420d0", -- "55925c1c09bda33b3d0e7c", -- "4aa62ab8f33741774c11af", -- "cebc8496358956c6ed352", -- "4e0f2086acba831702db59", -- "2103ca88adecbfdd3370", -- "5b917d89029b0850efbfd7", -- "619fb115b590487fbaece5", -- "709f8b4e1e81f78ecdd5bb", -- "5c6ce5b29bafc437eda5ce", -- "1c6a5fca595a1ff62b0a7b", -- "5c246c8d9baad4092bd7a9", -- "2f1ba6fd01e5cf713f7991", -- "3d17d279ec6a81f53cd4f8", -- "42af59edeafb6c79b9d208", -- "7e0f7a6620c31d72d9d568", -- "68d1c5df4d9653be9c8e7b", -- "79db0961906e2d46b0b349", -- "4c4fa3875e78671bc1d2bc", -- "22a17bb1e02873c944cbe3", -- "25e4a83dfc2f633765d96b", -- "8a4219421d2f55bef801a", -- "341ee0e329f6ab9da76c4a", -- "28eaec99940a1b1f563841", -- "4f1b7b04b31a6d85748c8e", -- "1152ee1f6c91b44b1faa20", -- "6b4aa7c57cecc522b32c99", -- "49e219e4b19fa82e3cdd8d", -- "5bc9b4c686de112404ccc3", -- "40d9ddb7d82d86fe4dc6d7", -- "6b85f2803d97e818e2e527", -- "321405882a2a0c05f7907b", -- "60749c3a015660029dacb9", -- "26240f3e8816b599bb01c6", -- "1a91a4ef4625f7ae911f1d", -- "18704740809cbd3a91bcc8", -- "532d2ff2bd9d0ca8b344ee", -- "18488f368798b8734164ca", -- "7453e07405f19cfba93c17", -- "3cfc7a65b66e9f8c6f8cbd", -- "4dde9b7ed5a96934e4dd51", -- "7afeb7314079bb05948a57", -- "2f4c8ebd42ef359c5ac79b", -- "2579cde0e8d37e04167a12", -- "368d20177281b04fd8018f", -- "4553e500c491eb2ced6e1a", -- "12a8a0e9fe6ba5c3656149", -- "13d6f0fac0c0b9cd891715", -- "cfbfcb607ba616c016fef", -- "522bb592e89a78b316244d", -- "2db6d4b5b7a928883df97f", -- "928d2a95f60dac2e280f3", -- "15b79d2a607e674b1df02c", -- "711d3de6506cffb89d82c0", -- "1fab75ef67bec61a68a277", -- "3dc7ec06146d405216b267", -- "15c08724b1daf7a590d087", -- "75c2ce5e2535ac7878196c", -- "63dbff9398c6d2cafd1418", -- "245003f901ae0a356365b5", -- "10b57d68a8cfe14ef3ca7c", -- "5fdc8856cd703470a1e5a4", -- "1af9124bffaade4351e990", -- "5f72010436c71470f190d9", -- "50755ca653aac70b84b12a", -- "14c9d693e42997dbc96df3", -- "7a93c6e177d746f5eb503", -- "28d70ec040ec983aded5c7", -- "124c113e25b1a8153a830d", -- "2df0f496cddcc699504250", -- "5dab9e18ce0b8340db40a2", -- "6a410e486ad693817f9d31", -- "5e82dce0d15b40d73e81bd", -- "4e1b51392bd1ad38a51d00", -- "69efc15f2bab10979940b4", -- "4bb8f4e111d078e3c54590", -- "22e8d9bc34a96264dd4caa", -- "3a7c703f2642b17eba0c69", -- "2df2bed0dd9ba405c8c5ce", -- "222dacddb6e77241cadac8", -- "4c996629390ea0954eeb1f", -- "37c7b0fc4e875134c29246", -- "4a78cbf6bef93b38948e09", -- "6c8fa526a6bdbce9f7b832", -- "7633f58adb014bb5585678", -- "509ea21b16907067d06b82", -- "30a8e1972ee45f3e0613d5", -- "63839ba9cca448dd7fecff", -- "290fe0ae5a419909be4e2b", -- "35dbe95730bed0669969ad", -- "2a6c238cf5c57a2939882f", -- "f9d7db7493258ceea1a37", -- "36ded179138f0e4cdf1ee7", -- "4996f8a3f7c2c5fac02813", -- "39bbee3cab035e7fc68b3", -- "741dd990ea20591fd9b5ff", -- "16eeff7e87d3caf8e58a92", -- "2c8f1060dc661c38044a5b", -- "3d886ee05f1bcf69fa4f70", -- "392d9ae31bf22e0236e198", -- "1a7c7fe62effcf2d1a2cb5", -- "65172c59adde7fa1aa62e", -- "389d1e8a26db35e20882fb", -- "7dd9082b6f5562b8d6ba91", -- "18c5643eccf2173f575420", -- "757f2101d664083b2fe8c9", -- "66e9cba0e526f30b7b9b8f", -- "6c33a3a058504d48c17efb", -- "1a908fcb6be810a9e1e92a", -- "2df246fe147cf6a7d9ed5f", -- "3dac1d8f9e9cf46cc42204", -- "3cfed079405fd41004c118", -- "7aeadbfb750a598afce6ac", -- "485bb888b6979f8f201fb8", -- "460858d1e253129bf64e5b", -- "3567cd9077f5bb1d3115a3", -- "28b06a5b8a2319d5d78e37", -- "5c3df551863d0055925c95", -- "260985f3992a168bc7fb3b", -- "5a00aa930e50101d3ad458", -- "3e41b8ea3309221756df7b", -- "216b9b04319fd8da8a6d3b", -- "24a843ed6770d822f92be9", -- "60e3811062f0661e25f626", -- "656a55d45a93fac53881ab", -- "10f7a570b959918609b06f", -- "d755ece5c8fed1e833d4b", -- "5eb96063b604b2d052b457", -- "182ed4a29e8be479e40c89", -- "55e542cd768eaa4ab7eb43", -- "4a1404c02a58e6862d11f5", -- "4366b19aa12542a30c1749", -- "74a0eb9dfa780e171aa5bc", -- "7b34f38b9d16f0d70ddae4", -- "1f75d643fbc4ab52296f51", -- "1cc8bac063e7f4722cc83d", -- "1f1cae187cb4e7e2d75ff5", -- "6acdbbcb1d87bb33b845b0", -- "5a67c62d60522486e9cab9", -- "66727c69de089e222307ae", -- "7dde8d7ccd2cebd1d4b943", -- "3732911ea3b78b2cc54de2", -- "69b04bfb64dc28afc90f3", -- "49a34db8369186ccd3e18b", -- "3087f959a9893769198248", -- "766ac65aedf40f90341249", -- "3c8b578aed4234d875a143", -- "7248daa035ed0c83c2d007", -- "35d310b1c9f92e46c5dccd", -- "747c7a13b706fb28e46c47", -- "e2d9cdfcde324e23eda21", -- "607776583fcde0ad8e4c87", -- "2133efe27b28c873f101f", -- "6ad95985d0ab8e8d823145", -- "35d6d7bb2855d9adfbf650", -- "7a123babe2e7abafbaf8e7", -- "3b0cb59bddc94e18233703", -- "77815256a969cddb479be9", -- "9c6c4ea9b05d327c6b7f3", -- "55137101093be9fb51857e", -- "59bb325b9748e94acb6630", -- "328bf9a8c78ea2ca3388be", -- "6ee757629a9b68ac7e690f", -- "59efda7d6a6d8e6aaaba46", -- "6ce70c288bc2711b1b024f", -- "4ed7cbd3e32dee7a40c626", -- "a9753c820825d73c04548", -- "741d91860d83d000328e76", -- "59aa03a25735023ef97395", -- "1cc96ab6764758e9cff09d", -- "50e22c6cf5d6b70def807b", -- "76f42929010d1ca7619b42", -- "18a6b71998f6f84fd5d814", -- "5fda42ececb40f359e4f0b", -- "2f62056d547ebf7995c6e6", -- "23966403e567312c7a8379", -- "6b7e91fb5948662e3961e3", -- "1e6874a8b307092ad6e72b", -- "31dfcfe645b46b329ee2a1", -- "209910d1159692421526c", -- "3c4374002a4b05edbee285", -- "6df855d5b158377d521892", -- "4169ab1c6bf3f0abec6c34", -- "359b331d03b9cc2451c1f8", -- "3c7a2b6b58424eab86f3b4", -- "7242e44696c19a3a1910b7", -- "2a7311c640e7cf0ecc141", -- "7933956672bf2e4535ee34", -- "455927f484bb8820a2ccf7", -- "551ec7c1ae7ed078f940c0", -- "6ef800332004d6cda26cdc", -- "7630fa097aa2bf97cef6b9", -- "490db50fd1ace7e8ec15ae", -- "32f5fb93813b0abef00c9a", -- "44e6ec408ba05ad98e759", -- "568f3917922fe83ad3e225", -- "273beeddd87cbae01c207f", -- "1a8ed7cad7bcfca4620120", -- "6c362e17e2173449bde86a", -- "191da9b869e973d2fdfea7", -- "64666abc6a9a2f6a1c7575", -- "3c31433d0db703e03c294d", -- "1e74e23fb34c50dc055d0", -- "59652c3042e742dab07904", -- "50e46147373113c54d73c2", -- "776ff8d5492c149f7acf17", -- "318d2300370d914ed1483a", -- "e24946eda2a54a4c98b6e", -- "28434971e0ad86e87340b6", -- "b7602abf832a9540b03b8", -- "3a2bc2968347afc3827c67", -- "5fde1fcd656f65c682e01e", -- "113149ff5647e02c5d8e8c", -- "329c1979af2fa92b25335f", -- "7de8764ca6a43c99d6a50f", -- "7e68cfb951ae556b15fa1", -- "5cac3c06df31850ad70694", -- "357eab1d6b7f6618503b3c", -- "4e66ba0bc1058a3931042b", -- "65f33a2872e25c8a682f06", -- "a5d62acbaf68c52001a4b", -- "18f39bb607de6b1ad183e4", -- "16870479234b3337ddc8c9", -- "7093b250c7b04c2c6d567c", -- "3820d1fc1eab75e925dc43", -- "49ddb3e956e6fd8d65e1ed", -- "7544304d1b3c2594fef689", -- "60483a9742002ed4918cd1", -- "809a8bacccc204134381c", -- "177aa9fd51aa698c4f5d25", -- "2848634cb8eba43423c432", -- "2bd0c39ecff8d002f3a3f7", -- "2bc7683658e815b0850ae", -- "56d7ace10d6e046f35bc1e", -- "1cf7470aa8bed908f93c32", -- "44885049137a26d9ff4438", -- "46436019c4b35e76ea4182", -- "6b4ed91c3f4f0b25252206", -- "1cb50b0700a11348f864c6", -- "26c603e605263eb37ee858", -- "734cae170e5d7d8758c509", -- "3e00e41664141664f70d8e", -- "4d36c683652009a273c69c", -- "61e21b9a255226ab8a9c03", -- "66db9685c97e1039f97191", -- "41ebedf12db1451af99b12", -- "5640578c9a2f674c097c8a", -- "37526cf6c350fc29ecf559", -- "6e93c69a7627e1f9832a61", -- "3aaf5736ed929c1ed0ab93", -- "42cda11218a2f5a8d7bd1f", -- "ea04fd9db78a21c39b6a5", -- "53e3092b891267552e8471", -- "3e13e95a38da382cdac574", -- "7d59312cf551555c728152", -- "57b341376c8eeb5e957326", -- "2fb62f0a2e9435830411", -- "6131db76263e902f303f6e", -- "5e7e83070de3b07a4bc87", -- "54765bab6ab2b394d9dee1", -- "3b4ae8aa403abef29b052b", -- "4e1bc7c2f29a2f520bcf7d", -- "50bb1918112bad3e57d523", -- "3979e2b3d54a21e7e8c1cf", -- "4f3fe475424626758ebe24", -- "26c45bee1cb7e300fef593", -- "20866732367b425f7e5ad1", -- "4779c6f70cb71f00e32d17", -- "24dc2302a4b77b85525bd", -- "f339d2f5ca33347ae8d13", -- "2e178e1cc4f997792ce1aa", -- "54728697bad28cd0bcc9f", -- "13413811d8a8e6bc2e6cf8", -- "1a3337bb0bc288bf44447e", -- "526d1eb936d1a3dec6eeb3", -- "7df75741d3ccafb28da8e", -- "6476d594392ef9fc9a3df1", -- "645cf2dd2735f1cbf53f1a", -- "780a2a5411b159d83dcb95", -- "562d8222a0b94f5af3137c", -- "e859d26ac6c854731c10d", -- "3908eb827c8209b96bc643", -- "61619bfea73d2a10c7a7e9", -- "cf2bf44fe6c433cc00c9", -- "17b5a764867bc2f176278", -- "667b77d58f7f6b14e19bc3", -- "14c79375686a30f4c21ea1", -- "57d421e876be8c87768c1a", -- "a49f38b3c0b7ca1fc5c10", -- "1998c4f90bb8b5465b7b1e", -- "974b1ea8fc3d4665ea11a", -- "4382f99dff4951a775fb77", -- "66b03ec137e6361ddf6317", -- "43f99aac41b05d58c624b4", -- "4efe7cc856d9eef4fda470", -- "35f48b300d21989b05560", -- "79ef58660a06bbc22f0cce", -- "5623f1c8e0d5c15938b2a1", -- "740e3fa0e998e741eb97cb", -- "4f6148f444b84dfe82ecb2", -- "34ce2df12c5e0970f682d1", -- "5fe5a0fcee7c061cf49e8d", -- "127dbd62073fb0c17b4217", -- "31b2ef6b5163160bdce290", -- "7f9a1f8e557617163d5e82", -- "3c5262912ab7e82ffd49c", -- "4ad5e4985caa0c7ee63b9f", -- "5267f1f68134d546ec646f", -- "7f695021b246db24a5113a", -- "11df54a696817409ff1164", -- "5549ebaa872068aae68ac5", -- "236e08f8411de38e44c3cd", -- "1892726d56d4f8f92dde20", -- "457d09be8a2a4c351b63ae", -- "53339d5a01f3d2e9bc8755", -- "ac5bf0492a63aa0bf597", -- "714ed5cb0027168be15142", -- "4cfaabac7104cbad2ed728", -- "486fd3ea0158f33daf767d", -- "61c0e0ff11a378274b395c", -- "5e195ccf98c9a4e1967fe1", -- "3eecfda3b4d92af2b7e5ae", -- "62af499c078af038905758", -- "38d987fd4b450ee5a69286", -- "5f9563c7ca70d6e5061bfa", -- "ad64cff4b4763a7fda09f", -- "26554ee3e9bedb1a3a09fd", -- "42c5d2d1082dd2375a4ef3", -- "7e05b7c7d54cfa1fc7b525", -- "118d29d91686683483dea8", -- "2c56fdcda56f78dcda9b60", -- "d92cf9efd7d12c62f0dfe", -- "11b77783f411c457cf909e", -- "2cd33d1f501e268643d591", -- "1ebddbaa72ad1a2b1cdc49", -- "73f4373aa0c46a1ae61409", -- "64b1dd5abc6713a8f53d0c", -- "3aef6b8ad8d4f116a27e4a", -- "13f9a309c929439a91df6c", -- "401a3ed45557939fa7eea", -- "1d1aa15ce7c8c15f051ba9", -- "398764fa3e177502af4d3b", -- "48edf77c0fc298b0491c2a", -- "1c5b7d2b84cbc7b29bf542", -- "78873bb7282961108e63a", -- "16ad879cfcd3e458301dc9", -- "28b06d6b1f993702509e4a", -- "45242101d43b276b34115c", -- "783d012e8b928ea14eaad8", -- "5afe15c1524eda9627e183", -- "42b636bc4126dddf74cb00", -- "5cd8f782abb8b60cbf36f8", -- "1c5d10301fcf4a14c82adb", -- "52d3cdd253b64a03c5885b", -- "31416a7f09913059dc251d", -- "46bafe88322c67f3b90507", -- "4cb6253df884020966d27b", -- "2948eda7d7c508918c3056", -- "543222604f067afa3e7558", -- "3ae99fca89d15abe091160", -- "140aa7412f6488f5404826", -- "16b6721ea95f55ef631d25", -- "133606f2fed41ffd77b999", -- "4d075c933e4b93da3a33d9", -- "4ed1311eae64f9e834ee7b", -- "f920b02af1e3bd673512e", -- "312518f9c1ce1e690c003d", -- "44bd0de2094b8b3759356", -- "3d40b56764f7765513d13", -- "6b5da25417070642e0ba4c", -- "6bd995ef31bcfd22d52d9f", -- "3eedab106a435ef32b9e48", -- "534c1a3b25194e8cd66e6c", -- "28a37e042abf70a7cb137d", -- "76fbf6732402bc76e061d1", -- "3b66491ccee4801a4e3673", -- "5ef7fbdbf498c8684625f6", -- "3305f9d7ac9bc35ded571d", -- "6aaafc0107575bd9b70723", -- "5eb217461cfa46d5694397", -- "7f5140ee63b60e0a33058a", -- "3fe61d12a0b09791925ccd", -- "591749051e47ee7b49cf82", -- "33440d7d3472a4b6e2f627", -- "4dedb1ba2a6a4abde67337", -- "30485371efc19b50bbafe6", -- "3566f7f67e026f0278dfd5", -- "201e678f30ea96fd17615f", -- "4a2580e03d81912089d88d", -- "68e88d3bc4e8d390ae4b13", -- "46986d0da7a2c17dd1dc22", -- "174fdf0bcfc8d0f4e77e83", -- "7a75be28b1e93e4e0c9342", -- "11081f4b8fb8f0a9abf772", -- "3245bbf080c6731fee74dc", -- "57bf13241507b812b9a904", -- "50c915d40aeb9e4ec78789", -- "530f4c391aa2b0938eb272", -- "4e0326164785519414d07e", -- "389d9fa841750626db108d", -- "5eec1e56c0a2d0e34dfc8a", -- "3e8986648fb4053520276a", -- "2db6e61499c9393946b57f", -- "1b2e283bc4ff40366c744f", -- "95d86ded4a7b26a1ad331", -- "4818fb8f958698b6e9c9d9", -- "21e39ab39cd96423900120", -- "27476789fbe89ef5fe00c0", -- "1b67e56d8c8f6656eac86d", -- "28e33efab89fb4f64d6498", -- "18eb41f414dd28e8ff3a1b", -- "4a648c611ef0b3b0e318e0", -- "3ab4982748b8f986192588", -- "1eacd91eb3938b38f0210f", -- "5227913634dbd4b19ffe95", -- "1d5b0385650d2d81754f72", -- "7351e32ddd53c7465f65e8", -- "202d04fcffa7e3a0ae0585", -- "6b77b6d06b93487730de2b", -- "2f635c018151dfffc38ed7", -- "7d83ba89b9f89b55497937", -- "d1c5eeefb8bb620c573fa", -- "322d1e939066766f918e43", -- "3ea29dc49c06d64c187862", -- "7f64ec3ee1d6fd7b5f9352", -- "749ebfb4005c94ed288c4", -- "6f3d0d822d1a27088df8e4", -- "17b1690a9c9f4fba9154e2", -- "142aa17e315b2096d3470c", -- "5778dc2f1465daeafbf88f", -- "3135a042ca5b8873367081", -- "26f3f960b2ba725c83b706", -- "156e3560db5a642c108333", -- "3adf2b6aaf40f5dcdffdf2", -- "4ecbf2559411992397d1ba", -- "5e3402a24a307a945167f7", -- "553a48facee35f17214327", -- "57c6f0c9d94e02524b4029", -- "44867f919f39bbc1ac8a53", -- "7b1e254e6050240b36eede", -- "7fb445fb34908201d41b44", -- "5a49a0430b2145ead2e9a5", -- "22d9fd1638450186756413", -- "60a177acbb4aeba955e6a6", -- "23a7a59b35972768b71627", -- "ea9789ae096da5bedc410", -- "38419b7c213432cd42f4bd", -- "4024c6847ce50a93fefd10", -- "1f15e66f6c5b160801ec4b", -- "26fb73843bff3e4d17aa10", -- "212d386743b2c2069ec4b7", -- "59377c70bed9cccb346cff", -- "5a80f23e82161bfd2caa8a", -- "21532161ecdbdaac15b68a", -- "5cd8f904c6a0e1c85597c4", -- "2ad8c773fcdf92009db9b6", -- "1df80784a603cde2e8573c", -- "41127c781a5dd07b6ea357", -- "6152b40d63a55e1ef6e750", -- "3161bea37fcc040c6f6494", -- "112bfdedc3401ff20ffcf6", -- "6a3afde1cc784aefb925c8", -- "47a38df2df7f516ac35f8d", -- "6dafdbef06e817ec42991d", -- "72059eace3671c76d67005", -- "a209dce8856336ebd97f2", -- "695d060b1aceccfdfa96c2", -- "17445a9a60b0dfca9df354", -- "249f5358017ada6567b747", -- "b7347a4820635a5852b61", -- "2bb74459adcd7029c9c35f", -- "3684bf3ee3a2b8635ca0e1", -- "600de685f1a4c2f4a236d9", -- "68ae7d3832d31bce57eaf3", -- "7a75b868e9fb50140bd203", -- "1105d3c71c59dedcb33f", -- "6234ffe0f938a25ce0f5a8", -- "41858e467a21a3938d60aa", -- "7332b41a9fe9dfbe59f71f", -- "313ef612f2fd65f39c2e3e", -- "49ce8855b52dfbb878b2d3", -- "46b1961304e45b428bd48", -- "1740e5e9a57a4e80eed5c8", -- "7f035a794c44a6a57abf00", -- "6eb090e9b1df79f4d2226", -- "7f26a6c99362d1126b6773", -- "14e47840962745e9f2bba8", -- "28670ba592cd5a2625df3d", -- "5c00c9ce80be32396ca075", -- "4cc8bba01b6788222eb375", -- "581f2a492a4fe468c3971b", -- "6aacfa3617f47dce14015a", -- "3988842f76572373c3459b", -- "3146d29fae3f74014572cf", -- "27216bcb23514df00030b1", -- "36baace22f2d7a2014dd1e", -- "20b11d38582bb81886466a", -- "5aa25b718982092494e872", -- "3f0eb0b9bdbbe37f40dc5f", -- "5c4dc3dd9138eb7169302d", -- "503bee64726b7b32815f44", -- "7175ce67c0c74c440327c2", -- "3fc3680285719ed4f7e7fe", -- "7fc9fec9506aa1a0661240", -- "122e1cf4ba920fb923d0e1", -- "5570385cc742f16a21edc9", -- "2a8b319bb90a064d3cc523", -- "797bc83e9789b064b51c92", -- "124aa58a7e2a882689ba12", -- "5ee825c795f457b727b9e8", -- "475c02da59260b083fa105", -- "5f427b13d8351db71dc75e", -- "7dca64fefd065e0893d874", -- "88658ceb2447416239af", -- "75ea3318a1054593eca8e6", -- "21b1555bb331b89f928e6d", -- "7e558ced95c8a49312174c", -- "71f02d980dd943488cbefc", -- "23e36a6e12831353ac1afd", -- "1073f10b92dd8a202017b2", -- "a0ac3885d2cb22aeb977f", -- "2ac1793993d045ec4ea0ab", -- "4e33cc0d26d44c2394c8d2", -- "5430c091f416778afc3f3e", -- "55f3bd5a345801aa67f91c", -- "18bd8096de042467441c8c", -- "1dfe68dd4d69d0d5368782", -- "a69b0e544c08336c9606b", -- "405224a222d42397ca18d2", -- "5ca40898d5d325e557e04e", -- "73e9dbd2873c27040a215d", -- "56efa25eac0d5f675af6b6", -- "460f5f98b19a4d353358fb", -- "28593d93a1a2159e16cc13", -- "1eae59f579b122f18b84d1", -- "7f29a05b16052f06eff50a", -- "2ac52045b3b592dfbeeaaa", -- "6003c83a8ae5ae42a0956a", -- "3af2323baa99fc6ef534e0", -- "b3a488e23273b8e74aa2e", -- "dde95ff1403621e1e9c39", -- "8b93e9e7ea54df6ea61e0", -- "382238b03129ae3a8cb2e2", -- "7be85a588e4f01b973f9a4", -- "3428c448a20f463714e16e", -- "46c829e7e1980bc26c13f9", -- "20573b178651610a410e89", -- "16c1a9b3bcba979d2fb250", -- "46bc67034da17d5b7c72cf", -- "abe7e5169767e92b8517c", -- "10a7cb0c646bfbfaf6b1db", -- "3e27d166777ab6af4a4b75", -- "560bc3397e1eecda48e8d6", -- "153d46a7ad0d4c7b81a83d", -- "7b625b197eb76a08b19ecf", -- "58ab9a24dbad2ee2c0942", -- "6b463071583d5d51119c18", -- "58d985a1111ffbdece42a", -- "772853e9593804a23d0c9f", -- "3566ae3cffa53b48308a5c", -- "3253a13971cf24cc306f4e", -- "161741a6fabf2be3cb74a", -- "72492bafc7adaedde393c7", -- "4d17bed73f2032142b03a3", -- "43ad0b393a7c2a4d667efc", -- "5bdacc4f0e9a9f3c5eb7f", -- "3fc330d82c00c3c98129ad", -- "2287f22a43e09d12b5fed1", -- "113203b24e05e4ff03bfc7", -- "386903ad1ff043a2a203ff", -- "6efc437814b1b1a8db77d5", -- "60d1cb028fdf2f7506480f", -- "5c08c8490ead830327cfc3", -- "56d1b28a25e58905b948d1", -- "6473a7fe7461369e02b551", -- "43240f690e895ee2ce6199", -- "217e1d11ab05e37175e942", -- "115af287df30e3b9382159", -- "3d01c0ebec513aebdf049d", -- "3b607643718a1436cbf93f", -- "392447173660d27311fc56", -- "7fcabd5ff8d8321877d09d", -- "773e49f5dd28ab9abcc4f3", -- "333e4709f384c49fba280e", -- "1a5a69890d5f080ad27aee", -- "142700479fca005e365a5", -- "16c859dc1504abc8bebb3e", -- "8e1dc29eaa3429a93416f", -- "3d2c4d19f97ec14b7f9a20", -- "b80a7edd7c5745e63c50d", -- "7eacc570a117e3d2c4ad3b", -- "5a4b0bdbb9a3eba57ecafc", -- "2bbb60823308802716b002", -- "60de98af5b2e9794ccddda", -- "43f106dd9b706c7cbad455", -- "247aa73439f114a2bae1f5", -- "404518992cad409d30e138", -- "483592c4cf34d97823b087", -- "303e55cf5d940fa1eb0863", -- "27cf1a1e36d6b6fbf673f1", -- "753e3ffd723c55ffaa57eb", -- "527df835ccce3d0d8dc6be", -- "501c73bb8897e8a9b644da", -- "2c748923f66e9b836e2956", -- "252a9565fc2ed88c83afe5", -- "53ee027a60ac6b8703b4c4", -- "11e3b65e520ccb94e0f28b", -- "1d82fef6b5daac184a21bb", -- "34f1c6d5946b4f8e9c34f2", -- "78c36b7a1a1ac86080796c", -- "3c2561b4603673cde220ff", -- "347e522bb35549d788adad", -- "c5eb765e74f7ea6040509", -- "6b91d4c08bfb155d85a09d", -- "1d345a329131e03407a9ae", -- "7656e2bcd13769bc7d3690", -- "18af2f7c66ebae2215b225", -- "5c0b858603efe861d8e554", -- "3a948a48ee72242647aeee", -- "5eb549dbd9b640a1018c4c", -- "39395b9f947ccce230cc1d", -- "2983f80020a9f6532ba834", -- "599c6bd84b32b97e000cad", -- "494a8aca14d077b143ca10", -- "5514a9f97c736ef89e2558", -- "22a2f494120b7469421488", -- "6bbfc916f60c65ff6069ae", -- "988dfd270fa06d78d9fba", -- "65e3000fa520e5bd8bfdc3", -- "d79412155f3d978866277", -- "540f6a5d04324cc6ed1398", -- "5193e0be567990b2818200", -- "5527257327c4eade309a67", -- "6a6ceb53a9e08bce60e22f", -- "3bc0b4b12c4e0d37097319", -- "6446d75a31a4956c235943", -- "70089a05ca7765b8ef62a5", -- "78050a04d755b7008433fa", -- "4cf40ea87be0baab3f0a23", -- "421f5a540df5b7ba309bc8", -- "22aca8e5833c97719ebb51", -- "595eaf076defb81f21236", -- "324340f1f7ccc9eff05524", -- "490df281db25788739ca0c", -- "7cdb727ae2bfeeed50af45", -- "8fdbca74c18894d421e52", -- "266efd2e0daff29e309d38", -- "2d3baa252f4d982bd2ad11", -- "26246e8fdf408dac8fd2a5", -- "4dae59d140c542483e12a9", -- "7e37627adf10efb14adf13", -- "7059a8ae14b27b87ae7942", -- "5d0b6fe03f574db311d01d", -- "4450b05b160d8c53288cd5", -- "5628eeca86bc4f505da4a8", -- "59d6c2db6f995cfebbccc9", -- "32c247d46291051243da8b", -- "29ecceda91e2de99bded7a", -- "697bd2294052d067eed5b", -- "35d846be55b3952e278ab9", -- "3846b043ea9479616ae948", -- "460dae8d89d7708b43a1c7", -- "6ecd91e762474ea500bb02", -- "78386c3f2bea1d92b0136f", -- "5d36dd2a4f038c91a8e525", -- "2567685d25fd668a9a024e", -- "484fed0412b66b4ad6689b", -- "11e987960e92f0cfe9e7d", -- "48457eaf5bfbcca641689", -- "5e89ffa159d58051edf13c", -- "ad8ecaa59795b2101aeb", -- "4cd6b5c75a375bce549db5", -- "17a8f2f3a036b54c467b7b", -- "456d747923e7fcbd260fae", -- "38b2a18fa105ae1a1e82c8", -- "36b718d293f968b4388def", -- "6d15e33dfd91b0adf65ea8", -- "6a47915604a062b94c626c", -- "63f2b709d7c6ba1ce60255", -- "73da067d52334a718631ff", -- "68c11de19f57751aa11e9b", -- "1b50ac3c3f5269c1d7aa40", -- "51f56cb5201bdd22f49e70", -- "245ff16a71eb8c45257fd0", -- "7dcfee63c4d594e4583601", -- "604b2e853911ce83225aba", -- "5bb6095d45a0253a5e3e2d", -- "14b7709b903167ca33c0bd", -- "6e6871265fe9883143d121", -- "453649c203cf983e439d84", -- "5819cdbf42afd2334f96", -- "3450478bbaf1db9aae9e0e", -- "35a56ed2078e145e9b5d42", -- "15e468fec0387d9dcde2e9", -- "1f098e306099d97f37bcee", -- "108be849403d8b9e0adadd", -- "432bf33542ea8f8c0e1cab", -- "1fe772e91ad75a2d2792c4", -- "2aaf602c5ad427702561f0", -- "66c37766a09f2454161188", -- "7c91adf751ba7b800072a4", -- "587965194057ffad1ed72d", -- "6b189bed3e1ee805a7089f", -- "656e0aaff42e8f100df7e1", -- "50d8060a4c81ac0d9dcc9a", -- "3b142ae3f666b5a458fd6", -- "11216382d02fa8a680f2c", -- "640821dda0f544b159e25f", -- "60ad8426c5228781a660d2", -- "50b259ce6ef7786ad19380", -- "617907260cf1e3612508c0", -- "2020839307f0a0b2a66465", -- "6c9aa8a230f91d4e6f84c2", -- "479f0a9b95b8f0e630df10", -- "74e8524ea4276a1585abc9", -- "1832f7608c30377f8a27c1", -- "468227ba06af62fa70d6b", -- "46ae03b83630be869f3f67", -- "1c429a8aad032b85e815c6", -- "784a6ea72c75433fa2c1c0", -- "521255c27009b10aeef14", -- "6de250d6d96fba0a4a2df6", -- "1a38abc6055dcfc6f54cd3", -- "459fc4d70a1a8040309b48", -- "5206d5cc4cf74b102b511e", -- "1621052353e1bb38663f44", -- "6869e474162fccd5e6ce8a", -- "265a6fe3ade48b79bb704f", -- "1683c065332572cac40e7f", -- "40fe888eb50954f82f8f41", -- "5ccb3321bf79805e3743ec", -- "6904f88af6eea4b3f91bbf", -- "a70e6c0e6da7b5bd943d0", -- "7b7c35dbf0dd6b94d050c5", -- "4ee9fe013ba8fc6ac8d470", -- "1825a2f6c03df8e89a424f", -- "6495ff035413be2b53c45f", -- "745f8230228fe0e913a537", -- "57ca180b4c6f8c3a63ae46", -- "5963fe850d852bb19cdfe3", -- "430a7ef273c75f6860a9e2", -- "28c8b8ba9341ac37c38695", -- "88d1f466f33239ebbee3e", -- "7bfb517a9a7064f7f0b9cf", -- "222ad5a5eecaf564928d05", -- "31f4e6b45c1cedb6d4c94", -- "9d0d5139d46e4d9db3662", -- "46ea372cc256b25d8bedb8", -- "1177a186084a0188e6b25c", -- "79973f898e87ee6433e53e", -- "17f90d7760ace90b4281fa", -- "4d06acabc42f8f6c6561a2", -- "297ac6d1d91b19c8ceb3ad", -- "76930d75187c32e1c0855c", -- "ef9f73cc5ae815a32ca63", -- "3ca5432d73f30360d5e251", -- "2eb29dd03203d9dedca2ed", -- "3f719d970328ab86444133", -- "671a35180c429ed6cd73d6", -- "1a5a3601f9e5c757413d21", -- "1207f0afa9b17ee1e3a14c", -- "64c773513b07ac7be226c5", -- "645491f7754448588100c4", -- "6803ba4d96f3cea5b5b619", -- "3e8f3fee79b0aa7d3158c9", -- "7c4c5a07ab45db64032f8c", -- "471e19dff79f0bf8dd75e4", -- "736e4111350ab36a2be4ca", -- "70eda2a92c3f3d551052fc", -- "4be7ae42a1b71df0fdbed2", -- "38e1136120c0a50e7c1942", -- "34de10a25d48bbec6bc310", -- "45fae251151688f6948ec3", -- "a5803d95905530efe4cbc", -- "29c81a2bbc75ee65e40fbe", -- "5d0e736ad9b0e048c53cb9", -- "62a6ac9d0c5e4b3890d61a", -- "16587b1213183c74388d6a", -- "30455197024dac28f22ad9", -- "5c96c4bf9c30f05dfa52bf", -- "2e14fbc2ca9b056ee6a0e6", -- "544e247e73028cc23b1f51", -- "7569e0846a7c92c5b07e91", -- "2e37e64613e6e49f75ff6b", -- "75393667821938c0e5a628", -- "2db4889991fd96d5a3dbfa", -- "6b628f924b031ff396258b", -- "5c721c1e9f943f1e44c526", -- "4845e19f6384ed5724d8ce", -- "451cf4e4a6ce149cfc4095", -- "69cf5ded5037b0fc848b28", -- "2144bb26c3488be851e3b2", -- "2582d22d55dfd72b2d70bf", -- "67fe64c68be6372b30260", -- "b5ea9188a76cbd4490c2c", -- "2f9195fa1721a36e6f5198", -- "371b6d93bf32954a1ed005", -- "2d248bd8de364598100d1", -- "3476974a3a56c244bcd4ac", -- "7d10d41f081cc53194454d", -- "9ae11d1f0b2cb73496a44", -- "3c11b4ca34c3237b362a26", -- "3b62b01334bf25d1f5d560", -- "4a9dee0a96c91e7cd6d7ca", -- "2d8ba9bb83d8b7dc77cc32", -- "394242cd2ce4d5c927b1f7", -- "13ef893fe161bb05038778", -- "210aaed4cc7b55edc4255b", -- "72bad07fa5d3ca19811efa", -- "1856ece5542adaa42b18cf", -- "2f775dce855cb22a4ce4b4", -- "1b3d8a50e5425c7a4550f6", -- "3fd38eb64df431878b817e", -- "1f372d16a7c783f301d859", -- "2e99bf2a9cfd14eb01e4dc", -- "739d86f4db437bd59681d0", -- "91782b2d8bf1ec8b6e4db", -- "13089f86ddae7614e1f733", -- "4374fb07e1eb1efc714a7f", -- "34026c0467a5bb1302960d", -- "1316737cef6e8d73f98c46", -- "308b1811fe8c7d6801df6e", -- "3b6333c6dc16d5f4351c47", -- "30151eaad7aef0e79d5e07", -- "6d5ce69503f658697314d0", -- "13022f601d429947abd201", -- "278331e342f211746f0d9f", -- "44fd7c4168c2a61413dbd2", -- "77747c8e4550378570ec0d", -- "31934713e4ff1d0d7cc583", -- "5ca455ab52339850752f94", -- "cc47e7e925da6c91fe510", -- "18932d3a50056ecbd4c0", -- "594820c775fd57d86cf9af", -- "4ad8d4214e4fe01b143d8", -- "179c67b2886cbf8a80171f", -- "60e1157dceceaecc3a16c9", -- "507a197204651599300f85", -- "1da6208947854d10119a62", -- "2fd395d2076e94e7f79f79", -- "3326fb026bfe153a5a80e5", -- "214b26c5cc4d2d1d455254", -- "2a5beeac5cc34b9b70fc5c", -- "73037907fb5b7e20bf7973", -- "622155e1a7c16eb9e6f098", -- "47eef469d5e96dff3b60f7", -- "31b42ccc858ccceae34d5", -- "68c711e371efbf9b278db8", -- "71e107fc4c98b40c6f7b53", -- "2a2840d0a8db4a22fdfb53", -- "557e56b5a5dcf30ae5f48", -- "5451512089afcff74e1bd9", -- "6a44a264bb1144d86619f3", -- "72316f1be6172c06994a4d", -- "d5835b5723a9063a2dd80", -- "232ce65586f95692d89383", -- "2a8c9eedadb6f6d58c06cf", -- "f5eef843bd404a6869b17", -- "720851fb976798365a6829", -- "6e8b7f0e9607e44c1f9f65", -- "3860366ed3637eead94b8d", -- "30d33e090854573dfd98f5", -- "682291bfd680e2cd8f9d70", -- "7c1fdd60de643e750fa1d", -- "774b9d1f08bb74ab682979", -- "7b5f04e933b2e4204cdc65", -- "2c36a4d87847724f9fdecf", -- "2c941d4c1c7d68ef593ae6", -- "4576a87293566d06f5b643", -- "86148c3559c855d7a4785", -- "2d0a5221661bafe1bae3a0", -- "4eabe0db8ac5d733acae29", -- "1dff7b3a25d6efec89d4f1", -- "93ecdd9b52d588b62ae9d", -- "4a5c54b88c3afab5d73bb4", -- "50873f081856faa7b0c6c0", -- "7a4c62248fb05a7ec5f894", -- "6297ed8d827bde2f27c592", -- "4f88d842683a24f7a78b4e", -- "6543f2ea86c39aa319b565", -- "1711e7c4ddf7dd725f454a", -- "6e925cc1e63747fc8301d9", -- "428c02c3c8bb1613aad2fd", -- "1b12fc1c7d3ee5cd24b30d", -- "38618fda51c023d44b41df", -- "75ecb6eacac31eec1c8d24", -- "363495385d4023abd7fffb", -- "52a170878e73d2b9a73398", -- "40afd831d872bbb5ba2dbe", -- "6a2bde70b440f36a3a69b8", -- "6cdde5dc50cfba13ab15cc", -- "6102d4b92b578db1756028", -- "1d72e71f6a57243468bc42", -- "4f100cd2b63ef0cdac7165", -- "56441a020eb196f9ab47f5", -- "520d75e4874b90e95d0ac6", -- "4ad5b5ec9142810d730c91", -- "6369f366be6b5ec99ddddf", -- "4ae3a5f46681ba13e649ed", -- "33e094a7802d99ab1d9620", -- "58ca4d190a0f756173e746", -- "4afa034c14d96f077cc41e", -- "3277a60ca85c986d50dee2", -- "61df6c089b8a0a75da0288", -- "3a9ec75af3c8e86b8c1b73", -- "7ca8eb46f6df31902607b1", -- "7a283d5e2ed98485e2d260", -- "78ab001943d18ada1f6d03", -- "56f539741375576aac816a", -- "75fa74ccac539d6f2e079d", -- "7108a03a28803eb91e8a0a", -- "3756665d23e5dc56d35905", -- "da96dc29f77c98efd9a65", -- "54ec1fbecc620b2a62de33", -- "2e564f6ba5f6f74e33f2dd", -- "86aa65ac1949dd8af6918", -- "605ccf0922a0c35f768933", -- "4348b708829c7eddd56237", -- "19d3eafc75447dbc2ce4d", -- "764156f5d90616c8c45669", -- "51e2ff830fcf99b4147ec", -- "2d30342ea20393b89b038b", -- "6745627963b760ee39ad1a", -- "76c344db7c98c1b1fa25d1", -- "5b872486f12a68a939069d", -- "274cbe37d4fe65732936f", -- "27b48290f4bc222f54681d", -- "1f7e1880120c76703199fa", -- "2bf0a5cc2a5150523d2e64", -- "2d3b2e3d52eac5c09743f7", -- "46b7638024bbab6f336734", -- "71f7ff7f6245492bf4ba4d", -- "6ac96f98fa78ffb692afd9", -- "1c63d031374620336f8c7a", -- "5eb0e751f365585e4f3fd3", -- "24716274d6f1761a2e503e", -- "3b663e3e9013cab9326fc5", -- "231a1fa6a52f8377b2ca86", -- "464063c0e0f5e5eae1bad1", -- "4f588ef825e26e596e160c", -- "4adc76f7cd88044421953e", -- "228eebf60c055615805405", -- "3d32a6b665f10a829cfff8", -- "ce584760ca84047b25a4f", -- "982362cb3f64fc2535f18", -- "2cbb69d06f0ba3051ce433", -- "2fb2d651d1a5fde2dc4d89", -- "116822d6715118a8643140", -- "52e4d0f780530e040b8198", -- "4d84d472f48a1f27cda4fd", -- "23675569b6f74cecec658", -- "7273cb20026d3e5dfa9567", -- "5e5c9c54f1f75bcc98d1bd", -- "37150fd6c06a98e84f0fb9", -- "1cae4d5a0b88eed0b2d97e", -- "5e6c438c53b4bfbeab6a4c", -- "7ec0ec060d3788349445a5", -- "394ca6d6650a3a703c8f0", -- "76a4bcdffe1207b9c84c3", -- "413062fa329dcbe3b8887d", -- "137786296b1e5f466871bf", -- "1bff1788b61c434292f278", -- "67ae16da8f876a2c8dc80f", -- "4f0b0a9e8338cbca398b3f", -- "7fe713df2e65b878c1edc6", -- "46dbd89f4ae0d06c0ab8e0", -- "3ad2c2000ee1db409ffcab", -- "235057c5ef06d64b0093a1", -- "2b1199cb9ff7848ec581", -- "16a7968fcf87b51aa207b", -- "7593ab2f13aa524b76e104", -- "569b68c3d77231282d1705", -- "54f01285acb2da9689a386", -- "7c50148337071a44808f27", -- "157e5726ec48e98ea5652c", -- "a0b14921f2ca115669309", -- "540974d1b3361c5ccd3a2", -- "30927374f464c892c53b50", -- "5c0de6f6c164f44c52de84", -- "25f3d9fd234440b97c9821", -- "659ccea55ad34dab51a321", -- "308d7af9cf09073e61779f", -- "48dd5aa0d80d3fd4d31225", -- "18d28f7c13bdb1a27fc315", -- "37c639bab06813135e6962", -- "716be1338eb9fa3160de8a", -- "306cc735643548c81d480", -- "15dc7895737fd27e2fc2d8", -- "ff910ecf2ce1ed443b3a7", -- "26e45399ef9d09b479c0d5", -- "5a3548ae1dc271964cafb9", -- "1e0b5aa4ebf1898b7232a8", -- "65b1a43ebc40ff17757bfe", -- "35ab264ca762acbf67e1de", -- "67fe63e894b36bad057249", -- "901282766f87bc24e50af", -- "3f8ccc4c495c412c1876e1", -- "2c958c952c5c886c2a60ad", -- "21a95826890e5cccb8a83e", -- "190017f50befaddece16d2", -- "64f3d838badcddd9bfdd0e", -- "7a7cdf214176b6d3191883", -- "30436781bd712f316b4895", -- "f5d2bac49777fc8f10242", -- "66de0cd9d504d0c8a10caa", -- "11ff8e8d5e956398c99ca4", -- "2d83b4eaa1c8f768e56c30", -- "58689766e836a562c78c53", -- "1644cc3e7fe80220ef2f70", -- "69a00aca76ae6e660be7bb", -- "68e1a6376fdb4eb7b4b0e6", -- "5c37d517c640ac7f62a532", -- "3aa36ece405e3ccd9341ca", -- "345343979af3beadfaced5", -- "63ca1ec0700483b8f859e5", -- "14b8d711e9732dc1d81b85", -- "5d1cdedac3c1f047923b22", -- "1f88577ebb6a87d8478dfc", -- "3cf63e3a65a7e509ca6dd4", -- "64e35a2939773b306ebb74", -- "4e5afb2e233daef8a9bbcb", -- "5dce9f322e405cdd3dc195", -- "49fee8b58237dc40ba3c5b", -- "125c7d70d2b6d99ae885da", -- "7f821b6d896942293448e9", -- "44b0628f84b11c5e71888", -- "4bc252b0fa653478344f1f", -- "31afe414b9e841f105214d", -- "46bc16d9041c2bda07b158", -- "34ca1ca17d4004b63727d1", -- "1adfa664cf45ca975af0f8", -- "55b727631edd20582945d2", -- "6649997ef28c919c6cae0f", -- "6332e8b1655b1a7193eb45", -- "7b8a17b08fccb33f4b7d6f", -- "46c01f4170feea6c601e12", -- "68d895a65569cf3ef3e3ea", -- "782fa87576f745d6c5a644", -- "3561d1a2752f1d17dd5823", -- "1c1f24204ec4b044c10ff5", -- "4ef1c6a1bd63bb6b6207b1", -- "33fee942f43e9b7d2118f", -- "1cbb8749de080f5bb23b75", -- "4680ebb5e7e7fa1e676838", -- "2cfe955ebd8c7e4615715c", -- "93d0f45c8e78eed19b2b4", -- "5411d9720f633bf7a356ea", -- "7ae4ce9746d1a251afde2", -- "6b6195f4939abc517ea1fa", -- "622e4bcd237f601b3f864e", -- "552dab94d8fab803e3abe6", -- "5fea5590381b705c4ba54c", -- "47a6912faf0eba695a3f82", -- "62d4635d0bbd6bf8fab17b", -- "488702c5b90021b8b24933", -- "b44a774aaac3d4d335389", -- "7c2eeaa3b5ac7ca26ee5f2", -- "4a79a4d35e92cbac8fe0c0", -- "145ecffc8b532b7855ca8a", -- "409705e5654888d8af2f47", -- "4f5cb9e29c3567f8c1b22b", -- "2ad535a50fda15e1835526", -- "4d55039bf17366425f055a", -- "504e8f5ee0e51320af92dc", -- "ae1614cb7437dc6311ee9", -- "3d433adb4bcd914fcfc4", -- "633dad9eec0d451652bf40", -- "15bc81dd36a0393963bb64", -- "720d9e52c4aea85ae24480", -- "16f5569ecf073acc30831d", -- "50a70d2086b5ca78a90368", -- "7e688d1cbe7e0a84a0f408", -- "1f9e8bffcac3e1471f7cd6", -- "78ec94c22ee912eded5499", -- "336a41277b427813eaa191", -- "1705c133c7ba24a2b5c528", -- "7b7e71610f1589da383c31", -- "58137399c99866772aed9a", -- "282774a1f4bcb14e6723f9", -- "7b85e0b99eff408f2aa978", -- "2a5043ae183d338b7ebd55", -- "af99b9d024438cfe9df66", -- "d4a270719a348af6d6c29", -- "47262fa06b9c5ac8138f4f", -- "50c65d8772a3d5db269535", -- "20b1838f00aa00d07f70fc", -- "ca30526530b6f6f0c8fca", -- "158e9251ef94651015ecc3", -- "636f015a0c62753b283d5e", -- "4573a56ada0a29d31dd6b4", -- "367efb55edcaadbb5e4f2b", -- "3eb189e2bfcbe180703cfd", -- "692adfabb87ce969422961", -- "434a5edb31a9c3c6a0243e", -- "77664e53908d00007d1205", -- "4b11585991700c233f6773", -- "207ff6a0da7f13b316c4b0", -- "328a9932d6b08a41a1df0e", -- "2f927b360b2b43bff822dc", -- "257564a39a648e17d015e9", -- "73e92ea015629e3728aee0", -- "4585b77fea18a0113ff609", -- "101d83882a81d0147b4342", -- "3addce3c43218484acf509", -- "9f0c9a93eecf4de349628", -- "465f3b1e25cde0e446d90d", -- "4ceae8c6ea35dc274647ed", -- "63137369b8d47b6c9c43df", -- "438f5c0f163a4dfa04e5ce", -- "313d62eb5f1104de5421a", -- "9f20b6fedc099ec575691", -- "24086a392ab75e649d3cc1", -- "7aa96a9fbe718c006a48f8", -- "8000000000000000080000", -- "57f0f7ecb2d7dad43748ee", -- "2a640efe463008db4ed634", -- "45769a307f5593bbf72056", -- "3abbf8af06f889daf59c4d", -- "6d16d10feb1728044f2dc3", -- "5bf1d1c71be0c49ad75d9a", -- "16bed27a9c005817ccf111", -- "4d7797e0b2f77a7ffee785", -- "3845bd22f959dda9197376", -- "1857324131e535b1b2458f", -- "6335fb7682400180e10d15", -- "50226b4aa22a0465ceea0c", -- "44dd70b9323f17568e4ba3", -- "217bd444ac8e9808b3ae5a", -- "6c9c81ea487986867245b8", -- "3827b84269040363e5e02d", -- "64520e4823f48c1f48749a", -- "58fc1b58696f8c22cfe344", -- "41558cae58d4f9a9001b87", -- "38910d873da8dfd237e8f0", -- "5eb76c6301d8a849a1903f", -- "3b6b43619a3730d5995ae4", -- "5f2bc99aad2f27cdee05f4", -- "385f7f48a7be6b46d108ef", -- "37d50d7838efaf03049cd7", -- "665bc65420c0b0a151c97e", -- "3d9abe3ec82d9602d9dd6b", -- "634d2540fd670a82f219a5", -- "616dbeafd6aa623c1a7d7e", -- "29702fc1f57fddc3369967", -- "25920b5c96127e9d8ab05e", -- "3a82369bb1a4da519bbd70", -- "7f216769148f0e997c7805", -- "31d809b078cdefaaf45266", -- "7a6ffa939b86786a779a44", -- "68e8a818d524954278bbf6", -- "181ee17c34ab8aea52c900", -- "7f42b66317d26c3f938805", -- "6f37e3a85128974cdfaa69", -- "45813314ca1d165bcf242c", -- "64add9cabf8efdd5f7b57b", -- "46a91d898168488fd5ac51", -- "669f4c5ec3934953500b78", -- "1e378fb7157cdaa6fc3a50", -- "39cdc5e6675ab081ffe60b", -- "1cfd8f0d12bcce21589c11", -- "6ac77b7cb23565518aa2d4", -- "4628eb872cffa1868b96ee", -- "23eabb9cc5f4086c74bc31", -- "445381f98a1f5669880827", -- "3f603c7b410b4c2db2c8e2", -- "464550e0adf269403f3e22", -- "3286bf159405584d85567c", -- "356497a9675898bccf4e79", -- "f26a2dc235ace7b34f4b6", -- "2e03d3c0794703b9605de0", -- "30a18088f5b2af396bbfd9", -- "681750fd18618072db2068", -- "69fecb55ba6da700789d7c", -- "2294095a6b77aaa416cbd7", -- "ab8e1dd4d27b02d09fe48", -- "7fe887d8c5fb53af79cbd6", -- "1ead89a48b89a75ebaa7d8", -- "10d0aa100248920b9cab77", -- "4aad58987821ba8f33d96e", -- "5c616b0d1a7bc591e70e46", -- "24b22771f303ef742b8ce1", -- "3eda92314bf1d09cb5b08", -- "692eeb4ff69b42372517d7", -- "494807a247f7ffab73a644", -- "23564d97f447b0091e74ce", -- "2b81c6e67e55aeb6e93a", -- "4669a41d4e444c1284d024", -- "61036fcac29b84e5ca02ad", -- "2625096534f2cf10d83a26", -- "30cb89652c8629b5e0dcc3", -- "606e14eaa7d60eb7ea925a", -- "17715e6c96cbe096c4f9c2", -- "42a81f5e10b5435180e643", -- "6d849a39e47370e473a913", -- "6116bef6a79fb2fc15f0e2", -- "31e8a39712fb3a7a11f909", -- "7511506751237c1959933c", -- "1e47a4330f0bce93db13fd", -- "97342eefdbc78b9689120", -- "b1fe15d9ac88348f41a87", -- "296a247b4b36d5c2a1884f", -- "aef2488954588af921ab8", -- "351db0dca5d74808f36d33", -- "25df9f831698604e15991c", -- "761e42e1c908c2f09e096a", -- "5e73615c65ae9e74eb1ef3", -- "4354f51efc9392bcd6e51d", -- "3f7d2ee6cb32c6bbeee194", -- "394faf6069c716fcf8a76c", -- "51d8b3e6fa0afa106abc40", -- "5aaabbd40fa78dd417edf5", -- "32d68fc9b8a9c17b315382", -- "6f24ffc802a08273be511b", -- "452816c1b54aa2bfddcc17", -- "142c59f31fc82fb58a7dd5", -- "7233f4136f3ace41bedb12", -- "2c18c59d95a21961c42f21", -- "7eb8dfe838ec5ef9d3ee21", -- "19915afea85d27cf8df109", -- "4e1162d634d0d5811a2441", -- "43e36b6d5a937387b49f6c", -- "295932427e10aface718fb", -- "5a2c8ca58cb488822e9f49", -- "622b540293b1275c5a9446", -- "753f0795048443573283b2", -- "3c2dca32abbdc029f4a212", -- "3fac097802d8f5fb376d58", -- "668b9e16f3948f582a5b94", -- "1a08e273719d3411178252", -- "f4af5a6143d8f44e48afc", -- "54ad7fa69dfd0b4c19f7ed", -- "65cf5014ab215afd17cef7", -- "4c3c570182916f32a6f96c", -- "2e8edc0b6dfcfb2392ce87", -- "3950591be73642bfa23264", -- "559752d946b02da4c2f657", -- "554f5cfd133bac2188241d", -- "3c1fd5d9a6223b2ce7b02a", -- "34c50fc58872b7325366", -- "3f8cb5eb229acba822b48d", -- "2aead0dac004faa8ab67e4", -- "144a6c20d0a8d5dce2b12b", -- "5efbbe073364ace07f02c7", -- "73862de61086c1fd5e0678", -- "78aded63d2f85ac948c449", -- "51603bcc8667777e664f9d", -- "724f8bcd40bfc9f1ca0c68", -- "5169af1cd74986160450d0", -- "5b6b96beb19fb0dbada937", -- "4b3a8d22fdb2c83abba9b9", -- "3ee5a2cc90e335867f0ce8", -- "33567e972c90754c86a5ff", -- "1c07c875b3a9cdedf7611d", -- "3b55da90ad9a162be1756", -- "339dd42a42d94342bf8399", -- "67a3f20bb5e980364816b9", -- "4b6ed31d0715952774511", -- "346f2a2b086e1b35095d7e", -- "1c614cf9a9d87d69154c21", -- "5e263af53ea065e044720d", -- "681a88fafe4e6f0620910", -- "1418facce22bf24a5e6a51", -- "786571b85b2768309c8ed2", -- "4d0e82bdf34ff4cb3a603e", -- "7c2e242ec2b95580a9b3bf", -- "54fc920cc0125e53a92499", -- "5696a96208101739ec4ba0", -- "636b15a893c301ff23f5f5", -- "4956721f6a2ced1fc736fe", -- "518711fe03b241cfb95160", -- "2e12097225e5783b545083", -- "7340d7daed67bcc5cd4391", -- "c075fe6224a62c1010fb8", -- "4bee7e482b290b1d3869be", -- "7e8fbf173741aea1b95c93", -- "5a1fe9fffdaa20f4ab7eae", -- "58d7de0f8254a81b5d0f5a", -- "38793daa7aa086d5e70798", -- "6157a651f2640a73f1f90", -- "7a6d5b1013830761b58026", -- "46734211b970f8a6448a60", -- "31b9dd76b9ed5f88dd4609", -- "46c6313b3914ecd376b959", -- "3e4e77e268fb6e7602e96c", -- "74d39a89d87bdaa449438c", -- "7684536a92d49a5af59f1a", -- "71215d6fd5e662d930a424", -- "249b7a4d080be0f548cabd", -- "1bea5758655f1400515db4", -- "7f45c48d28fd31ceeb3fd7", -- "1812bd60b720f8920fe80d", -- "27244290f774a00786ca95", -- "5566a844e8b1c572f69612", -- "2d678e77df571d7ac4859d", -- "e243f28e043030ee3a43f", -- "36a3336f56c91232544e8c", -- "179d4134709978c75bf6d2", -- "20ea7b335b7621642b29a6", -- "78c437adc3b6ce946cdd", -- "57dbda5c8b230a87030357", -- "4dcc6ee20983f0020ad69", -- "5725842b7246179896a39d", -- "6b1cbac9279eaab9b503c4", -- "1bc4e87c1100a2d26aeff3", -- "2d70f946f2915679b314e6", -- "793fd256b009d961487499", -- "ee9d6b69f13ec8f385e6f", -- "4b4c7f0a822537ff62cdcd", -- "48b920d23514d06befaf52", -- "2df30214a49a31c21380ef", -- "4c4424602626193266d943", -- "2d5bb2b553d4ed5bc0795d", -- "681fcdfe60f23e3be083f6", -- "4f9634be1ae125361bd4c2", -- "1ac96b01993da8677b2fd7", -- "4cd15a66ba5a2f18c8823c", -- "3828df7e9ab6753fb83dc1", -- "2071c913edfd4fd6daa6bc", -- "669e7a28f7a7c30460a80a", -- "3b22ed42f28069f29c280b", -- "5ca51c82df4def8b1588cf", -- "7b2ef1bbf74c4989ed5ddc", -- "40ebb7bac65bd815945e49", -- "4a469bacdcaf5434109262", -- "1a14d5b10cbcbb9ad3216", -- "65fb4589487aa5a16bd767", -- "283508a2ed137e839b2207", -- "7047889925ed18a885358a", -- "9d8d18a72607c311d6f76", -- "6a1d554c48496d8d543eac", -- "594a3b6273b1ed2b542eaa", -- "67cb80a136db30b9d60d6f", -- "5106bba99e6268d7bef3e4", -- "6fff35974d5f0b86faa46a", -- "5f7482c17a568566c785c9", -- "78ba33e419cbc7f177437f", -- "1f4b918e0e0d47c89aa2d8", -- "50cfa48cfb994ab2b77aa3", -- "1e4fdc54209c2229d7ffcb", -- "4431184365a358de692057", -- "7adeede80a05e40854e6e", -- "9a39acfeb3a1b4c2bc79c", -- "2d2a15867cf9361defac4f", -- "3fdb99cce8884ed923271f", -- "2d127e6ce6bd0f1872b1", -- "1124cfa0e070cf6fe3c638", -- "65b7b50446c767e6fa72fe", -- "3f0d18b1efb7248950daeb", -- "74fc1bfd19b3cbc9867bff", -- "34f0f61d6d8d062b6b9d9b", -- "260d6ba9444df4b85dfb92", -- "4f75e255d88657b2ba4755", -- "3c3f770d148b4692e25b59", -- "1eb56fdccfc12b22db2048", -- "3c81a9658bae42644c317a", -- "783c78a9025283e7188a8b", -- "7322c20a545b3845b54b34", -- "52d104741cfa5fa49fa55e", -- "6545cb112ea4be72bc80f7", -- "5bcd4418d37c976110b37c", -- "34d59de432c0dbb24ae55b", -- "4759751a101953dd340d89", -- "41e135572f9ce788481248", -- "185033e62f44aa85a7799b", -- "7047a4510b8c2107737ece", -- "381012de4c9a82f9ef1d72", -- "1167717f2d3d6238b3d21d", -- "2dac9d433ff98cf24eae81", -- "4f1c406e243fb2af67cd42", -- "685afb7cdd699d5a8f020e", -- "4c6a0f6de7e50ac450c0c3", -- "59f0f5465ff1e16be9bfb2", -- "594ae94ad86b9a719f54a7", -- "9225712405a5bd9ade58d", -- "3650c22d9c1072238cfcfe", -- "36a92b305c21171dd5a616", -- "5ba344fee845769c2c86d8", -- "3ecd8205beb790946eaa8f", -- "5f84ae1685459ae7e24bf2", -- "62a01fb38e5c88098fbcc9", -- "3c2f54ef99be42fe30d32d", -- "215dcfa076749277897e0", -- "36304be3f0777300703af", -- "147b65e0e829ca30fd88c2", -- "4e6a2eb425fbd18fb02cb2", -- "2ddac7db8be22e88618b58", -- "1c7831e5dec267ccb26741", -- "2f3b362f4b742eb82f8a34", -- "5505b22d0ddba48ae2020b", -- "522afb743f67b3ca56b20", -- "81dc886feeee4945edceb", -- "77c4b593ec648025df03f6", -- "4f0841f63a0c64aad5232e", -- "6cd2d14ecc5fc7c2c1b52f", -- "3827eb26c007235c46c676", -- "484281d930b8ee32f366f0", -- "25f7e1ac0d4153b6365c1c", -- "2600c04d980b2307982b22", -- "6b923e02dfb1da62f37204", -- "287593985c21589f72c821", -- "c8918a059fa77676f0587", -- "76201f5e0110544f41d9be", -- "770b83b55e13465063e5a", -- "412ae12837a29724832877", -- "5cd8f5f9eb6806f67db613", -- "4eac7fa0d6b168c3bec4e3", -- "5d2972b12e50e727a2721d", -- "5517c01ca3bd4da9aef0ad", -- "11ea8c21342ce42ebbf9ec", -- "413f256a64feb56e242e90", -- "29f3402339c3128a1e2c1", -- "51eb860c87e1e5b70bb623", -- "369c62fe5aafda2a550912", -- "2674d42d16e97493518d2", -- "6b105359a1a68d94862411", -- "527e969f4f6eefe6289ece", -- "7ef4c5361ca08ac1cb6216", -- "3f3aeb0a1df198d9c95768", -- "152dc9fc63d3c1eb6c335f", -- "7754a6a5fe6be54c00f4c8", -- "222ea07afe042cf765ce5f", -- "1086eae159340e441fa0a4", -- "6c03f094dfe48c9743be89", -- "1fe069b8c57a9fbe5f6009", -- "185254fa056de9af1a6bd2", -- "3018be3223f82c7f0c9ebe", -- "48a13c03c03191471f1164", -- "3e94b32e50da81bb5afc03", -- "4d08f00a99d95d0043cc4", -- "4636e2935765905adcc41b", -- "4bc9c371d07d4a025a739b", -- "83bfa3efcf5b970ad41cd", -- "18bc8168956ccd63ac68a1", -- "366546b3844bf45b7527a5", -- "363a65fc59f4a8184d3d78", -- "5ef30e941639d08bff19c4", -- "5d66f0d9dde7339dbcd24", -- "33d5a814c00e980600811f", -- "5ccbc128a5721a5dd853eb", -- "298200a0909b55e97005f2", -- "703a6cf857e651748dc09a", -- "547264d2566596f18bbb5a", -- "760b4f231686ca10ea6ea9", -- "49a3641c16382337f3c777", -- "33525d5afa91fda7d5fea5", -- "4c028ddef259fa2c7d4868", -- "575d4696bb0e4edef99446", -- "6da26efc24e2d57c26c090", -- "41e1bc8a63d042ba714c97", -- "5f24e71937dd097c0e8678", -- "70b9ea82f6a6c02939510c", -- "738abcc274fbdc4ab5efd7", -- "255358696f5e9ddbfa467c", -- "6e9f47f009d809f84a56da", -- "27c6ad85e824da21b1cf9d", -- "46a78cc83c010019e8b2b", -- "6b828169b3ba13bbcddb05", -- "3f5c0a52d2b564cc250982", -- "63069f756c8115e5fc4c52", -- "55744f373c8b8520d62370", -- "43c2ec8afca87567ee9294", -- "6354a865e088a0488f2701", -- "d165a455f92b5083e0627", -- "7252d249ce8cd4fb010950", -- "79790e81fd0d2b63f9d1b9", -- "5e147628ce9e9a9493f495", -- "37755ea728b820f0ab2bdf", -- "184e317201ff0ac25eb6e6", -- "178cb915d7350e37948956", -- "5ab5c85d4bf835440ff962", -- "1e2bd3f41ae5c299bb720f", -- "722f9dc13384479d1c4455", -- "2b514798a553e5bdcd8ec1", -- "51890cd139740ee3c35339", -- "75d3c5c33e5a2023adfd4a", -- "15da282cec1859a9591ab9", -- "7fdd8bd273e4a717226cc", -- "3915d17a2935e69936525d", -- "78acf4423afa2cfe1a6fc1", -- "4f140e806dac75cc67fa3c", -- "37c6007c4a0d223bec9e13", -- "1ae82d51e4845bef8c5d14", -- "65a0cb312051f321a95f5d", -- "42aa10dc273607be680d72", -- "3e26ac2b23b8b913845e11", -- "30bed73f7a94de9252a38c", -- "750f475708a1369e3fcc26", -- "61ade8e7a0bcc40ee4c2a8", -- "27b94ffb61590cd0bcd89f", -- "3f1e6a84c6b836f245c178", -- "239309f551f303d0037140", -- "211dcdb529a6bab73ad8a6", -- "7869636f37e63a4ffff7cd", -- "150365cfcc4a012a673c13", -- "2791e42c7f90ab8d4e7fbc", -- "1501743c447af65014399b", -- "2244b09bebeaafafb0c481", -- "36c0bf9a937fe6ca772d0d", -- "419e79b02e607a42e6e091", -- "400f76e25d392f347d4911", -- "5ba0eb3a703d0e42cf4094", -- "2ccb45ece6ec9abb9396c7", -- "44741cea6d95eb07e7f01d", -- "2b3c80a17ef583b6205fd4", -- "43fea0cf26a3e256438525", -- "59a7f220e101601c1d1b21", -- "24974593a8d59a89588659", -- "14ee39af97cd5a57b0e17c", -- "4807e0d9a38d358d8e14c5", -- "64d8389dc8d1b8910fc0a", -- "6fd170c2ab312a1f05d814", -- "68c4a816c641b5b1090781", -- "24e71c2d01e956269446cd", -- "3bec30574a99903f587887", -- "2b4b238bbabe3c70748eff", -- "4f0024b5b5580d91de0338", -- "646ce329dbe03b0b8312de", -- "5ba2a8023e5bb50b06e03", -- "19537a8ee281cd28d6388e", -- "10aab6ed7d1b631aa4b45b", -- "6810dd5945e01cd2c90841", -- "6ac2b70efaf88fd42c4044", -- "aa480c5cc76379e0cd2de", -- "64532524c99ecb3c365a41", -- "321e3fdbb0b890caadc570", -- "54fb5f18b6d001ef7be401", -- "364f70dfdbb439b78e5236", -- "9dfe57d1a9a3265476d14", -- "169665894aa2b356779b61", -- "127c199cd032273073f003", -- "fa33fcce55fe6a32e0915", -- "264e4b26d39119bcdc0985", -- "593c091517fff61973996a", -- "77da1b5a2124b6c9e11847", -- "32e5682bfa3fd95762512b", -- "72f7dab0b2d2a35e62478a", -- "4356ada1ada2921353892", -- "aa2cbd696160321682a6c", -- "7f8bc7233e2784039454db", -- "22884c181cdc222cad8e5c", -- "7203cc213679d179eabc35", -- "78a4c0445f77f31209ed17", -- "58b95d74eb4e654735bebc", -- "6a7db7fb47d3a18b620d6", -- "63942ffcaaae948e9056c4", -- "a2e07f9d73c5e3effd370", -- "6667dbaf666f92bd61da79", -- "4597c1546c899a3656689", -- "5fc3c4b7f7ad5deab829bf", -- "61170002cc409ddc34946c", -- "736d05572fd4ef85eca2b1", -- "1a5853834033d093c63d55", -- "bafe681e7e52073b86d32", -- "1c9f86b8742e14b6caf79b", -- "3886dff828cc76dd830466", -- "3b98704f287b0ee4e659aa", -- "581eb843dc9919f85a6644", -- "697396e6df9539532709dc", -- "63606d420b8e8397875647", -- "43b23b71c3202b31d91018", -- "79486109c44990eca52723", -- "2102dede4011c5cfefb7eb", -- "235809998758cf7e4acb1c", -- "233860a2ed2d566e131431", -- "305213c4b30a9e8be153ce", -- "7507998b275e3c9bd4e10e", -- "64f00973a0eb117b548182", -- "1416e580fa8bcb421dc6ae", -- "36735381ceff20a76e32eb", -- "45f5960a9db06a62821bf0", -- "8649a3995ad114bb4d72f", -- "374a0e75bc76f0adac7af5", -- "6565aab9eaab16f7430411", -- "7dcf3e6b7d3d02033c946d", -- "65c9be7a29bf45e5992a7e", -- "638d0229863032ef249643", -- "297ac1b2d19eb1e6e32d87", -- "6f339aa4d977875b1f1f80", -- "438e5a19094bce43b5b5ae", -- "4d8b0cd0d3401fd04e351", -- "1b5200adee3adf189b056e", -- "1de1227159008ec9b59ac1", -- "75266a81bf7f77865e6f", -- "9377e0e5c8d0de1856f6c", -- "2fd82a7276af1cf8b372ed", -- "6dddda58fac4e8afe0c9e7", -- "1d85b86a2f3f20e2832ec7", -- "35accc5a1e3fb474285daa", -- "3aaa2c73e60edc333c904d", -- "740f62900b9523de37b6b0", -- "7401d0da6ddc33225bec4e", -- "3e985c35adacaa90f5715b", -- "62c36a3627b9d2b3c18de1", -- "7b71ed8d456ee35292c960", -- "2648a635c5981b8daca07d", -- "2c33c53227ef5693d69f36", -- "1540f88099c93111d6c8cd", -- "5d9383670de64bf15eb49b", -- "2b23443976252ed21088d1", -- "7fa540fb3906a29b513bed", -- "2f88b1c87d7d02f6c2614d", -- "1976a9fa25af6d21cad47a", -- "444a50dba1a2bf390bea1e", -- "11c773ac555182d789142c", -- "3b929cf6fdabeb45375120", -- "15bf0eb485af1135b0e453", -- "126dab6c2bfc9b83475847", -- "c06cc01bfe2a9b427102e", -- "6a545ca829ed278f6ee7f4", -- "23dfbd70bcc040f36d4c8d", -- "378ef780c4d32c3f15b3c3", -- "7b115c7c405c6e4356bac1", -- "1a789636807476ba5bd789", -- "35fa1fca985387fb7fcd19", -- "21b466e3230d809af7aa6b", -- "4d1a8b95ded29dc79fd401", -- "59bc93698864451646a053", -- "7d6f33ec4a123fa281cabb", -- "168ebadbade1cbc44496d4", -- "413278937e6487a988805d", -- "55407685456c2cb8311d26", -- "79d07c6a6298d34020dfe7", -- "65ab167d8e02a8df26439e", -- "7dfd6cbe22024260a179ef", -- "28d6cf3e20845dc7283634", -- "648ea8b083a9828f8af17f", -- "2f64ac4f819f8343111866", -- "17da7c01f870089371d6df", -- "50f371336a648ade74999b", -- "1de402b5c6118ec8861aad", -- "48ede8d4a9a88f7613388e", -- "5f70485b00138272e9a41b", -- "65a1f7025bafea5088145c", -- "68d439e82561e55cbf1eed", -- "3d8509040aa8739f034dac", -- "2dd21df4dbce295378bd06", -- "111d6b945ff69be530cfca", -- "c1fd8fe80d24243e7b5eb", -- "42772160e3ea402851c9c6", -- "49374e550d8b335cb151d2", -- "71faf2ef0654e97e0c23fb", -- "4328d17f00529ea0fead97", -- "546ec9785ee72a2a72d886", -- "5d50e00035655b4d4ddcb7", -- "4b53718060040e8179d82", -- "282a80b8de04941c547168", -- "73673685484b4f3492976d", -- "5db729c46c687ddd7690e6", -- "2cad73640590abfa319b6a", -- "21ba4c5acd17d59fca0ed6", -- "186605e063004c7e4a9375", -- "2f687a83227d2d20f3b227", -- "30abf45ef025352e681192", -- "6a76e3eb445dada83ceb12", -- "7146b897c3d924725bd0cb", -- "14b68001dbf2f798322812", -- "54112eabbed42ad31637c5", -- "467db4fe225847525ef33f", -- "25032025485a4979b90394", -- "bc149e667cbe5a17ed77d", -- "ba357a389bca1484d7e54", -- "34ddcae84938327a3cbc30", -- "2e1709b850c77f2d508334", -- "15db077682cfbf170ce259", -- "280bf57e6ab95037683d33", -- "14f23f2aade2de50fb350d", -- "57d0cd94e03404b9cc57cb", -- "3282cc1545c9e77ce08abd", -- "567508a3d2a7b4fe3b395b", -- "16d8ad198832545831c93f", -- "7d88a8aadc667bc60fcb2e", -- "65118f1b7c366a8bbffcb8", -- "6766e290c73bba54bcc710", -- "2aad9e8261535baeb20b71", -- "4ba668ebddeaa069043875", -- "3f98705d2cf6346bf00972", -- "541a69af40655a83e366ca", -- "215c7e9a1d796b37a56336", -- "419d9a35dec3e5f421baef", -- "163690a8fd51b113410cc0", -- "1d165ccd9ac1e4efca4a32", -- "1d78f3d7e887debfa04bf3", -- "6b421c0667b336723fc0a1", -- "2cc7417260782c0d2394d3", -- "21887a11425a371d17db86", -- "5be7c40d96f7c97153eaba", -- "2e061928a5c3ad9bd6d9be", -- "7b398d970ad745817bcb61", -- "f7cdb22a187815c33c5e0", -- "a4f6b861d9a460f5b65a6", -- "68d4b88b77dfae0da7a5d", -- "4e4199871aec7ec1f99895", -- "68f5ab17da1cc5dda22c36", -- "1901320882ec0093fcda5d", -- "76dcede51c5087d374b20d", -- "38c3b4008c9d0442e7b602", -- "1edb6eab35de11d4922150", -- "5c53790457f0f66baaae2f", -- "664ad54353749f2ad36105", -- "45638582a87d07b0339df2", -- "18b021fe09fa8bdc44e567", -- "2acc282877d9cac38e38c3", -- "7bd177160999a650655c6e", -- "6717c0177a36454aef446a", -- "6334fc3ff70d17dd837781", -- "499a1abb2a1381278175e6", -- "14da57f8c43c94d5133d50", -- "4a1381ccb93c34dc44cab", -- "7cb4b7b324b314195807c8", -- "59f2c50a64b0c2a3e77442", -- "426b930b670412d271a091", -- "38aafca45b266dbeef6fc5", -- "35d63c19d36b85b5e96648", -- "31204f9f1e25342bbe28db", -- "560e1e8aafcab315236068", -- "5b80c6e1a5c4dcb3166335", -- "1d41ed28d87d24620da24", -- "38271b1467ee062bfe15c1", -- "2b7758dc0945a30687fabe", -- "4fb33de912dd8d2f8b8081", -- "4d6d3f3602597781bd2ea0", -- "5b509a0106f1d06627c353", -- "7ffd3daf76b1e818134f24", -- "858c45884b129dd66817a", -- "70c9c69419338ba44d6b8e", -- "17c5a39deb46d102235506", -- "2adb843a58d472c17edcb6", -- "798b816a4dea5ab964c64a", -- "68705a826f80224f09c337", -- "b720b9f07a6b1f41654e1", -- "44bf623ac807d4c96747f7", -- "16eaf321bf41ee635d6d46", -- "37107b083cae132372e4d4", -- "31e9d0607a42f7e54a8c81", -- "4d23f5ec809ab5057c2705", -- "10a61010d82426d21109af", -- "1ba28761d3577e14d38b38", -- "c57749387141da5f8fd27", -- "4afedaa595cb8c309d3fbf", -- "3fd90efbd4f0a4e173f589", -- "49b4801e9a2a64a27691d2", -- "7255e6805e164cf9788cce", -- "62ae26dfe2273af99c4830", -- "7e185faaca849a7f135848", -- "10cc6c74c4f9fcc9428f7f", -- "152b3e507f8b7898991275", -- "15a3be22e80e0f6f498608", -- "54e5b2458bb84fd7d4433c", -- "656c647508629462e9a821", -- "4c60164f9602341914167c", -- "2a17c7297a08a3839ca0e1", -- "47efddee37fa0ef6a72a47", -- "106fdb273227296116f40a", -- "524a00dd634d2f57ac7c6e", -- "1e6b9387cb8fb6494ace9", -- "25d293607604db30df2e4e", -- "2a07033e306623cf4e37d", -- "178e61138a7396d55d224e", -- "75aa7d0184dbe8ff376045", -- "421e7c19466e0847ffaea1", -- "732b807455afe5538cf678", -- "1a756f67d7e3e663369a04", -- "389f7a523536bc08e2c52e", -- "3a0c64739838b20476e0bd", -- "4346fce81f02878bbc28d6", -- "2f63eb0fae8122aa717440", -- "59308e5db85655d5ae0c4", -- "26b549a59dc35ee5ea7b82", -- "4d89a145aa9c4acc9cbc8c", -- "71b31c9be0276caacd1146", -- "718c4a4aea9ee0da236930", -- "7222af7c6bff611029c53a", -- "7f4b55a70795b9d26512fa", -- "32a9d4d4f421cf83f9237a", -- "53cf166384d9f967e4ee4a", -- "4566810f52dbdc6e52d908", -- "308ab3a2c4d7f4df4b6a31", -- "48a0fd415822566b2ecfbd", -- "242cca5b643a5f97a01a20", -- "1c28b93f693054a06fb391", -- "5a2cdb29cc6790b45d1f04", -- "5e8a5f959be2a17534c9bb", -- "3fc3e580d2ad754a34bc48", -- "6bd645b33c041537bb5186", -- "3019d2c9a4a70055fade00", -- "142fa830b7ba88d08608e3", -- "47226da695602ab6e77894", -- "70044b2b283269e2d14166", -- "46ef25878ebd3ab0b864d2", -- "557bc3fd4a1a6866c5d19c", -- "7b0ba619013363524f168a", -- "48b438b41e1bc7e58e6ef2", -- "39a95d47cf87d7d7d6bc8e", -- "27c1b7b41af947101d694d", -- "492683ece46681328f9912", -- "3ff99310762f37d685ca95", -- "4cfeaacecd47507ead712a", -- "38a39ada5dac01b5c2adf0", -- "dea3527d089eceb4c22e3", -- "7b084b907f4fc0301dbd5", -- "503f8d64438b7a99b8de08", -- "1d9a776cbeec9f5dec9407", -- "8a006b686db9c86eb0756", -- "144303d93b170584849f6c", -- "6b5617e9152db554d999bc", -- "1b9850e5f0f8fec4d967b8", -- "20fe6d6e332154329f831c", -- "5cee3684d600afc7804db0", -- "1dc0a99973375f6c4a4583", -- "4476f33d15e77d3ea6c712", -- "11f2c34fc87060adca2837", -- "71af54a2496a076b559a6a", -- "2ff21a8761b9bce5f34f74", -- "78b5c76a3ee8c2ef071fa1", -- "5738f30e5cb40b4ed83e60", -- "59fdfd7775c9750e48d811", -- "7b609aae44a59cf088c570", -- "4a67b54dcc404423e6b631", -- "8ea7f70a71ad46c0c260d", -- "5ca4bcb81d4d03018b177", -- "169566a480e42dcc8863ac", -- "789addf402241ff646d77d", -- "13b16e69e645c1703bf7c2", -- "16f732c5fac8192629ddb6", -- "7731327e4c6ae66c8e47a1", -- "cb8a50376e8204b8b5ea9", -- "18eecc5a940548e7c51e57", -- "3ca90695aca0fd32b28871", -- "728caa6061cb6ff29e6b21", -- "3d66483aa6674adb6569c3", -- "1208a98ea1dd68a01d3ec8", -- "5186a4a6ce8351b40466bb", -- "79c75783449d733d93b4a7", -- "52f87910ef7e6dde1f16dc", -- "57aede4ca861e5051b15ea", -- "70f2550983dbddb8957b2d", -- "720aa7a7bdeaa025a23a54", -- "3e7db1002a9116a5e20032", -- "25d1c185377c3cd8e704a2", -- "794294f26a938e1caf3c0", -- "522619b83283553c71de74", -- "4dd985f2fef5c539fa6a96", -- "442eb4a36ab0287728c1d2", -- "2a2b13112979d27489208e", -- "4d43f85ff03e3cd18ef302", -- "71e916ff79204bdad49695", -- "270dae1c5ccafaa07ae8ff", -- "3a2f442f3b3a9a2af00b28", -- "3834a1b7acb0f05d9e53ca", -- "5ca6e41b81529e38a59f6d", -- "3164747c95104338a78b5e", -- "b66201b62ddf6d13c5534", -- "3dd366ce71f1fed428c326", -- "12413ef53ba7fc6fb5cd35", -- "20f6e36fbf07174b587397", -- "362261ed7c97591714ea9c", -- "1ce2a05bccecd36df96b64", -- "358d745e0bc4be1c3f4586", -- "221bb5afe07669d916e136", -- "624d49c04a48d42d76c466", -- "a3cfbf8b779e15bf28c99", -- "28eb082844c0ed277d2520", -- "4c7d0db8193430b75f41f5", -- "3c9ecb18a83b901f901704", -- "735a03f218370f8bd85ee7", -- "4db4f1a602cec485019670", -- "70357dabf2c34c8309c723", -- "ecef39a1ef4b4d1e8c6dd", -- "2cfcb08879a9aecacf316e", -- "1175d70c2c07855db37245", -- "786d54b4d5ce74ddde20a8", -- "ff53eda132c9a3cfecc65", -- "728cea43531fbac95263a5", -- "20601a054af9d51633fab1", -- "127118c35aaf80dac2a57", -- "1db83df0a168bac450e4f8", -- "39c167fbee27f65e96cc7e", -- "2b90f954efc9f58a07a363", -- "63f5fe049f46d509d141d8", -- "75ac7a48082d5afa148e7a", -- "569bfe59efe21364bf57e7", -- "475131d01f3e6dc3b169fe", -- "716991a2a17f536244885f", -- "150c29ddf5483fb74be06", -- "65fe3a22c7d35ad3f875e7", -- "1754f51aa79c3b0803bf00", -- "a4d6bd96f61637d730c9c", -- "460372cf36a22fb6b9641e", -- "43dcb4450a256b9a0eb673", -- "10fafca3d5f71faff8f1a", -- "177f43e8d62e87c66b9da", -- "420c1c0074adbe0616df4b", -- "1e39f05dac576881e6c295", -- "7234cde8ecc6673caf864a", -- "661787ba011711628186b7", -- "6473dbfbe4a3f63d08e3f2", -- "62b2e70d411eb11bf0a695", -- "2e684b7951a2526d838fd7", -- "5b4aec35da23a27808974", -- "51e267e9a5a7684ebfd343", -- "36b36922114363ceb85a26", -- "5687a42dcd55b43227f657", -- "3d28e1c12f9c60e500dce7", -- "6bc6acd592c0200b749e07", -- "773a63e6b7c9e3bec91272", -- "536bfe32ac8da07b253be0", -- "2146fc84389596cf6fa8ca", -- "12a2fa8c4d06a694b748c6", -- "49ede33966bc3f0dc8757c", -- "4f787847feba11bfcbc764", -- "b2687172956319218655e", -- "4bdbd2765933e2b1d70563", -- "1ef9edb1f958cdf81fb9d8", -- "6e8b2732511303a48ef731", -- "3608208e4497b40a62b3a0", -- "2c4bac0a0cf06ff50ff71e", -- "784bdef1566f244d4ff44d", -- "5cd3a1cc8bf78e4c7e3747", -- "418b73330a3b4d1a80474f", -- "5f87453deb48ed6c9a1afa", -- "3d9131aa5802e27a83eb61", -- "61539cf7b388689e7a260a", -- "260213253056e29f0ac6e3", -- "2768a7a783d9baa4e5cce3", -- "7e61e3317d07a1009894dd", -- "6927c4b12865ac8f053dcb", -- "352d204330140b3786230b", -- "67ae2ace35fde529154a8f", -- "7e37a126be9507ba4c717f", -- "2306ed04565a9cf9fa84c2", -- "6b380bf5d71fe523ad1e4d", -- "6aece787aae5251b57b3ae", -- "7f2209419e3163fbb4cd8a", -- "376c7a8d0fa0abf4c0bb7c", -- "39a26bf8336439ba9968b4", -- "620c14b60053b660420c4b", -- "19675db116558d90bb4f6", -- "2c16632a312edfedcc7f72", -- "1945686d70d9df98093dd1", -- "62e4e44df51bf11734aafc", -- "5d3293ca54de6a3aa06b08", -- "610d07557d991d9db3dea7", -- "6b25878a1ec102b9e883f1", -- "5d29345f097e1dc041bc7f", -- "797d4c38129f52836fa5c7", -- "5bb2eece8c95a515d2e2ea", -- "451e904c04882b739d233e", -- "4dac1ce4b87e60431b8a4d", -- "2f8592e02ef759cdd34c72", -- "7c1d3420db42a6ffd37cef", -- "4b0d1ff6297b378945b906", -- "744db8f7e25f69bc47f2cb", -- "7fcd5bd9328b9f06223a1a", -- "37f7d323d5bf332eed1bcd", -- "629e9c894bbbebf06d3299", -- "d427f0f9d14ecf4c54fbd", -- "71e1aa5a9aacb38b66f605", -- "361fe28e640ec02ae49613", -- "551b691726c66f9ec1f9e8", -- "523ee7b96bbc2b0977b4f", -- "52e6bde0fed2ecd82f7bf", -- "3a4a4ac73bb38c0c48aea2", -- "207cf80fa76e8708f88dc9", -- "2bfe7376e8ab62fafbff59", -- "7b8ff43621b7fb13c3edd2", -- "726dd56f61c4c5016201f9", -- "3915c71f3b447b64ce4513", -- "4781781ebc739ed9d4e35", -- "3669984e1ddcb753afb878", -- "6c8071fad8933706efff6c", -- "25330fc3e5df50eee77cd4", -- "316bc661e89aeb9e7e20a6", -- "2a035934ba5fafe2ebaf47", -- "515a0593d1e619118d226b", -- "72716051b13a2c1876c8ef", -- "98079c36403a029b3f0bd", -- "388d8c3c958b6abcbf6aba", -- "3d9a1023138b0e9cbe7d70", -- "7bc0acaa724475da5a8a83", -- "4a266217d4534cc588119", -- "62baea1b89700a3953e872", -- "5fa826fd6352f83c34bb5e", -- "71be60f1312db2fcc7f045", -- "51cf9e84f5414c7907e79a", -- "1fc064c4398ccf6bf7b1de", -- "70594464b46de9acc11f02", -- "4de3353d33028c5f557394", -- "15060a6e69612092d45768", -- "2142584bb5cff6c1e5011e", -- "7eaf34148ada80711a86fe", -- "64f201a4086e40b2a3a19d", -- "2d794034e6ae324ba7041c", -- "56359d56dcb06ea3ab68ec", -- "49d6a78a88159326775c2e", -- "32c2902887e1700cd5dddb", -- "c8806bb60205886d4ff9d", -- "c0ecef4f88f5957d4b1b", -- "b0715d55fe0c1edd9613b", -- "b512df0270e6ffe2d4a9f", -- "563e208513fb23ff9ca7d", -- "54c245a123767ef7f22e33", -- "5e83dc6dedd0679793feca", -- "3c53d6131f8c41d5d7317b", -- "349470b19ee7a8cf922b33", -- "432c0a15a9dc31696b79c7", -- "3de21ce46f7c8be3bab3b9", -- "669f3588d7a4ca7ee3dd1f", -- "2bf32012cc6354c709ad2", -- "2e5ffe59b5dd3843fa4c17", -- "601b382825c1515525a19c", -- "78dfe864170ab14a408743", -- "6ebb0dee9291bd90cd2215", -- "6f52ff1c7f6dba719401b2", -- "d16f53a28b7042d305524", -- "67daf6ba4dc4d74236df77", -- "72118d192add3aa4c1e0b6", -- "7e1ce3bec1e98dd35947ed", -- "2330589e6c22439bef95d1", -- "214d49f3e2681b232cf62e", -- "ceff6274c7b15ae86dcc", -- "ee736adb9b9c1860d483b", -- "550e4c9178e5dead2f815e", -- "651be8b59b15d629ab774a", -- "655b44d3a92231714b14c8", -- "1a88cb781abea4a70cdfa7", -- "7a520385f587099a8da6a1", -- "42a1f9791054781a203d9b", -- "1aadb770481974ec7ba970", -- "1634b76faeb97237505ef4", -- "577a2773ebc9e2412cb050", -- "68075aa010a2a7afcb2078", -- "e5d22d0ba9e3194e2337d", -- "68c1092ddd7cea180b7a8a", -- "1f6a141f6eb54cb95d54af", -- "6db9060a2078f4de4b4e1b", -- "21ac3ebe991cfe1bade37d", -- "45e67b0777cb6facf28d74", -- "398768a52710b109c92dcd", -- "6c65a41601a28b4854db0b", -- "3fa82c77c11ef3ce373a08", -- "2219a8eabaec2cc4da44cf", -- "25b286320c27c0f91c388", -- "c663e7994203d116af45d", -- "373211f704832f37df113f", -- "33f6606f82062475e2caf5", -- "77ae05c9ad4bb1a82ee6f6", -- "72f290cf9ea470dcec1318", -- "20cfa0c6bfbdce5e399a70", -- "384ac895940651e4b3df31", -- "2a6da3e3f6425cc4caf185", -- "3559d5470cc8be88bbee52", -- "731437b69ca76a93992caf", -- "31f0df7953457ce90524a8", -- "7fdefc35775213402acc91", -- "246e8276fd64f7af18402a", -- "1e604eea4a6fb7804d131c", -- "f6074b1e17e08713a2a46", -- "23931a4d64503bc81a5a33", -- "6395a035a6a5e009dcf586", -- "23db937264552bf6dc2858", -- "50e45902fe1a308ec88670", -- "42e82d8613957e0acb2b09", -- "3d50a612150493864e2df9", -- "1f08599df3ce28d2e2a99", -- "172e3a20b269ac416b7186", -- "624f69e6f91d2b9574cb8", -- "33b05c78a18798e4462d45", -- "5d5e844e1fd78c36c3341e", -- "5a1b57c203d09cc8a22696", -- "775bde6bde2d0aa4187fe7", -- "4be11f1cd60954626093b7", -- "571513666bf5e4e0b1c7c0", -- "30e484fb4ce5927a937373", -- "6ead11e0936e4bb4e855e1", -- "14b5583a83133add54d368", -- "361de61b4e6057d1cb2274", -- "24364b397921eedc03333e", -- "3f26224827d27901ba392a", -- "147a0d7fc26817e7251ada", -- "4debfa77d5d5f3fa106f86", -- "1f8b63c5fea99ffd6a5348", -- "59dbf0c177e94a664cfe3b", -- "656e5b10b9da085176e0e4", -- "678fb8bf7f6342c5764339", -- "2cd2d00d4262f35754bb13", -- "67b770c97867478cc69b37", -- "bac1f8bfa0e63045ec3ea", -- "4303859a49916073987344", -- "322164812a5696cb2322b0", -- "50148cebf8644fa7375aa", -- "50b37142bd10ca63ad3866", -- "5a86321f172c81fbf185ef", -- "4972dfe88d7e4fb02ffe72", -- "3aac1aff3b6e14d31a91e7", -- "6d575f1601945a3ca29eb8", -- "6c290f053f3f46327ee8ec", -- "73040349f8459e94069012", -- "2dd44a6d1765874cf1dbb4", -- "52492b4a4856d777ca0682", -- "76d72d56a09f253d257f0e", -- "6a4862d59f8198b4ea0fd5", -- "ee2c219af9300476a7d41", -- "60548a10984139e59f5d8a", -- "423813f9eb92bfadf14d9a", -- "6a3f78db4e25085a772f7a", -- "a3d31a1daca53878fe695", -- "1c24006c67392d350aebe9", -- "5baffc06fe51f5caa49a4c", -- "6f4a829757301eb1143585", -- "202377a9328fcb8f661a5d", -- "6506edb4005521bcb61671", -- "208dfefbc938eb8f166f28", -- "2f8aa359ac5538f4834ed7", -- "6b36296c1bd668243e920e", -- "7856c391e8828b90a94afe", -- "5728f13fbf1367c5292a3a", -- "6db3eec1da4e57eacd7cf4", -- "520f0b6932233966b7bdb1", -- "225461e731f47cbf2cbf5f", -- "15bef1b795296c7e8862d0", -- "217d231f2ea4bf28c97e44", -- "31e4aec6d42e52c762e301", -- "16103ea0d454ef686ebf4d", -- "34470b1eee2f871c42ba71", -- "5d172643cb569d9b2ab357", -- "45838fc0d9bd4e814df398", -- "520d412f22645bfa3f3a33", -- "5dd2532249188dbe3d2539", -- "336699d6c6f15f6ab914e2", -- "48384f03b178aecb456dbb", -- "358734094106c4c77371f8", -- "13705ad9594243161047cf", -- "9cc0a7524feb44aafa989", -- "2f615de4e96f8f9837947f", -- "4f571e68d11ba0c201ec2c", -- "1c7c6456335bb722881302", -- "56f01f51a5be66f649b1d6", -- "4a2416a8cf412f996e9654", -- "5593dc730a3a85d6ce77d2", -- "70628248b6cda7311de5ca", -- "49212e86ec70f1b328e11a", -- "3669075c083d3a0547d7ee", -- "7c64411c354fca180b974e", -- "be2266f15dfa6e02e4a02", -- "69110081782c350722756f", -- "5370ef9f2399e3c803b5a6", -- "4277911fa0e430960db091", -- "46d2651ce40dd1fdd11e69", -- "65838019d10030d2edd34c", -- "79ae8d3a65221805ed59d3", -- "4762e175d924ca1dff7d06", -- "226f7d490aa9d47314570", -- "673a9bc1330de8c0b0abe1", -- "a80defe299bf7c4d81738", -- "1916345f1ad90cf48c6472", -- "13cc5c5fa7afb2b7468106", -- "656f70349417ef562616d7", -- "520db901eb8309582e12a2", -- "4253e27061630b9343ddfd", -- "43012f86bfa02bf0033ee9", -- "51524048af5a6750b1955", -- "37a4477749686070e7e049", -- "39f7a72e1daced6411b1a6", -- "4a98326f880a44e2d6ea5e", -- "574f95a475dce62a3071ca", -- "23c20aae79c2ffaa75a36c", -- "59f67a0c66d5e9744004c6", -- "25ff556cf1afefe2cd2ba9", -- "41be4715ccf6dde8b12086", -- "5e9464fbce6027257d92c6", -- "5b57bc12988f27dd0ed418", -- "1f1c7eef9d0f99e1e209db", -- "1a95aa2ba56c053acf7e56", -- "6f085a8f46a66e79fe4f92", -- "728aa131a37012e184c2b6", -- "21469f9c49fb4d2fb54baa", -- "67d12b5d61741b8623f378", -- "2a1abd32897155b55014be", -- "35ebfb3fd5a71979daee0c", -- "3c994e655edabd5cfbe8b8", -- "b5f14620587f1e8ed5a45", -- "4cb0c7462e90f28fa251d", -- "608a29bc043b54adde90b0", -- "6337453f9c180b8ddb37c4", -- "60e351e7834b181d30a00c", -- "15324434e27844cc4fba51", -- "259839d29faddb791e3548", -- "198d839621f761dde4f853", -- "221728332d3142e3346be", -- "48cd6ee15c4874d342b21f", -- "7964fb4049b23d750b6f0e", -- "365cb247c96e7933341e76", -- "4f7806a65676c896ee7db9", -- "99539a5120bf06fd3edb8", -- "4374a87512bdcb27925ebe", -- "db7255fca12f37c452ffa", -- "4a2cef4e3606d1b9422334", -- "b8385ec48f904d72393ba", -- "71d26320321cdb1dc925e0", -- "1f8889a7c0321f5279b37a", -- "7decc101d84d7378c8efe2", -- "1526a67a2f54717285cebc", -- "4a292844d7aa26520c09b1", -- "5edc4541d1854504d071a", -- "44f34a642236b1e7e4c8fe", -- "87eada956963224c06418", -- "76393b1564fa2cd841480e", -- "2aec8efef6c41604b67a83", -- "2644cda468b716b53c99d1", -- "4d74065738715d35d47743", -- "1118a89d656497538996f2", -- "26102582959271955d45bb", -- "1318f3d7743d8ee4ecfdb2", -- "3128342c1cd21185c739db", -- "7568ac37df7da28c47bab9", -- "be26e79f27c2fffd5718b", -- "2655fc5da8cafdc10e8c6c", -- "6336954989b8a716380f64", -- "2f1dd3930a2948f2187f86", -- "90bd6d6fef2e358a664bf", -- "675948e6670907b03227ed", -- "2025bd13134bf0ca69b0f6", -- "509dfa92ab81408672391b", -- "5c699bfc1a98ced38d7c88", -- "14816e04a6b799d1ce9e1e", -- "61978b574cf8f6d53118d6", -- "4e203019ba4b94cd691d60", -- "7df66ef2eea696dbe6ad95", -- "43bc8bffd5b4fa12491d7c", -- "1207aa2a4ea7c882b5e76f", -- "3e9654e3940c0f541b93cd", -- "4a64cce2fc4633dbb63e09", -- "4385d494a7bdb154810c4d", -- "dbd1bb9693e65c5eeef4a", -- "7d58cee39bf1830f1b3ec0", -- "6cc6a998d40d1bad211cd", -- "3aa6d80b7b4477df65330a", -- "2ae1383e51812f870ebf41", -- "1107ffccdffb2932659325", -- "9cf05f6855d4068390948", -- "36f24af02e5318171bea53", -- "4d0a046c7ec4f54117f367", -- "7bb1913bf745fa526f18a8", -- "2970c6e86dd017c5341ddc", -- "58c411222783451febdf82", -- "657128352843035ba5fee1", -- "13c9d1e81de8cbb64a1797", -- "66e2564796168c2d0a015a", -- "1b9995439565d095eb8a8c", -- "43cebcc2f248fc1fcbd6b4", -- "7e18b1dc04cb3af247aa31", -- "269ad3cfbd18bd255786fd", -- "2f1b9eb8c8ceec3aba8c3f", -- "890072ab6d3eb608d30ea", -- "4e72dcffc8f26eb136b7c7", -- "71db6b9125d5ab5b3e7493", -- "57bcb68e1f52791794bf4b", -- "7489fd5407cd56abfcfc49", -- "45d43d697cb8503c85839a", -- "2021e0329a909a39851fe3", -- "6eceb600a9b81fd3aa7175", -- "4d63e68650d056d4e2cca2", -- "21789b3595bc366315af2", -- "781973046ae51aa956a060", -- "2353c3f920ce7af530f96d", -- "4a8154e2948099e7b7c4c5", -- "319945f43efa75c6d6fbd6", -- "1a0cc5d78d1da3759fd0fb", -- "75a29d53450973ae07e5b6", -- "670c6449f82194e5367c1d", -- "6978fb86dcb4ccc82a3738", -- "f6c4daf384fb3d39aa985", -- "47df2e03e1548a16e223be", -- "36224c16a9190272a21e14", -- "abbcfb2e4c3da6b090978", -- "1fb7c568bdffd12b767330", -- "77f657453333dfbed3c7e5", -- "68855602ae559673b8a2dc", -- "57b79cb347145bcbe43bcf", -- "542f3c6130072ffd145c0a", -- "7d43897c9a717ea4ffaf53", -- "2928531ef291fb90d243e3", -- "6308b8f5574126f70ec3cf", -- "3b77afb6ec85d92608bbc9", -- "39bc9fe63b4ca1891dbe7f", -- "14b126e3c0b0f4dae2ddfb", -- "634af4f8ff5eecb70f9b3b", -- "5939fc19fad9c14c8917a9", -- "cb351e8f1a28278af3af8", -- "41ff1be99bebe99b10f273", -- "32c9397c9adff65d943965", -- "1e1de465daadd9547d63fe", -- "1924697a3681efc60e8e70", -- "3e14120ed24ebae50e64ef", -- "29bfa87365d098b3fe8377", -- "48ad93093caf03d61b0aa8", -- "116c396589d81e0684d5a0", -- "4550a8c9126d63e137546e", -- "3d325eede75d0a573042e2", -- "715fb02624875de3ce495c", -- "2c1cf6d476ed98aad97b90", -- "41ec16a5c725c7d32d3a8d", -- "2a6ced30aaeaaa3957eaf", -- "284cbec8937114a1728cdb", -- "7fd049d0f5d16bca84fbf0", -- "1ece2489d9c16fd0d7c093", -- "7a1817cf8f21c4f863437a", -- "2b89a454954d4c6b2e2120", -- "44b51755bfc5410d6cfad6", -- "31e4383d0d65d0adfc3084", -- "2f44e6e7eed452c1b02ade", -- "46861d4c2ab5de181f3e32", -- "30c01b8abdb9d98a7941dd", -- "593ba411e3481cff090a6e", -- "5f7998cdc984bda089a530", -- "38863908f348e0ff24d2ea", -- "7db23dcfd5b48847b2da44", -- "70cc62d0a35cccb85972ee", -- "51e871e33b066886db1e57", -- "7ab8d7968452d732fc3362", -- "6cbec7ee27571943d99309", -- "65ccc844f43d7740c3bb83", -- "2d92e146c92e5c2141114e", -- "78208a8be2c33504df2573", -- "1b892a6bc6d106036dc210", -- "1ba30d22d8ca0e3412c0e7", -- "7f5d5abee4ea627ca346c", -- "29d27ddd5f46b0a514ec85", -- "717a62d953937ab8d63ef4", -- "46f7147d837df6469c39be", -- "1e9e640158c2d5ef405818", -- "7f30d40bb0193bcc3bff38", -- "7e84a589b79843d0f09d89", -- "1984882a708094eb26643e", -- "6b386c8a9795cf0b45e160", -- "282bde17894173789173e7", -- "75b60c74c3f4835e0ba3f1", -- "66673b06f4474ab9ac84e3", -- "768b4e15703c2b99a95ee7", -- "3c7d066200b6ae5892048a", -- "194fc13ec819c9e2289cea", -- "3c066553be4fa2a741db4d", -- "31018337a926110b0a5b91", -- "7ca0b74cff2de67657aaa1", -- "610a799f5f9443dd8f333", -- "29dc0e371f2a3ea6cf4d60", -- "bf1c05f166718be1c6836", -- "309eb70bbb47b20185134f", -- "4b31d20ed3a1f68f117d30", -- "201a5f031183f9e3136174", -- "6d82429df8c04f3e8cbdea", -- "4e4d1094ae9ce9f42b1d71", -- "65e071aa89e8e9caa17f", -- "7c3ad9d6ed54817d082b65", -- "352a1b67a355f38121c462", -- "2d980e097ecb2ab91b9b92", -- "96afde4db924db62eec7", -- "6e20ab59697e8bf608ee9d", -- "2ab6145578df975521753c", -- "5c91f707bee21c71c33c34", -- "676d8d92a92b0706da21e1", -- "3a82f64175d5b3caec9c53", -- "2ccc62a5fe0c2d164b78ac", -- "7f53a40fb6d59c55fc0a6a", -- "eb12a34ffd8e97426aebf", -- "330554538efb3452d928d9", -- "37902c15fea70cc2588984", -- "1e3f1f00ee5c87d8bcc6a5", -- "21e6a33067365b1e718020", -- "4113025c4b26d50d501a53", -- "1d50b663f8750fc777a8a9", -- "47267802b4baf11a616d7b", -- "206a9c38358f291b01e407", -- "7529b300b4b89c580a5f62", -- "59aab11c164124e5cdf604", -- "3d3a2d2ef7d22dc8adb10e", -- "1fa48382ab305e0404adc", -- "6e72d626e97997cb842159", -- "53a902325a9087232d64a1", -- "726d30610282ed39d8f203", -- "6e48887c0bee3ba8386f63", -- "532cc2e0afe1d979c42a70", -- "614224558d52e5d4eb23b8", -- "c0bc8c55f3b95e521ebf8", -- "1b4e22a54398ec5712c2f5", -- "45109475272b0ee96581b7", -- "6c065cf636d6bc65762095", -- "7bfe5c12baaa86c60d8117", -- "62e55ea318373ea102e458", -- "46789b05c1e88afd58b2c6", -- "37120883f03d674fbee3d7", -- "63a482d47b34384d6c0abf", -- "78778c448d7d69eeff19c7", -- "69527863032c1ba7d7e238", -- "574f9294e066c8fdb761b7", -- "3adbdefe2bc4d894d3eea5", -- "7c2fed1746d715eb95529", -- "2501ea3eadb12569e01e7e", -- "3d49c943bed92220933501", -- "2327087d544749f348c909", -- "63a2efcfe030b5eb3fd526", -- "2d2c322dac49b5fc4277a6", -- "4ebe9580f66ecfa62bdae4", -- "39450177cdd3980c4efafa", -- "3349dac2077bfdf6a12d86", -- "56b71258283af76e7bcfab", -- "2bcddd9fb0f98505c98aa9", -- "45166035762ea541feeea1", -- "6bf558bed09b770ac7b7db", -- "69498de156a0aa10a4e2dc", -- "6cc9f90d012be002904668", -- "32f8a36cc1b46c25cdcc28", -- "312ecee1519b0617d31186", -- "706df4fd50e1c42994aed3", -- "4edae7063e31e196fbffc4", -- "7bb42f21df6b474c926cab", -- "7c2bf4a989b0889ab6c2ee", -- "14a25dabe8f8f9bd2745b5", -- "14266a10ce4302dd32d262", -- "411254ef95bca10cdc61b9", -- "2cb3e5c4dae6b173319195", -- "575c81fbd5408f583cec84", -- "904098cdbfd4389279e30", -- "4499b6e3311b7fe5b9c98e", -- "210804240b673797c1da0b", -- "4cfa062853643ca21aa8e4", -- "155503fef8a8a42650f8de", -- "214de8b9e305b92a9ebc6a", -- "aebf119c49f1f5d4fa77", -- "4019e2ed5f4f686e75a334", -- "26e8b6fae1b81184be307f", -- "4cbbf282cb8d5b492509da", -- "32124e45d595b542218cca", -- "4fb7ac8e103e64af4c501b", -- "4a99080981fd90fd8f202c", -- "5fe19870cf156902f09ea2", -- "35da7f1fc27e6edf7e2774", -- "171772c43b172c6f59b4ee", -- "396792f2585d3e823623df", -- "68b020f430372f0b20817e", -- "58a41d74e16c1b1fb6cbf", -- "6ef7e0b470470f565c088f", -- "4dba440f7f398ce0198b25", -- "2840ecdbeaf847ed4e56fd", -- "2f36ea2bf51461b1407878", -- "2cf0b3c6e55d4f6c794d8f", -- "31fcd9e9b87aae6bf32f83", -- "47626057be8af9d92cef74", -- "2113e1a93f5d2f1cba0377", -- "4176799b704bfacae7d897", -- "524919eb6636c6c6c14a82", -- "64d1d7c43b00bfc99b8bb2", -- "76a279212b584d95ed2cd0", -- "37e704706a7967491e3628", -- "5e1c654c63269bdc77fee1", -- "58b898760417610a09ff41", -- "64981a92737099a91d3794", -- "571cc10547604b09ba9b69", -- "6714be0beb22d71708c5e6", -- "359b739ee10f4c4f24e721", -- "454b67d8b7470679eeda79", -- "615326e14c6c74c717def2", -- "2dd86ec9cb242b4e68016c", -- "62a4fc7a9af2d27e92b08f", -- "cae1cd222ac38b9a89a19", -- "5fd2fb0300581c5f59fa7c", -- "1488492f946cb788d721d6", -- "509ca3fe7eae200044712a", -- "27c4576460764aabe86ca", -- "72e3a111047449df428c07", -- "4dd2e16c6f9989907671be", -- "415d623b63f929b3ef879f", -- "9b13c11e290284a86caf", -- "78b61404bffa36b135773d", -- "10c2f27dd2e5d8f77a071d", -- "684e96f56360b04576ab1f", -- "6bd55e81cea4df6934b8f5", -- "288723d0eb9a25150c0772", -- "4eca5fbd35a4778cd18f80", -- "590c069f4d458da38448fb", -- "6a91ca9f24a59bd3f77cce", -- "4520d49550bf0a2328020f", -- "31340daa6bee66dc702e47", -- "21cbfd5db5cf856bb6980a", -- "2ac5b705311ca0e8e6bcda", -- "28390f3626b1fdadbcbfd8", -- "3b79806e60c6443e5b75ae", -- "4e1dab19fafdbf4d11123", -- "4bba04cb6f7dfe33e4bd", -- "25b65fbcf4deba1535165c", -- "5d2602e9c7bafe79929bee", -- "1f5e885344b51456b2195b", -- "5c585a64ca68d89750e9da", -- "715687651f6925a41a3bf1", -- "47be6483decbcd32c50b44", -- "3fdb397b831af56c0902f1", -- "60ea199093a4e9f80613b6", -- "59048c7bc400c1b2f055f1", -- "5ed2c798bc4d3df9693b4a", -- "26c8838f41263334d39302", -- "257f0dc17de9e402db5577", -- "5eacde9e13242553f24977", -- "232706fb395f1e37b2683d", -- "5527388c03206dff6a464b", -- "6207f87b59fc321d1fa8c5", -- "3eed8387e5a22f84995caa", -- "1ead4bf29c5aa1e11118b1", -- "4e9e415c8033fbf3989b6d", -- "6ed402123cbfe00df8030b", -- "15c5021e3387b5104eda39", -- "385c720d2080ae9544a074", -- "12502410f917e813c566e4", -- "dfa61531c98e389318ffc", -- "75df623177a9cc914a680f", -- "16a2f9f4e53133020d693f", -- "68bba5659f4f20356a0cad", -- "5b60aca7fe85259aa048ba", -- "748cb85b7df9ca5a82d4a0", -- "5448bba652328fd63e3ca2", -- "497b40c11c5d479cab5f20", -- "1ff2197a0e5b3d0b65c928", -- "175182c7cd2ce431b0150e", -- "58a47971604afebfc2dfe", -- "7feefa2c38e3a6212b4cc2", -- "1dcb001f06c75da3270a59", -- "3e7a71b985de5c6c7a9f57", -- "ccd4be560162041ae08e2", -- "4ec109ed0d029a0c6bd1c3", -- "363177aa4ad204478f4d2e", -- "7b94e69ecfb1ba4bdf42b9", -- "68bf1a165a85b17f192a39", -- "fca586b3bb595a8d4101", -- "7914f6f164e20860badddb", -- "d959366c9d2eed9c988e", -- "6b1b87bf69d8ba16154459", -- "5798f45a6d32a5d9e220c4", -- "23ff36317f41cdc69b5f8c", -- "3337445fe49877ddd94c8c", -- "27e0d5b6d5b01b974468e6", -- "155305c9e80b8231f3fea7", -- "46777bd089a8dc8c44ba66", -- "4eb92d6051c08bfec28d32", -- "58de9434dcaeb21007cf50", -- "4945531dd0d285dff322e3", -- "5f4ee2c7a7d447e781b997", -- "255da48e767df6db73178f", -- "40f14f4642441c80c723a2", -- "23b23c226ec7148e9ecfd4", -- "2fc4119b8d9484cd86a0bd", -- "e8a31983f38b3bc04d83f", -- "403c97fd7a8e612b101803", -- "360136af955e5fa1edc1", -- "6dd1e30b456df046e42f20", -- "2a8fc7a338bd0e95e61238", -- "5574ce6446f5f9b2cb3ade", -- "68437c168764f9b52e36f", -- "6db55a7581d577d97e45ef", -- "2117da386a0ba848e04619", -- "38a3fd25a6d9f4f7c85efc", -- "20bd84ec27cae248ea38a3", -- "2359b0102f9a1f774278d", -- "7f779a7314dbb8bea5c652", -- "a15cce75efaba6c1b571b", -- "5e4eaaa44cce4760757194", -- "1aa73126a375b6cf5e8b5", -- "e0fd267f226bcb77b4105", -- "5c1c9591ed7cecac5be504", -- "6f8c0ef46d2275dfe7e84f", -- "75f53c77a2d34dd51c6882", -- "553e86c66c2fba13b95f56", -- "31cc33f2d92bb3dc73372f", -- "2bcf3f6e0be988750bc0c3", -- "2a0c42a5cba7fe55a006e5", -- "67427f6921fbdb98c3e375", -- "62019722b2962f2ad1787f", -- "75964f1abb3f7cc93e9f96", -- "3faddb5ddd2bdc683de72f", -- "235bf7672a2cda1ab01fb3", -- "c16242d78c3d8fbfddea4", -- "29105da153f2a098ad094b", -- "39f0a0674e65b2cad4a706", -- "57a6c26c5e5dea61f133ee", -- "6151a60a864edd0e7c7b30", -- "d65fa4e9fad0f9180af7", -- "553adfba4c4a6d20491557", -- "1ffc37c5751a51bd676a97", -- "450dcdc45566039112cb21", -- "74c5b771dcd8c4719355d3", -- "72216a00ebfc9de1e963c8", -- "7746c161815ab2091d9e21", -- "47ddc74fced651c57b4d1f", -- "417a5a771b0fe4694065d", -- "4bd73bb75df0b9c8f31e93", -- "3937d6181e67f43d9bec08", -- "5fa8c4e879ae9ef5c6f178", -- "693e564c43456862d84db1", -- "394398fcb25e82a48b8d32", -- "754181ae9689816d4fae85", -- "6f5834f39b940405114e26", -- "41d82e9988854950bdb48c", -- "29f43cc681e11325bf172b", -- "6ac2b95852f2b3848657c4", -- "49da4e6814895f7566132", -- "7a75465db2452d11dbf6bf", -- "14b9cf8ea7c2a2aef663e9", -- "7a7267a5eeee00421b1bd7", -- "8d7ac16a6c7fb5dcaf362", -- "4a9951c3005ac4b7d775a5", -- "4dac5ec68e30db33d790b3", -- "7e9e8be590540d41cb48b7", -- "db6d45038525122246c3a", -- "32e84128c0dfcdebdcfc5e", -- "3c52f4c6c583d5b2a18105", -- "7a42533b0f16560c421482", -- "403ccf27d3ff3c3686d654", -- "5d780dd5bc1f62ed520130", -- "6ecdfc4db1fa1b0104403a", -- "4796fc52e00fbc5d65fc02", -- "1103bc87eb4e4e572c882c", -- "1f2e34fd7020d08b01b7f2", -- "23f737b6f1527cfce0303e", -- "292e4d75da1a76fa4eb730", -- "1b8c58018b9ec962054ab0", -- "3cdbf096f176a11d399e68", -- "5e81e2ee54fa1c8e9216bf", -- "6ea50d7820cf1c46cfdea8", -- "42fe3f1413aec51428fb64", -- "449f89bc8e75ebc93c06c2", -- "46dbb8e8c99f2d8cf603ab", -- "3542a00727cde7902f64", -- "8c1b60a22d754654b3b0e", -- "4cc1b8f60c7b3b604dd7f3", -- "65a59676f2a0f7f5358513", -- "7ebd8ffb86035ffa249a5c", -- "6937a623eafb54374944c3", -- "771e23d6155cbd6574be92", -- "42d3b2e606813eb48865e1", -- "747f5812283a8ba1a43af4", -- "1533a8f5ee81c2d4352c6", -- "25b4f424465c145a893505", -- "54449f7dccf77fd8f14fff", -- "1f216750a4d1686b3b2227", -- "3c0ef922648f93834d2bac", -- "5b8558cbc60eeb5d4d1e0c", -- "3fbae766d352bf62d71ec9", -- "37ca6d3b30cb2687e44f7a", -- "4fc1aa30a26bf05e1cf79e", -- "5830e5e1c9294904118c10", -- "ac1c0028dc3aa005da816", -- "2d8207ca3331c2f27a3943", -- "2fe38c447768175651bb27", -- "538b76dc0991647c99d6ab", -- "5ad56a9a03d1277384501c", -- "2c11fd859f539479044b3d", -- "6e1c49a1adf3346b270d76", -- "627d01094a2553e7bdde46", -- "4b0e392a6b94b0716bcb0f", -- "73c9485e5e5379f878695", -- "43da9e4b9fc98c3225df02", -- "4b81add44caab6287f5254", -- "73a1489a18b0815a03faf8", -- "146e2b3f7404eaa2825f64", -- "62cba5cd6ece1fcc005653", -- "9a91d432ec896438ac971", -- "6750d083991451ddf24ddc", -- "23f47a79fc10179e2f1aad", -- "456b75b7118ddbd9c05113", -- "214ab6242649bf5f0673b5", -- "46c6a4606b83331dd733e4", -- "567c07ffdf5609acdc57cd", -- "26639427b4cd468207f354", -- "36b57535eb2f884ec435f1", -- "2aeb5606838c910769daa9", -- "5d5d0b6bedf48b96c5eb79", -- "144036e909f39a00a79653", -- "7677202d8f05f9287a6047", -- "1a1cfff05adf1a427c023e", -- "7286bedeaa0c2687819d8a", -- "2bf095a2fbcdb3391aec69", -- "2e6c1f41a9866f4d867e01", -- "2ad8da8cd83b1521d7659a", -- "159314ac561f7431a71dd2", -- "443f4b4ed3b1f2c8fe8ce8", -- "1bb928a5ce5b6a93e4a6be", -- "ff765fa35889a47189d5c", -- "7faf5fb28aa48ff83cc07", -- "330bf157841f4554c8f5de", -- "3de0a5abf20a4845d76439", -- "5d53571a7cc3688e6944b0", -- "7a6a150f8921047e15edcb", -- "4dbcbf0e0833361017aadd", -- "36f20d7e24da8778ce35f5", -- "3248d851d401112b750bc", -- "77024358b3e776b2c5e1af", -- "599102d1f2500d61d762c9", -- "52c455dad0b267d43552f0", -- "59db917020bf7253782d5c", -- "3251a62ebf3abdb7c9ed58", -- "1c89d8520ef104ebd20ee", -- "fa65751eb4d84785986bf", -- "22f4901fc0a8b24cf62fe4", -- "3baf4fa4e9f273acdf732c", -- "29d711357943b0afaa5b59", -- "26293d249066a3014c3338", -- "4d3db82b9d6efaedc42576", -- "561331256e1d21664a1287", -- "796842dd6bfad2f98912a6", -- "4a27b941aa4c6ad1e07548", -- "47b94fbc156b869e9d16b9", -- "39f2517276288f74c45e3a", -- "11326e189db8b15b0744ff", -- "7c793c0d415e26d57ec92", -- "22c922d5b0fc736e5f1adc", -- "5a9897a2da0299756dfdb3", -- "37b012fbed4994b5319766", -- "7ee167869f16d0f3096184", -- "7b7ba8150a404335a3e978", -- "2176005ea62a7fae1a0ec5", -- "7f5271355a686a4df7e516", -- "33294a38a5c8a431b3624c", -- "68570d0c5fc94ab3c18486", -- "3a928b86dc180342e1f053", -- "474d5e705efa51e5e97d39", -- "4948e72d6c06974bcf7212", -- "12ea1cc2026e4f5211a159", -- "15b86ea9fb5f9d46bb9d95", -- "1c0d48f6283945e321fdac", -- "c25f982adccb58e81ce02", -- "173ee21e60a88ae566e166", -- "64af53c3c0ad963e3055c1", -- "2e0a934adfe422dd136191", -- "5ba00e958e1473bae28031", -- "230119c3b2a6b1bafca00", -- "1fb4d17ac6ee317ce5a547", -- "2449f6a2ba5fdac5a9c1d4", -- "6b488f646fce9835d43f44", -- "11978ed9a01677cec42ee0", -- "3ac9b63dfc3067c1c4627d", -- "7fa7e63240bd502dd4b06b", -- "4bafb874450e24655961f3", -- "4a5a912df871eba16ca2bf", -- "6a1b97013fc782623a1d18", -- "60f671cf9f662680d04313", -- "6f7417b6bfc27461fd2524", -- "3cd40ccabd157073f9e356", -- "60188d16e528a5d2e06d3d", -- "55509fd3a52bd88fe29e11", -- "193c88995f60dbabf1ee79", -- "36e5208ae458480078d5d", -- "27869ae6bfa80052e928d4", -- "14e76412c1e117fa60f762", -- "1a91f5500bd170effa0820", -- "2f27f9f5b37e53f26a3367", -- "7c4ebd51c09994a5c2702b", -- "7eede9c7d2fd05759ff0d5", -- "1bf7de225f0abb4eae1da2", -- "1f527bd93add787e619f2f", -- "2f4da63191088795366c81", -- "1e86f8d9f30e1c9ee2f741", -- "5fdf7c6cf80f5f4d619b9c", -- "1365575dcf06e2b1987b3f", -- "3860f5646a470f19d720f1", -- "b17adb15bd895ea825438", -- "67cd089f73cfc8807dd840", -- "7b97dd845f9509d060f296", -- "3951fc47c9cf417968c09a", -- "63bd657552fcd47a1fea3b", -- "7b59158d38abcc0653e41", -- "7adedaa3d8ff64ef5910ed", -- "121daf29269045f5bdd20b", -- "65c75439faa2303912b32e", -- "3a603b28f5e57fbfd764b9", -- "2df92a33b308b4efdcaee3", -- "69defadcac1e44c7a1c0bd", -- "17961b8be9d0332a213177", -- "59a5901c521b74864c8fb2", -- "697c3f9accda8d3543f182", -- "3f0177714af6ab07d870c0", -- "2334ccde40867fa1d0bc15", -- "16fb077509115b4c0ee442", -- "758f193f192584a42ebc31", -- "483ca240f22946b37af3c", -- "311601fec45703953f2b91", -- "67da5d093fc207176dbdb2", -- "1b6a00fcabec41d4b43ba2", -- "ba07dcfdd701f16f45aca", -- "2835e7f4b39073c5a451bb", -- "269c017af27ad44e6b201e", -- "3cf5810d8c38a097a7561f", -- "573747456cbe53c844796c", -- "7772e0b990ccdc614c11c3", -- "404ae85658f9b08174632", -- "5dd52a5a11350a9b7572fc", -- "7ce0b194ba3e31249ab36d", -- "762f2aec62b91b262cc99f", -- "3915c8d33da94da27c1249", -- "6e885e79f7b5fe77214da5", -- "668c0767178119bd41ac3", -- "6806f2889f5316f4c57e07", -- "32f953543bd07093a29e5f", -- "5685392e26e4e637394c54", -- "96cf28ae783cd1e477aa5", -- "710608c33a517ea5d5359e", -- "435abcd28c0cfc9f321db0", -- "514d622fcdfc26212b5d14", -- "408e6268fcd75479c3bece", -- "18e5cae7f3bd61293a8c2b", -- "65a5c9fe061a38a8c6c2e0", -- "6df80f50564e811e245eb5", -- "1b388caec4f8538425d93c", -- "1bab6e088abbb7a786ff3d", -- "17fc45b2690c315a5249e8", -- "4170c011864f5582d6a738", -- "3b3a5f854ba249c04d075", -- "38e1e6200860f4072a8a1d", -- "c91beeecaf54c95dc1b37", -- "f125d56d3c0c2aaf7ad05", -- "341851bd5e48e20f0a412f", -- "471eec9edf3f5af18be6bf", -- "4b21ef5da2b744139c3cf1", -- "3a051daeeae9770973713e", -- "75a7fc26a6faacf109b345", -- "5637e5d4438a119a23f043", -- "22f18c95264f1fb742c348", -- "1d595362f3a1b4c77729e7", -- "69a784edece7c38bcf7297", -- "4fbaae68fdb253d715d528", -- "23693b4063cf0fa20dad42", -- "51eb043d3564fa91215f1b", -- "2bb1db818cfd733dcce0b0", -- "a961f7b95836d3a578170", -- "51c819b9ec191b60920096", -- "ac6c9987de6c73f2259d9", -- "524b77666e02692a642407", -- "149d706db4fce00c71da76", -- "238de3e1606bc0e1c33adb", -- "37ba1e609c7b12a8e32733", -- "3ae30b1b5931eb630bbf6c", -- "1630a212afc84f038374d9", -- "5ebb44d93cb77417b61c4f", -- "5a7d2dd2aa2028d4da8f42", -- "798019b397419c8d54fda1", -- "74a156e77589342bbef3d5", -- "506e6a05e8de5c9198ae69", -- "48e4926c40cd6ab5e92ffc", -- "7d2db742721c9ba686ff30", -- "4b8968b5c5a93dbb4b2b55", -- "2ef2be0f7e33ace73bab4", -- "7651ee2e0f4d348cbe95bd", -- "43ee4b35cb3cdc84d1d5db", -- "449d4feccb40da2e122aa1", -- "356211f56936e183312837", -- "527456447c2748239033cf", -- "46bdbd32d31b2a36e04e0a", -- "6c1076c01e9e44fb047889", -- "5ef5512b3384aa1243daa6", -- "d452f805a2c35e686e107", -- "67a9131aabd5255bdce732", -- "5088a2317aa34dd5bb1b4d", -- "64c275af1abda385c2af0b", -- "402c7149b20bce787c7e83", -- "60c8d2e958387c0d0627a8", -- "516640d56302eb15061b25", -- "c62790b24bc842a717e31", -- "76e87d4d2740e137511b26", -- "6cf76079225189eb2608ce", -- "3c8b04f81e14e10396b582", -- "4bfd93fb985a44ed0569f4", -- "6ce98c831091728c0e73bb", -- "4f74e7ee01738298062093", -- "449ccc3923e92a0bd2e3ba", -- "4feae15528510f186aa1fa", -- "12a3196afc09a79694eb31", -- "6cfdd09fe2bd66b85c2e00", -- "587cce1cbd0dee8b98f262", -- "3b0283be973d59ebf4242f", -- "88b8371baafc87a9713f4", -- "4e6cb8ec1b00e2f28b3a7e", -- "235baa54adcc67af92d06d", -- "733b81816da25936e81af1", -- "7fe76cd2c5affa913c2b41", -- "26b7df388a02a8279b0652", -- "7b5272bdeb1b01fe56bc29", -- "6863984d7793407587e8e2", -- "1f1eea8231315133cde938", -- "2f85e68dfb9aea66d7f07c", -- "6259df76b87ab2eff6659f", -- "502c6a2df8916b18106088", -- "4cd904fd9401eac5ad7f1c", -- "5eb4d93a33b2d2e2c2adad", -- "55a41153a33cb4649703a5", -- "cfc86f804a481df48868e", -- "1ddeaa1e583e9146210f69", -- "38110b962a169200cc9f0a", -- "7ce4bd3337a7333159cb2c", -- "1738ee1c8e104064e07249", -- "e1ef803b3674bf39884ae", -- "55d7bf2f5724b5dd0a04ae", -- "7aa81a94a5a230cf59a0b9", -- "2baeaedf76503008b9e428", -- "15bb5d9b44eebb27a1e60e", -- "dce90e419e8d3f96eb5b4", -- "72a7ca4a8dc56f9c652281", -- "5cd319aa7906a96d2f6c7e", -- "557361125249092a7bf932", -- "70a1107bc42bfb598164ea", -- "df7ae04689867c9ad97d8", -- "117480f169f81bb3e8609c", -- "479fc9912c9c81152eb474", -- "4f2cc1f6f7aba8c20a670c", -- "17dd6e40297f1d32786291", -- "783e0229f219bc18b705e4", -- "8b462e0f7448b549fd688", -- "4a0fb16cc4d1bdfbb239c", -- "53c95b2787b88db0682132", -- "536be2b3e3829710aec51b", -- "3a89578d6ca992f91249be", -- "779eb73caa637aa28db87c", -- "52f5adde99e4501e4d1c61", -- "31541f24753a28cc5b51d8", -- "620084c5da2910137e2b10", -- "76c132264ad2a774a55164", -- "35a3ab4773c5054a30c44d", -- "2f78c0f7e7a90558573941", -- "5b39ddb704fa58142076d", -- "1d6812727d8421d0e03a6f", -- "307727bd97c5db086074b3", -- "1abc0d15793c655cee4a9c", -- "68ee183b2208228da8bab7", -- "116da33e19c8b80384fe28", -- "3d73fd3c3744e9ec5d2d04", -- "64ed03e382c11a32e34cf4", -- "479e7025ae3fdc2bbcbe22", -- "a134915353ce113eb72dd", -- "49cb6ac7a2bfdc54300006", -- "2d5e8f78718c2d4660cc69", -- "3f5027ce278d444a4dd243", -- "15d4218f4bbf0c95cd9649", -- "13221a23af3045ec5cea35", -- "1efd2b46d4a8724e929fd9", -- "628d18e095a8dbcb9f43bf", -- "30eff32d49c10f325b8e9c", -- "29bbe5fdf14e69065cb80c", -- "2df28a1b78b46f16aaf53b", -- "352a4a136ebd7ef294f370", -- "1c960c994194a1366a2222", -- "351c5a0b997e45ec21b614", -- "4c1f6b587fd26654ea69e1", -- "2735b2e6f5f08a9e9418bb", -- "3505fcb3eb2690f88b3be3", -- "4d8859f357a36792b7211f", -- "1e2093f76475f58a2dfd79", -- "456138a50c3717947be48e", -- "35714b90920ce6fe1f850", -- "5d7c2a1d1267b7a252da1", -- "754ffe6bc2e7525e892fe", -- "290ac68bec8aa8955b7e97", -- "a058b3353ac6290d9f864", -- "ef75fc5d77fc146e975f7", -- "48a999a2dc1a23a934a6fc", -- "7256923d608836710a659c", -- "2b13e041339df4d5a521ce", -- "51a9b0945a0908b1d40d24", -- "779559a53e6b62275896e9", -- "1fa330f6dd5f3ca09176ce", -- "3cb748f77d638122329dca", -- "7e62c15038abb8244531b4", -- "9bea90a26f9e93743a998", -- "7ae1d007cf030664c6b815", -- "52cfcbd15dfc6c476cfc76", -- "18ba9d869c489f11ce52e7", -- "93cbb2483673e4e0dda30", -- "2478db790ed59756cef964", -- "7d8b341c82b019a8d56c92", -- "584b7d6f0b43ddd0b397e4", -- "6081e77fedf3898fd66607", -- "540f5a33d5aeafadcad19d", -- "52c4d1c2ad153a3f70bc0a", -- "39489c7fdb445490d498cd", -- "e0800809dbab6d41345b4", -- "1536906705870049755028", -- "639c2fcec8b9dfcc987387", -- "214f18ae0c9aa7a1b8c02e", -- "5b8e9d8b290e89e5d9afc3", -- "4499c1c16fec3546d5903c", -- "5ce5e0595ad07c8855357b", -- "39bf9c3f1f0a1a15264530", -- "30a77107da1d91a699e9f5", -- "352389083277fbbbe66ac3", -- "5d711409f3faa9ea87abfc", -- "42cd59499a0ef57d6b0009", -- "731a7b89f357bfb855a5b2", -- "767dc9d34c09b03db4a0e9", -- "5344962f90f45cfaeb1bce", -- "504d29ae2e5a021d2bb278", -- "6e97dd298eaee757a3cec1", -- "2d1b2f087facf1fbfc7e69", -- "327b2b8d0b75e0d83a5b04", -- "7dc98aa964908b313939a9", -- "d8c34dffd92c1a20d6a9a", -- "21a363ab0e08a4336f2e44", -- "48eaf0293f956717b8f048", -- "6351b2a5f477112f552683", -- "2193bc73ac4b40415c95b5", -- "13f13f9f2c877cb73ba5c", -- "7c6b359299af5c59043711", -- "7895b432001edf846b7b3e", -- "3ecf9d05cd62341c4f7784", -- "6c8879d694e1a0b99f8e42", -- "6400e87749e3bcbd750d89", -- "1851e925707895d37a37f2", -- "30f4f5617cc73435ce74c2", -- "18ec20d19a478746123b", -- "39242760b51f2f93fd4721", -- "452d3dfff11e24bf680356", -- "5cafa83a10f929b5076c60", -- "7fd4ee663460087b793a80", -- "7e958697030784ae5ddf86", -- "a6c54d0ec55adb4911efd", -- "2964973c288dced7dae8fc", -- "2b0fed7a534d25697e5c7b", -- "3afeb7cc8f8e5bb8770da", -- "6a81a8d913b71671629ad5", -- "75f4eb6de0d35eeaa16cf8", -- "7abf68b2e4cc9e3a3b2c5f", -- "4f6d8c8b0b9b376d42c4b1", -- "23f219093e9b0bb3b5217d", -- "5a0c2602dcbbbf468b67e0", -- "1a63315aa52cb254b65ce0", -- "4f72850630f6f8c1a68862", -- "3722a55f27f2c02b34eddc", -- "672d7083ec424e5d883cec", -- "4839c6454f97ececa9969f", -- "e941ecc714605cea72177", -- "7cf9338ca9bcab73862b81", -- "6a23876a8c802d81d83d29", -- "7006ef130d31e12bc44c5a", -- "591bac661062f64b8e3f2c", -- "25cab751e23d8e69bb5048", -- "61f4a55b140e767495cd59", -- "1a4e5bc143bf00e8928403", -- "4a54d9b3589d5340a01e23", -- "18019c176b4c9453028db8", -- "76fed7d89907843db9af52", -- "407333b3b6a3bed3ef8920", -- "536a736ad3a37793dd9f54", -- "5e56a7d976f1a3334f57c3", -- "66ffe80af410522139e92f", -- "1b0c27c7452322264822f3", -- "58320debe89492ceee77e", -- "4fbc987e428ed0ce9cb76c", -- "70a2d453b688803716fdbf", -- "1921f3262afb2f3766f357", -- "6e007172a16a9c673e635d", -- "527c4b155e3708972293d1", -- "2797689917c95a9d4073ae", -- "69bb33c18017fddf18d091", -- "165ff53589519199fc1846", -- "171e59c89024b148534f1b", -- "23c82ae839bf5380a55acf", -- "455c9131bfa1c33274be37", -- "4bacbc68650c41520d312c", -- "1c35e13f8ffb7c470fa61c", -- "6b4728ee168cd23e2fe47c", -- "22e321253c3e0fb875c4df", -- "6077a88144957827c07205", -- "4309c1c59a581af63d922d", -- "1b1ca5d6c688c4cf99448d", -- "31a504d1dcc251075e4436", -- "223160cdd1bfa322ca3e6c", -- "3601174a7dc823bf4dc3a6", -- "6da3828f2d4926651f7a27", -- "7de4927696bdd6d3b718", -- "7bb4f9d707b4ee3a20e779", -- "343dad4f059acb87d3b0e2", -- "4e501beb4617be0f02deb4", -- "3943e926fbe3d426004ea9", -- "4b35e35e82bffb49d0d830", -- "6520599b30ba3568ad0f09", -- "2a48d89ce122dfa7deba2f", -- "19b666810d736e639b51f2", -- "1ccd174e9aa4e58e7414bc", -- "475e84f70334cc0bc8292", -- "393fe0be8f011593a7e1ef", -- "17276a59aa9630c1141c17", -- "7d0578a8908ba294259bd", -- "4a9e2e5d8ad0e2e82aa7de", -- "63e0dbdfb13b4fbb46f00c", -- "310e395e429c4494a5f850", -- "7cc0116bd0bc164835ee72", -- "634478b621f7f0a455c48c", -- "397f144a181805e1a097c9", -- "53016aa1427381b9f28ea5", -- "76c2f0ba37187112ee4d4d", -- "2bee268df09cc40864a917", -- "7851b3168b92e5daed021f", -- "149e6a0b6c6543ae895e07", -- "1dd1b432dc809fe4c879b3", -- "2ad2546b270547fc24541b", -- "2015aa6fc7e48fa3bc5ab5", -- "38596ed050f14596adc07f", -- "1d2b9ca2f44294070d4e86", -- "3778fd3a46ffde4755b6ce", -- "74bb588b5553c2b2d4ac78", -- "3d1155c4a53835d991a0f", -- "35865b2ca16d3453781f41", -- "6ba1300374acd487b23577", -- "3f68fa1a9ab7772758d0ba", -- "30a3461d63ca9807464dd6", -- "552aca5af025ea1e84aadb", -- "32aafc640e8c99bda8faa7", -- "2fb170a11f1aecdf586d25", -- "751e9eb348bc8239d6e118", -- "7fc2bcc524b4326eb8303d", -- "1cc2526113f2bae9b540c1", -- "6a437e22c95fc6c6a4449d", -- "df261ad3b5157a525bb81", -- "690aa96130f8c533d77ce4", -- "2f58f2df794a35875efc99", -- "19772e34181f57b670bf9", -- "60617400353c1eb8e8832b", -- "7136b3dd116ed121aab68", -- "4c95bed884bd87ec1d5e70", -- "68fa3ecc3845db5d523ad9", -- "4818e9ef0ea7625cfc3d0", -- "27ec8c6636679988dd1267", -- "57d88b5e0b434eb1a0dc08", -- "47a1f466100bf70dd5689", -- "55afbc51e7c2cc748942ac", -- "75066462fdbbc7301e209b", -- "72b5d8f8e65cb7509a93d8", -- "38d9d05f9463a537f470b2", -- "2f39a2788d5c2a24e16acc", -- "5f4e7c70ff55ff2f888f05", -- "735cfad9acf49090fb7037", -- "6a716dae106b9aeff2133e", -- "1c90fea5f39d8ac4dfc2a3", -- "3a8c5a9525f5d62cea294d", -- "498104aa12355244a9b0d6", -- "414e761d40341e7f97c304", -- "16d5205447831696c5d6a0", -- "3cb5a124ce563c3967dbc3", -- "899b1ac6f72ffff8aedfc", -- "34eea7a66e8ff3dcc8988e", -- "5f80095f2580ec4cf13b51", -- "4d7566cd294f75be6620f3", -- "506d84c9f4d4bc400fdd25", -- "5a8a9b5c659b71e837ea18", -- "c16d15fea9d61c8df5121", -- "3a7a488015e75feec809f8", -- "6fe27c77d57e2feb8cbcbf", -- "452231c3bcde7b7b5b0af8", -- "760f3656c1130b21d369d9", -- "39a0c4e1da321f1bc126f4", -- "3315173915ca23d8c1b814", -- "1cec8c96472b84936bbc22", -- "3c70a3f0e9c5b206031a33", -- "7cec29d14a0eefb222bde7", -- "760df490123f6613b0a970", -- "5bf795c6d548a19b6ac340", -- "5569560418e73ff9db709" --}; -+static const char* RootsInv[] = { "1", -+ "280f08134d28252bd0b713", -+ "559bf101b9cff724b929cd", -+ "3a8965cf80aa6c4410dfab", -+ "45440750f90776251263b4", -+ "12e92ef014e8d7fbb8d23e", -+ "240e2e38e41f3b6530a267", -+ "69412d8563ffa7e83b0ef0", -+ "3288681f4d08858009187c", -+ "47ba42dd06a62256ee8c8b", -+ "67a8cdbece1aca4e55ba72", -+ "1cca04897dbffe7f26f2ec", -+ "2fdd94b55dd5fb9a3915f5", -+ "3b228f46cdc0e8a979b45e", -+ "5e842bbb537167f75451a7", -+ "13637e15b786797995ba49", -+ "47d847bd96fbfc9c221fd4", -+ "1badf1b7dc0b73e0bf8b67", -+ "2703e4a7969073dd381cbd", -+ "3eaa7351a72b065707e47a", -+ "476ef278c257202dd01711", -+ "2148939cfe2757b6666fc2", -+ "4494bc9e65c8cf2a6ea51d", -+ "20d4366552d0d83219fa0d", -+ "47a080b7584194b936f712", -+ "482af287c71050fd03632a", -+ "19a439abdf3f4f5eb63683", -+ "426541c137d269fd2e2296", -+ "1cb2dabf0298f57d15e65c", -+ "1e92415029559dc3ed8283", -+ "568fd03e0a80223cd1669a", -+ "5a6df4a369ed81627d4fa3", -+ "457dc9644e5b25ae6c4291", -+ "de9896eb70f1668b87fc", -+ "4e27f64f8732105513ad9b", -+ "590056c647987959065bd", -+ "171757e72adb6abd8f440b", -+ "67e11e83cb547515b53701", -+ "bd499ce82d93c07477fc", -+ "10c81c57aed768b3285598", -+ "3a7ecceb35e2e9a438dbd5", -+ "1b5226354071022a104a86", -+ "3956e2767e97b7703253b0", -+ "1960b3a13c6cb6acb7f489", -+ "61c87048ea8325590bc5b1", -+ "46323a1998a54f7e0819f6", -+ "630270f2ed4331deaf63f0", -+ "153884834dca9aae7d5d2d", -+ "39d71478d3005e797c6913", -+ "5c1544633a0bf7939343d0", -+ "3bac7e0675e0a9967ff7da", -+ "409fc384bef4b3d255371f", -+ "39baaf1f520d96bfc8c1df", -+ "4d7940ea6bfaa7b282a985", -+ "4a9b685698a7674338b188", -+ "70d95d23dca53184d30b4b", -+ "51fc2c3f86b8fc46a7a221", -+ "4f5e7f770a4d50c69c4028", -+ "17e8af02e79e7f8d2cdf99", -+ "160134aa459258ff8f6285", -+ "5d6bf6a59488555bf1342a", -+ "75471e22b2d84fd2fe01b9", -+ "1778273a04ac508e342b", -+ "6152765b747658a14d5829", -+ "6f2f55effdb76df46b548a", -+ "3552a76787de4570d42693", -+ "239e94f2e5843a6e20f1bb", -+ "5b4dd88e0cfc108bdc7320", -+ "7c1256dceb40e2f63ca4f9", -+ "16d114b00964bdc8e2e82a", -+ "36b7f85db80800549459bd", -+ "5ca9b2680bb84ff6e98b33", -+ "7fd47e391981aa515116c7", -+ "39965be2b1bbb3ed832fdd", -+ "1efc90353d647b1a3dfd54", -+ "59daf69acb0d30ef2fc5db", -+ "4f34769ad379d64a27233e", -+ "1f91eb155829f1481d6da7", -+ "688ea19369341f6943063f", -+ "3d57e0a1ef4abcae8719be", -+ "127b65c61b8c8f1b9456ee", -+ "1ee9410958604d03f20f1f", -+ "4e175c68ed04c585f606f8", -+ "aeeaf98aedc83e6ae6cc5", -+ "61b85bccf0f4316c2cec04", -+ "768cbd11024387469f6ee1", -+ "74e01ea265377cb713e57a", -+ "5695db84b4c92a3d6677b2", -+ "7510db776aba775075e549", -+ "4ae24f235a28b7f71492ce", -+ "5a20607ce9679fb1f266e5", -+ "9e1bd1e36f73d0f69f697", -+ "218c9ea39a51618b1ce10e", -+ "3cab0ae1036c6d43311ae4", -+ "4082d11934cd3944191e6d", -+ "46b0509f9638e9030f5895", -+ "2e274c1905f505ef9d43c1", -+ "2555442bf058722bf0120c", -+ "4d29703647563e84d6ac7f", -+ "10db0037fd5f7d8c49aee6", -+ "3ad7e93e4ab55d402a33ea", -+ "6bd3a60ce037d04a7d822c", -+ "dcc0bec90c531be4924ef", -+ "53e73a626a5de69e43d0e0", -+ "1472017c713a1063411e0", -+ "666ea50157a2d8307a0ef8", -+ "31ee9d29cb2f2a7eeddbc0", -+ "3c1c9492a56c8c78536095", -+ "56a6cdbd81ef505320e706", -+ "25d3735a734b777dd960b8", -+ "1dd4abfd6c4ed8a3ad6bbb", -+ "ac0f86afb7bbca8d57c4f", -+ "43d235cd54423fd6135def", -+ "4053f687fd270a04d092a9", -+ "197461e90c6b70a7dda46d", -+ "65f71d8c8e62cbeef07daf", -+ "70b50a59ebc270bb237505", -+ "2b5280596202f4b3ee0814", -+ "1a30afeb54dea502f0310a", -+ "33c3a8fe7d6e90cd610695", -+ "517123f4920304dc75317a", -+ "46afa6e418c9bd4065cd9d", -+ "2a68ad26b94fd25b4509aa", -+ "2ab0a302ecc453de7fdbe4", -+ "43e02a2659ddc4d3204fd7", -+ "7fcb3af03a778d48d5ac9b", -+ "40734a14dd653457e54b74", -+ "55152f253ffb05575c981d", -+ "6bb593df2f572a23254ed6", -+ "210441f8cc9b531f88fd3a", -+ "c79d219ef793e02a9f989", -+ "752129c2d07a536bf3bb8", -+ "2e9fc43379988881a1b064", -+ "db07432bf40360e3df399", -+ "2e9650e328b679ea03af31", -+ "249469414e604f245a56ca", -+ "34c572dd024d37c54c5648", -+ "411a5d336f1cca7988f319", -+ "4ca98168d36f8ab3815a02", -+ "63f8378a4c563212109ee4", -+ "7c4aa256f5265e9d49e8ab", -+ "4c622bd5bd26bcbd487c68", -+ "185c0df44a167fc9bfe948", -+ "7b4912ce2f8ea6ad90baf0", -+ "4b90d5d4f791e4cafea283", -+ "639eb30656278296f2b3e0", -+ "21d9c50ac15f9a1fc38df4", -+ "797e5770501b190fa5f6f1", -+ "6be705331dd40db5a995b0", -+ "79a8e47a4d897cf6b712f", -+ "32f17d420cb00b34cd9fc3", -+ "3d1dbd13d46aa7f5e4c42", -+ "2b036df33feda1ac5edb68", -+ "2969569df7efe8c61bb461", -+ "1c94ea576c3cfe00e40a0c", -+ "36a98de095d312e040c903", -+ "2e78ee01fc4dbe304eaea1", -+ "51edf68dda1a87c4b3af7e", -+ "cbf28251298433a3abc70", -+ "73f8a019ddb59d3f06f049", -+ "341181b7d4d6f4e2cf9643", -+ "17040e8c8be515e4ea36e", -+ "25e016000255df0b5c8153", -+ "272821f07dab57e4aaf0a7", -+ "4786c255855f792a20f869", -+ "79ea859ae0d9bf58c8e071", -+ "592a4efec7cf89e527fdb", -+ "398cbdee468f0759c375a1", -+ "4e4622894612a0772ab9f8", -+ "3939cec4c6eb132c9146a8", -+ "41b1881d9704918a051695", -+ "b2c65762784255bbebc75", -+ "97bac956d2b65a51260e7", -+ "edea2902a199d26d75bdd", -+ "5b6485b2f7f41f0abf3544", -+ "6415a8a79aa0ebffb6a24d", -+ "ba3b72d702ce311cc02a", -+ "67ed429f48df076df817f4", -+ "58dbbd6f088b5ff881356c", -+ "2a9957bb174e3a8d1169ef", -+ "5298718820a8e285437a64", -+ "71dbc0d71fbcfcf1245bc2", -+ "495ccc90a936edcdb3b175", -+ "6862becb8f668738ac092f", -+ "5f1584cca489de9bdcd65b", -+ "7f873bc8523c4931739324", -+ "282425a374dcf57904fcaa", -+ "7b233911df67c0ffe75298", -+ "28da7bd48db9e867715c64", -+ "14e34536d861554652fc3d", -+ "643b1783eeff5d2d9d100e", -+ "528f06b90d6ea98654eb1b", -+ "6c02da94ff6269ebf8b68", -+ "7116294960ec1370cfa192", -+ "34b380f57ddac800a53234", -+ "3746df2dcaeb2f941850af", -+ "520cfdeb5b65ce3df47f12", -+ "33bbdb9fd9d9e6cda126be", -+ "52a44d4aac2b12a44786a4", -+ "17e032019f0dc1c4277c0b", -+ "3069cb41e51edac9ec2b3f", -+ "653694fe66c257988cd02a", -+ "332ea59945a5d0e73f7dc5", -+ "47d7208165498ac04fc240", -+ "5f8e36ec1202b0292d5945", -+ "196185d708583cfba757f7", -+ "44dd12bd0d7f960d6bd7f6", -+ "235ae37d20b21074f27732", -+ "4d10e4408b3b6761aa225", -+ "3f14484539a427ea73a1b8", -+ "35b964532350abcbf76d9f", -+ "7e5eb2a4ef3434465acdeb", -+ "1a04ba76b7855a5e9c289a", -+ "57caf75d12ec817c6cddfa", -+ "fb87766da12e75782ca77", -+ "76272e758d9f83ceea908b", -+ "15e2aab3b7b69272b3c155", -+ "26b5c49d8c4e12d4b3d157", -+ "18347f5ec924cf4631f292", -+ "2ef94456619d9728490c1d", -+ "1000ca68b2a0f4790d5b97", -+ "208b7d3e85a97a99407a38", -+ "745cc1be634380e90bc82", -+ "60b46e71f1f2b8376d5d29", -+ "2f305b730466b54d50855e", -+ "61b023abdf63ddd6300036", -+ "3bcee7bc9a5ca7219edfaa", -+ "785211217f5fa1bf82b193", -+ "765c653014c5e4b3dc3865", -+ "52d5ea798306c9e21853b2", -+ "402466331777b126e4d8e2", -+ "7fd2ed81931942f0ef8d50", -+ "6edb305f1f8f30902439c9", -+ "1a484afbb93898190d8d03", -+ "40f2e74e1048db76b72516", -+ "b03e402e64c3436818402", -+ "4b0f09e29272f9d49c6266", -+ "59f29456bbb20b47aa046f", -+ "308a1daa2779a84d4db8ac", -+ "43c088f2eb74b96d25a4a8", -+ "614a9023303ed4dd2cdfb9", -+ "437e569a7451bd9bbbce87", -+ "7c38756fdad7c18ef7576", -+ "cdd3df5aba4c7ba52b4cd", -+ "2d2efb8be305a05b685aa3", -+ "1aba34eed15b418d4b7f0a", -+ "2432bbe72c83689ef74c85", -+ "4b2a621bcd3f244dbd1aa6", -+ "38a68ae5efe6ac22d3f278", -+ "3e1ecaa8d0631877bfedb9", -+ "67afcc19d0bb557a608666", -+ "fb85baef473def8948133", -+ "47efed21b3657d0618e28f", -+ "6e988e80d2c29dc7542de4", -+ "525362bcc006730db95180", -+ "30e3bf91dbc04d50a032bf", -+ "17a50483229662a578fdf3", -+ "3395f092181af53bb73f3e", -+ "260f0ab9a00e1e941e404f", -+ "26b516b52794658e68ab5a", -+ "76dda8edbfa5a4265a1a74", -+ "49af3dd263ef8ddc7b0303", -+ "4956d4cfa3dee8e23259eb", -+ "245cbb0117ba8963db7929", -+ "41327dfa41486f6b995572", -+ "207b51e97aba651825b40f", -+ "1d5fe04c71a377f6784338", -+ "43d0ab106641bd01d72cd4", -+ "7dea2305f898b6d88f6821", -+ "7c9cfb41c0f888d000fc52", -+ "6b849a1f17d635cf0a773f", -+ "3195d14bda042e7057d34f", -+ "52253824741dd177a674a9", -+ "6387ce1a213d98335598c0", -+ "50c4c9d0b48bd147d875cd", -+ "2afa4dd2f2245b7525fdf6", -+ "7add5048bc0984c36294e1", -+ "77e2377901111b6ba92316", -+ "83b4a6c139b7fda28fc0b", -+ "30f7be09c5f39b5532dcd3", -+ "132d2eb133a0383d464ad2", -+ "47d814d93ff8dca3c1398b", -+ "37bd7e26cf4711cd149911", -+ "5a081e53f2beac49d1a3e5", -+ "59ff3fb267f4dcf86fd4df", -+ "146dc1fd204e259d148dfd", -+ "578a6c67a3dea7609537e0", -+ "7376e75fa605889898fa7a", -+ "9dfe0a1feefabb0c62643", -+ "788f47c4aa1ecb9b01c1a7", -+ "3ed51ed7c85d68db84d78a", -+ "23270a061497f9098a49ee", -+ "3153805f294e973c493b1e", -+ "22d68d4ed1af18d8658de4", -+ "2ae83fe35c42b256590f54", -+ "6e1573decbd31bd14c0615", -+ "3ec0da959b014a91e3d171", -+ "7d60cbfdcc63ced7661d40", -+ "2e1479f3781e1a48fc49de", -+ "49639d01a55025d5b2f6ef", -+ "7d98b2bd2e9168b6d2e72f", -+ "14efaca65e59726b81dbf0", -+ "2d816960b0911019df6133", -+ "10b3ac9e35f753e3c9deb", -+ "40c514f5e20e67263ea899", -+ "6ad236039c2c3e149bcca2", -+ "8ab595a01941ab4070b39", -+ "5dd15f8501fbd308a231a2", -+ "6f79151ea6cbf1bbe85f5d", -+ "13fc0f6b201b7368c44178", -+ "601f96473a856041a89ff8", -+ "67adab05fa921650ed942f", -+ "4fe741cddc07d380fb6143", -+ "375ec3fc3fce6eb8e8ee9d", -+ "416b4cd1af257e44ad03fe", -+ "7b2f70ff56626a3003c33d", -+ "39c91d6ca89a6fa52b3be6", -+ "34363c8e2f82b5fdad8c66", -+ "77c405c1030a468f5abe34", -+ "67437e976a93329c5b9760", -+ "499ab94c7bb40ba492d85c", -+ "49c59a03a60b57e7bac289", -+ "210cf16be9c62f7408e63d", -+ "7a2990f262218cc62c32dd", -+ "4c2a57eb3ff167fa077ee2", -+ "23343ed75a8de5a22fac16", -+ "567dff5f6f64aa1697fa0f", -+ "fc59307a819ae8b7a3f67", -+ "2b8d9b2da99a690e7c44a7", -+ "9f4b0dce97935ef1d9158", -+ "365c9be3e9c7dcc814388a", -+ "4cada2a5056e025832015c", -+ "33fd72210da605d38ab799", -+ "28a2b96944f1b1210e6bbb", -+ "125d9103db1d2a83e13f71", -+ "3e1e43759c2fbd4596b36a", -+ "20db18e6c822f683f97989", -+ "f46157d09593fd6ceaef5", -+ "c75433d8b0423b552102a", -+ "5aaca79690a162240db985", -+ "1160b80ff627f607bda927", -+ "5839527a17db25de563064", -+ "7b9587337c3feffe6974d6", -+ "147d7e964c45ec443a24fc", -+ "40a3f5ad2d4a9b33e2f67f", -+ "1cf9608a937eea1a0bb3af", -+ "2a8bb0c8c3747adf31dc91", -+ "3c3d137503578a98196d6d", -+ "1cab579a1f775fb778d900", -+ "72e9a5baa06d4af7c9f9da", -+ "dad2db631732b0506f6b1", -+ "686f17e02f2d49c0e2e48", -+ "21eb89d73161656b740b6c", -+ "488aa158d747df0f5cd422", -+ "67b1ce8dfe00f53da9491b", -+ "687346ea28caf1c87376ab", -+ "254a37a2b407cabbf8069f", -+ "61d42c0be51a3d664c8df2", -+ "dd0623ecc7bb862ebbbac", -+ "54aeb8675aac1a423a7140", -+ "2e76f32ec68bf11c44acc8", -+ "a2c3a3cc1a5dfdc5a02b7", -+ "6a25d7d313e7a656aee548", -+ "78022742d8c1b58e95d935", -+ "46ea2e85d6ca1966d1ada4", -+ "7530bbdc505d301ed9040", -+ "30ebf17f92538a33a005c5", -+ "4839ff83b5f2ddc41b61ee", -+ "6517d2ae1b7ba4107ba2ed", -+ "1a5f34cedfae0cde5ea0a4", -+ "3d55ef23d8c9f8419ff28f", -+ "41d953d4dc4746ec83a1f0", -+ "4f4128c0856b216db55c75", -+ "af0b8a8f75ec961c833db", -+ "1e5217185f433bf1233d59", -+ "5846b0049ea6f32f4b2762", -+ "40e1957b3947c90dc23e89", -+ "5c6cf60aae0cfc30048ec1", -+ "5ee2324ad6594548cd275b", -+ "7969c90c819c5b0080834", -+ "6afc9a3033b5fed5a0c3ee", -+ "586e1bd3806f5472b98045", -+ "6afe8bc3bb8509aff3c666", -+ "5dbb4f6414155050573b80", -+ "493f40656c80193590d2f4", -+ "3e61864fd19f85bd211f70", -+ "3ff0891da2c6d0cb8ab6f0", -+ "245f14c58fc2f1bd38bf6d", -+ "5334ba131913654474693a", -+ "3b8be315926a14f8200fe4", -+ "54c37f5e810a7c49e7a02d", -+ "3c015f30d95c1da9c47adc", -+ "26580ddf1efe9fe3eae4e0", -+ "5b68ba6c572a6576af79a8", -+ "6b11c6506832a5a8571e85", -+ "37f81f265c72ca7279eb3c", -+ "79b27c762372e476f703f7", -+ "102e8f3d54ced5e10227ed", -+ "173b57e939be4a4efef880", -+ "5b18e3d2fe16a9d973b934", -+ "4413cfa8b5666fc0af877a", -+ "54b4dc744541c38f937102", -+ "30ffdb4a4aa7f26e29fcc9", -+ "1b931cd6241fc4f484ed23", -+ "7a45d57fdc1a44af5791fe", -+ "66ac85711d7e32d731c773", -+ "6f55491282e49ce5634ba6", -+ "17ef22a6ba1fe32d3ef7c0", -+ "153d48f10507702bdbbfbd", -+ "755b7f3a3389c861fb2d23", -+ "1bacdadb366134c3d1a5c0", -+ "4de1c0244f476f355a3a91", -+ "2b04a0e7492ffe108c1c00", -+ "49b08f20244bc64879adcb", -+ "76201a82e565cd9ac092ed", -+ "69699a76b55d4ca99064a0", -+ "6d83e6632fcdd8cf940ffe", -+ "705cc0331aa0195cd9f6ec", -+ "59b1b4d92c6ee6432bf67c", -+ "26c3f6eae80009e6946697", -+ "825e4a5dedb493626e7ba", -+ "4d1a97d405c026a8a5aed6", -+ "d08254f4d2d5ca1a5b877", -+ "7bca9525e525d6ded2c76f", -+ "755d342969e9fcde9fd595", -+ "7438dcc1d87bfc73ab26", -+ "5d77b3e7e323ddd35a71a5", -+ "dfc33dec9862e861d43cc", -+ "75b3fbba0880cedfe12ea", -+ "2746a28b14b19ab8d24145", -+ "795824804b82c5e751df2b", -+ "1c6bd00355516b7177a93d", -+ "75d1f80628c3a1c1082c91", -+ "1998245099906d42a62588", -+ "7ba683eab937665ca29978", -+ "203c3b480852a2154fd642", -+ "1ee8fffd33bf6223d36b95", -+ "c92faa8d02b107a1b5d50", -+ "65a7ac7cbfcc2f6c41c2ac", -+ "7450197e181adf8c4f92cf", -+ "636079478bd1eb493d0866", -+ "47792007d733892284fb9b", -+ "44678fb0d784f11b21a657", -+ "27e147bc2366e607ad99bd", -+ "168c6919206ac6ace0f625", -+ "1c9f92bdf4717c6880a9ba", -+ "3c4dc48e3cdfd4ce2eefe9", -+ "6b79ef63bb66f1362d8de", -+ "5efd2121bfee3a30184816", -+ "5ca7f66678a73081bd34e5", -+ "5cc79f5d12d2a991f4ebd0", -+ "4fadec3b4cf5617426ac33", -+ "af86674d8a1c364331ef3", -+ "1b0ff68c5f14ee84b37e7f", -+ "6be91a7f057434bdea3953", -+ "498cac7e3100df5899cd16", -+ "3a0a69f5624f959d85e411", -+ "779b65c66a52eeb45328d2", -+ "48b5f18a43890f525b850c", -+ "1a9a55461554e908c4fbf0", -+ "230c19482c2fdfccb6b94", -+ "1a364185d640ba1a6ed583", -+ "1c72fdd679cfcd10e369be", -+ "56853e4d2e614e1924d27a", -+ "10cc655b268878a4e8e081", -+ "3c71a5e6f6b431bc524a53", -+ "7b274f32f2cbfe03031cb0", -+ "64adff5211c520e76cfa93", -+ "621edd8ea6ff7136526540", -+ "7f8ad9957e40808881a192", -+ "76c881f1a372f21e829095", -+ "5027d58d8950e307548d14", -+ "122225a7053b175027361a", -+ "627a4795d0c0df1d84d13a", -+ "4a5333a5e1c04b8bdfa257", -+ "4555d38c19f123cccb6fb4", -+ "bf09d6ff46adc21d04951", -+ "bfe2f259223ccddac13b3", -+ "4167a3ca5253556f128ea6", -+ "1d3c95c9d8462d4c467220", -+ "48e1272ba911cad7536a1", -+ "59b759ca3a67e4725b5f84", -+ "53cc3acdd810a96c3160cb", -+ "6abf077f6636ceee313734", -+ "226c7c98f219b40ea94b66", -+ "54dcbbc689dad12df77730", -+ "5abf04c6f95d64b6c414", -+ "50774e378282fd09459eb4", -+ "66895605da5092de3d2b87", -+ "3bb5af245e5d40c6fc15e3", -+ "6e388c53aaae7d287eebd5", -+ "446d6309025414bad0aee1", -+ "6a40f14b7a50eeca571bae", -+ "6d925493d403647cc0a7ba", -+ "73f933fe401d564be0efd3", -+ "15aba357d612d87099180d", -+ "5c20428f433fbf0c9ab374", -+ "4871087f3b2cd3c0f24c3e", -+ "4eea383bfa391bcb14540", -+ "658769c97f8b8945ac2878", -+ "4a05e03567ac78048832e8", -+ "5e4b991cdcf27f65105596", -+ "32e5746a212d6238682c00", -+ "26436c96779bbae9c15fae", -+ "290cc13b5edc05d863546", -+ "69714524521e343bc3692d", -+ "3ecd876c819b78567f7fa4", -+ "2abf897aba93d347d6e2db", -+ "62f83959d672cbfe7201a", -+ "1a54e98271fd5720e1bc63", -+ "2029341ddfdbd9f668612", -+ "572930c1df7ba238dfc9cd", -+ "1b71574f7c567d707d0e82", -+ "509b53b07e607cbcf6e79b", -+ "682583fe078ff76c962922", -+ "2f0c8ecc959b7521936666", -+ "621bfd4a39ee713781e554", -+ "3712172b56577089f4c773", -+ "208fb7a4ffec7d8d1e5be6", -+ "1a5e08fda45015af7feba5", -+ "172bc617da9e1aa348e114", -+ "427af6fbf5578c6104b255", -+ "522de20b2431d6ac8f42fb", -+ "6ee2946ba009641ad73037", -+ "73e027017f2dbdbc204a16", -+ "3d88de9f1c15bfd7b6363b", -+ "36c8b1aaf274cca356ae2f", -+ "e050d10f9ab1681fbdc06", -+ "3cd72e80ffad615f09526a", -+ "2b913687a118d5d595277b", -+ "22af1fffca9aa4b2ba234a", -+ "7b4ac8e7f9ffbf17f0627f", -+ "57d57f4721fb6be3b38e99", -+ "c98c97ab7b4b0cb756894", -+ "2248d63b93978222916f1b", -+ "53528c9bfa6f5405d66497", -+ "5e45b3a532e82a603df12b", -+ "6799fa1f9cffb381bd6c8c", -+ "5097857cdd82d2df144dda", -+ "4f540ba10fdacad19fee6f", -+ "15891c14bba25257cb14ef", -+ "eb947683c26db8dac2f36", -+ "6b497ffe240d0867d5d7ef", -+ "2beed154412bd52cf1c83c", -+ "39824b01dda7b8ada90cc2", -+ "5afcdfdab7a5b6864efc6d", -+ "743eb61998341a5e892884", -+ "745ca85c76435eb7ba81ad", -+ "4b223517b6c7cd85cb43d1", -+ "51e8f647af3880d2b77ccd", -+ "6a24f8897d3040e8fb1da8", -+ "57f40a819546afc89fc2ce", -+ "6b0dc0d5521d21af0ccaf4", -+ "282f326b1fcbfb463ba836", -+ "4d7d33eaba361883277544", -+ "298af75c2d584b01ccc6a6", -+ "692752e677cdaba7d636c2", -+ "277575523998439f834d3", -+ "1aee70e483c99574480349", -+ "18991d6f38c445ab4b38f1", -+ "5552617d9eaca45155f490", -+ "3459971422155f9703c78c", -+ "40678fa2d309cb9417f68f", -+ "2be59650bf9aa57c249937", -+ "5ea38165e28694c8629ccb", -+ "3e6265ca213c1a0be64512", -+ "69c96f5702ae4eecc6f341", -+ "62e9a332653e1b103db5cf", -+ "62870c281778214067b40e", -+ "14bde3f9984cc98dc83f60", -+ "5338be8d9f87d3f2e46b2e", -+ "5e7785eebda5c8e2f0247b", -+ "24183bf26908368eb41547", -+ "51f9e6d75a3c5264312643", -+ "4c67268f528ba7e8c34a0", -+ "708324dd5e787ea3d43a21", -+ "75b09479e265b9f0ac9a5b", -+ "7972b4774882051f2d85a4", -+ "31be6678e513813e0e676c", -+ "170a54e825e33a2265d3cb", -+ "66fecdf77d13ff6c0b25a4", -+ "923121ae3af782c934df4", -+ "473c4bff7362fbbd2049ff", -+ "61249154ca21ee2b75deb1", -+ "23ac86fba80f09945d51d2", -+ "19b52abcac8b60d5349efc", -+ "3a9c7a7d5782f84fd4620f", -+ "674fde01f6057423c31a9a", -+ "5533d7d78826353c79c73e", -+ "42e88e9f66659afa2a393", -+ "18e83fe885c9bab518bb97", -+ "1ccb03c008f2e822848880", -+ "3665e544d5ec7ed8868a1b", -+ "6b25a8073bc36b2af4c2b1", -+ "7b5ec7e3346c3cb243b356", -+ "34b484cdb4cebe6aff839", -+ "260d3af59b4f3d5c208bbf", -+ "3d946cf498fbed2d965f70", -+ "4755035ba4d9924118903c", -+ "4a29c3e62c947a4a1e99b9", -+ "4edfb060e1dacbd449d726", -+ "29f1e17550354ceae49f99", -+ "247f391e5a3b234cf19ccc", -+ "7e2be12d72782db9e725dd", -+ "47d8e4eb9811f9d409ea40", -+ "5488a723f6ba5cf9800543", -+ "304cc216ed2272d07c7f80", -+ "3292c0c9fda6887e4ad161", -+ "24af65fef90e2f99e03cae", -+ "2c250894e17e7f4b0dd", -+ "77a73ba77b4ed622a17e87", -+ "f36396be6cc745bba9473", -+ "683a5c6214b92efde4aafb", -+ "55247bc5a72b8d3e89234b", -+ "6747e95b215a546a339b7", -+ "178fa57d907fddb0fe3cca", -+ "748df460f8594e0bf1ab20", -+ "3b409dc537f82b36a0b80a", -+ "69150cde40be119caa92bb", -+ "48ef84f7c351ecdc951b2d", -+ "4e162f9f85bd081abd7380", -+ "32dc0a137f654afa8bd8fc", -+ "6f59efef27dbd92df6f652", -+ "645d789e2ca881eb3474c9", -+ "73a88b6c78ebe25a0f02da", -+ "3501255a6a3473cf6ac042", -+ "4026f1042b0f5b1e940a78", -+ "364b7fe165d59b5d916e2f", -+ "daa197fa1e9b3068f7333", -+ "1d51d9201dd8c5066bb7d1", -+ "1e7a055357b6580f4a7b9", -+ "6f33938b3b060336c57082", -+ "6ad4c1af807487676eed8c", -+ "6a5c41dd17f1f090be79f9", -+ "2b1a4dba7447b02833bcc5", -+ "1a939b8af79d6b9d1e57e0", -+ "339fe9b069fdcbe6f3e985", -+ "55e838d685f75c7c6b5f20", -+ "38102211c805f10960d5ba", -+ "6f9024d8cdd8d69ef10bf7", -+ "2db5ff229cb2d0a85b8393", -+ "7e1946c78347049b735318", -+ "5a2d6c9f89fb24cf28d1b3", -+ "7d5f8fcc1cf99dc3131c84", -+ "68719eec758c692aaaddb3", -+ "a5582fe7b241700d09fbc", -+ "3de183e6b991f7b8085160", -+ "cd47f8baa501aac7b0989", -+ "658a9098281c199cd165fd", -+ "476085adcac943f7253ad3", -+ "45f39b8c67c74dfb911f44", -+ "3cb90317e0fd78744bd72b", -+ "509c14f0517edd55968bc1", -+ "7a6cf71a247a9aa2ad1f3d", -+ "594ab65a623ca11a1d847f", -+ "32765eba5563b5336b4375", -+ "e4ce3641fd893553aeebb", -+ "e73b5b515611f25e496d1", -+ "ddd508394009eefde3ac7", -+ "b4aa58f86a462da2ed07", -+ "4d562b2b0bde307c0edc87", -+ "2c30e99c7b2606982311b7", -+ "3a997ef0ad242391b526f9", -+ "4f754c5d3b280b20bc95d0", -+ "375f02bea7dda994d93044", -+ "5bd335a49bc5a06867e5e1", -+ "63d746c096cfab5f984c70", -+ "25d324d633986f4baae0fd", -+ "2175a06a641d5e8ad33646", -+ "403c1a7f2d528ab5d343b9", -+ "1429ba4cc3fbeac84cae7b", -+ "4fe62d365b58ffaa0d2201", -+ "6bd057cf4845772f81f71e", -+ "38dd92596a9fd54920876d", -+ "ffbb4d4d7cd961d36be9b", -+ "3910da787142c54f4f9b2f", -+ "2a843c02b5e59799422e65", -+ "4f459e6fecc9cadb8e977", -+ "374bc74be1e4381a79910f", -+ "4656a2b830782828314373", -+ "583e484be506b8efea96b4", -+ "36d97c131b997ecd7866ef", -+ "40066cef89d0c82982356c", -+ "3301553132b8af815a8ed7", -+ "475c6525a253fe4a455211", -+ "7215cad82f761314bbdd1e", -+ "784f7b46f80b03fd06242c", -+ "2fc0729bbc7485664f21f9", -+ "62658893411360a21b6bfa", -+ "775ff949792463791cf8ab", -+ "6bbcfc26c4e8fa7b836095", -+ "14a9e816ead24aab2e6645", -+ "6467af1a0f07013b2e9849", -+ "5f019291ccdeabcd687ce5", -+ "2311c97b29ff503887b251", -+ "623f56668cc8a093bdba7e", -+ "3b890cc2ea1882c16138ef", -+ "6e0d3cb0378f9f523dd7ca", -+ "e50ab5db695f894b26597", -+ "500de5789e46431a14b08d", -+ "74a3895c1173d1100e060", -+ "28c70cf1a34bf4b12fc1a1", -+ "260202888a368af1bf27f0", -+ "49f6551bb5a630f7f3a91", -+ "35984ab233bfbbdc2149d0", -+ "7715808f58e52b93fbd9f4", -+ "7a35b4347e2b2fcfef4e8a", -+ "696a995b7f1bd2337f9c55", -+ "765220bfddbe009c12884", -+ "6c4e919619ba3e8fcc083f", -+ "6908cd3a0537e6d9de224b", -+ "8cecd81b395199379b860", -+ "73475afc8917dfb47ca158", -+ "671133a56bfab71842e1aa", -+ "4356f96a535f02cd557790", -+ "d73559f9e34900d6994e0", -+ "4299b7c55998b524a2963e", -+ "6df756715e22975feac139", -+ "2e795b59317cae4c039946", -+ "638a87cbb628cc2744b5a", -+ "2d0786ef10819221e8e925", -+ "285121b3579e1afaecea17", -+ "f0daaf67c2422477284d4", -+ "df5585842155fda65c5ad", -+ "41824effd56ee95a25ffcf", -+ "5a2e3e7ac883c32720fb5f", -+ "786bd6b0d956c71e3d0c41", -+ "2dd9e647cd7caac396218d", -+ "32267a0d010a3ac60d956b", -+ "3bd14b5c954fd788df3e2f", -+ "55d4eceed6862d8b7edf73", -+ "32bc07a00fc1c32e790cff", -+ "e16e90086dfb42533696c", -+ "58f251e3a335055f8d1702", -+ "45d0bbd0c4c565d517f4d9", -+ "47cb5e48534f0fa269ac37", -+ "23591be47ead61c7626094", -+ "4e9b8b836aefbcc76074a3", -+ "7499dfe49d22092ecbaacd", -+ "422c99318e0e012bdf3cdb", -+ "6dbec10ac45803905232cc", -+ "5f091c9040f8e8b4af8c6a", -+ "49dd9e128368a6e8f31565", -+ "631d5fa433132c920e949d", -+ "4a728ba1f43b41e3c8ba7b", -+ "5de44a501f899626f11ecb", -+ "1db2b63fb5b72bd2913b9b", -+ "75c3040748861ea4157368", -+ "5714f7d7bb3f12d88adae1", -+ "3382f247e6cbcf48a8be0c", -+ "436134e757c46fe077e8fd", -+ "ca5fc0de7c8f0742fa11a", -+ "324b0e59fd313b7b066991", -+ "fca82540d3cb37cfe38de", -+ "71310c65e10b4b2e1f3924", -+ "53034f778656513538ce93", -+ "6e8a28f3d3f87aa2548dbc", -+ "792ab4b2a318b2229df59", -+ "700ac125ecd365c309339c", -+ "d7315bcace04536b59c5c", -+ "5f9fe5fab5062ae9d40550", -+ "7ed8ee73ca5507f25bd5aa", -+ "6247c20f5e97453bb71b09", -+ "463e980411d809a1713383", -+ "546f06ab10360a76005c9e", -+ "1c0a01fb60b92af636be29", -+ "a5385b7f7d2a505f37187", -+ "296401a6101dec9b48a81a", -+ "38aece2fe0c1923c569603", -+ "e966e5d5e80ac9dc377a2", -+ "7eaf3d6220ab7c049341fb", -+ "1a01c5dd382ca52c0f8a1a", -+ "68ab0ae55863c4f8044101", -+ "75b29426909e9c8294f365", -+ "39fc8d30c95dd0494e9be3", -+ "3c234bbaf5da9465f9498e", -+ "7ef05035c2a08e050870e7", -+ "7e880bc1729d1783a14627", -+ "3df3e3ff8b5241f9f120b6", -+ "61c60fa253a8977e213d6c", -+ "dcb3217133998c35879b7", -+ "19e87845fee8ee9d86794a", -+ "1b8c24041b5c09c2ff1c0f", -+ "1d4d18f2bee14ee417596c", -+ "5197b486ae5dad9284702a", -+ "7a4b513ca25dc5d887768d", -+ "2e1d98165a5897b1482cbe", -+ "494c96ddeebc9c314fa5db", -+ "29785bd232aa4bcde009aa", -+ "42d71e3ed0639f1b07231a", -+ "1439532a6d3fdff49361fa", -+ "8c59c1948361c413eed8f", -+ "2c9401cd53725f84e2c421", -+ "5eb9037bc76a6930985737", -+ "6d5d0573b2f9596b50b73b", -+ "36121cc69943c0f23f8a85", -+ "308787b80145ee403c389d", -+ "74d978e8d6a9ce6def9aa3", -+ "34242d89a6cc1d4e30fa9e", -+ "6106124e06a73207e84629", -+ "1174d8cdaeecfc5b7908d0", -+ "49f7df71bb684bf5a54c61", -+ "53b453f5f30f900af808e3", -+ "7b4210ea990dbb2b80bb4", -+ "232c5e33740871b389c8ba", -+ "3e748cccf5c4b2e587b8b2", -+ "2078bac214b712936de507", -+ "426ece55a7fd1d858414a0", -+ "1eac63084c7797618dd9f7", -+ "59fdecdacfa91d60fd391e", -+ "589758587c26455b22331e", -+ "19e1cce82f85eff6f6b24", -+ "16d83b4ed79a537102c236", -+ "4ad2dfbccfebf4c881dcf6", -+ "1851d531ca021ad6f2b572", -+ "1c85ed9416af845bb8e82", -+ "5cf912fba9a563060d7b3f", -+ "14c7f40a28e01adc5ae1b4", -+ "15131878551adae4b04c53", -+ "ddf6be61ce9c04533277", -+ "48938572f05f540b474485", -+ "465d9407cc9bc6456e974d", -+ "1df3eb49ffac499fc5f3b6", -+ "7e698a24ee9aa726fc4b0b", -+ "53e99cd5ced120123b808f", -+ "66ba97928f262067fec230", -+ "1d1b1bb20ae40ee8d35505", -+ "22cd6c35ab2195c56794f9", -+ "1ef2f8aa8266e26254215a", -+ "14da7875e13efd461f7c10", -+ "22d6cba0f681e23fc64382", -+ "682b3c7ed60ad7c985a3a", -+ "244d1131736a5aea351d17", -+ "3ae16fb3fb77d48c6adcc3", -+ "3253e31b47819fbcec75b4", -+ "507a6d1fd108a63234b38f", -+ "3e2cbdf24bd5900348312", -+ "34f2e009d684c876c246fb", -+ "bb247081da09643c00d36", -+ "32a426cd7460f9e5c5e7", -+ "48082cdc2a40ccd11ae434", -+ "1d616376b444140f9acd68", -+ "72bd80f062eb130b42b044", -+ "e1e55a565534c74a109fc", -+ "49e01d719bf13fd52369ee", -+ "2ae496e8d9399061460619", -+ "7adc118469443d4f7084b2", -+ "7ad19421f012d132850842", -+ "45b5b538c44c73f3bf515f", -+ "5f8307f0589178f70f7238", -+ "54018c8917549d050c00a8", -+ "4700bc9de4804ec44122f", -+ "d922a909e3b3afea5fe08", -+ "46ea38e0c4bb849b39baee", -+ "7b87e87e1438c6126ab1cc", -+ "499667b1e22348ac584789", -+ "137f8e05276cc8f9180095", -+ "5accf03c1a20af1120832d", -+ "4e94399e1765146189df5b", -+ "55fca6cb45a0501d1c50ba", -+ "2ea5fa6c2e19e6ee7add96", -+ "d8e9fae4ec5d3e7913712", -+ "767f863c9bfc5fd6540f44", -+ "477273c36a749543489547", -+ "4265efdcec74f163498291", -+ "43f53558dbb8a25ad757e", -+ "7b5d99de82bacb33af7ee8", -+ "1d4515e4768ff5c6b4178f", -+ "2057d9029cad07c3d344a3", -+ "e419f0eced24d03400fbc", -+ "2e30617b0abeb387001867", -+ "603f9b3bc6733094104e23", -+ "fa6bb9b4b92165346e0ff", -+ "321ccac2ccfd73a0b28c6d", -+ "6af9f591969edf6d33a899", -+ "5ebda7b44a30093e22fee3", -+ "150cbeb75257f8eed7903", -+ "1b0dfe5bf791bf4d645e64", -+ "5286bfcb1951cdb460fbe5", -+ "29ca62a9234f915c5c9715", -+ "3629587577ea6cd990a3d3", -+ "4d3d6fd7781e8ff3322226", -+ "7377f9449fdfa779330064", -+ "7f3f1310b0770a6a8ab4e6", -+ "74f8ea2aa01f3e122e9ec6", -+ "74aed20fd8f19001dab562", -+ "7a9c1df7aec04dc00e3584", -+ "2b3dba5edc89810815d1ce", -+ "217c2392122f9868740137", -+ "43ac29ece073be2a30ce86", -+ "4b6b8f4e6118573075d4ce", -+ "3cd3f5ea5623ce969c863a", -+ "421de31b9083741c4d4c48", -+ "1960ca77285b35812422e2", -+ "7d40cdfed339cab397652f", -+ "51a001a64a22c7bc0db3ea", -+ "1fe4c7d7da3eaeaae25e65", -+ "720179be8f54eb5c778be", -+ "1144f2116d6e426f3addec", -+ "10ad00e38092458e73fe4f", -+ "72e90ac5d748fbd2d7aadd", -+ "18250945b23b28bdd1208a", -+ "dee72e6d522c55b461f4b", -+ "1e31c413e16722caeb814", -+ "5ccfa76193ddbc64186a30", -+ "5eb2b60c1d97e4dcdb09d3", -+ "7f31009d8b384ea51f9235", -+ "7118c95246463e79fab7c6", -+ "2af1b36e871a2152d87ea3", -+ "1ae4174a64ea29d65c88b7", -+ "1aa4bb2c56ddce8ebceb39", -+ "65773487e5415b58fb205a", -+ "5adfc7a0a78f6657a5960", -+ "3d5e0686efab87e5e7c266", -+ "6552488fb7e68b138c5691", -+ "69cb489051468dc8b7a10d", -+ "2885d88c14361dbedb4fb1", -+ "17f8a55fef5d58503cdf89", -+ "71a2dd2f4561ce6b25cc84", -+ "173ef6d2228315e7fc8577", -+ "6095ebe0914ab346aaab52", -+ "1246f9f5df870b21bcb1e6", -+ "5e53c14166e301e45a1c84", -+ "3a1984f88834905315728d", -+ "4678975ad8ef4ef63ed234", -+ "139a5be9fe5d74b7b324f6", -+ "4057d3883ee10c31d0c5f9", -+ "5de657154513d33b2dbb32", -+ "7da4d79cdf3d83f0763c79", -+ "7399c1866bdfc2ee9d0ba4", -+ "48cdee08fb7cd0c828eec2", -+ "4c099f907df9db8a25350c", -+ "851fa3652b44e57d9190b", -+ "d0d6f30615b8f231bece9", -+ "5f305f39404231a1ce6591", -+ "47b5376a6bf9ae1b5420d0", -+ "55925c1c09bda33b3d0e7c", -+ "4aa62ab8f33741774c11af", -+ "cebc8496358956c6ed352", -+ "4e0f2086acba831702db59", -+ "2103ca88adecbfdd3370", -+ "5b917d89029b0850efbfd7", -+ "619fb115b590487fbaece5", -+ "709f8b4e1e81f78ecdd5bb", -+ "5c6ce5b29bafc437eda5ce", -+ "1c6a5fca595a1ff62b0a7b", -+ "5c246c8d9baad4092bd7a9", -+ "2f1ba6fd01e5cf713f7991", -+ "3d17d279ec6a81f53cd4f8", -+ "42af59edeafb6c79b9d208", -+ "7e0f7a6620c31d72d9d568", -+ "68d1c5df4d9653be9c8e7b", -+ "79db0961906e2d46b0b349", -+ "4c4fa3875e78671bc1d2bc", -+ "22a17bb1e02873c944cbe3", -+ "25e4a83dfc2f633765d96b", -+ "8a4219421d2f55bef801a", -+ "341ee0e329f6ab9da76c4a", -+ "28eaec99940a1b1f563841", -+ "4f1b7b04b31a6d85748c8e", -+ "1152ee1f6c91b44b1faa20", -+ "6b4aa7c57cecc522b32c99", -+ "49e219e4b19fa82e3cdd8d", -+ "5bc9b4c686de112404ccc3", -+ "40d9ddb7d82d86fe4dc6d7", -+ "6b85f2803d97e818e2e527", -+ "321405882a2a0c05f7907b", -+ "60749c3a015660029dacb9", -+ "26240f3e8816b599bb01c6", -+ "1a91a4ef4625f7ae911f1d", -+ "18704740809cbd3a91bcc8", -+ "532d2ff2bd9d0ca8b344ee", -+ "18488f368798b8734164ca", -+ "7453e07405f19cfba93c17", -+ "3cfc7a65b66e9f8c6f8cbd", -+ "4dde9b7ed5a96934e4dd51", -+ "7afeb7314079bb05948a57", -+ "2f4c8ebd42ef359c5ac79b", -+ "2579cde0e8d37e04167a12", -+ "368d20177281b04fd8018f", -+ "4553e500c491eb2ced6e1a", -+ "12a8a0e9fe6ba5c3656149", -+ "13d6f0fac0c0b9cd891715", -+ "cfbfcb607ba616c016fef", -+ "522bb592e89a78b316244d", -+ "2db6d4b5b7a928883df97f", -+ "928d2a95f60dac2e280f3", -+ "15b79d2a607e674b1df02c", -+ "711d3de6506cffb89d82c0", -+ "1fab75ef67bec61a68a277", -+ "3dc7ec06146d405216b267", -+ "15c08724b1daf7a590d087", -+ "75c2ce5e2535ac7878196c", -+ "63dbff9398c6d2cafd1418", -+ "245003f901ae0a356365b5", -+ "10b57d68a8cfe14ef3ca7c", -+ "5fdc8856cd703470a1e5a4", -+ "1af9124bffaade4351e990", -+ "5f72010436c71470f190d9", -+ "50755ca653aac70b84b12a", -+ "14c9d693e42997dbc96df3", -+ "7a93c6e177d746f5eb503", -+ "28d70ec040ec983aded5c7", -+ "124c113e25b1a8153a830d", -+ "2df0f496cddcc699504250", -+ "5dab9e18ce0b8340db40a2", -+ "6a410e486ad693817f9d31", -+ "5e82dce0d15b40d73e81bd", -+ "4e1b51392bd1ad38a51d00", -+ "69efc15f2bab10979940b4", -+ "4bb8f4e111d078e3c54590", -+ "22e8d9bc34a96264dd4caa", -+ "3a7c703f2642b17eba0c69", -+ "2df2bed0dd9ba405c8c5ce", -+ "222dacddb6e77241cadac8", -+ "4c996629390ea0954eeb1f", -+ "37c7b0fc4e875134c29246", -+ "4a78cbf6bef93b38948e09", -+ "6c8fa526a6bdbce9f7b832", -+ "7633f58adb014bb5585678", -+ "509ea21b16907067d06b82", -+ "30a8e1972ee45f3e0613d5", -+ "63839ba9cca448dd7fecff", -+ "290fe0ae5a419909be4e2b", -+ "35dbe95730bed0669969ad", -+ "2a6c238cf5c57a2939882f", -+ "f9d7db7493258ceea1a37", -+ "36ded179138f0e4cdf1ee7", -+ "4996f8a3f7c2c5fac02813", -+ "39bbee3cab035e7fc68b3", -+ "741dd990ea20591fd9b5ff", -+ "16eeff7e87d3caf8e58a92", -+ "2c8f1060dc661c38044a5b", -+ "3d886ee05f1bcf69fa4f70", -+ "392d9ae31bf22e0236e198", -+ "1a7c7fe62effcf2d1a2cb5", -+ "65172c59adde7fa1aa62e", -+ "389d1e8a26db35e20882fb", -+ "7dd9082b6f5562b8d6ba91", -+ "18c5643eccf2173f575420", -+ "757f2101d664083b2fe8c9", -+ "66e9cba0e526f30b7b9b8f", -+ "6c33a3a058504d48c17efb", -+ "1a908fcb6be810a9e1e92a", -+ "2df246fe147cf6a7d9ed5f", -+ "3dac1d8f9e9cf46cc42204", -+ "3cfed079405fd41004c118", -+ "7aeadbfb750a598afce6ac", -+ "485bb888b6979f8f201fb8", -+ "460858d1e253129bf64e5b", -+ "3567cd9077f5bb1d3115a3", -+ "28b06a5b8a2319d5d78e37", -+ "5c3df551863d0055925c95", -+ "260985f3992a168bc7fb3b", -+ "5a00aa930e50101d3ad458", -+ "3e41b8ea3309221756df7b", -+ "216b9b04319fd8da8a6d3b", -+ "24a843ed6770d822f92be9", -+ "60e3811062f0661e25f626", -+ "656a55d45a93fac53881ab", -+ "10f7a570b959918609b06f", -+ "d755ece5c8fed1e833d4b", -+ "5eb96063b604b2d052b457", -+ "182ed4a29e8be479e40c89", -+ "55e542cd768eaa4ab7eb43", -+ "4a1404c02a58e6862d11f5", -+ "4366b19aa12542a30c1749", -+ "74a0eb9dfa780e171aa5bc", -+ "7b34f38b9d16f0d70ddae4", -+ "1f75d643fbc4ab52296f51", -+ "1cc8bac063e7f4722cc83d", -+ "1f1cae187cb4e7e2d75ff5", -+ "6acdbbcb1d87bb33b845b0", -+ "5a67c62d60522486e9cab9", -+ "66727c69de089e222307ae", -+ "7dde8d7ccd2cebd1d4b943", -+ "3732911ea3b78b2cc54de2", -+ "69b04bfb64dc28afc90f3", -+ "49a34db8369186ccd3e18b", -+ "3087f959a9893769198248", -+ "766ac65aedf40f90341249", -+ "3c8b578aed4234d875a143", -+ "7248daa035ed0c83c2d007", -+ "35d310b1c9f92e46c5dccd", -+ "747c7a13b706fb28e46c47", -+ "e2d9cdfcde324e23eda21", -+ "607776583fcde0ad8e4c87", -+ "2133efe27b28c873f101f", -+ "6ad95985d0ab8e8d823145", -+ "35d6d7bb2855d9adfbf650", -+ "7a123babe2e7abafbaf8e7", -+ "3b0cb59bddc94e18233703", -+ "77815256a969cddb479be9", -+ "9c6c4ea9b05d327c6b7f3", -+ "55137101093be9fb51857e", -+ "59bb325b9748e94acb6630", -+ "328bf9a8c78ea2ca3388be", -+ "6ee757629a9b68ac7e690f", -+ "59efda7d6a6d8e6aaaba46", -+ "6ce70c288bc2711b1b024f", -+ "4ed7cbd3e32dee7a40c626", -+ "a9753c820825d73c04548", -+ "741d91860d83d000328e76", -+ "59aa03a25735023ef97395", -+ "1cc96ab6764758e9cff09d", -+ "50e22c6cf5d6b70def807b", -+ "76f42929010d1ca7619b42", -+ "18a6b71998f6f84fd5d814", -+ "5fda42ececb40f359e4f0b", -+ "2f62056d547ebf7995c6e6", -+ "23966403e567312c7a8379", -+ "6b7e91fb5948662e3961e3", -+ "1e6874a8b307092ad6e72b", -+ "31dfcfe645b46b329ee2a1", -+ "209910d1159692421526c", -+ "3c4374002a4b05edbee285", -+ "6df855d5b158377d521892", -+ "4169ab1c6bf3f0abec6c34", -+ "359b331d03b9cc2451c1f8", -+ "3c7a2b6b58424eab86f3b4", -+ "7242e44696c19a3a1910b7", -+ "2a7311c640e7cf0ecc141", -+ "7933956672bf2e4535ee34", -+ "455927f484bb8820a2ccf7", -+ "551ec7c1ae7ed078f940c0", -+ "6ef800332004d6cda26cdc", -+ "7630fa097aa2bf97cef6b9", -+ "490db50fd1ace7e8ec15ae", -+ "32f5fb93813b0abef00c9a", -+ "44e6ec408ba05ad98e759", -+ "568f3917922fe83ad3e225", -+ "273beeddd87cbae01c207f", -+ "1a8ed7cad7bcfca4620120", -+ "6c362e17e2173449bde86a", -+ "191da9b869e973d2fdfea7", -+ "64666abc6a9a2f6a1c7575", -+ "3c31433d0db703e03c294d", -+ "1e74e23fb34c50dc055d0", -+ "59652c3042e742dab07904", -+ "50e46147373113c54d73c2", -+ "776ff8d5492c149f7acf17", -+ "318d2300370d914ed1483a", -+ "e24946eda2a54a4c98b6e", -+ "28434971e0ad86e87340b6", -+ "b7602abf832a9540b03b8", -+ "3a2bc2968347afc3827c67", -+ "5fde1fcd656f65c682e01e", -+ "113149ff5647e02c5d8e8c", -+ "329c1979af2fa92b25335f", -+ "7de8764ca6a43c99d6a50f", -+ "7e68cfb951ae556b15fa1", -+ "5cac3c06df31850ad70694", -+ "357eab1d6b7f6618503b3c", -+ "4e66ba0bc1058a3931042b", -+ "65f33a2872e25c8a682f06", -+ "a5d62acbaf68c52001a4b", -+ "18f39bb607de6b1ad183e4", -+ "16870479234b3337ddc8c9", -+ "7093b250c7b04c2c6d567c", -+ "3820d1fc1eab75e925dc43", -+ "49ddb3e956e6fd8d65e1ed", -+ "7544304d1b3c2594fef689", -+ "60483a9742002ed4918cd1", -+ "809a8bacccc204134381c", -+ "177aa9fd51aa698c4f5d25", -+ "2848634cb8eba43423c432", -+ "2bd0c39ecff8d002f3a3f7", -+ "2bc7683658e815b0850ae", -+ "56d7ace10d6e046f35bc1e", -+ "1cf7470aa8bed908f93c32", -+ "44885049137a26d9ff4438", -+ "46436019c4b35e76ea4182", -+ "6b4ed91c3f4f0b25252206", -+ "1cb50b0700a11348f864c6", -+ "26c603e605263eb37ee858", -+ "734cae170e5d7d8758c509", -+ "3e00e41664141664f70d8e", -+ "4d36c683652009a273c69c", -+ "61e21b9a255226ab8a9c03", -+ "66db9685c97e1039f97191", -+ "41ebedf12db1451af99b12", -+ "5640578c9a2f674c097c8a", -+ "37526cf6c350fc29ecf559", -+ "6e93c69a7627e1f9832a61", -+ "3aaf5736ed929c1ed0ab93", -+ "42cda11218a2f5a8d7bd1f", -+ "ea04fd9db78a21c39b6a5", -+ "53e3092b891267552e8471", -+ "3e13e95a38da382cdac574", -+ "7d59312cf551555c728152", -+ "57b341376c8eeb5e957326", -+ "2fb62f0a2e9435830411", -+ "6131db76263e902f303f6e", -+ "5e7e83070de3b07a4bc87", -+ "54765bab6ab2b394d9dee1", -+ "3b4ae8aa403abef29b052b", -+ "4e1bc7c2f29a2f520bcf7d", -+ "50bb1918112bad3e57d523", -+ "3979e2b3d54a21e7e8c1cf", -+ "4f3fe475424626758ebe24", -+ "26c45bee1cb7e300fef593", -+ "20866732367b425f7e5ad1", -+ "4779c6f70cb71f00e32d17", -+ "24dc2302a4b77b85525bd", -+ "f339d2f5ca33347ae8d13", -+ "2e178e1cc4f997792ce1aa", -+ "54728697bad28cd0bcc9f", -+ "13413811d8a8e6bc2e6cf8", -+ "1a3337bb0bc288bf44447e", -+ "526d1eb936d1a3dec6eeb3", -+ "7df75741d3ccafb28da8e", -+ "6476d594392ef9fc9a3df1", -+ "645cf2dd2735f1cbf53f1a", -+ "780a2a5411b159d83dcb95", -+ "562d8222a0b94f5af3137c", -+ "e859d26ac6c854731c10d", -+ "3908eb827c8209b96bc643", -+ "61619bfea73d2a10c7a7e9", -+ "cf2bf44fe6c433cc00c9", -+ "17b5a764867bc2f176278", -+ "667b77d58f7f6b14e19bc3", -+ "14c79375686a30f4c21ea1", -+ "57d421e876be8c87768c1a", -+ "a49f38b3c0b7ca1fc5c10", -+ "1998c4f90bb8b5465b7b1e", -+ "974b1ea8fc3d4665ea11a", -+ "4382f99dff4951a775fb77", -+ "66b03ec137e6361ddf6317", -+ "43f99aac41b05d58c624b4", -+ "4efe7cc856d9eef4fda470", -+ "35f48b300d21989b05560", -+ "79ef58660a06bbc22f0cce", -+ "5623f1c8e0d5c15938b2a1", -+ "740e3fa0e998e741eb97cb", -+ "4f6148f444b84dfe82ecb2", -+ "34ce2df12c5e0970f682d1", -+ "5fe5a0fcee7c061cf49e8d", -+ "127dbd62073fb0c17b4217", -+ "31b2ef6b5163160bdce290", -+ "7f9a1f8e557617163d5e82", -+ "3c5262912ab7e82ffd49c", -+ "4ad5e4985caa0c7ee63b9f", -+ "5267f1f68134d546ec646f", -+ "7f695021b246db24a5113a", -+ "11df54a696817409ff1164", -+ "5549ebaa872068aae68ac5", -+ "236e08f8411de38e44c3cd", -+ "1892726d56d4f8f92dde20", -+ "457d09be8a2a4c351b63ae", -+ "53339d5a01f3d2e9bc8755", -+ "ac5bf0492a63aa0bf597", -+ "714ed5cb0027168be15142", -+ "4cfaabac7104cbad2ed728", -+ "486fd3ea0158f33daf767d", -+ "61c0e0ff11a378274b395c", -+ "5e195ccf98c9a4e1967fe1", -+ "3eecfda3b4d92af2b7e5ae", -+ "62af499c078af038905758", -+ "38d987fd4b450ee5a69286", -+ "5f9563c7ca70d6e5061bfa", -+ "ad64cff4b4763a7fda09f", -+ "26554ee3e9bedb1a3a09fd", -+ "42c5d2d1082dd2375a4ef3", -+ "7e05b7c7d54cfa1fc7b525", -+ "118d29d91686683483dea8", -+ "2c56fdcda56f78dcda9b60", -+ "d92cf9efd7d12c62f0dfe", -+ "11b77783f411c457cf909e", -+ "2cd33d1f501e268643d591", -+ "1ebddbaa72ad1a2b1cdc49", -+ "73f4373aa0c46a1ae61409", -+ "64b1dd5abc6713a8f53d0c", -+ "3aef6b8ad8d4f116a27e4a", -+ "13f9a309c929439a91df6c", -+ "401a3ed45557939fa7eea", -+ "1d1aa15ce7c8c15f051ba9", -+ "398764fa3e177502af4d3b", -+ "48edf77c0fc298b0491c2a", -+ "1c5b7d2b84cbc7b29bf542", -+ "78873bb7282961108e63a", -+ "16ad879cfcd3e458301dc9", -+ "28b06d6b1f993702509e4a", -+ "45242101d43b276b34115c", -+ "783d012e8b928ea14eaad8", -+ "5afe15c1524eda9627e183", -+ "42b636bc4126dddf74cb00", -+ "5cd8f782abb8b60cbf36f8", -+ "1c5d10301fcf4a14c82adb", -+ "52d3cdd253b64a03c5885b", -+ "31416a7f09913059dc251d", -+ "46bafe88322c67f3b90507", -+ "4cb6253df884020966d27b", -+ "2948eda7d7c508918c3056", -+ "543222604f067afa3e7558", -+ "3ae99fca89d15abe091160", -+ "140aa7412f6488f5404826", -+ "16b6721ea95f55ef631d25", -+ "133606f2fed41ffd77b999", -+ "4d075c933e4b93da3a33d9", -+ "4ed1311eae64f9e834ee7b", -+ "f920b02af1e3bd673512e", -+ "312518f9c1ce1e690c003d", -+ "44bd0de2094b8b3759356", -+ "3d40b56764f7765513d13", -+ "6b5da25417070642e0ba4c", -+ "6bd995ef31bcfd22d52d9f", -+ "3eedab106a435ef32b9e48", -+ "534c1a3b25194e8cd66e6c", -+ "28a37e042abf70a7cb137d", -+ "76fbf6732402bc76e061d1", -+ "3b66491ccee4801a4e3673", -+ "5ef7fbdbf498c8684625f6", -+ "3305f9d7ac9bc35ded571d", -+ "6aaafc0107575bd9b70723", -+ "5eb217461cfa46d5694397", -+ "7f5140ee63b60e0a33058a", -+ "3fe61d12a0b09791925ccd", -+ "591749051e47ee7b49cf82", -+ "33440d7d3472a4b6e2f627", -+ "4dedb1ba2a6a4abde67337", -+ "30485371efc19b50bbafe6", -+ "3566f7f67e026f0278dfd5", -+ "201e678f30ea96fd17615f", -+ "4a2580e03d81912089d88d", -+ "68e88d3bc4e8d390ae4b13", -+ "46986d0da7a2c17dd1dc22", -+ "174fdf0bcfc8d0f4e77e83", -+ "7a75be28b1e93e4e0c9342", -+ "11081f4b8fb8f0a9abf772", -+ "3245bbf080c6731fee74dc", -+ "57bf13241507b812b9a904", -+ "50c915d40aeb9e4ec78789", -+ "530f4c391aa2b0938eb272", -+ "4e0326164785519414d07e", -+ "389d9fa841750626db108d", -+ "5eec1e56c0a2d0e34dfc8a", -+ "3e8986648fb4053520276a", -+ "2db6e61499c9393946b57f", -+ "1b2e283bc4ff40366c744f", -+ "95d86ded4a7b26a1ad331", -+ "4818fb8f958698b6e9c9d9", -+ "21e39ab39cd96423900120", -+ "27476789fbe89ef5fe00c0", -+ "1b67e56d8c8f6656eac86d", -+ "28e33efab89fb4f64d6498", -+ "18eb41f414dd28e8ff3a1b", -+ "4a648c611ef0b3b0e318e0", -+ "3ab4982748b8f986192588", -+ "1eacd91eb3938b38f0210f", -+ "5227913634dbd4b19ffe95", -+ "1d5b0385650d2d81754f72", -+ "7351e32ddd53c7465f65e8", -+ "202d04fcffa7e3a0ae0585", -+ "6b77b6d06b93487730de2b", -+ "2f635c018151dfffc38ed7", -+ "7d83ba89b9f89b55497937", -+ "d1c5eeefb8bb620c573fa", -+ "322d1e939066766f918e43", -+ "3ea29dc49c06d64c187862", -+ "7f64ec3ee1d6fd7b5f9352", -+ "749ebfb4005c94ed288c4", -+ "6f3d0d822d1a27088df8e4", -+ "17b1690a9c9f4fba9154e2", -+ "142aa17e315b2096d3470c", -+ "5778dc2f1465daeafbf88f", -+ "3135a042ca5b8873367081", -+ "26f3f960b2ba725c83b706", -+ "156e3560db5a642c108333", -+ "3adf2b6aaf40f5dcdffdf2", -+ "4ecbf2559411992397d1ba", -+ "5e3402a24a307a945167f7", -+ "553a48facee35f17214327", -+ "57c6f0c9d94e02524b4029", -+ "44867f919f39bbc1ac8a53", -+ "7b1e254e6050240b36eede", -+ "7fb445fb34908201d41b44", -+ "5a49a0430b2145ead2e9a5", -+ "22d9fd1638450186756413", -+ "60a177acbb4aeba955e6a6", -+ "23a7a59b35972768b71627", -+ "ea9789ae096da5bedc410", -+ "38419b7c213432cd42f4bd", -+ "4024c6847ce50a93fefd10", -+ "1f15e66f6c5b160801ec4b", -+ "26fb73843bff3e4d17aa10", -+ "212d386743b2c2069ec4b7", -+ "59377c70bed9cccb346cff", -+ "5a80f23e82161bfd2caa8a", -+ "21532161ecdbdaac15b68a", -+ "5cd8f904c6a0e1c85597c4", -+ "2ad8c773fcdf92009db9b6", -+ "1df80784a603cde2e8573c", -+ "41127c781a5dd07b6ea357", -+ "6152b40d63a55e1ef6e750", -+ "3161bea37fcc040c6f6494", -+ "112bfdedc3401ff20ffcf6", -+ "6a3afde1cc784aefb925c8", -+ "47a38df2df7f516ac35f8d", -+ "6dafdbef06e817ec42991d", -+ "72059eace3671c76d67005", -+ "a209dce8856336ebd97f2", -+ "695d060b1aceccfdfa96c2", -+ "17445a9a60b0dfca9df354", -+ "249f5358017ada6567b747", -+ "b7347a4820635a5852b61", -+ "2bb74459adcd7029c9c35f", -+ "3684bf3ee3a2b8635ca0e1", -+ "600de685f1a4c2f4a236d9", -+ "68ae7d3832d31bce57eaf3", -+ "7a75b868e9fb50140bd203", -+ "1105d3c71c59dedcb33f", -+ "6234ffe0f938a25ce0f5a8", -+ "41858e467a21a3938d60aa", -+ "7332b41a9fe9dfbe59f71f", -+ "313ef612f2fd65f39c2e3e", -+ "49ce8855b52dfbb878b2d3", -+ "46b1961304e45b428bd48", -+ "1740e5e9a57a4e80eed5c8", -+ "7f035a794c44a6a57abf00", -+ "6eb090e9b1df79f4d2226", -+ "7f26a6c99362d1126b6773", -+ "14e47840962745e9f2bba8", -+ "28670ba592cd5a2625df3d", -+ "5c00c9ce80be32396ca075", -+ "4cc8bba01b6788222eb375", -+ "581f2a492a4fe468c3971b", -+ "6aacfa3617f47dce14015a", -+ "3988842f76572373c3459b", -+ "3146d29fae3f74014572cf", -+ "27216bcb23514df00030b1", -+ "36baace22f2d7a2014dd1e", -+ "20b11d38582bb81886466a", -+ "5aa25b718982092494e872", -+ "3f0eb0b9bdbbe37f40dc5f", -+ "5c4dc3dd9138eb7169302d", -+ "503bee64726b7b32815f44", -+ "7175ce67c0c74c440327c2", -+ "3fc3680285719ed4f7e7fe", -+ "7fc9fec9506aa1a0661240", -+ "122e1cf4ba920fb923d0e1", -+ "5570385cc742f16a21edc9", -+ "2a8b319bb90a064d3cc523", -+ "797bc83e9789b064b51c92", -+ "124aa58a7e2a882689ba12", -+ "5ee825c795f457b727b9e8", -+ "475c02da59260b083fa105", -+ "5f427b13d8351db71dc75e", -+ "7dca64fefd065e0893d874", -+ "88658ceb2447416239af", -+ "75ea3318a1054593eca8e6", -+ "21b1555bb331b89f928e6d", -+ "7e558ced95c8a49312174c", -+ "71f02d980dd943488cbefc", -+ "23e36a6e12831353ac1afd", -+ "1073f10b92dd8a202017b2", -+ "a0ac3885d2cb22aeb977f", -+ "2ac1793993d045ec4ea0ab", -+ "4e33cc0d26d44c2394c8d2", -+ "5430c091f416778afc3f3e", -+ "55f3bd5a345801aa67f91c", -+ "18bd8096de042467441c8c", -+ "1dfe68dd4d69d0d5368782", -+ "a69b0e544c08336c9606b", -+ "405224a222d42397ca18d2", -+ "5ca40898d5d325e557e04e", -+ "73e9dbd2873c27040a215d", -+ "56efa25eac0d5f675af6b6", -+ "460f5f98b19a4d353358fb", -+ "28593d93a1a2159e16cc13", -+ "1eae59f579b122f18b84d1", -+ "7f29a05b16052f06eff50a", -+ "2ac52045b3b592dfbeeaaa", -+ "6003c83a8ae5ae42a0956a", -+ "3af2323baa99fc6ef534e0", -+ "b3a488e23273b8e74aa2e", -+ "dde95ff1403621e1e9c39", -+ "8b93e9e7ea54df6ea61e0", -+ "382238b03129ae3a8cb2e2", -+ "7be85a588e4f01b973f9a4", -+ "3428c448a20f463714e16e", -+ "46c829e7e1980bc26c13f9", -+ "20573b178651610a410e89", -+ "16c1a9b3bcba979d2fb250", -+ "46bc67034da17d5b7c72cf", -+ "abe7e5169767e92b8517c", -+ "10a7cb0c646bfbfaf6b1db", -+ "3e27d166777ab6af4a4b75", -+ "560bc3397e1eecda48e8d6", -+ "153d46a7ad0d4c7b81a83d", -+ "7b625b197eb76a08b19ecf", -+ "58ab9a24dbad2ee2c0942", -+ "6b463071583d5d51119c18", -+ "58d985a1111ffbdece42a", -+ "772853e9593804a23d0c9f", -+ "3566ae3cffa53b48308a5c", -+ "3253a13971cf24cc306f4e", -+ "161741a6fabf2be3cb74a", -+ "72492bafc7adaedde393c7", -+ "4d17bed73f2032142b03a3", -+ "43ad0b393a7c2a4d667efc", -+ "5bdacc4f0e9a9f3c5eb7f", -+ "3fc330d82c00c3c98129ad", -+ "2287f22a43e09d12b5fed1", -+ "113203b24e05e4ff03bfc7", -+ "386903ad1ff043a2a203ff", -+ "6efc437814b1b1a8db77d5", -+ "60d1cb028fdf2f7506480f", -+ "5c08c8490ead830327cfc3", -+ "56d1b28a25e58905b948d1", -+ "6473a7fe7461369e02b551", -+ "43240f690e895ee2ce6199", -+ "217e1d11ab05e37175e942", -+ "115af287df30e3b9382159", -+ "3d01c0ebec513aebdf049d", -+ "3b607643718a1436cbf93f", -+ "392447173660d27311fc56", -+ "7fcabd5ff8d8321877d09d", -+ "773e49f5dd28ab9abcc4f3", -+ "333e4709f384c49fba280e", -+ "1a5a69890d5f080ad27aee", -+ "142700479fca005e365a5", -+ "16c859dc1504abc8bebb3e", -+ "8e1dc29eaa3429a93416f", -+ "3d2c4d19f97ec14b7f9a20", -+ "b80a7edd7c5745e63c50d", -+ "7eacc570a117e3d2c4ad3b", -+ "5a4b0bdbb9a3eba57ecafc", -+ "2bbb60823308802716b002", -+ "60de98af5b2e9794ccddda", -+ "43f106dd9b706c7cbad455", -+ "247aa73439f114a2bae1f5", -+ "404518992cad409d30e138", -+ "483592c4cf34d97823b087", -+ "303e55cf5d940fa1eb0863", -+ "27cf1a1e36d6b6fbf673f1", -+ "753e3ffd723c55ffaa57eb", -+ "527df835ccce3d0d8dc6be", -+ "501c73bb8897e8a9b644da", -+ "2c748923f66e9b836e2956", -+ "252a9565fc2ed88c83afe5", -+ "53ee027a60ac6b8703b4c4", -+ "11e3b65e520ccb94e0f28b", -+ "1d82fef6b5daac184a21bb", -+ "34f1c6d5946b4f8e9c34f2", -+ "78c36b7a1a1ac86080796c", -+ "3c2561b4603673cde220ff", -+ "347e522bb35549d788adad", -+ "c5eb765e74f7ea6040509", -+ "6b91d4c08bfb155d85a09d", -+ "1d345a329131e03407a9ae", -+ "7656e2bcd13769bc7d3690", -+ "18af2f7c66ebae2215b225", -+ "5c0b858603efe861d8e554", -+ "3a948a48ee72242647aeee", -+ "5eb549dbd9b640a1018c4c", -+ "39395b9f947ccce230cc1d", -+ "2983f80020a9f6532ba834", -+ "599c6bd84b32b97e000cad", -+ "494a8aca14d077b143ca10", -+ "5514a9f97c736ef89e2558", -+ "22a2f494120b7469421488", -+ "6bbfc916f60c65ff6069ae", -+ "988dfd270fa06d78d9fba", -+ "65e3000fa520e5bd8bfdc3", -+ "d79412155f3d978866277", -+ "540f6a5d04324cc6ed1398", -+ "5193e0be567990b2818200", -+ "5527257327c4eade309a67", -+ "6a6ceb53a9e08bce60e22f", -+ "3bc0b4b12c4e0d37097319", -+ "6446d75a31a4956c235943", -+ "70089a05ca7765b8ef62a5", -+ "78050a04d755b7008433fa", -+ "4cf40ea87be0baab3f0a23", -+ "421f5a540df5b7ba309bc8", -+ "22aca8e5833c97719ebb51", -+ "595eaf076defb81f21236", -+ "324340f1f7ccc9eff05524", -+ "490df281db25788739ca0c", -+ "7cdb727ae2bfeeed50af45", -+ "8fdbca74c18894d421e52", -+ "266efd2e0daff29e309d38", -+ "2d3baa252f4d982bd2ad11", -+ "26246e8fdf408dac8fd2a5", -+ "4dae59d140c542483e12a9", -+ "7e37627adf10efb14adf13", -+ "7059a8ae14b27b87ae7942", -+ "5d0b6fe03f574db311d01d", -+ "4450b05b160d8c53288cd5", -+ "5628eeca86bc4f505da4a8", -+ "59d6c2db6f995cfebbccc9", -+ "32c247d46291051243da8b", -+ "29ecceda91e2de99bded7a", -+ "697bd2294052d067eed5b", -+ "35d846be55b3952e278ab9", -+ "3846b043ea9479616ae948", -+ "460dae8d89d7708b43a1c7", -+ "6ecd91e762474ea500bb02", -+ "78386c3f2bea1d92b0136f", -+ "5d36dd2a4f038c91a8e525", -+ "2567685d25fd668a9a024e", -+ "484fed0412b66b4ad6689b", -+ "11e987960e92f0cfe9e7d", -+ "48457eaf5bfbcca641689", -+ "5e89ffa159d58051edf13c", -+ "ad8ecaa59795b2101aeb", -+ "4cd6b5c75a375bce549db5", -+ "17a8f2f3a036b54c467b7b", -+ "456d747923e7fcbd260fae", -+ "38b2a18fa105ae1a1e82c8", -+ "36b718d293f968b4388def", -+ "6d15e33dfd91b0adf65ea8", -+ "6a47915604a062b94c626c", -+ "63f2b709d7c6ba1ce60255", -+ "73da067d52334a718631ff", -+ "68c11de19f57751aa11e9b", -+ "1b50ac3c3f5269c1d7aa40", -+ "51f56cb5201bdd22f49e70", -+ "245ff16a71eb8c45257fd0", -+ "7dcfee63c4d594e4583601", -+ "604b2e853911ce83225aba", -+ "5bb6095d45a0253a5e3e2d", -+ "14b7709b903167ca33c0bd", -+ "6e6871265fe9883143d121", -+ "453649c203cf983e439d84", -+ "5819cdbf42afd2334f96", -+ "3450478bbaf1db9aae9e0e", -+ "35a56ed2078e145e9b5d42", -+ "15e468fec0387d9dcde2e9", -+ "1f098e306099d97f37bcee", -+ "108be849403d8b9e0adadd", -+ "432bf33542ea8f8c0e1cab", -+ "1fe772e91ad75a2d2792c4", -+ "2aaf602c5ad427702561f0", -+ "66c37766a09f2454161188", -+ "7c91adf751ba7b800072a4", -+ "587965194057ffad1ed72d", -+ "6b189bed3e1ee805a7089f", -+ "656e0aaff42e8f100df7e1", -+ "50d8060a4c81ac0d9dcc9a", -+ "3b142ae3f666b5a458fd6", -+ "11216382d02fa8a680f2c", -+ "640821dda0f544b159e25f", -+ "60ad8426c5228781a660d2", -+ "50b259ce6ef7786ad19380", -+ "617907260cf1e3612508c0", -+ "2020839307f0a0b2a66465", -+ "6c9aa8a230f91d4e6f84c2", -+ "479f0a9b95b8f0e630df10", -+ "74e8524ea4276a1585abc9", -+ "1832f7608c30377f8a27c1", -+ "468227ba06af62fa70d6b", -+ "46ae03b83630be869f3f67", -+ "1c429a8aad032b85e815c6", -+ "784a6ea72c75433fa2c1c0", -+ "521255c27009b10aeef14", -+ "6de250d6d96fba0a4a2df6", -+ "1a38abc6055dcfc6f54cd3", -+ "459fc4d70a1a8040309b48", -+ "5206d5cc4cf74b102b511e", -+ "1621052353e1bb38663f44", -+ "6869e474162fccd5e6ce8a", -+ "265a6fe3ade48b79bb704f", -+ "1683c065332572cac40e7f", -+ "40fe888eb50954f82f8f41", -+ "5ccb3321bf79805e3743ec", -+ "6904f88af6eea4b3f91bbf", -+ "a70e6c0e6da7b5bd943d0", -+ "7b7c35dbf0dd6b94d050c5", -+ "4ee9fe013ba8fc6ac8d470", -+ "1825a2f6c03df8e89a424f", -+ "6495ff035413be2b53c45f", -+ "745f8230228fe0e913a537", -+ "57ca180b4c6f8c3a63ae46", -+ "5963fe850d852bb19cdfe3", -+ "430a7ef273c75f6860a9e2", -+ "28c8b8ba9341ac37c38695", -+ "88d1f466f33239ebbee3e", -+ "7bfb517a9a7064f7f0b9cf", -+ "222ad5a5eecaf564928d05", -+ "31f4e6b45c1cedb6d4c94", -+ "9d0d5139d46e4d9db3662", -+ "46ea372cc256b25d8bedb8", -+ "1177a186084a0188e6b25c", -+ "79973f898e87ee6433e53e", -+ "17f90d7760ace90b4281fa", -+ "4d06acabc42f8f6c6561a2", -+ "297ac6d1d91b19c8ceb3ad", -+ "76930d75187c32e1c0855c", -+ "ef9f73cc5ae815a32ca63", -+ "3ca5432d73f30360d5e251", -+ "2eb29dd03203d9dedca2ed", -+ "3f719d970328ab86444133", -+ "671a35180c429ed6cd73d6", -+ "1a5a3601f9e5c757413d21", -+ "1207f0afa9b17ee1e3a14c", -+ "64c773513b07ac7be226c5", -+ "645491f7754448588100c4", -+ "6803ba4d96f3cea5b5b619", -+ "3e8f3fee79b0aa7d3158c9", -+ "7c4c5a07ab45db64032f8c", -+ "471e19dff79f0bf8dd75e4", -+ "736e4111350ab36a2be4ca", -+ "70eda2a92c3f3d551052fc", -+ "4be7ae42a1b71df0fdbed2", -+ "38e1136120c0a50e7c1942", -+ "34de10a25d48bbec6bc310", -+ "45fae251151688f6948ec3", -+ "a5803d95905530efe4cbc", -+ "29c81a2bbc75ee65e40fbe", -+ "5d0e736ad9b0e048c53cb9", -+ "62a6ac9d0c5e4b3890d61a", -+ "16587b1213183c74388d6a", -+ "30455197024dac28f22ad9", -+ "5c96c4bf9c30f05dfa52bf", -+ "2e14fbc2ca9b056ee6a0e6", -+ "544e247e73028cc23b1f51", -+ "7569e0846a7c92c5b07e91", -+ "2e37e64613e6e49f75ff6b", -+ "75393667821938c0e5a628", -+ "2db4889991fd96d5a3dbfa", -+ "6b628f924b031ff396258b", -+ "5c721c1e9f943f1e44c526", -+ "4845e19f6384ed5724d8ce", -+ "451cf4e4a6ce149cfc4095", -+ "69cf5ded5037b0fc848b28", -+ "2144bb26c3488be851e3b2", -+ "2582d22d55dfd72b2d70bf", -+ "67fe64c68be6372b30260", -+ "b5ea9188a76cbd4490c2c", -+ "2f9195fa1721a36e6f5198", -+ "371b6d93bf32954a1ed005", -+ "2d248bd8de364598100d1", -+ "3476974a3a56c244bcd4ac", -+ "7d10d41f081cc53194454d", -+ "9ae11d1f0b2cb73496a44", -+ "3c11b4ca34c3237b362a26", -+ "3b62b01334bf25d1f5d560", -+ "4a9dee0a96c91e7cd6d7ca", -+ "2d8ba9bb83d8b7dc77cc32", -+ "394242cd2ce4d5c927b1f7", -+ "13ef893fe161bb05038778", -+ "210aaed4cc7b55edc4255b", -+ "72bad07fa5d3ca19811efa", -+ "1856ece5542adaa42b18cf", -+ "2f775dce855cb22a4ce4b4", -+ "1b3d8a50e5425c7a4550f6", -+ "3fd38eb64df431878b817e", -+ "1f372d16a7c783f301d859", -+ "2e99bf2a9cfd14eb01e4dc", -+ "739d86f4db437bd59681d0", -+ "91782b2d8bf1ec8b6e4db", -+ "13089f86ddae7614e1f733", -+ "4374fb07e1eb1efc714a7f", -+ "34026c0467a5bb1302960d", -+ "1316737cef6e8d73f98c46", -+ "308b1811fe8c7d6801df6e", -+ "3b6333c6dc16d5f4351c47", -+ "30151eaad7aef0e79d5e07", -+ "6d5ce69503f658697314d0", -+ "13022f601d429947abd201", -+ "278331e342f211746f0d9f", -+ "44fd7c4168c2a61413dbd2", -+ "77747c8e4550378570ec0d", -+ "31934713e4ff1d0d7cc583", -+ "5ca455ab52339850752f94", -+ "cc47e7e925da6c91fe510", -+ "18932d3a50056ecbd4c0", -+ "594820c775fd57d86cf9af", -+ "4ad8d4214e4fe01b143d8", -+ "179c67b2886cbf8a80171f", -+ "60e1157dceceaecc3a16c9", -+ "507a197204651599300f85", -+ "1da6208947854d10119a62", -+ "2fd395d2076e94e7f79f79", -+ "3326fb026bfe153a5a80e5", -+ "214b26c5cc4d2d1d455254", -+ "2a5beeac5cc34b9b70fc5c", -+ "73037907fb5b7e20bf7973", -+ "622155e1a7c16eb9e6f098", -+ "47eef469d5e96dff3b60f7", -+ "31b42ccc858ccceae34d5", -+ "68c711e371efbf9b278db8", -+ "71e107fc4c98b40c6f7b53", -+ "2a2840d0a8db4a22fdfb53", -+ "557e56b5a5dcf30ae5f48", -+ "5451512089afcff74e1bd9", -+ "6a44a264bb1144d86619f3", -+ "72316f1be6172c06994a4d", -+ "d5835b5723a9063a2dd80", -+ "232ce65586f95692d89383", -+ "2a8c9eedadb6f6d58c06cf", -+ "f5eef843bd404a6869b17", -+ "720851fb976798365a6829", -+ "6e8b7f0e9607e44c1f9f65", -+ "3860366ed3637eead94b8d", -+ "30d33e090854573dfd98f5", -+ "682291bfd680e2cd8f9d70", -+ "7c1fdd60de643e750fa1d", -+ "774b9d1f08bb74ab682979", -+ "7b5f04e933b2e4204cdc65", -+ "2c36a4d87847724f9fdecf", -+ "2c941d4c1c7d68ef593ae6", -+ "4576a87293566d06f5b643", -+ "86148c3559c855d7a4785", -+ "2d0a5221661bafe1bae3a0", -+ "4eabe0db8ac5d733acae29", -+ "1dff7b3a25d6efec89d4f1", -+ "93ecdd9b52d588b62ae9d", -+ "4a5c54b88c3afab5d73bb4", -+ "50873f081856faa7b0c6c0", -+ "7a4c62248fb05a7ec5f894", -+ "6297ed8d827bde2f27c592", -+ "4f88d842683a24f7a78b4e", -+ "6543f2ea86c39aa319b565", -+ "1711e7c4ddf7dd725f454a", -+ "6e925cc1e63747fc8301d9", -+ "428c02c3c8bb1613aad2fd", -+ "1b12fc1c7d3ee5cd24b30d", -+ "38618fda51c023d44b41df", -+ "75ecb6eacac31eec1c8d24", -+ "363495385d4023abd7fffb", -+ "52a170878e73d2b9a73398", -+ "40afd831d872bbb5ba2dbe", -+ "6a2bde70b440f36a3a69b8", -+ "6cdde5dc50cfba13ab15cc", -+ "6102d4b92b578db1756028", -+ "1d72e71f6a57243468bc42", -+ "4f100cd2b63ef0cdac7165", -+ "56441a020eb196f9ab47f5", -+ "520d75e4874b90e95d0ac6", -+ "4ad5b5ec9142810d730c91", -+ "6369f366be6b5ec99ddddf", -+ "4ae3a5f46681ba13e649ed", -+ "33e094a7802d99ab1d9620", -+ "58ca4d190a0f756173e746", -+ "4afa034c14d96f077cc41e", -+ "3277a60ca85c986d50dee2", -+ "61df6c089b8a0a75da0288", -+ "3a9ec75af3c8e86b8c1b73", -+ "7ca8eb46f6df31902607b1", -+ "7a283d5e2ed98485e2d260", -+ "78ab001943d18ada1f6d03", -+ "56f539741375576aac816a", -+ "75fa74ccac539d6f2e079d", -+ "7108a03a28803eb91e8a0a", -+ "3756665d23e5dc56d35905", -+ "da96dc29f77c98efd9a65", -+ "54ec1fbecc620b2a62de33", -+ "2e564f6ba5f6f74e33f2dd", -+ "86aa65ac1949dd8af6918", -+ "605ccf0922a0c35f768933", -+ "4348b708829c7eddd56237", -+ "19d3eafc75447dbc2ce4d", -+ "764156f5d90616c8c45669", -+ "51e2ff830fcf99b4147ec", -+ "2d30342ea20393b89b038b", -+ "6745627963b760ee39ad1a", -+ "76c344db7c98c1b1fa25d1", -+ "5b872486f12a68a939069d", -+ "274cbe37d4fe65732936f", -+ "27b48290f4bc222f54681d", -+ "1f7e1880120c76703199fa", -+ "2bf0a5cc2a5150523d2e64", -+ "2d3b2e3d52eac5c09743f7", -+ "46b7638024bbab6f336734", -+ "71f7ff7f6245492bf4ba4d", -+ "6ac96f98fa78ffb692afd9", -+ "1c63d031374620336f8c7a", -+ "5eb0e751f365585e4f3fd3", -+ "24716274d6f1761a2e503e", -+ "3b663e3e9013cab9326fc5", -+ "231a1fa6a52f8377b2ca86", -+ "464063c0e0f5e5eae1bad1", -+ "4f588ef825e26e596e160c", -+ "4adc76f7cd88044421953e", -+ "228eebf60c055615805405", -+ "3d32a6b665f10a829cfff8", -+ "ce584760ca84047b25a4f", -+ "982362cb3f64fc2535f18", -+ "2cbb69d06f0ba3051ce433", -+ "2fb2d651d1a5fde2dc4d89", -+ "116822d6715118a8643140", -+ "52e4d0f780530e040b8198", -+ "4d84d472f48a1f27cda4fd", -+ "23675569b6f74cecec658", -+ "7273cb20026d3e5dfa9567", -+ "5e5c9c54f1f75bcc98d1bd", -+ "37150fd6c06a98e84f0fb9", -+ "1cae4d5a0b88eed0b2d97e", -+ "5e6c438c53b4bfbeab6a4c", -+ "7ec0ec060d3788349445a5", -+ "394ca6d6650a3a703c8f0", -+ "76a4bcdffe1207b9c84c3", -+ "413062fa329dcbe3b8887d", -+ "137786296b1e5f466871bf", -+ "1bff1788b61c434292f278", -+ "67ae16da8f876a2c8dc80f", -+ "4f0b0a9e8338cbca398b3f", -+ "7fe713df2e65b878c1edc6", -+ "46dbd89f4ae0d06c0ab8e0", -+ "3ad2c2000ee1db409ffcab", -+ "235057c5ef06d64b0093a1", -+ "2b1199cb9ff7848ec581", -+ "16a7968fcf87b51aa207b", -+ "7593ab2f13aa524b76e104", -+ "569b68c3d77231282d1705", -+ "54f01285acb2da9689a386", -+ "7c50148337071a44808f27", -+ "157e5726ec48e98ea5652c", -+ "a0b14921f2ca115669309", -+ "540974d1b3361c5ccd3a2", -+ "30927374f464c892c53b50", -+ "5c0de6f6c164f44c52de84", -+ "25f3d9fd234440b97c9821", -+ "659ccea55ad34dab51a321", -+ "308d7af9cf09073e61779f", -+ "48dd5aa0d80d3fd4d31225", -+ "18d28f7c13bdb1a27fc315", -+ "37c639bab06813135e6962", -+ "716be1338eb9fa3160de8a", -+ "306cc735643548c81d480", -+ "15dc7895737fd27e2fc2d8", -+ "ff910ecf2ce1ed443b3a7", -+ "26e45399ef9d09b479c0d5", -+ "5a3548ae1dc271964cafb9", -+ "1e0b5aa4ebf1898b7232a8", -+ "65b1a43ebc40ff17757bfe", -+ "35ab264ca762acbf67e1de", -+ "67fe63e894b36bad057249", -+ "901282766f87bc24e50af", -+ "3f8ccc4c495c412c1876e1", -+ "2c958c952c5c886c2a60ad", -+ "21a95826890e5cccb8a83e", -+ "190017f50befaddece16d2", -+ "64f3d838badcddd9bfdd0e", -+ "7a7cdf214176b6d3191883", -+ "30436781bd712f316b4895", -+ "f5d2bac49777fc8f10242", -+ "66de0cd9d504d0c8a10caa", -+ "11ff8e8d5e956398c99ca4", -+ "2d83b4eaa1c8f768e56c30", -+ "58689766e836a562c78c53", -+ "1644cc3e7fe80220ef2f70", -+ "69a00aca76ae6e660be7bb", -+ "68e1a6376fdb4eb7b4b0e6", -+ "5c37d517c640ac7f62a532", -+ "3aa36ece405e3ccd9341ca", -+ "345343979af3beadfaced5", -+ "63ca1ec0700483b8f859e5", -+ "14b8d711e9732dc1d81b85", -+ "5d1cdedac3c1f047923b22", -+ "1f88577ebb6a87d8478dfc", -+ "3cf63e3a65a7e509ca6dd4", -+ "64e35a2939773b306ebb74", -+ "4e5afb2e233daef8a9bbcb", -+ "5dce9f322e405cdd3dc195", -+ "49fee8b58237dc40ba3c5b", -+ "125c7d70d2b6d99ae885da", -+ "7f821b6d896942293448e9", -+ "44b0628f84b11c5e71888", -+ "4bc252b0fa653478344f1f", -+ "31afe414b9e841f105214d", -+ "46bc16d9041c2bda07b158", -+ "34ca1ca17d4004b63727d1", -+ "1adfa664cf45ca975af0f8", -+ "55b727631edd20582945d2", -+ "6649997ef28c919c6cae0f", -+ "6332e8b1655b1a7193eb45", -+ "7b8a17b08fccb33f4b7d6f", -+ "46c01f4170feea6c601e12", -+ "68d895a65569cf3ef3e3ea", -+ "782fa87576f745d6c5a644", -+ "3561d1a2752f1d17dd5823", -+ "1c1f24204ec4b044c10ff5", -+ "4ef1c6a1bd63bb6b6207b1", -+ "33fee942f43e9b7d2118f", -+ "1cbb8749de080f5bb23b75", -+ "4680ebb5e7e7fa1e676838", -+ "2cfe955ebd8c7e4615715c", -+ "93d0f45c8e78eed19b2b4", -+ "5411d9720f633bf7a356ea", -+ "7ae4ce9746d1a251afde2", -+ "6b6195f4939abc517ea1fa", -+ "622e4bcd237f601b3f864e", -+ "552dab94d8fab803e3abe6", -+ "5fea5590381b705c4ba54c", -+ "47a6912faf0eba695a3f82", -+ "62d4635d0bbd6bf8fab17b", -+ "488702c5b90021b8b24933", -+ "b44a774aaac3d4d335389", -+ "7c2eeaa3b5ac7ca26ee5f2", -+ "4a79a4d35e92cbac8fe0c0", -+ "145ecffc8b532b7855ca8a", -+ "409705e5654888d8af2f47", -+ "4f5cb9e29c3567f8c1b22b", -+ "2ad535a50fda15e1835526", -+ "4d55039bf17366425f055a", -+ "504e8f5ee0e51320af92dc", -+ "ae1614cb7437dc6311ee9", -+ "3d433adb4bcd914fcfc4", -+ "633dad9eec0d451652bf40", -+ "15bc81dd36a0393963bb64", -+ "720d9e52c4aea85ae24480", -+ "16f5569ecf073acc30831d", -+ "50a70d2086b5ca78a90368", -+ "7e688d1cbe7e0a84a0f408", -+ "1f9e8bffcac3e1471f7cd6", -+ "78ec94c22ee912eded5499", -+ "336a41277b427813eaa191", -+ "1705c133c7ba24a2b5c528", -+ "7b7e71610f1589da383c31", -+ "58137399c99866772aed9a", -+ "282774a1f4bcb14e6723f9", -+ "7b85e0b99eff408f2aa978", -+ "2a5043ae183d338b7ebd55", -+ "af99b9d024438cfe9df66", -+ "d4a270719a348af6d6c29", -+ "47262fa06b9c5ac8138f4f", -+ "50c65d8772a3d5db269535", -+ "20b1838f00aa00d07f70fc", -+ "ca30526530b6f6f0c8fca", -+ "158e9251ef94651015ecc3", -+ "636f015a0c62753b283d5e", -+ "4573a56ada0a29d31dd6b4", -+ "367efb55edcaadbb5e4f2b", -+ "3eb189e2bfcbe180703cfd", -+ "692adfabb87ce969422961", -+ "434a5edb31a9c3c6a0243e", -+ "77664e53908d00007d1205", -+ "4b11585991700c233f6773", -+ "207ff6a0da7f13b316c4b0", -+ "328a9932d6b08a41a1df0e", -+ "2f927b360b2b43bff822dc", -+ "257564a39a648e17d015e9", -+ "73e92ea015629e3728aee0", -+ "4585b77fea18a0113ff609", -+ "101d83882a81d0147b4342", -+ "3addce3c43218484acf509", -+ "9f0c9a93eecf4de349628", -+ "465f3b1e25cde0e446d90d", -+ "4ceae8c6ea35dc274647ed", -+ "63137369b8d47b6c9c43df", -+ "438f5c0f163a4dfa04e5ce", -+ "313d62eb5f1104de5421a", -+ "9f20b6fedc099ec575691", -+ "24086a392ab75e649d3cc1", -+ "7aa96a9fbe718c006a48f8", -+ "8000000000000000080000", -+ "57f0f7ecb2d7dad43748ee", -+ "2a640efe463008db4ed634", -+ "45769a307f5593bbf72056", -+ "3abbf8af06f889daf59c4d", -+ "6d16d10feb1728044f2dc3", -+ "5bf1d1c71be0c49ad75d9a", -+ "16bed27a9c005817ccf111", -+ "4d7797e0b2f77a7ffee785", -+ "3845bd22f959dda9197376", -+ "1857324131e535b1b2458f", -+ "6335fb7682400180e10d15", -+ "50226b4aa22a0465ceea0c", -+ "44dd70b9323f17568e4ba3", -+ "217bd444ac8e9808b3ae5a", -+ "6c9c81ea487986867245b8", -+ "3827b84269040363e5e02d", -+ "64520e4823f48c1f48749a", -+ "58fc1b58696f8c22cfe344", -+ "41558cae58d4f9a9001b87", -+ "38910d873da8dfd237e8f0", -+ "5eb76c6301d8a849a1903f", -+ "3b6b43619a3730d5995ae4", -+ "5f2bc99aad2f27cdee05f4", -+ "385f7f48a7be6b46d108ef", -+ "37d50d7838efaf03049cd7", -+ "665bc65420c0b0a151c97e", -+ "3d9abe3ec82d9602d9dd6b", -+ "634d2540fd670a82f219a5", -+ "616dbeafd6aa623c1a7d7e", -+ "29702fc1f57fddc3369967", -+ "25920b5c96127e9d8ab05e", -+ "3a82369bb1a4da519bbd70", -+ "7f216769148f0e997c7805", -+ "31d809b078cdefaaf45266", -+ "7a6ffa939b86786a779a44", -+ "68e8a818d524954278bbf6", -+ "181ee17c34ab8aea52c900", -+ "7f42b66317d26c3f938805", -+ "6f37e3a85128974cdfaa69", -+ "45813314ca1d165bcf242c", -+ "64add9cabf8efdd5f7b57b", -+ "46a91d898168488fd5ac51", -+ "669f4c5ec3934953500b78", -+ "1e378fb7157cdaa6fc3a50", -+ "39cdc5e6675ab081ffe60b", -+ "1cfd8f0d12bcce21589c11", -+ "6ac77b7cb23565518aa2d4", -+ "4628eb872cffa1868b96ee", -+ "23eabb9cc5f4086c74bc31", -+ "445381f98a1f5669880827", -+ "3f603c7b410b4c2db2c8e2", -+ "464550e0adf269403f3e22", -+ "3286bf159405584d85567c", -+ "356497a9675898bccf4e79", -+ "f26a2dc235ace7b34f4b6", -+ "2e03d3c0794703b9605de0", -+ "30a18088f5b2af396bbfd9", -+ "681750fd18618072db2068", -+ "69fecb55ba6da700789d7c", -+ "2294095a6b77aaa416cbd7", -+ "ab8e1dd4d27b02d09fe48", -+ "7fe887d8c5fb53af79cbd6", -+ "1ead89a48b89a75ebaa7d8", -+ "10d0aa100248920b9cab77", -+ "4aad58987821ba8f33d96e", -+ "5c616b0d1a7bc591e70e46", -+ "24b22771f303ef742b8ce1", -+ "3eda92314bf1d09cb5b08", -+ "692eeb4ff69b42372517d7", -+ "494807a247f7ffab73a644", -+ "23564d97f447b0091e74ce", -+ "2b81c6e67e55aeb6e93a", -+ "4669a41d4e444c1284d024", -+ "61036fcac29b84e5ca02ad", -+ "2625096534f2cf10d83a26", -+ "30cb89652c8629b5e0dcc3", -+ "606e14eaa7d60eb7ea925a", -+ "17715e6c96cbe096c4f9c2", -+ "42a81f5e10b5435180e643", -+ "6d849a39e47370e473a913", -+ "6116bef6a79fb2fc15f0e2", -+ "31e8a39712fb3a7a11f909", -+ "7511506751237c1959933c", -+ "1e47a4330f0bce93db13fd", -+ "97342eefdbc78b9689120", -+ "b1fe15d9ac88348f41a87", -+ "296a247b4b36d5c2a1884f", -+ "aef2488954588af921ab8", -+ "351db0dca5d74808f36d33", -+ "25df9f831698604e15991c", -+ "761e42e1c908c2f09e096a", -+ "5e73615c65ae9e74eb1ef3", -+ "4354f51efc9392bcd6e51d", -+ "3f7d2ee6cb32c6bbeee194", -+ "394faf6069c716fcf8a76c", -+ "51d8b3e6fa0afa106abc40", -+ "5aaabbd40fa78dd417edf5", -+ "32d68fc9b8a9c17b315382", -+ "6f24ffc802a08273be511b", -+ "452816c1b54aa2bfddcc17", -+ "142c59f31fc82fb58a7dd5", -+ "7233f4136f3ace41bedb12", -+ "2c18c59d95a21961c42f21", -+ "7eb8dfe838ec5ef9d3ee21", -+ "19915afea85d27cf8df109", -+ "4e1162d634d0d5811a2441", -+ "43e36b6d5a937387b49f6c", -+ "295932427e10aface718fb", -+ "5a2c8ca58cb488822e9f49", -+ "622b540293b1275c5a9446", -+ "753f0795048443573283b2", -+ "3c2dca32abbdc029f4a212", -+ "3fac097802d8f5fb376d58", -+ "668b9e16f3948f582a5b94", -+ "1a08e273719d3411178252", -+ "f4af5a6143d8f44e48afc", -+ "54ad7fa69dfd0b4c19f7ed", -+ "65cf5014ab215afd17cef7", -+ "4c3c570182916f32a6f96c", -+ "2e8edc0b6dfcfb2392ce87", -+ "3950591be73642bfa23264", -+ "559752d946b02da4c2f657", -+ "554f5cfd133bac2188241d", -+ "3c1fd5d9a6223b2ce7b02a", -+ "34c50fc58872b7325366", -+ "3f8cb5eb229acba822b48d", -+ "2aead0dac004faa8ab67e4", -+ "144a6c20d0a8d5dce2b12b", -+ "5efbbe073364ace07f02c7", -+ "73862de61086c1fd5e0678", -+ "78aded63d2f85ac948c449", -+ "51603bcc8667777e664f9d", -+ "724f8bcd40bfc9f1ca0c68", -+ "5169af1cd74986160450d0", -+ "5b6b96beb19fb0dbada937", -+ "4b3a8d22fdb2c83abba9b9", -+ "3ee5a2cc90e335867f0ce8", -+ "33567e972c90754c86a5ff", -+ "1c07c875b3a9cdedf7611d", -+ "3b55da90ad9a162be1756", -+ "339dd42a42d94342bf8399", -+ "67a3f20bb5e980364816b9", -+ "4b6ed31d0715952774511", -+ "346f2a2b086e1b35095d7e", -+ "1c614cf9a9d87d69154c21", -+ "5e263af53ea065e044720d", -+ "681a88fafe4e6f0620910", -+ "1418facce22bf24a5e6a51", -+ "786571b85b2768309c8ed2", -+ "4d0e82bdf34ff4cb3a603e", -+ "7c2e242ec2b95580a9b3bf", -+ "54fc920cc0125e53a92499", -+ "5696a96208101739ec4ba0", -+ "636b15a893c301ff23f5f5", -+ "4956721f6a2ced1fc736fe", -+ "518711fe03b241cfb95160", -+ "2e12097225e5783b545083", -+ "7340d7daed67bcc5cd4391", -+ "c075fe6224a62c1010fb8", -+ "4bee7e482b290b1d3869be", -+ "7e8fbf173741aea1b95c93", -+ "5a1fe9fffdaa20f4ab7eae", -+ "58d7de0f8254a81b5d0f5a", -+ "38793daa7aa086d5e70798", -+ "6157a651f2640a73f1f90", -+ "7a6d5b1013830761b58026", -+ "46734211b970f8a6448a60", -+ "31b9dd76b9ed5f88dd4609", -+ "46c6313b3914ecd376b959", -+ "3e4e77e268fb6e7602e96c", -+ "74d39a89d87bdaa449438c", -+ "7684536a92d49a5af59f1a", -+ "71215d6fd5e662d930a424", -+ "249b7a4d080be0f548cabd", -+ "1bea5758655f1400515db4", -+ "7f45c48d28fd31ceeb3fd7", -+ "1812bd60b720f8920fe80d", -+ "27244290f774a00786ca95", -+ "5566a844e8b1c572f69612", -+ "2d678e77df571d7ac4859d", -+ "e243f28e043030ee3a43f", -+ "36a3336f56c91232544e8c", -+ "179d4134709978c75bf6d2", -+ "20ea7b335b7621642b29a6", -+ "78c437adc3b6ce946cdd", -+ "57dbda5c8b230a87030357", -+ "4dcc6ee20983f0020ad69", -+ "5725842b7246179896a39d", -+ "6b1cbac9279eaab9b503c4", -+ "1bc4e87c1100a2d26aeff3", -+ "2d70f946f2915679b314e6", -+ "793fd256b009d961487499", -+ "ee9d6b69f13ec8f385e6f", -+ "4b4c7f0a822537ff62cdcd", -+ "48b920d23514d06befaf52", -+ "2df30214a49a31c21380ef", -+ "4c4424602626193266d943", -+ "2d5bb2b553d4ed5bc0795d", -+ "681fcdfe60f23e3be083f6", -+ "4f9634be1ae125361bd4c2", -+ "1ac96b01993da8677b2fd7", -+ "4cd15a66ba5a2f18c8823c", -+ "3828df7e9ab6753fb83dc1", -+ "2071c913edfd4fd6daa6bc", -+ "669e7a28f7a7c30460a80a", -+ "3b22ed42f28069f29c280b", -+ "5ca51c82df4def8b1588cf", -+ "7b2ef1bbf74c4989ed5ddc", -+ "40ebb7bac65bd815945e49", -+ "4a469bacdcaf5434109262", -+ "1a14d5b10cbcbb9ad3216", -+ "65fb4589487aa5a16bd767", -+ "283508a2ed137e839b2207", -+ "7047889925ed18a885358a", -+ "9d8d18a72607c311d6f76", -+ "6a1d554c48496d8d543eac", -+ "594a3b6273b1ed2b542eaa", -+ "67cb80a136db30b9d60d6f", -+ "5106bba99e6268d7bef3e4", -+ "6fff35974d5f0b86faa46a", -+ "5f7482c17a568566c785c9", -+ "78ba33e419cbc7f177437f", -+ "1f4b918e0e0d47c89aa2d8", -+ "50cfa48cfb994ab2b77aa3", -+ "1e4fdc54209c2229d7ffcb", -+ "4431184365a358de692057", -+ "7adeede80a05e40854e6e", -+ "9a39acfeb3a1b4c2bc79c", -+ "2d2a15867cf9361defac4f", -+ "3fdb99cce8884ed923271f", -+ "2d127e6ce6bd0f1872b1", -+ "1124cfa0e070cf6fe3c638", -+ "65b7b50446c767e6fa72fe", -+ "3f0d18b1efb7248950daeb", -+ "74fc1bfd19b3cbc9867bff", -+ "34f0f61d6d8d062b6b9d9b", -+ "260d6ba9444df4b85dfb92", -+ "4f75e255d88657b2ba4755", -+ "3c3f770d148b4692e25b59", -+ "1eb56fdccfc12b22db2048", -+ "3c81a9658bae42644c317a", -+ "783c78a9025283e7188a8b", -+ "7322c20a545b3845b54b34", -+ "52d104741cfa5fa49fa55e", -+ "6545cb112ea4be72bc80f7", -+ "5bcd4418d37c976110b37c", -+ "34d59de432c0dbb24ae55b", -+ "4759751a101953dd340d89", -+ "41e135572f9ce788481248", -+ "185033e62f44aa85a7799b", -+ "7047a4510b8c2107737ece", -+ "381012de4c9a82f9ef1d72", -+ "1167717f2d3d6238b3d21d", -+ "2dac9d433ff98cf24eae81", -+ "4f1c406e243fb2af67cd42", -+ "685afb7cdd699d5a8f020e", -+ "4c6a0f6de7e50ac450c0c3", -+ "59f0f5465ff1e16be9bfb2", -+ "594ae94ad86b9a719f54a7", -+ "9225712405a5bd9ade58d", -+ "3650c22d9c1072238cfcfe", -+ "36a92b305c21171dd5a616", -+ "5ba344fee845769c2c86d8", -+ "3ecd8205beb790946eaa8f", -+ "5f84ae1685459ae7e24bf2", -+ "62a01fb38e5c88098fbcc9", -+ "3c2f54ef99be42fe30d32d", -+ "215dcfa076749277897e0", -+ "36304be3f0777300703af", -+ "147b65e0e829ca30fd88c2", -+ "4e6a2eb425fbd18fb02cb2", -+ "2ddac7db8be22e88618b58", -+ "1c7831e5dec267ccb26741", -+ "2f3b362f4b742eb82f8a34", -+ "5505b22d0ddba48ae2020b", -+ "522afb743f67b3ca56b20", -+ "81dc886feeee4945edceb", -+ "77c4b593ec648025df03f6", -+ "4f0841f63a0c64aad5232e", -+ "6cd2d14ecc5fc7c2c1b52f", -+ "3827eb26c007235c46c676", -+ "484281d930b8ee32f366f0", -+ "25f7e1ac0d4153b6365c1c", -+ "2600c04d980b2307982b22", -+ "6b923e02dfb1da62f37204", -+ "287593985c21589f72c821", -+ "c8918a059fa77676f0587", -+ "76201f5e0110544f41d9be", -+ "770b83b55e13465063e5a", -+ "412ae12837a29724832877", -+ "5cd8f5f9eb6806f67db613", -+ "4eac7fa0d6b168c3bec4e3", -+ "5d2972b12e50e727a2721d", -+ "5517c01ca3bd4da9aef0ad", -+ "11ea8c21342ce42ebbf9ec", -+ "413f256a64feb56e242e90", -+ "29f3402339c3128a1e2c1", -+ "51eb860c87e1e5b70bb623", -+ "369c62fe5aafda2a550912", -+ "2674d42d16e97493518d2", -+ "6b105359a1a68d94862411", -+ "527e969f4f6eefe6289ece", -+ "7ef4c5361ca08ac1cb6216", -+ "3f3aeb0a1df198d9c95768", -+ "152dc9fc63d3c1eb6c335f", -+ "7754a6a5fe6be54c00f4c8", -+ "222ea07afe042cf765ce5f", -+ "1086eae159340e441fa0a4", -+ "6c03f094dfe48c9743be89", -+ "1fe069b8c57a9fbe5f6009", -+ "185254fa056de9af1a6bd2", -+ "3018be3223f82c7f0c9ebe", -+ "48a13c03c03191471f1164", -+ "3e94b32e50da81bb5afc03", -+ "4d08f00a99d95d0043cc4", -+ "4636e2935765905adcc41b", -+ "4bc9c371d07d4a025a739b", -+ "83bfa3efcf5b970ad41cd", -+ "18bc8168956ccd63ac68a1", -+ "366546b3844bf45b7527a5", -+ "363a65fc59f4a8184d3d78", -+ "5ef30e941639d08bff19c4", -+ "5d66f0d9dde7339dbcd24", -+ "33d5a814c00e980600811f", -+ "5ccbc128a5721a5dd853eb", -+ "298200a0909b55e97005f2", -+ "703a6cf857e651748dc09a", -+ "547264d2566596f18bbb5a", -+ "760b4f231686ca10ea6ea9", -+ "49a3641c16382337f3c777", -+ "33525d5afa91fda7d5fea5", -+ "4c028ddef259fa2c7d4868", -+ "575d4696bb0e4edef99446", -+ "6da26efc24e2d57c26c090", -+ "41e1bc8a63d042ba714c97", -+ "5f24e71937dd097c0e8678", -+ "70b9ea82f6a6c02939510c", -+ "738abcc274fbdc4ab5efd7", -+ "255358696f5e9ddbfa467c", -+ "6e9f47f009d809f84a56da", -+ "27c6ad85e824da21b1cf9d", -+ "46a78cc83c010019e8b2b", -+ "6b828169b3ba13bbcddb05", -+ "3f5c0a52d2b564cc250982", -+ "63069f756c8115e5fc4c52", -+ "55744f373c8b8520d62370", -+ "43c2ec8afca87567ee9294", -+ "6354a865e088a0488f2701", -+ "d165a455f92b5083e0627", -+ "7252d249ce8cd4fb010950", -+ "79790e81fd0d2b63f9d1b9", -+ "5e147628ce9e9a9493f495", -+ "37755ea728b820f0ab2bdf", -+ "184e317201ff0ac25eb6e6", -+ "178cb915d7350e37948956", -+ "5ab5c85d4bf835440ff962", -+ "1e2bd3f41ae5c299bb720f", -+ "722f9dc13384479d1c4455", -+ "2b514798a553e5bdcd8ec1", -+ "51890cd139740ee3c35339", -+ "75d3c5c33e5a2023adfd4a", -+ "15da282cec1859a9591ab9", -+ "7fdd8bd273e4a717226cc", -+ "3915d17a2935e69936525d", -+ "78acf4423afa2cfe1a6fc1", -+ "4f140e806dac75cc67fa3c", -+ "37c6007c4a0d223bec9e13", -+ "1ae82d51e4845bef8c5d14", -+ "65a0cb312051f321a95f5d", -+ "42aa10dc273607be680d72", -+ "3e26ac2b23b8b913845e11", -+ "30bed73f7a94de9252a38c", -+ "750f475708a1369e3fcc26", -+ "61ade8e7a0bcc40ee4c2a8", -+ "27b94ffb61590cd0bcd89f", -+ "3f1e6a84c6b836f245c178", -+ "239309f551f303d0037140", -+ "211dcdb529a6bab73ad8a6", -+ "7869636f37e63a4ffff7cd", -+ "150365cfcc4a012a673c13", -+ "2791e42c7f90ab8d4e7fbc", -+ "1501743c447af65014399b", -+ "2244b09bebeaafafb0c481", -+ "36c0bf9a937fe6ca772d0d", -+ "419e79b02e607a42e6e091", -+ "400f76e25d392f347d4911", -+ "5ba0eb3a703d0e42cf4094", -+ "2ccb45ece6ec9abb9396c7", -+ "44741cea6d95eb07e7f01d", -+ "2b3c80a17ef583b6205fd4", -+ "43fea0cf26a3e256438525", -+ "59a7f220e101601c1d1b21", -+ "24974593a8d59a89588659", -+ "14ee39af97cd5a57b0e17c", -+ "4807e0d9a38d358d8e14c5", -+ "64d8389dc8d1b8910fc0a", -+ "6fd170c2ab312a1f05d814", -+ "68c4a816c641b5b1090781", -+ "24e71c2d01e956269446cd", -+ "3bec30574a99903f587887", -+ "2b4b238bbabe3c70748eff", -+ "4f0024b5b5580d91de0338", -+ "646ce329dbe03b0b8312de", -+ "5ba2a8023e5bb50b06e03", -+ "19537a8ee281cd28d6388e", -+ "10aab6ed7d1b631aa4b45b", -+ "6810dd5945e01cd2c90841", -+ "6ac2b70efaf88fd42c4044", -+ "aa480c5cc76379e0cd2de", -+ "64532524c99ecb3c365a41", -+ "321e3fdbb0b890caadc570", -+ "54fb5f18b6d001ef7be401", -+ "364f70dfdbb439b78e5236", -+ "9dfe57d1a9a3265476d14", -+ "169665894aa2b356779b61", -+ "127c199cd032273073f003", -+ "fa33fcce55fe6a32e0915", -+ "264e4b26d39119bcdc0985", -+ "593c091517fff61973996a", -+ "77da1b5a2124b6c9e11847", -+ "32e5682bfa3fd95762512b", -+ "72f7dab0b2d2a35e62478a", -+ "4356ada1ada2921353892", -+ "aa2cbd696160321682a6c", -+ "7f8bc7233e2784039454db", -+ "22884c181cdc222cad8e5c", -+ "7203cc213679d179eabc35", -+ "78a4c0445f77f31209ed17", -+ "58b95d74eb4e654735bebc", -+ "6a7db7fb47d3a18b620d6", -+ "63942ffcaaae948e9056c4", -+ "a2e07f9d73c5e3effd370", -+ "6667dbaf666f92bd61da79", -+ "4597c1546c899a3656689", -+ "5fc3c4b7f7ad5deab829bf", -+ "61170002cc409ddc34946c", -+ "736d05572fd4ef85eca2b1", -+ "1a5853834033d093c63d55", -+ "bafe681e7e52073b86d32", -+ "1c9f86b8742e14b6caf79b", -+ "3886dff828cc76dd830466", -+ "3b98704f287b0ee4e659aa", -+ "581eb843dc9919f85a6644", -+ "697396e6df9539532709dc", -+ "63606d420b8e8397875647", -+ "43b23b71c3202b31d91018", -+ "79486109c44990eca52723", -+ "2102dede4011c5cfefb7eb", -+ "235809998758cf7e4acb1c", -+ "233860a2ed2d566e131431", -+ "305213c4b30a9e8be153ce", -+ "7507998b275e3c9bd4e10e", -+ "64f00973a0eb117b548182", -+ "1416e580fa8bcb421dc6ae", -+ "36735381ceff20a76e32eb", -+ "45f5960a9db06a62821bf0", -+ "8649a3995ad114bb4d72f", -+ "374a0e75bc76f0adac7af5", -+ "6565aab9eaab16f7430411", -+ "7dcf3e6b7d3d02033c946d", -+ "65c9be7a29bf45e5992a7e", -+ "638d0229863032ef249643", -+ "297ac1b2d19eb1e6e32d87", -+ "6f339aa4d977875b1f1f80", -+ "438e5a19094bce43b5b5ae", -+ "4d8b0cd0d3401fd04e351", -+ "1b5200adee3adf189b056e", -+ "1de1227159008ec9b59ac1", -+ "75266a81bf7f77865e6f", -+ "9377e0e5c8d0de1856f6c", -+ "2fd82a7276af1cf8b372ed", -+ "6dddda58fac4e8afe0c9e7", -+ "1d85b86a2f3f20e2832ec7", -+ "35accc5a1e3fb474285daa", -+ "3aaa2c73e60edc333c904d", -+ "740f62900b9523de37b6b0", -+ "7401d0da6ddc33225bec4e", -+ "3e985c35adacaa90f5715b", -+ "62c36a3627b9d2b3c18de1", -+ "7b71ed8d456ee35292c960", -+ "2648a635c5981b8daca07d", -+ "2c33c53227ef5693d69f36", -+ "1540f88099c93111d6c8cd", -+ "5d9383670de64bf15eb49b", -+ "2b23443976252ed21088d1", -+ "7fa540fb3906a29b513bed", -+ "2f88b1c87d7d02f6c2614d", -+ "1976a9fa25af6d21cad47a", -+ "444a50dba1a2bf390bea1e", -+ "11c773ac555182d789142c", -+ "3b929cf6fdabeb45375120", -+ "15bf0eb485af1135b0e453", -+ "126dab6c2bfc9b83475847", -+ "c06cc01bfe2a9b427102e", -+ "6a545ca829ed278f6ee7f4", -+ "23dfbd70bcc040f36d4c8d", -+ "378ef780c4d32c3f15b3c3", -+ "7b115c7c405c6e4356bac1", -+ "1a789636807476ba5bd789", -+ "35fa1fca985387fb7fcd19", -+ "21b466e3230d809af7aa6b", -+ "4d1a8b95ded29dc79fd401", -+ "59bc93698864451646a053", -+ "7d6f33ec4a123fa281cabb", -+ "168ebadbade1cbc44496d4", -+ "413278937e6487a988805d", -+ "55407685456c2cb8311d26", -+ "79d07c6a6298d34020dfe7", -+ "65ab167d8e02a8df26439e", -+ "7dfd6cbe22024260a179ef", -+ "28d6cf3e20845dc7283634", -+ "648ea8b083a9828f8af17f", -+ "2f64ac4f819f8343111866", -+ "17da7c01f870089371d6df", -+ "50f371336a648ade74999b", -+ "1de402b5c6118ec8861aad", -+ "48ede8d4a9a88f7613388e", -+ "5f70485b00138272e9a41b", -+ "65a1f7025bafea5088145c", -+ "68d439e82561e55cbf1eed", -+ "3d8509040aa8739f034dac", -+ "2dd21df4dbce295378bd06", -+ "111d6b945ff69be530cfca", -+ "c1fd8fe80d24243e7b5eb", -+ "42772160e3ea402851c9c6", -+ "49374e550d8b335cb151d2", -+ "71faf2ef0654e97e0c23fb", -+ "4328d17f00529ea0fead97", -+ "546ec9785ee72a2a72d886", -+ "5d50e00035655b4d4ddcb7", -+ "4b53718060040e8179d82", -+ "282a80b8de04941c547168", -+ "73673685484b4f3492976d", -+ "5db729c46c687ddd7690e6", -+ "2cad73640590abfa319b6a", -+ "21ba4c5acd17d59fca0ed6", -+ "186605e063004c7e4a9375", -+ "2f687a83227d2d20f3b227", -+ "30abf45ef025352e681192", -+ "6a76e3eb445dada83ceb12", -+ "7146b897c3d924725bd0cb", -+ "14b68001dbf2f798322812", -+ "54112eabbed42ad31637c5", -+ "467db4fe225847525ef33f", -+ "25032025485a4979b90394", -+ "bc149e667cbe5a17ed77d", -+ "ba357a389bca1484d7e54", -+ "34ddcae84938327a3cbc30", -+ "2e1709b850c77f2d508334", -+ "15db077682cfbf170ce259", -+ "280bf57e6ab95037683d33", -+ "14f23f2aade2de50fb350d", -+ "57d0cd94e03404b9cc57cb", -+ "3282cc1545c9e77ce08abd", -+ "567508a3d2a7b4fe3b395b", -+ "16d8ad198832545831c93f", -+ "7d88a8aadc667bc60fcb2e", -+ "65118f1b7c366a8bbffcb8", -+ "6766e290c73bba54bcc710", -+ "2aad9e8261535baeb20b71", -+ "4ba668ebddeaa069043875", -+ "3f98705d2cf6346bf00972", -+ "541a69af40655a83e366ca", -+ "215c7e9a1d796b37a56336", -+ "419d9a35dec3e5f421baef", -+ "163690a8fd51b113410cc0", -+ "1d165ccd9ac1e4efca4a32", -+ "1d78f3d7e887debfa04bf3", -+ "6b421c0667b336723fc0a1", -+ "2cc7417260782c0d2394d3", -+ "21887a11425a371d17db86", -+ "5be7c40d96f7c97153eaba", -+ "2e061928a5c3ad9bd6d9be", -+ "7b398d970ad745817bcb61", -+ "f7cdb22a187815c33c5e0", -+ "a4f6b861d9a460f5b65a6", -+ "68d4b88b77dfae0da7a5d", -+ "4e4199871aec7ec1f99895", -+ "68f5ab17da1cc5dda22c36", -+ "1901320882ec0093fcda5d", -+ "76dcede51c5087d374b20d", -+ "38c3b4008c9d0442e7b602", -+ "1edb6eab35de11d4922150", -+ "5c53790457f0f66baaae2f", -+ "664ad54353749f2ad36105", -+ "45638582a87d07b0339df2", -+ "18b021fe09fa8bdc44e567", -+ "2acc282877d9cac38e38c3", -+ "7bd177160999a650655c6e", -+ "6717c0177a36454aef446a", -+ "6334fc3ff70d17dd837781", -+ "499a1abb2a1381278175e6", -+ "14da57f8c43c94d5133d50", -+ "4a1381ccb93c34dc44cab", -+ "7cb4b7b324b314195807c8", -+ "59f2c50a64b0c2a3e77442", -+ "426b930b670412d271a091", -+ "38aafca45b266dbeef6fc5", -+ "35d63c19d36b85b5e96648", -+ "31204f9f1e25342bbe28db", -+ "560e1e8aafcab315236068", -+ "5b80c6e1a5c4dcb3166335", -+ "1d41ed28d87d24620da24", -+ "38271b1467ee062bfe15c1", -+ "2b7758dc0945a30687fabe", -+ "4fb33de912dd8d2f8b8081", -+ "4d6d3f3602597781bd2ea0", -+ "5b509a0106f1d06627c353", -+ "7ffd3daf76b1e818134f24", -+ "858c45884b129dd66817a", -+ "70c9c69419338ba44d6b8e", -+ "17c5a39deb46d102235506", -+ "2adb843a58d472c17edcb6", -+ "798b816a4dea5ab964c64a", -+ "68705a826f80224f09c337", -+ "b720b9f07a6b1f41654e1", -+ "44bf623ac807d4c96747f7", -+ "16eaf321bf41ee635d6d46", -+ "37107b083cae132372e4d4", -+ "31e9d0607a42f7e54a8c81", -+ "4d23f5ec809ab5057c2705", -+ "10a61010d82426d21109af", -+ "1ba28761d3577e14d38b38", -+ "c57749387141da5f8fd27", -+ "4afedaa595cb8c309d3fbf", -+ "3fd90efbd4f0a4e173f589", -+ "49b4801e9a2a64a27691d2", -+ "7255e6805e164cf9788cce", -+ "62ae26dfe2273af99c4830", -+ "7e185faaca849a7f135848", -+ "10cc6c74c4f9fcc9428f7f", -+ "152b3e507f8b7898991275", -+ "15a3be22e80e0f6f498608", -+ "54e5b2458bb84fd7d4433c", -+ "656c647508629462e9a821", -+ "4c60164f9602341914167c", -+ "2a17c7297a08a3839ca0e1", -+ "47efddee37fa0ef6a72a47", -+ "106fdb273227296116f40a", -+ "524a00dd634d2f57ac7c6e", -+ "1e6b9387cb8fb6494ace9", -+ "25d293607604db30df2e4e", -+ "2a07033e306623cf4e37d", -+ "178e61138a7396d55d224e", -+ "75aa7d0184dbe8ff376045", -+ "421e7c19466e0847ffaea1", -+ "732b807455afe5538cf678", -+ "1a756f67d7e3e663369a04", -+ "389f7a523536bc08e2c52e", -+ "3a0c64739838b20476e0bd", -+ "4346fce81f02878bbc28d6", -+ "2f63eb0fae8122aa717440", -+ "59308e5db85655d5ae0c4", -+ "26b549a59dc35ee5ea7b82", -+ "4d89a145aa9c4acc9cbc8c", -+ "71b31c9be0276caacd1146", -+ "718c4a4aea9ee0da236930", -+ "7222af7c6bff611029c53a", -+ "7f4b55a70795b9d26512fa", -+ "32a9d4d4f421cf83f9237a", -+ "53cf166384d9f967e4ee4a", -+ "4566810f52dbdc6e52d908", -+ "308ab3a2c4d7f4df4b6a31", -+ "48a0fd415822566b2ecfbd", -+ "242cca5b643a5f97a01a20", -+ "1c28b93f693054a06fb391", -+ "5a2cdb29cc6790b45d1f04", -+ "5e8a5f959be2a17534c9bb", -+ "3fc3e580d2ad754a34bc48", -+ "6bd645b33c041537bb5186", -+ "3019d2c9a4a70055fade00", -+ "142fa830b7ba88d08608e3", -+ "47226da695602ab6e77894", -+ "70044b2b283269e2d14166", -+ "46ef25878ebd3ab0b864d2", -+ "557bc3fd4a1a6866c5d19c", -+ "7b0ba619013363524f168a", -+ "48b438b41e1bc7e58e6ef2", -+ "39a95d47cf87d7d7d6bc8e", -+ "27c1b7b41af947101d694d", -+ "492683ece46681328f9912", -+ "3ff99310762f37d685ca95", -+ "4cfeaacecd47507ead712a", -+ "38a39ada5dac01b5c2adf0", -+ "dea3527d089eceb4c22e3", -+ "7b084b907f4fc0301dbd5", -+ "503f8d64438b7a99b8de08", -+ "1d9a776cbeec9f5dec9407", -+ "8a006b686db9c86eb0756", -+ "144303d93b170584849f6c", -+ "6b5617e9152db554d999bc", -+ "1b9850e5f0f8fec4d967b8", -+ "20fe6d6e332154329f831c", -+ "5cee3684d600afc7804db0", -+ "1dc0a99973375f6c4a4583", -+ "4476f33d15e77d3ea6c712", -+ "11f2c34fc87060adca2837", -+ "71af54a2496a076b559a6a", -+ "2ff21a8761b9bce5f34f74", -+ "78b5c76a3ee8c2ef071fa1", -+ "5738f30e5cb40b4ed83e60", -+ "59fdfd7775c9750e48d811", -+ "7b609aae44a59cf088c570", -+ "4a67b54dcc404423e6b631", -+ "8ea7f70a71ad46c0c260d", -+ "5ca4bcb81d4d03018b177", -+ "169566a480e42dcc8863ac", -+ "789addf402241ff646d77d", -+ "13b16e69e645c1703bf7c2", -+ "16f732c5fac8192629ddb6", -+ "7731327e4c6ae66c8e47a1", -+ "cb8a50376e8204b8b5ea9", -+ "18eecc5a940548e7c51e57", -+ "3ca90695aca0fd32b28871", -+ "728caa6061cb6ff29e6b21", -+ "3d66483aa6674adb6569c3", -+ "1208a98ea1dd68a01d3ec8", -+ "5186a4a6ce8351b40466bb", -+ "79c75783449d733d93b4a7", -+ "52f87910ef7e6dde1f16dc", -+ "57aede4ca861e5051b15ea", -+ "70f2550983dbddb8957b2d", -+ "720aa7a7bdeaa025a23a54", -+ "3e7db1002a9116a5e20032", -+ "25d1c185377c3cd8e704a2", -+ "794294f26a938e1caf3c0", -+ "522619b83283553c71de74", -+ "4dd985f2fef5c539fa6a96", -+ "442eb4a36ab0287728c1d2", -+ "2a2b13112979d27489208e", -+ "4d43f85ff03e3cd18ef302", -+ "71e916ff79204bdad49695", -+ "270dae1c5ccafaa07ae8ff", -+ "3a2f442f3b3a9a2af00b28", -+ "3834a1b7acb0f05d9e53ca", -+ "5ca6e41b81529e38a59f6d", -+ "3164747c95104338a78b5e", -+ "b66201b62ddf6d13c5534", -+ "3dd366ce71f1fed428c326", -+ "12413ef53ba7fc6fb5cd35", -+ "20f6e36fbf07174b587397", -+ "362261ed7c97591714ea9c", -+ "1ce2a05bccecd36df96b64", -+ "358d745e0bc4be1c3f4586", -+ "221bb5afe07669d916e136", -+ "624d49c04a48d42d76c466", -+ "a3cfbf8b779e15bf28c99", -+ "28eb082844c0ed277d2520", -+ "4c7d0db8193430b75f41f5", -+ "3c9ecb18a83b901f901704", -+ "735a03f218370f8bd85ee7", -+ "4db4f1a602cec485019670", -+ "70357dabf2c34c8309c723", -+ "ecef39a1ef4b4d1e8c6dd", -+ "2cfcb08879a9aecacf316e", -+ "1175d70c2c07855db37245", -+ "786d54b4d5ce74ddde20a8", -+ "ff53eda132c9a3cfecc65", -+ "728cea43531fbac95263a5", -+ "20601a054af9d51633fab1", -+ "127118c35aaf80dac2a57", -+ "1db83df0a168bac450e4f8", -+ "39c167fbee27f65e96cc7e", -+ "2b90f954efc9f58a07a363", -+ "63f5fe049f46d509d141d8", -+ "75ac7a48082d5afa148e7a", -+ "569bfe59efe21364bf57e7", -+ "475131d01f3e6dc3b169fe", -+ "716991a2a17f536244885f", -+ "150c29ddf5483fb74be06", -+ "65fe3a22c7d35ad3f875e7", -+ "1754f51aa79c3b0803bf00", -+ "a4d6bd96f61637d730c9c", -+ "460372cf36a22fb6b9641e", -+ "43dcb4450a256b9a0eb673", -+ "10fafca3d5f71faff8f1a", -+ "177f43e8d62e87c66b9da", -+ "420c1c0074adbe0616df4b", -+ "1e39f05dac576881e6c295", -+ "7234cde8ecc6673caf864a", -+ "661787ba011711628186b7", -+ "6473dbfbe4a3f63d08e3f2", -+ "62b2e70d411eb11bf0a695", -+ "2e684b7951a2526d838fd7", -+ "5b4aec35da23a27808974", -+ "51e267e9a5a7684ebfd343", -+ "36b36922114363ceb85a26", -+ "5687a42dcd55b43227f657", -+ "3d28e1c12f9c60e500dce7", -+ "6bc6acd592c0200b749e07", -+ "773a63e6b7c9e3bec91272", -+ "536bfe32ac8da07b253be0", -+ "2146fc84389596cf6fa8ca", -+ "12a2fa8c4d06a694b748c6", -+ "49ede33966bc3f0dc8757c", -+ "4f787847feba11bfcbc764", -+ "b2687172956319218655e", -+ "4bdbd2765933e2b1d70563", -+ "1ef9edb1f958cdf81fb9d8", -+ "6e8b2732511303a48ef731", -+ "3608208e4497b40a62b3a0", -+ "2c4bac0a0cf06ff50ff71e", -+ "784bdef1566f244d4ff44d", -+ "5cd3a1cc8bf78e4c7e3747", -+ "418b73330a3b4d1a80474f", -+ "5f87453deb48ed6c9a1afa", -+ "3d9131aa5802e27a83eb61", -+ "61539cf7b388689e7a260a", -+ "260213253056e29f0ac6e3", -+ "2768a7a783d9baa4e5cce3", -+ "7e61e3317d07a1009894dd", -+ "6927c4b12865ac8f053dcb", -+ "352d204330140b3786230b", -+ "67ae2ace35fde529154a8f", -+ "7e37a126be9507ba4c717f", -+ "2306ed04565a9cf9fa84c2", -+ "6b380bf5d71fe523ad1e4d", -+ "6aece787aae5251b57b3ae", -+ "7f2209419e3163fbb4cd8a", -+ "376c7a8d0fa0abf4c0bb7c", -+ "39a26bf8336439ba9968b4", -+ "620c14b60053b660420c4b", -+ "19675db116558d90bb4f6", -+ "2c16632a312edfedcc7f72", -+ "1945686d70d9df98093dd1", -+ "62e4e44df51bf11734aafc", -+ "5d3293ca54de6a3aa06b08", -+ "610d07557d991d9db3dea7", -+ "6b25878a1ec102b9e883f1", -+ "5d29345f097e1dc041bc7f", -+ "797d4c38129f52836fa5c7", -+ "5bb2eece8c95a515d2e2ea", -+ "451e904c04882b739d233e", -+ "4dac1ce4b87e60431b8a4d", -+ "2f8592e02ef759cdd34c72", -+ "7c1d3420db42a6ffd37cef", -+ "4b0d1ff6297b378945b906", -+ "744db8f7e25f69bc47f2cb", -+ "7fcd5bd9328b9f06223a1a", -+ "37f7d323d5bf332eed1bcd", -+ "629e9c894bbbebf06d3299", -+ "d427f0f9d14ecf4c54fbd", -+ "71e1aa5a9aacb38b66f605", -+ "361fe28e640ec02ae49613", -+ "551b691726c66f9ec1f9e8", -+ "523ee7b96bbc2b0977b4f", -+ "52e6bde0fed2ecd82f7bf", -+ "3a4a4ac73bb38c0c48aea2", -+ "207cf80fa76e8708f88dc9", -+ "2bfe7376e8ab62fafbff59", -+ "7b8ff43621b7fb13c3edd2", -+ "726dd56f61c4c5016201f9", -+ "3915c71f3b447b64ce4513", -+ "4781781ebc739ed9d4e35", -+ "3669984e1ddcb753afb878", -+ "6c8071fad8933706efff6c", -+ "25330fc3e5df50eee77cd4", -+ "316bc661e89aeb9e7e20a6", -+ "2a035934ba5fafe2ebaf47", -+ "515a0593d1e619118d226b", -+ "72716051b13a2c1876c8ef", -+ "98079c36403a029b3f0bd", -+ "388d8c3c958b6abcbf6aba", -+ "3d9a1023138b0e9cbe7d70", -+ "7bc0acaa724475da5a8a83", -+ "4a266217d4534cc588119", -+ "62baea1b89700a3953e872", -+ "5fa826fd6352f83c34bb5e", -+ "71be60f1312db2fcc7f045", -+ "51cf9e84f5414c7907e79a", -+ "1fc064c4398ccf6bf7b1de", -+ "70594464b46de9acc11f02", -+ "4de3353d33028c5f557394", -+ "15060a6e69612092d45768", -+ "2142584bb5cff6c1e5011e", -+ "7eaf34148ada80711a86fe", -+ "64f201a4086e40b2a3a19d", -+ "2d794034e6ae324ba7041c", -+ "56359d56dcb06ea3ab68ec", -+ "49d6a78a88159326775c2e", -+ "32c2902887e1700cd5dddb", -+ "c8806bb60205886d4ff9d", -+ "c0ecef4f88f5957d4b1b", -+ "b0715d55fe0c1edd9613b", -+ "b512df0270e6ffe2d4a9f", -+ "563e208513fb23ff9ca7d", -+ "54c245a123767ef7f22e33", -+ "5e83dc6dedd0679793feca", -+ "3c53d6131f8c41d5d7317b", -+ "349470b19ee7a8cf922b33", -+ "432c0a15a9dc31696b79c7", -+ "3de21ce46f7c8be3bab3b9", -+ "669f3588d7a4ca7ee3dd1f", -+ "2bf32012cc6354c709ad2", -+ "2e5ffe59b5dd3843fa4c17", -+ "601b382825c1515525a19c", -+ "78dfe864170ab14a408743", -+ "6ebb0dee9291bd90cd2215", -+ "6f52ff1c7f6dba719401b2", -+ "d16f53a28b7042d305524", -+ "67daf6ba4dc4d74236df77", -+ "72118d192add3aa4c1e0b6", -+ "7e1ce3bec1e98dd35947ed", -+ "2330589e6c22439bef95d1", -+ "214d49f3e2681b232cf62e", -+ "ceff6274c7b15ae86dcc", -+ "ee736adb9b9c1860d483b", -+ "550e4c9178e5dead2f815e", -+ "651be8b59b15d629ab774a", -+ "655b44d3a92231714b14c8", -+ "1a88cb781abea4a70cdfa7", -+ "7a520385f587099a8da6a1", -+ "42a1f9791054781a203d9b", -+ "1aadb770481974ec7ba970", -+ "1634b76faeb97237505ef4", -+ "577a2773ebc9e2412cb050", -+ "68075aa010a2a7afcb2078", -+ "e5d22d0ba9e3194e2337d", -+ "68c1092ddd7cea180b7a8a", -+ "1f6a141f6eb54cb95d54af", -+ "6db9060a2078f4de4b4e1b", -+ "21ac3ebe991cfe1bade37d", -+ "45e67b0777cb6facf28d74", -+ "398768a52710b109c92dcd", -+ "6c65a41601a28b4854db0b", -+ "3fa82c77c11ef3ce373a08", -+ "2219a8eabaec2cc4da44cf", -+ "25b286320c27c0f91c388", -+ "c663e7994203d116af45d", -+ "373211f704832f37df113f", -+ "33f6606f82062475e2caf5", -+ "77ae05c9ad4bb1a82ee6f6", -+ "72f290cf9ea470dcec1318", -+ "20cfa0c6bfbdce5e399a70", -+ "384ac895940651e4b3df31", -+ "2a6da3e3f6425cc4caf185", -+ "3559d5470cc8be88bbee52", -+ "731437b69ca76a93992caf", -+ "31f0df7953457ce90524a8", -+ "7fdefc35775213402acc91", -+ "246e8276fd64f7af18402a", -+ "1e604eea4a6fb7804d131c", -+ "f6074b1e17e08713a2a46", -+ "23931a4d64503bc81a5a33", -+ "6395a035a6a5e009dcf586", -+ "23db937264552bf6dc2858", -+ "50e45902fe1a308ec88670", -+ "42e82d8613957e0acb2b09", -+ "3d50a612150493864e2df9", -+ "1f08599df3ce28d2e2a99", -+ "172e3a20b269ac416b7186", -+ "624f69e6f91d2b9574cb8", -+ "33b05c78a18798e4462d45", -+ "5d5e844e1fd78c36c3341e", -+ "5a1b57c203d09cc8a22696", -+ "775bde6bde2d0aa4187fe7", -+ "4be11f1cd60954626093b7", -+ "571513666bf5e4e0b1c7c0", -+ "30e484fb4ce5927a937373", -+ "6ead11e0936e4bb4e855e1", -+ "14b5583a83133add54d368", -+ "361de61b4e6057d1cb2274", -+ "24364b397921eedc03333e", -+ "3f26224827d27901ba392a", -+ "147a0d7fc26817e7251ada", -+ "4debfa77d5d5f3fa106f86", -+ "1f8b63c5fea99ffd6a5348", -+ "59dbf0c177e94a664cfe3b", -+ "656e5b10b9da085176e0e4", -+ "678fb8bf7f6342c5764339", -+ "2cd2d00d4262f35754bb13", -+ "67b770c97867478cc69b37", -+ "bac1f8bfa0e63045ec3ea", -+ "4303859a49916073987344", -+ "322164812a5696cb2322b0", -+ "50148cebf8644fa7375aa", -+ "50b37142bd10ca63ad3866", -+ "5a86321f172c81fbf185ef", -+ "4972dfe88d7e4fb02ffe72", -+ "3aac1aff3b6e14d31a91e7", -+ "6d575f1601945a3ca29eb8", -+ "6c290f053f3f46327ee8ec", -+ "73040349f8459e94069012", -+ "2dd44a6d1765874cf1dbb4", -+ "52492b4a4856d777ca0682", -+ "76d72d56a09f253d257f0e", -+ "6a4862d59f8198b4ea0fd5", -+ "ee2c219af9300476a7d41", -+ "60548a10984139e59f5d8a", -+ "423813f9eb92bfadf14d9a", -+ "6a3f78db4e25085a772f7a", -+ "a3d31a1daca53878fe695", -+ "1c24006c67392d350aebe9", -+ "5baffc06fe51f5caa49a4c", -+ "6f4a829757301eb1143585", -+ "202377a9328fcb8f661a5d", -+ "6506edb4005521bcb61671", -+ "208dfefbc938eb8f166f28", -+ "2f8aa359ac5538f4834ed7", -+ "6b36296c1bd668243e920e", -+ "7856c391e8828b90a94afe", -+ "5728f13fbf1367c5292a3a", -+ "6db3eec1da4e57eacd7cf4", -+ "520f0b6932233966b7bdb1", -+ "225461e731f47cbf2cbf5f", -+ "15bef1b795296c7e8862d0", -+ "217d231f2ea4bf28c97e44", -+ "31e4aec6d42e52c762e301", -+ "16103ea0d454ef686ebf4d", -+ "34470b1eee2f871c42ba71", -+ "5d172643cb569d9b2ab357", -+ "45838fc0d9bd4e814df398", -+ "520d412f22645bfa3f3a33", -+ "5dd2532249188dbe3d2539", -+ "336699d6c6f15f6ab914e2", -+ "48384f03b178aecb456dbb", -+ "358734094106c4c77371f8", -+ "13705ad9594243161047cf", -+ "9cc0a7524feb44aafa989", -+ "2f615de4e96f8f9837947f", -+ "4f571e68d11ba0c201ec2c", -+ "1c7c6456335bb722881302", -+ "56f01f51a5be66f649b1d6", -+ "4a2416a8cf412f996e9654", -+ "5593dc730a3a85d6ce77d2", -+ "70628248b6cda7311de5ca", -+ "49212e86ec70f1b328e11a", -+ "3669075c083d3a0547d7ee", -+ "7c64411c354fca180b974e", -+ "be2266f15dfa6e02e4a02", -+ "69110081782c350722756f", -+ "5370ef9f2399e3c803b5a6", -+ "4277911fa0e430960db091", -+ "46d2651ce40dd1fdd11e69", -+ "65838019d10030d2edd34c", -+ "79ae8d3a65221805ed59d3", -+ "4762e175d924ca1dff7d06", -+ "226f7d490aa9d47314570", -+ "673a9bc1330de8c0b0abe1", -+ "a80defe299bf7c4d81738", -+ "1916345f1ad90cf48c6472", -+ "13cc5c5fa7afb2b7468106", -+ "656f70349417ef562616d7", -+ "520db901eb8309582e12a2", -+ "4253e27061630b9343ddfd", -+ "43012f86bfa02bf0033ee9", -+ "51524048af5a6750b1955", -+ "37a4477749686070e7e049", -+ "39f7a72e1daced6411b1a6", -+ "4a98326f880a44e2d6ea5e", -+ "574f95a475dce62a3071ca", -+ "23c20aae79c2ffaa75a36c", -+ "59f67a0c66d5e9744004c6", -+ "25ff556cf1afefe2cd2ba9", -+ "41be4715ccf6dde8b12086", -+ "5e9464fbce6027257d92c6", -+ "5b57bc12988f27dd0ed418", -+ "1f1c7eef9d0f99e1e209db", -+ "1a95aa2ba56c053acf7e56", -+ "6f085a8f46a66e79fe4f92", -+ "728aa131a37012e184c2b6", -+ "21469f9c49fb4d2fb54baa", -+ "67d12b5d61741b8623f378", -+ "2a1abd32897155b55014be", -+ "35ebfb3fd5a71979daee0c", -+ "3c994e655edabd5cfbe8b8", -+ "b5f14620587f1e8ed5a45", -+ "4cb0c7462e90f28fa251d", -+ "608a29bc043b54adde90b0", -+ "6337453f9c180b8ddb37c4", -+ "60e351e7834b181d30a00c", -+ "15324434e27844cc4fba51", -+ "259839d29faddb791e3548", -+ "198d839621f761dde4f853", -+ "221728332d3142e3346be", -+ "48cd6ee15c4874d342b21f", -+ "7964fb4049b23d750b6f0e", -+ "365cb247c96e7933341e76", -+ "4f7806a65676c896ee7db9", -+ "99539a5120bf06fd3edb8", -+ "4374a87512bdcb27925ebe", -+ "db7255fca12f37c452ffa", -+ "4a2cef4e3606d1b9422334", -+ "b8385ec48f904d72393ba", -+ "71d26320321cdb1dc925e0", -+ "1f8889a7c0321f5279b37a", -+ "7decc101d84d7378c8efe2", -+ "1526a67a2f54717285cebc", -+ "4a292844d7aa26520c09b1", -+ "5edc4541d1854504d071a", -+ "44f34a642236b1e7e4c8fe", -+ "87eada956963224c06418", -+ "76393b1564fa2cd841480e", -+ "2aec8efef6c41604b67a83", -+ "2644cda468b716b53c99d1", -+ "4d74065738715d35d47743", -+ "1118a89d656497538996f2", -+ "26102582959271955d45bb", -+ "1318f3d7743d8ee4ecfdb2", -+ "3128342c1cd21185c739db", -+ "7568ac37df7da28c47bab9", -+ "be26e79f27c2fffd5718b", -+ "2655fc5da8cafdc10e8c6c", -+ "6336954989b8a716380f64", -+ "2f1dd3930a2948f2187f86", -+ "90bd6d6fef2e358a664bf", -+ "675948e6670907b03227ed", -+ "2025bd13134bf0ca69b0f6", -+ "509dfa92ab81408672391b", -+ "5c699bfc1a98ced38d7c88", -+ "14816e04a6b799d1ce9e1e", -+ "61978b574cf8f6d53118d6", -+ "4e203019ba4b94cd691d60", -+ "7df66ef2eea696dbe6ad95", -+ "43bc8bffd5b4fa12491d7c", -+ "1207aa2a4ea7c882b5e76f", -+ "3e9654e3940c0f541b93cd", -+ "4a64cce2fc4633dbb63e09", -+ "4385d494a7bdb154810c4d", -+ "dbd1bb9693e65c5eeef4a", -+ "7d58cee39bf1830f1b3ec0", -+ "6cc6a998d40d1bad211cd", -+ "3aa6d80b7b4477df65330a", -+ "2ae1383e51812f870ebf41", -+ "1107ffccdffb2932659325", -+ "9cf05f6855d4068390948", -+ "36f24af02e5318171bea53", -+ "4d0a046c7ec4f54117f367", -+ "7bb1913bf745fa526f18a8", -+ "2970c6e86dd017c5341ddc", -+ "58c411222783451febdf82", -+ "657128352843035ba5fee1", -+ "13c9d1e81de8cbb64a1797", -+ "66e2564796168c2d0a015a", -+ "1b9995439565d095eb8a8c", -+ "43cebcc2f248fc1fcbd6b4", -+ "7e18b1dc04cb3af247aa31", -+ "269ad3cfbd18bd255786fd", -+ "2f1b9eb8c8ceec3aba8c3f", -+ "890072ab6d3eb608d30ea", -+ "4e72dcffc8f26eb136b7c7", -+ "71db6b9125d5ab5b3e7493", -+ "57bcb68e1f52791794bf4b", -+ "7489fd5407cd56abfcfc49", -+ "45d43d697cb8503c85839a", -+ "2021e0329a909a39851fe3", -+ "6eceb600a9b81fd3aa7175", -+ "4d63e68650d056d4e2cca2", -+ "21789b3595bc366315af2", -+ "781973046ae51aa956a060", -+ "2353c3f920ce7af530f96d", -+ "4a8154e2948099e7b7c4c5", -+ "319945f43efa75c6d6fbd6", -+ "1a0cc5d78d1da3759fd0fb", -+ "75a29d53450973ae07e5b6", -+ "670c6449f82194e5367c1d", -+ "6978fb86dcb4ccc82a3738", -+ "f6c4daf384fb3d39aa985", -+ "47df2e03e1548a16e223be", -+ "36224c16a9190272a21e14", -+ "abbcfb2e4c3da6b090978", -+ "1fb7c568bdffd12b767330", -+ "77f657453333dfbed3c7e5", -+ "68855602ae559673b8a2dc", -+ "57b79cb347145bcbe43bcf", -+ "542f3c6130072ffd145c0a", -+ "7d43897c9a717ea4ffaf53", -+ "2928531ef291fb90d243e3", -+ "6308b8f5574126f70ec3cf", -+ "3b77afb6ec85d92608bbc9", -+ "39bc9fe63b4ca1891dbe7f", -+ "14b126e3c0b0f4dae2ddfb", -+ "634af4f8ff5eecb70f9b3b", -+ "5939fc19fad9c14c8917a9", -+ "cb351e8f1a28278af3af8", -+ "41ff1be99bebe99b10f273", -+ "32c9397c9adff65d943965", -+ "1e1de465daadd9547d63fe", -+ "1924697a3681efc60e8e70", -+ "3e14120ed24ebae50e64ef", -+ "29bfa87365d098b3fe8377", -+ "48ad93093caf03d61b0aa8", -+ "116c396589d81e0684d5a0", -+ "4550a8c9126d63e137546e", -+ "3d325eede75d0a573042e2", -+ "715fb02624875de3ce495c", -+ "2c1cf6d476ed98aad97b90", -+ "41ec16a5c725c7d32d3a8d", -+ "2a6ced30aaeaaa3957eaf", -+ "284cbec8937114a1728cdb", -+ "7fd049d0f5d16bca84fbf0", -+ "1ece2489d9c16fd0d7c093", -+ "7a1817cf8f21c4f863437a", -+ "2b89a454954d4c6b2e2120", -+ "44b51755bfc5410d6cfad6", -+ "31e4383d0d65d0adfc3084", -+ "2f44e6e7eed452c1b02ade", -+ "46861d4c2ab5de181f3e32", -+ "30c01b8abdb9d98a7941dd", -+ "593ba411e3481cff090a6e", -+ "5f7998cdc984bda089a530", -+ "38863908f348e0ff24d2ea", -+ "7db23dcfd5b48847b2da44", -+ "70cc62d0a35cccb85972ee", -+ "51e871e33b066886db1e57", -+ "7ab8d7968452d732fc3362", -+ "6cbec7ee27571943d99309", -+ "65ccc844f43d7740c3bb83", -+ "2d92e146c92e5c2141114e", -+ "78208a8be2c33504df2573", -+ "1b892a6bc6d106036dc210", -+ "1ba30d22d8ca0e3412c0e7", -+ "7f5d5abee4ea627ca346c", -+ "29d27ddd5f46b0a514ec85", -+ "717a62d953937ab8d63ef4", -+ "46f7147d837df6469c39be", -+ "1e9e640158c2d5ef405818", -+ "7f30d40bb0193bcc3bff38", -+ "7e84a589b79843d0f09d89", -+ "1984882a708094eb26643e", -+ "6b386c8a9795cf0b45e160", -+ "282bde17894173789173e7", -+ "75b60c74c3f4835e0ba3f1", -+ "66673b06f4474ab9ac84e3", -+ "768b4e15703c2b99a95ee7", -+ "3c7d066200b6ae5892048a", -+ "194fc13ec819c9e2289cea", -+ "3c066553be4fa2a741db4d", -+ "31018337a926110b0a5b91", -+ "7ca0b74cff2de67657aaa1", -+ "610a799f5f9443dd8f333", -+ "29dc0e371f2a3ea6cf4d60", -+ "bf1c05f166718be1c6836", -+ "309eb70bbb47b20185134f", -+ "4b31d20ed3a1f68f117d30", -+ "201a5f031183f9e3136174", -+ "6d82429df8c04f3e8cbdea", -+ "4e4d1094ae9ce9f42b1d71", -+ "65e071aa89e8e9caa17f", -+ "7c3ad9d6ed54817d082b65", -+ "352a1b67a355f38121c462", -+ "2d980e097ecb2ab91b9b92", -+ "96afde4db924db62eec7", -+ "6e20ab59697e8bf608ee9d", -+ "2ab6145578df975521753c", -+ "5c91f707bee21c71c33c34", -+ "676d8d92a92b0706da21e1", -+ "3a82f64175d5b3caec9c53", -+ "2ccc62a5fe0c2d164b78ac", -+ "7f53a40fb6d59c55fc0a6a", -+ "eb12a34ffd8e97426aebf", -+ "330554538efb3452d928d9", -+ "37902c15fea70cc2588984", -+ "1e3f1f00ee5c87d8bcc6a5", -+ "21e6a33067365b1e718020", -+ "4113025c4b26d50d501a53", -+ "1d50b663f8750fc777a8a9", -+ "47267802b4baf11a616d7b", -+ "206a9c38358f291b01e407", -+ "7529b300b4b89c580a5f62", -+ "59aab11c164124e5cdf604", -+ "3d3a2d2ef7d22dc8adb10e", -+ "1fa48382ab305e0404adc", -+ "6e72d626e97997cb842159", -+ "53a902325a9087232d64a1", -+ "726d30610282ed39d8f203", -+ "6e48887c0bee3ba8386f63", -+ "532cc2e0afe1d979c42a70", -+ "614224558d52e5d4eb23b8", -+ "c0bc8c55f3b95e521ebf8", -+ "1b4e22a54398ec5712c2f5", -+ "45109475272b0ee96581b7", -+ "6c065cf636d6bc65762095", -+ "7bfe5c12baaa86c60d8117", -+ "62e55ea318373ea102e458", -+ "46789b05c1e88afd58b2c6", -+ "37120883f03d674fbee3d7", -+ "63a482d47b34384d6c0abf", -+ "78778c448d7d69eeff19c7", -+ "69527863032c1ba7d7e238", -+ "574f9294e066c8fdb761b7", -+ "3adbdefe2bc4d894d3eea5", -+ "7c2fed1746d715eb95529", -+ "2501ea3eadb12569e01e7e", -+ "3d49c943bed92220933501", -+ "2327087d544749f348c909", -+ "63a2efcfe030b5eb3fd526", -+ "2d2c322dac49b5fc4277a6", -+ "4ebe9580f66ecfa62bdae4", -+ "39450177cdd3980c4efafa", -+ "3349dac2077bfdf6a12d86", -+ "56b71258283af76e7bcfab", -+ "2bcddd9fb0f98505c98aa9", -+ "45166035762ea541feeea1", -+ "6bf558bed09b770ac7b7db", -+ "69498de156a0aa10a4e2dc", -+ "6cc9f90d012be002904668", -+ "32f8a36cc1b46c25cdcc28", -+ "312ecee1519b0617d31186", -+ "706df4fd50e1c42994aed3", -+ "4edae7063e31e196fbffc4", -+ "7bb42f21df6b474c926cab", -+ "7c2bf4a989b0889ab6c2ee", -+ "14a25dabe8f8f9bd2745b5", -+ "14266a10ce4302dd32d262", -+ "411254ef95bca10cdc61b9", -+ "2cb3e5c4dae6b173319195", -+ "575c81fbd5408f583cec84", -+ "904098cdbfd4389279e30", -+ "4499b6e3311b7fe5b9c98e", -+ "210804240b673797c1da0b", -+ "4cfa062853643ca21aa8e4", -+ "155503fef8a8a42650f8de", -+ "214de8b9e305b92a9ebc6a", -+ "aebf119c49f1f5d4fa77", -+ "4019e2ed5f4f686e75a334", -+ "26e8b6fae1b81184be307f", -+ "4cbbf282cb8d5b492509da", -+ "32124e45d595b542218cca", -+ "4fb7ac8e103e64af4c501b", -+ "4a99080981fd90fd8f202c", -+ "5fe19870cf156902f09ea2", -+ "35da7f1fc27e6edf7e2774", -+ "171772c43b172c6f59b4ee", -+ "396792f2585d3e823623df", -+ "68b020f430372f0b20817e", -+ "58a41d74e16c1b1fb6cbf", -+ "6ef7e0b470470f565c088f", -+ "4dba440f7f398ce0198b25", -+ "2840ecdbeaf847ed4e56fd", -+ "2f36ea2bf51461b1407878", -+ "2cf0b3c6e55d4f6c794d8f", -+ "31fcd9e9b87aae6bf32f83", -+ "47626057be8af9d92cef74", -+ "2113e1a93f5d2f1cba0377", -+ "4176799b704bfacae7d897", -+ "524919eb6636c6c6c14a82", -+ "64d1d7c43b00bfc99b8bb2", -+ "76a279212b584d95ed2cd0", -+ "37e704706a7967491e3628", -+ "5e1c654c63269bdc77fee1", -+ "58b898760417610a09ff41", -+ "64981a92737099a91d3794", -+ "571cc10547604b09ba9b69", -+ "6714be0beb22d71708c5e6", -+ "359b739ee10f4c4f24e721", -+ "454b67d8b7470679eeda79", -+ "615326e14c6c74c717def2", -+ "2dd86ec9cb242b4e68016c", -+ "62a4fc7a9af2d27e92b08f", -+ "cae1cd222ac38b9a89a19", -+ "5fd2fb0300581c5f59fa7c", -+ "1488492f946cb788d721d6", -+ "509ca3fe7eae200044712a", -+ "27c4576460764aabe86ca", -+ "72e3a111047449df428c07", -+ "4dd2e16c6f9989907671be", -+ "415d623b63f929b3ef879f", -+ "9b13c11e290284a86caf", -+ "78b61404bffa36b135773d", -+ "10c2f27dd2e5d8f77a071d", -+ "684e96f56360b04576ab1f", -+ "6bd55e81cea4df6934b8f5", -+ "288723d0eb9a25150c0772", -+ "4eca5fbd35a4778cd18f80", -+ "590c069f4d458da38448fb", -+ "6a91ca9f24a59bd3f77cce", -+ "4520d49550bf0a2328020f", -+ "31340daa6bee66dc702e47", -+ "21cbfd5db5cf856bb6980a", -+ "2ac5b705311ca0e8e6bcda", -+ "28390f3626b1fdadbcbfd8", -+ "3b79806e60c6443e5b75ae", -+ "4e1dab19fafdbf4d11123", -+ "4bba04cb6f7dfe33e4bd", -+ "25b65fbcf4deba1535165c", -+ "5d2602e9c7bafe79929bee", -+ "1f5e885344b51456b2195b", -+ "5c585a64ca68d89750e9da", -+ "715687651f6925a41a3bf1", -+ "47be6483decbcd32c50b44", -+ "3fdb397b831af56c0902f1", -+ "60ea199093a4e9f80613b6", -+ "59048c7bc400c1b2f055f1", -+ "5ed2c798bc4d3df9693b4a", -+ "26c8838f41263334d39302", -+ "257f0dc17de9e402db5577", -+ "5eacde9e13242553f24977", -+ "232706fb395f1e37b2683d", -+ "5527388c03206dff6a464b", -+ "6207f87b59fc321d1fa8c5", -+ "3eed8387e5a22f84995caa", -+ "1ead4bf29c5aa1e11118b1", -+ "4e9e415c8033fbf3989b6d", -+ "6ed402123cbfe00df8030b", -+ "15c5021e3387b5104eda39", -+ "385c720d2080ae9544a074", -+ "12502410f917e813c566e4", -+ "dfa61531c98e389318ffc", -+ "75df623177a9cc914a680f", -+ "16a2f9f4e53133020d693f", -+ "68bba5659f4f20356a0cad", -+ "5b60aca7fe85259aa048ba", -+ "748cb85b7df9ca5a82d4a0", -+ "5448bba652328fd63e3ca2", -+ "497b40c11c5d479cab5f20", -+ "1ff2197a0e5b3d0b65c928", -+ "175182c7cd2ce431b0150e", -+ "58a47971604afebfc2dfe", -+ "7feefa2c38e3a6212b4cc2", -+ "1dcb001f06c75da3270a59", -+ "3e7a71b985de5c6c7a9f57", -+ "ccd4be560162041ae08e2", -+ "4ec109ed0d029a0c6bd1c3", -+ "363177aa4ad204478f4d2e", -+ "7b94e69ecfb1ba4bdf42b9", -+ "68bf1a165a85b17f192a39", -+ "fca586b3bb595a8d4101", -+ "7914f6f164e20860badddb", -+ "d959366c9d2eed9c988e", -+ "6b1b87bf69d8ba16154459", -+ "5798f45a6d32a5d9e220c4", -+ "23ff36317f41cdc69b5f8c", -+ "3337445fe49877ddd94c8c", -+ "27e0d5b6d5b01b974468e6", -+ "155305c9e80b8231f3fea7", -+ "46777bd089a8dc8c44ba66", -+ "4eb92d6051c08bfec28d32", -+ "58de9434dcaeb21007cf50", -+ "4945531dd0d285dff322e3", -+ "5f4ee2c7a7d447e781b997", -+ "255da48e767df6db73178f", -+ "40f14f4642441c80c723a2", -+ "23b23c226ec7148e9ecfd4", -+ "2fc4119b8d9484cd86a0bd", -+ "e8a31983f38b3bc04d83f", -+ "403c97fd7a8e612b101803", -+ "360136af955e5fa1edc1", -+ "6dd1e30b456df046e42f20", -+ "2a8fc7a338bd0e95e61238", -+ "5574ce6446f5f9b2cb3ade", -+ "68437c168764f9b52e36f", -+ "6db55a7581d577d97e45ef", -+ "2117da386a0ba848e04619", -+ "38a3fd25a6d9f4f7c85efc", -+ "20bd84ec27cae248ea38a3", -+ "2359b0102f9a1f774278d", -+ "7f779a7314dbb8bea5c652", -+ "a15cce75efaba6c1b571b", -+ "5e4eaaa44cce4760757194", -+ "1aa73126a375b6cf5e8b5", -+ "e0fd267f226bcb77b4105", -+ "5c1c9591ed7cecac5be504", -+ "6f8c0ef46d2275dfe7e84f", -+ "75f53c77a2d34dd51c6882", -+ "553e86c66c2fba13b95f56", -+ "31cc33f2d92bb3dc73372f", -+ "2bcf3f6e0be988750bc0c3", -+ "2a0c42a5cba7fe55a006e5", -+ "67427f6921fbdb98c3e375", -+ "62019722b2962f2ad1787f", -+ "75964f1abb3f7cc93e9f96", -+ "3faddb5ddd2bdc683de72f", -+ "235bf7672a2cda1ab01fb3", -+ "c16242d78c3d8fbfddea4", -+ "29105da153f2a098ad094b", -+ "39f0a0674e65b2cad4a706", -+ "57a6c26c5e5dea61f133ee", -+ "6151a60a864edd0e7c7b30", -+ "d65fa4e9fad0f9180af7", -+ "553adfba4c4a6d20491557", -+ "1ffc37c5751a51bd676a97", -+ "450dcdc45566039112cb21", -+ "74c5b771dcd8c4719355d3", -+ "72216a00ebfc9de1e963c8", -+ "7746c161815ab2091d9e21", -+ "47ddc74fced651c57b4d1f", -+ "417a5a771b0fe4694065d", -+ "4bd73bb75df0b9c8f31e93", -+ "3937d6181e67f43d9bec08", -+ "5fa8c4e879ae9ef5c6f178", -+ "693e564c43456862d84db1", -+ "394398fcb25e82a48b8d32", -+ "754181ae9689816d4fae85", -+ "6f5834f39b940405114e26", -+ "41d82e9988854950bdb48c", -+ "29f43cc681e11325bf172b", -+ "6ac2b95852f2b3848657c4", -+ "49da4e6814895f7566132", -+ "7a75465db2452d11dbf6bf", -+ "14b9cf8ea7c2a2aef663e9", -+ "7a7267a5eeee00421b1bd7", -+ "8d7ac16a6c7fb5dcaf362", -+ "4a9951c3005ac4b7d775a5", -+ "4dac5ec68e30db33d790b3", -+ "7e9e8be590540d41cb48b7", -+ "db6d45038525122246c3a", -+ "32e84128c0dfcdebdcfc5e", -+ "3c52f4c6c583d5b2a18105", -+ "7a42533b0f16560c421482", -+ "403ccf27d3ff3c3686d654", -+ "5d780dd5bc1f62ed520130", -+ "6ecdfc4db1fa1b0104403a", -+ "4796fc52e00fbc5d65fc02", -+ "1103bc87eb4e4e572c882c", -+ "1f2e34fd7020d08b01b7f2", -+ "23f737b6f1527cfce0303e", -+ "292e4d75da1a76fa4eb730", -+ "1b8c58018b9ec962054ab0", -+ "3cdbf096f176a11d399e68", -+ "5e81e2ee54fa1c8e9216bf", -+ "6ea50d7820cf1c46cfdea8", -+ "42fe3f1413aec51428fb64", -+ "449f89bc8e75ebc93c06c2", -+ "46dbb8e8c99f2d8cf603ab", -+ "3542a00727cde7902f64", -+ "8c1b60a22d754654b3b0e", -+ "4cc1b8f60c7b3b604dd7f3", -+ "65a59676f2a0f7f5358513", -+ "7ebd8ffb86035ffa249a5c", -+ "6937a623eafb54374944c3", -+ "771e23d6155cbd6574be92", -+ "42d3b2e606813eb48865e1", -+ "747f5812283a8ba1a43af4", -+ "1533a8f5ee81c2d4352c6", -+ "25b4f424465c145a893505", -+ "54449f7dccf77fd8f14fff", -+ "1f216750a4d1686b3b2227", -+ "3c0ef922648f93834d2bac", -+ "5b8558cbc60eeb5d4d1e0c", -+ "3fbae766d352bf62d71ec9", -+ "37ca6d3b30cb2687e44f7a", -+ "4fc1aa30a26bf05e1cf79e", -+ "5830e5e1c9294904118c10", -+ "ac1c0028dc3aa005da816", -+ "2d8207ca3331c2f27a3943", -+ "2fe38c447768175651bb27", -+ "538b76dc0991647c99d6ab", -+ "5ad56a9a03d1277384501c", -+ "2c11fd859f539479044b3d", -+ "6e1c49a1adf3346b270d76", -+ "627d01094a2553e7bdde46", -+ "4b0e392a6b94b0716bcb0f", -+ "73c9485e5e5379f878695", -+ "43da9e4b9fc98c3225df02", -+ "4b81add44caab6287f5254", -+ "73a1489a18b0815a03faf8", -+ "146e2b3f7404eaa2825f64", -+ "62cba5cd6ece1fcc005653", -+ "9a91d432ec896438ac971", -+ "6750d083991451ddf24ddc", -+ "23f47a79fc10179e2f1aad", -+ "456b75b7118ddbd9c05113", -+ "214ab6242649bf5f0673b5", -+ "46c6a4606b83331dd733e4", -+ "567c07ffdf5609acdc57cd", -+ "26639427b4cd468207f354", -+ "36b57535eb2f884ec435f1", -+ "2aeb5606838c910769daa9", -+ "5d5d0b6bedf48b96c5eb79", -+ "144036e909f39a00a79653", -+ "7677202d8f05f9287a6047", -+ "1a1cfff05adf1a427c023e", -+ "7286bedeaa0c2687819d8a", -+ "2bf095a2fbcdb3391aec69", -+ "2e6c1f41a9866f4d867e01", -+ "2ad8da8cd83b1521d7659a", -+ "159314ac561f7431a71dd2", -+ "443f4b4ed3b1f2c8fe8ce8", -+ "1bb928a5ce5b6a93e4a6be", -+ "ff765fa35889a47189d5c", -+ "7faf5fb28aa48ff83cc07", -+ "330bf157841f4554c8f5de", -+ "3de0a5abf20a4845d76439", -+ "5d53571a7cc3688e6944b0", -+ "7a6a150f8921047e15edcb", -+ "4dbcbf0e0833361017aadd", -+ "36f20d7e24da8778ce35f5", -+ "3248d851d401112b750bc", -+ "77024358b3e776b2c5e1af", -+ "599102d1f2500d61d762c9", -+ "52c455dad0b267d43552f0", -+ "59db917020bf7253782d5c", -+ "3251a62ebf3abdb7c9ed58", -+ "1c89d8520ef104ebd20ee", -+ "fa65751eb4d84785986bf", -+ "22f4901fc0a8b24cf62fe4", -+ "3baf4fa4e9f273acdf732c", -+ "29d711357943b0afaa5b59", -+ "26293d249066a3014c3338", -+ "4d3db82b9d6efaedc42576", -+ "561331256e1d21664a1287", -+ "796842dd6bfad2f98912a6", -+ "4a27b941aa4c6ad1e07548", -+ "47b94fbc156b869e9d16b9", -+ "39f2517276288f74c45e3a", -+ "11326e189db8b15b0744ff", -+ "7c793c0d415e26d57ec92", -+ "22c922d5b0fc736e5f1adc", -+ "5a9897a2da0299756dfdb3", -+ "37b012fbed4994b5319766", -+ "7ee167869f16d0f3096184", -+ "7b7ba8150a404335a3e978", -+ "2176005ea62a7fae1a0ec5", -+ "7f5271355a686a4df7e516", -+ "33294a38a5c8a431b3624c", -+ "68570d0c5fc94ab3c18486", -+ "3a928b86dc180342e1f053", -+ "474d5e705efa51e5e97d39", -+ "4948e72d6c06974bcf7212", -+ "12ea1cc2026e4f5211a159", -+ "15b86ea9fb5f9d46bb9d95", -+ "1c0d48f6283945e321fdac", -+ "c25f982adccb58e81ce02", -+ "173ee21e60a88ae566e166", -+ "64af53c3c0ad963e3055c1", -+ "2e0a934adfe422dd136191", -+ "5ba00e958e1473bae28031", -+ "230119c3b2a6b1bafca00", -+ "1fb4d17ac6ee317ce5a547", -+ "2449f6a2ba5fdac5a9c1d4", -+ "6b488f646fce9835d43f44", -+ "11978ed9a01677cec42ee0", -+ "3ac9b63dfc3067c1c4627d", -+ "7fa7e63240bd502dd4b06b", -+ "4bafb874450e24655961f3", -+ "4a5a912df871eba16ca2bf", -+ "6a1b97013fc782623a1d18", -+ "60f671cf9f662680d04313", -+ "6f7417b6bfc27461fd2524", -+ "3cd40ccabd157073f9e356", -+ "60188d16e528a5d2e06d3d", -+ "55509fd3a52bd88fe29e11", -+ "193c88995f60dbabf1ee79", -+ "36e5208ae458480078d5d", -+ "27869ae6bfa80052e928d4", -+ "14e76412c1e117fa60f762", -+ "1a91f5500bd170effa0820", -+ "2f27f9f5b37e53f26a3367", -+ "7c4ebd51c09994a5c2702b", -+ "7eede9c7d2fd05759ff0d5", -+ "1bf7de225f0abb4eae1da2", -+ "1f527bd93add787e619f2f", -+ "2f4da63191088795366c81", -+ "1e86f8d9f30e1c9ee2f741", -+ "5fdf7c6cf80f5f4d619b9c", -+ "1365575dcf06e2b1987b3f", -+ "3860f5646a470f19d720f1", -+ "b17adb15bd895ea825438", -+ "67cd089f73cfc8807dd840", -+ "7b97dd845f9509d060f296", -+ "3951fc47c9cf417968c09a", -+ "63bd657552fcd47a1fea3b", -+ "7b59158d38abcc0653e41", -+ "7adedaa3d8ff64ef5910ed", -+ "121daf29269045f5bdd20b", -+ "65c75439faa2303912b32e", -+ "3a603b28f5e57fbfd764b9", -+ "2df92a33b308b4efdcaee3", -+ "69defadcac1e44c7a1c0bd", -+ "17961b8be9d0332a213177", -+ "59a5901c521b74864c8fb2", -+ "697c3f9accda8d3543f182", -+ "3f0177714af6ab07d870c0", -+ "2334ccde40867fa1d0bc15", -+ "16fb077509115b4c0ee442", -+ "758f193f192584a42ebc31", -+ "483ca240f22946b37af3c", -+ "311601fec45703953f2b91", -+ "67da5d093fc207176dbdb2", -+ "1b6a00fcabec41d4b43ba2", -+ "ba07dcfdd701f16f45aca", -+ "2835e7f4b39073c5a451bb", -+ "269c017af27ad44e6b201e", -+ "3cf5810d8c38a097a7561f", -+ "573747456cbe53c844796c", -+ "7772e0b990ccdc614c11c3", -+ "404ae85658f9b08174632", -+ "5dd52a5a11350a9b7572fc", -+ "7ce0b194ba3e31249ab36d", -+ "762f2aec62b91b262cc99f", -+ "3915c8d33da94da27c1249", -+ "6e885e79f7b5fe77214da5", -+ "668c0767178119bd41ac3", -+ "6806f2889f5316f4c57e07", -+ "32f953543bd07093a29e5f", -+ "5685392e26e4e637394c54", -+ "96cf28ae783cd1e477aa5", -+ "710608c33a517ea5d5359e", -+ "435abcd28c0cfc9f321db0", -+ "514d622fcdfc26212b5d14", -+ "408e6268fcd75479c3bece", -+ "18e5cae7f3bd61293a8c2b", -+ "65a5c9fe061a38a8c6c2e0", -+ "6df80f50564e811e245eb5", -+ "1b388caec4f8538425d93c", -+ "1bab6e088abbb7a786ff3d", -+ "17fc45b2690c315a5249e8", -+ "4170c011864f5582d6a738", -+ "3b3a5f854ba249c04d075", -+ "38e1e6200860f4072a8a1d", -+ "c91beeecaf54c95dc1b37", -+ "f125d56d3c0c2aaf7ad05", -+ "341851bd5e48e20f0a412f", -+ "471eec9edf3f5af18be6bf", -+ "4b21ef5da2b744139c3cf1", -+ "3a051daeeae9770973713e", -+ "75a7fc26a6faacf109b345", -+ "5637e5d4438a119a23f043", -+ "22f18c95264f1fb742c348", -+ "1d595362f3a1b4c77729e7", -+ "69a784edece7c38bcf7297", -+ "4fbaae68fdb253d715d528", -+ "23693b4063cf0fa20dad42", -+ "51eb043d3564fa91215f1b", -+ "2bb1db818cfd733dcce0b0", -+ "a961f7b95836d3a578170", -+ "51c819b9ec191b60920096", -+ "ac6c9987de6c73f2259d9", -+ "524b77666e02692a642407", -+ "149d706db4fce00c71da76", -+ "238de3e1606bc0e1c33adb", -+ "37ba1e609c7b12a8e32733", -+ "3ae30b1b5931eb630bbf6c", -+ "1630a212afc84f038374d9", -+ "5ebb44d93cb77417b61c4f", -+ "5a7d2dd2aa2028d4da8f42", -+ "798019b397419c8d54fda1", -+ "74a156e77589342bbef3d5", -+ "506e6a05e8de5c9198ae69", -+ "48e4926c40cd6ab5e92ffc", -+ "7d2db742721c9ba686ff30", -+ "4b8968b5c5a93dbb4b2b55", -+ "2ef2be0f7e33ace73bab4", -+ "7651ee2e0f4d348cbe95bd", -+ "43ee4b35cb3cdc84d1d5db", -+ "449d4feccb40da2e122aa1", -+ "356211f56936e183312837", -+ "527456447c2748239033cf", -+ "46bdbd32d31b2a36e04e0a", -+ "6c1076c01e9e44fb047889", -+ "5ef5512b3384aa1243daa6", -+ "d452f805a2c35e686e107", -+ "67a9131aabd5255bdce732", -+ "5088a2317aa34dd5bb1b4d", -+ "64c275af1abda385c2af0b", -+ "402c7149b20bce787c7e83", -+ "60c8d2e958387c0d0627a8", -+ "516640d56302eb15061b25", -+ "c62790b24bc842a717e31", -+ "76e87d4d2740e137511b26", -+ "6cf76079225189eb2608ce", -+ "3c8b04f81e14e10396b582", -+ "4bfd93fb985a44ed0569f4", -+ "6ce98c831091728c0e73bb", -+ "4f74e7ee01738298062093", -+ "449ccc3923e92a0bd2e3ba", -+ "4feae15528510f186aa1fa", -+ "12a3196afc09a79694eb31", -+ "6cfdd09fe2bd66b85c2e00", -+ "587cce1cbd0dee8b98f262", -+ "3b0283be973d59ebf4242f", -+ "88b8371baafc87a9713f4", -+ "4e6cb8ec1b00e2f28b3a7e", -+ "235baa54adcc67af92d06d", -+ "733b81816da25936e81af1", -+ "7fe76cd2c5affa913c2b41", -+ "26b7df388a02a8279b0652", -+ "7b5272bdeb1b01fe56bc29", -+ "6863984d7793407587e8e2", -+ "1f1eea8231315133cde938", -+ "2f85e68dfb9aea66d7f07c", -+ "6259df76b87ab2eff6659f", -+ "502c6a2df8916b18106088", -+ "4cd904fd9401eac5ad7f1c", -+ "5eb4d93a33b2d2e2c2adad", -+ "55a41153a33cb4649703a5", -+ "cfc86f804a481df48868e", -+ "1ddeaa1e583e9146210f69", -+ "38110b962a169200cc9f0a", -+ "7ce4bd3337a7333159cb2c", -+ "1738ee1c8e104064e07249", -+ "e1ef803b3674bf39884ae", -+ "55d7bf2f5724b5dd0a04ae", -+ "7aa81a94a5a230cf59a0b9", -+ "2baeaedf76503008b9e428", -+ "15bb5d9b44eebb27a1e60e", -+ "dce90e419e8d3f96eb5b4", -+ "72a7ca4a8dc56f9c652281", -+ "5cd319aa7906a96d2f6c7e", -+ "557361125249092a7bf932", -+ "70a1107bc42bfb598164ea", -+ "df7ae04689867c9ad97d8", -+ "117480f169f81bb3e8609c", -+ "479fc9912c9c81152eb474", -+ "4f2cc1f6f7aba8c20a670c", -+ "17dd6e40297f1d32786291", -+ "783e0229f219bc18b705e4", -+ "8b462e0f7448b549fd688", -+ "4a0fb16cc4d1bdfbb239c", -+ "53c95b2787b88db0682132", -+ "536be2b3e3829710aec51b", -+ "3a89578d6ca992f91249be", -+ "779eb73caa637aa28db87c", -+ "52f5adde99e4501e4d1c61", -+ "31541f24753a28cc5b51d8", -+ "620084c5da2910137e2b10", -+ "76c132264ad2a774a55164", -+ "35a3ab4773c5054a30c44d", -+ "2f78c0f7e7a90558573941", -+ "5b39ddb704fa58142076d", -+ "1d6812727d8421d0e03a6f", -+ "307727bd97c5db086074b3", -+ "1abc0d15793c655cee4a9c", -+ "68ee183b2208228da8bab7", -+ "116da33e19c8b80384fe28", -+ "3d73fd3c3744e9ec5d2d04", -+ "64ed03e382c11a32e34cf4", -+ "479e7025ae3fdc2bbcbe22", -+ "a134915353ce113eb72dd", -+ "49cb6ac7a2bfdc54300006", -+ "2d5e8f78718c2d4660cc69", -+ "3f5027ce278d444a4dd243", -+ "15d4218f4bbf0c95cd9649", -+ "13221a23af3045ec5cea35", -+ "1efd2b46d4a8724e929fd9", -+ "628d18e095a8dbcb9f43bf", -+ "30eff32d49c10f325b8e9c", -+ "29bbe5fdf14e69065cb80c", -+ "2df28a1b78b46f16aaf53b", -+ "352a4a136ebd7ef294f370", -+ "1c960c994194a1366a2222", -+ "351c5a0b997e45ec21b614", -+ "4c1f6b587fd26654ea69e1", -+ "2735b2e6f5f08a9e9418bb", -+ "3505fcb3eb2690f88b3be3", -+ "4d8859f357a36792b7211f", -+ "1e2093f76475f58a2dfd79", -+ "456138a50c3717947be48e", -+ "35714b90920ce6fe1f850", -+ "5d7c2a1d1267b7a252da1", -+ "754ffe6bc2e7525e892fe", -+ "290ac68bec8aa8955b7e97", -+ "a058b3353ac6290d9f864", -+ "ef75fc5d77fc146e975f7", -+ "48a999a2dc1a23a934a6fc", -+ "7256923d608836710a659c", -+ "2b13e041339df4d5a521ce", -+ "51a9b0945a0908b1d40d24", -+ "779559a53e6b62275896e9", -+ "1fa330f6dd5f3ca09176ce", -+ "3cb748f77d638122329dca", -+ "7e62c15038abb8244531b4", -+ "9bea90a26f9e93743a998", -+ "7ae1d007cf030664c6b815", -+ "52cfcbd15dfc6c476cfc76", -+ "18ba9d869c489f11ce52e7", -+ "93cbb2483673e4e0dda30", -+ "2478db790ed59756cef964", -+ "7d8b341c82b019a8d56c92", -+ "584b7d6f0b43ddd0b397e4", -+ "6081e77fedf3898fd66607", -+ "540f5a33d5aeafadcad19d", -+ "52c4d1c2ad153a3f70bc0a", -+ "39489c7fdb445490d498cd", -+ "e0800809dbab6d41345b4", -+ "1536906705870049755028", -+ "639c2fcec8b9dfcc987387", -+ "214f18ae0c9aa7a1b8c02e", -+ "5b8e9d8b290e89e5d9afc3", -+ "4499c1c16fec3546d5903c", -+ "5ce5e0595ad07c8855357b", -+ "39bf9c3f1f0a1a15264530", -+ "30a77107da1d91a699e9f5", -+ "352389083277fbbbe66ac3", -+ "5d711409f3faa9ea87abfc", -+ "42cd59499a0ef57d6b0009", -+ "731a7b89f357bfb855a5b2", -+ "767dc9d34c09b03db4a0e9", -+ "5344962f90f45cfaeb1bce", -+ "504d29ae2e5a021d2bb278", -+ "6e97dd298eaee757a3cec1", -+ "2d1b2f087facf1fbfc7e69", -+ "327b2b8d0b75e0d83a5b04", -+ "7dc98aa964908b313939a9", -+ "d8c34dffd92c1a20d6a9a", -+ "21a363ab0e08a4336f2e44", -+ "48eaf0293f956717b8f048", -+ "6351b2a5f477112f552683", -+ "2193bc73ac4b40415c95b5", -+ "13f13f9f2c877cb73ba5c", -+ "7c6b359299af5c59043711", -+ "7895b432001edf846b7b3e", -+ "3ecf9d05cd62341c4f7784", -+ "6c8879d694e1a0b99f8e42", -+ "6400e87749e3bcbd750d89", -+ "1851e925707895d37a37f2", -+ "30f4f5617cc73435ce74c2", -+ "18ec20d19a478746123b", -+ "39242760b51f2f93fd4721", -+ "452d3dfff11e24bf680356", -+ "5cafa83a10f929b5076c60", -+ "7fd4ee663460087b793a80", -+ "7e958697030784ae5ddf86", -+ "a6c54d0ec55adb4911efd", -+ "2964973c288dced7dae8fc", -+ "2b0fed7a534d25697e5c7b", -+ "3afeb7cc8f8e5bb8770da", -+ "6a81a8d913b71671629ad5", -+ "75f4eb6de0d35eeaa16cf8", -+ "7abf68b2e4cc9e3a3b2c5f", -+ "4f6d8c8b0b9b376d42c4b1", -+ "23f219093e9b0bb3b5217d", -+ "5a0c2602dcbbbf468b67e0", -+ "1a63315aa52cb254b65ce0", -+ "4f72850630f6f8c1a68862", -+ "3722a55f27f2c02b34eddc", -+ "672d7083ec424e5d883cec", -+ "4839c6454f97ececa9969f", -+ "e941ecc714605cea72177", -+ "7cf9338ca9bcab73862b81", -+ "6a23876a8c802d81d83d29", -+ "7006ef130d31e12bc44c5a", -+ "591bac661062f64b8e3f2c", -+ "25cab751e23d8e69bb5048", -+ "61f4a55b140e767495cd59", -+ "1a4e5bc143bf00e8928403", -+ "4a54d9b3589d5340a01e23", -+ "18019c176b4c9453028db8", -+ "76fed7d89907843db9af52", -+ "407333b3b6a3bed3ef8920", -+ "536a736ad3a37793dd9f54", -+ "5e56a7d976f1a3334f57c3", -+ "66ffe80af410522139e92f", -+ "1b0c27c7452322264822f3", -+ "58320debe89492ceee77e", -+ "4fbc987e428ed0ce9cb76c", -+ "70a2d453b688803716fdbf", -+ "1921f3262afb2f3766f357", -+ "6e007172a16a9c673e635d", -+ "527c4b155e3708972293d1", -+ "2797689917c95a9d4073ae", -+ "69bb33c18017fddf18d091", -+ "165ff53589519199fc1846", -+ "171e59c89024b148534f1b", -+ "23c82ae839bf5380a55acf", -+ "455c9131bfa1c33274be37", -+ "4bacbc68650c41520d312c", -+ "1c35e13f8ffb7c470fa61c", -+ "6b4728ee168cd23e2fe47c", -+ "22e321253c3e0fb875c4df", -+ "6077a88144957827c07205", -+ "4309c1c59a581af63d922d", -+ "1b1ca5d6c688c4cf99448d", -+ "31a504d1dcc251075e4436", -+ "223160cdd1bfa322ca3e6c", -+ "3601174a7dc823bf4dc3a6", -+ "6da3828f2d4926651f7a27", -+ "7de4927696bdd6d3b718", -+ "7bb4f9d707b4ee3a20e779", -+ "343dad4f059acb87d3b0e2", -+ "4e501beb4617be0f02deb4", -+ "3943e926fbe3d426004ea9", -+ "4b35e35e82bffb49d0d830", -+ "6520599b30ba3568ad0f09", -+ "2a48d89ce122dfa7deba2f", -+ "19b666810d736e639b51f2", -+ "1ccd174e9aa4e58e7414bc", -+ "475e84f70334cc0bc8292", -+ "393fe0be8f011593a7e1ef", -+ "17276a59aa9630c1141c17", -+ "7d0578a8908ba294259bd", -+ "4a9e2e5d8ad0e2e82aa7de", -+ "63e0dbdfb13b4fbb46f00c", -+ "310e395e429c4494a5f850", -+ "7cc0116bd0bc164835ee72", -+ "634478b621f7f0a455c48c", -+ "397f144a181805e1a097c9", -+ "53016aa1427381b9f28ea5", -+ "76c2f0ba37187112ee4d4d", -+ "2bee268df09cc40864a917", -+ "7851b3168b92e5daed021f", -+ "149e6a0b6c6543ae895e07", -+ "1dd1b432dc809fe4c879b3", -+ "2ad2546b270547fc24541b", -+ "2015aa6fc7e48fa3bc5ab5", -+ "38596ed050f14596adc07f", -+ "1d2b9ca2f44294070d4e86", -+ "3778fd3a46ffde4755b6ce", -+ "74bb588b5553c2b2d4ac78", -+ "3d1155c4a53835d991a0f", -+ "35865b2ca16d3453781f41", -+ "6ba1300374acd487b23577", -+ "3f68fa1a9ab7772758d0ba", -+ "30a3461d63ca9807464dd6", -+ "552aca5af025ea1e84aadb", -+ "32aafc640e8c99bda8faa7", -+ "2fb170a11f1aecdf586d25", -+ "751e9eb348bc8239d6e118", -+ "7fc2bcc524b4326eb8303d", -+ "1cc2526113f2bae9b540c1", -+ "6a437e22c95fc6c6a4449d", -+ "df261ad3b5157a525bb81", -+ "690aa96130f8c533d77ce4", -+ "2f58f2df794a35875efc99", -+ "19772e34181f57b670bf9", -+ "60617400353c1eb8e8832b", -+ "7136b3dd116ed121aab68", -+ "4c95bed884bd87ec1d5e70", -+ "68fa3ecc3845db5d523ad9", -+ "4818e9ef0ea7625cfc3d0", -+ "27ec8c6636679988dd1267", -+ "57d88b5e0b434eb1a0dc08", -+ "47a1f466100bf70dd5689", -+ "55afbc51e7c2cc748942ac", -+ "75066462fdbbc7301e209b", -+ "72b5d8f8e65cb7509a93d8", -+ "38d9d05f9463a537f470b2", -+ "2f39a2788d5c2a24e16acc", -+ "5f4e7c70ff55ff2f888f05", -+ "735cfad9acf49090fb7037", -+ "6a716dae106b9aeff2133e", -+ "1c90fea5f39d8ac4dfc2a3", -+ "3a8c5a9525f5d62cea294d", -+ "498104aa12355244a9b0d6", -+ "414e761d40341e7f97c304", -+ "16d5205447831696c5d6a0", -+ "3cb5a124ce563c3967dbc3", -+ "899b1ac6f72ffff8aedfc", -+ "34eea7a66e8ff3dcc8988e", -+ "5f80095f2580ec4cf13b51", -+ "4d7566cd294f75be6620f3", -+ "506d84c9f4d4bc400fdd25", -+ "5a8a9b5c659b71e837ea18", -+ "c16d15fea9d61c8df5121", -+ "3a7a488015e75feec809f8", -+ "6fe27c77d57e2feb8cbcbf", -+ "452231c3bcde7b7b5b0af8", -+ "760f3656c1130b21d369d9", -+ "39a0c4e1da321f1bc126f4", -+ "3315173915ca23d8c1b814", -+ "1cec8c96472b84936bbc22", -+ "3c70a3f0e9c5b206031a33", -+ "7cec29d14a0eefb222bde7", -+ "760df490123f6613b0a970", -+ "5bf795c6d548a19b6ac340", -+ "5569560418e73ff9db709" }; - - #endif /* __PARAMS_H__ */ -- -diff --git a/third_party/prio/prio/poly.h b/third_party/prio/prio/poly.h ---- a/third_party/prio/prio/poly.h -+++ b/third_party/prio/prio/poly.h -@@ -1,9 +1,9 @@ - /* - * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -+ * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - - #ifndef _FFT__H -@@ -21,39 +21,36 @@ - * of two and must be no longer than the number of precomputed - * roots in the PrioConfig object passed in. - */ --SECStatus poly_fft(MPArray points_out, const_MPArray points_in, -- const_PrioConfig cfg, bool invert); -+SECStatus poly_fft(MPArray points_out, const_MPArray points_in, -+ const_PrioConfig cfg, bool invert); - --/* -+/* - * Get an array -- * (r^0, r^1, r^2, ... ) -+ * (r^0, r^1, r^2, ... ) - * where r is an n-th root of unity, for n a power of two - * less than cfg->n_roots. - * -- * Do NOT mp_clear() the mp_ints stored in roots_out. -+ * Do NOT mp_clear() the mp_ints stored in roots_out. - * These are owned by the PrioConfig object. - */ --SECStatus poly_fft_get_roots (mp_int *roots_out, int n_points, -- const_PrioConfig cfg, bool invert); -- -- -+SECStatus poly_fft_get_roots(mp_int* roots_out, int n_points, -+ const_PrioConfig cfg, bool invert); - - /* - * Evaluate the polynomial specified by the coefficients - * at the point `eval_at` and return the result as `value`. - */ --SECStatus poly_eval (mp_int *value, const_MPArray coeffs, -- const mp_int *eval_at, const_PrioConfig cfg); -- -+SECStatus poly_eval(mp_int* value, const_MPArray coeffs, const mp_int* eval_at, -+ const_PrioConfig cfg); - - /* -- * Interpolate the polynomial through the points -+ * Interpolate the polynomial through the points - * (x_1, y_1), ..., (x_N, y_N), - * where x_i is an N-th root of unity and the y_i values are -- * specified by `poly_points`. Evaluate the resulting polynomial -+ * specified by `poly_points`. Evaluate the resulting polynomial - * at the point `eval_at`. Return the result as `value`. - */ --SECStatus poly_interp_evaluate (mp_int *value, const_MPArray poly_points, -- const mp_int *eval_at, const_PrioConfig cfg); -+SECStatus poly_interp_evaluate(mp_int* value, const_MPArray poly_points, -+ const mp_int* eval_at, const_PrioConfig cfg); - - #endif -diff --git a/third_party/prio/prio/poly.c b/third_party/prio/prio/poly.c ---- a/third_party/prio/prio/poly.c -+++ b/third_party/prio/prio/poly.c -@@ -1,9 +1,9 @@ - /* - * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -+ * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - - #include -@@ -16,109 +16,110 @@ - * A nice exposition of the recursive FFT/DFT algorithm we implement - * is in the book: - * -- * "Modern Computer Algebra" -- * by Von zur Gathen and Gerhard. -+ * "Modern Computer Algebra" -+ * by Von zur Gathen and Gerhard. - * Cambridge University Press, 2013. - * - * They present this algorithm as Algorithm 8.14. - */ - static SECStatus --fft_recurse (mp_int *out, const mp_int *mod, int n, -- const mp_int *roots, const mp_int *ys, -- mp_int *tmp, mp_int *ySub, mp_int *rootsSub) -+fft_recurse(mp_int* out, const mp_int* mod, int n, const mp_int* roots, -+ const mp_int* ys, mp_int* tmp, mp_int* ySub, mp_int* rootsSub) - { - if (n == 1) { -- MP_CHECK (mp_copy (&ys[0], &out[0])); -+ MP_CHECK(mp_copy(&ys[0], &out[0])); - return SECSuccess; - } - -- // Recurse on the first half -- for (int i=0; i cfg->n_roots) -+ if (n_points > cfg->n_roots) - return SECFailure; -- const mp_int *roots_in = invert ? cfg->rootsInv->data : cfg->roots->data; -+ const mp_int* roots_in = invert ? cfg->rootsInv->data : cfg->roots->data; - const int step_size = cfg->n_roots / n_points; - -- for (int i=0; i < n_points; i++) { -+ for (int i = 0; i < n_points; i++) { - roots_out[i] = roots_in[i * step_size]; - } - -@@ -126,63 +127,62 @@ - } - - SECStatus --poly_fft (MPArray points_out, const_MPArray points_in, -- const_PrioConfig cfg, bool invert) -+poly_fft(MPArray points_out, const_MPArray points_in, const_PrioConfig cfg, -+ bool invert) - { - SECStatus rv = SECSuccess; - const int n_points = points_in->len; - if (points_out->len != points_in->len) - return SECFailure; -- if (n_points > cfg->n_roots) -+ if (n_points > cfg->n_roots) - return SECFailure; -- if (cfg->n_roots % n_points != 0) -+ if (cfg->n_roots % n_points != 0) - return SECFailure; - - mp_int scaled_roots[n_points]; -- P_CHECK (poly_fft_get_roots (scaled_roots, n_points, cfg, invert)); -+ P_CHECK(poly_fft_get_roots(scaled_roots, n_points, cfg, invert)); - -- MP_CHECK (fft_interpolate_raw (points_out->data, points_in->data, n_points, -- scaled_roots, &cfg->modulus, invert)); -+ MP_CHECK(fft_interpolate_raw(points_out->data, points_in->data, n_points, -+ scaled_roots, &cfg->modulus, invert)); - - return SECSuccess; - } - -- --SECStatus --poly_eval (mp_int *value, const_MPArray coeffs, const mp_int *eval_at, -- const_PrioConfig cfg) --{ -+SECStatus -+poly_eval(mp_int* value, const_MPArray coeffs, const mp_int* eval_at, -+ const_PrioConfig cfg) -+{ - SECStatus rv = SECSuccess; - const int n = coeffs->len; - - // Use Horner's method to evaluate the polynomial at the point - // `eval_at` -- mp_copy (&coeffs->data[n-1], value); -- for (int i=n-2; i >= 0; i--) { -- MP_CHECK (mp_mulmod (value, eval_at, &cfg->modulus, value)); -- MP_CHECK (mp_addmod (value, &coeffs->data[i], &cfg->modulus, value)); -+ mp_copy(&coeffs->data[n - 1], value); -+ for (int i = n - 2; i >= 0; i--) { -+ MP_CHECK(mp_mulmod(value, eval_at, &cfg->modulus, value)); -+ MP_CHECK(mp_addmod(value, &coeffs->data[i], &cfg->modulus, value)); - } - - return rv; - } - - SECStatus --poly_interp_evaluate (mp_int *value, const_MPArray poly_points, -- const mp_int *eval_at, const_PrioConfig cfg) -+poly_interp_evaluate(mp_int* value, const_MPArray poly_points, -+ const mp_int* eval_at, const_PrioConfig cfg) - { - SECStatus rv; - MPArray coeffs = NULL; - const int N = poly_points->len; - mp_int roots[N]; -- -- P_CHECKA (coeffs = MPArray_new (N)); -- P_CHECKC (poly_fft_get_roots (roots, N, cfg, false)); -+ -+ P_CHECKA(coeffs = MPArray_new(N)); -+ P_CHECKC(poly_fft_get_roots(roots, N, cfg, false)); - - // Interpolate polynomial through roots of unity -- P_CHECKC (poly_fft (coeffs, poly_points, cfg, true)) -- P_CHECKC (poly_eval (value, coeffs, eval_at, cfg)); -+ P_CHECKC(poly_fft(coeffs, poly_points, cfg, true)) -+ P_CHECKC(poly_eval(value, coeffs, eval_at, cfg)); - - cleanup: -- MPArray_clear (coeffs); -+ MPArray_clear(coeffs); - return rv; - } -diff --git a/third_party/prio/prio/prg.h b/third_party/prio/prio/prg.h ---- a/third_party/prio/prio/prg.h -+++ b/third_party/prio/prio/prg.h -@@ -1,62 +1,60 @@ - /* - * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -+ * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - - #ifndef __PRG_H__ - #define __PRG_H__ - -+#include - #include --#include - #include - - #include "config.h" - --typedef struct prg *PRG; --typedef const struct prg *const_PRG; -+typedef struct prg* PRG; -+typedef const struct prg* const_PRG; - --/* -+/* - * Initialize or destroy a pseudo-random generator. - */ --PRG PRG_new (const PrioPRGSeed key); --void PRG_clear (PRG prg); -+PRG PRG_new(const PrioPRGSeed key); -+void PRG_clear(PRG prg); - --/* -+/* - * Produce the next bytes of output from the PRG. - */ --SECStatus PRG_get_bytes (PRG prg, unsigned char *bytes, size_t len); -+SECStatus PRG_get_bytes(PRG prg, unsigned char* bytes, size_t len); - - /* - * Use the PRG output to sample a big integer x in the range - * 0 <= x < max. - */ --SECStatus PRG_get_int (PRG prg, mp_int *out, const mp_int *max); -+SECStatus PRG_get_int(PRG prg, mp_int* out, const mp_int* max); - - /* - * Use secret sharing to split the int src into two shares. - * Use PRG to generate the value `shareB`. - * The mp_ints must be initialized. - */ --SECStatus PRG_share_int (PRG prg, mp_int *shareA, const mp_int *src, -- const_PrioConfig cfg); -+SECStatus PRG_share_int(PRG prg, mp_int* shareA, const mp_int* src, -+ const_PrioConfig cfg); - --/* -+/* - * Set each item in the array to a pseudorandom value in the range - * [0, mod), where the values are generated using the PRG. - */ --SECStatus PRG_get_array (PRG prg, MPArray arr, const mp_int *mod); -+SECStatus PRG_get_array(PRG prg, MPArray arr, const mp_int* mod); - --/* -+/* - * Secret shares the array in `src` into `arrA` using randomness - * provided by `prgB`. The arrays `src` and `arrA` must be the same - * length. - */ --SECStatus PRG_share_array (PRG prgB, MPArray arrA, -- const_MPArray src, const_PrioConfig cfg); -- -+SECStatus PRG_share_array(PRG prgB, MPArray arrA, const_MPArray src, -+ const_PrioConfig cfg); - - #endif /* __PRG_H__ */ -- -diff --git a/third_party/prio/prio/prg.c b/third_party/prio/prio/prg.c ---- a/third_party/prio/prio/prg.c -+++ b/third_party/prio/prio/prg.c -@@ -1,14 +1,14 @@ - /* - * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -+ * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -+#include - #include --#include --#include -+#include - #include - - #include "prg.h" -@@ -16,23 +16,25 @@ - #include "share.h" - #include "util.h" - --struct prg { -- PK11SlotInfo *slot; -- PK11SymKey *key; -- PK11Context *ctx; -+struct prg -+{ -+ PK11SlotInfo* slot; -+ PK11SymKey* key; -+ PK11Context* ctx; - }; - --SECStatus --PrioPRGSeed_randomize (PrioPRGSeed *key) -+SECStatus -+PrioPRGSeed_randomize(PrioPRGSeed* key) - { -- return rand_bytes ((unsigned char *)key, PRG_SEED_LENGTH); -+ return rand_bytes((unsigned char*)key, PRG_SEED_LENGTH); - } - --PRG --PRG_new (const PrioPRGSeed key_in) -+PRG -+PRG_new(const PrioPRGSeed key_in) - { -- PRG prg = malloc (sizeof (struct prg)); -- if (!prg) return NULL; -+ PRG prg = malloc(sizeof(struct prg)); -+ if (!prg) -+ return NULL; - prg->slot = NULL; - prg->key = NULL; - prg->ctx = NULL; -@@ -40,106 +42,104 @@ - SECStatus rv = SECSuccess; - const CK_MECHANISM_TYPE cipher = CKM_AES_CTR; - -- P_CHECKA (prg->slot = PK11_GetInternalSlot ()); -+ P_CHECKA(prg->slot = PK11_GetInternalSlot()); - - // Create a mutable copy of the key. - PrioPRGSeed key_mut; -- memcpy (key_mut, key_in, PRG_SEED_LENGTH); -+ memcpy(key_mut, key_in, PRG_SEED_LENGTH); - -- SECItem keyItem = {siBuffer, key_mut, PRG_SEED_LENGTH}; -+ SECItem keyItem = { siBuffer, key_mut, PRG_SEED_LENGTH }; - - // The IV can be all zeros since we only encrypt once with - // each AES key. -- CK_AES_CTR_PARAMS param = {128, {}}; -- SECItem paramItem = {siBuffer, (void *)¶m, sizeof(CK_AES_CTR_PARAMS)}; -+ CK_AES_CTR_PARAMS param = { 128, {} }; -+ SECItem paramItem = { siBuffer, (void*)¶m, sizeof(CK_AES_CTR_PARAMS) }; - -- P_CHECKA (prg->key = PK11_ImportSymKey (prg->slot, cipher, PK11_OriginUnwrap, -- CKA_ENCRYPT, &keyItem, NULL)); -+ P_CHECKA(prg->key = PK11_ImportSymKey(prg->slot, cipher, PK11_OriginUnwrap, -+ CKA_ENCRYPT, &keyItem, NULL)); - -- P_CHECKA (prg->ctx = PK11_CreateContextBySymKey(cipher, CKA_ENCRYPT, -- prg->key, ¶mItem)); -+ P_CHECKA(prg->ctx = PK11_CreateContextBySymKey(cipher, CKA_ENCRYPT, prg->key, -+ ¶mItem)); - - cleanup: - if (rv != SECSuccess) { -- PRG_clear (prg); -+ PRG_clear(prg); - prg = NULL; - } - - return prg; - } - -- --void --PRG_clear (PRG prg) -+void -+PRG_clear(PRG prg) - { -- if (!prg) return; -+ if (!prg) -+ return; - - if (prg->key) -- PK11_FreeSymKey (prg->key); -+ PK11_FreeSymKey(prg->key); - if (prg->slot) -- PK11_FreeSlot (prg->slot); -+ PK11_FreeSlot(prg->slot); - if (prg->ctx) -- PK11_DestroyContext (prg->ctx, PR_TRUE); -+ PK11_DestroyContext(prg->ctx, PR_TRUE); - -- free (prg); -+ free(prg); - } - --static SECStatus --PRG_get_bytes_internal (void *prg_vp, unsigned char *bytes, size_t len) -+static SECStatus -+PRG_get_bytes_internal(void* prg_vp, unsigned char* bytes, size_t len) - { - PRG prg = (PRG)prg_vp; - - unsigned char in[len]; -- memset (in, 0, len); -+ memset(in, 0, len); - - int outlen; -- SECStatus rv = PK11_CipherOp (prg->ctx, bytes, &outlen, len, in, len); -- return (rv != SECSuccess || (size_t)outlen != len) ? SECFailure: SECSuccess; --} -- --SECStatus --PRG_get_bytes (PRG prg, unsigned char *bytes, size_t len) --{ -- return PRG_get_bytes_internal ((void *)prg, bytes, len); --} -- --SECStatus --PRG_get_int (PRG prg, mp_int *out, const mp_int *max) --{ -- return rand_int_rng (out, max, &PRG_get_bytes_internal, (void *)prg); -+ SECStatus rv = PK11_CipherOp(prg->ctx, bytes, &outlen, len, in, len); -+ return (rv != SECSuccess || (size_t)outlen != len) ? SECFailure : SECSuccess; - } - - SECStatus --PRG_get_array (PRG prg, MPArray dst, const mp_int *mod) -+PRG_get_bytes(PRG prg, unsigned char* bytes, size_t len) -+{ -+ return PRG_get_bytes_internal((void*)prg, bytes, len); -+} -+ -+SECStatus -+PRG_get_int(PRG prg, mp_int* out, const mp_int* max) -+{ -+ return rand_int_rng(out, max, &PRG_get_bytes_internal, (void*)prg); -+} -+ -+SECStatus -+PRG_get_array(PRG prg, MPArray dst, const mp_int* mod) - { - SECStatus rv; -- for (int i=0; ilen; i++) { -- P_CHECK (PRG_get_int (prg, &dst->data[i], mod)); -+ for (int i = 0; i < dst->len; i++) { -+ P_CHECK(PRG_get_int(prg, &dst->data[i], mod)); - } - - return SECSuccess; - } - - SECStatus --PRG_share_int (PRG prgB, mp_int *shareA, const mp_int *src, const_PrioConfig cfg) -+PRG_share_int(PRG prgB, mp_int* shareA, const mp_int* src, const_PrioConfig cfg) - { - SECStatus rv = SECSuccess; - mp_int tmp; -- MP_DIGITS (&tmp) = NULL; -+ MP_DIGITS(&tmp) = NULL; - -- MP_CHECKC (mp_init (&tmp)); -- P_CHECKC (PRG_get_int (prgB, &tmp, &cfg->modulus)); -- MP_CHECKC (mp_submod (src, &tmp, &cfg->modulus, shareA)); -+ MP_CHECKC(mp_init(&tmp)); -+ P_CHECKC(PRG_get_int(prgB, &tmp, &cfg->modulus)); -+ MP_CHECKC(mp_submod(src, &tmp, &cfg->modulus, shareA)); - - cleanup: -- mp_clear (&tmp); -+ mp_clear(&tmp); - return rv; - } - -- --SECStatus --PRG_share_array (PRG prgB, MPArray arrA, -- const_MPArray src, const_PrioConfig cfg) -+SECStatus -+PRG_share_array(PRG prgB, MPArray arrA, const_MPArray src, const_PrioConfig cfg) - { - SECStatus rv = SECSuccess; - if (arrA->len != src->len) -@@ -147,10 +147,9 @@ - - const int len = src->len; - -- for (int i=0; i < len; i++) { -- P_CHECK(PRG_share_int (prgB, &arrA->data[i], &src->data[i], cfg)); -+ for (int i = 0; i < len; i++) { -+ P_CHECK(PRG_share_int(prgB, &arrA->data[i], &src->data[i], cfg)); - } - - return rv; -- - } -diff --git a/third_party/prio/prio/rand.h b/third_party/prio/prio/rand.h ---- a/third_party/prio/prio/rand.h -+++ b/third_party/prio/prio/rand.h -@@ -1,43 +1,44 @@ - /* - * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -+ * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - - #ifndef __RAND_H__ - #define __RAND_H__ - - #include --#include -+#include - #include - - /* - * Typedef for function pointer. A function pointer of type RandBytesFunc - * points to a function that fills the buffer `out` of with `len` random bytes. - */ --typedef SECStatus (*RandBytesFunc) (void *user_data, unsigned char *out, size_t len); -+typedef SECStatus (*RandBytesFunc)(void* user_data, unsigned char* out, -+ size_t len); - --/* -+/* - * Initialize or cleanup the global random number generator - * state that NSS uses. - */ --SECStatus rand_init (void); --void rand_clear (void); -+SECStatus rand_init(void); -+void rand_clear(void); - --/* -+/* - * Generate the specified number of random bytes using the - * NSS random number generator. -- */ --SECStatus rand_bytes (unsigned char *out, size_t n_bytes); -+ */ -+SECStatus rand_bytes(unsigned char* out, size_t n_bytes); - - /* - * Generate a random number x such that - * 0 <= x < max - * using the NSS random number generator. - */ --SECStatus rand_int (mp_int *out, const mp_int *max); -+SECStatus rand_int(mp_int* out, const mp_int* max); - - /* - * Generate a random number x such that -@@ -47,8 +48,7 @@ - * The pointer user_data is passed to RandBytesFung `rng` as a first - * argument. - */ --SECStatus rand_int_rng (mp_int *out, const mp_int *max, -- RandBytesFunc rng, void *user_data); -+SECStatus rand_int_rng(mp_int* out, const mp_int* max, RandBytesFunc rng, -+ void* user_data); - - #endif /* __RAND_H__ */ -- -diff --git a/third_party/prio/prio/rand.c b/third_party/prio/prio/rand.c ---- a/third_party/prio/prio/rand.c -+++ b/third_party/prio/prio/rand.c -@@ -1,16 +1,16 @@ - /* - * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -+ * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - - #include - #include --#include --#include --#include -+#include -+#include -+#include - - #include "debug.h" - #include "rand.h" -@@ -18,44 +18,41 @@ - - #define CHUNK_SIZE 8192 - --static NSSInitContext *prioGlobalContext = NULL; -+static NSSInitContext* prioGlobalContext = NULL; - - SECStatus --rand_init (void) -+rand_init(void) - { -- if (prioGlobalContext) -+ if (prioGlobalContext) - return SECSuccess; - -- prioGlobalContext = NSS_InitContext ("", "", "", "", NULL, -- NSS_INIT_READONLY | -- NSS_INIT_NOCERTDB | -- NSS_INIT_NOMODDB | -- NSS_INIT_FORCEOPEN | -- NSS_INIT_NOROOTINIT); -+ prioGlobalContext = -+ NSS_InitContext("", "", "", "", NULL, -+ NSS_INIT_READONLY | NSS_INIT_NOCERTDB | NSS_INIT_NOMODDB | -+ NSS_INIT_FORCEOPEN | NSS_INIT_NOROOTINIT); - - return (prioGlobalContext != NULL) ? SECSuccess : SECFailure; - } - --static SECStatus --rand_bytes_internal (void *user_data, unsigned char *out, size_t n_bytes) -+static SECStatus -+rand_bytes_internal(void* user_data, unsigned char* out, size_t n_bytes) - { - // No pointer should ever be passed in. - if (user_data != NULL) - return SECFailure; -- if (!NSS_IsInitialized ()) { -- PRIO_DEBUG ("NSS not initialized. Call rand_init() first."); -+ if (!NSS_IsInitialized()) { -+ PRIO_DEBUG("NSS not initialized. Call rand_init() first."); - return SECFailure; - } - - SECStatus rv = SECFailure; - - int to_go = n_bytes; -- unsigned char *cp = out; -+ unsigned char* cp = out; - while (to_go) { -- int to_gen = MIN (CHUNK_SIZE, to_go); -- if ((rv = PK11_GenerateRandom (cp, to_gen)) != SECSuccess) -- { -- PRIO_DEBUG ("Error calling PK11_GenerateRandom"); -+ int to_gen = MIN(CHUNK_SIZE, to_go); -+ if ((rv = PK11_GenerateRandom(cp, to_gen)) != SECSuccess) { -+ PRIO_DEBUG("Error calling PK11_GenerateRandom"); - return SECFailure; - } - -@@ -66,67 +63,67 @@ - return rv; - } - --SECStatus --rand_bytes (unsigned char *out, size_t n_bytes) -+SECStatus -+rand_bytes(unsigned char* out, size_t n_bytes) - { -- return rand_bytes_internal (NULL, out, n_bytes); -+ return rand_bytes_internal(NULL, out, n_bytes); - } - - SECStatus --rand_int (mp_int *out, const mp_int *max) -+rand_int(mp_int* out, const mp_int* max) - { -- return rand_int_rng (out, max, &rand_bytes_internal, NULL); -+ return rand_int_rng(out, max, &rand_bytes_internal, NULL); - } - - SECStatus --rand_int_rng (mp_int *out, const mp_int *max, -- RandBytesFunc rng_func, void *user_data) -+rand_int_rng(mp_int* out, const mp_int* max, RandBytesFunc rng_func, -+ void* user_data) - { - SECStatus rv = SECSuccess; - - // Ensure max value is > 0 -- if (mp_cmp_z (max) == 0) -+ if (mp_cmp_z(max) == 0) - return SECFailure; - - // Compute max-1, which tells us the largest - // value we will ever need to generate. -- MP_CHECK (mp_sub_d (max, 1, out)); -+ MP_CHECK(mp_sub_d(max, 1, out)); - -- const int nbytes = mp_unsigned_octet_size (out); -+ const int nbytes = mp_unsigned_octet_size(out); - -- // Figure out how many MSBs we need to get in the -- // most-significant byte. -+ // Figure out how many MSBs we need to get in the -+ // most-significant byte. - unsigned char max_bytes[nbytes]; -- MP_CHECK (mp_to_fixlen_octets (out, max_bytes, nbytes)); -- const unsigned char mask = msb_mask (max_bytes[0]); -+ MP_CHECK(mp_to_fixlen_octets(out, max_bytes, nbytes)); -+ const unsigned char mask = msb_mask(max_bytes[0]); - - // Buffer to store the pseudo-random bytes - unsigned char buf[nbytes]; - - do { - // Use rejection sampling to find a value strictly less than max. -- P_CHECK (rng_func (user_data, buf, nbytes)); -+ P_CHECK(rng_func(user_data, buf, nbytes)); - - // Mask off high-order bits that we will never need. -- P_CHECK (rng_func (user_data, &buf[0], 1)); -- if (mask) buf[0] &= mask; -+ P_CHECK(rng_func(user_data, &buf[0], 1)); -+ if (mask) -+ buf[0] &= mask; - -- MP_CHECK (mp_read_unsigned_octets (out, buf, nbytes)); -- } while (mp_cmp (out, max) != -1); -+ MP_CHECK(mp_read_unsigned_octets(out, buf, nbytes)); -+ } while (mp_cmp(out, max) != -1); - - return 0; - } - - void --rand_clear (void) -+rand_clear(void) - { - if (prioGlobalContext) { -- NSS_ShutdownContext (prioGlobalContext); -+ NSS_ShutdownContext(prioGlobalContext); - #ifdef DO_PR_CLEANUP -- PR_Cleanup (); --#endif -+ PR_Cleanup(); -+#endif - } - - prioGlobalContext = NULL; - } -- -diff --git a/third_party/prio/prio/serial.h b/third_party/prio/prio/serial.h ---- a/third_party/prio/prio/serial.h -+++ b/third_party/prio/prio/serial.h -@@ -1,9 +1,9 @@ - /* - * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -+ * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - - #ifndef __SERIAL_H__ -@@ -11,11 +11,11 @@ - - #include - --SECStatus serial_write_packet_client (msgpack_packer *pk, const_PrioPacketClient p, -- const_PrioConfig cfg); -+SECStatus serial_write_packet_client(msgpack_packer* pk, -+ const_PrioPacketClient p, -+ const_PrioConfig cfg); - --SECStatus serial_read_packet_client (msgpack_unpacker *upk, PrioPacketClient p, -- const_PrioConfig cfg); -+SECStatus serial_read_packet_client(msgpack_unpacker* upk, PrioPacketClient p, -+ const_PrioConfig cfg); - - #endif /* __SERIAL_H__ */ -- -diff --git a/third_party/prio/prio/serial.c b/third_party/prio/prio/serial.c ---- a/third_party/prio/prio/serial.c -+++ b/third_party/prio/prio/serial.c -@@ -1,9 +1,9 @@ - /* - * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -+ * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - - #include -@@ -17,277 +17,277 @@ - - #define MSGPACK_OK 0 - --static SECStatus --serial_write_mp_int (msgpack_packer *pk, const mp_int *n) -+static SECStatus -+serial_write_mp_int(msgpack_packer* pk, const mp_int* n) - { - SECStatus rv = SECSuccess; -- unsigned int n_size = mp_unsigned_octet_size (n); -+ unsigned int n_size = mp_unsigned_octet_size(n); - - unsigned char data[n_size]; -- MP_CHECK (mp_to_fixlen_octets (n, data, n_size)); -+ MP_CHECK(mp_to_fixlen_octets(n, data, n_size)); - -- P_CHECK (msgpack_pack_str (pk, n_size)); -- P_CHECK (msgpack_pack_str_body (pk, data, n_size)); -+ P_CHECK(msgpack_pack_str(pk, n_size)); -+ P_CHECK(msgpack_pack_str_body(pk, data, n_size)); - return rv; - } - - static SECStatus --object_to_mp_int (msgpack_object *obj, mp_int *n, const mp_int *max) -+object_to_mp_int(msgpack_object* obj, mp_int* n, const mp_int* max) - { - SECStatus rv = SECSuccess; -- P_CHECKCB (obj != NULL); -- P_CHECKCB (obj->type == MSGPACK_OBJECT_STR); -- P_CHECKCB (n != NULL); -+ P_CHECKCB(obj != NULL); -+ P_CHECKCB(obj->type == MSGPACK_OBJECT_STR); -+ P_CHECKCB(n != NULL); - - msgpack_object_str s = obj->via.str; -- P_CHECKCB (s.ptr != NULL); -- MP_CHECKC (mp_read_unsigned_octets (n, (unsigned char *)s.ptr, s.size)); -+ P_CHECKCB(s.ptr != NULL); -+ MP_CHECKC(mp_read_unsigned_octets(n, (unsigned char*)s.ptr, s.size)); - -- P_CHECKCB (mp_cmp_z (n) >= 0); -- P_CHECKCB (mp_cmp (n, max) < 0); -+ P_CHECKCB(mp_cmp_z(n) >= 0); -+ P_CHECKCB(mp_cmp(n, max) < 0); - - cleanup: - return rv; - } - --static SECStatus --serial_read_mp_int (msgpack_unpacker *upk, mp_int *n, const mp_int *max) -+static SECStatus -+serial_read_mp_int(msgpack_unpacker* upk, mp_int* n, const mp_int* max) - { - SECStatus rv = SECSuccess; -- P_CHECKCB (upk != NULL); -- P_CHECKCB (n != NULL); -- P_CHECKCB (max != NULL); -+ P_CHECKCB(upk != NULL); -+ P_CHECKCB(n != NULL); -+ P_CHECKCB(max != NULL); - - msgpack_unpacked res; -- msgpack_unpacked_init (&res); -- UP_CHECK (msgpack_unpacker_next (upk, &res)) -+ msgpack_unpacked_init(&res); -+ UP_CHECK(msgpack_unpacker_next(upk, &res)) - - msgpack_object obj = res.data; -- P_CHECKC (object_to_mp_int (&obj, n, max)); -+ P_CHECKC(object_to_mp_int(&obj, n, max)); - - cleanup: -- msgpack_unpacked_destroy (&res); -+ msgpack_unpacked_destroy(&res); - - return rv; - } - --static SECStatus --serial_read_int (msgpack_unpacker *upk, int *n) -+static SECStatus -+serial_read_int(msgpack_unpacker* upk, int* n) - { - SECStatus rv = SECSuccess; -- P_CHECKCB (upk != NULL); -- P_CHECKCB (n != NULL); -+ P_CHECKCB(upk != NULL); -+ P_CHECKCB(n != NULL); - - msgpack_unpacked res; -- msgpack_unpacked_init (&res); -- UP_CHECK (msgpack_unpacker_next (upk, &res)) -+ msgpack_unpacked_init(&res); -+ UP_CHECK(msgpack_unpacker_next(upk, &res)) - - msgpack_object obj = res.data; -- P_CHECKCB (obj.type == MSGPACK_OBJECT_POSITIVE_INTEGER); -+ P_CHECKCB(obj.type == MSGPACK_OBJECT_POSITIVE_INTEGER); - - *n = obj.via.i64; - - cleanup: -- msgpack_unpacked_destroy (&res); -+ msgpack_unpacked_destroy(&res); - - return rv; - } - --static SECStatus --serial_write_mp_array (msgpack_packer *pk, const_MPArray arr) -+static SECStatus -+serial_write_mp_array(msgpack_packer* pk, const_MPArray arr) - { - SECStatus rv = SECSuccess; -- P_CHECKCB (pk != NULL); -- P_CHECKCB (arr != NULL); -+ P_CHECKCB(pk != NULL); -+ P_CHECKCB(arr != NULL); - -- P_CHECK (msgpack_pack_array (pk, arr->len)); -+ P_CHECK(msgpack_pack_array(pk, arr->len)); - for (int i = 0; i < arr->len; i++) { -- P_CHECK (serial_write_mp_int (pk, &arr->data[i])); -+ P_CHECK(serial_write_mp_int(pk, &arr->data[i])); - } - - cleanup: - return rv; - } - --static SECStatus --serial_read_mp_array (msgpack_unpacker *upk, MPArray arr, size_t len, const mp_int -- *max) -+static SECStatus -+serial_read_mp_array(msgpack_unpacker* upk, MPArray arr, size_t len, -+ const mp_int* max) - { - SECStatus rv = SECSuccess; -- P_CHECKCB (upk != NULL); -- P_CHECKCB (arr != NULL); -- P_CHECKCB (max != NULL); -+ P_CHECKCB(upk != NULL); -+ P_CHECKCB(arr != NULL); -+ P_CHECKCB(max != NULL); - - msgpack_unpacked res; -- msgpack_unpacked_init (&res); -- UP_CHECK (msgpack_unpacker_next (upk, &res)) -+ msgpack_unpacked_init(&res); -+ UP_CHECK(msgpack_unpacker_next(upk, &res)) - - msgpack_object obj = res.data; -- P_CHECKCB (obj.type == MSGPACK_OBJECT_ARRAY); -+ P_CHECKCB(obj.type == MSGPACK_OBJECT_ARRAY); - - msgpack_object_array objarr = obj.via.array; -- P_CHECKCB (objarr.size == len); -+ P_CHECKCB(objarr.size == len); - -- P_CHECKC (MPArray_resize (arr, len)); -- for (unsigned int i=0; idata[i], max)); -+ P_CHECKC(MPArray_resize(arr, len)); -+ for (unsigned int i = 0; i < len; i++) { -+ P_CHECKC(object_to_mp_int(&objarr.ptr[i], &arr->data[i], max)); - } - - cleanup: -- msgpack_unpacked_destroy (&res); -+ msgpack_unpacked_destroy(&res); - - return rv; - } - -- --static SECStatus --serial_write_beaver_triple (msgpack_packer *pk, const_BeaverTriple t) -+static SECStatus -+serial_write_beaver_triple(msgpack_packer* pk, const_BeaverTriple t) - { - SECStatus rv = SECSuccess; -- P_CHECKCB (pk != NULL); -- P_CHECKCB (t != NULL); -+ P_CHECKCB(pk != NULL); -+ P_CHECKCB(t != NULL); - -- P_CHECK (serial_write_mp_int (pk, &t->a)); -- P_CHECK (serial_write_mp_int (pk, &t->b)); -- P_CHECK (serial_write_mp_int (pk, &t->c)); -+ P_CHECK(serial_write_mp_int(pk, &t->a)); -+ P_CHECK(serial_write_mp_int(pk, &t->b)); -+ P_CHECK(serial_write_mp_int(pk, &t->c)); - - cleanup: - return rv; - } - --static SECStatus --serial_read_beaver_triple (msgpack_unpacker *pk, BeaverTriple t, const mp_int *max) -+static SECStatus -+serial_read_beaver_triple(msgpack_unpacker* pk, BeaverTriple t, -+ const mp_int* max) - { - SECStatus rv = SECSuccess; -- P_CHECKCB (pk != NULL); -- P_CHECKCB (t != NULL); -- P_CHECKCB (max != NULL); -+ P_CHECKCB(pk != NULL); -+ P_CHECKCB(t != NULL); -+ P_CHECKCB(max != NULL); - -- P_CHECK (serial_read_mp_int (pk, &t->a, max)); -- P_CHECK (serial_read_mp_int (pk, &t->b, max)); -- P_CHECK (serial_read_mp_int (pk, &t->c, max)); -+ P_CHECK(serial_read_mp_int(pk, &t->a, max)); -+ P_CHECK(serial_read_mp_int(pk, &t->b, max)); -+ P_CHECK(serial_read_mp_int(pk, &t->c, max)); - - cleanup: - return rv; - } - --static SECStatus --serial_write_server_a_data (msgpack_packer *pk, const struct server_a_data *A) -+static SECStatus -+serial_write_server_a_data(msgpack_packer* pk, const struct server_a_data* A) - { - SECStatus rv = SECSuccess; -- P_CHECKCB (pk != NULL); -- P_CHECKCB (A != NULL); -+ P_CHECKCB(pk != NULL); -+ P_CHECKCB(A != NULL); - -- P_CHECK (serial_write_mp_array (pk, A->data_shares)); -- P_CHECK (serial_write_mp_array (pk, A->h_points)); -+ P_CHECK(serial_write_mp_array(pk, A->data_shares)); -+ P_CHECK(serial_write_mp_array(pk, A->h_points)); - cleanup: - return rv; - } - --static SECStatus --serial_read_server_a_data (msgpack_unpacker *upk, struct server_a_data *A, -- const_PrioConfig cfg) -+static SECStatus -+serial_read_server_a_data(msgpack_unpacker* upk, struct server_a_data* A, -+ const_PrioConfig cfg) - { - SECStatus rv = SECSuccess; -- P_CHECKCB (upk != NULL); -- P_CHECKCB (A != NULL); -+ P_CHECKCB(upk != NULL); -+ P_CHECKCB(A != NULL); - -- P_CHECK (serial_read_mp_array (upk, A->data_shares, cfg->num_data_fields, -- &cfg->modulus)); -- P_CHECK (serial_read_mp_array (upk, A->h_points, PrioConfig_hPoints (cfg), -- &cfg->modulus)); -+ P_CHECK(serial_read_mp_array(upk, A->data_shares, cfg->num_data_fields, -+ &cfg->modulus)); -+ P_CHECK(serial_read_mp_array(upk, A->h_points, PrioConfig_hPoints(cfg), -+ &cfg->modulus)); - - cleanup: - return rv; - } - --static SECStatus --serial_write_prg_seed (msgpack_packer *pk, const PrioPRGSeed *seed) -+static SECStatus -+serial_write_prg_seed(msgpack_packer* pk, const PrioPRGSeed* seed) - { - SECStatus rv = SECSuccess; -- P_CHECKCB (pk != NULL); -- P_CHECKCB (seed != NULL); -+ P_CHECKCB(pk != NULL); -+ P_CHECKCB(seed != NULL); - -- P_CHECK (msgpack_pack_str (pk, PRG_SEED_LENGTH)); -- P_CHECK (msgpack_pack_str_body (pk, seed, PRG_SEED_LENGTH)); -+ P_CHECK(msgpack_pack_str(pk, PRG_SEED_LENGTH)); -+ P_CHECK(msgpack_pack_str_body(pk, seed, PRG_SEED_LENGTH)); - - cleanup: - return rv; - } - --static SECStatus --serial_read_prg_seed (msgpack_unpacker *upk, PrioPRGSeed *seed) -+static SECStatus -+serial_read_prg_seed(msgpack_unpacker* upk, PrioPRGSeed* seed) - { - SECStatus rv = SECSuccess; -- P_CHECKCB (upk != NULL); -- P_CHECKCB (seed != NULL); -+ P_CHECKCB(upk != NULL); -+ P_CHECKCB(seed != NULL); - - msgpack_unpacked res; -- msgpack_unpacked_init (&res); -- UP_CHECK (msgpack_unpacker_next (upk, &res)) -+ msgpack_unpacked_init(&res); -+ UP_CHECK(msgpack_unpacker_next(upk, &res)) - - msgpack_object obj = res.data; -- P_CHECKCB (obj.type == MSGPACK_OBJECT_STR); -+ P_CHECKCB(obj.type == MSGPACK_OBJECT_STR); - - msgpack_object_str s = obj.via.str; -- P_CHECKCB (s.size == PRG_SEED_LENGTH); -- memcpy (seed, s.ptr, PRG_SEED_LENGTH); -+ P_CHECKCB(s.size == PRG_SEED_LENGTH); -+ memcpy(seed, s.ptr, PRG_SEED_LENGTH); - - cleanup: -- msgpack_unpacked_destroy (&res); -+ msgpack_unpacked_destroy(&res); - - return rv; - } - --static SECStatus --serial_write_server_b_data (msgpack_packer *pk, const struct server_b_data *B) -+static SECStatus -+serial_write_server_b_data(msgpack_packer* pk, const struct server_b_data* B) - { - SECStatus rv = SECSuccess; -- P_CHECKCB (pk != NULL); -- P_CHECKCB (B != NULL); -+ P_CHECKCB(pk != NULL); -+ P_CHECKCB(B != NULL); - -- rv = serial_write_prg_seed (pk, &B->seed); -+ rv = serial_write_prg_seed(pk, &B->seed); - cleanup: - return rv; - } - --static SECStatus --serial_read_server_b_data (msgpack_unpacker *upk, struct server_b_data *B) -+static SECStatus -+serial_read_server_b_data(msgpack_unpacker* upk, struct server_b_data* B) - { - SECStatus rv = SECSuccess; -- P_CHECKCB (upk != NULL); -- P_CHECKCB (B != NULL); -- -- rv =serial_read_prg_seed (upk, &B->seed); -+ P_CHECKCB(upk != NULL); -+ P_CHECKCB(B != NULL); -+ -+ rv = serial_read_prg_seed(upk, &B->seed); - cleanup: - return rv; - } - --SECStatus --serial_write_packet_client (msgpack_packer *pk, const_PrioPacketClient p, -- const_PrioConfig cfg) -+SECStatus -+serial_write_packet_client(msgpack_packer* pk, const_PrioPacketClient p, -+ const_PrioConfig cfg) - { - SECStatus rv = SECSuccess; -- P_CHECKCB (pk != NULL); -- P_CHECKCB (p != NULL); -+ P_CHECKCB(pk != NULL); -+ P_CHECKCB(p != NULL); - -- P_CHECK (msgpack_pack_str (pk, cfg->batch_id_len)); -- P_CHECK (msgpack_pack_str_body (pk, cfg->batch_id, cfg->batch_id_len)); -+ P_CHECK(msgpack_pack_str(pk, cfg->batch_id_len)); -+ P_CHECK(msgpack_pack_str_body(pk, cfg->batch_id, cfg->batch_id_len)); - -- P_CHECK (serial_write_beaver_triple (pk, p->triple)); -+ P_CHECK(serial_write_beaver_triple(pk, p->triple)); - -- P_CHECK (serial_write_mp_int (pk, &p->f0_share)); -- P_CHECK (serial_write_mp_int (pk, &p->g0_share)); -- P_CHECK (serial_write_mp_int (pk, &p->h0_share)); -+ P_CHECK(serial_write_mp_int(pk, &p->f0_share)); -+ P_CHECK(serial_write_mp_int(pk, &p->g0_share)); -+ P_CHECK(serial_write_mp_int(pk, &p->h0_share)); - -- P_CHECK (msgpack_pack_int (pk, p->for_server)); -+ P_CHECK(msgpack_pack_int(pk, p->for_server)); - - switch (p->for_server) { - case PRIO_SERVER_A: -- P_CHECK (serial_write_server_a_data (pk, &p->shares.A)); -+ P_CHECK(serial_write_server_a_data(pk, &p->shares.A)); - break; - case PRIO_SERVER_B: -- P_CHECK (serial_write_server_b_data (pk, &p->shares.B)); -+ P_CHECK(serial_write_server_b_data(pk, &p->shares.B)); - break; - default: - return SECFailure; -@@ -297,146 +297,144 @@ - return rv; - } - --SECStatus --serial_read_server_id (msgpack_unpacker *upk, PrioServerId *s) -+SECStatus -+serial_read_server_id(msgpack_unpacker* upk, PrioServerId* s) - { - SECStatus rv = SECSuccess; -- P_CHECKCB (upk != NULL); -- P_CHECKCB (s != NULL); -+ P_CHECKCB(upk != NULL); -+ P_CHECKCB(s != NULL); - - int serv; -- P_CHECK (serial_read_int (upk, &serv)); -- P_CHECKCB (serv == PRIO_SERVER_A || serv == PRIO_SERVER_B); -+ P_CHECK(serial_read_int(upk, &serv)); -+ P_CHECKCB(serv == PRIO_SERVER_A || serv == PRIO_SERVER_B); - *s = serv; - - cleanup: - return rv; - } - --SECStatus --serial_read_packet_client (msgpack_unpacker *upk, PrioPacketClient p, -- const_PrioConfig cfg) -+SECStatus -+serial_read_packet_client(msgpack_unpacker* upk, PrioPacketClient p, -+ const_PrioConfig cfg) - { - SECStatus rv = SECSuccess; -- P_CHECKCB (upk != NULL); -- P_CHECKCB (p != NULL); -+ P_CHECKCB(upk != NULL); -+ P_CHECKCB(p != NULL); - msgpack_unpacked res; -- msgpack_unpacked_init (&res); -- UP_CHECK (msgpack_unpacker_next (upk, &res)) -+ msgpack_unpacked_init(&res); -+ UP_CHECK(msgpack_unpacker_next(upk, &res)) - - msgpack_object obj = res.data; -- P_CHECKCB (obj.type == MSGPACK_OBJECT_STR); -+ P_CHECKCB(obj.type == MSGPACK_OBJECT_STR); - - msgpack_object_str s = obj.via.str; -- P_CHECKCB (s.size == cfg->batch_id_len); -- P_CHECKCB (!memcmp (s.ptr, (char *)cfg->batch_id, cfg->batch_id_len)); -+ P_CHECKCB(s.size == cfg->batch_id_len); -+ P_CHECKCB(!memcmp(s.ptr, (char*)cfg->batch_id, cfg->batch_id_len)); - -- P_CHECK (serial_read_beaver_triple (upk, p->triple, &cfg->modulus)); -+ P_CHECK(serial_read_beaver_triple(upk, p->triple, &cfg->modulus)); - -- P_CHECK (serial_read_mp_int (upk, &p->f0_share, &cfg->modulus)); -- P_CHECK (serial_read_mp_int (upk, &p->g0_share, &cfg->modulus)); -- P_CHECK (serial_read_mp_int (upk, &p->h0_share, &cfg->modulus)); -+ P_CHECK(serial_read_mp_int(upk, &p->f0_share, &cfg->modulus)); -+ P_CHECK(serial_read_mp_int(upk, &p->g0_share, &cfg->modulus)); -+ P_CHECK(serial_read_mp_int(upk, &p->h0_share, &cfg->modulus)); - -- P_CHECK (serial_read_server_id (upk, &p->for_server)); -+ P_CHECK(serial_read_server_id(upk, &p->for_server)); - - switch (p->for_server) { - case PRIO_SERVER_A: -- P_CHECK (serial_read_server_a_data (upk, &p->shares.A, cfg)); -+ P_CHECK(serial_read_server_a_data(upk, &p->shares.A, cfg)); - break; - case PRIO_SERVER_B: -- P_CHECK (serial_read_server_b_data (upk, &p->shares.B)); -+ P_CHECK(serial_read_server_b_data(upk, &p->shares.B)); - break; - default: - return SECFailure; - } - - cleanup: -- msgpack_unpacked_destroy (&res); -+ msgpack_unpacked_destroy(&res); - return rv; - } - -- --SECStatus --PrioPacketVerify1_write (const_PrioPacketVerify1 p, msgpack_packer *pk) -+SECStatus -+PrioPacketVerify1_write(const_PrioPacketVerify1 p, msgpack_packer* pk) - { - SECStatus rv = SECSuccess; -- P_CHECKCB (pk != NULL); -- P_CHECKCB (p != NULL); -+ P_CHECKCB(pk != NULL); -+ P_CHECKCB(p != NULL); - -- P_CHECK (serial_write_mp_int (pk, &p->share_d)); -- P_CHECK (serial_write_mp_int (pk, &p->share_e)); -+ P_CHECK(serial_write_mp_int(pk, &p->share_d)); -+ P_CHECK(serial_write_mp_int(pk, &p->share_e)); - - cleanup: - return rv; - } - --SECStatus --PrioPacketVerify1_read (PrioPacketVerify1 p, msgpack_unpacker *upk, -- const_PrioConfig cfg) -+SECStatus -+PrioPacketVerify1_read(PrioPacketVerify1 p, msgpack_unpacker* upk, -+ const_PrioConfig cfg) - { - SECStatus rv = SECSuccess; -- P_CHECKCB (upk != NULL); -- P_CHECKCB (p != NULL); -+ P_CHECKCB(upk != NULL); -+ P_CHECKCB(p != NULL); - -- P_CHECK (serial_read_mp_int (upk, &p->share_d, &cfg->modulus)); -- P_CHECK (serial_read_mp_int (upk, &p->share_e, &cfg->modulus)); -+ P_CHECK(serial_read_mp_int(upk, &p->share_d, &cfg->modulus)); -+ P_CHECK(serial_read_mp_int(upk, &p->share_e, &cfg->modulus)); - - cleanup: - return rv; - } - --SECStatus --PrioPacketVerify2_write (const_PrioPacketVerify2 p, msgpack_packer *pk) -+SECStatus -+PrioPacketVerify2_write(const_PrioPacketVerify2 p, msgpack_packer* pk) - { - SECStatus rv = SECSuccess; -- P_CHECKCB (pk != NULL); -- P_CHECKCB (p != NULL); -+ P_CHECKCB(pk != NULL); -+ P_CHECKCB(p != NULL); - -- P_CHECK (serial_write_mp_int (pk, &p->share_out)); -+ P_CHECK(serial_write_mp_int(pk, &p->share_out)); - - cleanup: - return rv; - } - --SECStatus --PrioPacketVerify2_read (PrioPacketVerify2 p, msgpack_unpacker *upk, -- const_PrioConfig cfg) -+SECStatus -+PrioPacketVerify2_read(PrioPacketVerify2 p, msgpack_unpacker* upk, -+ const_PrioConfig cfg) - { - SECStatus rv = SECSuccess; -- P_CHECKCB (upk != NULL); -- P_CHECKCB (p != NULL); -+ P_CHECKCB(upk != NULL); -+ P_CHECKCB(p != NULL); - -- P_CHECK (serial_read_mp_int (upk, &p->share_out, &cfg->modulus)); -+ P_CHECK(serial_read_mp_int(upk, &p->share_out, &cfg->modulus)); - - cleanup: - return rv; - } - --SECStatus --PrioTotalShare_write (const_PrioTotalShare t, msgpack_packer *pk) -+SECStatus -+PrioTotalShare_write(const_PrioTotalShare t, msgpack_packer* pk) - { - SECStatus rv = SECSuccess; -- P_CHECKCB (t != NULL); -- P_CHECKCB (pk != NULL); -- P_CHECK (msgpack_pack_int (pk, t->idx)); -- P_CHECK (serial_write_mp_array (pk, t->data_shares)); -+ P_CHECKCB(t != NULL); -+ P_CHECKCB(pk != NULL); -+ P_CHECK(msgpack_pack_int(pk, t->idx)); -+ P_CHECK(serial_write_mp_array(pk, t->data_shares)); - - cleanup: - return rv; - } - --SECStatus --PrioTotalShare_read (PrioTotalShare t, msgpack_unpacker *upk, -- const_PrioConfig cfg) -+SECStatus -+PrioTotalShare_read(PrioTotalShare t, msgpack_unpacker* upk, -+ const_PrioConfig cfg) - { - SECStatus rv = SECSuccess; -- P_CHECKCB (t != NULL); -- P_CHECKCB (upk != NULL); -- P_CHECK (serial_read_server_id (upk, &t->idx)); -- P_CHECK (serial_read_mp_array (upk, t->data_shares, cfg->num_data_fields, -- &cfg->modulus)); -+ P_CHECKCB(t != NULL); -+ P_CHECKCB(upk != NULL); -+ P_CHECK(serial_read_server_id(upk, &t->idx)); -+ P_CHECK(serial_read_mp_array(upk, t->data_shares, cfg->num_data_fields, -+ &cfg->modulus)); - - cleanup: - return rv; - } -- -diff --git a/third_party/prio/prio/server.h b/third_party/prio/prio/server.h ---- a/third_party/prio/prio/server.h -+++ b/third_party/prio/prio/server.h -@@ -1,9 +1,9 @@ - /* - * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -+ * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - - #ifndef __SERVER_H__ -@@ -13,12 +13,14 @@ - #include "prg.h" - #include "share.h" - --struct prio_total_share { -+struct prio_total_share -+{ - PrioServerId idx; - MPArray data_shares; - }; - --struct prio_server { -+struct prio_server -+{ - const_PrioConfig cfg; - PrioServerId idx; - -@@ -34,7 +36,8 @@ - PRG prg; - }; - --struct prio_verifier { -+struct prio_verifier -+{ - PrioServer s; - - PrioPacketClient clientp; -@@ -47,14 +50,15 @@ - mp_int share_out; - }; - --struct prio_packet_verify1 { -+struct prio_packet_verify1 -+{ - mp_int share_d; - mp_int share_e; - }; - --struct prio_packet_verify2 { -+struct prio_packet_verify2 -+{ - mp_int share_out; - }; - - #endif /* __SERVER_H__ */ -- -diff --git a/third_party/prio/prio/server.c b/third_party/prio/prio/server.c ---- a/third_party/prio/prio/server.c -+++ b/third_party/prio/prio/server.c -@@ -1,9 +1,9 @@ - /* - * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -+ * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - - #include -@@ -12,49 +12,51 @@ - #include - - #include "client.h" --#include "prg.h" -+#include "mparray.h" - #include "poly.h" --#include "mparray.h" -+#include "prg.h" - #include "server.h" - #include "util.h" - --PrioServer --PrioServer_new (const_PrioConfig cfg, PrioServerId server_idx, -- PrivateKey server_priv, const PrioPRGSeed seed) -+PrioServer -+PrioServer_new(const_PrioConfig cfg, PrioServerId server_idx, -+ PrivateKey server_priv, const PrioPRGSeed seed) - { - SECStatus rv = SECSuccess; -- PrioServer s = malloc (sizeof (*s)); -- if (!s) return NULL; -+ PrioServer s = malloc(sizeof(*s)); -+ if (!s) -+ return NULL; - s->cfg = cfg; - s->idx = server_idx; - s->priv_key = server_priv; - s->data_shares = NULL; - s->prg = NULL; -- -- P_CHECKA (s->data_shares = MPArray_new (s->cfg->num_data_fields)); -- P_CHECKA (s->prg = PRG_new (seed)); -+ -+ P_CHECKA(s->data_shares = MPArray_new(s->cfg->num_data_fields)); -+ P_CHECKA(s->prg = PRG_new(seed)); - - cleanup: - if (rv != SECSuccess) { -- PrioServer_clear (s); -+ PrioServer_clear(s); - return NULL; - } - - return s; - } - --void --PrioServer_clear (PrioServer s) -+void -+PrioServer_clear(PrioServer s) - { -- if (!s) return; -+ if (!s) -+ return; - -- PRG_clear (s->prg); -- MPArray_clear (s->data_shares); -+ PRG_clear(s->prg); -+ MPArray_clear(s->data_shares); - free(s); - } - - SECStatus --PrioServer_aggregate (PrioServer s, PrioVerifier v) -+PrioServer_aggregate(PrioServer s, PrioVerifier v) - { - MPArray arr = NULL; - switch (s->idx) { -@@ -69,48 +71,49 @@ - return SECFailure; - } - -- return MPArray_addmod (s->data_shares, arr, &s->cfg->modulus); -+ return MPArray_addmod(s->data_shares, arr, &s->cfg->modulus); - } - --PrioTotalShare --PrioTotalShare_new (void) -+PrioTotalShare -+PrioTotalShare_new(void) - { -- PrioTotalShare t = malloc (sizeof (*t)); -- if (!t) return NULL; -+ PrioTotalShare t = malloc(sizeof(*t)); -+ if (!t) -+ return NULL; - -- t->data_shares = MPArray_new (0); -+ t->data_shares = MPArray_new(0); - if (!t->data_shares) { -- free (t); -+ free(t); - return NULL; - } - - return t; - } - --void --PrioTotalShare_clear (PrioTotalShare t) -+void -+PrioTotalShare_clear(PrioTotalShare t) - { -- if (!t) return; -- MPArray_clear (t->data_shares); -- free (t); -+ if (!t) -+ return; -+ MPArray_clear(t->data_shares); -+ free(t); - } - - SECStatus --PrioTotalShare_set_data (PrioTotalShare t, const_PrioServer s) -+PrioTotalShare_set_data(PrioTotalShare t, const_PrioServer s) - { - t->idx = s->idx; - SECStatus rv = SECSuccess; -- -- P_CHECK (MPArray_resize (t->data_shares, s->data_shares->len)); -- P_CHECK (MPArray_copy (t->data_shares, s->data_shares)); -+ -+ P_CHECK(MPArray_resize(t->data_shares, s->data_shares->len)); -+ P_CHECK(MPArray_copy(t->data_shares, s->data_shares)); - - return rv; - } - - SECStatus --PrioTotalShare_final (const_PrioConfig cfg, -- unsigned long *output, -- const_PrioTotalShare tA, const_PrioTotalShare tB) -+PrioTotalShare_final(const_PrioConfig cfg, unsigned long* output, -+ const_PrioTotalShare tA, const_PrioTotalShare tB) - { - if (tA->data_shares->len != cfg->num_data_fields) - return SECFailure; -@@ -122,24 +125,24 @@ - SECStatus rv = SECSuccess; - - mp_int tmp; -- MP_DIGITS (&tmp) = NULL; -- MP_CHECKC (mp_init (&tmp)); -+ MP_DIGITS(&tmp) = NULL; -+ MP_CHECKC(mp_init(&tmp)); - -- for (int i=0; inum_data_fields; i++) { -- MP_CHECKC (mp_addmod(&tA->data_shares->data[i], &tB->data_shares->data[i], -- &cfg->modulus, &tmp)); -+ for (int i = 0; i < cfg->num_data_fields; i++) { -+ MP_CHECKC(mp_addmod(&tA->data_shares->data[i], &tB->data_shares->data[i], -+ &cfg->modulus, &tmp)); - - output[i] = tmp.dp[0]; - } - - cleanup: -- mp_clear (&tmp); -+ mp_clear(&tmp); - return rv; - } - -- --inline static mp_int * --get_data_share (const_PrioVerifier v, int i) { -+inline static mp_int* -+get_data_share(const_PrioVerifier v, int i) -+{ - switch (v->s->idx) { - case PRIO_SERVER_A: - return &v->clientp->shares.A.data_shares->data[i]; -@@ -150,8 +153,9 @@ - return NULL; - } - --inline static mp_int * --get_h_share (const_PrioVerifier v, int i) { -+inline static mp_int* -+get_h_share(const_PrioVerifier v, int i) -+{ - switch (v->s->idx) { - case PRIO_SERVER_A: - return &v->clientp->shares.A.h_points->data[i]; -@@ -168,118 +172,122 @@ - * by the shared secret. Store the evaluations in the verifier object. - */ - static SECStatus --compute_shares (PrioVerifier v, const_PrioPacketClient p) -+compute_shares(PrioVerifier v, const_PrioPacketClient p) - { - SECStatus rv; - const int n = v->s->cfg->num_data_fields + 1; -- const int N = next_power_of_two (n); -+ const int N = next_power_of_two(n); - mp_int eval_at; -- MP_DIGITS (&eval_at) = NULL; -+ MP_DIGITS(&eval_at) = NULL; - - MPArray points_f = NULL; - MPArray points_g = NULL; - MPArray points_h = NULL; - -- MP_CHECKC (mp_init (&eval_at)); -- P_CHECKA (points_f = MPArray_new (N)); -- P_CHECKA (points_g = MPArray_new (N)); -- P_CHECKA (points_h = MPArray_new (2*N)); -+ MP_CHECKC(mp_init(&eval_at)); -+ P_CHECKA(points_f = MPArray_new(N)); -+ P_CHECKA(points_g = MPArray_new(N)); -+ P_CHECKA(points_h = MPArray_new(2 * N)); - - // Use PRG to generate random point -- MP_CHECKC (PRG_get_int (v->s->prg, &eval_at, &v->s->cfg->modulus)); -- -- // Reduce value into the field we're using. This -+ MP_CHECKC(PRG_get_int(v->s->prg, &eval_at, &v->s->cfg->modulus)); -+ -+ // Reduce value into the field we're using. This - // doesn't yield exactly a uniformly random point, - // but for values this large, it will be close - // enough. -- MP_CHECKC (mp_mod (&eval_at, &v->s->cfg->modulus, &eval_at)); -+ MP_CHECKC(mp_mod(&eval_at, &v->s->cfg->modulus, &eval_at)); - - // Client sends us the values of f(0) and g(0) -- MP_CHECKC (mp_copy(&p->f0_share, &points_f->data[0])); -- MP_CHECKC (mp_copy(&p->g0_share, &points_g->data[0])); -- MP_CHECKC (mp_copy(&p->h0_share, &points_h->data[0])); -+ MP_CHECKC(mp_copy(&p->f0_share, &points_f->data[0])); -+ MP_CHECKC(mp_copy(&p->g0_share, &points_g->data[0])); -+ MP_CHECKC(mp_copy(&p->h0_share, &points_h->data[0])); - -- for (int i=1; idata[i])); -+ const mp_int* data_i_minus_1 = get_data_share(v, i - 1); -+ MP_CHECKC(mp_copy(data_i_minus_1, &points_f->data[i])); - - // [g](i) = i-th data share minus 1 - // Only need to shift the share for 0-th server -- MP_CHECKC (mp_copy(&points_f->data[i], &points_g->data[i])); -+ MP_CHECKC(mp_copy(&points_f->data[i], &points_g->data[i])); - if (!v->s->idx) { -- MP_CHECKC (mp_sub_d(&points_g->data[i], 1, &points_g->data[i])); -- MP_CHECKC (mp_mod(&points_g->data[i], &v->s->cfg->modulus, &points_g->data[i])); -+ MP_CHECKC(mp_sub_d(&points_g->data[i], 1, &points_g->data[i])); -+ MP_CHECKC( -+ mp_mod(&points_g->data[i], &v->s->cfg->modulus, &points_g->data[i])); - } - } - - int j = 0; -- for (int i=1; i<2*N; i+=2) { -- const mp_int *h_point_j = get_h_share (v, j++); -- MP_CHECKC (mp_copy(h_point_j, &points_h->data[i])); -+ for (int i = 1; i < 2 * N; i += 2) { -+ const mp_int* h_point_j = get_h_share(v, j++); -+ MP_CHECKC(mp_copy(h_point_j, &points_h->data[i])); - } - -- P_CHECKC (poly_interp_evaluate (&v->share_fR, points_f, &eval_at, v->s->cfg)); -- P_CHECKC (poly_interp_evaluate (&v->share_gR, points_g, &eval_at, v->s->cfg)); -- P_CHECKC (poly_interp_evaluate (&v->share_hR, points_h, &eval_at, v->s->cfg)); -+ P_CHECKC(poly_interp_evaluate(&v->share_fR, points_f, &eval_at, v->s->cfg)); -+ P_CHECKC(poly_interp_evaluate(&v->share_gR, points_g, &eval_at, v->s->cfg)); -+ P_CHECKC(poly_interp_evaluate(&v->share_hR, points_h, &eval_at, v->s->cfg)); - - cleanup: -- MPArray_clear (points_f); -- MPArray_clear (points_g); -- MPArray_clear (points_h); -- mp_clear (&eval_at); -+ MPArray_clear(points_f); -+ MPArray_clear(points_g); -+ MPArray_clear(points_h); -+ mp_clear(&eval_at); - return rv; - } - --PrioVerifier PrioVerifier_new (PrioServer s) -+PrioVerifier -+PrioVerifier_new(PrioServer s) - { - SECStatus rv = SECSuccess; -- PrioVerifier v = malloc (sizeof *v); -- if (!v) return NULL; -+ PrioVerifier v = malloc(sizeof *v); -+ if (!v) -+ return NULL; - - v->s = s; - v->clientp = NULL; - v->data_sharesB = NULL; - v->h_pointsB = NULL; - -- MP_DIGITS (&v->share_fR) = NULL; -- MP_DIGITS (&v->share_gR) = NULL; -- MP_DIGITS (&v->share_hR) = NULL; -+ MP_DIGITS(&v->share_fR) = NULL; -+ MP_DIGITS(&v->share_gR) = NULL; -+ MP_DIGITS(&v->share_hR) = NULL; - -- MP_CHECKC (mp_init (&v->share_fR)); -- MP_CHECKC (mp_init (&v->share_gR)); -- MP_CHECKC (mp_init (&v->share_hR)); -+ MP_CHECKC(mp_init(&v->share_fR)); -+ MP_CHECKC(mp_init(&v->share_gR)); -+ MP_CHECKC(mp_init(&v->share_hR)); - -- P_CHECKA (v->clientp = PrioPacketClient_new (s->cfg, s->idx)); -+ P_CHECKA(v->clientp = PrioPacketClient_new(s->cfg, s->idx)); - -- const int N = next_power_of_two (s->cfg->num_data_fields + 1); -+ const int N = next_power_of_two(s->cfg->num_data_fields + 1); - if (v->s->idx == PRIO_SERVER_B) { -- P_CHECKA (v->data_sharesB = MPArray_new (v->s->cfg->num_data_fields)); -- P_CHECKA (v->h_pointsB = MPArray_new (N)); -+ P_CHECKA(v->data_sharesB = MPArray_new(v->s->cfg->num_data_fields)); -+ P_CHECKA(v->h_pointsB = MPArray_new(N)); - } - - cleanup: - if (rv != SECSuccess) { -- PrioVerifier_clear (v); -+ PrioVerifier_clear(v); - return NULL; - } - - return v; - } - --SECStatus --PrioVerifier_set_data (PrioVerifier v, unsigned char *data, unsigned int data_len) -+SECStatus -+PrioVerifier_set_data(PrioVerifier v, unsigned char* data, -+ unsigned int data_len) - { - SECStatus rv = SECSuccess; - PRG prgB = NULL; -- P_CHECKC (PrioPacketClient_decrypt (v->clientp, v->s->cfg, -- v->s->priv_key, data, data_len)); -+ P_CHECKC(PrioPacketClient_decrypt(v->clientp, v->s->cfg, v->s->priv_key, data, -+ data_len)); - - PrioPacketClient p = v->clientp; - if (p->for_server != v->s->idx) - return SECFailure; - -- const int N = next_power_of_two (v->s->cfg->num_data_fields + 1); -+ const int N = next_power_of_two(v->s->cfg->num_data_fields + 1); - if (v->s->idx == PRIO_SERVER_A) { - // Check that packet has the correct number of data fields - if (p->shares.A.data_shares->len != v->s->cfg->num_data_fields) -@@ -289,70 +297,73 @@ - } - - if (v->s->idx == PRIO_SERVER_B) { -- P_CHECKA (prgB = PRG_new (v->clientp->shares.B.seed)); -- P_CHECKC (PRG_get_array (prgB, v->data_sharesB, &v->s->cfg->modulus)); -- P_CHECKC (PRG_get_array (prgB, v->h_pointsB, &v->s->cfg->modulus)); -+ P_CHECKA(prgB = PRG_new(v->clientp->shares.B.seed)); -+ P_CHECKC(PRG_get_array(prgB, v->data_sharesB, &v->s->cfg->modulus)); -+ P_CHECKC(PRG_get_array(prgB, v->h_pointsB, &v->s->cfg->modulus)); - } - - // TODO: This can be done much faster by using the combined -- // interpolate-and-evaluate optimization described in the -+ // interpolate-and-evaluate optimization described in the - // Prio paper. - // - // Compute share of f(r), g(r), h(r) -- P_CHECKC (compute_shares (v, p)); -+ P_CHECKC(compute_shares(v, p)); - - cleanup: - -- PRG_clear (prgB); -+ PRG_clear(prgB); - return rv; - } - -- --void PrioVerifier_clear (PrioVerifier v) -+void -+PrioVerifier_clear(PrioVerifier v) - { -- if (v == NULL) return; -- PrioPacketClient_clear (v->clientp); -- MPArray_clear (v->data_sharesB); -- MPArray_clear (v->h_pointsB); -- mp_clear (&v->share_fR); -- mp_clear (&v->share_gR); -- mp_clear (&v->share_hR); -- free (v); -+ if (v == NULL) -+ return; -+ PrioPacketClient_clear(v->clientp); -+ MPArray_clear(v->data_sharesB); -+ MPArray_clear(v->h_pointsB); -+ mp_clear(&v->share_fR); -+ mp_clear(&v->share_gR); -+ mp_clear(&v->share_hR); -+ free(v); - } - --PrioPacketVerify1 --PrioPacketVerify1_new (void) -+PrioPacketVerify1 -+PrioPacketVerify1_new(void) - { - SECStatus rv = SECSuccess; -- PrioPacketVerify1 p = malloc (sizeof *p); -- if (!p) return NULL; -+ PrioPacketVerify1 p = malloc(sizeof *p); -+ if (!p) -+ return NULL; - -- MP_DIGITS (&p->share_d) = NULL; -- MP_DIGITS (&p->share_e) = NULL; -+ MP_DIGITS(&p->share_d) = NULL; -+ MP_DIGITS(&p->share_e) = NULL; - -- MP_CHECKC (mp_init (&p->share_d)); -- MP_CHECKC (mp_init (&p->share_e)); -+ MP_CHECKC(mp_init(&p->share_d)); -+ MP_CHECKC(mp_init(&p->share_e)); - - cleanup: - if (rv != SECSuccess) { -- PrioPacketVerify1_clear (p); -+ PrioPacketVerify1_clear(p); - return NULL; - } - - return p; - } - --void --PrioPacketVerify1_clear (PrioPacketVerify1 p) -+void -+PrioPacketVerify1_clear(PrioPacketVerify1 p) - { -- if (!p) return; -- mp_clear (&p->share_d); -- mp_clear (&p->share_e); -- free (p); -+ if (!p) -+ return; -+ mp_clear(&p->share_d); -+ mp_clear(&p->share_e); -+ free(p); - } - - SECStatus --PrioPacketVerify1_set_data (PrioPacketVerify1 p1, const_PrioVerifier v) -+PrioPacketVerify1_set_data(PrioPacketVerify1 p1, const_PrioVerifier v) - { - // See the Prio paper for details on how this works. - // Appendix C descrives the MPC protocol used here. -@@ -361,121 +372,121 @@ - - // Compute corrections. - // [d] = [f(r)] - [a] -- MP_CHECK (mp_sub (&v->share_fR, &v->clientp->triple->a, &p1->share_d)); -- MP_CHECK (mp_mod (&p1->share_d, &v->s->cfg->modulus, &p1->share_d)); -+ MP_CHECK(mp_sub(&v->share_fR, &v->clientp->triple->a, &p1->share_d)); -+ MP_CHECK(mp_mod(&p1->share_d, &v->s->cfg->modulus, &p1->share_d)); - - // [e] = [g(r)] - [b] -- MP_CHECK (mp_sub (&v->share_gR, &v->clientp->triple->b, &p1->share_e)); -- MP_CHECK (mp_mod (&p1->share_e, &v->s->cfg->modulus, &p1->share_e)); -+ MP_CHECK(mp_sub(&v->share_gR, &v->clientp->triple->b, &p1->share_e)); -+ MP_CHECK(mp_mod(&p1->share_e, &v->s->cfg->modulus, &p1->share_e)); - - return rv; - } - --PrioPacketVerify2 --PrioPacketVerify2_new (void) -+PrioPacketVerify2 -+PrioPacketVerify2_new(void) - { - SECStatus rv = SECSuccess; -- PrioPacketVerify2 p = malloc (sizeof *p); -- if (!p) return NULL; -+ PrioPacketVerify2 p = malloc(sizeof *p); -+ if (!p) -+ return NULL; - -- MP_DIGITS (&p->share_out) = NULL; -- MP_CHECKC (mp_init (&p->share_out)); -+ MP_DIGITS(&p->share_out) = NULL; -+ MP_CHECKC(mp_init(&p->share_out)); - - cleanup: - if (rv != SECSuccess) { -- PrioPacketVerify2_clear (p); -+ PrioPacketVerify2_clear(p); - return NULL; - } - return p; - } - --void --PrioPacketVerify2_clear (PrioPacketVerify2 p) -+void -+PrioPacketVerify2_clear(PrioPacketVerify2 p) - { -- if (!p) return; -- mp_clear (&p->share_out); -- free (p); -+ if (!p) -+ return; -+ mp_clear(&p->share_out); -+ free(p); - } - - SECStatus --PrioPacketVerify2_set_data (PrioPacketVerify2 p2, const_PrioVerifier v, -- const_PrioPacketVerify1 p1A, const_PrioPacketVerify1 p1B) -+PrioPacketVerify2_set_data(PrioPacketVerify2 p2, const_PrioVerifier v, -+ const_PrioPacketVerify1 p1A, -+ const_PrioPacketVerify1 p1B) - { - SECStatus rv = SECSuccess; - - mp_int d, e, tmp; -- MP_DIGITS (&d) = NULL; -- MP_DIGITS (&e) = NULL; -- MP_DIGITS (&tmp) = NULL; -+ MP_DIGITS(&d) = NULL; -+ MP_DIGITS(&e) = NULL; -+ MP_DIGITS(&tmp) = NULL; - -- MP_CHECKC (mp_init (&d)); -- MP_CHECKC (mp_init (&e)); -- MP_CHECKC (mp_init (&tmp)); -+ MP_CHECKC(mp_init(&d)); -+ MP_CHECKC(mp_init(&e)); -+ MP_CHECKC(mp_init(&tmp)); - -- const mp_int *mod = &v->s->cfg->modulus; -+ const mp_int* mod = &v->s->cfg->modulus; - - // Compute share of f(r)*g(r) - // [f(r)*g(r)] = [d*e/2] + d[b] + e[a] + [c] -- -- // Compute d -- MP_CHECKC (mp_addmod (&p1A->share_d, &p1B->share_d, mod, &d)); -+ -+ // Compute d -+ MP_CHECKC(mp_addmod(&p1A->share_d, &p1B->share_d, mod, &d)); - // Compute e -- MP_CHECKC (mp_addmod (&p1A->share_e, &p1B->share_e, mod, &e)); -+ MP_CHECKC(mp_addmod(&p1A->share_e, &p1B->share_e, mod, &e)); - - // Compute d*e -- MP_CHECKC (mp_mulmod (&d, &e, mod, &p2->share_out)); -+ MP_CHECKC(mp_mulmod(&d, &e, mod, &p2->share_out)); - // out = d*e/2 -- MP_CHECKC (mp_mulmod (&p2->share_out, &v->s->cfg->inv2, -- mod, &p2->share_out)); -+ MP_CHECKC(mp_mulmod(&p2->share_out, &v->s->cfg->inv2, mod, &p2->share_out)); - -- // Compute d[b] -- MP_CHECKC (mp_mulmod (&d, &v->clientp->triple->b, mod, &tmp)); -- // out = d*e/2 + d[b] -- MP_CHECKC (mp_addmod (&p2->share_out, &tmp, mod, &p2->share_out)); -+ // Compute d[b] -+ MP_CHECKC(mp_mulmod(&d, &v->clientp->triple->b, mod, &tmp)); -+ // out = d*e/2 + d[b] -+ MP_CHECKC(mp_addmod(&p2->share_out, &tmp, mod, &p2->share_out)); - -- // Compute e[a] -- MP_CHECKC (mp_mulmod (&e, &v->clientp->triple->a, mod, &tmp)); -+ // Compute e[a] -+ MP_CHECKC(mp_mulmod(&e, &v->clientp->triple->a, mod, &tmp)); - // out = d*e/2 + d[b] + e[a] -- MP_CHECKC (mp_addmod (&p2->share_out, &tmp, mod, &p2->share_out)); -+ MP_CHECKC(mp_addmod(&p2->share_out, &tmp, mod, &p2->share_out)); - - // out = d*e/2 + d[b] + e[a] + [c] -- MP_CHECKC (mp_addmod (&p2->share_out, &v->clientp->triple->c, mod, &p2->share_out)); -+ MP_CHECKC( -+ mp_addmod(&p2->share_out, &v->clientp->triple->c, mod, &p2->share_out)); - - // We want to compute f(r)*g(r) - h(r), - // so subtract off [h(r)]: - // out = d*e/2 + d[b] + e[a] + [c] - [h(r)] -- MP_CHECKC (mp_sub (&p2->share_out, &v->share_hR, &p2->share_out)); -- MP_CHECKC (mp_mod (&p2->share_out, mod, &p2->share_out)); -+ MP_CHECKC(mp_sub(&p2->share_out, &v->share_hR, &p2->share_out)); -+ MP_CHECKC(mp_mod(&p2->share_out, mod, &p2->share_out)); - - cleanup: -- mp_clear (&d); -- mp_clear (&e); -- mp_clear (&tmp); -+ mp_clear(&d); -+ mp_clear(&e); -+ mp_clear(&tmp); - return rv; - } - --int --PrioVerifier_isValid (const_PrioVerifier v, -- const_PrioPacketVerify2 pA, const_PrioPacketVerify2 pB) -+int -+PrioVerifier_isValid(const_PrioVerifier v, const_PrioPacketVerify2 pA, -+ const_PrioPacketVerify2 pB) - { - SECStatus rv = SECSuccess; - mp_int res; -- MP_DIGITS (&res) = NULL; -- MP_CHECKC (mp_init (&res)); -+ MP_DIGITS(&res) = NULL; -+ MP_CHECKC(mp_init(&res)); - -- // Add up the shares of the output wire value and -+ // Add up the shares of the output wire value and - // ensure that the sum is equal to zero, which indicates - // that - // f(r) * g(r) == h(r). -- MP_CHECKC (mp_addmod (&pA->share_out, &pB->share_out, -- &v->s->cfg->modulus, &res)); -+ MP_CHECKC( -+ mp_addmod(&pA->share_out, &pB->share_out, &v->s->cfg->modulus, &res)); - -- rv = (mp_cmp_d (&res, 0) == 0) ? SECSuccess : SECFailure; -+ rv = (mp_cmp_d(&res, 0) == 0) ? SECSuccess : SECFailure; - - cleanup: -- mp_clear (&res); -+ mp_clear(&res); - return rv; - } -- -- -- -diff --git a/third_party/prio/prio/share.h b/third_party/prio/prio/share.h ---- a/third_party/prio/prio/share.h -+++ b/third_party/prio/prio/share.h -@@ -1,12 +1,11 @@ - /* - * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -+ * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -- - #ifndef __SHARE_H__ - #define __SHARE_H__ - -@@ -14,23 +13,22 @@ - - #include "config.h" - --struct beaver_triple { -+struct beaver_triple -+{ - mp_int a; - mp_int b; - mp_int c; - }; - --typedef struct beaver_triple *BeaverTriple; --typedef const struct beaver_triple *const_BeaverTriple; -- -+typedef struct beaver_triple* BeaverTriple; -+typedef const struct beaver_triple* const_BeaverTriple; - - /* - * Use secret sharing to split the int src into two shares. - * The mp_ints must be initialized. - */ --SECStatus share_int (const_PrioConfig cfg, const mp_int *src, -- mp_int *shareA, mp_int *shareB); -- -+SECStatus share_int(const_PrioConfig cfg, const mp_int* src, mp_int* shareA, -+ mp_int* shareB); - - /* - * Prio uses Beaver triples to implement one step of the -@@ -38,14 +36,12 @@ - * a sharing of random values a, b, c such that - * a * b = c - */ --BeaverTriple BeaverTriple_new (void); --void BeaverTriple_clear (BeaverTriple t); -+BeaverTriple BeaverTriple_new(void); -+void BeaverTriple_clear(BeaverTriple t); - --SECStatus BeaverTriple_set_rand (const_PrioConfig cfg, -- BeaverTriple triple_a, -- BeaverTriple triple_b); -+SECStatus BeaverTriple_set_rand(const_PrioConfig cfg, BeaverTriple triple_a, -+ BeaverTriple triple_b); - --bool BeaverTriple_areEqual (const_BeaverTriple t1, const_BeaverTriple t2); -+bool BeaverTriple_areEqual(const_BeaverTriple t1, const_BeaverTriple t2); - - #endif /* __SHARE_H__ */ -- -diff --git a/third_party/prio/prio/share.c b/third_party/prio/prio/share.c ---- a/third_party/prio/prio/share.c -+++ b/third_party/prio/prio/share.c -@@ -1,9 +1,9 @@ - /* - * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -+ * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - - #include -@@ -12,86 +12,85 @@ - #include "share.h" - #include "util.h" - -- - SECStatus --share_int (const struct prio_config *cfg, const mp_int *src, -- mp_int *shareA, mp_int *shareB) -+share_int(const struct prio_config* cfg, const mp_int* src, mp_int* shareA, -+ mp_int* shareB) - { - SECStatus rv; -- P_CHECK (rand_int (shareA, &cfg->modulus)); -- MP_CHECK (mp_submod (src, shareA, &cfg->modulus, shareB)); -+ P_CHECK(rand_int(shareA, &cfg->modulus)); -+ MP_CHECK(mp_submod(src, shareA, &cfg->modulus, shareB)); - - return rv; - } - - BeaverTriple --BeaverTriple_new (void) -+BeaverTriple_new(void) - { -- BeaverTriple triple = malloc (sizeof *triple); -+ BeaverTriple triple = malloc(sizeof *triple); - if (!triple) - return NULL; - -- MP_DIGITS (&triple->a) = NULL; -- MP_DIGITS (&triple->b) = NULL; -- MP_DIGITS (&triple->c) = NULL; -+ MP_DIGITS(&triple->a) = NULL; -+ MP_DIGITS(&triple->b) = NULL; -+ MP_DIGITS(&triple->c) = NULL; - - SECStatus rv = SECSuccess; -- MP_CHECKC (mp_init (&triple->a)); -- MP_CHECKC (mp_init (&triple->b)); -- MP_CHECKC (mp_init (&triple->c)); -+ MP_CHECKC(mp_init(&triple->a)); -+ MP_CHECKC(mp_init(&triple->b)); -+ MP_CHECKC(mp_init(&triple->c)); - - cleanup: - if (rv != SECSuccess) { -- BeaverTriple_clear (triple); -+ BeaverTriple_clear(triple); - return NULL; - } - return triple; - } - -- - void --BeaverTriple_clear (BeaverTriple triple) -+BeaverTriple_clear(BeaverTriple triple) - { -- if (!triple) return; -- mp_clear (&triple->a); -- mp_clear (&triple->b); -- mp_clear (&triple->c); -- free (triple); -+ if (!triple) -+ return; -+ mp_clear(&triple->a); -+ mp_clear(&triple->b); -+ mp_clear(&triple->c); -+ free(triple); - } - - SECStatus --BeaverTriple_set_rand (const struct prio_config *cfg, -- struct beaver_triple *triple_1, -- struct beaver_triple *triple_2) -+BeaverTriple_set_rand(const struct prio_config* cfg, -+ struct beaver_triple* triple_1, -+ struct beaver_triple* triple_2) - { - SECStatus rv = SECSuccess; - - // TODO: Can shorten this code using share_int() - - // We need that -- // (a1 + a2)(b1 + b2) = c1 + c2 (mod p) -- P_CHECK (rand_int (&triple_1->a, &cfg->modulus)); -- P_CHECK (rand_int (&triple_1->b, &cfg->modulus)); -- P_CHECK (rand_int (&triple_2->a, &cfg->modulus)); -- P_CHECK (rand_int (&triple_2->b, &cfg->modulus)); -+ // (a1 + a2)(b1 + b2) = c1 + c2 (mod p) -+ P_CHECK(rand_int(&triple_1->a, &cfg->modulus)); -+ P_CHECK(rand_int(&triple_1->b, &cfg->modulus)); -+ P_CHECK(rand_int(&triple_2->a, &cfg->modulus)); -+ P_CHECK(rand_int(&triple_2->b, &cfg->modulus)); - - // We are trying to be a little clever here to avoid the use of temp - // variables. - - // c1 = a1 + a2 -- MP_CHECK (mp_addmod (&triple_1->a, &triple_2->a, &cfg->modulus, &triple_1->c)); -+ MP_CHECK(mp_addmod(&triple_1->a, &triple_2->a, &cfg->modulus, &triple_1->c)); - - // c2 = b1 + b2 -- MP_CHECK (mp_addmod (&triple_1->b, &triple_2->b, &cfg->modulus, &triple_2->c)); -+ MP_CHECK(mp_addmod(&triple_1->b, &triple_2->b, &cfg->modulus, &triple_2->c)); - - // c1 = c1 * c2 = (a1 + a2) (b1 + b2) -- MP_CHECK (mp_mulmod (&triple_1->c, &triple_2->c, &cfg->modulus, &triple_1->c)); -+ MP_CHECK(mp_mulmod(&triple_1->c, &triple_2->c, &cfg->modulus, &triple_1->c)); - - // Set c2 to random blinding value -- MP_CHECK (rand_int (&triple_2->c, &cfg->modulus)); -+ MP_CHECK(rand_int(&triple_2->c, &cfg->modulus)); - - // c1 = c1 - c2 -- MP_CHECK (mp_submod (&triple_1->c, &triple_2->c, &cfg->modulus, &triple_1->c)); -+ MP_CHECK(mp_submod(&triple_1->c, &triple_2->c, &cfg->modulus, &triple_1->c)); - - // Now we should have random tuples satisfying: - // (a1 + a2) (b1 + b2) = c1 + c2 -@@ -99,10 +98,9 @@ - return rv; - } - --bool --BeaverTriple_areEqual (const_BeaverTriple t1, const_BeaverTriple t2) -+bool -+BeaverTriple_areEqual(const_BeaverTriple t1, const_BeaverTriple t2) - { -- return (mp_cmp (&t1->a, &t2->a) == 0 && -- mp_cmp (&t1->b, &t2->b) == 0 && -- mp_cmp (&t1->c, &t2->c) == 0); -+ return (mp_cmp(&t1->a, &t2->a) == 0 && mp_cmp(&t1->b, &t2->b) == 0 && -+ mp_cmp(&t1->c, &t2->c) == 0); - } -diff --git a/third_party/prio/prio/util.h b/third_party/prio/prio/util.h ---- a/third_party/prio/prio/util.h -+++ b/third_party/prio/prio/util.h -@@ -1,9 +1,9 @@ - /* - * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -+ * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - - #ifndef __UTIL_H__ -@@ -16,80 +16,88 @@ - #define MIN(a, b) ((a) < (b) ? (a) : (b)) - - // Check a Prio error code and return failure if the call fails. --#define P_CHECK(s) \ -- do { \ -- if((rv = (s)) != SECSuccess) \ -- return rv; \ -- } while(0); -+#define P_CHECK(s) \ -+ do { \ -+ if ((rv = (s)) != SECSuccess) \ -+ return rv; \ -+ } while (0); - - // Check an allocation that should not return NULL. If the allocation returns --// NULL, set the return value and jump to the cleanup label to free memory. --#define P_CHECKA(s) \ -- do { \ -- if((s) == NULL) {\ -- rv = SECFailure;\ -- goto cleanup;\ -- }\ -- } while(0); -+// NULL, set the return value and jump to the cleanup label to free memory. -+#define P_CHECKA(s) \ -+ do { \ -+ if ((s) == NULL) { \ -+ rv = SECFailure; \ -+ goto cleanup; \ -+ } \ -+ } while (0); - - // Check a Prio library call that should return SECSuccess. If it doesn't, - // jump to the cleanup label. --#define P_CHECKC(s) \ -- do { \ -- if((rv = (s)) != SECSuccess) { \ -- goto cleanup; \ -- }\ -- } while(0); -+#define P_CHECKC(s) \ -+ do { \ -+ if ((rv = (s)) != SECSuccess) { \ -+ goto cleanup; \ -+ } \ -+ } while (0); - - // Check a boolean that should be true. If it not, - // jump to the cleanup label. --#define P_CHECKCB(s) \ -- do { \ -- if(!(s)) { \ -- rv = SECFailure; \ -- goto cleanup; \ -- }\ -- } while(0); -+#define P_CHECKCB(s) \ -+ do { \ -+ if (!(s)) { \ -+ rv = SECFailure; \ -+ goto cleanup; \ -+ } \ -+ } while (0); - - // Check an MPI library call and return failure if it fails. --#define MP_CHECK(s) do { if((s) != MP_OKAY) return SECFailure; } while(0); -+#define MP_CHECK(s) \ -+ do { \ -+ if ((s) != MP_OKAY) \ -+ return SECFailure; \ -+ } while (0); - - // Check a msgpack object unpacked correctly --#define UP_CHECK(s) do { int r = (s); if(r != MSGPACK_UNPACK_SUCCESS &&\ -- r != MSGPACK_UNPACK_EXTRA_BYTES) \ -- return SECFailure; } while(0); -+#define UP_CHECK(s) \ -+ do { \ -+ int r = (s); \ -+ if (r != MSGPACK_UNPACK_SUCCESS && r != MSGPACK_UNPACK_EXTRA_BYTES) \ -+ return SECFailure; \ -+ } while (0); - - // Check an MPI library call. If it fails, set the return code and jump - // to the cleanup label. --#define MP_CHECKC(s) \ -- do { \ -- if((s) != MP_OKAY) { \ -- rv = SECFailure; \ -- goto cleanup; \ -- }\ -- } while(0); -+#define MP_CHECKC(s) \ -+ do { \ -+ if ((s) != MP_OKAY) { \ -+ rv = SECFailure; \ -+ goto cleanup; \ -+ } \ -+ } while (0); - - static inline int --next_power_of_two (int val) -+next_power_of_two(int val) - { - int i = val; - int out = 0; -- for ( ; i > 0; i >>= 1) { -+ for (; i > 0; i >>= 1) { - out++; - } - - int pow = 1 << out; -- return (pow > 1 && pow/2 == val) ? val : pow; --} -+ return (pow > 1 && pow / 2 == val) ? val : pow; -+} - --/* -+/* - * Return a mask that masks out all of the zero bits - */ - static inline unsigned char --msb_mask (unsigned char val) -+msb_mask(unsigned char val) - { - unsigned char mask; -- for (mask = 0x00; (val & mask) != val; mask = (mask << 1) + 1); -+ for (mask = 0x00; (val & mask) != val; mask = (mask << 1) + 1) -+ ; - return mask; - } - -@@ -99,4 +107,3 @@ - #define UNUSED(x) (void)(x) - - #endif /* __UTIL_H__ */ -- -diff --git a/third_party/prio/ptest/MUTEST_LICENSE b/third_party/prio/ptest/MUTEST_LICENSE -deleted file mode 100644 ---- a/third_party/prio/ptest/MUTEST_LICENSE -+++ /dev/null -@@ -1,30 +0,0 @@ --I don't like licenses, because I don't like having to worry about all this --legal stuff just for a simple piece of software I don't really mind anyone --using. But I also believe that it's important that people share and give back; --so I'm placing this work under the following license. -- -- --BOLA - Buena Onda License Agreement (v1.0) -------------------------------------------- -- --This work is provided 'as-is', without any express or implied warranty. In no --event will the authors be held liable for any damages arising from the use of --this work. -- --To all effects and purposes, this work is to be considered Public Domain. -- -- --However, if you want to be "Buena onda", you should: -- --1. Not take credit for it, and give proper recognition to the authors. --2. Share your modifications, so everybody benefits from them. --4. Do something nice for the authors. --5. Help someone who needs it: sign up for some volunteer work or help your -- neighbour paint the house. --6. Don't waste. Anything, but specially energy that comes from natural -- non-renewable resources. Extra points if you discover or invent something -- to replace them. --7. Be tolerant. Everything that's good in nature comes from cooperation. -- --The order is important, and the further you go the more "Buena onda" you are. --Make the world a better place: be "Buena onda". -diff --git a/third_party/prio/ptest/SConscript b/third_party/prio/ptest/SConscript -deleted file mode 100644 ---- a/third_party/prio/ptest/SConscript -+++ /dev/null -@@ -1,44 +0,0 @@ --import sys -- --Import('env') -- --prio_env = env.Clone() -- --test_srcs = [ -- "mutest.c", -- "client_test.c", -- "example_test.c", -- "encrypt_test.c", -- "fft_test.c", -- "mpi_test.c", -- "prg_test.c", -- "rand_test.c", -- "serial_test.c", -- "server_test.c", -- "share_test.c", --] -- --libs = [ -- "nss3", -- "mpi", -- "mprio", -- "msgpackc" --] -- --# Run the mutest script to generate the test harness code --bld = Builder(action = 'ptest/mkmutest ptest/mutest.h $SOURCES | $CC -c -xc -o $TARGET -') --prio_env.Append(BUILDERS = {'MkMutest' : bld}) -- --prio_env.Append(LIBS = libs) -- --# Enable mpi print --prio_env.Append(CFLAGS = ['-DMP_IOFUNC']) -- --# Copy the mutest scripts to the build dir --prio_env.Install("mkmutest") --prio_env.Install("mutest.h") -- --test_objs = prio_env.Object(test_srcs) --test_main = prio_env.MkMutest(test_objs) --prio_env.Program("ptest", [test_main] + test_objs) -- -diff --git a/third_party/prio/ptest/client_test.c b/third_party/prio/ptest/client_test.c -deleted file mode 100644 ---- a/third_party/prio/ptest/client_test.c -+++ /dev/null -@@ -1,160 +0,0 @@ --/* -- * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -- * This Source Code Form is subject to the terms of the Mozilla Public -- * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -- */ -- --#include -- --#include "prio/client.h" --#include "prio/server.h" --#include "prio/util.h" --#include "mutest.h" -- --void --mu_test_client__new (void) --{ -- SECStatus rv = SECSuccess; -- PrioConfig cfg = NULL; -- PrioPacketClient pA = NULL; -- PrioPacketClient pB = NULL; -- -- P_CHECKA (cfg = PrioConfig_newTest(23)); -- P_CHECKA (pA = PrioPacketClient_new (cfg, PRIO_SERVER_A)); -- P_CHECKA (pB = PrioPacketClient_new (cfg, PRIO_SERVER_B)); -- -- { -- const int ndata = PrioConfig_numDataFields (cfg); -- bool data_items[ndata]; -- -- for (int i=0; i < ndata; i++) { -- // Arbitrary data -- data_items[i] = (i % 3 == 1) || (i % 5 == 3); -- } -- -- P_CHECKC (PrioPacketClient_set_data (cfg, data_items, pA, pB)); -- } -- --cleanup: -- mu_check (rv == SECSuccess); -- -- PrioPacketClient_clear (pA); -- PrioPacketClient_clear (pB); -- PrioConfig_clear (cfg); --} -- --void --test_client_agg (int nclients) --{ -- SECStatus rv = SECSuccess; -- PublicKey pkA = NULL; -- PublicKey pkB = NULL; -- PrivateKey skA = NULL; -- PrivateKey skB = NULL; -- PrioConfig cfg = NULL; -- PrioServer sA = NULL; -- PrioServer sB = NULL; -- PrioTotalShare tA = NULL; -- PrioTotalShare tB = NULL; -- PrioVerifier vA = NULL; -- PrioVerifier vB = NULL; -- unsigned char *for_a = NULL; -- unsigned char *for_b = NULL; -- const unsigned char *batch_id = (unsigned char *)"test_batch"; -- unsigned int batch_id_len = strlen ((char *)batch_id); -- -- PrioPRGSeed seed; -- P_CHECKC (PrioPRGSeed_randomize (&seed)); -- -- P_CHECKC (Keypair_new (&skA, &pkA)); -- P_CHECKC (Keypair_new (&skB, &pkB)); -- P_CHECKA (cfg = PrioConfig_new (133, pkA, pkB, batch_id, batch_id_len)); -- P_CHECKA (sA = PrioServer_new (cfg, 0, skA, seed)); -- P_CHECKA (sB = PrioServer_new (cfg, 1, skB, seed)); -- P_CHECKA (tA = PrioTotalShare_new ()); -- P_CHECKA (tB = PrioTotalShare_new ()); -- P_CHECKA (vA = PrioVerifier_new (sA)); -- P_CHECKA (vB = PrioVerifier_new (sB)); -- -- const int ndata = PrioConfig_numDataFields (cfg); -- -- { -- bool data_items[ndata]; -- for (int i=0; i < ndata; i++) { -- // Arbitrary data -- data_items[i] = (i % 3 == 1) || (i % 5 == 3); -- } -- -- for (int i=0; i < nclients; i++) { -- unsigned int aLen, bLen; -- P_CHECKC (PrioClient_encode (cfg, data_items, &for_a, &aLen, -- &for_b, &bLen)); -- -- P_CHECKC (PrioVerifier_set_data (vA, for_a, aLen)); -- P_CHECKC (PrioVerifier_set_data (vB, for_b, bLen)); -- -- mu_check (PrioServer_aggregate (sA, vA) == SECSuccess); -- mu_check (PrioServer_aggregate (sB, vB) == SECSuccess); -- -- free (for_a); -- free (for_b); -- -- for_a = NULL; -- for_b = NULL; -- } -- -- mu_check (PrioTotalShare_set_data (tA, sA) == SECSuccess); -- mu_check (PrioTotalShare_set_data (tB, sB) == SECSuccess); -- -- unsigned long output[ndata]; -- mu_check (PrioTotalShare_final (cfg, output, tA, tB) == SECSuccess); -- for (int i=0; i < ndata; i++) { -- unsigned long v = ((i % 3 == 1) || (i % 5 == 3)); -- mu_check (output[i] == v*nclients); -- } -- } -- -- //rv = SECFailure; -- //goto cleanup; -- --cleanup: -- mu_check (rv == SECSuccess); -- if (for_a) free (for_a); -- if (for_b) free (for_b); -- -- PublicKey_clear (pkA); -- PublicKey_clear (pkB); -- PrivateKey_clear (skA); -- PrivateKey_clear (skB); -- -- PrioVerifier_clear (vA); -- PrioVerifier_clear (vB); -- -- PrioTotalShare_clear (tA); -- PrioTotalShare_clear (tB); -- -- PrioServer_clear (sA); -- PrioServer_clear (sB); -- PrioConfig_clear (cfg); --} -- --void --mu_test_client__agg_1 (void) --{ -- test_client_agg (1); --} -- --void --mu_test_client__agg_2 (void) --{ -- test_client_agg (2); --} -- --void --mu_test_client__agg_10 (void) --{ -- test_client_agg (10); --} -- -diff --git a/third_party/prio/ptest/encrypt_test.c b/third_party/prio/ptest/encrypt_test.c -deleted file mode 100644 ---- a/third_party/prio/ptest/encrypt_test.c -+++ /dev/null -@@ -1,228 +0,0 @@ --/* -- * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -- * This Source Code Form is subject to the terms of the Mozilla Public -- * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -- */ -- --#include --#include --#include --#include --#include --#include -- --#include "mutest.h" --#include "prio/encrypt.h" --#include "prio/rand.h" --#include "prio/util.h" -- -- --void --mu_test_keygen (void) --{ -- SECStatus rv = SECSuccess; -- PublicKey pubkey = NULL; -- PrivateKey pvtkey = NULL; -- -- P_CHECKC (Keypair_new (&pvtkey, &pubkey)); -- mu_check (SECKEY_PublicKeyStrength (pubkey) == 32); -- --cleanup: -- mu_check (rv == SECSuccess); -- PublicKey_clear (pubkey); -- PrivateKey_clear (pvtkey); -- return; --} -- --void --test_encrypt_once (int bad, unsigned int inlen) --{ -- SECStatus rv = SECSuccess; -- PublicKey pubkey = NULL; -- PrivateKey pvtkey = NULL; -- PublicKey pubkey2 = NULL; -- PrivateKey pvtkey2 = NULL; -- -- unsigned char *bytes_in = NULL; -- unsigned char *bytes_enc = NULL; -- unsigned char *bytes_dec = NULL; -- -- unsigned int enclen; -- P_CHECKC (PublicKey_encryptSize (inlen, &enclen)); -- unsigned int declen = enclen; -- -- P_CHECKA (bytes_in = malloc (inlen)); -- P_CHECKA (bytes_enc = malloc (enclen)); -- P_CHECKA (bytes_dec= malloc (enclen)); -- P_CHECKC (rand_bytes (bytes_in, inlen)); -- -- memset (bytes_dec, 0, declen); -- -- unsigned int encryptedBytes; -- P_CHECKC (Keypair_new (&pvtkey, &pubkey)); -- P_CHECKC (Keypair_new (&pvtkey2, &pubkey2)); -- P_CHECKC (PublicKey_encrypt (pubkey, bytes_enc, -- &encryptedBytes, enclen, -- bytes_in, inlen)); -- mu_check (encryptedBytes == enclen); -- -- if (bad == 1) -- enclen = 30; -- -- if (bad == 2) { -- bytes_enc[4] = 6; -- bytes_enc[5] = 0; -- } -- -- if (bad == 3) { -- bytes_enc[40] = 6; -- bytes_enc[41] = 0; -- } -- -- unsigned int decryptedBytes; -- PrivateKey key_to_use = (bad == 4) ? pvtkey2 : pvtkey; -- P_CHECKC (PrivateKey_decrypt (key_to_use, bytes_dec, &decryptedBytes, declen, -- bytes_enc, enclen)); -- mu_check (decryptedBytes == inlen); -- mu_check (!strncmp ((char *)bytes_in, (char *)bytes_dec, inlen)); -- --cleanup: -- mu_check (bad ? (rv == SECFailure) : (rv == SECSuccess)); -- if (bytes_in) free (bytes_in); -- if (bytes_enc) free (bytes_enc); -- if (bytes_dec) free (bytes_dec); -- -- PublicKey_clear (pubkey); -- PrivateKey_clear (pvtkey); -- PublicKey_clear (pubkey2); -- PrivateKey_clear (pvtkey2); -- return; --} -- --void --mu_test_encrypt_good (void) --{ -- test_encrypt_once (0, 100); --} -- --void --mu_test_encrypt_good_long (void) --{ -- test_encrypt_once (0, 1000000); --} -- --void --mu_test_encrypt_too_short (void) --{ -- test_encrypt_once (1, 87); --} -- --void --mu_test_encrypt_garbage (void) --{ -- test_encrypt_once (2, 10023); --} -- --void --mu_test_encrypt_garbage2 (void) --{ -- test_encrypt_once (3, 8123); --} -- --void --mu_test_decrypt_wrong_key (void) --{ -- test_encrypt_once (4, 81230); --} -- --void --mu_test_export (void) --{ -- SECStatus rv = SECSuccess; -- PublicKey pubkey = NULL; -- -- unsigned char raw_bytes[CURVE25519_KEY_LEN]; -- unsigned char raw_bytes2[CURVE25519_KEY_LEN]; -- for (int i=0; i< CURVE25519_KEY_LEN; i++) { -- raw_bytes[i] = (3*i+7) % 0xFF; -- } -- -- P_CHECKC (PublicKey_import (&pubkey, raw_bytes, CURVE25519_KEY_LEN)); -- P_CHECKC (PublicKey_export (pubkey, raw_bytes2)); -- -- for (int i=0; i< CURVE25519_KEY_LEN; i++) { -- mu_check (raw_bytes[i] == raw_bytes2[i]); -- } -- --cleanup: -- mu_check (rv == SECSuccess); -- PublicKey_clear (pubkey); -- return; --} -- --void --mu_test_export_hex (void) --{ -- SECStatus rv = SECSuccess; -- PublicKey pubkey = NULL; -- -- const unsigned char hex_bytes[2*CURVE25519_KEY_LEN] = \ -- "102030405060708090A0B0C0D0E0F00000FFEEDDCCBBAA998877665544332211"; -- const unsigned char hex_bytesl[2*CURVE25519_KEY_LEN] = \ -- "102030405060708090a0B0C0D0E0F00000FfeEddcCbBaa998877665544332211"; -- -- const unsigned char raw_bytes_should[CURVE25519_KEY_LEN] = { -- 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80, -- 0x90, 0xA0, 0xB0, 0xC0, 0xD0, 0xE0, 0xF0, 0x00, -- 0x00, 0xFF, 0xEE, 0xDD, 0xCC, 0xBB, 0xAA, 0x99, -- 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11 }; -- unsigned char raw_bytes[CURVE25519_KEY_LEN]; -- unsigned char hex_bytes2[2*CURVE25519_KEY_LEN+1]; -- -- // Make sure that invalid lengths are rejected. -- mu_check (PublicKey_import_hex (&pubkey, hex_bytes, -- 2*CURVE25519_KEY_LEN-1) == SECFailure); -- mu_check (PublicKey_import_hex (&pubkey, hex_bytes, -- 2*CURVE25519_KEY_LEN+1) == SECFailure); -- -- // Import a key in upper-case hex -- P_CHECKC (PublicKey_import_hex (&pubkey, hex_bytes, 2*CURVE25519_KEY_LEN)); -- P_CHECKC (PublicKey_export (pubkey, raw_bytes)); -- PublicKey_clear (pubkey); -- pubkey = NULL; -- -- for (int i=0; i --#include "mutest.h" -- -- -- --void --mu_test_example (void) --{ -- mu_check (1); --} -- -- -- -diff --git a/third_party/prio/ptest/fft_test.c b/third_party/prio/ptest/fft_test.c -deleted file mode 100644 ---- a/third_party/prio/ptest/fft_test.c -+++ /dev/null -@@ -1,170 +0,0 @@ --/* -- * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -- * This Source Code Form is subject to the terms of the Mozilla Public -- * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -- */ -- --#include --#include --#include -- --#include "mutest.h" --#include "prio/config.h" --#include "prio/mparray.h" --#include "prio/poly.h" --#include "prio/util.h" -- --void --mu_test__fft_one (void) --{ -- SECStatus rv = SECSuccess; -- PrioConfig cfg = NULL; -- MPArray points_in = NULL; -- MPArray points_out = NULL; -- -- P_CHECKA (cfg = PrioConfig_newTest (123)); -- P_CHECKA (points_in = MPArray_new (1)); -- P_CHECKA (points_out = MPArray_new (1)); -- -- mp_set (&points_in->data[0], 3); -- mu_check (poly_fft (points_out, points_in, cfg, false) == SECSuccess); -- -- mu_check (mp_cmp_d(&points_in->data[0], 3) == 0); -- mu_check (mp_cmp_d(&points_out->data[0], 3) == 0); -- --cleanup: -- mu_check (rv == SECSuccess); -- MPArray_clear (points_in); -- MPArray_clear (points_out); -- -- PrioConfig_clear (cfg); --} -- --void --mu_test__fft_roots (void) --{ -- SECStatus rv = SECSuccess; -- PrioConfig cfg = NULL; -- mp_int tmp; -- MP_DIGITS (&tmp) = NULL; -- -- P_CHECKA (cfg = PrioConfig_newTest (90)); -- MP_CHECKC (mp_init (&tmp)); -- -- mp_int roots[4]; -- poly_fft_get_roots (roots, 4, cfg, false); -- -- for (int i=0; i<4; i++) { -- mp_exptmod_d(&roots[i], 4, &cfg->modulus, &tmp); -- mu_check (mp_cmp_d( &tmp, 1) == 0); -- } -- --cleanup: -- mu_check (rv == SECSuccess); -- mp_clear (&tmp); -- PrioConfig_clear (cfg); --} -- --void --mu_test__fft_simple (void) --{ -- SECStatus rv = SECSuccess; -- const int nPoints = 4; -- -- PrioConfig cfg = NULL; -- MPArray points_in = NULL; -- MPArray points_out = NULL; -- -- mp_int should_be, tmp; -- mp_int roots[nPoints]; -- MP_DIGITS (&should_be) = NULL; -- MP_DIGITS (&tmp) = NULL; -- for (int i=0; idata[0], 3); -- mp_set (&points_in->data[1], 8); -- mp_set (&points_in->data[2], 7); -- mp_set (&points_in->data[3], 9); -- mu_check (poly_fft (points_out, points_in, cfg, false) == SECSuccess); -- -- for (int i=0; imodulus, &tmp) == MP_OKAY); -- mu_check (mp_mulmod(&tmp, &points_in->data[j], &cfg->modulus, &tmp) == MP_OKAY); -- mu_check (mp_addmod(&should_be, &tmp, &cfg->modulus, &should_be) == MP_OKAY); -- } -- -- /* -- puts("Should be:"); -- mp_print(&should_be, stdout); -- puts(""); -- mp_print(&points_out[i], stdout); -- puts(""); -- */ -- mu_check (mp_cmp (&should_be, &points_out->data[i]) == 0); -- } -- --cleanup: -- mu_check (rv == SECSuccess); -- mp_clear (&tmp); -- mp_clear (&should_be); -- MPArray_clear (points_in); -- MPArray_clear (points_out); -- PrioConfig_clear (cfg); --} -- --void --mu_test__fft_invert (void) --{ -- SECStatus rv = SECSuccess; -- const int nPoints = 8; -- -- PrioConfig cfg = NULL; -- MPArray points_in = NULL; -- MPArray points_out = NULL; -- MPArray points_out2 = NULL; -- mp_int roots[nPoints]; -- -- P_CHECKA (cfg = PrioConfig_newTest (91)); -- P_CHECKA (points_in = MPArray_new (nPoints)); -- P_CHECKA (points_out = MPArray_new (nPoints)); -- P_CHECKA (points_out2 = MPArray_new (nPoints)); -- -- poly_fft_get_roots (roots, nPoints, cfg, false); -- -- mp_set (&points_in->data[0], 3); -- mp_set (&points_in->data[1], 8); -- mp_set (&points_in->data[2], 7); -- mp_set (&points_in->data[3], 9); -- mp_set (&points_in->data[4], 123); -- mp_set (&points_in->data[5], 123123987); -- mp_set (&points_in->data[6], 2); -- mp_set (&points_in->data[7], 0); -- mu_check (poly_fft(points_out, points_in, cfg, false) == SECSuccess); -- mu_check (poly_fft(points_out2, points_out, cfg, true) == SECSuccess); -- -- for (int i=0; idata[i], &points_in->data[i]) == 0); -- } -- --cleanup: -- mu_check (rv == SECSuccess); -- -- MPArray_clear (points_in); -- MPArray_clear (points_out); -- MPArray_clear (points_out2); -- PrioConfig_clear (cfg); --} -diff --git a/third_party/prio/ptest/mkmutest b/third_party/prio/ptest/mkmutest -deleted file mode 100755 ---- a/third_party/prio/ptest/mkmutest -+++ /dev/null -@@ -1,65 +0,0 @@ --#!/usr/bin/env bash --# --# This file is part of mutest, a simple micro unit testing framework for C. --# --# mutest was written by Leandro Lucarella and is released --# under the BOLA license, please see the LICENSE file or visit: --# http://blitiri.com.ar/p/bola/ --# --# This is a simple script to generate a C file that runs all the test suites --# present in .o files passed as arguments. --# --# Please, read the README file for more details. --# -- -- --# the trick here is getting all the test cases present in an object file using --# nm. All the tests must take and return void, start with "mutest_" and, of --# course, should not be static, which leads to a small limitation: all test --# cases must have unique names, even across test suites. -- --# the first argument should be mutest.h --if [ -z "$1" ] --then -- echo "Too few arguments" >&2 -- echo "Usage: $0 mutest_h_location [object files...]" >&2 -- exit 1 --fi --mutest_h="$1" --shift --echo "#include \"$mutest_h\"" --echo "void mu_run_suites() {" --echo --for file in "$@" --do -- pr_file=`echo "$file" | sed 's/\"/\\\\\"/g'` -- suite=`basename "$file" .o | sed 's/\"/\\\\\"/g'` --#symbols=`nm "$file" | egrep '^[[:xdigit:]]{8} T mu_\w+$' | cut -c12-` -- symbols=`nm "$file" | egrep ' T _mu_\w+$' | cut -c21-` -- symbols+=`nm "$file" | egrep ' T mu_\w+$' | cut -c20-` -- tests=`echo "$symbols" | egrep '^mu_test'` -- inits=`echo "$symbols" | egrep '^mu_init'` -- terms=`echo "$symbols" | egrep '^mu_term'` -- echo -e '\tdo {' -- echo -e '\t\tmutest_suite_name = "'"$suite"'";' -- echo -e '\t\tmu_print(MU_SUITE, "\\nRunning suite '"'$suite'"'\\n");' -- for init in $inits -- do -- echo -e "\\t\\tmu_run_init($init);" -- done -- for testcase in $tests -- do -- echo -e "\t\tmu_run_case($testcase);" -- done -- for term in $terms -- do -- echo -e "\t\tmu_run_term($term);" -- done -- echo -e "\t\tif (mutest_suite_failed) ++mutest_failed_suites;" -- echo -e "\t\telse ++mutest_passed_suites;" -- echo -e "\t\tmutest_suite_failed = 0;" -- echo -e '\t} while (0);' -- echo --done --echo "}" -- -diff --git a/third_party/prio/ptest/mpi_test.c b/third_party/prio/ptest/mpi_test.c -deleted file mode 100644 ---- a/third_party/prio/ptest/mpi_test.c -+++ /dev/null -@@ -1,38 +0,0 @@ --/* -- * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -- * This Source Code Form is subject to the terms of the Mozilla Public -- * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -- */ -- --#include -- --#include "mutest.h" -- -- --void --mu_test_mpi__add (void) --{ -- mp_int a; -- mp_int b; -- mp_int c; -- -- mu_check (mp_init (&a) == MP_OKAY); -- mu_check (mp_init (&b) == MP_OKAY); -- mu_check (mp_init (&c) == MP_OKAY); -- -- mp_set (&a, 10); -- mp_set (&b, 7); -- mp_add (&a, &b, &c); -- -- mp_set (&a, 17); -- mu_check (mp_cmp (&a, &c) == 0); -- -- mp_clear (&a); -- mp_clear (&b); -- mp_clear (&c); --} -- -- -- -diff --git a/third_party/prio/ptest/mutest.h b/third_party/prio/ptest/mutest.h -deleted file mode 100644 ---- a/third_party/prio/ptest/mutest.h -+++ /dev/null -@@ -1,248 +0,0 @@ --/* -- * This file is part of mutest, a simple micro unit testing framework for C. -- * -- * mutest was written by Leandro Lucarella and is released -- * under the BOLA license, please see the LICENSE file or visit: -- * http://blitiri.com.ar/p/bola/ -- * -- * This header file should be included in the source files that will make up -- * a test suite. It's used for both C and Python implementation, but when -- * using the Python implementation you should define the MUTEST_PY macro. -- * If you implement your mu_run_suites() function yourself, you probably will -- * need to include this header too (see mkmutest). -- * -- * Please, read the README file for more details. -- */ -- --#include /* fprintf() */ -- --#ifdef __cplusplus --extern "C" { --#endif -- --/* verbosity level (each level shows all the previous levels too) */ --enum { -- MU_QUIET = 0, /* be completely quiet */ -- MU_ERROR, /* shows errors only */ -- MU_SUMMARY, /* shows a summary */ -- MU_SUITE, /* shows test suites progress */ -- MU_CASE, /* shows test cases progress */ -- MU_CHECK /* shows the current running check */ --}; -- --/* print a message according to the verbosity level */ --#define mu_print(level, ...) \ -- do { \ -- if (mutest_verbose_level >= level) { \ -- if (mutest_verbose_level == MU_ERROR) \ -- fprintf(stderr, __VA_ARGS__); \ -- else \ -- fprintf(stdout, __VA_ARGS__); \ -- } \ -- } while (0) -- --/* print an error message */ --#define mu_printerr(name, action) \ -- mu_print(MU_ERROR, __FILE__ ":%d: " name " failed, "\ -- action " test case\n", __LINE__); -- --/* modify the internal state so a failure gets counted */ --#define mutest_count_err ++mutest_failed_checks; mutest_case_failed = 1; -- --/* modify the internal state so a success gets counted */ --#define mutest_count_suc ++mutest_passed_checks; -- --#ifdef __cplusplus -- --#include -- --/* print an error message triggered by a C++ exception */ --#define mu_printex(name, action, ex) \ -- mu_print(MU_ERROR, __FILE__ ":%d: " name " failed, " \ -- "exception thrown (%s), " action \ -- " test case\n", __LINE__, ex); -- --#define mutest_try try { --#define mutest_catch(name, action, final) \ -- } catch (const std::exception& e) { \ -- mutest_count_err \ -- mu_printex(name, action, e.what()); \ -- final; \ -- } catch (...) { \ -- mutest_count_err \ -- mu_printex(name, action, "[unknown]"); \ -- final; \ -- } -- --#else /* !__cplusplus */ -- --#define mutest_try --#define mutest_catch(name, action, exp) -- --#endif /* __cplusplus */ -- --/* check that an expression evaluates to true, continue if the check fails */ --#define mu_check_base(exp, name, action, final) \ -- do { \ -- mu_print(MU_CHECK, "\t\t* Checking " name "(" #exp ")...\n"); \ -- mutest_try \ -- if (exp) mutest_count_suc \ -- else { \ -- mutest_count_err \ -- mu_printerr(name "(" #exp ")", action); \ -- final; \ -- } \ -- mutest_catch(name, action, final) \ -- } while (0) -- --/* check that an expression evaluates to true, continue if the check fails */ --#define mu_check(exp) mu_check_base(exp, "mu_check", "resuming", continue) -- --/* -- * ensure that an expression evaluates to true, abort the current test -- * case if the check fails -- */ --#define mu_ensure(exp) mu_check_base(exp, "mu_ensure", "aborting", return) -- --#ifdef __cplusplus -- --#define mu_echeck_base(ex, exp, name, action, final) \ -- do { \ -- mu_print(MU_CHECK, "\t\t* Checking " name "(" #ex ", " #exp \ -- ")...\n"); \ -- try { \ -- exp; \ -- mutest_count_err \ -- mu_printerr(name "(" #ex ", " #exp ")", \ -- "no exception thrown, " action); \ -- final; \ -- } catch (const ex& e) { \ -- mutest_count_suc \ -- } catch (const std::exception& e) { \ -- mutest_count_err \ -- mu_printex(name "(" #ex ", " #exp ")", action, \ -- e.what()); \ -- final; \ -- } catch (...) { \ -- mutest_count_err \ -- mu_printex(name "(" #ex ", " #exp ")", action, \ -- "[unknown]"); \ -- final; \ -- } \ -- } while (0) -- --/* -- * check that an expression throws a particular exception, continue if the -- * check fails -- */ --#define mu_echeck(ex, exp) \ -- mu_echeck_base(ex, exp, "mu_echeck", "resuming", continue) -- --/* -- * ensure that an expression throws a particular exception, abort the current -- * test case if the check fails -- */ --#define mu_eensure(ex, exp) \ -- mu_echeck_base(ex, exp, "mu_eensure", "aborting", return) -- --#endif /* __cplusplus */ -- --#ifndef MUTEST_PY /* we are using the C implementation */ -- --/* -- * this function implements the test suites execution, you should generate -- * a module with this function using mkmutest, or take a look to that script -- * if you want to implement your own customized version */ --void mu_run_suites(); -- --/* macro for running a single initialization function */ --#ifndef mu_run_init --#define mu_run_init(name) \ -- { \ -- int name(); \ -- int r; \ -- mu_print(MU_CASE, "\t+ Executing initialization function " \ -- "'" #name "'...\n"); \ -- if ((r = name())) { \ -- mu_print(MU_ERROR, "%s:" #name ": initialization " \ -- "function failed (returned %d), " \ -- "skipping test suite...\n", \ -- mutest_suite_name, r); \ -- ++mutest_skipped_suites; \ -- break; \ -- } \ -- } do { } while (0) --#endif /* mu_run_init */ -- --/* macro for running a single test case */ --#ifndef mu_run_case --#define mu_run_case(name) \ -- do { \ -- mu_print(MU_CASE, "\t* Executing test case '" #name "'...\n");\ -- mutest_case_name = #name; \ -- void name(); \ -- name(); \ -- if (mutest_case_failed) { \ -- ++mutest_failed_cases; \ -- mutest_suite_failed = 1; \ -- } else ++mutest_passed_cases; \ -- mutest_case_failed = 0; \ -- } while (0) --#endif /* mu_run_case */ -- --/* macro for running a single termination function */ --#ifndef mu_run_term --#define mu_run_term(name) \ -- do { \ -- mu_print(MU_CASE, "\t- Executing termination function '" \ -- #name "'...\n"); \ -- void name(); \ -- name(); \ -- } while (0) --#endif /* mu_run_term */ -- --/* -- * mutest exported variables for internal use, do not use directly unless you -- * know what you're doing. -- */ --extern const char* mutest_suite_name; --extern int mutest_failed_suites; --extern int mutest_passed_suites; --extern int mutest_skipped_suites; --extern int mutest_suite_failed; --/* test cases */ --extern const char* mutest_case_name; --extern int mutest_failed_cases; --extern int mutest_passed_cases; --extern int mutest_case_failed; --/* checks */ --extern int mutest_failed_checks; --extern int mutest_passed_checks; --/* verbosity */ --extern int mutest_verbose_level; -- --#else /* MUTEST_PY is defined, using the Python implementation */ -- --/* this increments when the "API" changes, it's just for sanity check */ --int mutest_api_version = 1; -- --int mutest_case_failed; /* unused, for C implementation compatibility */ -- --int mutest_passed_checks; --int mutest_failed_checks; --void mutest_reset_counters() { -- mutest_passed_checks = 0; -- mutest_failed_checks = 0; --} -- --int mutest_verbose_level = MU_ERROR; --void mutest_set_verbose_level(int val) { -- mutest_verbose_level = val; --} -- --#endif /* MUTEST_PY */ -- --#ifdef __cplusplus --} --#endif -- -diff --git a/third_party/prio/ptest/mutest.c b/third_party/prio/ptest/mutest.c -deleted file mode 100644 ---- a/third_party/prio/ptest/mutest.c -+++ /dev/null -@@ -1,94 +0,0 @@ --/* -- * This file is part of mutest, a simple micro unit testing framework for C. -- * -- * mutest was written by Leandro Lucarella and is released -- * under the BOLA license, please see the LICENSE file or visit: -- * http://blitiri.com.ar/p/bola/ -- * -- * This is the main program, it runs all the test suites and shows the -- * results. The main work (of running the test suite) is done by the (usually) -- * synthesized mu_run_suites() function, which can be generated using the -- * mkmutest script (or written manually). -- * -- * Please, read the README file for more details. -- */ -- --#include --#include /* printf(), fprintf() */ --#include /* strncmp() */ -- --#include "mutest.h" /* MU_* constants, mu_print() */ -- --/* -- * note that all global variables are public because they need to be accessed -- * from other modules, like the test suites or the module implementing -- * mu_run_suites() -- */ -- --/* globals for managing test suites */ --const char* mutest_suite_name; --int mutest_failed_suites; --int mutest_passed_suites; --int mutest_skipped_suites; --int mutest_suite_failed; -- -- --/* globals for managing test cases */ --const char* mutest_case_name; --int mutest_failed_cases; --int mutest_passed_cases; --int mutest_case_failed; -- -- --/* globals for managing checks */ --int mutest_failed_checks; --int mutest_passed_checks; -- -- --/* verbosity level, see mutest.h */ --int mutest_verbose_level = 1; /* exported for use in test suites */ -- -- -- --/* -- * only -v is supported right now, both "-v -v" and "-vv" are accepted for -- * increasing the verbosity by 2. -- */ --void parse_args(__attribute__((unused)) int argc, char* argv[]) { -- while (*++argv) { -- if (strncmp(*argv, "-v", 2) == 0) { -- ++mutest_verbose_level; -- char* c = (*argv) + 1; -- while (*++c) { -- if (*c != 'v') -- break; -- ++mutest_verbose_level; -- } -- } -- } --} -- -- --int main(int argc, char* argv[]) { -- -- Prio_init (); -- parse_args(argc, argv); -- -- mu_run_suites(); -- -- Prio_clear (); -- -- mu_print(MU_SUMMARY, "\n" -- "Tests done:\n" -- "\t%d test suite(s) passed, %d failed, %d skipped.\n" -- "\t%d test case(s) passed, %d failed.\n" -- "\t%d check(s) passed, %d failed.\n" -- "\n", -- mutest_passed_suites, mutest_failed_suites, -- mutest_skipped_suites, -- mutest_passed_cases, mutest_failed_cases, -- mutest_passed_checks, mutest_failed_checks); -- -- return (mutest_failed_suites + mutest_skipped_suites) ? 1 : 0; --} -- -diff --git a/third_party/prio/ptest/prg_test.c b/third_party/prio/ptest/prg_test.c -deleted file mode 100644 ---- a/third_party/prio/ptest/prg_test.c -+++ /dev/null -@@ -1,345 +0,0 @@ --/* -- * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -- * This Source Code Form is subject to the terms of the Mozilla Public -- * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -- */ -- --#include -- --#include "mutest.h" --#include "prio/prg.h" --#include "prio/util.h" -- --void --mu_test__prg_simple (void) --{ -- SECStatus rv = SECSuccess; -- PrioPRGSeed key; -- PRG prg = NULL; -- -- P_CHECKC (PrioPRGSeed_randomize (&key)); -- P_CHECKA (prg = PRG_new (key)); -- --cleanup: -- mu_check (rv == SECSuccess); -- PRG_clear (prg); --} -- --void --mu_test__prg_repeat (void) --{ -- SECStatus rv = SECSuccess; -- const int buflen = 10000; -- unsigned char buf1[buflen]; -- unsigned char buf2[buflen]; -- -- PrioPRGSeed key; -- PRG prg1 = NULL; -- PRG prg2 = NULL; -- -- buf1[3] = 'a'; -- buf2[3] = 'b'; -- -- P_CHECKC (PrioPRGSeed_randomize (&key)); -- P_CHECKA (prg1 = PRG_new (key)); -- P_CHECKA (prg2 = PRG_new (key)); -- -- P_CHECKC (PRG_get_bytes (prg1, buf1, buflen)); -- P_CHECKC (PRG_get_bytes (prg2, buf2, buflen)); -- -- bool all_zero = true; -- for (int i=0; i -1); -- --cleanup: -- mu_check (rv == SECSuccess); -- mp_clear (&max); -- mp_clear (&out); -- PRG_clear (prg); --} -- --void --mu_test_prg__multiple_of_8 (void) --{ -- test_prg_once (256); -- test_prg_once (256*256); --} -- -- --void --mu_test_prg__near_multiple_of_8 (void) --{ -- test_prg_once (256+1); -- test_prg_once (256*256+1); --} -- --void --mu_test_prg__odd (void) --{ -- test_prg_once (39); -- test_prg_once (123); -- test_prg_once (993123); --} -- --void --mu_test_prg__large (void) --{ -- test_prg_once (1231239933); --} -- --void --mu_test_prg__bit(void) --{ -- test_prg_once (1); -- for (int i = 0; i < 100; i++) -- test_prg_once (2); --} -- --void --test_prg_distribution (int limit) --{ -- int bins[limit]; -- SECStatus rv = SECSuccess; -- PrioPRGSeed key; -- mp_int max; -- mp_int out; -- PRG prg = NULL; -- -- MP_DIGITS (&max) = NULL; -- MP_DIGITS (&out) = NULL; -- -- P_CHECKC (PrioPRGSeed_randomize (&key)); -- P_CHECKA (prg = PRG_new (key)); -- -- MP_CHECKC (mp_init (&max)); -- MP_CHECKC (mp_init (&out)); -- -- mp_set (&max, limit); -- -- for (int i = 0; i < limit; i++) { -- bins[i] = 0; -- } -- -- for (int i = 0; i < limit*limit; i++) { -- P_CHECKC (PRG_get_int (prg, &out, &max)); -- mu_check (mp_cmp_d (&out, limit) == -1); -- mu_check (mp_cmp_z (&out) > -1); -- -- unsigned char ival[2] = {0x00, 0x00}; -- MP_CHECKC (mp_to_fixlen_octets (&out, ival, 2)); -- if (ival[1] + 256*ival[0] < limit) { -- bins[ival[1] + 256*ival[0]] += 1; -- } else { -- mu_check (false); -- } -- } -- -- for (int i = 0; i < limit; i++) { -- mu_check (bins[i] > limit/2); -- } -- --cleanup: -- mu_check (rv == SECSuccess); -- mp_clear (&max); -- mp_clear (&out); -- PRG_clear (prg); --} -- -- --void --mu_test__prg_distribution123 (void) --{ -- test_prg_distribution(123); --} -- --void --mu_test__prg_distribution257 (void) --{ -- test_prg_distribution(257); --} -- --void --mu_test__prg_distribution259 (void) --{ -- test_prg_distribution(259); --} -- --void --test_prg_distribution_large (mp_int *max) --{ -- const int limit = 16; -- int bins[limit]; -- SECStatus rv = SECSuccess; -- PrioPRGSeed key; -- mp_int out; -- PRG prg = NULL; -- -- MP_DIGITS (&out) = NULL; -- -- P_CHECKC (PrioPRGSeed_randomize (&key)); -- P_CHECKA (prg = PRG_new (key)); -- -- MP_CHECKC (mp_init (&out)); -- -- for (int i = 0; i < limit; i++) { -- bins[i] = 0; -- } -- -- for (int i = 0; i < 100*limit*limit; i++) { -- MP_CHECKC (PRG_get_int (prg, &out, max)); -- mu_check (mp_cmp (&out, max) == -1); -- mu_check (mp_cmp_z (&out) > -1); -- -- unsigned long res; -- MP_CHECKC (mp_mod_d (&out, limit, &res)); -- bins[res] += 1; -- } -- -- for (int i = 0; i < limit; i++) { -- mu_check (bins[i] > limit/2); -- } -- --cleanup: -- mu_check (rv == SECSuccess); -- mp_clear (&out); -- PRG_clear (prg); --} -- --void --mu_test__prg_distribution_large (void) --{ -- SECStatus rv = SECSuccess; -- mp_int max; -- MP_DIGITS (&max) = NULL; -- MP_CHECKC (mp_init (&max)); -- -- char bytes[] = "FF1230985198451798EDC8123"; -- MP_CHECKC (mp_read_radix (&max, bytes, 16)); -- test_prg_distribution_large (&max); -- --cleanup: -- mu_check (rv == SECSuccess); -- mp_clear (&max); --} -- -- --void --mu_test__prg_share_arr (void) --{ -- SECStatus rv = SECSuccess; -- PrioConfig cfg = NULL; -- MPArray arr = NULL; -- MPArray arr_share = NULL; -- PRG prg = NULL; -- PrioPRGSeed seed; -- -- P_CHECKA (cfg = PrioConfig_newTest (72)); -- P_CHECKC (PrioPRGSeed_randomize (&seed)); -- P_CHECKA (arr = MPArray_new (10)); -- P_CHECKA (arr_share = MPArray_new (10)); -- P_CHECKA (prg = PRG_new (seed)); -- -- for (int i=0; i<10; i++) { -- mp_set (&arr->data[i], i); -- } -- -- P_CHECKC (PRG_share_array (prg, arr_share, arr, cfg)); -- -- // Reset PRG -- PRG_clear (prg); -- P_CHECKA (prg = PRG_new (seed)); -- -- // Read pseudorandom values into arr -- P_CHECKC (PRG_get_array (prg, arr, &cfg->modulus)); -- -- -- for (int i=0; i<10; i++) { -- MP_CHECKC (mp_addmod (&arr->data[i], &arr_share->data[i], -- &cfg->modulus, &arr->data[i])); -- mu_check (mp_cmp_d (&arr->data[i], i) == 0); -- } -- --cleanup: -- mu_check (rv == SECSuccess); -- -- PRG_clear (prg); -- MPArray_clear (arr); -- MPArray_clear (arr_share); -- PrioConfig_clear (cfg); --} -diff --git a/third_party/prio/ptest/rand_test.c b/third_party/prio/ptest/rand_test.c -deleted file mode 100644 ---- a/third_party/prio/ptest/rand_test.c -+++ /dev/null -@@ -1,194 +0,0 @@ --/* -- * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -- * This Source Code Form is subject to the terms of the Mozilla Public -- * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -- */ -- --#include -- --#include "mutest.h" --#include "prio/rand.h" --#include "prio/util.h" -- --void --mu_test__util_msb_mast (void) --{ -- mu_check (msb_mask (0x01) == 0x01); -- mu_check (msb_mask (0x02) == 0x03); -- mu_check (msb_mask (0x0C) == 0x0F); -- mu_check (msb_mask (0x1C) == 0x1F); -- mu_check (msb_mask (0xFF) == 0xFF); --} -- --void --test_rand_once (int limit) --{ -- mp_int max; -- mp_int out; -- -- mu_check (mp_init (&max) == MP_OKAY); -- mu_check (mp_init (&out) == MP_OKAY); -- -- mp_set (&max, limit); -- -- mu_check (rand_int (&out, &max) == MP_OKAY); -- mu_check (mp_cmp_d (&out, limit) == -1); -- mu_check (mp_cmp_z (&out) > -1); -- -- mp_clear (&max); -- mp_clear (&out); --} -- --void --mu_test_rand__multiple_of_8 (void) --{ -- test_rand_once (256); -- test_rand_once (256*256); --} -- -- --void --mu_test_rand__near_multiple_of_8 (void) --{ -- test_rand_once (256+1); -- test_rand_once (256*256+1); --} -- --void --mu_test_rand__odd (void) --{ -- test_rand_once (39); -- test_rand_once (123); -- test_rand_once (993123); --} -- --void --mu_test_rand__large (void) --{ -- test_rand_once (1231239933); --} -- --void --mu_test_rand__bit(void) --{ -- test_rand_once (1); -- for (int i = 0; i < 100; i++) -- test_rand_once (2); --} -- --void --test_rand_distribution (int limit) --{ -- SECStatus rv = SECSuccess; -- int bins[limit]; -- -- mp_int max; -- mp_int out; -- -- MP_DIGITS (&max) = NULL; -- MP_DIGITS (&out) = NULL; -- -- MP_CHECKC (mp_init (&max)); -- MP_CHECKC (mp_init (&out)); -- -- mp_set (&max, limit); -- -- for (int i = 0; i < limit; i++) { -- bins[i] = 0; -- } -- -- for (int i = 0; i < limit*limit; i++) { -- mu_check (rand_int (&out, &max) == MP_OKAY); -- mu_check (mp_cmp_d (&out, limit) == -1); -- mu_check (mp_cmp_z (&out) > -1); -- -- unsigned char ival[2] = {0x00, 0x00}; -- MP_CHECKC (mp_to_fixlen_octets (&out, ival, 2)); -- if (ival[1] + 256*ival[0] < limit) { -- bins[ival[1] + 256*ival[0]] += 1; -- } else { -- mu_check (false); -- } -- } -- -- for (int i = 0; i < limit; i++) { -- mu_check (bins[i] > limit/2); -- } -- --cleanup: -- mu_check (rv == SECSuccess); -- mp_clear (&max); -- mp_clear (&out); --} -- -- --void --mu_test__rand_distribution123 (void) --{ -- test_rand_distribution(123); --} -- --void --mu_test__rand_distribution257 (void) --{ -- test_rand_distribution(257); --} -- --void --mu_test__rand_distribution259 (void) --{ -- test_rand_distribution(259); --} -- --void --test_rand_distribution_large (mp_int *max) --{ -- SECStatus rv = SECSuccess; -- int limit = 16; -- int bins[limit]; -- -- mp_int out; -- MP_DIGITS (&out) = NULL; -- MP_CHECKC (mp_init (&out)); -- -- for (int i = 0; i < limit; i++) { -- bins[i] = 0; -- } -- -- for (int i = 0; i < 100*limit*limit; i++) { -- MP_CHECKC (rand_int (&out, max)); -- mu_check (mp_cmp (&out, max) == -1); -- mu_check (mp_cmp_z (&out) > -1); -- -- unsigned long res; -- MP_CHECKC (mp_mod_d (&out, limit, &res)); -- bins[res] += 1; -- } -- -- for (int i = 0; i < limit; i++) { -- mu_check (bins[i] > limit/2); -- } -- --cleanup: -- mu_check (rv == SECSuccess); -- mp_clear (&out); --} -- --void --mu_test__rand_distribution_large (void) --{ -- SECStatus rv = SECSuccess; -- mp_int max; -- MP_DIGITS (&max) = NULL; -- MP_CHECKC (mp_init (&max)); -- -- char bytes[] = "FF1230985198451798EDC8123"; -- MP_CHECKC (mp_read_radix (&max, bytes, 16)); -- test_rand_distribution_large (&max); -- --cleanup: -- mu_check (rv == SECSuccess); -- mp_clear (&max); --} -diff --git a/third_party/prio/ptest/serial_test.c b/third_party/prio/ptest/serial_test.c -deleted file mode 100644 ---- a/third_party/prio/ptest/serial_test.c -+++ /dev/null -@@ -1,319 +0,0 @@ --/* -- * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -- * This Source Code Form is subject to the terms of the Mozilla Public -- * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -- */ -- --#include --#include --#include -- --#include "mutest.h" --#include "prio/client.h" --#include "prio/config.h" --#include "prio/serial.h" --#include "prio/server.h" --#include "prio/util.h" -- --SECStatus --gen_client_packets (const_PrioConfig cfg, PrioPacketClient pA, PrioPacketClient pB) --{ -- SECStatus rv = SECSuccess; -- -- const int ndata = cfg->num_data_fields; -- bool data_items[ndata]; -- -- for (int i=0; i < ndata; i++) { -- data_items[i] = (i % 3 == 1) || (i % 5 == 3); -- } -- -- P_CHECKC (PrioPacketClient_set_data (cfg, data_items, pA, pB)); -- --cleanup: -- return rv; --} -- -- --void serial_client (int bad) --{ -- SECStatus rv = SECSuccess; -- PrioConfig cfg = NULL; -- PrioConfig cfg2 = NULL; -- PrioPacketClient pA = NULL; -- PrioPacketClient pB = NULL; -- PrioPacketClient qA = NULL; -- PrioPacketClient qB = NULL; -- -- const unsigned char *batch_id1 = (unsigned char *)"my_test_prio_batch1"; -- const unsigned char *batch_id2 = (unsigned char *)"my_test_prio_batch2"; -- const unsigned int batch_id_len = strlen ((char *)batch_id1); -- -- msgpack_sbuffer sbufA, sbufB; -- msgpack_packer pkA, pkB; -- msgpack_unpacker upkA, upkB; -- -- msgpack_sbuffer_init (&sbufA); -- msgpack_packer_init (&pkA, &sbufA, msgpack_sbuffer_write); -- -- msgpack_sbuffer_init (&sbufB); -- msgpack_packer_init (&pkB, &sbufB, msgpack_sbuffer_write); -- -- P_CHECKA (cfg = PrioConfig_new (100, NULL, NULL, batch_id1, batch_id_len)); -- P_CHECKA (cfg2 = PrioConfig_new (100, NULL, NULL, batch_id2, batch_id_len)); -- P_CHECKA (pA = PrioPacketClient_new (cfg, PRIO_SERVER_A)); -- P_CHECKA (pB = PrioPacketClient_new (cfg, PRIO_SERVER_B)); -- P_CHECKA (qA = PrioPacketClient_new (cfg, PRIO_SERVER_A)); -- P_CHECKA (qB = PrioPacketClient_new (cfg, PRIO_SERVER_B)); -- -- P_CHECKC (gen_client_packets (cfg, pA, pB)); -- -- P_CHECKC (serial_write_packet_client (&pkA, pA, cfg)); -- P_CHECKC (serial_write_packet_client (&pkB, pB, cfg)); -- -- if (bad == 1) { -- sbufA.size = 1; -- } -- -- if (bad == 2) { -- memset (sbufA.data, 0, sbufA.size); -- } -- -- const int size_a = sbufA.size; -- const int size_b = sbufB.size; -- -- P_CHECKCB (msgpack_unpacker_init (&upkA, 0)); -- P_CHECKCB (msgpack_unpacker_init (&upkB, 0)); -- -- P_CHECKCB (msgpack_unpacker_reserve_buffer (&upkA, size_a)); -- P_CHECKCB (msgpack_unpacker_reserve_buffer (&upkB, size_b)); -- -- memcpy (msgpack_unpacker_buffer (&upkA), sbufA.data, size_a); -- memcpy (msgpack_unpacker_buffer (&upkB), sbufB.data, size_b); -- -- msgpack_unpacker_buffer_consumed (&upkA, size_a); -- msgpack_unpacker_buffer_consumed (&upkB, size_b); -- -- P_CHECKC (serial_read_packet_client (&upkA, qA, cfg)); -- P_CHECKC (serial_read_packet_client (&upkB, qB, (bad == 3) ? cfg2 : cfg)); -- -- if (!bad) { -- mu_check (PrioPacketClient_areEqual (pA, qA)); -- mu_check (PrioPacketClient_areEqual (pB, qB)); -- mu_check (!PrioPacketClient_areEqual (pB, qA)); -- mu_check (!PrioPacketClient_areEqual (pA, qB)); -- } -- --cleanup: -- PrioPacketClient_clear (pA); -- PrioPacketClient_clear (pB); -- PrioPacketClient_clear (qA); -- PrioPacketClient_clear (qB); -- PrioConfig_clear (cfg); -- PrioConfig_clear (cfg2); -- msgpack_sbuffer_destroy (&sbufA); -- msgpack_sbuffer_destroy (&sbufB); -- msgpack_unpacker_destroy (&upkA); -- msgpack_unpacker_destroy (&upkB); -- mu_check (bad ? rv == SECFailure : rv == SECSuccess); --} -- -- --void mu_test__serial_client (void) --{ -- serial_client (0); --} -- --void mu_test__serial_client_bad1 (void) --{ -- serial_client (1); --} -- --void mu_test__serial_client_bad2 (void) --{ -- serial_client (2); --} -- --void mu_test__serial_client_bad3 (void) --{ -- serial_client (3); --} -- --void test_verify1 (int bad) --{ -- SECStatus rv = SECSuccess; -- PrioPacketVerify1 v1 = NULL; -- PrioPacketVerify1 v2 = NULL; -- PrioConfig cfg = NULL; -- -- P_CHECKA (cfg = PrioConfig_newTest (1)); -- P_CHECKA (v1 = PrioPacketVerify1_new()); -- P_CHECKA (v2 = PrioPacketVerify1_new()); -- mp_set (&v1->share_d, 4); -- mp_set (&v1->share_e, 10); -- -- msgpack_sbuffer sbuf; -- msgpack_packer pk; -- msgpack_unpacker upk; -- -- msgpack_sbuffer_init (&sbuf); -- msgpack_packer_init (&pk, &sbuf, msgpack_sbuffer_write); -- -- P_CHECKC (PrioPacketVerify1_write (v1, &pk)); -- -- if (bad == 1) { -- mp_set (&cfg->modulus, 6); -- } -- -- P_CHECKCB (msgpack_unpacker_init (&upk, 0)); -- P_CHECKCB (msgpack_unpacker_reserve_buffer (&upk, sbuf.size)); -- memcpy (msgpack_unpacker_buffer (&upk), sbuf.data, sbuf.size); -- msgpack_unpacker_buffer_consumed (&upk, sbuf.size); -- -- P_CHECKC (PrioPacketVerify1_read (v2, &upk, cfg)); -- -- mu_check (!mp_cmp (&v1->share_d, &v2->share_d)); -- mu_check (!mp_cmp (&v1->share_e, &v2->share_e)); -- mu_check (!mp_cmp_d (&v2->share_d, 4)); -- mu_check (!mp_cmp_d (&v2->share_e, 10)); -- --cleanup: -- mu_check (bad ? rv == SECFailure : rv == SECSuccess); -- PrioConfig_clear (cfg); -- PrioPacketVerify1_clear (v1); -- PrioPacketVerify1_clear (v2); -- msgpack_unpacker_destroy (&upk); -- msgpack_sbuffer_destroy (&sbuf); --} -- --void mu_test_verify1_good (void) --{ -- test_verify1 (0); --} -- --void mu_test_verify1_bad (void) --{ -- test_verify1 (1); --} -- --void test_verify2 (int bad) --{ -- SECStatus rv = SECSuccess; -- PrioPacketVerify2 v1 = NULL; -- PrioPacketVerify2 v2 = NULL; -- PrioConfig cfg = NULL; -- -- P_CHECKA (cfg = PrioConfig_newTest (1)); -- P_CHECKA (v1 = PrioPacketVerify2_new()); -- P_CHECKA (v2 = PrioPacketVerify2_new()); -- mp_set (&v1->share_out, 4); -- -- msgpack_sbuffer sbuf; -- msgpack_packer pk; -- msgpack_unpacker upk; -- -- msgpack_sbuffer_init (&sbuf); -- msgpack_packer_init (&pk, &sbuf, msgpack_sbuffer_write); -- -- P_CHECKC (PrioPacketVerify2_write (v1, &pk)); -- -- if (bad == 1) { -- mp_set (&cfg->modulus, 4); -- } -- -- P_CHECKCB (msgpack_unpacker_init (&upk, 0)); -- P_CHECKCB (msgpack_unpacker_reserve_buffer (&upk, sbuf.size)); -- memcpy (msgpack_unpacker_buffer (&upk), sbuf.data, sbuf.size); -- msgpack_unpacker_buffer_consumed (&upk, sbuf.size); -- -- P_CHECKC (PrioPacketVerify2_read (v2, &upk, cfg)); -- -- mu_check (!mp_cmp (&v1->share_out, &v2->share_out)); -- mu_check (!mp_cmp_d (&v2->share_out, 4)); -- --cleanup: -- mu_check (bad ? rv == SECFailure : rv == SECSuccess); -- PrioConfig_clear (cfg); -- PrioPacketVerify2_clear (v1); -- PrioPacketVerify2_clear (v2); -- msgpack_unpacker_destroy (&upk); -- msgpack_sbuffer_destroy (&sbuf); --} -- --void mu_test_verify2_good (void) --{ -- test_verify2 (0); --} -- --void mu_test_verify2_bad (void) --{ -- test_verify2 (1); --} -- -- --void test_total_share (int bad) --{ -- SECStatus rv = SECSuccess; -- PrioTotalShare t1 = NULL; -- PrioTotalShare t2 = NULL; -- PrioConfig cfg = NULL; -- -- P_CHECKA (cfg = PrioConfig_newTest ((bad == 2 ? 4 : 3))); -- P_CHECKA (t1 = PrioTotalShare_new ()); -- P_CHECKA (t2 = PrioTotalShare_new ()); -- -- t1->idx = PRIO_SERVER_A; -- P_CHECKC (MPArray_resize (t1->data_shares, 3)); -- -- mp_set (&t1->data_shares->data[0], 10); -- mp_set (&t1->data_shares->data[1], 20); -- mp_set (&t1->data_shares->data[2], 30); -- -- msgpack_sbuffer sbuf; -- msgpack_packer pk; -- msgpack_unpacker upk; -- -- msgpack_sbuffer_init (&sbuf); -- msgpack_packer_init (&pk, &sbuf, msgpack_sbuffer_write); -- -- P_CHECKC (PrioTotalShare_write (t1, &pk)); -- -- if (bad == 1) { -- mp_set (&cfg->modulus, 4); -- } -- -- P_CHECKCB (msgpack_unpacker_init (&upk, 0)); -- P_CHECKCB (msgpack_unpacker_reserve_buffer (&upk, sbuf.size)); -- memcpy (msgpack_unpacker_buffer (&upk), sbuf.data, sbuf.size); -- msgpack_unpacker_buffer_consumed (&upk, sbuf.size); -- -- P_CHECKC (PrioTotalShare_read (t2, &upk, cfg)); -- -- mu_check (t1->idx == t2->idx); -- mu_check (MPArray_areEqual (t1->data_shares, t2->data_shares)); -- --cleanup: -- mu_check (bad ? rv == SECFailure : rv == SECSuccess); -- PrioConfig_clear (cfg); -- PrioTotalShare_clear (t1); -- PrioTotalShare_clear (t2); -- msgpack_unpacker_destroy (&upk); -- msgpack_sbuffer_destroy (&sbuf); --} -- --void mu_test_total_good (void) --{ -- test_total_share (0); --} -- --void mu_test_total_bad1 (void) --{ -- test_total_share (1); --} -- --void mu_test_total_bad2 (void) --{ -- test_total_share (2); --} -- -diff --git a/third_party/prio/ptest/server_test.c b/third_party/prio/ptest/server_test.c -deleted file mode 100644 ---- a/third_party/prio/ptest/server_test.c -+++ /dev/null -@@ -1,298 +0,0 @@ --/* -- * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -- * This Source Code Form is subject to the terms of the Mozilla Public -- * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -- */ -- --#include --#include -- --#include "mutest.h" --#include "prio/client.h" --#include "prio/server.h" --#include "prio/server.c" -- --void mu_test__eval_poly (void) --{ -- SECStatus rv = SECSuccess; -- PrioConfig cfg = NULL; -- MPArray coeffs = NULL; -- mp_int eval_at, out; -- -- MP_DIGITS (&eval_at) = NULL; -- MP_DIGITS (&out) = NULL; -- -- P_CHECKA (cfg = PrioConfig_newTest (54)); -- P_CHECKA (coeffs = MPArray_new (3)); -- -- mp_set (&coeffs->data[0], 2); -- mp_set (&coeffs->data[1], 8); -- mp_set (&coeffs->data[2], 3); -- -- MP_CHECKC (mp_init (&eval_at)); -- MP_CHECKC (mp_init (&out)); -- mp_set (&eval_at, 7); -- -- const int val = 3*7*7 + 8*7 + 2; -- mu_check (poly_eval (&out, coeffs, &eval_at, cfg) == SECSuccess); -- mu_check (mp_cmp_d (&out, val) == 0); -- --cleanup: -- mu_check (rv == SECSuccess); -- mp_clear (&out); -- mp_clear (&eval_at); -- MPArray_clear (coeffs); -- PrioConfig_clear (cfg); --} -- --void --mu_test__verify_new (void) --{ -- SECStatus rv = SECSuccess; -- PublicKey pkA = NULL; -- PublicKey pkB = NULL; -- PrivateKey skA = NULL; -- PrivateKey skB = NULL; -- PrioConfig cfg = NULL; -- PrioServer sA = NULL; -- PrioServer sB = NULL; -- PrioVerifier vA = NULL; -- PrioVerifier vB = NULL; -- unsigned char *for_a = NULL; -- unsigned char *for_b = NULL; -- -- mp_int fR, gR, hR; -- MP_DIGITS (&fR) = NULL; -- MP_DIGITS (&gR) = NULL; -- MP_DIGITS (&hR) = NULL; -- -- PrioPRGSeed seed; -- P_CHECKC (PrioPRGSeed_randomize (&seed)); -- -- P_CHECKC (Keypair_new (&skA, &pkA)); -- P_CHECKC (Keypair_new (&skB, &pkB)); -- P_CHECKA (cfg = PrioConfig_new (214, pkA, pkB, -- (unsigned char *)"testbatch", 9)); -- -- const int ndata = PrioConfig_numDataFields (cfg); -- { -- bool data_items[ndata]; -- for (int i=0; i < ndata; i++) { -- // Arbitrary data -- data_items[i] = (i % 3 == 1) || (i % 5 == 3); -- } -- -- P_CHECKA (sA = PrioServer_new (cfg, 0, skA, seed)); -- P_CHECKA (sB = PrioServer_new (cfg, 1, skB, seed)); -- -- unsigned int aLen, bLen; -- P_CHECKC (PrioClient_encode (cfg, data_items, &for_a, &aLen, &for_b, &bLen)); -- -- MP_CHECKC (mp_init (&fR)); -- MP_CHECKC (mp_init (&gR)); -- MP_CHECKC (mp_init (&hR)); -- -- P_CHECKA (vA = PrioVerifier_new (sA)); -- P_CHECKA (vB = PrioVerifier_new (sB)); -- P_CHECKC (PrioVerifier_set_data (vA, for_a, aLen)); -- P_CHECKC (PrioVerifier_set_data (vB, for_b, bLen)); -- -- PrioPacketClient pA = vA->clientp; -- PrioPacketClient pB = vB->clientp; -- MP_CHECKC (mp_addmod (&pA->f0_share, &pB->f0_share, &cfg->modulus, &fR)); -- MP_CHECKC (mp_addmod (&pA->g0_share, &pB->g0_share, &cfg->modulus, &gR)); -- MP_CHECKC (mp_addmod (&pA->h0_share, &pB->h0_share, &cfg->modulus, &hR)); -- -- MP_CHECKC (mp_mulmod (&fR, &gR, &cfg->modulus, &fR)); -- mu_check (mp_cmp (&fR, &hR) == 0); -- -- -- MP_CHECKC (mp_addmod (&vA->share_fR, &vB->share_fR, &cfg->modulus, &fR)); -- MP_CHECKC (mp_addmod (&vA->share_gR, &vB->share_gR, &cfg->modulus, &gR)); -- MP_CHECKC (mp_addmod (&vA->share_hR, &vB->share_hR, &cfg->modulus, &hR)); -- -- MP_CHECKC (mp_mulmod (&fR, &gR, &cfg->modulus, &fR)); -- -- //puts ("fR"); -- //mp_print (&fR, stdout); -- //puts ("hR"); -- //mp_print (&hR, stdout); -- mu_check (mp_cmp (&fR, &hR) == 0); -- } -- --cleanup: -- mu_check (rv == SECSuccess); -- -- if (for_a) free (for_a); -- if (for_b) free (for_b); -- -- mp_clear (&fR); -- mp_clear (&gR); -- mp_clear (&hR); -- -- PrioVerifier_clear (vA); -- PrioVerifier_clear (vB); -- -- PrioServer_clear (sA); -- PrioServer_clear (sB); -- PrioConfig_clear (cfg); -- -- PublicKey_clear (pkA); -- PublicKey_clear (pkB); -- PrivateKey_clear (skA); -- PrivateKey_clear (skB); -- --} -- --void --verify_full (int tweak) --{ -- SECStatus rv = SECSuccess; -- PublicKey pkA = NULL; -- PublicKey pkB = NULL; -- PrivateKey skA = NULL; -- PrivateKey skB = NULL; -- PrioConfig cfg = NULL; -- PrioServer sA = NULL; -- PrioServer sB = NULL; -- PrioVerifier vA = NULL; -- PrioVerifier vB = NULL; -- PrioPacketVerify1 p1A = NULL; -- PrioPacketVerify1 p1B = NULL; -- PrioPacketVerify2 p2A = NULL; -- PrioPacketVerify2 p2B = NULL; -- unsigned char *for_a = NULL; -- unsigned char *for_b = NULL; -- -- mp_int fR, gR, hR; -- MP_DIGITS (&fR) = NULL; -- MP_DIGITS (&gR) = NULL; -- MP_DIGITS (&hR) = NULL; -- -- PrioPRGSeed seed; -- P_CHECKC (PrioPRGSeed_randomize (&seed)); -- -- P_CHECKC (Keypair_new (&skA, &pkA)); -- P_CHECKC (Keypair_new (&skB, &pkB)); -- P_CHECKA (cfg = PrioConfig_new (47, pkA, pkB, (unsigned char *)"test4", 5)); -- -- const int ndata = PrioConfig_numDataFields (cfg); -- { -- bool data_items[ndata]; -- for (int i=0; i < ndata; i++) { -- // Arbitrary data -- data_items[i] = (i % 3 == 1) || (i % 5 == 3); -- } -- -- P_CHECKA (sA = PrioServer_new (cfg, 0, skA, seed)); -- P_CHECKA (sB = PrioServer_new (cfg, 1, skB, seed)); -- -- unsigned int aLen, bLen; -- P_CHECKC (PrioClient_encode (cfg, data_items, &for_a, &aLen, &for_b, &bLen)); -- -- if (tweak == 5) { -- for_a[3] = 3; -- for_a[4] = 4; -- } -- -- P_CHECKA (vA = PrioVerifier_new (sA)); -- P_CHECKA (vB = PrioVerifier_new (sB)); -- P_CHECKC (PrioVerifier_set_data (vA, for_a, aLen)); -- P_CHECKC (PrioVerifier_set_data (vB, for_b, bLen)); -- -- if (tweak == 3) { -- mp_add_d (&vA->share_fR, 1, &vA->share_fR); -- } -- -- if (tweak == 4) { -- mp_add_d (&vB->share_gR, 1, &vB->share_gR); -- } -- -- P_CHECKA (p1A = PrioPacketVerify1_new ()); -- P_CHECKA (p1B = PrioPacketVerify1_new ()); -- -- P_CHECKC (PrioPacketVerify1_set_data (p1A, vA)); -- P_CHECKC (PrioPacketVerify1_set_data (p1B, vB)); -- -- if (tweak == 1) { -- mp_add_d (&p1B->share_d, 1, &p1B->share_d); -- } -- -- P_CHECKA (p2A = PrioPacketVerify2_new ()); -- P_CHECKA (p2B = PrioPacketVerify2_new ()); -- P_CHECKC (PrioPacketVerify2_set_data (p2A, vA, p1A, p1B)); -- P_CHECKC (PrioPacketVerify2_set_data (p2B, vB, p1A, p1B)); -- -- if (tweak == 2) { -- mp_add_d (&p2A->share_out, 1, &p2B->share_out); -- } -- -- int shouldBe = tweak ? SECFailure : SECSuccess; -- mu_check (PrioVerifier_isValid (vA, p2A, p2B) == shouldBe); -- mu_check (PrioVerifier_isValid (vB, p2A, p2B) == shouldBe); -- } -- --cleanup: -- if (!tweak) { -- mu_check (rv == SECSuccess); -- } -- -- if (for_a) free (for_a); -- if (for_b) free (for_b); -- -- PrioPacketVerify2_clear (p2A); -- PrioPacketVerify2_clear (p2B); -- -- PrioPacketVerify1_clear (p1A); -- PrioPacketVerify1_clear (p1B); -- -- PrioVerifier_clear (vA); -- PrioVerifier_clear (vB); -- -- PrioServer_clear (sA); -- PrioServer_clear (sB); -- PrioConfig_clear (cfg); -- -- PublicKey_clear (pkA); -- PublicKey_clear (pkB); -- PrivateKey_clear (skA); -- PrivateKey_clear (skB); --} -- --void --mu_test__verify_full_good (void) --{ -- verify_full (0); --} -- --void --mu_test__verify_full_bad1 (void) --{ -- verify_full (1); --} -- --void --mu_test__verify_full_bad2 (void) --{ -- verify_full (2); --} -- --void --mu_test__verify_full_bad3 (void) --{ -- verify_full (3); --} -- --void --mu_test__verify_full_bad4 (void) --{ -- verify_full (4); --} -- --void --mu_test__verify_full_bad5 (void) --{ -- verify_full (5); --} -diff --git a/third_party/prio/ptest/share_test.c b/third_party/prio/ptest/share_test.c -deleted file mode 100644 ---- a/third_party/prio/ptest/share_test.c -+++ /dev/null -@@ -1,91 +0,0 @@ --/* -- * Copyright (c) 2018, Henry Corrigan-Gibbs -- * -- * This Source Code Form is subject to the terms of the Mozilla Public -- * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. -- */ -- --#include --#include -- --#include "prio/client.h" --#include "prio/config.h" --#include "prio/mparray.h" --#include "prio/share.h" --#include "prio/util.h" --#include "mutest.h" -- --void --mu_test_share (void) --{ -- SECStatus rv = SECSuccess; -- PrioConfig cfg = NULL; -- mp_int a, b, c; -- BeaverTriple t1 = NULL, t2 = NULL; -- -- MP_DIGITS (&a) = NULL; -- MP_DIGITS (&b) = NULL; -- MP_DIGITS (&c) = NULL; -- -- P_CHECKA (cfg = PrioConfig_newTest (93)); -- P_CHECKA (t1 = BeaverTriple_new ()); -- P_CHECKA (t2 = BeaverTriple_new ()); -- -- mu_check (BeaverTriple_set_rand (cfg, t1, t2) == SECSuccess); -- -- MP_CHECKC (mp_init (&a)); -- MP_CHECKC (mp_init (&b)); -- MP_CHECKC (mp_init (&c)); -- -- mu_check (mp_addmod (&t1->a, &t2->a, &cfg->modulus, &a) == MP_OKAY); -- mu_check (mp_addmod (&t1->b, &t2->b, &cfg->modulus, &b) == MP_OKAY); -- mu_check (mp_addmod (&t1->c, &t2->c, &cfg->modulus, &c) == MP_OKAY); -- mu_check (mp_mulmod (&a, &b, &cfg->modulus, &a) == MP_OKAY); -- mu_check (mp_cmp (&a, &c) == 0); -- --cleanup: -- mu_check (rv == SECSuccess); -- mp_clear (&a); -- mp_clear (&b); -- mp_clear (&c); -- -- PrioConfig_clear (cfg); -- BeaverTriple_clear (t1); -- BeaverTriple_clear (t2); --} -- --void --mu_test_arr (void) --{ -- SECStatus rv = SECSuccess; -- MPArray arr = NULL; -- MPArray arr2 = NULL; -- P_CHECKA (arr = MPArray_new (10)); -- P_CHECKA (arr2 = MPArray_new (7)); -- -- for (int i=0; i<10; i++) { -- mp_set (&arr->data[i], i); -- } -- -- P_CHECKC (MPArray_resize (arr, 15)); -- for (int i=10; i<15; i++) { -- mu_check (mp_cmp_d (&arr->data[i], 0) == 0); -- mp_set (&arr->data[i], i); -- } -- -- P_CHECKC (MPArray_resize (arr, 7)); -- for (int i=10; i<7; i++) { -- mu_check (mp_cmp_d (&arr->data[i], i) == 0); -- } -- -- P_CHECKC (MPArray_copy (arr2, arr)); -- for (int i=10; i<7; i++) { -- mu_check (mp_cmp (&arr->data[i], &arr2->data[i]) == 0); -- } -- --cleanup: -- mu_check (rv == SECSuccess); -- MPArray_clear (arr); -- MPArray_clear (arr2); --} -diff --git a/third_party/prio/update.sh b/third_party/prio/update.sh ---- a/third_party/prio/update.sh -+++ b/third_party/prio/update.sh -@@ -1,20 +1,18 @@ - #!/bin/sh - --# Script to update the mozilla in-tree copy of the Prio library. --# Run this within the /third_party/prio directory of the source tree. -+# Script to update the mozilla in-tree copy of the libprio library. -+# Run this within the /third_party/libprio directory of the source tree. - - MY_TEMP_DIR=`mktemp -d -t libprio_update.XXXXXX` || exit 1 - --VERSION=1.0 -- --git clone https://github.com/mozilla/libprio ${MY_TEMP_DIR}/libprio --git -C ${MY_TEMP_DIR}/libprio checkout ${VERSION} -+COMMIT="488da2d729d73f18ed45add59edd18b257e1ceaa" - --COMMIT=$(git -C ${MY_TEMP_DIR}/libprio rev-parse HEAD) --perl -p -i -e "s/(\d+\.)(\d+\.)(\d+)/${VERSION}/" README-mozilla; --perl -p -i -e "s/\[commit [0-9a-f]{40}\]/[commit ${COMMIT}]/" README-mozilla; -+git clone -n https://github.com/mozilla/libprio ${MY_TEMP_DIR}/libprio -+git -C ${MY_TEMP_DIR}/libprio checkout ${COMMIT} - --FILES="LICENSE README.md SConstruct browser-test include pclient prio ptest" -+FILES="include prio" -+VERSION=$(git -C ${MY_TEMP_DIR}/libprio describe --tags) -+perl -p -i -e "s/Current version: \S+ \[commit [0-9a-f]{40}\]/Current version: ${VERSION} [commit ${COMMIT}]/" README-mozilla - - for f in $FILES; do - rm -rf $f -@@ -24,9 +22,9 @@ - rm -rf ${MY_TEMP_DIR} - - hg revert -r . moz.build --hg addremove -+hg addremove . - - echo "###" --echo "### Updated Prio to $COMMIT." -+echo "### Updated libprio to $COMMIT." - echo "### Remember to verify and commit the changes to source control!" - echo "###" -