/*
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 * All rights reserved.
 *
 * This source code is licensed under both the BSD-style license (found in the
 * LICENSE file in the root directory of this source tree) and the GPLv2 (found
 * in the COPYING file in the root directory of this source tree).
 * You may select, at your option, one of the above-listed licenses.
 */

/* LOREM_genOut():
 * Generate @size bytes of compressible data using lorem ipsum generator into
 * stdout.
 */
void LOREM_genOut(unsigned long long size, unsigned seed);
