This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "".
The branch, api-next has been updated discards 525f6e6b3adf629df89d195fbb1959b40ecc8a0d (commit) discards d044b11d7010cc328cca986849a1414c1e46fb53 (commit) discards 9c0ad641faeabbede48fd09b7c91f753186163bd (commit) discards d7913a845c72753758121111cc5da381198ba0f6 (commit) discards 43dd326bf4777a01a0fa75c9c9055376d246e44b (commit) discards 6ba195384379a09c2fc774128651be51b21bf3de (commit) discards 4ce3d7c700607b433718de07f875184cf3fcef35 (commit) discards 44820ab64901d087c428a0de52f576d3e27d2599 (commit) discards 5d9c339a04cd766449b3bef701f3baa8fb0d2b8e (commit) discards 126798b957b0fcc6f55ab93ee0cd50c2a9eb62a2 (commit) discards 92c8ebd0b9ec85a71e3993c4864d48bcbb30a012 (commit) discards 3e2e07762422a75298cab27fbab64fb4a6f9383c (commit) discards 5235ac6934f2a39e91d30971003739c6e3620224 (commit) discards 886995cfbf5faa9ad269fdfccae42a889035c001 (commit) discards 809a6e3eaba3a510337f9a5ce4dc146074e39bd8 (commit) discards a43d82864faeed378972b95087f470c4a5f076c2 (commit) discards a73130efd9e89dae4e67baab64b78b4b0f261668 (commit) discards dbd20ce8581fe5a36d61eb48071b47a89f808fdb (commit) discards 06851a74104465905cff0d71f852f46d91af224c (commit) discards fe8658c85b721c17a1d998cc0df9106d4e9a4ce7 (commit) discards 9bc0a0598323f5f655eeb65544ecdc74ab8150c2 (commit) discards 9f8d08163075eab9408de99d7da2165753f802e9 (commit) discards 602df05c79ea8126e679513ca9523222c7946a19 (commit) discards 1d8b95b6d776a7f8681ef400a062a67d4d37de56 (commit) discards 09d8048fc8bff31797f9359db9f43da75fd15c3f (commit) discards c7d5d4005f333f3f125e0582aac7cf2423112ac4 (commit) discards 9b945554c0a522030de185fe5e2e0724427c8223 (commit) via 00385dbab270b585291cf197f62cd4d7f92c2af9 (commit) via 7a7b000715b26233609453227612f4bfe25a0e46 (commit) via 52e903ecbf1653c72f5ae061084262d02b807339 (commit) via ad31bf29da57c50b717c8cb441f6126c0481c144 (commit) via 0b38035d3857cc23b88a00e695b8ff2993775dbe (commit) via dc318362ce9bdff233c492d07ef4a2858484a85b (commit) via 87a81d8b4feb08fdf60a960ac2b003233fc0ae3b (commit) via 9909800501e6a09654328e76496adf31f1750f68 (commit) via 3e9428c476bf8527e9c294f298fa550f634ae40b (commit) via b0d8afdb22c92c4f0974acbe30e346110b8a8fc6 (commit) via 89f4d6b463c93e2e87634f0d17f214d967b66bdd (commit) via 14f3d11428650ed3af3bfa1bf728fc1a64e52da7 (commit) via 410a0d38d13b08003d54d316868f941c5d570c54 (commit) via 9edf20ac38a6c7dc61cb00fbd776bea6afa264c7 (commit) via 9287482b9debd49de84b6ec1640604edeaa9f9e1 (commit) via b484f32b2464a53946a88013a0ee547415cdf414 (commit) via ddfe2d945b3dfe6e443acf18f86ce30f60b325a4 (commit) via e721288bf73f752015162eb594e294e58fb96a07 (commit) via 6aeb2eed6c65cb5830200c236b98b09a9a0f9245 (commit) via eded2529a711a731220322d37af569b7e08c41e9 (commit) via f27ee888c0ed07a08eafaea596094125cb9fdcc6 (commit) via 2aee8a5840602472d46ae873c9d9f87cf54461e7 (commit) via 206c476a3e4d60713a8c279eee78add66421d0e6 (commit) via eee646125e8e6ae3222268448be423a351e6043e (commit) via 930b0042689ca69851e2fe7abd0c9d35b61e76e5 (commit) via 81e5aead1d8996907911463c9025a0b852bbfae8 (commit) via 7fdf6e03af1608e476fa0296d77de50f618b1754 (commit) via 9c3f29b03dafed4ce85230297fd4e6fdc5c3323e (commit) via c2b9c793b0d296dee12f0ce7fb61267ca8c61aa1 (commit) via 83eef57df54653245402237837c9e95d1bf3aff4 (commit) via 6c06c34a051342b2d25444ac65348acc30828b11 (commit) via 68d9edd5c7b1a2b28d07757d2580ba955463e73d (commit) via 17a547b56ac5897f0424752b40b2ba07f4d999cb (commit) via d01e6126c7e91d3c660033cf970f6094ea080abb (commit)
This update added new revisions after undoing existing revisions. That is to say, the old revision is not a strict subset of the new revision. This situation occurs when you --force push a change and generate a repository containing something like this:
* -- * -- B -- O -- O -- O (525f6e6b3adf629df89d195fbb1959b40ecc8a0d) \ N -- N -- N (00385dbab270b585291cf197f62cd4d7f92c2af9)
When this happens we assume that you've already had alert emails for all of the O revisions, and so we here report only the revisions in the N branch from the common base, B.
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.
- Log ----------------------------------------------------------------- commit 00385dbab270b585291cf197f62cd4d7f92c2af9 Author: Dmitry Eremin-Solenikov dmitry.ereminsolenikov@linaro.org Date: Thu Nov 29 13:59:35 2018 +0300
linux-gen: comp: add stub implementation
Add stub implementation supporting no compression and digest algorithms.
Signed-off-by: Dmitry Eremin-Solenikov dmitry.ereminsolenikov@linaro.org Reviewed-by: Bill Fischofer bill.fischofer@linaro.org Signed-off-by: Maxim Uvarov maxim.uvarov@linaro.org
diff --git a/platform/linux-generic/Makefile.am b/platform/linux-generic/Makefile.am index 7c76a4f9..01ddfe9c 100644 --- a/platform/linux-generic/Makefile.am +++ b/platform/linux-generic/Makefile.am @@ -157,6 +157,7 @@ __LIB__libodp_linux_la_SOURCES = \ odp_buffer.c \ odp_chksum.c \ odp_classification.c \ + odp_comp.c \ odp_cpumask.c \ odp_cpumask_task.c \ odp_errno.c \ diff --git a/platform/linux-generic/odp_comp.c b/platform/linux-generic/odp_comp.c new file mode 100644 index 00000000..7000e497 --- /dev/null +++ b/platform/linux-generic/odp_comp.c @@ -0,0 +1,125 @@ +/* Copyright (c) 2018, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +#include "config.h" + +#include <string.h> + +#include <odp/api/comp.h> +#include <odp/api/event.h> +#include <odp/api/packet.h> +#include <odp/api/plat/strong_types.h> + +#include <odp_debug_internal.h> + +void odp_comp_session_param_init(odp_comp_session_param_t *param) +{ + memset(param, 0, sizeof(odp_comp_session_param_t)); +} + +odp_comp_session_t +odp_comp_session_create(const odp_comp_session_param_t *params) +{ + (void)params; + return ODP_COMP_SESSION_INVALID; +} + +int odp_comp_session_destroy(odp_comp_session_t session) +{ + (void)session; + return 0; +} + +int odp_comp_capability(odp_comp_capability_t *capa) +{ + if (NULL == capa) + return -1; + + /* Initialize comp capability structure */ + memset(capa, 0, sizeof(odp_comp_capability_t)); + + capa->comp_algos.bit.null = 0; + capa->hash_algos.bit.none = 0; + capa->sync = ODP_SUPPORT_NO; + capa->async = ODP_SUPPORT_NO; + capa->max_sessions = 0; + + return 0; +} + +int +odp_comp_alg_capability(odp_comp_alg_t comp, + odp_comp_alg_capability_t *capa) +{ + (void)capa; + switch (comp) { + default: + /* Error unsupported enum */ + return -1; + } + return -1; +} + +int +odp_comp_hash_alg_capability(odp_comp_hash_alg_t hash, + odp_comp_hash_alg_capability_t *capa) +{ + (void)capa; + switch (hash) { + default: + return -1; + } + return -1; +} + +int odp_comp_op(const odp_packet_t pkt_in[], odp_packet_t pkt_out[], + int num_pkt, const odp_comp_packet_op_param_t param[]) +{ + (void)pkt_in; + (void)pkt_out; + (void)num_pkt; + (void)param; + + return -1; +} + +int odp_comp_op_enq(const odp_packet_t pkt_in[], odp_packet_t pkt_out[], + int num_pkt, const odp_comp_packet_op_param_t param[]) +{ + (void)pkt_in; + (void)pkt_out; + (void)num_pkt; + (void)param; + + return -1; +} + +int odp_comp_result(odp_comp_packet_result_t *result, + odp_packet_t packet) +{ + (void)result; + (void)packet; + return 0; +} + +odp_packet_t odp_comp_packet_from_event(odp_event_t ev) +{ + /* This check not mandated by the API specification */ + ODP_ASSERT(odp_event_type(ev) == ODP_EVENT_PACKET); + ODP_ASSERT(odp_event_subtype(ev) == ODP_EVENT_PACKET_COMP); + + return odp_packet_from_event(ev); +} + +odp_event_t odp_comp_packet_to_event(odp_packet_t pkt) +{ + return odp_packet_to_event(pkt); +} + +/** Get printable format of odp_comp_session_t */ +uint64_t odp_comp_session_to_u64(odp_comp_session_t hdl) +{ + return _odp_pri(hdl); +}
commit 7a7b000715b26233609453227612f4bfe25a0e46 Author: Dmitry Eremin-Solenikov dmitry.ereminsolenikov@linaro.org Date: Thu Nov 29 13:43:58 2018 +0300
validation: add compression tests
Signed-off-by: Shally Verma shally.verma@cavium.com Signed-off-by: Mahipal Challa mchalla@cavium.com Signed-off-by: Dmitry Eremin-Solenikov dmitry.ereminsolenikov@linaro.org Reviewed-by: Bill Fischofer bill.fischofer@linaro.org Signed-off-by: Maxim Uvarov maxim.uvarov@linaro.org
diff --git a/test/m4/configure.m4 b/test/m4/configure.m4 index 309c18ae..b2b6cf0e 100644 --- a/test/m4/configure.m4 +++ b/test/m4/configure.m4 @@ -22,6 +22,7 @@ AC_CONFIG_FILES([test/Makefile test/validation/api/buffer/Makefile test/validation/api/chksum/Makefile test/validation/api/classification/Makefile + test/validation/api/comp/Makefile test/validation/api/cpumask/Makefile test/validation/api/crypto/Makefile test/validation/api/errno/Makefile diff --git a/test/validation/api/Makefile.am b/test/validation/api/Makefile.am index 92ae85f8..25776464 100644 --- a/test/validation/api/Makefile.am +++ b/test/validation/api/Makefile.am @@ -3,6 +3,7 @@ ODP_MODULES = atomic \ buffer \ chksum \ classification \ + comp \ cpumask \ crypto \ errno \ @@ -36,6 +37,7 @@ TESTS = \ buffer/buffer_main$(EXEEXT) \ chksum/chksum_main$(EXEEXT) \ classification/classification_main$(EXEEXT) \ + comp/comp_main$(EXEEXT) \ cpumask/cpumask_main$(EXEEXT) \ crypto/crypto_main$(EXEEXT) \ errno/errno_main$(EXEEXT) \ diff --git a/test/validation/api/comp/Makefile.am b/test/validation/api/comp/Makefile.am new file mode 100644 index 00000000..2e5d3a26 --- /dev/null +++ b/test/validation/api/comp/Makefile.am @@ -0,0 +1,7 @@ +include ../Makefile.inc + +test_PROGRAMS = comp_main + +comp_main_SOURCES = \ + comp.c \ + test_vectors.h diff --git a/test/validation/api/comp/comp.c b/test/validation/api/comp/comp.c new file mode 100644 index 00000000..e84764f7 --- /dev/null +++ b/test/validation/api/comp/comp.c @@ -0,0 +1,591 @@ +/* Copyright (c) 2018, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "config.h" + +#include <odp_api.h> +#include <odp_cunit_common.h> +#include "test_vectors.h" + +#define TEST_NUM_PKT 64 +#define TEST_PKT_LEN (8 * 1024) + +#define SEGMENTED_TEST_PKT_LEN (16 * 1024) +#define SEGMENTED_TEST_PATTERN 0xAA + +#define COMP_PACKET_POOL "packet_pool" +#define COMP_OUT_QUEUE "comp-out" + +struct suite_context_s { + odp_comp_op_mode_t op_mode; + odp_pool_t pool; + odp_queue_t queue; +}; + +static struct suite_context_s suite_context; + +/** + * Check if given compression and hash algorithms are supported + * + * @param comp Compression algorithm + * @param hash Hash algorithm + * + * @retval ODP_TEST_ACTIVE when both algorithms are supported + * @retval ODP_TEST_INACTIVE when either algorithm is not supported + */ +static int check_comp_alg_support(odp_comp_alg_t comp, + odp_comp_hash_alg_t hash) +{ + odp_comp_capability_t capability; + + if (odp_comp_capability(&capability)) + return ODP_TEST_INACTIVE; + + if (suite_context.op_mode == ODP_COMP_OP_MODE_SYNC && + capability.sync == ODP_SUPPORT_NO) + return ODP_TEST_INACTIVE; + if (suite_context.op_mode == ODP_COMP_OP_MODE_ASYNC && + capability.async == ODP_SUPPORT_NO) + return ODP_TEST_INACTIVE; + + /* Compression algorithms */ + switch (comp) { + case ODP_COMP_ALG_NULL: + if (!capability.comp_algos.bit.null) + return ODP_TEST_INACTIVE; + break; + case ODP_COMP_ALG_DEFLATE: + if (!capability.comp_algos.bit.deflate) + return ODP_TEST_INACTIVE; + break; + case ODP_COMP_ALG_ZLIB: + if (!capability.comp_algos.bit.zlib) + return ODP_TEST_INACTIVE; + break; + case ODP_COMP_ALG_LZS: + if (!capability.comp_algos.bit.lzs) + return ODP_TEST_INACTIVE; + break; + default: + fprintf(stderr, "Unsupported compression algorithm\n"); + return ODP_TEST_INACTIVE; + } + + /* Hash algorithms */ + switch (hash) { + case ODP_COMP_HASH_ALG_NONE: + if (!capability.hash_algos.bit.none) + return ODP_TEST_INACTIVE; + break; + case ODP_COMP_HASH_ALG_SHA1: + if (!capability.hash_algos.bit.sha1) + return ODP_TEST_INACTIVE; + break; + case ODP_COMP_HASH_ALG_SHA256: + if (!capability.hash_algos.bit.sha256) + return ODP_TEST_INACTIVE; + break; + default: + fprintf(stderr, "Unsupported hash algorithm\n"); + return ODP_TEST_INACTIVE; + } + + return ODP_TEST_ACTIVE; +} + +static odp_packet_t run_comp_op(odp_comp_op_t op, + odp_comp_alg_t comp_alg, + odp_comp_hash_alg_t hash_alg, + odp_packet_t inpkt, + unsigned int outtext_len) +{ + odp_comp_session_t session; + odp_comp_capability_t capa; + odp_comp_alg_capability_t comp_capa; + odp_comp_hash_alg_capability_t hash_capa; + odp_comp_session_param_t ses_params; + odp_comp_packet_op_param_t op_params; + odp_packet_t outpkt; + odp_comp_packet_result_t comp_result; + int rc; + + rc = odp_comp_capability(&capa); + CU_ASSERT_FATAL(!rc); + + if (comp_alg == ODP_COMP_ALG_NULL && + !(capa.comp_algos.bit.null)) + rc = -1; + if (comp_alg == ODP_COMP_ALG_DEFLATE && + !(capa.comp_algos.bit.deflate)) + rc = -1; + if (comp_alg == ODP_COMP_ALG_ZLIB && + !(capa.comp_algos.bit.zlib)) + rc = -1; + if (comp_alg == ODP_COMP_ALG_LZS && + !(capa.comp_algos.bit.lzs)) + rc = -1; + + CU_ASSERT(!rc); + + if (hash_alg == ODP_COMP_HASH_ALG_NONE && + !(capa.hash_algos.bit.none)) + rc = -1; + if (hash_alg == ODP_COMP_HASH_ALG_SHA1 && + !(capa.hash_algos.bit.sha1)) + rc = -1; + if (hash_alg == ODP_COMP_HASH_ALG_SHA256 && + !(capa.hash_algos.bit.sha256)) + rc = -1; + + CU_ASSERT(!rc); + + rc = odp_comp_alg_capability(comp_alg, &comp_capa); + CU_ASSERT(!rc); + + rc = odp_comp_hash_alg_capability(hash_alg, &hash_capa); + CU_ASSERT(!rc); + + if (hash_alg == ODP_COMP_HASH_ALG_NONE && + !(comp_capa.hash_algo.bit.none)) + rc = -1; + if (hash_alg == ODP_COMP_HASH_ALG_SHA1 && + !(comp_capa.hash_algo.bit.sha1)) + rc = -1; + if (hash_alg == ODP_COMP_HASH_ALG_SHA256 && + !(comp_capa.hash_algo.bit.sha256)) + rc = -1; + + CU_ASSERT(!rc); + + /* Create a compression session */ + odp_comp_session_param_init(&ses_params); + ses_params.op = op; + ses_params.comp_algo = comp_alg; + ses_params.hash_algo = hash_alg; + ses_params.compl_queue = suite_context.queue; + ses_params.mode = suite_context.op_mode; + + session = odp_comp_session_create(&ses_params); + CU_ASSERT_FATAL(session != ODP_COMP_SESSION_INVALID); + CU_ASSERT(odp_comp_session_to_u64(session) != + odp_comp_session_to_u64(ODP_COMP_SESSION_INVALID)); + + /* Allocate compression output packet */ + outpkt = odp_packet_alloc(suite_context.pool, outtext_len); + CU_ASSERT(outpkt != ODP_PACKET_INVALID); + + op_params.out_data_range.offset = 0; + op_params.out_data_range.length = outtext_len; + op_params.in_data_range.offset = 0; + op_params.in_data_range.length = odp_packet_len(inpkt); + op_params.session = session; + + if (suite_context.op_mode == ODP_COMP_OP_MODE_SYNC) { + rc = odp_comp_op(&inpkt, &outpkt, 1, &op_params); + CU_ASSERT(rc >= 0); + if (rc < 0) + goto cleanup; + } else { + odp_event_t event; + odp_packet_t packet; + + rc = odp_comp_op_enq(&inpkt, &outpkt, 1, &op_params); + CU_ASSERT(rc == 1); + if (rc <= 0) + goto cleanup; + /* Poll completion queue for results */ + do { + event = odp_queue_deq(suite_context.queue); + } while (event == ODP_EVENT_INVALID); + CU_ASSERT(ODP_EVENT_PACKET == odp_event_type(event)); + CU_ASSERT(ODP_EVENT_PACKET_COMP == + odp_event_subtype(event)); + + packet = odp_comp_packet_from_event(event); + CU_ASSERT(packet != ODP_PACKET_INVALID); + CU_ASSERT(packet == outpkt); + } + + rc = odp_comp_result(&comp_result, outpkt); + CU_ASSERT(!rc); + CU_ASSERT(comp_result.status == ODP_COMP_STATUS_SUCCESS); + CU_ASSERT(comp_result.output_data_range.offset == 0); + odp_packet_trunc_tail(&outpkt, + odp_packet_len(outpkt) - + comp_result.output_data_range.length, + NULL, NULL); + +cleanup: + + rc = odp_comp_session_destroy(session); + CU_ASSERT(!rc); + + if (rc < 0) { + odp_packet_free(outpkt); + return ODP_PACKET_INVALID; + } + + return outpkt; +} + +static void packet_cmp(odp_packet_t pkt, + const uint8_t *text, + unsigned int text_len) +{ + odp_packet_seg_t seg; + uint32_t cmp_offset = 0, outlen = 0; + uint32_t compare_len = 0; + uint8_t *outdata; + + seg = odp_packet_first_seg(pkt); + do { + outdata = odp_packet_seg_data(pkt, seg); + outlen = odp_packet_seg_data_len(pkt, seg); + compare_len = outlen < (text_len - cmp_offset) ? + outlen : (text_len - cmp_offset); + + CU_ASSERT(!memcmp(outdata, + text + cmp_offset, compare_len)); + cmp_offset += compare_len; + seg = odp_packet_next_seg(pkt, seg); + } while (seg != ODP_PACKET_SEG_INVALID && cmp_offset < text_len); +} + +static void comp_decomp_alg_test(odp_comp_alg_t comp_alg, + odp_comp_hash_alg_t hash_alg, + const uint8_t *plaintext, + unsigned int plaintext_len) +{ + odp_packet_t decomp_outpkt, comp_outpkt, inpkt; + int rc; + + /* Allocate compression input packet */ + inpkt = odp_packet_alloc(suite_context.pool, plaintext_len); + CU_ASSERT(inpkt != ODP_PACKET_INVALID); + + /* copy test data in to pkt memory */ + rc = odp_packet_copy_from_mem(inpkt, 0, + plaintext_len, plaintext); + CU_ASSERT_FATAL(!rc); + + comp_outpkt = run_comp_op(ODP_COMP_OP_COMPRESS, + comp_alg, hash_alg, + inpkt, + plaintext_len); + if (comp_outpkt == ODP_PACKET_INVALID) + goto clean_in; + + decomp_outpkt = run_comp_op(ODP_COMP_OP_DECOMPRESS, + comp_alg, hash_alg, + comp_outpkt, + plaintext_len); + if (decomp_outpkt == ODP_PACKET_INVALID) + goto cleanup; + + packet_cmp(decomp_outpkt, plaintext, plaintext_len); + + odp_packet_free(decomp_outpkt); + +cleanup: + odp_packet_free(comp_outpkt); +clean_in: + odp_packet_free(inpkt); +} + +static void comp_alg_test(odp_comp_alg_t comp_alg, + odp_comp_hash_alg_t hash_alg, + const uint8_t *plaintext, + unsigned int plaintext_len) +{ + odp_packet_t comp_outpkt, inpkt; + int rc; + + /* Allocate compression input packet */ + inpkt = odp_packet_alloc(suite_context.pool, plaintext_len); + CU_ASSERT(inpkt != ODP_PACKET_INVALID); + + /* copy test data in to pkt memory */ + rc = odp_packet_copy_from_mem(inpkt, 0, + plaintext_len, plaintext); + CU_ASSERT_FATAL(!rc); + + comp_outpkt = run_comp_op(ODP_COMP_OP_COMPRESS, + comp_alg, hash_alg, + inpkt, + plaintext_len); + if (comp_outpkt == ODP_PACKET_INVALID) + goto clean_in; + + odp_packet_free(comp_outpkt); +clean_in: + odp_packet_free(inpkt); +} + +static void decomp_alg_test(odp_comp_alg_t comp_alg, + odp_comp_hash_alg_t hash_alg, + const uint8_t *comptext, + unsigned int comptext_len, + const uint8_t *plaintext, + unsigned int plaintext_len) +{ + odp_packet_t decomp_outpkt, inpkt; + int rc; + + /* Allocate compression input packet */ + inpkt = odp_packet_alloc(suite_context.pool, comptext_len); + CU_ASSERT(inpkt != ODP_PACKET_INVALID); + + /* copy test data in to pkt memory */ + rc = odp_packet_copy_from_mem(inpkt, 0, + comptext_len, comptext); + CU_ASSERT_FATAL(!rc); + + decomp_outpkt = run_comp_op(ODP_COMP_OP_DECOMPRESS, + comp_alg, hash_alg, + inpkt, + plaintext_len); + if (decomp_outpkt == ODP_PACKET_INVALID) + goto cleanup; + + packet_cmp(decomp_outpkt, plaintext, plaintext_len); + + odp_packet_free(decomp_outpkt); +cleanup: + odp_packet_free(inpkt); +} + +static int comp_check_deflate_none(void) +{ + return check_comp_alg_support(ODP_COMP_ALG_DEFLATE, + ODP_COMP_HASH_ALG_NONE); +} + +/* Compress content using deflate algorithm */ +static void comp_test_compress_alg_deflate_none(void) +{ + comp_alg_test(ODP_COMP_ALG_DEFLATE, + ODP_COMP_HASH_ALG_NONE, + plaintext, PLAIN_TEXT_SIZE); +} + +/* Decompress content using deflate algorithm */ +static void comp_test_decompress_alg_deflate_none(void) +{ + decomp_alg_test(ODP_COMP_ALG_DEFLATE, + ODP_COMP_HASH_ALG_NONE, + compressed_text_def, COMP_DEFLATE_SIZE, + plaintext, PLAIN_TEXT_SIZE); +} + +static int comp_check_zlib_none(void) +{ + return check_comp_alg_support(ODP_COMP_ALG_ZLIB, + ODP_COMP_HASH_ALG_NONE); +} + +/* Compress content using zlib algorithm */ +static void comp_test_compress_alg_zlib_none(void) +{ + comp_alg_test(ODP_COMP_ALG_ZLIB, ODP_COMP_HASH_ALG_NONE, + plaintext, PLAIN_TEXT_SIZE); +} + +/* Decompress content using zlib algorithm */ +static void comp_test_decompress_alg_zlib_none(void) +{ + decomp_alg_test(ODP_COMP_ALG_ZLIB, ODP_COMP_HASH_ALG_NONE, + compressed_text_zlib, COMP_ZLIB_SIZE, + plaintext, PLAIN_TEXT_SIZE); +} + +/* Compress/Decompress content using deflate algorithm */ +static void comp_test_comp_decomp_alg_deflate_none(void) +{ + comp_decomp_alg_test(ODP_COMP_ALG_DEFLATE, + ODP_COMP_HASH_ALG_NONE, + plaintext, PLAIN_TEXT_SIZE); +} + +/* Compress/Decompress content using zlib algorithm */ +static void comp_test_comp_decomp_alg_zlib_none(void) +{ + comp_decomp_alg_test(ODP_COMP_ALG_ZLIB, + ODP_COMP_HASH_ALG_NONE, + plaintext, PLAIN_TEXT_SIZE); +} + +static int comp_suite_sync_init(void) +{ + suite_context.pool = odp_pool_lookup(COMP_PACKET_POOL); + if (suite_context.pool == ODP_POOL_INVALID) + return -1; + + suite_context.queue = ODP_QUEUE_INVALID; + suite_context.op_mode = ODP_COMP_OP_MODE_SYNC; + return 0; +} + +static int comp_suite_async_init(void) +{ + suite_context.pool = odp_pool_lookup(COMP_PACKET_POOL); + if (suite_context.pool == ODP_POOL_INVALID) + return -1; + suite_context.queue = odp_queue_lookup(COMP_OUT_QUEUE); + if (suite_context.queue == ODP_QUEUE_INVALID) + return -1; + + suite_context.op_mode = ODP_COMP_OP_MODE_ASYNC; + return 0; +} + +static odp_testinfo_t comp_suite[] = { + ODP_TEST_INFO_CONDITIONAL(comp_test_compress_alg_deflate_none, + comp_check_deflate_none), + ODP_TEST_INFO_CONDITIONAL(comp_test_compress_alg_zlib_none, + comp_check_zlib_none), + ODP_TEST_INFO_CONDITIONAL(comp_test_decompress_alg_deflate_none, + comp_check_deflate_none), + ODP_TEST_INFO_CONDITIONAL(comp_test_decompress_alg_zlib_none, + comp_check_zlib_none), + ODP_TEST_INFO_CONDITIONAL(comp_test_comp_decomp_alg_deflate_none, + comp_check_deflate_none), + ODP_TEST_INFO_CONDITIONAL(comp_test_comp_decomp_alg_zlib_none, + comp_check_zlib_none), + ODP_TEST_INFO_NULL, +}; + +static int comp_suite_term(void) +{ + int i; + int first = 1; + + for (i = 0; comp_suite[i].name; i++) { + if (comp_suite[i].check_active && + comp_suite[i].check_active() == ODP_TEST_INACTIVE) { + if (first) { + first = 0; + printf("\n\n Inactive tests:\n"); + } + printf(" %s\n", comp_suite[i].name); + } + } + return 0; +} + +/* Suite names */ +#define ODP_COMP_SYNC_TEST "Comp/decomp sync test" +#define ODP_COMP_ASYNC_TEST "Comp/decomp async test" + +static odp_suiteinfo_t comp_suites[] = { + {ODP_COMP_SYNC_TEST, comp_suite_sync_init, + comp_suite_term, comp_suite}, + {ODP_COMP_ASYNC_TEST, comp_suite_async_init, + comp_suite_term, comp_suite}, + ODP_SUITE_INFO_NULL, +}; + +static int comp_init(odp_instance_t *inst) +{ + odp_pool_param_t params; + odp_pool_t pool; + odp_queue_t out_queue; + odp_pool_capability_t pool_capa; + + if (0 != odp_init_global(inst, NULL, NULL)) { + fprintf(stderr, "error: odp_init_global() failed.\n"); + return -1; + } + + if (0 != odp_init_local(*inst, ODP_THREAD_CONTROL)) { + fprintf(stderr, "error: odp_init_local() failed.\n"); + return -1; + } + + if (odp_pool_capability(&pool_capa) < 0) { + fprintf(stderr, "error: odp_pool_capability() failed.\n"); + return -1; + } + + odp_pool_param_init(¶ms); + params.pkt.seg_len = TEST_PKT_LEN; + params.pkt.len = TEST_PKT_LEN; + params.pkt.num = TEST_NUM_PKT; + params.type = ODP_POOL_PACKET; + + if (pool_capa.pkt.max_seg_len && + TEST_PKT_LEN > pool_capa.pkt.max_seg_len) { + fprintf(stderr, "Warning: small packet segment length\n"); + params.pkt.seg_len = pool_capa.pkt.max_seg_len; + } + + pool = odp_pool_create(COMP_PACKET_POOL, ¶ms); + if (ODP_POOL_INVALID == pool) { + fprintf(stderr, "Packet pool creation failed.\n"); + return -1; + } + + /* Queue to store compression/decompression events */ + out_queue = odp_queue_create(COMP_OUT_QUEUE, NULL); + if (ODP_QUEUE_INVALID == out_queue) { + fprintf(stderr, "Comp outq creation failed.\n"); + return -1; + } + + return 0; +} + +static int comp_term(odp_instance_t inst) +{ + odp_pool_t pool; + odp_queue_t out_queue; + + out_queue = odp_queue_lookup(COMP_OUT_QUEUE); + if (ODP_QUEUE_INVALID != out_queue) { + if (odp_queue_destroy(out_queue)) + fprintf(stderr, "Comp outq destroy failed.\n"); + } else { + fprintf(stderr, "Comp outq not found.\n"); + } + + pool = odp_pool_lookup(COMP_PACKET_POOL); + if (ODP_POOL_INVALID != pool) { + if (odp_pool_destroy(pool)) + fprintf(stderr, "Packet pool destroy failed.\n"); + } else { + fprintf(stderr, "Packet pool not found.\n"); + } + + if (0 != odp_term_local()) { + fprintf(stderr, "error: odp_term_local() failed.\n"); + return -1; + } + + if (0 != odp_term_global(inst)) { + fprintf(stderr, "error: odp_term_global() failed.\n"); + return -1; + } + + return 0; +} + +int main(int argc, char *argv[]) +{ + int ret; + + /* parse common options: */ + if (odp_cunit_parse_options(argc, argv)) + return -1; + + odp_cunit_register_global_init(comp_init); + odp_cunit_register_global_term(comp_term); + + ret = odp_cunit_register(comp_suites); + + if (ret == 0) + ret = odp_cunit_run(); + + return ret; +} diff --git a/test/validation/api/comp/test_vectors.h b/test/validation/api/comp/test_vectors.h new file mode 100644 index 00000000..36d98b30 --- /dev/null +++ b/test/validation/api/comp/test_vectors.h @@ -0,0 +1,1997 @@ +/* Copyright (c) 2018, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _ODP_TEST_COMP_VECTORS_H_ +#define _ODP_TEST_COMP_VECTORS_H_ + +#define PLAIN_TEXT_SIZE 8192 + +static uint8_t plaintext[PLAIN_TEXT_SIZE] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x45, 0x8b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x23, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0x98, 0x3c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x48, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0xdc, 0xb0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x5c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x94, 0xe8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x58, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x1f, 0x8e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0x7c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, 0x58, 0x1b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xab, 0xd7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x41, 0xb1, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x1e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, 0xa9, 0xe2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xe1, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x5f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x62, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x08, 0x20, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x27, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x23, 0x16, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xe9, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0xcd, 0x90, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x43, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x0f, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x25, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0xf9, 0x9c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x72, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xc2, 0xdc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xd7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc9, 0xc4, 0xa7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0xfb, 0x6a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x5d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x50, 0x9b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, 0xd7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xba, 0x2d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0xe4, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x30, 0x71, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0xd9, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x61, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0x89, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xb1, 0x3a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xa3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0xa8, 0x43, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe9, 0x5a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x84, 0x63, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0xa8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xab, 0xbd, 0xed, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb2, 0x8c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xd0, 0x53, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xe0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x9b, 0x76, 0x9a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x9e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x24, 0xf3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x86, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xc4, 0x36, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x1d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0xf8, 0x95, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x86, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xf5, 0x7f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0xbd, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x8d, 0x7b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xf0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x1a, 0x22, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe9, 0xdd, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xc8, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0xd4, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xc2, 0x9a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0xf8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xad, 0x0b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x23, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x82, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x5f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xc6, 0x24, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0x2a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0xb9, 0x63, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x4a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6b, 0xd3, 0xea, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x77, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xd7, 0x0b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xa4, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x58, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x4e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x42, 0x23, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x7c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0xd4, 0x4e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x9a, 0xd8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0xcc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x8d, 0x6d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x8f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x89, 0x22, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xdb, 0x7f, 0x43, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0xa4, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xf9, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x48, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x78, 0x94, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xbb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x40, 0xc2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x26, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xde, 0xa1, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0xc3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x85, 0xe6, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xa5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xed, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0x3f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xf0, 0x4e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xc1, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xb7, 0x9b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xc7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x65, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xbe, 0x15, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xa8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x8c, 0x39, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0xe9, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0xaf, 0xb5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x26, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xb6, 0x34, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x3c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xb6, 0x6a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xb1, 0x57, 0x0c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x35, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0xe4, 0x9b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb3, 0x50, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x7e, 0xf8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0x5d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x0b, 0xa7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe9, 0x84, 0xd0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0xea, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x82, 0x81, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe5, 0x0a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0x8f, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0x4a, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x7f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x31, 0x8a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x47, 0xb9, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbd, 0x96, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x12, 0x8e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x5d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x3f, 0x1e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x9e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x47, 0x0a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0xee, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0xc5, 0xd9, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc5, 0xfd, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x2b, 0xf7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x7b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x3e, 0x96, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc5, 0x82, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xb1, 0xf2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x23, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0xd3, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x2f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x81, 0x62, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xdf, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0xee, 0xa5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xca, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x11, 0xea, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x59, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xe0, 0xb7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x5b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0xd9, 0x6d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x11, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x5e, 0x88, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x21, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0xa8, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x7e, 0xe1, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xe7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, 0x0e, 0xde, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xc5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xd6, 0xf6, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xd4, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xc3, 0x2a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x4f, 0xfc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x84, 0xf1, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, 0x24, 0xf3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9b, 0x57, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x30, 0xda, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xa5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x37, 0xb8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x1e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0xac, 0x88, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x8f, 0xa7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0xbd, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x5a, 0xc7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0x5e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x34, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x82, 0xa1, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x77, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, 0x55, 0x5c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0x2a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0xe7, 0xfc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xd3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x12, 0xc9, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0xf6, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x99, 0x29, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0xca, 0x92, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x5c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0xea, 0xad, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x1a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x15, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x6e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x1b, 0x7e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x82, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0xc5, 0xa0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0x4b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x28, 0x5e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xfd, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0x6a, 0xd8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0xd4, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xfe, 0x10, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0xfa, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x91, 0x59, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x59, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x6a, 0xdf, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0xaa, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xbe, 0x8d, 0x0d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xec, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, 0x21, 0x9e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0xe3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x17, 0x27, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0xb7, 0xa7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd3, 0x29, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0xff, 0x75, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x50, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xb3, 0x12, 0xb0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0xc9, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0xac, 0x25, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xfc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0xe3, 0x97, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x0a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x6b, 0xfd, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x8d, 0x43, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x31, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x4a, 0x6e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0xb5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x2e, 0xf7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa9, 0xb5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x8a, 0x88, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x2c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0xaf, 0xc6, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb2, 0x1b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x85, 0xe0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x1a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xc6, 0x99, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x13, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x06, 0x27, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xe8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0xf6, 0x57, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd5, 0x1d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xf1, 0xd2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xae, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x47, 0x3e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xf0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0xfe, 0xd0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x5a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0xb9, 0x51, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0xab, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x57, 0x4c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd7, 0x9d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0xb6, 0x31, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9b, 0xc2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x9d, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x43, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe5, 0xf3, 0xe7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xe8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xf8, 0x16, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x22, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0x9d, 0xb4, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0x82, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x4e, 0xe7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x4d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x9e, 0x81, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0xd4, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x67, 0x21, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x64, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xe7, 0xb5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x6e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0x4c, 0x53, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0xde, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x8c, 0x96, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x3d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x8c, 0x0d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xd3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x2e, 0x6f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x8a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x2e, 0xc3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0xe8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x36, 0xd5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x85, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x85, 0xaa, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb2, 0xec, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x48, 0x59, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x23, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x2f, 0x7c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x3b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0b, 0x18, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb9, 0x28, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x5e, 0x20, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, 0xa8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0xab, 0x32, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xac, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xf6, 0x47, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x4a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x80, 0xcf, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x5d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0xae, 0xcf, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x68, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xcc, 0xb1, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, 0xfb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x46, 0x93, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x58, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x39, 0x49, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, 0xd2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x2c, 0x1d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd3, 0x67, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0x5d, 0x7f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x5a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x4f, 0x79, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x94, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xdf, 0xef, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0xd5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x81, 0x5b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x27, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xf8, 0xcd, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xb1, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x63, 0x8a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xbe, 0xd9, 0x6a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0xc1, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0xac, 0xb2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x85, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x6e, 0xb2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0xa2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xcf, 0x51, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0xef, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x64, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x7e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x57, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0xcd, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xda, 0x79, 0x44, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0x9e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0x25, 0x5e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xb3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x71, 0x3b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x51, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x1b, 0x46, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0xcf, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xb3, 0xab, 0x5b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x6b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x63, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x8b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x41, 0xe3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xe4, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xb2, 0x94, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x3a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x95, 0x42, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x16, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x3e, 0x97, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x6f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xd8, 0xc9, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0xea, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x9b, 0xf4, 0x4a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x46, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe9, 0x8d, 0x44, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe5, 0xc3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x36, 0xfe, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0x8e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x42, 0xbe, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0x8d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe9, 0x5b, 0xbe, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0xbb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x2c, 0xa0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x81, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x6f, 0x90, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x9d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xd2, 0xd2, 0x97, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb2, 0x8a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x6c, 0x96, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x7e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0xf5, 0x95, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xd0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x09, 0x3f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x37, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xb4, 0x10, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0xbc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x71, 0x2a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x4a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0xd3, 0xf2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0xaf, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0xb9, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xab, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x9a, 0x0b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0xae, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0xf2, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x28, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x72, 0xe8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x28, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xb7, 0xf8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0xb4, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xb6, 0x3c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x13, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x70, 0xa9, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xe2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x94, 0xd3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5, 0xdf, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x80, 0xb8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x67, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x6a, 0x10, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0xed, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xd3, 0xe5, 0x5e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x60, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0xbd, 0xf4, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0xef, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x97, 0x1f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0x72, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xac, 0x71, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xbd, 0x58, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x7f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0xb8, 0x0b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x76, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x2b, 0x21, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x53, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x25, 0xa5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x1d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x7b, 0x67, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x97, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x46, 0x91, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x32, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x4c, 0x34, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x45, 0x17, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0xbc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xda, 0xdf, 0xaa, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xda, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x9c, 0x17, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x60, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0x41, 0x56, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x4d, 0xb2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x27, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x66, 0xce, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0x0b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x17, 0x53, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0xfe, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x7d, 0xac, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0xc3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x07, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x3b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x93, 0x43, 0x29, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0xbf, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xb2, 0x5e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x6f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x12, 0x5b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0xd7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x8d, 0xa4, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x8e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x6f, 0x91, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0xd3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0xc0, 0x22, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xbb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0xd0, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xb6, 0x77, 0xa3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0xb0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0xe1, 0x24, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x13, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x10, 0x12, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x22, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x1a, 0xe3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x5e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x4a, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xed, 0x69, 0x6b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x7f, 0x9f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0xe7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x25, 0x48, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x86, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x23, 0x1d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x68, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe5, 0x45, 0x1b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xd5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xd7, 0xbb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9d, 0x58, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0xac, 0x7f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xe6, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5, 0x1b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x38, 0x96, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0xa7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0xd6, 0xd6, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0xae, 0x95, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x4e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0xb9, 0x48, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0x8f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x62, 0x35, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xca, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0xb2, 0x35, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x7c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0x28, 0x1f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0xfd, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xfd, 0xc9, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, 0x92, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0x5e, 0xe9, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x7c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0x7a, 0xa2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x83, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x02, 0x41, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x9d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0xec, 0xa2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x48, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xb2, 0x72, 0x3b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0xc4, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0xa1, 0xd2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x1f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0x29, 0xbf, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x88, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0x3a, 0xcc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x62, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc9, 0x2f, 0x67, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x11, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x6b, 0xef, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xde, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x60, 0x1d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x25, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x6e, 0xb7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xda, 0xc2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0xef, 0x92, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd7, 0x20, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0x3f, 0x6b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x18, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xed, 0x1d, 0x53, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd2, 0x3c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xd3, 0xaa, 0x3c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x7c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0xb9, 0x9e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x25, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x6e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xc3, 0x9e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0xed, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x04, 0x3c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x35, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xb2, 0x6f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xa5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x54, 0x95, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0xdb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0x2d, 0x1a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0x8f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x3e, 0x84, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x5d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0xa1, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xa9, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3c, 0x7e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc9, 0xce, 0xab, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xaa, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0xc4, 0x74, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xbe, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xcb, 0x22, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0xd6, 0xf0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0xe8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x41, 0x15, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x81, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x65, 0xb2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xfa, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xa6, 0x0c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x66, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0xb6, 0x93, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x69, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0x53, 0x31, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xba, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x9f, 0x85, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x05, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0x60, 0xde, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0xf4, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0xe1, 0xcf, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0x8e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x84, 0x7c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xab, 0x1f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xec, 0x79, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0x25, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0xc9, 0xc7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x28, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xce, 0x27, 0xa3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x98, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0xd2, 0x2d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, 0xec, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x56, 0xb2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x9d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0xf0, 0xf7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x2c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x86, 0xc6, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x31, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xad, 0xd0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xeb, 0xeb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x2c, 0xc1, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x53, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x51, 0x99, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xe2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x9b, 0xbd, 0x88, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0xa5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0x9d, 0x24, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x5d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe9, 0xaa, 0x6b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0xfe, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x51, 0x29, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x8c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x8d, 0xfb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbd, 0xd5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0xab, 0x8f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x79, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0xfb, 0x26, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0x75, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0xa1, 0x6d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x23, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x0d, 0xcb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x74, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0xe2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x63, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xb2, 0x11, 0xec, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xed, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x90, 0x20, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x98, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x32, 0xe7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x3d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x84, 0x2b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x5f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x91, 0xce, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x42, 0xfd, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x4f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x7b, 0x8f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xdf, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0xac, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x26, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0xde, 0x24, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xfe, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xb2, 0x36, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x6b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0xd3, 0x34, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x5e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xe5, 0x95, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xcf, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xd4, 0x1d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0x86, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0xf2, 0x25, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, 0xe1, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xfb, 0x9e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbe, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x9b, 0x45, 0x66, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0x0c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xab, 0x03, 0xe2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xd6, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xd5, 0xa4, 0x3d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x36, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x14, 0x78, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, 0x28, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe5, 0x95, 0x71, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0xa5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, 0xfe, 0x2d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xd7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0xf5, 0x9d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x7a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc5, 0xb7, 0x90, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0xa2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0xa0, 0xb8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x96, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0xa0, 0x92, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x53, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0x01, 0xd6, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x74, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xb1, 0xb5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb9, 0xe6, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x43, 0x23, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc9, 0x85, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x6d, 0x6f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x36, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x67, 0xbc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0x68, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0x38, 0x51, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xad, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x75, 0x99, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x3c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x83, 0xa9, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x1a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x73, 0xfc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x97, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x43, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x3d, 0x68, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x41, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xe0, 0xdc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x32, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0xbc, 0x2b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x98, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0xd4, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x5c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, 0x2e, 0x23, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0x74, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xd2, 0xaf, 0xd3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xd2, 0xe8, 0x63, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x17, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x2c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xe7, 0x5c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd5, 0x84, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x62, 0xd0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0x4e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0xed, 0xe2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x9b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xdd, 0xfb, 0x3b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x62, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0xd7, 0x54, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x7e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xed, 0x7c, 0x53, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0x4a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x16, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0xbf, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe5, 0x53, 0xbf, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x53, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x01, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x34, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xab, 0x85, 0x75, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdd, 0xbd, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xcd, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x5a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x1a, 0x12, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xfc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xcf, 0x1b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0xca, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x2d, 0x26, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0xb7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x2b, 0x6f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x44, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0xe4, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x13, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0xc9, 0x5f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x46, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x62, 0xe5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xb6, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0xe1, 0xf8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x5d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0x19, 0xbf, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xb9, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0xdc, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x96, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x04, 0x9f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xf3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x56, 0xa6, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x58, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x46, 0x7d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x58, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x8d, 0xfa, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd2, 0xcb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x15, 0xd6, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb2, 0x5a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x26, 0x72, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x57, 0x31, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0xf5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xfa, 0xcd, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x84, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xad, 0x0d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xab, 0x26, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, 0xc8, 0xe2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x91, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x39, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x91, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0xd7, 0xeb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x9c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x48, 0x85, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0xb9, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xfa, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x62, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xdb, 0x72, 0x32, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xd7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xf8, 0x56, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x77, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xca, 0x24, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, 0x4e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0xcf, 0x2f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x10, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, 0xa6, 0xa5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x5c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xdc, 0x94, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xbc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xb7, 0x2e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xed, 0x63, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0xf7, 0x94, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xe7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x9b, 0x92, 0xb7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xa4, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0e, 0x6f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x5b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xd5, 0x35, 0xb7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x48, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0xed, 0xdc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x0d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0xe4, 0x66, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0x35, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc7, 0x87, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0xde, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x97, 0xa6, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x39, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0xb5, 0x8d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x90, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xb1, 0x8b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, 0x7f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0xde, 0xfa, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x8f, 0x54, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x85, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, 0xdc, 0xe5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdb, 0x6b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x42, 0x1c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x93, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x6d, 0xf0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0x2f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xa2, 0x74, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x17, 0xb2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5, 0x34, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x09, 0x28, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x25, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x8f, 0xc6, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, 0x3f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x6e, 0x99, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x7d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4d, 0x82, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x52, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xb3, 0x05, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x14, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x31, 0x77, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x4b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x4e, 0xc4, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xce, 0xe6, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdb, 0xa9, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x66, 0xb7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0xba, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xb6, 0x7f, 0x0b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0xf6, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x40, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6b, 0x5c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x62, 0xf5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x82, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0xf0, 0x05, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0xd0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xb1, 0xe1, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x92, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x35, 0x6b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0xc8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0xc6, 0xa6, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x3f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0xee, 0xb4, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd7, 0x56, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x7f, 0x72, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x5c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xd4, 0x10, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0xcc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xaf, 0x4e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x87, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xe0, 0xfe, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xe0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0xd2, 0xc2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x2f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xc7, 0xca, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe9, 0xad, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x2e, 0x13, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x2d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x68, 0x11, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xae, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x24, 0x8e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0xa8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x0a, 0x10, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x86, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xed, 0x2a, 0xb8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0xfa, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x56, 0x69, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0xdc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x8d, 0x90, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdb, 0x8b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, 0xa5, 0x2d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0x53, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0xcb, 0x67, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x94, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xb6, 0xaa, 0xa4, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x4a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xf1, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x7e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x16, 0xcf, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0xa0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x06, 0xcc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0xf7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x80, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0xd8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, 0x26, 0x91, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x48, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0xfb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xd2, 0x75, 0x92, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdb, 0xee, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x03, 0xc3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x99, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x97, 0x63, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x0d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x20, 0xa4, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xc2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x08, 0xe9, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x76, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x9e, 0xb5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0x95, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x02, 0xe2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, 0x44, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xe9, 0xb0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0xcd, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xd9, 0xc5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x94, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x17, 0x24, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xca, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x13, 0x0b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0x2e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x6a, 0x76, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x19, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x26, 0xc1, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xeb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0xf1, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x4c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x33, 0xcc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x78, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xa2, 0xf6, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xa9, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x67, 0x6e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xa5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x42, 0x7f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xfe, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xb3, 0x8c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x62, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, 0xc0, 0xed, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xbc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0xd9, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, 0x5f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x52, 0xef, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb6, 0xdb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0xa4, 0x86, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb9, 0x3b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xa9, 0x5c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x7d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xd0, 0xf5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xc1, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x47, 0x43, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xe3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0xef, 0x73, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xb1, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0xfc, 0xd7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x16, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x9d, 0x75, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xee, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x62, 0x87, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xd0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x66, 0x9f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x05, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x79, 0xa0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xce, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0xaa, 0x37, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0xbc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xcc, 0xdf, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x5e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1f, 0x43, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0x8d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x1a, 0x3a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xf8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0xed, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0xd4, 0x86, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x92, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0xa8, 0xc9, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x7d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe5, 0x0f, 0x44, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x78, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xa9, 0x3e, 0x64, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x57, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x5b, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x2e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x09, 0x41, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x58, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x44, 0x0d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xa6, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x46, 0xd6, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xa7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0x76, 0xf8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, 0xad, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xac, 0x12, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0xf0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x7c, 0x83, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x57, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0xac, 0xb8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0x48 +}; + +/** Length of the pre-compressed data using deflate algorithm */ +#define COMP_DEFLATE_SIZE 3769 + +/** Pre-compressed data using deflate algorithm */ +static uint8_t compressed_text_def[COMP_DEFLATE_SIZE] = { + 0x35, 0x99, 0x7b, 0x5c, 0xcf, 0x77, 0xfb, 0xc7, + 0xdf, 0xe5, 0x18, 0x8b, 0xb0, 0x8a, 0xd8, 0x72, + 0x9e, 0xb3, 0x64, 0x0c, 0x91, 0x39, 0xe6, 0x90, + 0xd3, 0x44, 0x6e, 0xa7, 0x9b, 0x8c, 0x26, 0x87, + 0x85, 0x9b, 0xcd, 0x34, 0xe5, 0x7c, 0x33, 0x8d, + 0xed, 0x76, 0x3e, 0xe6, 0x9c, 0x8a, 0x08, 0x35, + 0x16, 0x33, 0x67, 0x99, 0x15, 0xe5, 0xd0, 0xb4, + 0xe6, 0xd4, 0x9c, 0x8a, 0xe4, 0x14, 0x39, 0xfc, + 0x7e, 0x8f, 0xf7, 0xf3, 0xb5, 0xfd, 0xb1, 0xd7, + 0x5e, 0xeb, 0xfb, 0xfd, 0x7c, 0xde, 0x87, 0xeb, + 0x7a, 0x5d, 0xaf, 0xeb, 0xfa, 0x1a, 0xf3, 0xff, + 0xff, 0x04, 0x77, 0xf9, 0xce, 0xd8, 0x7f, 0x4e, + 0xd5, 0xb2, 0x30, 0x76, 0x55, 0x5b, 0xf8, 0x94, + 0x6e, 0x16, 0xfa, 0x65, 0xed, 0x81, 0xbf, 0x1b, + 0x6a, 0xa1, 0xc7, 0xb2, 0xbb, 0xf0, 0xdc, 0x41, + 0x16, 0xea, 0x7b, 0x7e, 0x0f, 0x3f, 0x1f, 0x66, + 0xe1, 0xd0, 0xa0, 0xaa, 0xf0, 0xd8, 0x2b, 0x16, + 0x0a, 0x3a, 0xec, 0x85, 0x17, 0x7d, 0x68, 0xe1, + 0xd6, 0xce, 0x9b, 0xf0, 0xae, 0x37, 0x2c, 0x84, + 0x99, 0x7f, 0xc3, 0x8f, 0x05, 0x59, 0x08, 0x28, + 0x5d, 0x1d, 0x5e, 0xf8, 0x91, 0x85, 0xaa, 0xb5, + 0xdc, 0xe0, 0x77, 0xef, 0x59, 0xb8, 0x73, 0x7e, + 0x29, 0x3c, 0xb2, 0x93, 0x85, 0x69, 0xe5, 0xcb, + 0xc1, 0x07, 0xd7, 0xb1, 0xd0, 0xe4, 0xe5, 0x3a, + 0xf8, 0xa8, 0xc9, 0x16, 0x9a, 0x1f, 0xcb, 0x82, + 0x6f, 0x64, 0x3d, 0x67, 0x4f, 0xec, 0x80, 0xaf, + 0x29, 0x65, 0x61, 0x4c, 0x51, 0x08, 0xdc, 0x7b, + 0x98, 0x05, 0xe7, 0xbe, 0x6b, 0xe1, 0x49, 0x7c, + 0xbe, 0xd9, 0xa1, 0xc6, 0xf0, 0x41, 0xb7, 0x2d, + 0x6c, 0xf1, 0x9a, 0xa4, 0xf7, 0x65, 0x5a, 0xa8, + 0x33, 0x72, 0x3c, 0x7c, 0xd8, 0x42, 0x0b, 0x25, + 0xf6, 0xb6, 0x81, 0xbb, 0x6f, 0xe1, 0x6b, 0xd1, + 0xac, 0xd3, 0xdc, 0x1b, 0x6c, 0x61, 0xf8, 0xdc, + 0x51, 0xf0, 0x8c, 0x68, 0x0b, 0xb1, 0x87, 0xf3, + 0xe0, 0x09, 0x8b, 0x2d, 0x9c, 0x4f, 0xeb, 0x0f, + 0x3f, 0x75, 0xdd, 0xc2, 0xda, 0x69, 0x6b, 0xe0, + 0xfb, 0x37, 0x58, 0x08, 0xa8, 0xfd, 0x04, 0x5e, + 0x61, 0xbe, 0x85, 0x72, 0x27, 0x5a, 0xc2, 0x67, + 0x7f, 0x60, 0xe1, 0x3f, 0x85, 0xcb, 0xe1, 0x1d, + 0xf8, 0x7b, 0x8d, 0x67, 0xe1, 0xf0, 0x76, 0x87, + 0x2d, 0x64, 0x45, 0xce, 0x80, 0x2f, 0xc8, 0xb7, + 0x10, 0xea, 0x51, 0x53, 0xeb, 0xfb, 0xd3, 0x82, + 0xef, 0x99, 0x92, 0xf0, 0x4d, 0x19, 0x3c, 0xe6, + 0x98, 0xde, 0x7f, 0xa3, 0xd0, 0xc2, 0xeb, 0x5d, + 0x65, 0xe1, 0xc1, 0xc4, 0x8b, 0xef, 0xec, 0xe2, + 0x70, 0x07, 0xee, 0x71, 0xe6, 0xa9, 0xda, 0xf0, + 0x95, 0x0d, 0x2c, 0xdc, 0x3f, 0xa8, 0xfd, 0x66, + 0xf5, 0xb0, 0x30, 0x2e, 0xfd, 0x3e, 0x7c, 0xc5, + 0x57, 0x16, 0x96, 0x5c, 0xd1, 0xf3, 0x5a, 0x6d, + 0xb5, 0x30, 0x74, 0xd0, 0x00, 0x78, 0x83, 0xde, + 0x16, 0x72, 0x3b, 0xf2, 0x1e, 0xb3, 0x87, 0xf8, + 0xf2, 0xc9, 0xe0, 0xff, 0x9b, 0x22, 0xd6, 0xe9, + 0xbd, 0xe6, 0x2a, 0x3c, 0xfe, 0x37, 0x0b, 0x6d, + 0x23, 0x27, 0xc0, 0x03, 0x96, 0xf0, 0xfd, 0x85, + 0xda, 0x5f, 0x65, 0xe2, 0xf2, 0x5a, 0xb8, 0xee, + 0x63, 0x28, 0xef, 0x73, 0x7c, 0xf9, 0x0e, 0xee, + 0x41, 0xbc, 0xbf, 0xfd, 0x7a, 0x19, 0xbc, 0xd3, + 0xcf, 0xbc, 0xe6, 0xd3, 0x63, 0xf0, 0x57, 0x75, + 0x2d, 0xc4, 0x64, 0x6f, 0x82, 0xb7, 0x39, 0xce, + 0xdf, 0xe7, 0xfd, 0x0d, 0xaf, 0xbf, 0xcd, 0xc2, + 0x85, 0x3c, 0xc5, 0xe3, 0xdf, 0xed, 0x2d, 0x94, + 0xc8, 0xd7, 0x7a, 0xdb, 0xfe, 0x6a, 0x21, 0x2c, + 0x49, 0xf1, 0xb5, 0xec, 0xb4, 0x85, 0xa9, 0xa3, + 0x5b, 0xc1, 0xaf, 0x96, 0xb7, 0x70, 0xc4, 0xd5, + 0x01, 0x3e, 0x92, 0xf8, 0x58, 0xb8, 0xb8, 0x35, + 0xfc, 0x25, 0xf1, 0x3f, 0x34, 0xfe, 0x00, 0xfc, + 0x67, 0xd6, 0x13, 0x9d, 0xf8, 0x31, 0x7c, 0x35, + 0x79, 0x5b, 0x3e, 0x51, 0xf1, 0xbc, 0xfc, 0x53, + 0x0b, 0x7b, 0x03, 0xdf, 0x83, 0x3f, 0x68, 0x61, + 0xe1, 0xf1, 0x6d, 0xbd, 0x7f, 0x5f, 0x5f, 0xd6, + 0x37, 0x93, 0x7b, 0x35, 0x8f, 0x88, 0xff, 0x17, + 0x65, 0x95, 0x1f, 0xe6, 0x17, 0xfb, 0xef, 0x7b, + 0x73, 0xd3, 0xa0, 0x9b, 0xb8, 0xb7, 0x36, 0xb3, + 0x67, 0xc1, 0x73, 0xca, 0x58, 0x48, 0x59, 0xc2, + 0xba, 0x4d, 0xd9, 0x50, 0x0b, 0xe7, 0x7a, 0x68, + 0xfd, 0x69, 0xc4, 0x5d, 0xb7, 0x66, 0x8b, 0xe0, + 0x7e, 0x8e, 0x16, 0x3e, 0xf7, 0x3b, 0x08, 0x3f, + 0xbc, 0xc2, 0x82, 0x67, 0x45, 0xe9, 0x47, 0x2d, + 0xde, 0xff, 0x61, 0x7b, 0x74, 0xc2, 0x44, 0x13, + 0xef, 0xd5, 0xfc, 0x78, 0x8f, 0x99, 0xf1, 0x90, + 0xef, 0x9f, 0x24, 0xef, 0xcc, 0xc9, 0x37, 0x16, + 0xde, 0x6f, 0xf8, 0x02, 0x3e, 0x85, 0xb8, 0x1e, + 0xec, 0xbb, 0x42, 0x7f, 0x9f, 0x6d, 0x61, 0xf8, + 0xde, 0x02, 0x78, 0x4f, 0xe2, 0x68, 0x7a, 0xba, + 0xd6, 0x3b, 0xaa, 0xa9, 0x05, 0x9f, 0x59, 0xe8, + 0x8e, 0x09, 0xfd, 0x8b, 0xe7, 0x3f, 0xe4, 0x1e, + 0x4d, 0x6d, 0xe2, 0xab, 0x42, 0x8a, 0xe2, 0x63, + 0x03, 0xfb, 0x73, 0xaa, 0xa0, 0xf8, 0xcd, 0xfa, + 0x97, 0x85, 0x98, 0xeb, 0x49, 0xf0, 0x8c, 0x21, + 0x16, 0xe2, 0x32, 0x15, 0x7f, 0x05, 0x15, 0x2c, + 0x54, 0x1d, 0xfe, 0x5f, 0xb8, 0x4b, 0x0d, 0x0b, + 0xf1, 0xd1, 0xca, 0x17, 0x1f, 0x9e, 0xd7, 0x7c, + 0x26, 0x3a, 0x68, 0xce, 0xdf, 0xb1, 0x70, 0xab, + 0x5c, 0x36, 0xbc, 0xef, 0x49, 0x0b, 0xdd, 0x2e, + 0x3f, 0x87, 0xfb, 0x91, 0x8f, 0xae, 0xc7, 0xc9, + 0x2b, 0x33, 0x94, 0x73, 0xfe, 0xb9, 0xcf, 0x6b, + 0xf8, 0x97, 0xf0, 0x9a, 0x73, 0x1f, 0xc3, 0xab, + 0xc0, 0x0f, 0xfd, 0xa3, 0x17, 0x6b, 0x03, 0x2d, + 0x7c, 0xeb, 0xf5, 0x07, 0xfc, 0x19, 0xfb, 0x2c, + 0xfb, 0xc9, 0x4f, 0xf0, 0x1b, 0x9c, 0xbb, 0x47, + 0x9c, 0xd6, 0x5b, 0x8d, 0xef, 0x87, 0x2f, 0x51, + 0x3c, 0xd4, 0x42, 0x3f, 0x0a, 0x07, 0x13, 0xb7, + 0xa6, 0x3e, 0xeb, 0x2f, 0xac, 0x3c, 0x1c, 0xbe, + 0x95, 0x38, 0xac, 0x3a, 0x5b, 0xf9, 0x51, 0x89, + 0xfc, 0x3e, 0x30, 0x80, 0xba, 0x61, 0x52, 0x58, + 0x77, 0xef, 0x3b, 0x5a, 0xef, 0xdd, 0x74, 0x0b, + 0xab, 0x2a, 0x9e, 0x85, 0x7b, 0xb3, 0xcf, 0x56, + 0xab, 0xeb, 0xc3, 0xaf, 0x53, 0x67, 0xa6, 0xa7, + 0xfc, 0x08, 0xef, 0xc5, 0x73, 0xda, 0xdd, 0xdf, + 0x05, 0xff, 0xd8, 0xc3, 0x42, 0xf2, 0x30, 0x57, + 0xf8, 0xbf, 0x27, 0xf2, 0xfc, 0xaa, 0x33, 0xe1, + 0x5f, 0x71, 0xff, 0xaf, 0x4e, 0x46, 0xc1, 0xcf, + 0xf5, 0xb4, 0x30, 0xbe, 0x9e, 0xd6, 0x5b, 0x82, + 0xf8, 0x89, 0x0b, 0x91, 0x7e, 0xcc, 0xe7, 0x7c, + 0x6b, 0xbc, 0x75, 0x81, 0x37, 0x7c, 0x65, 0x21, + 0xe6, 0x07, 0xee, 0xd9, 0x78, 0x80, 0x03, 0x42, + 0x88, 0x13, 0xb3, 0x39, 0xc6, 0xc2, 0x91, 0x48, + 0x67, 0x78, 0x68, 0x2e, 0xfb, 0xad, 0x41, 0xdc, + 0x9a, 0x29, 0xb7, 0x2c, 0xf8, 0xb8, 0x53, 0xc7, + 0x4c, 0x71, 0x27, 0x0b, 0x43, 0x93, 0x74, 0x9e, + 0xe9, 0xec, 0xb3, 0xe5, 0xbb, 0xa9, 0xf0, 0x65, + 0x7d, 0x2d, 0xec, 0xab, 0xb8, 0x07, 0x1e, 0xcf, + 0xb9, 0xdc, 0x8c, 0xa3, 0xae, 0x99, 0x7c, 0xce, + 0xed, 0xf6, 0xad, 0x95, 0xf0, 0x0d, 0xe4, 0x45, + 0x9f, 0x71, 0xec, 0xc3, 0x78, 0x13, 0xa7, 0xae, + 0xaa, 0x8b, 0xa6, 0x7b, 0x33, 0x0b, 0x6f, 0x7a, + 0x70, 0x2e, 0x66, 0x36, 0xba, 0xd1, 0xbb, 0x89, + 0xf2, 0x65, 0x27, 0xbc, 0xf4, 0x22, 0xdd, 0x77, + 0x68, 0x23, 0x0b, 0x19, 0xf1, 0xa7, 0xe0, 0x09, + 0xe8, 0xe5, 0xa2, 0x79, 0xd7, 0xe1, 0xf5, 0x39, + 0xef, 0x80, 0x53, 0xab, 0xe1, 0xdd, 0x2a, 0x59, + 0x58, 0x53, 0x52, 0xfb, 0x2b, 0xc3, 0x7d, 0x25, + 0x3f, 0x27, 0xce, 0xcc, 0x25, 0xea, 0x51, 0xb9, + 0xc7, 0x17, 0xe1, 0x95, 0x77, 0x5b, 0x88, 0xf6, + 0xf3, 0x85, 0x77, 0xce, 0xb7, 0x10, 0xf7, 0x36, + 0x0d, 0x3e, 0x84, 0xfa, 0xf8, 0xe4, 0x60, 0x3f, + 0xf8, 0xf7, 0xb1, 0x16, 0xfc, 0x03, 0xfd, 0xe1, + 0x57, 0xd6, 0x5b, 0x68, 0x9c, 0xc8, 0xbe, 0xcc, + 0x5a, 0x74, 0xd9, 0x69, 0xbd, 0xf2, 0xb3, 0x23, + 0xfb, 0xce, 0x79, 0x42, 0x1e, 0x99, 0x92, 0xac, + 0xe7, 0x44, 0xa1, 0xfc, 0x43, 0x73, 0xea, 0x40, + 0xfc, 0xfa, 0xfd, 0xf0, 0xf3, 0xc4, 0xc7, 0x96, + 0xde, 0xfa, 0xfc, 0xdc, 0x5e, 0x16, 0xc2, 0x37, + 0x48, 0xdf, 0x1a, 0x13, 0x0f, 0xbb, 0x82, 0xc9, + 0x5b, 0x93, 0xf1, 0xb9, 0x85, 0x69, 0x77, 0xa4, + 0xbf, 0x7e, 0x9c, 0x6b, 0xb6, 0xbf, 0xea, 0xb5, + 0x37, 0x79, 0x5b, 0x6d, 0xb1, 0xf4, 0x27, 0xb7, + 0x9d, 0x85, 0x1e, 0x8b, 0x15, 0x1f, 0x27, 0x88, + 0x77, 0xaf, 0x26, 0x5f, 0xc2, 0x9f, 0xa3, 0x8b, + 0xd5, 0x9b, 0x50, 0x47, 0x4c, 0x2d, 0xd6, 0x3b, + 0xaf, 0xe5, 0x25, 0xf8, 0xf8, 0x79, 0x16, 0x8a, + 0xe6, 0x11, 0x67, 0x26, 0x81, 0xf8, 0x2a, 0xd5, + 0x4d, 0xf1, 0x58, 0x1c, 0x3d, 0x7b, 0xda, 0x34, + 0x4c, 0xef, 0xf3, 0xb1, 0x50, 0xb6, 0x6c, 0x65, + 0xf8, 0xc1, 0x7a, 0x3c, 0x7f, 0x78, 0x75, 0xf8, + 0x21, 0xea, 0xc9, 0xfc, 0x58, 0x6f, 0xf8, 0xf1, + 0x38, 0x0b, 0xbe, 0xcf, 0xfd, 0xe0, 0x25, 0xa8, + 0xcf, 0x8f, 0x23, 0x52, 0xf5, 0x3c, 0xf4, 0x38, + 0x73, 0xb7, 0x78, 0xf0, 0x17, 0x16, 0x9a, 0xff, + 0x26, 0x3f, 0x97, 0x54, 0x64, 0x61, 0x75, 0xd7, + 0xff, 0xc1, 0xfb, 0xe2, 0x07, 0xb7, 0xb4, 0xee, + 0x0e, 0xbf, 0xc5, 0xbd, 0xbf, 0xdf, 0x88, 0x38, + 0x30, 0xe9, 0xc1, 0x3c, 0x6f, 0x98, 0xfc, 0xc8, + 0xc7, 0xdc, 0xf7, 0x8b, 0x3e, 0xd3, 0xe1, 0xc3, + 0xa9, 0xbb, 0x51, 0x7f, 0x3d, 0x82, 0x17, 0x70, + 0x0e, 0x2e, 0xb3, 0xd0, 0x55, 0x13, 0x4d, 0x9c, + 0x3d, 0x2f, 0x3c, 0xaf, 0xf5, 0xb2, 0x8e, 0x65, + 0xa3, 0x54, 0x5f, 0x1c, 0xd0, 0xd5, 0x23, 0x99, + 0xaa, 0x7f, 0xfb, 0xa9, 0xb7, 0xc9, 0x71, 0x09, + 0xf0, 0xce, 0x9c, 0xe7, 0xd7, 0x13, 0xc5, 0x5f, + 0x6d, 0xb6, 0xd0, 0x3d, 0x55, 0xf1, 0x36, 0x96, + 0xf7, 0xfe, 0x6d, 0xb8, 0x67, 0x53, 0x0b, 0x1d, + 0x49, 0x0b, 0xc4, 0x27, 0x1a, 0x0f, 0xde, 0xfb, + 0xc7, 0xf4, 0xce, 0xfa, 0x3c, 0x79, 0x1e, 0x52, + 0x47, 0x7a, 0x32, 0x73, 0x9f, 0x05, 0xff, 0x49, + 0x3e, 0xe2, 0x3c, 0xb7, 0x5f, 0xd5, 0xae, 0xf0, + 0x3a, 0x9c, 0xe3, 0xbe, 0x58, 0xed, 0xa7, 0xdb, + 0x38, 0x0b, 0x73, 0x47, 0xa9, 0x1e, 0xf5, 0xc7, + 0x87, 0xb7, 0xe9, 0x80, 0x6e, 0x98, 0x65, 0xf8, + 0xcd, 0xa2, 0x04, 0xf9, 0x91, 0x66, 0xf8, 0xca, + 0xd5, 0xcb, 0x3b, 0xc2, 0x97, 0x12, 0xd7, 0xde, + 0xbe, 0xd2, 0x83, 0x40, 0xe2, 0xaa, 0xf3, 0x55, + 0xe9, 0xe9, 0x43, 0xea, 0xd4, 0xda, 0xa7, 0xdc, + 0xab, 0x49, 0x66, 0x1d, 0xf7, 0x22, 0xb5, 0xfe, + 0x1c, 0xe2, 0xae, 0x4e, 0xcb, 0xb7, 0xf0, 0x54, + 0xea, 0x70, 0xe9, 0x8e, 0x47, 0xe0, 0xcf, 0x22, + 0xf9, 0xfc, 0x10, 0xf1, 0x9b, 0xf8, 0xa1, 0xe1, + 0x8d, 0xa2, 0xb4, 0x5e, 0xf2, 0x64, 0xc4, 0x97, + 0x4b, 0xe1, 0x31, 0xe4, 0xe7, 0xc5, 0x8b, 0x5a, + 0x4f, 0x02, 0xf7, 0x92, 0x36, 0x5e, 0xf9, 0x30, + 0x8f, 0xf3, 0x7c, 0xf5, 0x4c, 0xfe, 0x34, 0x20, + 0xcd, 0xc2, 0x55, 0x27, 0x7c, 0x92, 0x69, 0xf1, + 0x89, 0x85, 0xbb, 0xfb, 0x5d, 0xe0, 0x19, 0xc9, + 0x16, 0xc6, 0x4c, 0x52, 0xbd, 0x9b, 0xcd, 0x3e, + 0x3e, 0x4f, 0x57, 0x3d, 0x5f, 0x15, 0x6f, 0x21, + 0x53, 0x76, 0xc2, 0x44, 0xa3, 0x17, 0x0b, 0xd6, + 0xc8, 0x4f, 0x4e, 0x45, 0x6f, 0x46, 0x17, 0xc8, + 0x5f, 0x85, 0x92, 0x0f, 0x83, 0x27, 0xab, 0x7f, + 0x59, 0x04, 0x6f, 0x9f, 0x24, 0xff, 0x13, 0x84, + 0x2e, 0x44, 0x24, 0xaa, 0xff, 0xa9, 0x8f, 0xbe, + 0x75, 0x0e, 0xdd, 0x09, 0xcf, 0xa6, 0x6f, 0x09, + 0x5b, 0x46, 0x1e, 0x9b, 0x6d, 0xd4, 0x81, 0x85, + 0x11, 0xaa, 0x9f, 0xbd, 0x89, 0xef, 0xc0, 0x10, + 0xad, 0xff, 0x5f, 0xf8, 0xfa, 0xf4, 0x1c, 0xc5, + 0x47, 0xbf, 0x11, 0x16, 0x76, 0x1d, 0x7e, 0x0a, + 0x8f, 0x23, 0xde, 0xe6, 0xaf, 0xf4, 0x84, 0x2f, + 0xa7, 0x5f, 0x89, 0x88, 0x53, 0x7f, 0x91, 0x5b, + 0xda, 0x82, 0xfb, 0x61, 0xf2, 0xca, 0xdc, 0x26, + 0x6f, 0xe6, 0xfd, 0xa4, 0xfd, 0x3d, 0x9e, 0x66, + 0x61, 0x71, 0x43, 0xe9, 0xd3, 0x7b, 0xe8, 0xd0, + 0x98, 0x3a, 0xf2, 0x2f, 0x8f, 0xc9, 0xbb, 0xb0, + 0x19, 0xac, 0xcb, 0x1c, 0xe5, 0x5e, 0xc2, 0xba, + 0xfe, 0x00, 0xff, 0x19, 0x1d, 0xa8, 0xe9, 0x2f, + 0xff, 0xf8, 0x5a, 0xf5, 0xa5, 0x8b, 0x3b, 0x7c, + 0x0c, 0xe7, 0xff, 0xc7, 0x5f, 0xd2, 0x9f, 0x91, + 0xf8, 0x86, 0xb2, 0xeb, 0xf4, 0xf7, 0x51, 0xec, + 0x27, 0xbe, 0xc3, 0x40, 0x78, 0x10, 0x7e, 0x29, + 0xb9, 0x97, 0xf2, 0x6b, 0x0e, 0xf9, 0xba, 0x7f, + 0xcc, 0xef, 0xf0, 0xb1, 0xac, 0xbb, 0xa9, 0xbb, + 0xf4, 0xb2, 0x0d, 0x71, 0xf7, 0xee, 0x5b, 0x74, + 0xc8, 0xc4, 0x13, 0x8f, 0x1f, 0x95, 0xd2, 0x7d, + 0xb9, 0x91, 0x47, 0xff, 0xeb, 0x24, 0x3f, 0x10, + 0x87, 0x1f, 0x2d, 0x95, 0xa0, 0xf3, 0xf4, 0x24, + 0xde, 0x7f, 0xaa, 0xa8, 0x7c, 0x9a, 0x40, 0xbf, + 0x56, 0x21, 0x12, 0x5f, 0x6f, 0x3e, 0x26, 0x9e, + 0x1b, 0x7f, 0xa9, 0xfd, 0x46, 0x72, 0x6f, 0x8f, + 0x8e, 0xaa, 0x1f, 0xe8, 0x43, 0x3c, 0x2f, 0x4c, + 0x2b, 0x06, 0xcf, 0x60, 0xfd, 0x89, 0x5f, 0x6d, + 0xd1, 0xfe, 0xf6, 0x58, 0x68, 0x71, 0x43, 0xfd, + 0xcc, 0xaf, 0xc4, 0xc3, 0x69, 0x97, 0x8a, 0xf0, + 0xdb, 0x3c, 0xa7, 0xb6, 0x87, 0xf2, 0x75, 0x0e, + 0xeb, 0x0a, 0xee, 0xe1, 0x05, 0xbf, 0x1a, 0x61, + 0x21, 0x6f, 0x2c, 0x79, 0x6e, 0x56, 0x8c, 0xb4, + 0x50, 0x31, 0x7c, 0x23, 0x3c, 0x97, 0xba, 0xd3, + 0xa5, 0x0e, 0x7d, 0x87, 0x69, 0x4d, 0xbf, 0xe6, + 0x58, 0x4b, 0x7a, 0x79, 0x15, 0xbd, 0xcd, 0xe9, + 0xa2, 0x7e, 0xba, 0x0c, 0x7a, 0x58, 0x78, 0x85, + 0x75, 0x9b, 0xf5, 0xc4, 0xc5, 0x57, 0x71, 0xd2, + 0x53, 0xa7, 0xd1, 0x16, 0x2e, 0xfc, 0xad, 0xf3, + 0xdb, 0xc6, 0xf7, 0x56, 0xb4, 0x52, 0xfe, 0xfd, + 0x8a, 0xef, 0x78, 0x7a, 0xf9, 0x32, 0xdc, 0x13, + 0x3f, 0xb2, 0x7c, 0xb7, 0xf2, 0x31, 0x86, 0x3e, + 0x65, 0xf6, 0x41, 0xad, 0x27, 0x85, 0xfe, 0x69, + 0x7c, 0x10, 0x7d, 0x83, 0xe9, 0x9e, 0x62, 0x61, + 0x77, 0x82, 0xf8, 0x52, 0xea, 0xce, 0xf9, 0x7a, + 0x8a, 0x5f, 0x37, 0x7c, 0xc8, 0x17, 0x6f, 0xa4, + 0x3f, 0x87, 0xf0, 0x6d, 0x71, 0xc3, 0xe9, 0x5b, + 0xcc, 0x37, 0x7c, 0x7e, 0xfb, 0x37, 0xe8, 0xae, + 0x29, 0x98, 0x63, 0x61, 0xbf, 0x63, 0x07, 0x78, + 0x34, 0xfa, 0x91, 0x92, 0xab, 0xbf, 0xaf, 0x66, + 0x1d, 0x09, 0x93, 0xa5, 0xa7, 0xc7, 0x4e, 0x58, + 0xf8, 0x64, 0x93, 0xfc, 0x44, 0x03, 0xde, 0x7b, + 0xae, 0x3e, 0x71, 0x61, 0x4a, 0xe3, 0x63, 0x52, + 0xdb, 0xd0, 0x07, 0x9a, 0x91, 0xf8, 0xfa, 0xb3, + 0x4d, 0x15, 0xff, 0xc7, 0xf1, 0xe3, 0x11, 0xe3, + 0x54, 0x5f, 0x86, 0x53, 0xaf, 0x27, 0x8e, 0xd0, + 0x79, 0x17, 0xc3, 0x67, 0xd5, 0x9b, 0x28, 0x3f, + 0xff, 0x07, 0xfe, 0xc2, 0xff, 0x91, 0xfc, 0xe7, + 0x95, 0xea, 0x16, 0x42, 0xda, 0xeb, 0x3e, 0xab, + 0x50, 0x67, 0xf3, 0x3e, 0x50, 0x3c, 0x5f, 0x44, + 0x37, 0xd2, 0x63, 0xa4, 0x1f, 0xab, 0xd9, 0xaf, + 0xff, 0x41, 0xf9, 0xc1, 0xe9, 0x3c, 0xff, 0x3b, + 0x23, 0x3f, 0x66, 0xc8, 0xaf, 0x9a, 0xc7, 0xf5, + 0xf7, 0x81, 0xe8, 0xc5, 0x9a, 0xe2, 0xfa, 0x7e, + 0x06, 0xe7, 0x5c, 0x39, 0x41, 0x7e, 0xe1, 0x02, + 0x79, 0xfd, 0x36, 0x40, 0xf7, 0x75, 0xfb, 0x9a, + 0x85, 0xcc, 0xc6, 0xf8, 0x32, 0x73, 0x9e, 0xfb, + 0xea, 0xe2, 0x3b, 0x17, 0xbe, 0x85, 0xfa, 0xfd, + 0xc3, 0x26, 0xf5, 0x1b, 0xa7, 0xd0, 0x31, 0x87, + 0xb6, 0xf2, 0xc7, 0xef, 0xf0, 0xf7, 0x67, 0x7f, + 0x47, 0x37, 0x4d, 0x03, 0xf2, 0x3c, 0xf3, 0xc4, + 0x7f, 0xe0, 0xae, 0xe8, 0xbe, 0xc3, 0x39, 0xe5, + 0x4b, 0x27, 0x9e, 0xd3, 0xf4, 0x72, 0x3e, 0xfc, + 0x21, 0x3a, 0xea, 0xda, 0x41, 0xfe, 0xdb, 0x91, + 0x7a, 0xb0, 0x60, 0xb4, 0xf2, 0x7f, 0x24, 0xfe, + 0x39, 0x6c, 0xbb, 0xfa, 0xcf, 0x4a, 0x63, 0x2c, + 0x04, 0x25, 0xca, 0x2f, 0x6c, 0x18, 0x6b, 0x61, + 0x6c, 0x7f, 0xf9, 0xb9, 0xd7, 0x87, 0x2c, 0x4c, + 0xde, 0x48, 0x9d, 0x36, 0xb3, 0x4a, 0xb0, 0xad, + 0x11, 0xea, 0x87, 0x26, 0xa1, 0x9b, 0xa3, 0x6f, + 0xc8, 0x8f, 0x6c, 0x27, 0xbf, 0x7d, 0xe7, 0xca, + 0xff, 0xc4, 0x12, 0x0f, 0xdd, 0x73, 0xe5, 0x27, + 0x52, 0x39, 0xef, 0x49, 0x67, 0xd5, 0xaf, 0xf4, + 0x44, 0xef, 0x7f, 0xff, 0x48, 0xf9, 0xdd, 0x66, + 0x95, 0x85, 0xa9, 0x17, 0x35, 0xdf, 0xd9, 0x81, + 0xbf, 0xea, 0x33, 0x50, 0xeb, 0x9f, 0x46, 0x3c, + 0xde, 0xcf, 0x97, 0x5f, 0x9e, 0x89, 0x3f, 0xfe, + 0x7c, 0xbe, 0xfc, 0xf1, 0x3b, 0xd6, 0x3d, 0x6b, + 0x57, 0x1a, 0xfc, 0xc1, 0x03, 0xb6, 0xdd, 0x08, + 0xdf, 0x61, 0xde, 0x10, 0x17, 0x6f, 0xfb, 0xc9, + 0x2f, 0x1f, 0xa7, 0x7e, 0xac, 0x3d, 0x2c, 0xbf, + 0x1d, 0xcc, 0x7d, 0xfe, 0xb2, 0x5e, 0xfa, 0xe2, + 0xcc, 0x7d, 0xdd, 0x8b, 0x51, 0x7c, 0x2d, 0x46, + 0x1f, 0x67, 0xf6, 0x93, 0xfe, 0xf5, 0x66, 0x3e, + 0xe4, 0x1d, 0x89, 0xef, 0x32, 0x87, 0xd1, 0x83, + 0x97, 0xb1, 0xdc, 0xbb, 0x09, 0x63, 0xdf, 0x8b, + 0x8b, 0x98, 0x0b, 0x98, 0x10, 0xfa, 0x8a, 0xd3, + 0x9b, 0xd4, 0x8f, 0x0e, 0xc1, 0x2f, 0x6e, 0x75, + 0x3e, 0x07, 0x6f, 0xcb, 0x3d, 0x3b, 0xba, 0x68, + 0x1e, 0xf7, 0x94, 0x39, 0x4d, 0x42, 0x05, 0xce, + 0xc1, 0x68, 0x2c, 0x35, 0x79, 0x69, 0x75, 0xfe, + 0xc3, 0x8d, 0xf3, 0xca, 0xf5, 0x96, 0x5f, 0x7e, + 0x82, 0xbf, 0x75, 0x98, 0xdb, 0x10, 0xde, 0x8b, + 0xf9, 0x4f, 0xfe, 0x0f, 0xd2, 0x7b, 0x83, 0xce, + 0xb8, 0x74, 0x54, 0x7f, 0xf2, 0x5d, 0x1f, 0xb6, + 0x3d, 0x43, 0xeb, 0x4d, 0xa5, 0x7e, 0xae, 0x8e, + 0x43, 0xb7, 0x4c, 0x5f, 0xd6, 0x3d, 0x24, 0x5b, + 0xe7, 0xe1, 0xce, 0xfe, 0x37, 0x26, 0x68, 0xbe, + 0xf5, 0x3d, 0xe7, 0x92, 0x91, 0xae, 0x7a, 0xb5, + 0x0a, 0xbd, 0x2d, 0x93, 0xa3, 0x7c, 0x18, 0x49, + 0x5c, 0x14, 0xcb, 0x50, 0x3e, 0x5f, 0x40, 0x4f, + 0x93, 0x0b, 0xd4, 0x3f, 0xed, 0xa0, 0xcf, 0x76, + 0x2e, 0x52, 0xbe, 0x1d, 0x61, 0x1e, 0xb1, 0xb6, + 0x0b, 0x71, 0x69, 0x7e, 0x21, 0x4e, 0x63, 0x8b, + 0xe9, 0x3c, 0xca, 0xb1, 0xfe, 0x4b, 0x5b, 0xdb, + 0xe9, 0x7d, 0xac, 0xc3, 0xe1, 0xfd, 0xaf, 0xb5, + 0x3d, 0xe2, 0x29, 0x67, 0xb9, 0xea, 0x75, 0x01, + 0xf7, 0x79, 0xf9, 0xad, 0xe2, 0xe9, 0x39, 0xf5, + 0xe8, 0xdb, 0x67, 0xc4, 0x91, 0xf1, 0xfd, 0xc6, + 0xc2, 0xc9, 0xa4, 0xa5, 0x70, 0x37, 0x74, 0xee, + 0xfb, 0x28, 0xf9, 0x87, 0x1a, 0xe8, 0x74, 0x93, + 0x28, 0xe9, 0x4d, 0x63, 0xe2, 0x27, 0xde, 0x41, + 0x7a, 0xed, 0xc8, 0x7d, 0x9d, 0xda, 0xab, 0xfe, + 0xe3, 0x20, 0x73, 0xa7, 0x51, 0x9d, 0x34, 0x1f, + 0x3b, 0x4b, 0xde, 0x2c, 0x9a, 0x20, 0xbd, 0xf0, + 0x64, 0xbd, 0xa1, 0xc1, 0xe8, 0x8c, 0x59, 0x49, + 0x3d, 0xc9, 0x6e, 0x25, 0xbf, 0xfb, 0x1e, 0x7d, + 0xf4, 0xc0, 0xa9, 0x8a, 0xcf, 0x85, 0xe8, 0x8e, + 0xc7, 0x1c, 0xf9, 0x9d, 0x86, 0xe8, 0x4a, 0x8d, + 0x29, 0xea, 0xd7, 0xab, 0xe2, 0x1f, 0x1c, 0x3a, + 0x7d, 0x0a, 0x2f, 0x45, 0xfd, 0x70, 0x6e, 0xc7, + 0x73, 0xcd, 0x55, 0x74, 0xfc, 0xcd, 0x75, 0xcd, + 0x5b, 0xbf, 0xc3, 0x5f, 0xb8, 0x25, 0x2b, 0x3e, + 0x8e, 0x11, 0x3f, 0x9b, 0x32, 0xf8, 0x9e, 0xd9, + 0x4a, 0x3f, 0x7f, 0xab, 0x89, 0xd6, 0x9f, 0xca, + 0xfe, 0x2e, 0xc6, 0xcb, 0x5f, 0xfd, 0xe8, 0x05, + 0xbf, 0xab, 0xf9, 0xe1, 0x2a, 0xea, 0x67, 0x4f, + 0x77, 0xc5, 0x4b, 0x0b, 0xf2, 0x71, 0xe4, 0x1d, + 0xcd, 0x17, 0x2e, 0xa1, 0x7b, 0x03, 0x82, 0xd2, + 0xe0, 0x17, 0xa8, 0x67, 0xe3, 0xf3, 0x74, 0x9f, + 0xcd, 0x99, 0x7b, 0xfd, 0x59, 0xf4, 0x4f, 0x3d, + 0xa1, 0x3e, 0x24, 0x5f, 0x09, 0x80, 0xbf, 0x40, + 0x17, 0xf3, 0xc2, 0xa4, 0xe7, 0xd9, 0xf8, 0xcd, + 0x4a, 0x6e, 0xf2, 0xff, 0x8f, 0xa8, 0x33, 0x39, + 0xfd, 0x55, 0x6f, 0xaa, 0xf3, 0xb9, 0xd3, 0x0e, + 0xc4, 0x91, 0xb9, 0x49, 0x5c, 0xc6, 0xce, 0x53, + 0x3f, 0xff, 0x27, 0xf3, 0x92, 0xad, 0xe7, 0xb5, + 0xdf, 0x5e, 0xf4, 0x3b, 0xb3, 0x3c, 0xe4, 0x1f, + 0xfe, 0xcb, 0xb9, 0x56, 0x4b, 0x55, 0x7d, 0xef, + 0x4f, 0x7d, 0xf5, 0x68, 0xac, 0xfc, 0x7d, 0x48, + 0x1d, 0x7a, 0xd0, 0x50, 0xf7, 0x39, 0x06, 0xdf, + 0x5e, 0xfb, 0xb6, 0xe6, 0xb3, 0xfe, 0xf8, 0x11, + 0x9f, 0xb3, 0x9a, 0x9f, 0x4f, 0xc7, 0xdf, 0x7f, + 0x18, 0x94, 0x03, 0x8f, 0x4e, 0xb4, 0x10, 0xa7, + 0xb9, 0xad, 0x29, 0x42, 0x5f, 0x42, 0xaa, 0x68, + 0xfd, 0x5f, 0x60, 0x9c, 0x9f, 0x64, 0xe9, 0x79, + 0x83, 0x88, 0xbf, 0xae, 0xc5, 0xe5, 0x4f, 0x4a, + 0x32, 0x37, 0xf2, 0x1b, 0xb8, 0x1d, 0xde, 0x10, + 0xbf, 0x51, 0xb7, 0xeb, 0xb7, 0xf0, 0x72, 0x70, + 0xe7, 0x48, 0x74, 0xde, 0x5c, 0x44, 0x57, 0x1e, + 0xb8, 0x2a, 0x5e, 0x13, 0xd8, 0xaf, 0x67, 0x5d, + 0x7c, 0xad, 0x19, 0xef, 0x65, 0xa1, 0x4d, 0xa0, + 0xf4, 0xde, 0xe7, 0x99, 0x85, 0xa3, 0xaf, 0xd4, + 0xcf, 0x05, 0x70, 0x7f, 0x0d, 0x76, 0xa9, 0x5f, + 0x8e, 0xe5, 0x1c, 0x0e, 0x9d, 0xd1, 0xfd, 0xf5, + 0xc6, 0xc7, 0x15, 0xb6, 0xd6, 0x79, 0x3e, 0x87, + 0x9f, 0xbe, 0x82, 0xee, 0x1a, 0x37, 0xe6, 0xfe, + 0x1b, 0xba, 0xa9, 0x7e, 0x4c, 0x61, 0x7f, 0x15, + 0x5e, 0xa9, 0xbf, 0x2a, 0xcd, 0x7d, 0x5f, 0x9b, + 0xac, 0xfe, 0xb7, 0x38, 0xf9, 0x39, 0xa2, 0x50, + 0xfe, 0xb5, 0x26, 0xf3, 0xaa, 0x32, 0x29, 0xd2, + 0x9f, 0x1d, 0xc4, 0x4f, 0xaf, 0x54, 0xe6, 0x84, + 0xa6, 0x99, 0x8b, 0x85, 0x03, 0xdb, 0xe5, 0xaf, + 0x87, 0x10, 0x77, 0xc5, 0xb2, 0xd4, 0x9f, 0x45, + 0x91, 0x67, 0xce, 0x49, 0x4d, 0xf4, 0x3c, 0xe2, + 0xc2, 0x39, 0x4f, 0xf1, 0xeb, 0xc7, 0x5c, 0x78, + 0xd8, 0x0b, 0x7d, 0x5e, 0xf3, 0xbe, 0xb5, 0x3f, + 0xca, 0x6f, 0x2c, 0xc0, 0xb7, 0x7e, 0x5d, 0x4e, + 0xf7, 0x3d, 0x10, 0x5f, 0x7b, 0xa9, 0x85, 0xfe, + 0x1e, 0x8a, 0x1f, 0xf2, 0xcf, 0x53, 0x7e, 0xad, + 0xe3, 0x9c, 0xe6, 0xdf, 0x96, 0x7e, 0xdd, 0xc7, + 0x2f, 0x94, 0x3f, 0xbd, 0x00, 0xbe, 0x8a, 0xba, + 0x59, 0xb0, 0x52, 0xf7, 0xf7, 0x80, 0x39, 0xf2, + 0xba, 0x03, 0xf4, 0x75, 0xa6, 0xff, 0x52, 0xd6, + 0xb7, 0x57, 0xbf, 0xff, 0xec, 0xc0, 0x47, 0xbe, + 0xca, 0xd6, 0x7d, 0x0e, 0x8e, 0xb0, 0x70, 0x75, + 0x89, 0xf2, 0x63, 0x0f, 0xe7, 0x7a, 0x20, 0x4b, + 0xf1, 0x75, 0x0d, 0x3d, 0xee, 0xdb, 0xb1, 0x1a, + 0xfc, 0x18, 0x75, 0xfd, 0xcd, 0x84, 0x7c, 0xf8, + 0x30, 0xce, 0xcd, 0x69, 0xb3, 0xfc, 0xc4, 0x60, + 0xf2, 0xb6, 0x81, 0xbb, 0xea, 0xeb, 0x36, 0xf2, + 0xe5, 0xa6, 0x13, 0x3a, 0x6a, 0xb6, 0xa0, 0xd3, + 0x45, 0x4b, 0x54, 0x5f, 0x93, 0xe8, 0x0b, 0x2b, + 0x4d, 0x94, 0x3e, 0xf9, 0x11, 0x77, 0x01, 0xbd, + 0x98, 0xdb, 0x98, 0x35, 0x9f, 0x59, 0x68, 0xb6, + 0x0f, 0x9f, 0x60, 0x46, 0xbd, 0x6f, 0xc1, 0xbb, + 0x19, 0xf7, 0x68, 0x6a, 0x31, 0xef, 0xeb, 0xdd, + 0x1b, 0xdf, 0x68, 0x7e, 0x47, 0x2f, 0xa7, 0x5d, + 0x93, 0xbe, 0x0d, 0x61, 0x6e, 0x34, 0x75, 0x8c, + 0xce, 0x77, 0x12, 0xfe, 0x23, 0x31, 0x5c, 0xfd, + 0x55, 0x2f, 0xe6, 0x91, 0x35, 0x3e, 0xed, 0x02, + 0x1f, 0xc7, 0x7d, 0xd7, 0x0b, 0x7a, 0xa6, 0xcf, + 0xb3, 0x8e, 0x26, 0xf9, 0x7a, 0x7f, 0x9d, 0x34, + 0x0b, 0xa9, 0x7b, 0x35, 0xcf, 0xfd, 0x04, 0x1d, + 0x8f, 0x68, 0xa1, 0x7a, 0xfe, 0xf2, 0x8c, 0x85, + 0xac, 0x53, 0xba, 0x8f, 0x20, 0xf6, 0xb7, 0xee, + 0xa1, 0xe6, 0x51, 0x57, 0x88, 0xc3, 0x2a, 0xe1, + 0xca, 0x97, 0x3d, 0xbc, 0xef, 0xc3, 0x0c, 0x17, + 0xf8, 0x04, 0x7c, 0x6d, 0x8f, 0x78, 0xfd, 0x9e, + 0xd0, 0x87, 0x7b, 0xbe, 0x70, 0x5d, 0xfd, 0x7b, + 0xd8, 0x75, 0x0b, 0x53, 0x2e, 0xea, 0xf7, 0x0a, + 0x4f, 0xce, 0xbf, 0xc7, 0x69, 0x74, 0xc5, 0xdc, + 0x43, 0xef, 0x67, 0x34, 0x41, 0x37, 0xcc, 0x51, + 0xea, 0xd4, 0xe0, 0x2f, 0xf0, 0xc5, 0xa6, 0x19, + 0xfd, 0xb2, 0x73, 0x6d, 0xcd, 0xe3, 0x67, 0x30, + 0x2f, 0x5a, 0x57, 0x46, 0xef, 0x6f, 0x49, 0x3d, + 0xcd, 0x6b, 0xa0, 0x7a, 0x95, 0x42, 0x9c, 0x0c, + 0x19, 0x88, 0x8f, 0x33, 0xc9, 0xc4, 0xa5, 0x63, + 0xe4, 0x52, 0xf8, 0x35, 0xe2, 0xea, 0xc0, 0x36, + 0xd5, 0xc3, 0x6c, 0xf4, 0xb2, 0xdd, 0x39, 0xf9, + 0xf1, 0xcf, 0xc8, 0x83, 0xc4, 0x18, 0xf5, 0x6b, + 0x81, 0xe8, 0xad, 0xe3, 0x63, 0x2f, 0x78, 0x06, + 0x7a, 0x7c, 0xc2, 0x4d, 0x7e, 0xcf, 0x3f, 0xca, + 0x42, 0xed, 0x92, 0xf2, 0xf7, 0xcb, 0xf1, 0x65, + 0x67, 0x22, 0x74, 0x3f, 0x2b, 0x99, 0xe3, 0x1e, + 0xa8, 0xab, 0x7e, 0xaf, 0x22, 0xf9, 0x12, 0x31, + 0x5f, 0x7e, 0xc9, 0x8b, 0xdf, 0x95, 0x2e, 0x4e, + 0x55, 0x7d, 0xbd, 0xc6, 0xef, 0x09, 0x23, 0x8b, + 0x69, 0xfe, 0x76, 0x9d, 0x38, 0x1b, 0xb8, 0x52, + 0xf9, 0xfa, 0x86, 0xfc, 0x72, 0xab, 0xae, 0xf5, + 0x75, 0xe2, 0x5c, 0xcf, 0x94, 0x56, 0x3f, 0x33, + 0x89, 0xfe, 0xfb, 0xdd, 0x06, 0xd5, 0xe3, 0x14, + 0x7c, 0x48, 0x2f, 0x47, 0xe9, 0xd5, 0x01, 0xf4, + 0x3a, 0xfa, 0xde, 0x1e, 0xf8, 0x22, 0x74, 0xae, + 0x54, 0x26, 0x73, 0xfd, 0x7f, 0xe6, 0x5d, 0x37, + 0xdc, 0xa5, 0x37, 0x4e, 0xdc, 0x53, 0xf3, 0x4a, + 0x8a, 0xbf, 0xed, 0xe8, 0xc8, 0x80, 0x10, 0xde, + 0x63, 0x02, 0xab, 0x58, 0xf0, 0xa9, 0x2b, 0x7f, + 0xf9, 0x01, 0xba, 0xf7, 0xf0, 0xb1, 0xea, 0x61, + 0x3e, 0x73, 0xd2, 0xa6, 0xcd, 0x75, 0x3e, 0x13, + 0xf1, 0x29, 0xd5, 0x37, 0xeb, 0xf7, 0x03, 0x47, + 0xe2, 0xbe, 0x7b, 0xb0, 0xfa, 0x8f, 0x59, 0xe8, + 0xd8, 0xcd, 0x8e, 0xea, 0x1f, 0xa3, 0x88, 0xa3, + 0xf0, 0x7d, 0xf8, 0x4c, 0x53, 0x88, 0x5e, 0xde, + 0x3a, 0x2a, 0x23, 0xe8, 0x87, 0xbe, 0x8d, 0xcd, + 0xf4, 0x82, 0xdf, 0xa2, 0xee, 0x54, 0xf8, 0x4c, + 0xfd, 0x54, 0x22, 0xfd, 0xc8, 0xaa, 0xad, 0xc4, + 0x89, 0x39, 0x48, 0x9d, 0xed, 0xb0, 0x53, 0xf5, + 0x79, 0x23, 0xf9, 0x5b, 0x39, 0x4d, 0xf9, 0x53, + 0x93, 0x7d, 0x44, 0xfb, 0x69, 0x5e, 0xdd, 0x93, + 0x3e, 0xfa, 0xcc, 0xa3, 0x29, 0xf0, 0x37, 0xcc, + 0xf7, 0x36, 0xbf, 0x46, 0xa7, 0x4d, 0x71, 0xe6, + 0x5d, 0x1e, 0xeb, 0x55, 0x5f, 0x97, 0x72, 0x7f, + 0x4f, 0x83, 0xa4, 0x77, 0xdd, 0xd3, 0x2c, 0xbc, + 0x1d, 0xa3, 0xfa, 0xe5, 0x4a, 0x5e, 0xf6, 0x9c, + 0x1e, 0x05, 0xef, 0x86, 0x2f, 0x5d, 0x11, 0xc3, + 0x9c, 0xc9, 0x34, 0x66, 0x3f, 0x77, 0x7f, 0xd3, + 0x3c, 0xdf, 0x15, 0x3f, 0x59, 0xc7, 0x53, 0xeb, + 0x39, 0x87, 0x4e, 0x0e, 0xf5, 0xd0, 0xef, 0xb9, + 0x4b, 0xa8, 0xa3, 0xbb, 0xf3, 0x42, 0xe1, 0x13, + 0xf8, 0xdd, 0xb7, 0x4b, 0x86, 0xf6, 0xdb, 0x95, + 0xb8, 0xfa, 0x28, 0x5a, 0xfd, 0xef, 0x7c, 0xf6, + 0x9b, 0x53, 0x5e, 0xf3, 0xb6, 0xf6, 0xdc, 0xc7, + 0x4e, 0x5f, 0xcd, 0x17, 0x23, 0x99, 0x93, 0x2f, + 0x1a, 0x72, 0x14, 0x3e, 0x89, 0xfb, 0x5e, 0xe4, + 0xa4, 0x7e, 0xb8, 0x11, 0xf5, 0x75, 0x6a, 0x67, + 0xd5, 0xc3, 0xad, 0xe8, 0x46, 0x72, 0x57, 0xd5, + 0xd7, 0x10, 0xfa, 0xf9, 0x87, 0xd3, 0x54, 0xdf, + 0x0f, 0x91, 0xdf, 0xe1, 0x71, 0xf2, 0x17, 0xad, + 0xf3, 0x2d, 0x38, 0x86, 0xcd, 0xd1, 0xfe, 0x78, + 0x5f, 0x70, 0x9c, 0xf2, 0xf7, 0x7e, 0xb7, 0xff, + 0x03 +}; + +/** Length of the pre-compressed data using zlib algorithm */ +#define COMP_ZLIB_SIZE 3771 + +/** Pre-compressed data using zlib algorithm */ +static uint8_t compressed_text_zlib[COMP_ZLIB_SIZE] = { + 0x78, 0x9c, 0x35, 0x99, 0x77, 0x5c, 0xd6, 0xe5, + 0x1a, 0xc6, 0x1f, 0x70, 0xa2, 0xe1, 0x0c, 0x50, + 0xb4, 0x70, 0xe7, 0x44, 0xc5, 0x34, 0x27, 0xe6, + 0x04, 0x15, 0x51, 0x73, 0x1e, 0x51, 0x8e, 0x60, + 0x42, 0xe2, 0x08, 0xf5, 0x68, 0x99, 0x24, 0xb8, + 0xd3, 0x24, 0xad, 0xe3, 0x9e, 0xb8, 0x11, 0x50, + 0x12, 0x15, 0xd2, 0xd0, 0xcc, 0x2d, 0x66, 0x28, + 0xe0, 0x20, 0x89, 0x5c, 0xe4, 0xc4, 0x81, 0x0b, + 0xc5, 0x71, 0xce, 0xe7, 0xf9, 0x5e, 0xf5, 0x47, + 0x57, 0x57, 0xbc, 0xef, 0xef, 0xf7, 0x8c, 0xfb, + 0xbe, 0xee, 0xeb, 0xbe, 0x5f, 0x63, 0xfe, 0xff, + 0x4f, 0x68, 0xb7, 0x6f, 0x8d, 0xfd, 0xe7, 0x78, + 0x6d, 0x0b, 0xa3, 0x57, 0xb4, 0x87, 0x4f, 0xf2, + 0xb5, 0xd0, 0x2f, 0xe7, 0x47, 0xf8, 0xdb, 0x61, + 0x16, 0x7a, 0x2e, 0xb9, 0x05, 0xbf, 0x37, 0xc4, + 0x42, 0x03, 0x8f, 0xef, 0xe0, 0x67, 0x22, 0x2c, + 0xec, 0x1f, 0x52, 0x0d, 0x1e, 0x7f, 0xd1, 0x42, + 0x41, 0xa7, 0x5d, 0xf0, 0xa2, 0xf7, 0x2d, 0x5c, + 0xdf, 0x7e, 0x0d, 0xde, 0xfd, 0xaa, 0x85, 0x08, + 0xf3, 0x6f, 0xf8, 0xe1, 0x60, 0x0b, 0x03, 0x4a, + 0xd7, 0x80, 0x17, 0x7e, 0x60, 0xa1, 0x5a, 0x6d, + 0x57, 0xf8, 0xad, 0xdb, 0x16, 0x6e, 0x9e, 0x59, + 0x0c, 0x8f, 0xee, 0x62, 0x61, 0x4a, 0xf9, 0x72, + 0xf0, 0xa1, 0x75, 0x2d, 0x78, 0xbe, 0x58, 0x03, + 0x1f, 0x39, 0xd1, 0x42, 0x8b, 0xc3, 0x39, 0xf0, + 0xf5, 0xac, 0xe7, 0xd4, 0xd1, 0x6d, 0xf0, 0x55, + 0xa5, 0x2c, 0x84, 0x14, 0x85, 0xc1, 0xbd, 0x86, + 0x5b, 0x70, 0xee, 0xbb, 0x1a, 0x9e, 0xc2, 0xe7, + 0x9b, 0xef, 0x6f, 0x02, 0x1f, 0x72, 0xc3, 0xc2, + 0xa6, 0x66, 0x13, 0xf4, 0xbe, 0x6c, 0x0b, 0x75, + 0x83, 0xc6, 0xc2, 0x87, 0xcf, 0xb7, 0x50, 0x62, + 0x57, 0x5b, 0xb8, 0xdb, 0x26, 0xbe, 0x16, 0xcb, + 0x3a, 0xcd, 0xed, 0xa1, 0x16, 0x02, 0x67, 0x8f, + 0x84, 0x67, 0xc5, 0x5a, 0x88, 0x3f, 0x90, 0x0f, + 0x4f, 0x5a, 0x68, 0xe1, 0xcc, 0xd9, 0xfe, 0xf0, + 0xe3, 0x57, 0x2c, 0xac, 0x9e, 0xb2, 0x0a, 0xbe, + 0x67, 0x1d, 0xe7, 0x53, 0xe7, 0x31, 0xbc, 0xe2, + 0x5c, 0x0b, 0xe5, 0x8e, 0xb6, 0x82, 0xcf, 0x7c, + 0xcf, 0xc2, 0x7f, 0x0a, 0x97, 0xc2, 0x3b, 0xf1, + 0xf7, 0x9a, 0x4f, 0x23, 0xe1, 0x1d, 0x0e, 0x58, + 0xc8, 0x89, 0x9e, 0x06, 0x9f, 0xf7, 0xd0, 0x42, + 0xb8, 0x7b, 0x2d, 0xad, 0xef, 0x4f, 0x0b, 0xde, + 0x27, 0x4b, 0xc2, 0x37, 0x64, 0xf1, 0x98, 0xc3, + 0x7a, 0xff, 0xd5, 0x42, 0x0b, 0xaf, 0x76, 0x94, + 0x85, 0x87, 0x12, 0x2f, 0xde, 0x33, 0x8b, 0xc3, + 0x1d, 0xb8, 0xc7, 0xe9, 0xc7, 0xeb, 0xc0, 0x97, + 0x37, 0xb4, 0x70, 0x67, 0x9f, 0xf6, 0x9b, 0xd3, + 0xd3, 0xc2, 0x98, 0xcc, 0x3b, 0xf0, 0x65, 0x5f, + 0x58, 0x58, 0x74, 0x51, 0xcf, 0x6b, 0xbd, 0xd9, + 0xc2, 0xb0, 0x21, 0x03, 0xe1, 0x0d, 0xfd, 0x2d, + 0xdc, 0xeb, 0xcc, 0x7b, 0xcc, 0x8f, 0xc4, 0x57, + 0xbb, 0x2c, 0xfe, 0xbf, 0x29, 0x62, 0x9d, 0x5e, + 0xab, 0x2e, 0xc1, 0x13, 0x7f, 0xb3, 0xd0, 0x3e, + 0x7a, 0x1c, 0x7c, 0xc0, 0x22, 0xbe, 0x3f, 0x5f, + 0xfb, 0xab, 0x42, 0x5c, 0x5e, 0x8e, 0xd4, 0x7d, + 0x0c, 0xe3, 0x7d, 0x8e, 0x2f, 0xde, 0xc2, 0xdd, + 0x89, 0xf7, 0x37, 0x5f, 0x2e, 0x81, 0x77, 0xf9, + 0x99, 0xd7, 0x7c, 0x7c, 0x18, 0xfe, 0xb2, 0x9e, + 0x85, 0xb8, 0xdc, 0x0d, 0xf0, 0xb6, 0x47, 0xf8, + 0xfb, 0x9c, 0xbf, 0xe1, 0x0d, 0xb6, 0x58, 0x38, + 0x97, 0xaf, 0x78, 0xfc, 0xbb, 0xa3, 0x85, 0x12, + 0x0f, 0xb5, 0xde, 0xf6, 0xbf, 0x5a, 0x88, 0x48, + 0x51, 0x7c, 0x2d, 0x39, 0x61, 0x61, 0xf2, 0xa8, + 0xd6, 0xf0, 0x4b, 0xe5, 0x2d, 0x1c, 0x74, 0x71, + 0x80, 0x07, 0x11, 0x1f, 0xf3, 0x17, 0xb6, 0x81, + 0xbf, 0x20, 0xfe, 0x87, 0x25, 0xee, 0x85, 0xff, + 0xcc, 0x7a, 0x62, 0x93, 0x3f, 0x84, 0xaf, 0x24, + 0x6f, 0xcb, 0x27, 0x2b, 0x9e, 0x97, 0x7e, 0x6c, + 0x61, 0xd7, 0xe0, 0x77, 0xe0, 0x77, 0x5b, 0x5a, + 0x78, 0x74, 0x43, 0xef, 0xdf, 0xdd, 0x97, 0xf5, + 0x4d, 0xe7, 0x5e, 0xcd, 0x03, 0xe2, 0xff, 0x79, + 0x59, 0xe5, 0x87, 0xf9, 0xc5, 0xfe, 0xfb, 0xf6, + 0xec, 0xb3, 0xd0, 0x0d, 0xdc, 0x5b, 0xdb, 0x99, + 0x33, 0xe0, 0x79, 0x65, 0x2c, 0xa4, 0x2d, 0x62, + 0xdd, 0xa6, 0x6c, 0xb8, 0x85, 0xd3, 0x3d, 0xb5, + 0xfe, 0xb3, 0xc4, 0x9d, 0x6f, 0xf3, 0x05, 0x70, + 0x1f, 0x47, 0x0b, 0x9f, 0xfa, 0xec, 0x83, 0x1f, + 0x58, 0x66, 0xc1, 0xa3, 0x92, 0xf4, 0xa3, 0x36, + 0xef, 0x7f, 0xbf, 0x23, 0x3a, 0x61, 0x62, 0x89, + 0xf7, 0xea, 0x3e, 0xbc, 0xc7, 0x4c, 0xbb, 0xcf, + 0xf7, 0x8f, 0x91, 0x77, 0xe6, 0xd8, 0x6b, 0x0b, + 0xef, 0x36, 0x7a, 0x0e, 0x9f, 0x44, 0x5c, 0x0f, + 0xf5, 0x5e, 0xa6, 0xbf, 0xcf, 0xb4, 0x10, 0xb8, + 0xab, 0x00, 0xde, 0x8b, 0x38, 0x9a, 0x9a, 0xa9, + 0xf5, 0x8e, 0x6c, 0x6a, 0xa1, 0xdd, 0x0c, 0x74, + 0xc7, 0x84, 0xff, 0xc5, 0xf3, 0xef, 0x73, 0x8f, + 0xa6, 0x0e, 0xf1, 0x55, 0x31, 0x4d, 0xf1, 0xb1, + 0x8e, 0xfd, 0x39, 0x55, 0x54, 0xfc, 0xe6, 0xfc, + 0xcb, 0x42, 0xdc, 0x95, 0x14, 0x78, 0x56, 0x80, + 0x85, 0x84, 0x6c, 0xc5, 0x5f, 0x41, 0x45, 0x0b, + 0xd5, 0x02, 0xbf, 0x81, 0x57, 0xa8, 0x69, 0x21, + 0x31, 0x56, 0xf9, 0xd2, 0x8e, 0xe7, 0xb5, 0x98, + 0x8e, 0x0e, 0x9a, 0x33, 0x37, 0x2d, 0x5c, 0x2f, + 0x97, 0x0b, 0xef, 0x7b, 0xcc, 0x82, 0xef, 0x85, + 0x67, 0x70, 0x1f, 0xf2, 0xd1, 0xe5, 0x08, 0x79, + 0x65, 0x86, 0x71, 0xce, 0x3f, 0xf7, 0x79, 0x05, + 0xff, 0x1c, 0x5e, 0x6b, 0xf6, 0x23, 0x78, 0x55, + 0xf8, 0xfe, 0x7f, 0xf4, 0x62, 0xf5, 0x60, 0x0b, + 0x5f, 0x37, 0xfb, 0x03, 0xfe, 0x94, 0x7d, 0x96, + 0xfd, 0xe8, 0x27, 0xf8, 0x55, 0xce, 0xdd, 0x3d, + 0x41, 0xeb, 0xad, 0xce, 0xf7, 0x23, 0x17, 0x29, + 0x1e, 0x6a, 0xa3, 0x1f, 0x85, 0x43, 0x89, 0x5b, + 0xd3, 0x80, 0xf5, 0x17, 0x56, 0x09, 0x84, 0x6f, + 0x26, 0x0e, 0xab, 0xcd, 0x54, 0x7e, 0x54, 0x26, + 0xbf, 0xf7, 0x0e, 0xa4, 0x6e, 0x98, 0x34, 0xd6, + 0xed, 0x7f, 0x53, 0xeb, 0xbd, 0x95, 0x69, 0x61, + 0x45, 0xa5, 0x53, 0x70, 0x2f, 0xf6, 0xd9, 0x7a, + 0x65, 0x03, 0xf8, 0x15, 0xea, 0xcc, 0xd4, 0xb4, + 0x1f, 0xe0, 0xbd, 0x79, 0x4e, 0x87, 0x3b, 0x3b, + 0xe0, 0x1f, 0xba, 0x5b, 0x48, 0x1d, 0xee, 0x02, + 0xff, 0xf7, 0x78, 0x9e, 0x5f, 0x6d, 0x3a, 0xfc, + 0x0b, 0xee, 0xff, 0xe5, 0xb1, 0x18, 0xf8, 0xe9, + 0x5e, 0x16, 0xc6, 0xd6, 0xd7, 0x7a, 0x4b, 0x10, + 0x3f, 0x09, 0x61, 0xd2, 0x8f, 0xb9, 0x9c, 0x6f, + 0xcd, 0x37, 0x15, 0xe0, 0x8d, 0x5e, 0x5a, 0x88, + 0xfb, 0x9e, 0x7b, 0x36, 0xee, 0xe0, 0xc0, 0x30, + 0xe2, 0xc4, 0x6c, 0x8c, 0xb3, 0x70, 0x30, 0xda, + 0x19, 0x1e, 0x7e, 0x8f, 0xfd, 0xd6, 0x24, 0x6e, + 0xcd, 0xa4, 0xeb, 0x16, 0xda, 0xb9, 0x51, 0xc7, + 0x4c, 0x71, 0x27, 0x0b, 0xc3, 0x52, 0x74, 0x9e, + 0x99, 0xec, 0xb3, 0xd5, 0xdb, 0xc9, 0xf0, 0x25, + 0xe4, 0xe3, 0xee, 0x4a, 0xaa, 0xb7, 0x89, 0x9c, + 0xcb, 0xb5, 0x04, 0xea, 0x9a, 0x79, 0xc8, 0xb9, + 0xdd, 0xb8, 0xbe, 0x1c, 0xbe, 0x8e, 0xbc, 0xe8, + 0x33, 0x86, 0x7d, 0x18, 0x2f, 0xe2, 0xd4, 0x45, + 0x75, 0xd1, 0xf4, 0x68, 0x6e, 0xe1, 0x75, 0x4f, + 0xce, 0xc5, 0xcc, 0x44, 0x37, 0xfc, 0x3d, 0x95, + 0x2f, 0xdb, 0xe1, 0xa5, 0x17, 0xe8, 0xbe, 0xc3, + 0x1b, 0x5b, 0xc8, 0x4a, 0x3c, 0x0e, 0x4f, 0x42, + 0x2f, 0x17, 0xcc, 0xb9, 0x02, 0x6f, 0xc0, 0x79, + 0x0f, 0x38, 0xbe, 0x12, 0xee, 0x5b, 0xd9, 0xc2, + 0xaa, 0x92, 0xda, 0x5f, 0x19, 0xee, 0x2b, 0xf5, + 0x19, 0x71, 0x66, 0xce, 0x53, 0x8f, 0xca, 0x3d, + 0xca, 0x80, 0x57, 0xd9, 0x69, 0x21, 0xd6, 0xc7, + 0x1b, 0xde, 0x95, 0xfa, 0x93, 0xf0, 0x46, 0xfa, + 0x12, 0x40, 0x7d, 0x7c, 0xbc, 0xaf, 0x1f, 0xfc, + 0xbb, 0x78, 0x0b, 0x7e, 0x83, 0xfd, 0xe0, 0x17, + 0xd7, 0x5a, 0x68, 0x92, 0xcc, 0xbe, 0xcc, 0x6a, + 0x74, 0xd9, 0x69, 0xad, 0xf2, 0xb3, 0x33, 0xfb, + 0xce, 0x7b, 0x4c, 0x1e, 0x99, 0x92, 0xac, 0xe7, + 0x68, 0xa1, 0xfc, 0x43, 0x0b, 0xea, 0x40, 0xe2, + 0xda, 0x3d, 0xf0, 0x33, 0xc4, 0xc7, 0x26, 0x7f, + 0x7d, 0x7e, 0x76, 0x6f, 0x0b, 0x91, 0xeb, 0xa4, + 0x6f, 0x4d, 0x88, 0x87, 0x1d, 0xa1, 0xe4, 0xad, + 0xc9, 0xfa, 0xd4, 0xc2, 0x94, 0x9b, 0xd2, 0x5f, + 0x1f, 0xce, 0x35, 0xd7, 0x4f, 0xf5, 0xda, 0x8b, + 0xbc, 0xad, 0xbe, 0x50, 0xfa, 0x73, 0xaf, 0x83, + 0x85, 0x9e, 0x0b, 0x15, 0x1f, 0x47, 0x89, 0xf7, + 0x66, 0x9e, 0x9f, 0xc3, 0x9f, 0xa1, 0x8b, 0x35, + 0x3c, 0xa9, 0x23, 0xa6, 0x36, 0xeb, 0x9d, 0xd3, + 0xea, 0x3c, 0x7c, 0xec, 0x1c, 0x0b, 0x45, 0x73, + 0x88, 0x33, 0x93, 0x44, 0x7c, 0x95, 0xf2, 0x55, + 0x3c, 0x16, 0x47, 0xcf, 0x9e, 0x34, 0x8d, 0xd0, + 0xfb, 0xda, 0x59, 0x28, 0x5b, 0xb6, 0x0a, 0x7c, + 0x5f, 0x7d, 0x9e, 0x1f, 0x58, 0x03, 0xbe, 0x9f, + 0x7a, 0x32, 0x37, 0xde, 0x0b, 0x7e, 0x24, 0xc1, + 0x82, 0xf7, 0x33, 0x1f, 0x78, 0x09, 0xea, 0xf3, + 0xa3, 0xa8, 0x74, 0x3d, 0x0f, 0x3d, 0xce, 0xde, + 0x29, 0x1e, 0xfa, 0x99, 0x85, 0x16, 0xbf, 0xc9, + 0xcf, 0xa5, 0x14, 0x59, 0x58, 0xd9, 0xfd, 0xbf, + 0xf0, 0xbe, 0xf8, 0xc1, 0x4d, 0x6d, 0x7a, 0xc0, + 0xaf, 0x73, 0xef, 0xef, 0x36, 0x26, 0x0e, 0x4c, + 0x66, 0x28, 0xcf, 0x1b, 0x2e, 0x3f, 0xf2, 0x21, + 0xf7, 0xfd, 0xbc, 0xcf, 0x54, 0x78, 0x20, 0x75, + 0x37, 0xe6, 0xaf, 0x07, 0xf0, 0x02, 0xce, 0xa1, + 0xc2, 0x0c, 0x74, 0xd5, 0xc4, 0x12, 0x67, 0xcf, + 0x0a, 0xcf, 0x68, 0xbd, 0xac, 0x63, 0xc9, 0x48, + 0xd5, 0x17, 0x07, 0x74, 0xf5, 0x60, 0xb6, 0xea, + 0xdf, 0x1e, 0xea, 0x6d, 0x6a, 0x42, 0x12, 0xbc, + 0x2b, 0xe7, 0xf9, 0xe5, 0x78, 0xf1, 0x97, 0x1b, + 0x2d, 0xf4, 0x48, 0x57, 0xbc, 0x8d, 0xe6, 0xbd, + 0x7f, 0x1b, 0xee, 0xd9, 0xd4, 0x46, 0x47, 0xce, + 0x0e, 0xc6, 0x27, 0x1a, 0x77, 0xde, 0xfb, 0xc7, + 0xd4, 0xae, 0xfa, 0x3c, 0x79, 0x1e, 0x56, 0x57, + 0x7a, 0x32, 0x7d, 0xb7, 0x05, 0xbf, 0x09, 0xed, + 0xc4, 0x79, 0x6e, 0xbf, 0x6a, 0xdd, 0xe1, 0x75, + 0x39, 0xc7, 0xdd, 0xf1, 0xda, 0x8f, 0xef, 0x18, + 0x0b, 0xb3, 0x47, 0xaa, 0x1e, 0xf5, 0xc7, 0x87, + 0xb7, 0xed, 0x84, 0x6e, 0x98, 0x25, 0xf8, 0xcd, + 0xa2, 0x24, 0xf9, 0x91, 0xe6, 0xf8, 0xca, 0x95, + 0x4b, 0x3b, 0xc3, 0x17, 0x13, 0xd7, 0x5e, 0xde, + 0xd2, 0x83, 0xc1, 0xc4, 0x55, 0xd7, 0x4b, 0xd2, + 0xd3, 0xfb, 0xd4, 0xa9, 0xd5, 0x4f, 0xb8, 0x57, + 0x93, 0xca, 0x3a, 0x6e, 0x47, 0x6b, 0xfd, 0x79, + 0xc4, 0x5d, 0xdd, 0x56, 0x6f, 0xe0, 0xe9, 0xd4, + 0xe1, 0xd2, 0x9d, 0x0f, 0xc2, 0x9f, 0x46, 0xf3, + 0xf9, 0x00, 0xf1, 0x6b, 0xf8, 0xa1, 0xc0, 0xc6, + 0x31, 0x5a, 0x2f, 0x79, 0x32, 0xe2, 0x73, 0xf9, + 0xf1, 0x38, 0xf2, 0x33, 0x23, 0x43, 0xeb, 0x49, + 0xe2, 0x5e, 0xce, 0x8e, 0x55, 0x3e, 0xcc, 0xe1, + 0x3c, 0x5f, 0x3e, 0x95, 0x3f, 0x1d, 0x40, 0xde, + 0x5f, 0x72, 0xc2, 0x27, 0x99, 0x96, 0x1f, 0x59, + 0xb8, 0xb5, 0x47, 0xfa, 0x9b, 0x95, 0x6a, 0x21, + 0x64, 0x82, 0xea, 0xdd, 0x4c, 0xf6, 0xf1, 0x69, + 0xa6, 0xea, 0xf9, 0x8a, 0x44, 0x0b, 0xd9, 0xb2, + 0x13, 0x26, 0x16, 0xbd, 0x98, 0xb7, 0x4a, 0x7e, + 0x72, 0x32, 0x7a, 0x33, 0xaa, 0x40, 0xfe, 0x2a, + 0x9c, 0x7c, 0x18, 0x3a, 0x51, 0xfd, 0xcb, 0x02, + 0x78, 0xc7, 0x14, 0xf9, 0x9f, 0x60, 0x74, 0x21, + 0x2a, 0x59, 0xfd, 0x4f, 0x03, 0xf4, 0xad, 0x6b, + 0xf8, 0x76, 0x78, 0x2e, 0x7d, 0x4b, 0xc4, 0x12, + 0xf2, 0xd8, 0x6c, 0xa1, 0x0e, 0xcc, 0x8f, 0x52, + 0xfd, 0xf4, 0x27, 0xbe, 0x07, 0x87, 0x69, 0xfd, + 0xff, 0xc2, 0xd7, 0x67, 0xe6, 0x29, 0x3e, 0xfa, + 0x8d, 0xb0, 0xb0, 0xe3, 0xc0, 0x13, 0x78, 0x02, + 0xf1, 0x36, 0x77, 0xb9, 0x07, 0x7c, 0x29, 0xfd, + 0x4a, 0x54, 0x82, 0xfa, 0x8b, 0x7b, 0xa5, 0x2d, + 0xb8, 0x1d, 0x20, 0xaf, 0xcc, 0x0d, 0xf2, 0x66, + 0xce, 0x4f, 0xda, 0xdf, 0xa3, 0x29, 0x16, 0x16, + 0x36, 0x92, 0x3e, 0xbd, 0x83, 0x0e, 0x85, 0xd4, + 0x95, 0x7f, 0x79, 0x44, 0xde, 0x45, 0x4c, 0x63, + 0x5d, 0xe6, 0x10, 0xf7, 0x12, 0xd1, 0xfd, 0x7b, + 0xf8, 0xcf, 0xe8, 0x40, 0x2d, 0x3f, 0xf9, 0xc7, + 0x57, 0xaa, 0x2f, 0xdd, 0xdc, 0xe0, 0x21, 0x9c, + 0xff, 0x1f, 0x7f, 0x49, 0x7f, 0x82, 0xf0, 0x0d, + 0x65, 0xd7, 0xe8, 0xef, 0x23, 0xd9, 0x4f, 0x62, + 0xa7, 0x41, 0xf0, 0x60, 0xfc, 0x52, 0x6a, 0x6f, + 0xe5, 0xd7, 0x2c, 0xf2, 0x75, 0x4f, 0xc8, 0xef, + 0xf0, 0xd1, 0xac, 0xbb, 0xa9, 0x9b, 0xf4, 0xb2, + 0x2d, 0x71, 0xf7, 0xf6, 0x6b, 0x74, 0xc8, 0x24, + 0x12, 0x8f, 0x1f, 0x94, 0xd2, 0x7d, 0xb9, 0x92, + 0x47, 0xff, 0xed, 0x22, 0x3f, 0x90, 0x80, 0x1f, + 0x2d, 0x95, 0xa4, 0xf3, 0xf4, 0x20, 0xde, 0x7f, + 0xaa, 0xa4, 0x7c, 0x1a, 0x47, 0xbf, 0x56, 0x31, + 0x1a, 0x5f, 0x6f, 0x3e, 0x24, 0x9e, 0x9b, 0x7c, + 0xae, 0xfd, 0x46, 0x73, 0x6f, 0x0f, 0x0e, 0xa9, + 0x1f, 0xe8, 0x43, 0x3c, 0xcf, 0x3f, 0x5b, 0x0c, + 0x9e, 0xc5, 0xfa, 0x93, 0xbf, 0xd8, 0xa4, 0xfd, + 0x51, 0x87, 0x5b, 0x5e, 0x55, 0x3f, 0xf3, 0x2b, + 0xf1, 0x70, 0xa2, 0x42, 0x25, 0xf8, 0x0d, 0x9e, + 0x53, 0xc7, 0x5d, 0xf9, 0x3a, 0x8b, 0x75, 0x85, + 0xf6, 0x6c, 0x06, 0xbf, 0x14, 0x65, 0x21, 0x7f, + 0x34, 0x79, 0x6e, 0x96, 0x05, 0x59, 0xa8, 0x14, + 0xb9, 0x1e, 0x7e, 0x8f, 0xba, 0xd3, 0xad, 0x2e, + 0x7d, 0x87, 0x69, 0x43, 0xbf, 0xe6, 0x58, 0x5b, + 0x7a, 0x79, 0x09, 0xbd, 0xcd, 0xeb, 0xa6, 0x7e, + 0xba, 0x0c, 0x7a, 0x58, 0x78, 0x91, 0x75, 0x9b, + 0xb5, 0xc4, 0xc5, 0x17, 0x09, 0xd2, 0x53, 0xa7, + 0x51, 0x16, 0xce, 0xfd, 0xad, 0xf3, 0xdb, 0xc2, + 0xf7, 0x96, 0xb5, 0x56, 0xfe, 0xfd, 0x8a, 0xef, + 0x78, 0x72, 0xe1, 0x02, 0xdc, 0x03, 0x3f, 0xb2, + 0x74, 0xa7, 0xf2, 0x31, 0x8e, 0x3e, 0x65, 0xe6, + 0x3e, 0xad, 0x27, 0x8d, 0xfe, 0x69, 0x6c, 0x30, + 0x7d, 0x83, 0xe9, 0x91, 0x66, 0x61, 0x67, 0x92, + 0xf8, 0x62, 0xea, 0xce, 0x99, 0xfa, 0x8a, 0x5f, + 0x57, 0x7c, 0xc8, 0x67, 0xaf, 0xa5, 0x3f, 0xfb, + 0xf1, 0x6d, 0x09, 0x81, 0xf4, 0x2d, 0xe6, 0x2b, + 0x3e, 0xbf, 0xf5, 0x2b, 0x74, 0xd7, 0x14, 0xcc, + 0xb2, 0xb0, 0xc7, 0xb1, 0x13, 0x3c, 0x16, 0xfd, + 0x48, 0xbb, 0xa7, 0xbf, 0xaf, 0x64, 0x1d, 0x49, + 0x13, 0xa5, 0xa7, 0x87, 0x8f, 0x5a, 0xf8, 0x68, + 0x83, 0xfc, 0x44, 0x43, 0xde, 0x7b, 0xba, 0x01, + 0x71, 0x61, 0x4a, 0xe3, 0x63, 0xd2, 0xdb, 0xd2, + 0x07, 0x9a, 0x20, 0x7c, 0xfd, 0xa9, 0xa6, 0x8a, + 0xff, 0x23, 0xf8, 0xf1, 0xa8, 0x31, 0xaa, 0x2f, + 0x81, 0xd4, 0xeb, 0xf1, 0x23, 0x74, 0xde, 0xc5, + 0xf0, 0x59, 0xf5, 0xc7, 0xcb, 0xcf, 0xff, 0x81, + 0xbf, 0xf0, 0x7b, 0x20, 0xff, 0x79, 0xb1, 0x86, + 0x85, 0xb0, 0x8e, 0xba, 0xcf, 0xaa, 0xd4, 0xd9, + 0xfc, 0xf7, 0x14, 0xcf, 0x19, 0xe8, 0x46, 0x66, + 0x9c, 0xf4, 0x63, 0x25, 0xfb, 0xf5, 0xdb, 0x27, + 0x3f, 0x38, 0x95, 0xe7, 0x7f, 0x6b, 0xe4, 0xc7, + 0x0c, 0xf9, 0x55, 0xeb, 0x88, 0xfe, 0x3e, 0x08, + 0xbd, 0x58, 0x55, 0x5c, 0xdf, 0xcf, 0xe2, 0x9c, + 0xab, 0x24, 0xc9, 0x2f, 0x9c, 0x23, 0xaf, 0xdf, + 0x0c, 0xd0, 0x7d, 0xdd, 0xb8, 0x6c, 0x21, 0xbb, + 0x09, 0xbe, 0xcc, 0x9c, 0xe1, 0xbe, 0xba, 0x79, + 0xcf, 0x86, 0x6f, 0xa2, 0x7e, 0x7f, 0xbf, 0x41, + 0xfd, 0xc6, 0x71, 0x74, 0xcc, 0xa1, 0xbd, 0xfc, + 0xf1, 0x5b, 0xfc, 0xfd, 0xa9, 0xdf, 0xd1, 0x4d, + 0xd3, 0x90, 0x3c, 0xcf, 0x3e, 0xfa, 0x1f, 0xb8, + 0x0b, 0xba, 0xef, 0x70, 0x5a, 0xf9, 0xd2, 0x85, + 0xe7, 0x34, 0xbd, 0x80, 0x6f, 0x33, 0xf7, 0xd1, + 0x51, 0x97, 0x4e, 0xf2, 0xdf, 0x8e, 0xd4, 0x83, + 0x79, 0xa3, 0x94, 0xff, 0x41, 0xf8, 0xe7, 0x88, + 0xad, 0xea, 0x3f, 0x2b, 0x87, 0x58, 0x08, 0x4e, + 0x96, 0x5f, 0x58, 0x37, 0xda, 0xc2, 0xe8, 0xfe, + 0xf2, 0x73, 0xaf, 0xf6, 0x5b, 0x98, 0xb8, 0x9e, + 0x3a, 0x6d, 0x66, 0x94, 0x60, 0x5b, 0x23, 0xd4, + 0x0f, 0x4d, 0x40, 0x37, 0x47, 0x5d, 0x95, 0x1f, + 0xd9, 0x4a, 0x7e, 0x7b, 0xcf, 0x96, 0xff, 0x89, + 0x27, 0x1e, 0x7a, 0xdc, 0x93, 0x9f, 0x48, 0xe7, + 0xbc, 0x27, 0x9c, 0x52, 0xbf, 0xd2, 0x0b, 0xbd, + 0xff, 0xfd, 0x03, 0xe5, 0x77, 0xdb, 0x15, 0x16, + 0x26, 0x67, 0x68, 0xbe, 0xb3, 0x0d, 0x7f, 0xd5, + 0x67, 0x90, 0xd6, 0x3f, 0x85, 0x78, 0xbc, 0xf3, + 0x50, 0x7e, 0x79, 0x3a, 0xfe, 0xf8, 0xd3, 0xb9, + 0xf2, 0xc7, 0x6f, 0x59, 0xf7, 0x8c, 0x1d, 0xf2, + 0xaf, 0x77, 0xef, 0xb2, 0xed, 0xc6, 0xf8, 0x0e, + 0xf3, 0x9a, 0xb8, 0x78, 0xd3, 0x4f, 0x7e, 0xf9, + 0x08, 0xf5, 0x63, 0xf5, 0x01, 0xf9, 0xed, 0x50, + 0xee, 0xf3, 0x97, 0xb5, 0xd2, 0x17, 0x67, 0xee, + 0xeb, 0x76, 0x9c, 0xe2, 0x6b, 0x21, 0xfa, 0x38, + 0xbd, 0x9f, 0xf4, 0xcf, 0x9f, 0xf9, 0x90, 0x57, + 0x34, 0xbe, 0xcb, 0x1c, 0x40, 0x0f, 0x5e, 0xc4, + 0x73, 0xef, 0x26, 0x82, 0x7d, 0x2f, 0x2c, 0x62, + 0x2e, 0x60, 0xc2, 0xe8, 0x2b, 0x4e, 0x6c, 0x50, + 0x3f, 0x1a, 0x80, 0x5f, 0xdc, 0xec, 0x7c, 0x1a, + 0xde, 0x9e, 0x7b, 0x76, 0xac, 0xa0, 0x79, 0xdc, + 0x13, 0xe6, 0x34, 0x49, 0x15, 0x39, 0x07, 0xa3, + 0xb1, 0xd4, 0xc4, 0xc5, 0x35, 0xf8, 0x0f, 0x57, + 0xce, 0xeb, 0x9e, 0x97, 0xfc, 0xf2, 0x63, 0xfc, + 0xad, 0xc3, 0xec, 0x46, 0xf0, 0xde, 0xcc, 0x7f, + 0x1e, 0x7e, 0x2f, 0xbd, 0x37, 0xe8, 0x4c, 0x85, + 0xce, 0xea, 0x4f, 0xbe, 0xed, 0xc3, 0xb6, 0xa7, + 0x69, 0xbd, 0xe9, 0xd4, 0xcf, 0x95, 0x09, 0xe8, + 0x96, 0xe9, 0xcb, 0xba, 0x03, 0x72, 0x75, 0x1e, + 0x6e, 0xec, 0x7f, 0x7d, 0x92, 0xe6, 0x5b, 0xdf, + 0x71, 0x2e, 0x59, 0x99, 0xaa, 0x57, 0x2b, 0xd0, + 0xdb, 0x32, 0x79, 0xca, 0x87, 0x20, 0xe2, 0xa2, + 0x58, 0x96, 0xf2, 0xf9, 0x1c, 0x7a, 0x9a, 0x5a, + 0xa0, 0xfe, 0x69, 0x1b, 0x7d, 0xb6, 0x73, 0x91, + 0xf2, 0xed, 0x20, 0xf3, 0x88, 0xd5, 0xdd, 0x88, + 0x4b, 0xf3, 0x0b, 0x71, 0x1a, 0x5f, 0x4c, 0xe7, + 0x51, 0x8e, 0xf5, 0x9f, 0xdf, 0xdc, 0x41, 0xef, + 0x63, 0x1d, 0x0e, 0xef, 0x7e, 0xa9, 0xed, 0x11, + 0x4f, 0x79, 0x4b, 0x55, 0xaf, 0x0b, 0xb8, 0xcf, + 0x0b, 0x6f, 0x14, 0x4f, 0xcf, 0xa8, 0x47, 0x5f, + 0x3f, 0x25, 0x8e, 0x8c, 0xf7, 0x57, 0x16, 0x8e, + 0xa5, 0xc8, 0x2f, 0xb9, 0xa2, 0x73, 0xdf, 0xc5, + 0xc8, 0x3f, 0xd4, 0x44, 0xa7, 0x3d, 0x63, 0xa4, + 0x37, 0x4d, 0x88, 0x9f, 0x44, 0x07, 0xe9, 0xb5, + 0x23, 0xf7, 0x75, 0x7c, 0x97, 0xfa, 0x8f, 0x7d, + 0xcc, 0x9d, 0x46, 0x76, 0xd1, 0x7c, 0xec, 0x14, + 0x79, 0xb3, 0x60, 0x9c, 0xf4, 0xc2, 0x83, 0xf5, + 0x86, 0x87, 0xa2, 0x33, 0x66, 0x39, 0xf5, 0x24, + 0xb7, 0xb5, 0xfc, 0xee, 0x3b, 0xf4, 0xd1, 0x83, + 0x26, 0x2b, 0x3e, 0xe7, 0xa3, 0x3b, 0xee, 0xb3, + 0xe4, 0x77, 0x1a, 0xa1, 0x2b, 0x35, 0x27, 0xa9, + 0x5f, 0xaf, 0x86, 0x7f, 0x70, 0xe8, 0xf2, 0x31, + 0xbc, 0x14, 0xf5, 0xc3, 0xb9, 0x03, 0xcf, 0x35, + 0x97, 0xd0, 0xf1, 0xd7, 0x57, 0x34, 0x6f, 0xfd, + 0x16, 0x7f, 0xe1, 0x9a, 0xaa, 0xf8, 0x38, 0x4c, + 0xfc, 0x6c, 0xc8, 0xe2, 0x7b, 0x66, 0x33, 0xfd, + 0xfc, 0x75, 0x4f, 0xad, 0x3f, 0x9d, 0xfd, 0x65, + 0x24, 0xca, 0x5f, 0xfd, 0x40, 0x1d, 0xcd, 0xb8, + 0xa5, 0xf9, 0xe1, 0x0a, 0xea, 0x67, 0x2f, 0x37, + 0xc5, 0x4b, 0x4b, 0xf2, 0x31, 0xe8, 0xa6, 0xe6, + 0x0b, 0xe7, 0xd1, 0xbd, 0x81, 0xc1, 0xca, 0xc7, + 0x73, 0xd4, 0xb3, 0xb1, 0xf9, 0xba, 0xcf, 0x16, + 0xcc, 0xbd, 0xfe, 0x2c, 0xfa, 0xa7, 0x9e, 0x50, + 0x1f, 0x52, 0x2f, 0x0e, 0x80, 0x3f, 0x47, 0x17, + 0xf3, 0x23, 0xa4, 0xe7, 0xb9, 0xf8, 0xcd, 0xca, + 0xae, 0xf2, 0xff, 0x0f, 0xa8, 0x33, 0x79, 0xfd, + 0x55, 0x6f, 0x6a, 0xf0, 0xb9, 0x13, 0x0e, 0xc4, + 0x91, 0xb9, 0x46, 0x5c, 0xc6, 0xcf, 0x51, 0x3f, + 0xff, 0x27, 0xf3, 0x92, 0xcd, 0x67, 0xb4, 0xdf, + 0xde, 0xf4, 0x3b, 0x33, 0xdc, 0xe5, 0x1f, 0xbe, + 0xe1, 0x5c, 0xab, 0xa7, 0xab, 0xbe, 0xf7, 0xa7, + 0xbe, 0xba, 0x37, 0x51, 0xfe, 0xde, 0xa7, 0x0e, + 0xdd, 0x6d, 0xa4, 0xfb, 0x0c, 0xc1, 0xb7, 0xd7, + 0xb9, 0xa1, 0xf9, 0xac, 0x1f, 0x7e, 0xa4, 0xdd, + 0x29, 0xcd, 0xcf, 0xa7, 0xe2, 0xef, 0xdf, 0x0f, + 0xce, 0x83, 0xc7, 0x26, 0x5b, 0x48, 0xd0, 0xdc, + 0xd6, 0x14, 0xa1, 0x2f, 0x61, 0x55, 0xb5, 0xfe, + 0xcf, 0x30, 0xce, 0x8f, 0x73, 0xf4, 0xbc, 0x21, + 0xc4, 0x5f, 0xf7, 0xe2, 0xf2, 0x27, 0x25, 0x99, + 0x1b, 0xf9, 0x0c, 0xda, 0x0a, 0x6f, 0x84, 0xdf, + 0xa8, 0xd7, 0xfd, 0x6b, 0x78, 0x39, 0xb8, 0x73, + 0x34, 0x3a, 0x6f, 0x32, 0xd0, 0x95, 0xbb, 0x2e, + 0x8a, 0xd7, 0x24, 0xf6, 0xeb, 0x51, 0x0f, 0x5f, + 0x6b, 0xc6, 0x72, 0x9f, 0x6d, 0x07, 0x4b, 0xef, + 0xdb, 0x3d, 0xb5, 0x70, 0xe8, 0xa5, 0xfa, 0xb9, + 0x01, 0xdc, 0x5f, 0xc3, 0x1d, 0xea, 0x97, 0xe3, + 0x39, 0x87, 0xfd, 0x27, 0x75, 0x7f, 0xfe, 0xf8, + 0xb8, 0xc2, 0x36, 0x3a, 0xcf, 0x67, 0xf0, 0x13, + 0x17, 0xd1, 0x5d, 0xe3, 0xca, 0xdc, 0x7f, 0x9d, + 0xaf, 0xea, 0xc7, 0x24, 0xf6, 0x57, 0xf1, 0xa5, + 0xfa, 0xab, 0xd2, 0xdc, 0xf7, 0xe5, 0x89, 0xea, + 0x7f, 0x8b, 0x93, 0x9f, 0x23, 0x0a, 0xe5, 0x5f, + 0x6b, 0x31, 0xaf, 0x2a, 0x93, 0x26, 0xfd, 0xd9, + 0x46, 0xfc, 0xf4, 0x4e, 0x67, 0x4e, 0x68, 0x9a, + 0xe3, 0xeb, 0xf7, 0x6e, 0x95, 0xbf, 0x0e, 0x20, + 0xee, 0x8a, 0xe5, 0xa8, 0x3f, 0x8b, 0x21, 0xcf, + 0x9c, 0x53, 0x3c, 0xf5, 0x3c, 0xe2, 0xc2, 0x39, + 0x5f, 0xf1, 0xeb, 0xc3, 0x5c, 0x78, 0xf8, 0x73, + 0x7d, 0x5e, 0xf3, 0xbe, 0xd5, 0x3f, 0xc8, 0x6f, + 0xcc, 0xc3, 0xb7, 0x7e, 0x59, 0x4e, 0xf7, 0x3d, + 0x08, 0x5f, 0x7b, 0xbe, 0xa5, 0xfe, 0x1e, 0x8e, + 0x1f, 0xf2, 0xcb, 0x57, 0x7e, 0xad, 0xe1, 0x9c, + 0xe6, 0xde, 0x90, 0x7e, 0xdd, 0xc1, 0x2f, 0x94, + 0x3f, 0x31, 0x0f, 0xbe, 0x82, 0xba, 0x59, 0xb0, + 0x5c, 0xf7, 0x77, 0x97, 0x39, 0xf2, 0x9a, 0xbd, + 0xf4, 0x75, 0xa6, 0x3f, 0x3a, 0xe4, 0xbc, 0x4b, + 0xbf, 0xff, 0x6c, 0xc3, 0x47, 0xbe, 0xcc, 0xd5, + 0x7d, 0x0e, 0x8d, 0xb2, 0x70, 0x69, 0x91, 0xf2, + 0xe3, 0x47, 0xce, 0x75, 0x6f, 0x8e, 0xe2, 0xeb, + 0x32, 0x7a, 0xdc, 0xb7, 0x73, 0x75, 0xf8, 0x61, + 0xea, 0xfa, 0xeb, 0x71, 0xf2, 0x07, 0xc3, 0x39, + 0x37, 0xa7, 0x8d, 0xf2, 0x13, 0x43, 0xc9, 0xdb, + 0x86, 0x6e, 0xaa, 0xaf, 0x5b, 0xc8, 0x97, 0x6b, + 0x4e, 0xe8, 0xa8, 0xd9, 0x84, 0x4e, 0x17, 0x2d, + 0x52, 0x7d, 0x4d, 0xa1, 0x2f, 0xac, 0x3c, 0x5e, + 0xfa, 0xe4, 0x43, 0xdc, 0x0d, 0xe8, 0xcd, 0xdc, + 0xc6, 0xac, 0xfa, 0xc4, 0x42, 0xf3, 0xdd, 0xf8, + 0x04, 0x33, 0xf2, 0x5d, 0x0b, 0x5e, 0xcd, 0xb9, + 0x47, 0x53, 0x9b, 0x79, 0x9f, 0xbf, 0x3f, 0xbe, + 0xd1, 0xfc, 0x8e, 0x5e, 0x4e, 0xb9, 0x2c, 0x7d, + 0x0b, 0x60, 0x6e, 0x34, 0x39, 0x44, 0xe7, 0x3b, + 0x01, 0xff, 0x91, 0x1c, 0xa9, 0xfe, 0xaa, 0x37, + 0xf3, 0xc8, 0x9a, 0x1f, 0x77, 0x83, 0x8f, 0xe1, + 0xbe, 0xeb, 0x07, 0x3f, 0xd5, 0xe7, 0x59, 0x87, + 0xe7, 0x43, 0xbd, 0xbf, 0x2e, 0xba, 0x93, 0xbe, + 0x4b, 0xf3, 0xdc, 0x8f, 0xd0, 0xf1, 0xa8, 0x96, + 0xaa, 0xe7, 0x2f, 0x4e, 0x5a, 0xc8, 0x39, 0xae, + 0xfb, 0x08, 0x66, 0x7f, 0x6b, 0xee, 0x6b, 0x1e, + 0x75, 0x91, 0x38, 0xac, 0x1a, 0xa9, 0x7c, 0xf9, + 0x91, 0xf7, 0xbd, 0x9f, 0xa5, 0x7e, 0x72, 0x1c, + 0xbe, 0xb6, 0x67, 0xa2, 0x7e, 0x4f, 0xe8, 0xc3, + 0x3d, 0x9f, 0xbb, 0xa2, 0xfe, 0x3d, 0xe2, 0x8a, + 0x85, 0x49, 0x19, 0xfa, 0xbd, 0xc2, 0x83, 0xf3, + 0xef, 0x79, 0x02, 0x5d, 0x31, 0xb7, 0xd1, 0xfb, + 0x69, 0x9e, 0xe8, 0x86, 0x39, 0x44, 0x9d, 0x1a, + 0xfa, 0x19, 0xbe, 0xd8, 0x34, 0xa7, 0x5f, 0x76, + 0xae, 0xa3, 0x79, 0xfc, 0x34, 0xe6, 0x45, 0x6b, + 0xca, 0xe8, 0xfd, 0xad, 0xa8, 0xa7, 0xf9, 0x0d, + 0x55, 0xaf, 0xd2, 0x88, 0x93, 0x80, 0x41, 0xf8, + 0x38, 0x93, 0x4a, 0x5c, 0x3a, 0x46, 0xab, 0xbe, + 0x5d, 0x26, 0xae, 0xf6, 0x6e, 0x51, 0x3d, 0xcc, + 0x45, 0x2f, 0x3b, 0x9c, 0x96, 0x1f, 0xff, 0x84, + 0x3c, 0x48, 0x8e, 0x53, 0xbf, 0x36, 0x18, 0xbd, + 0x75, 0x7c, 0xa4, 0xfe, 0x29, 0x0b, 0x3d, 0x3e, + 0xea, 0x2a, 0xbf, 0xe7, 0x17, 0x63, 0xa1, 0x4e, + 0x49, 0xf9, 0xfb, 0xa5, 0xf8, 0xb2, 0x93, 0x51, + 0xba, 0x9f, 0xe5, 0xcc, 0x71, 0xf7, 0xd6, 0x53, + 0xbf, 0x57, 0x89, 0x7c, 0x89, 0x9a, 0x2b, 0xbf, + 0xd4, 0x8c, 0xdf, 0x95, 0x32, 0x26, 0xab, 0xbe, + 0x5e, 0xe6, 0xf7, 0x84, 0xa0, 0x62, 0x9a, 0xbf, + 0x5d, 0x21, 0xce, 0x06, 0x2d, 0x57, 0xbe, 0xbe, + 0x26, 0xbf, 0x5c, 0x6b, 0x68, 0x7d, 0x5d, 0x38, + 0xd7, 0x93, 0xa5, 0xd5, 0xcf, 0x4c, 0xa0, 0xff, + 0x7e, 0xbb, 0x4e, 0xf5, 0x38, 0x0d, 0x1f, 0xd2, + 0xdb, 0x51, 0x7a, 0xb5, 0x17, 0xbd, 0x8e, 0xbd, + 0xad, 0x79, 0xee, 0x02, 0x74, 0xae, 0x54, 0x36, + 0x73, 0xfd, 0x7f, 0xe6, 0x5d, 0x57, 0xdd, 0xa4, + 0x37, 0x4e, 0xdc, 0x53, 0x8b, 0xca, 0x8a, 0xbf, + 0xad, 0xe8, 0xc8, 0xc0, 0xb0, 0x29, 0x3a, 0x9f, + 0xaa, 0x16, 0xda, 0xd5, 0x93, 0xbf, 0x7c, 0x0f, + 0xdd, 0xbb, 0xff, 0x48, 0xf5, 0xf0, 0x21, 0x73, + 0xd2, 0xa6, 0x2d, 0x74, 0x3e, 0xe3, 0xf1, 0x29, + 0x35, 0x36, 0xea, 0xf7, 0x03, 0x47, 0xe2, 0xbe, + 0x47, 0xa8, 0xfa, 0x8f, 0x19, 0xe8, 0xd8, 0xb5, + 0xce, 0xea, 0x1f, 0x63, 0x88, 0xa3, 0xc8, 0xdd, + 0xf8, 0x4c, 0x53, 0x88, 0x5e, 0x5e, 0x3f, 0x24, + 0x23, 0xe8, 0x83, 0xbe, 0x8d, 0xce, 0xd6, 0xfd, + 0x5c, 0xa7, 0xee, 0x54, 0xfc, 0x44, 0xfd, 0x54, + 0x32, 0xfd, 0xc8, 0x8a, 0xcd, 0xc4, 0x89, 0xd9, + 0x47, 0x9d, 0xed, 0xb4, 0x5d, 0xf5, 0x79, 0x3d, + 0xf9, 0x5b, 0xe5, 0xac, 0xf2, 0xa7, 0x16, 0xfb, + 0x88, 0xf5, 0xd1, 0xbc, 0xba, 0x17, 0x7d, 0xf4, + 0xc9, 0x07, 0x93, 0xe0, 0xaf, 0x99, 0xef, 0x6d, + 0x7c, 0x85, 0x4e, 0x9b, 0xe2, 0xcc, 0xbb, 0xdc, + 0xd7, 0xaa, 0xbe, 0x2e, 0xe6, 0xfe, 0x9e, 0x04, + 0x4b, 0xef, 0x7a, 0x90, 0x7f, 0x6f, 0x42, 0x54, + 0xbf, 0x5c, 0xc8, 0xcb, 0x5e, 0x53, 0x63, 0xe0, + 0xbe, 0xf8, 0xd2, 0x65, 0x71, 0xcc, 0x99, 0x4c, + 0x13, 0xf6, 0x73, 0xeb, 0x37, 0xcd, 0xf3, 0x5d, + 0xf0, 0x93, 0x75, 0x3d, 0xb4, 0x9e, 0xd3, 0xe8, + 0xe4, 0x30, 0x77, 0xfd, 0x9e, 0xbb, 0x88, 0x3a, + 0xba, 0x33, 0x9f, 0xdf, 0x3d, 0xcc, 0x38, 0x7e, + 0xf7, 0xed, 0x96, 0xa5, 0xfd, 0x76, 0x27, 0xae, + 0x3e, 0x88, 0x55, 0xff, 0x3b, 0x97, 0xfd, 0xe6, + 0x95, 0xd7, 0xbc, 0xad, 0x23, 0xf7, 0xb1, 0xdd, + 0x5b, 0xf3, 0xc5, 0x68, 0xe6, 0xe4, 0x0b, 0x02, + 0x0e, 0xc1, 0x27, 0x70, 0xdf, 0x0b, 0x9c, 0xd4, + 0x0f, 0x37, 0xa6, 0xbe, 0x4e, 0xee, 0xaa, 0x7a, + 0xb8, 0x19, 0xdd, 0x48, 0xed, 0xae, 0xfa, 0x1a, + 0x46, 0x3f, 0x7f, 0x7f, 0x8a, 0xea, 0xfb, 0x7e, + 0xf2, 0x3b, 0x32, 0x41, 0xfe, 0xa2, 0x0d, 0x3a, + 0xec, 0x18, 0x31, 0x4b, 0xfb, 0xe3, 0x7d, 0xa1, + 0x09, 0xca, 0xdf, 0x3b, 0xbe, 0xff, 0x03, 0x4e, + 0x9a, 0x03, 0x4d +}; + +#endif
commit 52e903ecbf1653c72f5ae061084262d02b807339 Author: Dmitry Eremin-Solenikov dmitry.ereminsolenikov@linaro.org Date: Thu Nov 29 13:56:27 2018 +0300
linux-gen: event: define ODP_EVENT_PACKET_COMP
Signed-off-by: Dmitry Eremin-Solenikov dmitry.ereminsolenikov@linaro.org Reviewed-by: Bill Fischofer bill.fischofer@linaro.org Signed-off-by: Maxim Uvarov maxim.uvarov@linaro.org
diff --git a/include/odp/api/spec/event.h b/include/odp/api/spec/event.h index a6b8fdbf..162fd5a7 100644 --- a/include/odp/api/spec/event.h +++ b/include/odp/api/spec/event.h @@ -79,7 +79,7 @@ extern "C" { * - ODP_EVENT_PACKET_BASIC * - Packet event (odp_packet_t) with basic packet metadata * - ODP_EVENT_PACKET_COMP - * - Packet event (odp_packet_t) generated as a result of an compression/ + * - Packet event (odp_packet_t) generated as a result of a compression/ * decompression operation. It contains compression specific metadata in * addition to the basic packet metadata. * - ODP_EVENT_PACKET_CRYPTO diff --git a/platform/linux-generic/include-abi/odp/api/abi/event.h b/platform/linux-generic/include-abi/odp/api/abi/event.h index d7bd57c0..a8024654 100644 --- a/platform/linux-generic/include-abi/odp/api/abi/event.h +++ b/platform/linux-generic/include-abi/odp/api/abi/event.h @@ -40,7 +40,8 @@ typedef enum odp_event_subtype_t { ODP_EVENT_NO_SUBTYPE = 0, ODP_EVENT_PACKET_BASIC = 1, ODP_EVENT_PACKET_CRYPTO = 2, - ODP_EVENT_PACKET_IPSEC = 3 + ODP_EVENT_PACKET_IPSEC = 3, + ODP_EVENT_PACKET_COMP = 4 } odp_event_subtype_t;
/* Inlined functions for non-ABI compat mode */
commit ad31bf29da57c50b717c8cb441f6126c0481c144 Author: Dmitry Eremin-Solenikov dmitry.ereminsolenikov@linaro.org Date: Thu Nov 29 13:53:00 2018 +0300
linux-gen: add compression ABI file
Signed-off-by: Dmitry Eremin-Solenikov dmitry.ereminsolenikov@linaro.org Reviewed-by: Bill Fischofer bill.fischofer@linaro.org Signed-off-by: Maxim Uvarov maxim.uvarov@linaro.org
diff --git a/platform/linux-generic/Makefile.am b/platform/linux-generic/Makefile.am index f21fbf70..7c76a4f9 100644 --- a/platform/linux-generic/Makefile.am +++ b/platform/linux-generic/Makefile.am @@ -52,6 +52,7 @@ odpapiabiarchinclude_HEADERS += \ include-abi/odp/api/abi/buffer.h \ include-abi/odp/api/abi/byteorder.h \ include-abi/odp/api/abi/classification.h \ + include-abi/odp/api/abi/comp.h \ include-abi/odp/api/abi/cpumask.h \ include-abi/odp/api/abi/crypto.h \ include-abi/odp/api/abi/debug.h \ diff --git a/platform/linux-generic/include-abi/odp/api/abi/comp.h b/platform/linux-generic/include-abi/odp/api/abi/comp.h new file mode 100644 index 00000000..ac3d3a4a --- /dev/null +++ b/platform/linux-generic/include-abi/odp/api/abi/comp.h @@ -0,0 +1,34 @@ +/* Copyright (c) 2018, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef ODP_ABI_COMP_H_ +#define ODP_ABI_COMP_H_ + +#include <odp/api/plat/strong_types.h> + +#ifdef __cplusplus +extern "C" { +#endif + +#include <stdint.h> + +/** @ingroup odp_compression + * @{ + */ + +typedef ODP_HANDLE_T(odp_comp_session_t); + +#define ODP_COMP_SESSION_INVALID _odp_cast_scalar(odp_comp_session_t, 0) + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif
commit 0b38035d3857cc23b88a00e695b8ff2993775dbe Author: Dmitry Eremin-Solenikov dmitry.ereminsolenikov@linaro.org Date: Thu Nov 29 13:46:35 2018 +0300
api: fix compression API headers
- small syntax typo fix - fix header guarding define - add abi files - include comp.h from odp_api.h header
Signed-off-by: Dmitry Eremin-Solenikov dmitry.ereminsolenikov@linaro.org Reviewed-by: Bill Fischofer bill.fischofer@linaro.org Signed-off-by: Maxim Uvarov maxim.uvarov@linaro.org
diff --git a/include/Makefile.am b/include/Makefile.am index 97f52840..49ed0164 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -16,6 +16,7 @@ odpapiinclude_HEADERS = \ odp/api/byteorder.h \ odp/api/chksum.h \ odp/api/classification.h \ + odp/api/comp.h \ odp/api/cpu.h \ odp/api/cpumask.h \ odp/api/crypto.h \ @@ -65,6 +66,7 @@ odpapispecinclude_HEADERS = \ odp/api/spec/byteorder.h \ odp/api/spec/chksum.h \ odp/api/spec/classification.h \ + odp/api/spec/comp.h \ odp/api/spec/cpu.h \ odp/api/spec/cpumask.h \ odp/api/spec/crypto.h \ @@ -117,6 +119,7 @@ odpapiabidefaultinclude_HEADERS = \ odp/api/abi-default/buffer.h \ odp/api/abi-default/byteorder.h \ odp/api/abi-default/classification.h \ + odp/api/abi-default/comp.h \ odp/api/abi-default/cpu.h \ odp/api/abi-default/cpumask.h \ odp/api/abi-default/crypto.h \ @@ -159,6 +162,7 @@ odpapiabiarchinclude_HEADERS = \ odp/arch/arm32-linux/odp/api/abi/buffer.h \ odp/arch/arm32-linux/odp/api/abi/byteorder.h \ odp/arch/arm32-linux/odp/api/abi/classification.h \ + odp/arch/arm32-linux/odp/api/abi/comp.h \ odp/arch/arm32-linux/odp/api/abi/cpu.h \ odp/arch/arm32-linux/odp/api/abi/cpumask.h \ odp/arch/arm32-linux/odp/api/abi/crypto.h \ @@ -197,6 +201,7 @@ odpapiabiarchinclude_HEADERS = \ odp/arch/arm64-linux/odp/api/abi/buffer.h \ odp/arch/arm64-linux/odp/api/abi/byteorder.h \ odp/arch/arm64-linux/odp/api/abi/classification.h \ + odp/arch/arm64-linux/odp/api/abi/comp.h \ odp/arch/arm64-linux/odp/api/abi/cpu.h \ odp/arch/arm64-linux/odp/api/abi/cpumask.h \ odp/arch/arm64-linux/odp/api/abi/crypto.h \ @@ -235,6 +240,7 @@ odpapiabiarchinclude_HEADERS = \ odp/arch/default-linux/odp/api/abi/buffer.h \ odp/arch/default-linux/odp/api/abi/byteorder.h \ odp/arch/default-linux/odp/api/abi/classification.h \ + odp/arch/default-linux/odp/api/abi/comp.h \ odp/arch/default-linux/odp/api/abi/cpu.h \ odp/arch/default-linux/odp/api/abi/cpumask.h \ odp/arch/default-linux/odp/api/abi/crypto.h \ @@ -273,6 +279,7 @@ odpapiabiarchinclude_HEADERS = \ odp/arch/mips64-linux/odp/api/abi/buffer.h \ odp/arch/mips64-linux/odp/api/abi/byteorder.h \ odp/arch/mips64-linux/odp/api/abi/classification.h \ + odp/arch/mips64-linux/odp/api/abi/comp.h \ odp/arch/mips64-linux/odp/api/abi/cpu.h \ odp/arch/mips64-linux/odp/api/abi/cpumask.h \ odp/arch/mips64-linux/odp/api/abi/crypto.h \ @@ -311,6 +318,7 @@ odpapiabiarchinclude_HEADERS = \ odp/arch/power64-linux/odp/api/abi/buffer.h \ odp/arch/power64-linux/odp/api/abi/byteorder.h \ odp/arch/power64-linux/odp/api/abi/classification.h \ + odp/arch/power64-linux/odp/api/abi/comp.h \ odp/arch/power64-linux/odp/api/abi/cpu.h \ odp/arch/power64-linux/odp/api/abi/cpumask.h \ odp/arch/power64-linux/odp/api/abi/crypto.h \ @@ -349,6 +357,7 @@ odpapiabiarchinclude_HEADERS = \ odp/arch/x86_32-linux/odp/api/abi/buffer.h \ odp/arch/x86_32-linux/odp/api/abi/byteorder.h \ odp/arch/x86_32-linux/odp/api/abi/classification.h \ + odp/arch/x86_32-linux/odp/api/abi/comp.h \ odp/arch/x86_32-linux/odp/api/abi/cpu.h \ odp/arch/x86_32-linux/odp/api/abi/cpumask.h \ odp/arch/x86_32-linux/odp/api/abi/crypto.h \ @@ -387,6 +396,7 @@ odpapiabiarchinclude_HEADERS = \ odp/arch/x86_64-linux/odp/api/abi/buffer.h \ odp/arch/x86_64-linux/odp/api/abi/byteorder.h \ odp/arch/x86_64-linux/odp/api/abi/classification.h \ + odp/arch/x86_64-linux/odp/api/abi/comp.h \ odp/arch/x86_64-linux/odp/api/abi/cpu.h \ odp/arch/x86_64-linux/odp/api/abi/cpumask.h \ odp/arch/x86_64-linux/odp/api/abi/crypto.h \ diff --git a/include/odp/api/comp.h b/include/odp/api/comp.h new file mode 100644 index 00000000..59d4f52a --- /dev/null +++ b/include/odp/api/comp.h @@ -0,0 +1,30 @@ +/* Copyright (c) 2018, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +/** + * @file + * + * ODP crypto + */ + +#ifndef ODP_API_COMP_H_ +#define ODP_API_COMP_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include <odp/api/abi/comp.h> +#include <odp/api/abi/event.h> +#include <odp/api/abi/queue.h> + +#include <odp/api/spec/comp.h> + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/odp/api/spec/comp.h b/include/odp/api/spec/comp.h index a5eb5a23..e0271919 100644 --- a/include/odp/api/spec/comp.h +++ b/include/odp/api/spec/comp.h @@ -10,8 +10,8 @@ * ODP Compression */
-#ifndef ODP_API_COMP_H_ -#define ODP_API_COMP_H_ +#ifndef ODP_API_SPEC_COMP_H_ +#define ODP_API_SPEC_COMP_H_
#include <odp/visibility_begin.h> #include <odp/api/support.h> @@ -121,7 +121,7 @@ typedef union odp_comp_hash_algos_t { /** hash algorithms */ struct { /** ODP_COMP_HASH_ALG_NONE */ - uint32_t none : 1, + uint32_t none : 1;
/** ODP_COMP_HASH_ALG_SHA1 */ uint32_t sha1 : 1; @@ -181,7 +181,7 @@ typedef struct odp_comp_capability_t { /** Synchronous compression mode support (ODP_COMP_OP_MODE_SYNC) */ odp_support_t sync;
- /** Aynchronous compression mode support (ODP_COMP_OP_MODE_SSYNC) */ + /** Aynchronous compression mode support (ODP_COMP_OP_MODE_ASYNC) */ odp_support_t async; } odp_comp_capability_t;
@@ -343,7 +343,7 @@ typedef struct odp_comp_packet_result_t { /** Output packet data range * Specifies offset and length of data resulting from compression * operation. When hashing is configured output_data_range.len equals - * length of output data + 'digest+len' + * length of output data + length of digest. */ odp_packet_data_range_t output_data_range; } odp_comp_packet_result_t; diff --git a/include/odp/arch/arm32-linux/odp/api/abi/comp.h b/include/odp/arch/arm32-linux/odp/api/abi/comp.h new file mode 100644 index 00000000..a8f6439f --- /dev/null +++ b/include/odp/arch/arm32-linux/odp/api/abi/comp.h @@ -0,0 +1,7 @@ +/* Copyright (c) 2018, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <odp/api/abi-default/comp.h> diff --git a/include/odp/arch/arm64-linux/odp/api/abi/comp.h b/include/odp/arch/arm64-linux/odp/api/abi/comp.h new file mode 100644 index 00000000..a8f6439f --- /dev/null +++ b/include/odp/arch/arm64-linux/odp/api/abi/comp.h @@ -0,0 +1,7 @@ +/* Copyright (c) 2018, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <odp/api/abi-default/comp.h> diff --git a/include/odp/arch/default-linux/odp/api/abi/comp.h b/include/odp/arch/default-linux/odp/api/abi/comp.h new file mode 100644 index 00000000..a8f6439f --- /dev/null +++ b/include/odp/arch/default-linux/odp/api/abi/comp.h @@ -0,0 +1,7 @@ +/* Copyright (c) 2018, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <odp/api/abi-default/comp.h> diff --git a/include/odp/arch/mips64-linux/odp/api/abi/comp.h b/include/odp/arch/mips64-linux/odp/api/abi/comp.h new file mode 100644 index 00000000..a8f6439f --- /dev/null +++ b/include/odp/arch/mips64-linux/odp/api/abi/comp.h @@ -0,0 +1,7 @@ +/* Copyright (c) 2018, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <odp/api/abi-default/comp.h> diff --git a/include/odp/arch/power64-linux/odp/api/abi/comp.h b/include/odp/arch/power64-linux/odp/api/abi/comp.h new file mode 100644 index 00000000..a8f6439f --- /dev/null +++ b/include/odp/arch/power64-linux/odp/api/abi/comp.h @@ -0,0 +1,7 @@ +/* Copyright (c) 2018, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <odp/api/abi-default/comp.h> diff --git a/include/odp/arch/x86_32-linux/odp/api/abi/comp.h b/include/odp/arch/x86_32-linux/odp/api/abi/comp.h new file mode 100644 index 00000000..a8f6439f --- /dev/null +++ b/include/odp/arch/x86_32-linux/odp/api/abi/comp.h @@ -0,0 +1,7 @@ +/* Copyright (c) 2018, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <odp/api/abi-default/comp.h> diff --git a/include/odp/arch/x86_64-linux/odp/api/abi/comp.h b/include/odp/arch/x86_64-linux/odp/api/abi/comp.h new file mode 100644 index 00000000..a8f6439f --- /dev/null +++ b/include/odp/arch/x86_64-linux/odp/api/abi/comp.h @@ -0,0 +1,7 @@ +/* Copyright (c) 2018, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <odp/api/abi-default/comp.h> diff --git a/include/odp_api.h b/include/odp_api.h index 2185e60a..66b39e31 100644 --- a/include/odp_api.h +++ b/include/odp_api.h @@ -24,6 +24,7 @@ extern "C" { #include <odp/api/align.h> #include <odp/api/hash.h> #include <odp/api/chksum.h> +#include <odp/api/comp.h> #include <odp/api/hints.h> #include <odp/api/debug.h> #include <odp/api/byteorder.h>
commit dc318362ce9bdff233c492d07ef4a2858484a85b Author: Balasubramanian Manoharan bala.manoharan@linaro.org Date: Tue Apr 24 20:09:37 2018 +0530
api: comp: compression specification
ODP Compression specification
Signed-off-by: Balasubramanian Manoharan bala.manoharan@linaro.org Signed-off-by: Shally Verma shally.verma@cavium.com Signed-off-by: Mahipal Challa mahipal.challa@cavium.com Reviewed-by: Petri Savolainen petri.savolainen@linaro.org Reviewed-by: Bogdan Pricope bogdan.pricope@linaro.org Signed-off-by: Maxim Uvarov maxim.uvarov@linaro.org
diff --git a/include/odp/api/abi-default/comp.h b/include/odp/api/abi-default/comp.h new file mode 100644 index 00000000..8a1145af --- /dev/null +++ b/include/odp/api/abi-default/comp.h @@ -0,0 +1,35 @@ +/* Copyright (c) 2018, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef ODP_ABI_COMP_H_ +#define ODP_ABI_COMP_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include <stdint.h> + +/** @internal Dummy type for strong typing */ +typedef struct { char dummy; /**< @internal Dummy */ } _odp_abi_comp_session_t; + +/** @ingroup odp_compression + * @{ + */ + +typedef _odp_abi_comp_session_t *odp_comp_session_t; + +#define ODP_COMP_SESSION_INVALID ((odp_comp_session_t)0) + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/odp/api/spec/comp.h b/include/odp/api/spec/comp.h new file mode 100644 index 00000000..a5eb5a23 --- /dev/null +++ b/include/odp/api/spec/comp.h @@ -0,0 +1,613 @@ +/* Copyright (c) 2018, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +/** + * @file + * + * ODP Compression + */ + +#ifndef ODP_API_COMP_H_ +#define ODP_API_COMP_H_ + +#include <odp/visibility_begin.h> +#include <odp/api/support.h> +#include <odp/api/packet.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/** @defgroup odp_compression ODP COMP + * Operations for Compression and Decompression API. + * Hash calculation may be combined with de-/compression operations + * + * @{ + */ + +/** + * @def ODP_COMP_SESSION_INVALID + * Invalid session handle + */ + +/** + * @typedef odp_comp_session_t + * Compression/Decompression session handle + */ + +/** + * Compression operation mode + */ +typedef enum { + /** Synchronous Compression operation + * + * Application uses synchronous operation, + * which outputs all results on function return. + * */ + ODP_COMP_OP_MODE_SYNC, + + /** Asynchronous Compression operation + * + * Application uses asynchronous operation, + * which return results via events. + * */ + ODP_COMP_OP_MODE_ASYNC +} odp_comp_op_mode_t; + +/** + * Compression operation type. + */ +typedef enum { + /** Operation type - Compress */ + ODP_COMP_OP_COMPRESS, + + /** Operation type - Decompress */ + ODP_COMP_OP_DECOMPRESS +} odp_comp_op_t; + +/** + * Compression hash algorithms + */ +typedef enum { + /** No hash algorithm selected. */ + ODP_COMP_HASH_ALG_NONE, + + /** SHA-1 hash algorithm. */ + ODP_COMP_HASH_ALG_SHA1, + + /** SHA-2 hash algorithm 256-bit digest length. */ + ODP_COMP_HASH_ALG_SHA256 +} odp_comp_hash_alg_t; + +/** + * Compression algorithms + * + */ +typedef enum { + /** No algorithm specified. Added for testing purpose. */ + ODP_COMP_ALG_NULL, + + /** DEFLATE - RFC1951 */ + ODP_COMP_ALG_DEFLATE, + + /** ZLIB - RFC1950 */ + ODP_COMP_ALG_ZLIB, + + /** LZS */ + ODP_COMP_ALG_LZS +} odp_comp_alg_t; + +/** + * Compression operation status codes + */ +typedef enum { + /** Operation completed successfully*/ + ODP_COMP_STATUS_SUCCESS, + + /** Operation terminated due to insufficient output buffer */ + ODP_COMP_STATUS_OUT_OF_SPACE_TERM, + + /** Operation failure */ + ODP_COMP_STATUS_FAILURE, +} odp_comp_status_t; + +/** + * Hash algorithms in a bit field structure + */ +typedef union odp_comp_hash_algos_t { + /** hash algorithms */ + struct { + /** ODP_COMP_HASH_ALG_NONE */ + uint32_t none : 1, + + /** ODP_COMP_HASH_ALG_SHA1 */ + uint32_t sha1 : 1; + + /** ODP_COMP_HASH_ALG_SHA256 */ + uint32_t sha256 : 1; + + } bit; + + /** All bits of the bit field structure + * + * This field can be used to set/clear all flags, or bitwise + * operations over the entire structure. + */ + uint32_t all_bits; +} odp_comp_hash_algos_t; + +/** + * Compression algorithms in a bit field structure + */ +typedef union odp_comp_algos_t { + /** Compression algorithms */ + struct { + /** ODP_COMP_ALG_NULL */ + uint32_t null : 1; + + /** ODP_COMP_ALG_DEFLATE */ + uint32_t deflate : 1; + + /** ODP_COMP_ALG_ZLIB */ + uint32_t zlib : 1; + + /** ODP_COMP_ALG_LZS */ + uint32_t lzs : 1; + } bit; + + /** All bits of the bit field structure + * This field can be used to set/clear all flags, or bitwise + * operations over the entire structure. + */ + uint32_t all_bits; +} odp_comp_algos_t; + +/** + * Compression Interface Capabilities + */ +typedef struct odp_comp_capability_t { + /** Maximum number of sessions */ + uint32_t max_sessions; + + /** Supported compression algorithms */ + odp_comp_algos_t comp_algos; + + /** Supported hash algorithms */ + odp_comp_hash_algos_t hash_algos; + + /** Synchronous compression mode support (ODP_COMP_OP_MODE_SYNC) */ + odp_support_t sync; + + /** Aynchronous compression mode support (ODP_COMP_OP_MODE_SSYNC) */ + odp_support_t async; +} odp_comp_capability_t; + +/** + * Hash algorithm capabilities + */ +typedef struct odp_comp_hash_alg_capability_t { + /** Digest length in bytes */ + uint32_t digest_len; +} odp_comp_hash_alg_capability_t; + +/** + * Compression algorithm capabilities + */ +typedef struct odp_comp_alg_capability_t { + + /** Maximum compression level supported by implementation of this + * algorithm. Indicates number of compression levels supported by + * implementation. Valid range from (1 ... max_level) + */ + uint32_t max_level; + + /** Supported hash algorithms */ + odp_comp_hash_algos_t hash_algo; + + /** Compression ratio + * Optimal compression operation ratio for this algorithm. + * This is an estimate of maximum compression operation output for this + * algorithm. It is expressed as a percentage of maximum expected + * output data size with respect to input data size. + * i.e a value of 200% denotes the output data is 2x times the input + * data size. This is an optimal/most case estimate and it is possible + * that the percentage of output data produced might be greater + * than this value. + * + * @see odp__percent_t + */ + odp_percent_t compression_ratio; +} odp_comp_alg_capability_t; + +/** + * Compression Huffman type. Used by DEFLATE algorithm + */ +typedef enum odp_comp_huffman_code { + /** Fixed Huffman code */ + ODP_COMP_HUFFMAN_FIXED, + + /** Dynamic Huffman code */ + ODP_COMP_HUFFMAN_DYNAMIC, + + /** Default huffman code selected by implementation */ + ODP_COMP_HUFFMAN_DEFAULT, +} odp_comp_huffman_code_t; + +/** + * Compression DEFLATEe algorithm parameters. + * Also initialized by other deflate based algorithms , ex. ZLIB + */ +typedef struct odp_comp_deflate_param { + /** + * Compression level + * + * Valid range is integer between (0 ... max_level) + * level supported by the implementation. + * + * where, + * 0 - implemention default + * + * 1 - fastest compression i.e. output produced at + * best possible speed at the expense of compression quality + * + * max_level - High quality compression + * + * @see 'max_level' in odp_comp_alg_capability_t + */ + uint32_t comp_level; + + /** huffman code to use */ + odp_comp_huffman_code_t huffman_code; +} odp_comp_deflate_param_t; + +/** + * Compression algorithm specific parameters + */ +typedef union odp_comp_alg_param_t { + /** deflate parameter */ + odp_comp_deflate_param_t deflate; + + /** Struct for defining zlib algorithm parameters */ + struct { + /** deflate algo params */ + odp_comp_deflate_param_t deflate; + } zlib; +} odp_comp_alg_param_t; + + /** + * Compression session creation parameters + */ +typedef struct odp_comp_session_param_t { + /** Compression operation type Compress vs Decompress */ + odp_comp_op_t op; + + /** Compression operation mode + * + * Operation mode Synchronous vs Asynchronous + * + * @see odp_comp_op(), odp_comp_op_enq() + */ + odp_comp_op_mode_t mode; + + /** Compression algorithm + * + * @see odp_comp_capability() + */ + odp_comp_alg_t comp_algo; + + /** Hash algorithm + * + * @see odp_comp_alg_capability() + */ + odp_comp_hash_alg_t hash_algo; + + /** parameters specific to compression */ + odp_comp_alg_param_t alg_param; + + /** Session packet enqueue ordering + * Boolean to indicate if packet enqueue ordering is required per + * session. Valid only for Asynchronous operation mode + * (ODP_COMP_OP_MODE_ASYNC). Packet order is always maintained for + * synchronous operation mode (ODP_COMP_OP_MODE_SYNC) + * + * true: packet session enqueue order maintained + * + * false: packet session enqueue order is not maintained + * + * @note: By disabling packet order requirement, performance oriented + * application can leverage HW offered parallelism to increase operation + * performance. + */ + odp_bool_t packet_order; + + /** Destination queue for compression operations result. + * Results are enqueued as ODP_EVENT_PACKET with subtype + * ODP_EVENT_PACKET_COMP + */ + odp_queue_t compl_queue; +} odp_comp_session_param_t; + +/** + * Compression packet operation result + */ +typedef struct odp_comp_packet_result_t { + /** Operation status code */ + odp_comp_status_t status; + + /** Input packet handle */ + odp_packet_t pkt_in; + + /** Output packet data range + * Specifies offset and length of data resulting from compression + * operation. When hashing is configured output_data_range.len equals + * length of output data + 'digest+len' + */ + odp_packet_data_range_t output_data_range; +} odp_comp_packet_result_t; + +/** + * Compression per packet operation parameters + */ +typedef struct odp_comp_packet_op_param_t { + /** Session handle */ + odp_comp_session_t session; + + /** Input data range to process. where, + * + * offset - starting offset + * length - length of data for compression operation + * */ + odp_packet_data_range_t in_data_range; + + /** Output packet data range. + * Indicates where processed packet will be written. where, + * + * offset - starting offset + * length - length of buffer available for output + * + * Output packet data is not modified outside of this provided data + * range. If output data length is not sufficient for compression + * operation ODP_COMP_STATUS_OUT_OF_SPACE_TERM error will occur + */ + odp_packet_data_range_t out_data_range; +} odp_comp_packet_op_param_t; + +/** + * Query compression capabilities + * + * Output compression capabilities on success. + * + * @param[out] capa Pointer to capability structure for output + * + * @retval 0 on success + * @retval <0 on failure + */ +int odp_comp_capability(odp_comp_capability_t *capa); + +/** + * Query supported compression algorithm capabilities + * + * Output algorithm capabilities. + * + * @param comp Compression algorithm + * @param[out] capa Compression algorithm capability + * + * @retval 0 on success + * @retval <0 on failure + */ +int odp_comp_alg_capability(odp_comp_alg_t comp, + odp_comp_alg_capability_t *capa); + +/** + * Query supported hash algorithm capabilities + * + * Outputs all supported configuration options for the algorithm. + * + * @param hash Hash algorithm + * @param capa Hash algorithm capability + * + * @retval 0 on success + * @retval <0 on failure + */ +int odp_comp_hash_alg_capability(odp_comp_hash_alg_t hash, + odp_comp_hash_alg_capability_t *capa); + +/** + * Initialize compression session parameters + * + * Initialize an odp_comp_session_param_t to its default values for + * all fields. + * + * @param param Pointer to odp_comp_session_param_t to be initialized + */ +void odp_comp_session_param_init(odp_comp_session_param_t *param); + +/** + * Compression session creation + * + * Create a comp session according to the session parameters. Use + * odp_comp_session_param_init() to initialize parameters into their + * default values. + * + * @param param Session parameters + * + * @retval Comp session handle + * @retval ODP_COMP_SESSION_INVALID on failure + */ +odp_comp_session_t +odp_comp_session_create(const odp_comp_session_param_t *param); + +/** + * Compression session destroy + * + * Destroy an unused session. Result is undefined if session is being used + * (i.e. asynchronous operation is in progress). + * + * @param session Session handle + * + * @retval 0 on success + * @retval <0 on failure + */ +int odp_comp_session_destroy(odp_comp_session_t session); + +/** + * Synchronous packet compression operation + * + * This operation does packet compression in synchronous mode. A successful operation + * returns the number of successfully processed input packets and updates the + * results in the corresponding output packets. Outputted packets contain + * compression results metadata (odp_comp_packet_result_t), which should be + * checked for operation status. Length of outputted data can be got from + * output_data_range.len. + * + * When hashing is configured along with compression operation the + * result is appended at the end of the output data, output_data_range.len + * equals length of output data + 'digest_len'. Processed data length + * can be computed by subtracting 'digest_len' from output_data_range.len where + * 'digest_len' can be queried from odp_comp_hash_alg_capability(). + * Hash is always performed on plain text. Hash validation in decompression is + * performed by the application. + * For every input packet entry in 'pkt_in' array, application should pass + * corresponding valid output packet handle. If any error occurs during + * processing of packets, the API returns with number of entries successfully + * processed. + * Output packet metadatas like length or data pointer will not be updated. + * + * @param pkt_in Packets to be processed + * @param pkt_out Packet handle array for resulting packets + * @param num_pkt Number of packets to be processed + * @param param Operation parameters + * + * @return Number of input packets consumed (0 ... num_pkt) + * @retval <0 on failure + * + * @note The 'pkt_in','pkt_out'and 'param' arrays should be of same length, + * Results are undefined if otherwise. + + * @note Same packet handle cannot be used as input and output parameter. + * In-place compression operation is not supported + */ +int odp_comp_op(const odp_packet_t pkt_in[], odp_packet_t pkt_out[], + int num_pkt, const odp_comp_packet_op_param_t param[]); + +/** + * Asynchronous packet compression operation + * + * This operation does packet compression in asynchronous mode. It processes + * packets otherwise identical to odp_comp_op(), but the resulting packets are + * enqueued to 'compl_queue' configured during session (odp_comp_session_t) + * creation. For every input packet entry in in_pkt array, user should pass + * corresponding valid output packet handle. On return, API returns with + * number of entries successfully submitted for operation. + * + * When hashing is configured along with compression operation the + * result is appended at the end of the output data, output_data_range.len + * equals length of output data + 'digest_len'. Processed data length + * can be computed by subtracting 'digest_len' from output_data_range.len where + * 'digest_len' can be queried from odp_comp_hash_alg_capability(). + * Hash is always performed on plain text. Hash validation in decompression is + * performed by the application. + * + * In case of partially accepted array i.e. + * when number of packets returned < num_pkt, application may attempt to + * resubmit subsequent entries via calling any of the operation API. + * + * All the packets successfully enqueued will be submitted to 'compl_queue' + * after compression operation, Application should check 'status' of the + * operation in odp_comp_packet_result_t. + * Output packet metadatas like length or data pointer will not be updated. + * + * Please note it is always recommended that application using async mode, + * provide sufficiently large buffer size to avoid + * ODP_COMP_STATUS_OUT_OF_SPACE_TERM. + * + * @param pkt_in Packets to be processed + * @param pkt_out Packet handle array for resulting packets + * @param num_pkt Number of packets to be processed + * @param param Operation parameters + * + * @return Number of input packets enqueued (0 ... num_pkt) + * @retval <0 on failure + * + * @note The 'pkt_in','pkt_out'and 'param' arrays should be of same length, + * Results are undefined if otherwise. + + * @note Same packet handle cannot be used as input and output parameter. + * In-place compression operation is not supported + + * @see odp_comp_op(), odp_comp_packet_result() + */ +int odp_comp_op_enq(const odp_packet_t pkt_in[], odp_packet_t pkt_out[], + int num_pkt, const odp_comp_packet_op_param_t param[]); + +/** + * Get compression operation results from processed packet. + * + * Successful compression operations of all modes (ODP_COMP_OP_MODE_SYNC and + * ODP_COMP_OP_MODE_ASYNC) produce packets which contain compression result + * metadata. This function copies operation results from compression processed + * packet. Event subtype of this packet is ODP_EVENT_PACKET_COMP. Results are + * undefined if non-compression processed packet is passed as input. + * + * @param[out] result pointer to operation result for output + * @param packet compression processed packet (ODP_EVENT_PACKET_COMP) + * + * @retval 0 On success + * @retval <0 On failure + */ +int odp_comp_result(odp_comp_packet_result_t *result, odp_packet_t packet); + + /** + * Convert compression processed packet event to packet handle + * + * Get packet handle corresponding to processed packet event. Event subtype + * must be ODP_EVENT_PACKET_COMP. Compression operation results can be + * examined with odp_comp_result(). + * + * @param event Event handle + * + * @return Valid Packet handle on success, + * @retval ODP_PACKET_INVALID on failure + * + * @see odp_event_subtype(), odp_comp_result() + * + */ +odp_packet_t odp_comp_packet_from_event(odp_event_t event); + + /** + * Convert processed packet handle to event + * + * The packet handle must be an output of a compression operation + * + * @param pkt Packet handle from compression operation + * @return Event handle + */ +odp_event_t odp_comp_packet_to_event(odp_packet_t pkt); + +/** + * Get printable value for an odp_comp_session_t + * + * @param hdl odp_comp_session_t handle to be printed + * @return uint64_t value that can be used to print/display this + * handle + * + * @note This routine is intended to be used for diagnostic purposes + * to enable applications to generate a printable value that represents + * an odp_comp_session_t handle. + */ +uint64_t odp_comp_session_to_u64(odp_comp_session_t hdl); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#include <odp/visibility_end.h> +#endif +
-----------------------------------------------------------------------
Summary of changes: .travis.yml | 35 ++-- DEPENDENCIES | 3 +- m4/odp_dpdk.m4 | 4 + platform/linux-generic/pktio/dpdk.c | 283 +++++++++++++++++++---------- platform/linux-generic/pktio/netmap.c | 2 +- platform/linux-generic/pktio/socket_mmap.c | 5 +- 6 files changed, 215 insertions(+), 117 deletions(-)
hooks/post-receive