/*
 * Copyright (c) 2019 The Regents of the University of California
 * All rights reserved
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met: redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer;
 * redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution;
 * neither the name of the copyright holders nor the names of its
 * contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef __SMALL_IMAGE_FILE_HH__
#define __SMALL_IMAGE_FILE_HH__

#include <cstdint>

namespace gem5
{

/**
 * This image file contains the text "This is a test image.\n" 31 times.
 */
const uint8_t image_file[] = {
    0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20,
    0x61, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x69,
    0x6d, 0x61, 0x67, 0x65, 0x2e, 0x0a, 0x54, 0x68,
    0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20,
    0x74, 0x65, 0x73, 0x74, 0x20, 0x69, 0x6d, 0x61,
    0x67, 0x65, 0x2e, 0x0a, 0x54, 0x68, 0x69, 0x73,
    0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x65,
    0x73, 0x74, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65,
    0x2e, 0x0a, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69,
    0x73, 0x20, 0x61, 0x20, 0x74, 0x65, 0x73, 0x74,
    0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x0a,
    0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20,
    0x61, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x69,
    0x6d, 0x61, 0x67, 0x65, 0x2e, 0x0a, 0x54, 0x68,
    0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20,
    0x74, 0x65, 0x73, 0x74, 0x20, 0x69, 0x6d, 0x61,
    0x67, 0x65, 0x2e, 0x0a, 0x54, 0x68, 0x69, 0x73,
    0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x65,
    0x73, 0x74, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65,
    0x2e, 0x0a, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69,
    0x73, 0x20, 0x61, 0x20, 0x74, 0x65, 0x73, 0x74,
    0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x0a,
    0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20,
    0x61, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x69,
    0x6d, 0x61, 0x67, 0x65, 0x2e, 0x0a, 0x54, 0x68,
    0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20,
    0x74, 0x65, 0x73, 0x74, 0x20, 0x69, 0x6d, 0x61,
    0x67, 0x65, 0x2e, 0x0a, 0x54, 0x68, 0x69, 0x73,
    0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x65,
    0x73, 0x74, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65,
    0x2e, 0x0a, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69,
    0x73, 0x20, 0x61, 0x20, 0x74, 0x65, 0x73, 0x74,
    0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x0a,
    0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20,
    0x61, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x69,
    0x6d, 0x61, 0x67, 0x65, 0x2e, 0x0a, 0x54, 0x68,
    0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20,
    0x74, 0x65, 0x73, 0x74, 0x20, 0x69, 0x6d, 0x61,
    0x67, 0x65, 0x2e, 0x0a, 0x54, 0x68, 0x69, 0x73,
    0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x65,
    0x73, 0x74, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65,
    0x2e, 0x0a, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69,
    0x73, 0x20, 0x61, 0x20, 0x74, 0x65, 0x73, 0x74,
    0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x0a,
    0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20,
    0x61, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x69,
    0x6d, 0x61, 0x67, 0x65, 0x2e, 0x0a, 0x54, 0x68,
    0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20,
    0x74, 0x65, 0x73, 0x74, 0x20, 0x69, 0x6d, 0x61,
    0x67, 0x65, 0x2e, 0x0a, 0x54, 0x68, 0x69, 0x73,
    0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x65,
    0x73, 0x74, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65,
    0x2e, 0x0a, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69,
    0x73, 0x20, 0x61, 0x20, 0x74, 0x65, 0x73, 0x74,
    0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x0a,
    0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20,
    0x61, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x69,
    0x6d, 0x61, 0x67, 0x65, 0x2e, 0x0a, 0x54, 0x68,
    0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20,
    0x74, 0x65, 0x73, 0x74, 0x20, 0x69, 0x6d, 0x61,
    0x67, 0x65, 0x2e, 0x0a, 0x54, 0x68, 0x69, 0x73,
    0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x65,
    0x73, 0x74, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65,
    0x2e, 0x0a, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69,
    0x73, 0x20, 0x61, 0x20, 0x74, 0x65, 0x73, 0x74,
    0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x0a,
    0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20,
    0x61, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x69,
    0x6d, 0x61, 0x67, 0x65, 0x2e, 0x0a, 0x54, 0x68,
    0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20,
    0x74, 0x65, 0x73, 0x74, 0x20, 0x69, 0x6d, 0x61,
    0x67, 0x65, 0x2e, 0x0a, 0x54, 0x68, 0x69, 0x73,
    0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x65,
    0x73, 0x74, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65,
    0x2e, 0x0a, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69,
    0x73, 0x20, 0x61, 0x20, 0x74, 0x65, 0x73, 0x74,
    0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x0a,
    0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20,
    0x61, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x69,
    0x6d, 0x61, 0x67, 0x65, 0x2e, 0x0a, 0x54, 0x68,
    0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20,
    0x74, 0x65, 0x73, 0x74, 0x20, 0x69, 0x6d, 0x61,
    0x67, 0x65, 0x2e, 0x0a, 0x54, 0x68, 0x69, 0x73,
    0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x65,
    0x73, 0x74, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65,
    0x2e, 0x0a
};

/**
 * This is "image_file" compressed using GZip.
 */
const uint8_t image_file_gzipped[] = {
    0x1f, 0x8b, 0x08, 0x08, 0x48, 0x4b, 0xcb, 0x5d,
    0x00, 0x03, 0x62, 0x6c, 0x61, 0x2e, 0x69, 0x6d,
    0x67, 0x00, 0x0b, 0xc9, 0xc8, 0x2c, 0x56, 0x00,
    0xa2, 0x44, 0x85, 0x92, 0xd4, 0xe2, 0x12, 0x85,
    0xcc, 0xdc, 0xc4, 0xf4, 0x54, 0x3d, 0xae, 0x90,
    0x51, 0xd1, 0x51, 0xd1, 0x41, 0x26, 0x0a, 0x00,
    0xc9, 0x58, 0x6c, 0x4e, 0xaa, 0x02, 0x00, 0x00
};

} // namespace gem5

#endif // __SMALL_IMAGE_FILE_HH__
